funnyecho
funnyecho
最近Node.js 正式发布V7.0.0,在harmony 模式下支持async、wait 特性,异步操作真正实现同步写法,Koa v2.x 已预先支持async、wait 特性。 在跟上步伐之前,认真阅读了一下Koa v1.x 和Co 的源码,看完虽不能说获益匪浅,但真的够回味好久,个中思路叹为观止。所以,很有必要把精彩的地方纪录下来。 ## 概述 Koa 是node.js 平台上的一个服务端框架,与express.js 类似,但是实现思路不一样,个人感觉,区别在于中间件的运行逻辑、异步逻辑写法、错误处理上。 官网:[http://koajs.com/](http://koajs.com/) Github: [https://github.com/koajs/koa](https://github.com/koajs/koa) ## Koa 中间件 中间件,意思是每次访问都可能运行的逻辑,整个访问过程的处理由一个个中间件组成。Koa 中间件是一个Generator 函数,并通过app.use() 注册到应用的中间件队列中。 写法如下: ```javascript app.use(function*...
# Javascript 与字符编码 ## 1. 几个概念 - Character:字符,这里可以理解成用户实际看到的实体,比如:“A”、“好”等等; - Code Point:码点/码位,对应Unicode 字符集中每个Character 的数字编号,比如“好”的码点是:U+597D; - Code Unit:编码方案对码点进行编码后的结果,比如“好”的UTF-16 编码结果为:Ox597D,UTF-8 编码结果为:E5A5BD; - Normalization:字符标识标准化,有时候,一个字符看起来是多个字符的组成,比如“ö”,可以看成一个字符,也可以看成由字符“ o ”和“ ¨ ”组合而成,而在Unicode 通过对每个字符对应一个码点而达到标准化字符标识的目的; - BMP:Basic Multilingual Plane,基本平面,Unicode Code...
字符编码对每个程序员来说,都应该是必须了解的,因为字符编码、解码时出现问题,可能引起一些非预期的行为,比如乱码、代码执行错误等等。通过网上搜索了一些参考资料、博客,大致整理了一些关于字符编码的知识,希望对自己和有缘看到此文的朋友们有所帮助。 在正式读下文前,先对下文使用的几个术语的含义有个简单理解: - **字符集**:简单理解就是字符的集合,准确来说,指的是**已编号的字符的有序集合(不一定是连续)**; - **字符码**:又称码位,字符集中每个字符的数字编号; - **编码**:将字符转换成字节流的过程; - **解码**:将字节流解析为字符的过程; - **字符编码**:将字符集中的字符码映射为字节流的一种具体实现方案; ## ASCII 编码 计算机中最基本的描述状态的概念是位,取值只能是0和1,然后通过不同的位的组合来达到存储数据,表达数据的作用,其中,“位”又有一个称呼叫做“比特”。而在存储和处理数据时,普遍使用8个比特作为最小的存储和处理单元,而这8个比特组成的单元称为字节。 ASCII 字符集是由美国国家标准协会ANSI 指定的标准,旨在规定常用字符的集合以及每个字符对应的编码,并以此希望统一字符-字节的对应关系,避免同一段字节在不同计算机显示出来的字符不一致的问题。 ASCII 字符集使用一个字节来包含95个可打印字符(0x20-0x7E)和33个控制字符(0x00-0x19、0x7F),总共128 个字符,而这128个字符(2的7次方,对应的编码十六进制区段是:0x00-0x7F)占用了一个字节的后7位。也正因为这个原因,**ASCII 规定最前面的1位统一定为0**,只允许使用最后的7位来对应字符。 ## OEM 字符集 由于ASCII 编码中包含的128 个字符不能满足所有人群的需要,比如,这128 个字符就不包含任一汉字,于是人们就打起了ASCII...