2021.07.28 Buffer 内存区域【拿来吧你 node】

什么是buffer?

  • buffer 是内存区域。它表示在v8 JavaScript引擎外部分配的固定大小的内存块(无法调整大小)。可以将 buffer 视为整数数组,每个整数代表一个数据字节。它由 nodejs 的 buffer 类实现。
  • buffer用以帮助开发者处理二进制数据。
  • buffer与流紧密相连。 当流处理器接收数据的速度快于其消化的速度,则将数据放入buffer中。

一个简单的场景是:当观看 YouTube 视频时,红线超过了观看点:即下载数据的速度比查看数据的速度快,且浏览器会对数据进行缓冲。

如何创建buffer? from()、alloc() 、allocUnsafe()

const buf = Buffer.from('Hey') // (传入内容)
// 也可以只初始化 buffer(传入大小)。 以下会创建一个 1KB 的 buffer:
const buf = Buffer.alloc(1024)
//或
const buf = Buffer.allocUnsafe(1024) // 快,但是分配的内存片段可能包含可能敏感的旧数据。如果内存中存在较旧的数据,则可以被访问或泄漏。

如何使用buffer?

 // 访问buffer 的内容,向数组一样。
console.log(buf[0]) // 打印72。这些数字是 Unicode 码,用于标识 buffer 位置中的字符(H => 72、e => 101、y => 121)。

// 可以使用 toString() 方法打印 buffer 的全部内容
console.log(buf.toString())

// 获取 buffer 的长度
// console.log(buf.length)

// 迭代 buffer 的内容
for (const item of buf) {
  console.log(item) //72 101 121 33
}

// 更改 buffer 的内容
buf.write('Hey!')

// 复制 buffer
buf.copy(bufcopy)

// 切片 buffer (如果要创建 buffer 的局部视图,则可以创建切片。 切片不是副本:原始 buffer 仍然是真正的来源。 如果那改变了,则切片也会改变。)
const slice = buf.slice(0, 2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值