NodeJS之Buffer缓冲器

一、简介

Buffer 是一个类似于数组的对象 ,用于表示固定长度的字节序列,而其本质是一段内存空间,可以理解为二进制代码的存储单元。缓冲区可以在二进制数据传输之前或之后临时存储它,在发送方和接收方之间平滑地发送和接收数据。

二、特点及应用

  1. 数据固定:大小固定且无法调整,每个元素的大小为 1 字节(byte)。
  2. 数据转换:Buffer可以轻松地将不同编码的数据相互转换,例如将字串转换为二进制数据或将二进制数据转换为字串。
  3. 二进制数据储存:你可以使用Buffer来存储二进制数据,如文件内容、网络数据、图像、音频等。
  4. 性能优势:与字串相比,Buffer在处理大量数据时通常具有更高的性能,因为它不需要解析字符编码。
  5. 文件操作:Node.js的文件系统模块(fs)通常使用Buffer来读取和写入文件内容,这是文件I/O操作的常见方式
  6. 加密和解密:许多加密算法(如AES、RSA等)操作的输入和输出数据通常是Buffer类型。

三、如何使用Buffer?

在NodeJS中提供了三种创建Buffer的函数,分別是Buffer.alloc()Buffer.allocUnsafe()Buffer.from()

  1. Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0。
js 复制代码
let buf = Buffer.alloc(10);
console.log(buf);
// 结果为 <Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据。Buffer.allocUnsafe 速度执行会比 Buffer.alloc 快,主要是因为使用allocUnsafe 容易包含旧数据或是随机的内容,所以在使用时要确保泄漏敏感数据而导致不可预测的问题。
js 复制代码
const size = 10; 
const buffer = Buffer.allocUnsafe(size);  
console.log(buffer); 
  1. Buffer.from():它允许你从不同的数据源创建 Buffer 对象。 Buffer.from() 方法通常用于将其他数据类型(如字串、阵列或 ArrayBuffer)转换为 Buffer,即可以处理不同数据类型之间的转换。
js 复制代码
//通过字符串创建 Buffer

let buf_3 = Buffer.from('hello');

//通过数组创建 Buffer

let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
  1. 写入和输出Buffer:关于Buffer缓冲区需要注意的一件重要事情是它们是可变的,这意味着您可以修改存储在缓冲区中的数据。例如,你可以使用write()方法修改缓冲区的一部分:
js 复制代码
const buffer = Buffer.from('hello world');
buffer.write('buffer', 2);
console.log(buffer.toString()); // 'hebuffer world'
相关推荐
无尽的沉默7 分钟前
Thymeleaf 表达式
java·开发语言·前端
无尽的沉默8 分钟前
Spring Boot 整合 Thymeleaf 模板引擎
java·前端·spring boot
We་ct15 分钟前
从输入URL到页面显示的完整技术流程
前端·edge·edge浏览器
先做个垃圾出来………31 分钟前
DeepDiff差异语义化特性
服务器·前端
蓝帆傲亦1 小时前
前端常用可视化图表组件大全
前端
CappuccinoRose2 小时前
HTML语法学习文档(九)
前端·学习·架构·html5
NEXT062 小时前
BFC布局
前端·css·面试
菜鸟小芯2 小时前
【GLM-5 陪练式前端新手入门】第四篇:卡片布局 —— 让个人主页内容更有层次
前端·人工智能
Hello.Reader2 小时前
Leptos + Tauri 2 前端配置Trunk + SSG + 移动端热重载一次打通(Leptos 0.6 口径)
前端
岱宗夫up2 小时前
【前端基础】HTML + CSS + JavaScript 进阶(一)
开发语言·前端·javascript·css·html