js buffer对象,
本文向您介绍node.js中的Buffer对象,并查看Buffer对象的使用场景和优点。
node.js速度课程简介:进入学习
缓冲对象,是Node的核心模块,在面试中会经常被问到一个测试问题。如果不深入发掘,可能只会像我这样用。一旦面试官展开,问了一些问题,可能就不会了。反正当时我只能回答目前涉及的业务使用的缓冲模块比较少,但是对于一些字符串传输无法满足的业务功能和性能,缓冲对象是可以有效优化的。[推荐研究:《nodejs 教程》]
所以,今天学习一下缓冲对象。
Buffer对象
Buffer对象用于表示固定长度的字节序列。
//创建一个长度为10且零填充的缓冲区。
const buf 1=buffer . alloc(10);
//创建一个长度为10的缓冲区,
//它们都用值为‘1’的字节填充。
const buf2=Buffer.alloc(10,1);
var str=你好,王梓安;
var buf=new Buffer.from(str, utf-8 );
console . log(buf);
//Output:buffer 68 65 6c6f 20 4a 61 73 656 e观察输出结果。缓冲区对象类似于数组。
Buffer对象中的每个元素都是十六进制的两位数(即0到255之间的值)。
如果分配给Buffer的一个元素的值小于0,它将被逐个加256,直到获得范围从0到255的值;如果大于255,则逐个减去256,直到得到0到255范围内的值;如果是小数,直接四舍五入。
使用场景
可用于处理大量二进制数据处理图片、文件接收上传、网络协议等。优势
网络传输中,性能提升
网络传输大部分会使用through-string,不可避免的需要转换成Buffer以二进制方式传输数据。如果我们直接提前转换到Buffer再传输,传输过程中就不需要做额外的转换,也避免了损失,提高了性能。
下面的性能测试由ab进行,发起200个并发客户端请求的结果。QPS没有得到很大的改善,但还是有一点进步。您可以复制代码并执行它。结果和我的一样吗?
var http=require( http );
var str=“”;
for(var I=0;i 1024 * 10i ) {
str= a
}
str=new Buffer.from(str, utf-8 );
http.createServer(function (req,res) {
RES . write head(200);
RES . end(bufstr);
}).听(8002);Buffer与Stream
流也是Node的核心模块。数据如流水。流是输入输出设备的抽象,是一组有起点和终点的有序字节数据传输手段。
Node.js中有四种基本的流类型:
可写-可以写入数据的流(例如fs.createwritestream())可读-可以读取数据的流(例如fs.createReadStream())。双工-可读和可写的流(例如,net。插座)。转换-双工流场景,其中数据可以在读写过程中修改或转换:
文件上传和分片下载,比如边看边下载电影,就是一个实现过程。
有关编程的更多信息,请访问:编程入门!即node.js中的Buffer对象是什么?关于什么是使用场景的更多细节,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。