首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

一行读nodejs(九)-缓存类(Buffer)

2012-09-24 
一起读nodejs(九)----缓存类(Buffer)本文是对nodejs0.8.9版本的api开发手册解读.nodejs网址缓存类(Buffer)

一起读nodejs(九)----缓存类(Buffer)


    本文是对nodejs0.8.9版本的api开发手册解读.nodejs网址

    

    缓存类(Buffer) 

    stability:3 - Stable

    纯javascript对Unicode支持不叫不错,但是对二进制数据的支持就不怎么样了,当需要处理TCP流或者文件系统时,是必须要处理八进制流(octet streams).Node有几种策略来操作,创建,销毁八进制值流.


    原始数据被储存在buffer类的实例中,一个buffer很想一个integer的数组,但是符合一个在v8堆栈外的原始内存分配.一个buffer是不能被改变大小的.


    buffer类是全局的,尽量不要一有需要就使用require('buffer')加载.


    在buffers和javascript string对象之间转换需要显示的调用一个编码函数.下面是string类型不懂的编码格式:

  • 'ascii' - for 7 bit ASCII data only. This encoding method is very fast, and will strip the high bit if set. Note that this encoding converts a null character ('\0' or '\u0000') into 0x20 (character code of a space). If you want to convert a null character into 0x00, you should use 'utf8'.


  • 'utf8' - Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.多字节编码的Unicode字符.很多web页面和其他文档都使用UTF-8格式.


  • 'utf16le' - 2 or 4 bytes, little endian encoded Unicode characters. Surrogate pairs (U+10000 to U+10FFFF) are supported.2个或者4个字节,小字节编码的Unicode字符.代理对的支持范围是10000~10FFFF.


  • 'ucs2' - Alias of 'utf16le'.utf16le的别名


  • 'base64' - Base64 string encoding.基于64的字符串编码.


  • 'binary' - A way of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated and should be avoided in favor of Buffer objects where possible. This encoding will be removed in future versions of Node.一种仅使用每个字符的前8个字节把原始二进制数据编码成strings.这个方法已经过时,应该避免在使用buffer对象时使用,这种编码将会来未来的node版本中被移除.


  • 'hex' - Encode each byte as two hexadecimal characters.将每一个字节编码称两个16进制字符.


        Class:Buffer    Buffer类是一个直接处理二进制数据的全局类型.它可以通过多重方法被构造.
        new Buffer(size)    size number,一个表示大小的数字.    分配一个新的buffer,size个八位字节(octets).
        new Buffer(array)    array Array,一个数组.    使用一个octets的array数组来分配一个新的buffer.
        new Buffer(str,[encoding])    str String,需要编码的字符串.encoding String,需要使用的编码格式,可选.    分配一个新的buffer,包含给定的str,encoding默认为"utf8".
        buf.write(string,[offset],[length],[encoding])    str String,被写入buffer的数据.offet number,可选,默认0.数据写入到buffer的位置.length Number,可选,默认:buffer.length - offset,要写入数据的长度encoding String,需要使用的编码格式,可选,默认为"utf8".    将string使用指定的encoding写入到buffer的offset处.offset默认是0,encomding默认是'utf8',length是将要写入的字节长度.返回写入了多少个八进制字节.如果Buffer没有足够的空间来适应整个string,那么将只有string的部分被写入.length默认是buffer.length - offset.这个方法不会写入不完整的字符.
    var b = new Buffer(50);b.fill("h");
           buf.INSPECT_MAX_BYTES
    Number, Default: 50,数字,默认50.    当buffer.inspect()被调用时返回的字节数.这个可以被用户模块重写.    注意,这是一个通过require('buffer')获得的buffer模块的一个属性,不是全局的Buffer的一个属性,也不是一个buffer实例的属性.
       Class:SlowBuffer
        这个类主要是内部使用.javascript程序应该使用buffer来代替SlowBuffer.    为了避免在一个服务器中分配小模块内存的c++buffer对象的数量瓶颈.node分配的内存块一个8kb,如果一个buffer小于这个8kb,那么他将会是一个SlowBuffer的子类.如果大于8kb,node将会直接分配一个slowBuffer大小的块返回.
           

热点排行