Buffer

news2024/11/26 5:23:21

Buffer

概念

在Node.js中,Buffer是一个非常重要的内置全局对象,Node.js是基于Chrome V8引擎构建的,V8引擎本身不支持处理二进制数据,因此Node.js引入Buffer来弥补这一不足,Buffer中文译为【缓冲区】,是一个类似于Array的对象,用于表示固定长度的字节序列,换句话讲,Buffer就是一段固定长度的内存空间,用于处理二进制数据

特点

  1. Buffer大小固定且无法调整
  2. Buffer性能较好,可以直接对计算机内存进行操作
  3. 每个元素的大小为1字节(byte)

作用

  1. 文件系统操作:读写文件时,文件内容通常以二进制形式存储和传输。
  2. 网络通信:在进行TCP/UDP等网络通信时,数据也是以二进制的形式发送和接收。
  3. 加密解密:加密算法处理的数据通常是二进制格式。
  4. 图片、音频、视频处理:这些多媒体文件的内容是二进制数据。

使用

// 1. alloc
let buf = Buffer.alloc(10); // Buffer是Node的内置模块

// alloc创建的Buffer,每个二进制位都会归零
console.log(buf) // 输出 <Buffer 00 00 00 00 00 00 00 00 00 00>


// 2. allocUnsafe
let buf_2 = Buffer.allocUnsafe(10);

console.log(buf_2) // <Buffer 00 00 00 00 00 00 00 00 00 00>

allocUnsafeallocUnsafe创建的Buffer可能包含旧的内存数据,内存空间其实是可以复用的,所以allocUnsafe的执行速度更快。
以下做一段图示:
A程序执行时,申请了一段内存空间,并且执行完毕,这段内存空间就处于空闲状态。
在这里插入图片描述
B程序在执行时,就可以再次使用这段内存空间。alloc创建Buffer时,会对这段内存中每个二进制位都清零,allocUnsafe并不会对旧数据清零。
在这里插入图片描述

// 3. from
let buf_3 = Buffer.from('hi');
// h 68  i 69就是unicode编码中的数字,转成二进制存在Buffer中
// 68是16进制的表示方式
console.log(buf_3) // <Buffer 68 69>

H在ASCII码表(兼容unicode码表)中是104
在这里插入图片描述
在这里插入图片描述
使用from创建Buffer,还可以传入数组。

// from
let buf_4 = Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
console.log(buf_4) // <Buffer 48 65 6c 6c 6f>
console.log(buf_4.toString('utf8')) // Hello

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1816850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

量产导入 | Tessent Scan 和 ATPG

目标 Upon completion of this module, you should be able to: Use Tessent Scan to insert full scan. Write a scan-inserted netlist file. Write ATPG setup files. lnsert test logic. Create, configure, and balance scan chains. Edit a scan chain order file and …

CentOS停服倒计时不到一个月喊话:“国产操作系统准备好了吗?”安排!

01 CentOS停服倒计时 再过不到20天&#xff0c;CentOS历史将正式终结&#xff01;Redhat公司此前面向全球宣布&#xff0c;将于2024年6月30日停止维护CentOS 7&#xff0c;届时CentOS全系列版本将停止维护&#xff0c;这意味着CentOS时代将彻底终结&#xff0c;而部署在CentOS…

[NCTF 2018]flask真香

打开题目后没有提示框&#xff0c;尝试扫描后也没有什么结果&#xff0c;猜想是ssti。所以尝试寻找ssti的注入点并判断模版。 模版判断方式&#xff1a; 在url地址中输入{7*7} 后发现不能识别执行。 尝试{{7*7}} ,执行成功&#xff0c;继续往下走注入{{7*7}}&#xff0c;如果执…

Linux - 信号阻塞 信号捕捉

Linux - 信号阻塞 & 信号捕捉 信号阻塞信号集操作信号集sigporcmasksigpendingsigaction 信号捕捉用户态与内核态信号捕捉的时机 在博客[Linux - 信号概念 & 信号产生]中&#xff0c;我讲解了信号的基本概念&#xff0c;以及信号是如何产生的&#xff0c;本博客将继续讲…

2024年6月12日 (周三) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站&#xff0c;可以做到无水印的视频和封面下载功能哦&#xff0c;具体玩法大家自行发挥吧。 WPS免登录一键修改器: 去除烦人的登录且能正常使用 杨奇试戴《黑神话&#xff1a;悟空》豪华版金箍 效果还不错&#xff01;最近…

大型语言模型(LLMs)的后门攻击和防御技术

大型语言模型&#xff08;LLMs&#xff09;通过训练在大量文本语料库上&#xff0c;展示了在多种自然语言处理&#xff08;NLP&#xff09;应用中取得最先进性能的能力。与基础语言模型相比&#xff0c;LLMs在少样本学习和零样本学习场景中取得了显著的性能提升&#xff0c;这得…

西门子PLC位逻辑指令学习(SCL语言)

