node内置模块——Buffer模块(缓冲区)
文章目录
- 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模块(缓冲区)相关推荐
- Node 简介、模块、模板引擎、NPM、文件操作、缓冲区、文件流、网络操作、Express框架
一.Node简介 1.1 客户端的JavaScript是怎样的 问题 答 什么是 JavaScript 脚本语言 运行在浏览器中 一般用来做客户端页面的交互(Interactive) JavaScri ...
- 7.node.js的Buffer(缓冲区)的合并(concat)、比较(compare)、拷贝(copy)和裁剪(slice)以及如何转化为JSON对象
文章目录 node.js的Buffer(缓冲区)之二 如何将Buffer转化为JSON对象 Buffer的合并(concat)和比较(compare) Buffer的拷贝(copy)和裁剪(slice ...
- Node.js Buffer(缓冲区)
一.Node.js Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了 ...
- Node.js Buffer
目录 I/O 操作中传输数据的格式 文件 I/O 中数据格式 网络 I/O 中的数据格式 JavaScript与二进制数据 Node.js 的 Buffer类 Buffer是啥 Buffer对象的内存 ...
- 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 ...
- 第二章. node中的模块和require
2019独角兽企业重金招聘Python工程师标准>>> 一 什么是模块. JavaScript诞生初,它只不过是一个网页的小脚本而已,没有人会想到它会发展到现在能有大量的库,工具,组 ...
- Node.js Net 模块
Node.js 工具模块 Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块: var net = require(&qu ...
- Node.js:模块查找,引用及缓存机制
1. Node.js的模块载入方式与机制 Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的 ...
- 38..Node.js工具模块---底层的网络通信--Net模块
转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/ ...
最新文章
- 普华永道重磅报告:决定未来的八大核心科技
- “编码 5 分钟,命名 2 小时”,这道题究竟怎么解? | 问题征集
- python提高办公效率-提升Python程序运行效率的6个方法
- 战龙四驱java_《战龙四驱》中都有哪些经典角色
- Gridcontrol新增行选中有关问题
- c语言输出各种图形主函数咋写,C语言图形函数介绍篇
- 内核线程和用户线程(SMP)
- DeePMD-kit的conda安装方法以及速度慢的解决方案
- answer的汉语_大概是几乎能满足你们所有要求的两所学校(汉语言文字学、语言学及应用语言学择校攻略)...
- cmake安装配置及入门指南
- 语音识别技术的研究难点以及未来发展方向
- Nginx+Tomcat代理环境下JS无法完全加载问题
- python numpy官网_如果通过官网下载Python-Numpy的文档
- 矩阵的Cholesky分解的Matlab简洁实现
- gm21模型python_GM11灰色模型
- 案例|双循环下的国货自信:波司登抵御寒冬的新战袍
- 本地设置测试域名转向
- 十分钟接入WO+能力共享平台
- 技巧:XP桌面图标阴影的去除
- ThinkPHP 的 Vender的简单实用