Node Buffer理解学习

发布时间 2023-08-02 11:25:15作者: 奔跑的哈密瓜

一、理解Buffer 

  数据流(stream)是将数据从一个地方传输到另一个地方的过程。  

  传输数据的目的往往是为了使用(处理)它,当处理的数据比传入的数据慢的时候,这些数据就会需要等待。  

  通俗易懂的说法,就如同我们去车站坐车一样,当第一辆车满了的时候,我们就需要等待第二辆车的到来;或者第一辆车已经到了,但是我们人还没有到达车站,这时候车辆就需要等待车坐满后再发车。这个等待的区域我们可以理解为buffer。

  如果难以理解,可以去看这个大佬的文章,他解释的非常清楚https://juejin.cn/post/6844903688188723208

二、使用

  对于buffer的创建有几种不同的形式。

// 法一---------创建一个10字节的空buffer
Buffer.alloc(缓冲区的大小,要填充缓冲区的值(默认0),用于指定缓冲区的值是字符串时的值(默认为utf8))
const buf_1 = Buffer.alloc(10);
console.log(buf_1);//<Buffer 00 00 00 00 00 00 00 00 00 00>
const buf_1 = Buffer.alloc(10,20);
console.log(buf_1);//<Buffer 14 14 14 14 14 14 14 14 14 14>
// 法二----------创建一个10字节的空buffer
const buf_1 = Buffer.allocUnsafe(10);//此方法和alloc方法类似,但是这个方法在创建buffer的时候并没有将其缓存重置,不太安全
console.log(buf_1);//<Buffer 00 00 00 00 00 00 00 00 00 00>
const buf_1 = Buffer.allocUnsafe(1000000);//当将创建的缓冲区大小放大时,使用这个可以发现创建的buffer并不是空的,而且每次执行值都不一样
console.log(buf_1);
//
法三--------根据数据来创建buffer
const buf_1 = Buffer.from("I Love You");
console.log(buf_1);
//<Buffer 49 20 4c 6f 76 65 20 59 6f 75>