本篇文章给大家介绍一下nodejs 教程》】
所以,今天学习一下Buffer对象。
Buffer对象
Buffer对象用于表示固定长度的字节序列
// 创建一个长度为 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提升的不是很高,但还是有一点点的提升,可以复制代码执行下,是否结果和我一样
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
流
场景:
文件分片上传下载,比如下载电影时可以边下载边看,这样一个实现过程。
更多编程相关知识,请访问:编程入门!!
以上就是node.js中什么是Buffer对象?使用场景是什么的详细内容,更多请关注亿码酷站其它相关文章!
node.js中什么是Buffer对象?使用场景是什么
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除
转载请注明来源:node.js中什么是Buffer对象?使用场景是什么
本文永久链接地址:https://www.ymkuzhan.com/36649.html
本文永久链接地址:https://www.ymkuzhan.com/36649.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!