R_TRIG 参数 功能 当CLK信号出现一个低电平到高电平的跳变时&#xff0c;输出Q导通一个周期。 实例 定义以下类型变量 "R_TRIG_DB"(CLK:"data".source,Q>"data".result); //当source输入出现低电平到高电平跳变&#xff0c;result信号…

File、IO流

File、IO流&#xff08;一&#xff09; 存储数据的方案 以上都是内存中的数据容器&#xff08;记住程序正在处理的数据&#xff0c;能快速运算&#xff09;&#xff0c;它们记住的数据&#xff0c;在断电&#xff0c;或者程序终止时会丢失 程序在内存中处理后的数据想长久的保…

Maven增强插件助你开发快人一步

因为之前的工作中一直用的Maven进行jar包管理&#xff0c;每次新加依赖都要去中央仓库上搜索下坐标&#xff0c;这里为了方便以SerchEveryWhere为入口&#xff0c;增加了一个Maven的搜索tab&#xff0c;输入你想要找的包名即可在idea中直接显示最新版对应的坐标以及cve数&#…

镜舟科技与千丁数科开展战略洽谈,探索智慧空间与数据的深度融合

数据作为当下最重要的生产要素之一&#xff0c;数据分析与智慧空间科技的结合正成为推动企业发展的新引擎 。 5 月 15 日&#xff0c;镜舟科技与千丁数科在北京开展战略合作洽谈。本次会议旨在探索双方在智慧空间科技和数据分析领域的合作潜力&#xff0c;共同推进数字经济的新…

LVS+Keepalived NGINX+Keepalived 高可用群集实战部署

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 VRRP协议&#xff08;虚拟路由冗余协议&#xff09; 是针对路由器的一种备份解决方案由多台路由器组成一个热备组&#xff0c;通过共用的…

WEB基础--TOMCAT服务器

服务器概述 什么是服务器 服务器&#xff1a;就是一个提供为人民服务的机器&#xff0c;这里的服务器主要指计算机服务器&#xff0c;分为两种&#xff1a;服务器软件和硬件服务器&#xff1b; 服务器分类 1、硬件服务器&#xff1a;安装了服务器软件的主机。就相当于高配的…

dijkstra 算法为什么高效?

最短路径算法中&#xff0c;dijkstra(i&#xff0c;j&#xff0c;k 颇有遍历意味) 算法时间效能很好&#xff0c;而 floyd&#xff0c;bellman-ford 算法则优在处理负权重。但这是为什么&#xff1f; 从算法过程看&#xff0c;dijkstra 算法确定了某点最短路径后&#xff0c;它…

单目标应用:基于红嘴蓝鹊优化器RBMO的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、红嘴蓝鹊优化器求解微电网 2.1算法简介 红嘴蓝鹊优化器&#xff08;R…

Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】

Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】 1. 实现 ShardingSphereDriverURLProvider 由上一篇博文我们已经知道了 Sharding-JDBC 是基于 Java SPI 机制去加载 并实例化 ShardingSphereDriverURLProvider 的实现类 public interface ShardingSphereDriverURLP…

3个月搞定计算机二级C语言!高效刷题系列进行中

文章目录 前言备考计算机二级C语言为什么考二级C语言&#xff1f;刷题总结后发布系列文章后记免责声明 前言 大家好&#xff0c;我是梁国庆。 计算机二级应该是每一位大学生的必修课&#xff0c;相信很多同学的大学flag中都会有它的身影。 我在大学里也不止一次的想要考计算…

如何下载iSlide软件及详细安装步骤

iSlide插件是一款能够支持PPT和WPS的ppt插件&#xff0c;旨在让每一个人都能够轻松制作出精美的ppt&#xff0c;能够在职场收到更多的关注&#xff0c;而该软件的口号正是「让 PPT 设计简单起来」&#xff0c;该插件是由原来NT插件升级改良过来的&#xff0c;在功能上面进行了全…

代码随想录算法训练营第51天:股票2

代码随想录算法训练营第51天&#xff1a;股票2 ‍ 123.买卖股票的最佳时机III 力扣题目链接(opens new window) 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&a…

01 Pytorch 基础

1.数据处理 1.取一个数据&#xff0c;以及计算大小 &#xff08;剩下的工作&#xff0c;取batch&#xff0c;pytorch会自动做好了&#xff09; 2.模型相关 如何得到结果 3.模型训练/模型验证: 代码剖析 1.配置文件yaml (字典) #参数配置config {"train_path"…

centos7.6使用飞鱼FlyFish的docker镜像

参考教程&#xff1a; 飞鱼的docker镜像使用教程&#xff1a; doc/FlyFish_docker镜像使用指南.md 云智慧/FlyFish - Gitee.com centos的docker安装教程&#xff1a; CentOS下 Docker、Docker Compose 的安装教程_centos安装docker-compose_centos 安装docker-compose-CSDN…