【Nodejs】Nodejs中Buffer的使用

2023-11-16

前言

JavaScript 对于字符串(string)的操作十分友好,无论是宽字节字符串还是单字节字符串,都被认为是一个字符串。

console.log("你好,世界!".length); // 6
console.log("hello,world!".length); // 12
console.log("\u00cc".length); // 1 

作为对比,Rust 中的字符串则相对难以理解:

let str = String::from("你好,世界!");
println!("{}", str.len()); // 18 

这是因为 Rust 中的 String 类型本身就是基于数组 vec 进行的封装,数组每个元素都是一个 u8 类型的元素,而 JavaScript 的 String 类型的抽象程度要更为高。这符合这两种语言的应用面(一个作为系统编程语言,一个为脚本语言)。

而这种高抽象层次,在 Nodejs 拓展了 JavaScript 的应用面之后,就显得有些力不从心了。在 Nodejs 中,应用需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,还要处理大量二进制数据。 JavaScript 原有的字符串远远不能满足这些需求,于是 Buffer 应运而生。

Buffer 结构

Buffer 是一个像 Array 的对象,但它主要用于操作字节。

底层实现

Buffer 是一个 JavaScript 与 C++ 结合的模块,它将性能相关部分用 C++ 实现,将非性能相关的部分用 JavaScript 实现:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Nodejs】Nodejs中Buffer的使用 的相关文章

随机推荐

  • 计算机退出程序的四种方法,退出windows10系统账户的四种方法

    网友反馈说Win10系统打开某些程序时 经常会弹出提示 你要允许以下程序对此计算机进行更改吗 每回都要手动关闭 而且频繁的弹出影响办公效率 有什么办法能将此窗口给永久关闭 退出微软账户即可 接下去看下具体操作方法 退出Win10账户的方法
  • 同步与异步的区别(一看则懂)

    前端面试经常被问 同步与异步的区别是什么 答案呢 大家都知道 只是在于你怎么表达 这种问题也不是很复杂 建议在回答的时候最好结合自己的实际项目开发以及自己的理解来回答 这样的效果会比较好 面试上提的问题本来目的就是想考察你是否熟悉 是否有用
  • TSN协议之冗余协议——IEEE 802.1 CB

    在车载通信领域 我们时常面临一个困惑 要是通信线路异常断开了怎么办 这里的异常断开不仅指物理上的断开 也可能是受电磁干扰等导致线路通信功能的异常等 解决此类问题 一个显而易见的解决方案就是增加冗余路径 即把数据传输2 N份以进行备份 这样就
  • 【转载】阿里数据技术大图详解

    架构图从下往上看 从数据采集和接入为始 抽取到计算平台 通过OneData体系 以 业务板块 分析维度 为架构去构建 公共数据中心 基于公共数据中心在上层根据业务需求去建设消费者数据体系 企业数据体系 内容数据体系等核心数据资产 深度加工后
  • JS判断数组是否包含其他数组中的一个值

    Test var a 2 3 4 5 6 7 8 9 10 var b 2 3 var c 1 var x S1 var y S2 c findIndex val gt x y a includes val Demo POC primary
  • 读取nacos配置_Nacos入门指南01 Nacos是什么?

    你好 欢迎阅读 本文是系列文章中的第1篇 Part1 Nacos 是什么 Part2 Nacos 环境搭建 Part3 Nacos 服务发现实践 Part4 Nacos 分布式配置实践 本文的目标是理解 Nacos 的概念作用 并理解服务发
  • 【发布】ChatGLM又开源了一个6B多模态版本

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 OpenAI 的GPT 4样例中展现出令人印象深刻的多模态理解能力 但是能理解图像的中文开源对话模型仍是空白 近期 智谱AI 和清华大学 KEG 实验室开源了基于 ChatGLM
  • Quartus Ⅱ 15.1 将Verilog模块程序封装

    将模块程序封装 我们可以更加直观查看每个模块间的联系 先放一张成果图 博主做完数电实验就忘干净了 所以自己又摸索了一遍 最后成品可能不是太好看 怪自己手残 下面是详细步骤 首先要在files一栏 右击想要封装的模块 然后选择 Create
  • 如何在PC上查看一个web页面在移动端的展示效果

    最近在chrome上发现一个东东 emulation 这个果断可以用来模拟web页面在移动端的显示结果 F12的界面 点击 Show drawer 就可以看到这个界面了 这里可以选择各种设备 选中之后 点击emulate就可以模拟了 这个就
  • python 基础语法使用Demo

    基本模型 usr bin python coding UTF 8 print 你好 世界 一行显示多条语句 方法是用分号 分开 print hello print world 编写格式注意点 没有严格缩进 在执行时会报错 if True p
  • tw8836flash制作

    TW8836 Flash的bin制作 2 选bitmap 在选menu 3 4 压缩需勾选 5 添加图片 制作bin文件 6 改生成的MRLE为Bin后缀 BIN文件为烧写 INF文件为图片存储信息 代码要用到 7 这里用到BIN文件作为烧
  • chapter6可视化(不想看版)

    pip install visdom python m visdom server 直接使用 http localhost 8097 def linspace start stop num 50 endpoint True retstep
  • [个人笔记] origin学习 入门教程

    良心官方 已经入驻bilibili 官号 Origin Pro软件官方 投稿了许多基础教程 还有技术交流群等 打算学习的同学可以去找一下看看 2020 7 5官号只有三级 快去欺负 晚了就欺负不到了 图片中包含引用于官方视频教程的图片左下角
  • 手写数字识别代码详解

    文件目录如下 其中数据集data目录运行时在与手写数字识别同级目录自动生成 具体文件内代码见下文 一 conf py文件 项目配置 import torch train batch size 128 训练批次大小 表示每次训练神经网络时每次
  • 为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》

    大家好 我是咔咔 不期速成 日拱一卒 之前ElasticSearch系列文章中提到了如何处理空值 若为Null则会直接报错 因为在ElasticSearch中当字段值为null时 空数组 null值数组时 会将其视为该字段没有值 最终还是需
  • 3.gendisk结构体

    在Linux内核中 使用gendisk 通用磁盘 结构体来表示一个独立的磁盘设备 或分区 1 gendisk结构体 major first minor和minors共同表征了磁盘的主 次设备号 同一个磁盘的各个分区共享一个主设备号 而此设备
  • 系统搜索资源就停止服务器,SQL Server (MSSQLSERVER) 服务启动不了,系统日志显示由于下列服务特定错误而终止: 找不到映像文件中指定的资源名。...

    系统日志报错 SQL Server MSSQLSERVER 服务由于下列服务特定错误而终止 找不到映像文件中指定的资源名 SQL Server日志文件报错 2020 01 19 09 32 41 96 Server Microsoft SQ
  • 两个重要极限定理推导

    两个重要极限定理 lim x
  • GPT模型(Generative Pre-Training)

    一句话简介 2018年发掘的自回归模型 采用预训练和下游微调方式处理NLP任务 解决动态语义问题 word embedding 送入单向transformer中 目录 GPT简介 GPT概述 GPT解析 总结 一 GPT简介 1 1 背景
  • 【Nodejs】Nodejs中Buffer的使用

    前言 JavaScript 对于字符串 string 的操作十分友好 无论是宽字节字符串还是单字节字符串 都被认为是一个字符串 console log 你好 世界 length 6 console log hello world lengt