Buffer初识

  Buffer类用于在TCP流、文件操作系统、以及其他上下文中与八位字节流进行交互。
Node.js可以用来处理二进制流数据或者与之进行交互。

Buffer用于读取或操作二进制数据流。用于操作网络协议,数据库,图片和文件I/O等一些需要大量二进制数据的场景。

什么是Stream(流)?
  大量的二进制文件0101需要切分为多个块,这时就需要流。
举个栗子:
  我们现在有一大罐水需要浇一片菜地,如果我们将水一下全倒入菜地,首先需要多麽大的力气(这里力气好比计算机硬件性能)才能搬得动。如果我们拿来水管将水一点一点流入菜地,事情会变得简单。

Buffer(缓冲区) 就是专门划出来的区用来给CPU缓冲。
举个栗子:
通常公共汽车每隔十几分钟一趟,在这个时间到达之前就算乘客已经满了,车辆也不会提前发车,早到的乘客就需要先在车站进行等待。假设到达的乘客过多,后到的一部分则需要在公共汽车站等待下一辆车。

创建Buffer
在6.0.0之前的Node版本中使用new Buffer 但这种方法有弊端。

const b1 = Buffer.from('10');
console.log(b1)
console.log(b1.toString())

// 初始化缓冲区,创建一个大小为10个字节的缓冲区
// 保证新创建的缓冲区数据是不会包含旧的数据
let b2 = Buffer.alloc(10)
console.log(b2)

//不会重置数据,不安全,需要谨慎使用
let b3 = Buffer.allocUnsafe(10)
console.log(b3)

b3[0] = '1'
console.log(b3)
console.log(b3[0].toString())

缓冲区比普通的数组效率高很多,底层是用C重写的。不写人工智能或者对数据大量操作,很少对缓冲区进行操作。

猜你喜欢

转载自blog.csdn.net/sinat_33940108/article/details/112872518