Node.js之Buffer

Buffer

Buffer类是作为Node API的一部分引入的,用于在TCP流、文件系统操作及其他上下文中与八位字节流进行交互。
一个更好的操作二进制数据的类。
暂时存放输入输出数据的一段内存。

  • Buffer的大小在创建的时候确定,且无法更改;
  • Buffer类在全局作用域中,所以无需引用require(‘buffer’);
  • 分配的内存不在V8内存中,而是在node的C++层实现的;
  • 采用slab分配机制,slab是动态内存管理机制,分为full(完全分配状态)、partial(部分分配状态)、empty(未分配状态);

创建Buffer:

  • Buffer.alloc(size,string, encoding)
    必填:size
    非必填:string、encoding
    创建的buffer是被初始化的,Buffer的每一项都用00填充
  • Buffer.allocUnsafe(size,string, encoding)
    创建的Buffer并没有经过初始化,在内存中只要有闲置的buffer就使用。创建Buffer使得内存分配非常快,但已分配的内存段可能包含敏感的数据,有明显性能优势却不安全。

根据内容直接创建buffer:

  • Buffer.from(buffer)

  • Buffer.from(array)

  • Buffer.from(string, encoding)
    必填:string
    非必填:encoding

  • Buffer.from(buffer)
    参数为buffer的时候,会创建一个新的buffer并复制上面的每一个成员;
    Buffer为引用类型,一个Buffer复制另一个buffer的成员,当其中一个Buffer复制的成员更改,另一个Buffer对应成员跟着改变。

操作Buffer:

// 检查下buffer的结构
buf.toJSON()

buf.toJSON()

// buffer里存的是16进制数字,按照字节长度计算
buf.length

// 写入数据到buffer
buf.write()

// 解码buffer
buf.toString()

// buffer拼接
buf.concat(list[, totalLength])

// 判断对象是否为 Buffer
Buffer.isBuffer

// 判断 Buffer 对象编码
Buffer.isEncoding

// 和数组的 indexOf 类似,返回某字符串、acsii 码或者 buf 在改 buf 中的位置
buf.indexOf

// 将一个 buf 的(部分)内容复制到另外一个 buf 中
buf.copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值