IK分词原理

IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件。从3.0版本开始,IK发展为面向java的公用分词组件,独立Lucene项目,同时提供了对Lucene的默认优化实现。 以下这篇博客是我在通读IK分词代码后对IK分词的理解,如果有什么地方出现纰漏请大家指正。 回到最初 如果让我自己在看IK分词之前自己写一个分词器,那我会怎么做? 如果我会想到的是:比如对"周末有欧冠决赛"做分词处理,人为的分词是:“周末|有|欧冠|决赛”,那为什么会出现这样的分词效果,首先必须有一个词典,词典中可以标记出“ »

深入了解 Promise

Promise 进阶核心 下面部分摘录We have a problem with promises 每一个 promise 都会提供给你一个 then() 函数 (或是 catch(),实际上只是 then(null, ...) 的语法糖)。当我们在 then() 函数内部时 somePromise().then(function () { // I'm »

MyISAM与InnoDB的索引结构

Mysql索引结构 Mysql非常普遍的使用在互联网公司的大大小小的业务上,而这些业务的许多性能问题都数据的查询。如果进行高质量的SQL查询,如何有效的创建索引,随用索引成为了很多复杂业务的重点关键问题。由于索引是在存储引擎层面实现的,而不是服务器层,所以索引并非标准化的,每种存储引擎的索引的工作方式都略有不同。本文将主要围绕我们最常用的MyISAM和InnoDB进行索引的介绍。 1 存储引擎: 1.1 MyISAM: MyISAM的布局其实非常简单,它是按照插入顺序在磁盘是存储数据。如下: 因为每一行的大小固定,索引MyISAM可以很容易从标的开始位置找到某一行的位置。其Primary Key 的结构大致如下: 而如果在其它的列上创建索引,其索引的形式与Primary »

Dockerfile 最佳实践

实践建议 添加 .dockerignore ,像添加 .gitignore 一样,屏蔽一些我们不用的文件 避免安装必须的包 每个容器都只开启一个进程,使用 link 来和其他容器交互 最小化容器的layers 使用 \ 将参数分为多行 使用 build cache 命令最佳实践 FROM 建议使用 docker 官方镜像,基础镜像推荐Debian,这个镜像体积仅有100mb RUN »

基于 shipit 的Node.js 应用部署方案

本文主要介绍如何基于shipit的自动化部署方案,可以支持测试环境、灰度上线、回滚等功能。 shipit介绍 shipit 是一个为 Node 应用部署开发的一个工具,主要有以下特色 全部使用 Javascript 开发 基于 orchestrator(gulp 核心组件) 开发的任务流程管理 官方提供核心部署流程支持 交互式 SSH 命令 非常容易扩展 安装以及基本用法,请看官方仓库 部署方案 »

我们的前端技术2015--编码规范

1:编码规范 1.1 javascript 编码规范 编码规范的选择是件非常容易的事情,网上有非常多得选择,我们使用的是 airbnb 团队在 GitHub 维护的airbnb/javascript。 选择这个规范主要因为 它是目前 GitHub 上最有热度的规范,有恐怖的24000+个 star 支持 ES6 版本(我们现在的项目全面使用 ES6进行开发) »

co 进阶用法

1: co中数组的使用 map 传入的函数,也可以是个 generator。下面的代码解释如何处理 代码:array-co /** * co array */ var co = require('co'); var fs = require('mz/fs'); var paths = ['node_modules/co/', »

谈谈 CSS Modules

最近几天由于这篇文章,让大家对 CSS Modules 有了很高的热情。我们团队已经使用 CSS Modules几个月了,所以在这里谈谈我们的经验。 我们的项目是使用React.js 开发,所以我们在开始开发的时候,为了能让我们的组件能够在多个项目中复用,我们开始调研单文件组件的写法,这期间看了React: CSS in JS,radium等内容,最终选择的方案是使用 radium 来写 css。 CSS in »

学习 redux.js 的 流水账

具体 redux 的使用请访问redux 本文主要是一个学习使用与源码的流水账,有点乱,多见谅。 有问题欢迎找我讨论,一起学习~ redux redux 是一个 Flux 架构的实现,react-europe 上的演讲可以看到很酷的功能(视频需翻墙) react 项目所有的代码都是可以 hot-reload,并且不丢失 state,这对于开发复杂的单页应用非常有帮助,基于大量 es6+ 特性开发,看源码也算是学习es6+ »

搞定immutable.js

什么是Immutable Data Immutable Data是指一旦被创造后,就不可以被改变的数据。 通过使用Immutable Data,可以让我们更容易的去处理缓存、回退、数据变化检测等问题,简化我们的开发。 js中的Immutable Data 在javascript中我们可以通过deep clone来模拟Immutable Data,就是每次对数据进行操作,新对数据进行deep clone出一个新数据。 deep clone /** * learning-immutable - clone-deep.js * Created »