文章目录

  • Buffer(缓冲区)
  • 创建Buffer
    • 利用字符串创建buffer:Buffer.from
    • 使用Buffer方法创建buffer:Buffer.alloc()
    • Buffer.allocUnsafe (size)
  • Buffer元素的操作
  • Buffer的特点
  • buffer作用
  • 以字符串形式输出buffer中的数据

Buffer(缓冲区)

  • Buffer的结构和数组很像,操作的方法也和数组类似
  • 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
  • 使用buffer不需要引入模块,直接使用即可
  • 在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示(二进制显示的太长了,不方便显示)
    buffer中每一个元素的范围是从00 - ff (即:0-255) (即:00000000-11111111)
    buffer中的一个元素占用一个字节(8bit)。
    buffer.length输出的是占用内存的大小。

创建Buffer

利用字符串创建buffer:Buffer.from

eg:

var str = "Hello world"
// 将一个字符串保存到buffer中,并返回
var buf = Buffer.from(str)
console.log(buf)

输出:

<Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64>

使用Buffer方法创建buffer:Buffer.alloc()

eg:创建10个字节大小的buffer

var buf = new Buffer(10)
console.log(buf.length)

输出:10

我们一般使用Buffer.alloc()创建Buffer

var buf = Buffer.alloc(10)

Buffer.allocUnsafe (size)

Buffer.allocUnsafe (size)创建一个指定大小的buffer,但是buffer中可能含有敏感数据。
就是说在分配内存之前是不会清空数据的,如果这些数据恰好保存了用户的一些敏感数据就造成了数据泄露。
而alloc方法会将内存的数据进行清空之后再分配就会安全很多,但是缺点是性能没有allocUnsafe高。

Buffer元素的操作

我们一般直接通过索引操作buffer元素

var buf = Buffer.alloc(10)
buf[0] = 88
buf[1] = 255
buf[2] = 0xaaconsole.log(buf)

输出:

<Buffer 58 ff aa 00 00 00 00 00 00 00>

Buffer的特点

  • Buffer的大小一旦确定,则不能修改
    原因:Buffer实际上是对底层内存的直接操作
    即创建buffer的时候实际上是为buffer分配内存连续的空间,如果在运行的时候再添加空间就不一定是连续空间了,这样buffer就不好维护了。

  • 只要数字在控制台或页面中输出一定是10进制
    那么如果想要以16进制输出可以将它转换成16进制的string输出:

var buf = Buffer.alloc(10)
buf[0] = 88
buf[1] = 255
buf[2] = 0xaaconsole.log(buf[2])
console.log(buf[2].toString(16))

输出:

170
aa
  • 可以循环遍历buffer

buffer作用

浏览器发送的请求是以二进制的形式存储在buffer中的,同时服务器的响应数据也会暂时存储在buffer中。

以字符串形式输出buffer中的数据

buf.tostring()将缓冲区中的数据转换为字符串

node内置模块——Buffer模块(缓冲区)相关推荐

  1. Node 简介、模块、模板引擎、NPM、文件操作、缓冲区、文件流、网络操作、Express框架

    一.Node简介 1.1 客户端的JavaScript是怎样的 问题 答 什么是 JavaScript 脚本语言 运行在浏览器中 一般用来做客户端页面的交互(Interactive) JavaScri ...

  2. 7.node.js的Buffer(缓冲区)的合并(concat)、比较(compare)、拷贝(copy)和裁剪(slice)以及如何转化为JSON对象

    文章目录 node.js的Buffer(缓冲区)之二 如何将Buffer转化为JSON对象 Buffer的合并(concat)和比较(compare) Buffer的拷贝(copy)和裁剪(slice ...

  3. Node.js Buffer(缓冲区)

    一.Node.js Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了 ...

  4. Node.js Buffer

    目录 I/O 操作中传输数据的格式 文件 I/O 中数据格式 网络 I/O 中的数据格式 JavaScript与二进制数据 Node.js 的 Buffer类 Buffer是啥 Buffer对象的内存 ...

  5. node.js fs模块_Node.js中的fs模块简介

    node.js fs模块 fs, short for File System, is one of the most basic and useful modules in Node. In this ...

  6. 第二章. node中的模块和require

    2019独角兽企业重金招聘Python工程师标准>>> 一 什么是模块. JavaScript诞生初,它只不过是一个网页的小脚本而已,没有人会想到它会发展到现在能有大量的库,工具,组 ...

  7. Node.js Net 模块

    Node.js 工具模块 Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块: var net = require(&qu ...

  8. Node.js:模块查找,引用及缓存机制

    1. Node.js的模块载入方式与机制 Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的 ...

  9. 38..Node.js工具模块---底层的网络通信--Net模块

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/ ...

最新文章

  1. 普华永道重磅报告:决定未来的八大核心科技
  2. “编码 5 分钟,命名 2 小时”,这道题究竟怎么解? | 问题征集
  3. python提高办公效率-提升Python程序运行效率的6个方法
  4. 战龙四驱java_《战龙四驱》中都有哪些经典角色
  5. Gridcontrol新增行选中有关问题
  6. c语言输出各种图形主函数咋写,C语言图形函数介绍篇
  7. 内核线程和用户线程(SMP)
  8. DeePMD-kit的conda安装方法以及速度慢的解决方案
  9. answer的汉语_大概是几乎能满足你们所有要求的两所学校(汉语言文字学、语言学及应用语言学择校攻略)...
  10. cmake安装配置及入门指南
  11. 语音识别技术的研究难点以及未来发展方向
  12. Nginx+Tomcat代理环境下JS无法完全加载问题
  13. python numpy官网_如果通过官网下载Python-Numpy的文档
  14. 矩阵的Cholesky分解的Matlab简洁实现
  15. gm21模型python_GM11灰色模型
  16. 案例|双循环下的国货自信:波司登抵御寒冬的新战袍
  17. 本地设置测试域名转向
  18. 十分钟接入WO+能力共享平台
  19. 技巧:XP桌面图标阴影的去除
  20. ThinkPHP 的 Vender的简单实用

热门文章

  1. 全域旅游景区导览系统v1.0.29 旅游线路 旅游商城 活动报名
  2. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-2D-CNN(四)
  3. strongSwan:ipsec.conf – IPsec 的配置和连接
  4. 中文短文本的实体链指
  5. 十一、【高级篇】无线通信模块(Nrf)
  6. RGB转YUV----RGB色域与YUV色域的介绍
  7. easyPOI导出文件到指定目录
  8. ffmpeg 音频转码
  9. foxmail中无法设置qq邮箱
  10. 深度学习 - 41.Word2vec、EGES 负采样实现 By Keras