Appearance
Buffer
在 Node 开发中随处可见 Buffer 的使用,所以对 Buffer 的理解是很有必要的,对你更深刻的了解 Node 很有帮助。
在不了解 Buffer的情况下,也不影响你使用node.js
基本概念
在前端使用 JS 时不需要操作二进制数据,但在后端有对大文件打开、写入等操作,需要处理二进制数据流。
Buffer 是用于存放二进制数据的缓存区(内存)。比如我们读取大文件时,一次载入内存会占用大量内存,这种情况可以使用 Buffer 将数据一块一块加入到 Bueffer 内存中,然后再以流的形式一段一段传递,这样减少内存占用,加快数据读取处理。
你也可以把 Buffer 理解为你在看在线视频时的缓冲区数据。
现实生活中类似,京东在各地建立的仓储点,这个仓储点就是 Buffer。有了这个仓储点就不需要从商家源头运货了,京东不断的保证仓储点有货,就可以保证最快的把货送到客户手里。
操作体验
下面通过自定义 Buffer,来更好的理解 Buffer
- Buffer 是全局类不需要引用其他模块
- Buffer 是内存数据和大家了解的数组一样,只不过储存的是二进制
下面通过自己创建 Buffer来理解
const buffer = Buffer.from('banmashou')
//结果为二进制数据,每个为一个字节
console.log(buffer)
//返回 的 JSON 表示形式,值为unicode编码
console.log(buffer.toJSON())
//转换为字符串
console.log(buffer.toString())
//可以像数组一样,修改 Buffer 数据
buffer[0] = 72
console.log(buffer.toString('utf-8'))
下面定义Buffer 储存大小,超过大小的数据将被忽略
//定义 Buffer 空间为4个字节
const buffer = Buffer.alloc(4)
buffer.write('banmashou')
// 只能保存 banm 4个字节数据
console.log(buffer.toString())