前端基础之《NodeJS(4)—Buffer缓冲区》

一、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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值