node.js中什么是Buffer对象?使用场景是什么


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家介绍一下node.js中的Buffer对象,看看Buffer对象的使用场景是什么,有哪些优势。

Buffer对象,是Node的核心模块,在面试中也是会频繁被问到一个考题,如果没有对其深入探究,可能就跟我一样只会用,一旦面试官扩展问些问题可能就不会了。反正,当时我也只能回答说:目前涉及到的业务对Buffer模块用的比较少,但是Buffer对象可以对于一些字符串传输无法满足业务功能和性能上得到有效的优化。【推荐学习:《nodejs 教程》】

所以,今天学习一下Buffer对象。

Buffer对象

Buffer对象用于表示固定长度的字节序列

1

2

3

4

5

6

7

8

9

10

11

12

// 创建一个长度为 10、以零填充的 Buffer。

const buf1 = Buffer.alloc(10);

 

// 创建一个长度为 10 的 Buffer,

// 其中全部填充了值为 `1` 的字节。

const buf2 = Buffer.alloc(10, 1);

 

var str="hello Jasen";

var buf = new Buffer.from(str,'utf-8');

console.log(buf);

 

//输出:<Buffer 68 65 6c 6c 6f 20 4a 61 73 65 6e>

观察输出的结果,Buffer对象类似一个数组。

Buffer对象中的每个元素都是16进制的两位数(即0到255的数值)

对Buffer某个元素赋值如果小于0的,会逐次加256,直到得到一个0到255范围的值,如果大于255则逐次减256,直到得到0-255范围得值,如果是小数的话,则直接取整。

使用场景

  • 可用于处理大量二进制数据
  • 处理图片、文件接收上传、网络协议等等

优势

网络传输中,性能提升

大部分网络传输的时候会使用通过使用字符串,这难免需要转换成Buffer,以二进制方式进行数据传输。如果我们直接预先转换为Buffer 再进行传输,那么在传输过程中无需做额外的转换,也避免了损耗,使性能得到提升。

以下通过ab进行一次性能测试,发起200个并发客户端请求的结果,QPS提升的不是很高,但还是有一点点的提升,可以复制代码执行下,是否结果和我一样

1.png

2.png

1

2

3

4

5

6

7

8

9

10

11

12

13

var http = require('http');

var str = "";

 

for (var i = 0; i < 1024 * 10; i++) {

    str += "a";

}

 

str = new Buffer.from(str,'utf-8');

 

http.createServer(function (req, res) {

    res.writeHead(200);

    res.end(bufstr);

}).listen(8002);

Buffer与Stream

Stream 也是Node的核心模块,数据就像流水一样,流是对输入输出设备的抽象,是一组有序的、有起点和终点的字节数据传输手段。

Node.js 中有四种基本的流类型:

  • Writable - 可写入数据的流(例如 fs.createWriteStream())
  • Readable - 可读取数据的流(例如 fs.createReadStream())。
  • Duplex - 可读又可写的流(例如 net.Socket)。
  • Transform - 在读写过程中可以修改或转换数据的 Duplex

场景:

文件分片上传下载,比如下载电影时可以边下载边看,这样一个实现过程。

原文地址:https://juejin.cn/post/6955490895131066382

更多编程相关知识,请访问:编程入门!!

以上就是node.js中什么是Buffer对象?使用场景是什么的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

详解node.js异步迭代器及其使用方法

避免node.js模块日志污染程序日志的方法介绍

node.js进行调试的几种方法介绍

分享几种实用的node.js调试方法,快来收藏吧!!

http协议发展过程一览

cors跨域资源共享详细介绍(附代码)

node.js是什么?优势是什么?

一文搞懂node.js中的事件循环

详解node.js中的quic协议

vue刷新404的问题解决方法

更多相关阅读请进入《node.js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...