一、Buffer缓冲区
1、从结构上看Buffer非常像一个数组,它的元素为16进制的两位数。操作的方法也和数组类似。
2、实际上一个元素就表示内存中的一个字节。Buffer中每一个元素的范围是从00—FF。
3、实际上Buffer中的内存不是通过JavaScript分配的,而是在底层通过C++申请的。
4、也就是说我们可以直接通过Buffer来创建内存中的空间。
二、为什么要有Buffer缓冲区
1、js原生的数组,性能比较差。
2、服务器开发,数组类型不够用。比如图片、mp3音频等。
3、数组中不能存储二进制文件,而Buffer就是专门用来存储二进制数据。
三、使用Buffer
1、使用Buffer不需要引入模块,直接使用即可。
2、将一个字符串保存到buffer中,并且返回
var str = "hello buffer";
//将一个字符串保存到buffer中
var buffer = Buffer.from(str);
console.log(buffer);
<Buffer 68 65 6c 6c 6f 20 62 75 66 66 65 72>
3、Node中一个汉字占3个字节
var str2 = "hello 学校";
var buffer2 = Buffer.from(str2);
console.log(str2.length); //字符串的长度:8
console.log(buffer2.length); //占用内存的大小:12
4、创建一个指定大小的buffer
var buffer3 = Buffer.alloc(10); //创建一个10个字节的buffer
console.log(buffer3);
buffer3[0] = 88;
buffer3[1] = 255;
buffer3[2] = 0xaa;
console.log(buffer3);
<Buffer 00 00 00 00 00 00 00 00 00 00>
<Buffer 58 ff aa 00 00 00 00 00 00 00>
5、Buffer的大小一旦确定,则不能修改。Buffer实际上是对底层内存的直接操作。
6、Buffer里面的空间是连续的。
7、如果值超过255,则截取后8个字节。
8、Buffer.allocUnsafe(size)
创建一个指定大小的buffer,但是buffer中可能含有敏感数据(内存没初始化)
为什么还要有这个方法?
这个方法性能好,但是我们一般都用alloc()。
四、其他
1、nodejs中文网站
http://nodejs.cn/