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

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

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

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

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

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

使用场景

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

优势

网络传输中,性能提升

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

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

1.png

2.png

var http = require('http');var str = "";for (var i = 0; i 

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对象?使用场景是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2634117.html

(0)
上一篇 2025年3月7日 04:29:00
下一篇 2025年2月27日 00:04:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js项目中如何安装和使用ESLint

    node.js项目中如何安装和使用eslint?本篇文章给大家介绍一下在 node.js 应用程序中使用 eslint的方法。 【推荐学习:《nodejs 教程》】 ESLint 是一个开源 JavaScript linting 实用程序,…

    2025年3月7日 编程技术
    200
  • Node.js中什么是非阻塞I/O?通过示例来理解!

    node.js中什么是非阻塞i/o?本篇文章通过例子带大家了解一下node.js中的是非阻塞i/o,希望对大家有所帮助! 写在最前老早就想学Node.js了,觉得前端一定要是懂服务端知识,并且可以自己独立完成一个小型全栈项目的,但是碍于时间…

    2025年3月7日
    200
  • 浅析Node.js包管理工具 npm 和 yarn 的用法

    本篇文章带大家了解一下node.js包管理工具 npm 和 yarn 的使用方法,带大家快速入门npm 和 yarn。 本文学习 node.js 的包管理工具 npm& yarn 的使用。【推荐学习:《nodejs 教程》】 使用 …

    2025年3月7日
    200
  • 浅谈Node.js中的流,聊聊读取文件的三种方式

    本篇文章带大家简单了解一下node.js中的流,介绍一下读取文件的三种方式:异步读取文件、同步读取文件和流的方式读取文件。 学习 Node.js 的一些基础 1.fs 模块 内置模块 npm i    第三方模块 登录后复制 自己写的 自定…

    2025年3月7日
    200
  • 浅谈Node.js中的path模块和常用方法

    本篇文章带大家了解一下node.js中的 path 模块,介绍一下 path 模块的用法,以及常用的 path 方法。 Node.js path 模块是一个内置模块,可帮助您以独立于操作系统的方式使用文件系统路径。如果要构建支持 OSX、L…

    2025年3月7日
    200
  • Node.js中如何利用node-cron来调度任务?

    没有一个开发人员愿意把所有时间都花在繁琐的任务上,比如系统维护和管理、日常数据库备份以及定期下载文件和电子邮件。你更愿意专注于富有成效的工作,而不是跟踪这些烦人的琐事何时需要完成。【推荐学习:《nodejs 教程》】 这时就需要使用到任务调…

    2025年3月7日
    200
  • 深入了解Node.js中的4种 stream

    本篇文章带大家了解一下node.js中的4种 stream,看看怎么解决爆缓冲区的“背压”问题,有需要的朋友可以去学习了解一下~ 把一个东西从 A 搬到 B 该怎么搬呢? 抬起来,移动到目的地,放下不就行了么。 那如果这个东西有一吨重呢? …

    2025年3月7日 编程技术
    200
  • 聊聊Node.js Buffer中的encoding(编码)

    本篇文章带大家了解一下node.js buffer中的encoding,希望对大家有所帮助! 计算机最小的单位是一个位,也就是 0 和 1,在硬件上通过高低电平来对应。但是只有一位表示的信息太少了,所以又规定了 8 个位为一个字节,之后数字…

    2025年3月7日
    200
  • nodejs是做什么的

    nodejs是能够在服务器端运行JavaScript的开放源代码、跨平台运行环境;Node.js采用Google开发的V8运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。 本文操作环境:win…

    2025年3月7日
    200
  • 浅析Node.js api的 POSIX 标准

    posix 是什么?有哪些内容?下面本篇文章带大家了解一下node.js api的 posix 标准、node.js api的特点,希望对大家有所帮助! 【推荐学习:《nodejs 教程》】 如果你用过 Node.js 的 api,会不会觉…

    2025年3月7日
    200

发表回复

登录后才能评论