什么是bufferBuffer类是一个全局变量。Buffer类的实例类似于整数数组,但Buffer是固定大小的,并且不与V8共享内存。Buffer的大小在创建时就确定了,不能更改。Buffer.formconsole.log(Buffer.from('helloworld'));//<缓冲区68656c6c6f20776f726c64>console.log(Buffer.from([65,66,67,68])));//constarr=newUint8Array(2);arr[0]=65;arr[1]=66;constbuf=Buffer.from(arr.buffer);console.log(buf.toString('utf8'));//ABar[1]=67;console.log(buf.toString('utf8'));//AC使用character/array/array/arrayBuffer创建buffer。如果使用arrayBuffer创建缓冲区,则arrayBuffer和Buffer内存将共享。ArrayBuffer入口Buffer.allocconsole.log(Buffer.alloc(5));console.log(Buffer.alloc(5,'abc').toString());console.log(Buffer.alloc(5,'abcdef').toString('utf8'));console.log(Buffer.alloc(5,'Meetandsayhello','gb2312').toString('utf8'));////abcab//abcde//见:填充内容不足时重复填充。如果填充内容的大小超过可用内存大小,则会被截断;中文是按三个字节计算的,所以上面有乱码;如果没有传入填充内容,则使用空字符填充Buffer,这里的空字符不是指空格字符;Buffer.allocUnsafeconsole.log(Buffer.allocUnsafe(5));console.log(Buffer.allocUnsafe(5));////相当于nodev6。0.0之前newBuffer();以这种方式创建的Buffer的内存未初始化。缓冲区的内容是未知的,可能包含预先存在的数据。不推荐,如果一定要用,需要用Buffer.fill填充,或者直接用Buffer.alloc。Buffer模块预先分配了一个大小为8Kb(Buffer.poolSize)的内部Buffer池,用于快速分配给新的Buffer实例。Buffer.alloc从不使用内部缓冲池。当Bufferpool空间大于一半时,Buffer.allocUnsafe会优先使用预先分配的Bufferpool,并返回一个内存地址,类似于指针的概念。Buffer.allocUnsafeSlowBuffer.allocUnsafeSlow();与Buffer.allocUnsafe不同的是,它不使用预先分配的Buffer池,而是从外部获取一块内存来生成新的Buffer。它可以避免Buffer池创建过多的Buffer。缓冲文件读取consttxtPath=path.join(__dirname,'./test.txt');constcontent=fs.readFileSync(txtPath);//console.log(content.toString('utf8'));//ContentNode中文件的传输、读写操作都是基于Buffer。其他Buffer也有转码、读写等各种操作,具体请参考API。这里就不过多介绍了。使用场景内容等,如剪切文件、读取和传输操作。资源暂存不如js、css等静态文件。。。参考http://nodejs.cn/api/buffer.htmlhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBufferhttp://guojing.me/linux-kernel-architecture/posts/how-slab-work/