Node.js_Buffer 缓冲区
Buffer 缓冲区
虽然 JavaScript 支持未操作,但是并没有 二进制数据 的原生
node 引入了 Buffer 类,用于操作二进制数据
是 V8 引擎的扩展,实际上是对内存的直接分配
每个元素大小是 1 字节
创建了一个 Buffer 后,它的大小就固定了
一旦你把内容复制到一个 Buffer 后,它就会以二进制的形式存储起来。
如果你需要添加更多的数据,就必须把 老的 Buffer 复制到一个更大的 Buffer 中
这是为了性能而牺牲了一些程序员的开发便利
计算机的工作原理是操作“开”和“关”状态。
因为只有这样两种状态,所以我们称此为二元状态直接操作二进制通常是最快的方法。
在网络协议中,通常会指定一些字符来传达信息
比如用固定位置上的比特来表示特殊的含义
在 DNS 请求中,头两个字节表示的数字是事务 ID,下一个字节的每个比特都是独立使用的,
每一位表示了在这个请求中是否使用 DNS 的某个功能
1. 基本使用
- 创建一个 Buffer
- let aBuf = Buffer.alloc(参数);
- 不安全,可能包含旧数据,需要重写所有数据
- let bBuf = Buffer.allocUnsafe(参数);
- 不安全,可能包含旧数据,需要重写所有数据
可以使用 3 种参数
- 指定 Buffer 的字节长度
- 需要拷贝到 Buffer 里的字节数组
- 需要拷贝到 Buffer 里的字符串
- console.log() 打印时,以 16 进制显示
- 一个数据,就是一个字节,就是 8 个位
- 一个字符,就是一个字节,方便数据的显示

- Buffer 保存 3 个字符(比如 RGB 颜色值)
let aColor = new Buffer([255,0,149]); // <Buffer ff 00 95>
- 获取 Buffer 长度
aBuf.length
- 填充 Buffer 内容
var cBuf = Buffer.allocUnsafe(10);
cBuf.fill(0);
- 将 字符串 转换为 Buffer
var bufStr = Buffer.from('Hello Bat-Man');
// <Buffer 48 65 6c 6c 6f 20 42 61 74 2d 4d 61 6e>
一个中文占用 3 个字节
var hanZi = Buffer.from('绿巨人');
// <Buffer e7 bb bf e5 b7 a8 e4 ba ba>
- 将 Buffer 转换为 字符串
var strBuf = bufStr.toString();
// 'haha'
5
5
5
5
5
5
5
5
5
5
55
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
Node.js_Buffer 缓冲区的更多相关文章
- Node.js学习系列1
概述 最近在刷javascript的技能,觉着nodejs是个不错的入口,作为一个.Net平台的前端工程师学习使用js开发服务端,想想都有点小激动哈哈^_^^_^. 入门 之前开发过ionic,所以对 ...
- node入门学习(一)
一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...
- STL源代码剖析 容器 stl_deque.h
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie deque ---------------------------------------- ...
- 《STL源代码剖析》---stl_deque.h阅读笔记(2)
看完,<STL源代码剖析>---stl_deque.h阅读笔记(1)后.再看代码: G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_deque. ...
- babeljs源码
babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...
- Node.js Buffer(缓冲区)
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门 ...
- 8、Node.js Buffer(缓冲区)
内容:Buffer与字符编码,Buffer创建.写入.读取.转换成JSON对象.合并.比较.拷贝.裁剪.长度 Buffer 与字符编码Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 . ...
- 【node.js】Buffer(缓冲区)
Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区. 创建 Buffer 类 Node Buffer 类可以通过多种方式来创建. 1.创建长度为 10 字节的 ...
- Node.js:Buffer(缓冲区)介绍及常用方法
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门 ...
随机推荐
- java代码调用第三方接口
一.利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数) pu ...
- 共通脚本utils
/** * 模块名:共通脚本 * 程序名: 通用工具函数 **/ var utils = {}; /** * 格式化字符串 * 用法: .formatString("{0}-{1}" ...
- Web常见漏洞修复建议
一.SQL注入修复建议 1.过滤危险字符,例如:采用正则表达式匹配union.sleep.and.select.load_file等关键字,如果匹配到则终止运行. 2.使用预编译语句,使用PDO需要注 ...
- git的使用 (一)
1.版本控制 版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方 ...
- JAVA进阶9
间歇性混吃等死,持续性踌躇满志系列-------------第9天 1.使用throw语句抛出异常 在通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自动抛出异常,可以使用throw语句来 ...
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- Existing lock /var/run/yum.pid: another copy is running as pid 解决办法
yum只能支持一个例程运行,所以如果有一个例程已经在运行,其他的必须等待该进程退出释放lock.出现这种情况时,可以用以下命令来恢复: rm -f /var/run/yum.pid
- codeforces 893F - Physical Education Lessons 动态开点线段树合并
https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...
- 七.HTTP协议原理介绍
01. 当用户访问一个网站时,都发生了事情? ①. 利用DNS服务,将输入的域名解析为相应的IP地址 a --本地主机输入域名后,会查询本地缓存信息和本地hosts文件 如果有就进行解析,如果没有 ...
- Django-ORM多表操作(进阶)
一.创建模型 下面我们通过图书管理系统,来设计出每张表之间的对应关系. 通过上图关系,来定义一下我们的模型类. from django.db import models class Book(mode ...