位置: 编程技术 - 正文

关于Node.js中Buffer的一些你可能不知道的用法(nodejs fabric)

编辑:rootadmin

推荐整理分享关于Node.js中Buffer的一些你可能不知道的用法(nodejs fabric),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js详解,nodejs bull,node.js详解,node js fs,关于Node.js中全局对象global说法正确的是,nodejs bull,关于Node.js中全局对象global说法正确的是,关于Node.js中全局对象global说法正确的是,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在大多数介绍 Buffer 的文章中,主要是围绕数据拼接和内存分配这两方面的。比如我们使用fs模块来读取文件内容的时候,返回的就是一个 Buffer:

在使用net或http模块来接收网络数据时,data事件的参数也是一个 Buffer,这时我们还需要使用Buffer.concat()来做数据拼接:

还可以利用Buffer.toString()来做转换base或十六进制字符的转换,比如:

一般情况下,单个 Node.js 进程是有最大内存限制的,以下是来自官方文档中的说明:

What is the memory limit on a node process&#;

Currently, by default v8 has a memory limit of MB on -bit systems, and 1.4GB on -bit systems. The limit can be raised by setting --max_old_space_size to a maximum of ~ (~1 GB) (-bit) and ~ (~4GB) (-bit), but it is recommended that you split your single process into several workers if you are hitting memory limits.

由于 Buffer 对象占用的内存空间是不计算在 Node.js 进程内存空间限制上的,因此,我们也常常会使用 Buffer 来存储需要占用大量内存的数据:

以上便是 Buffer 的几种常见用法。然而,阅读 Buffer 的 API 文档时,我们会发现更多的是readXXX()和writeXXX()开头的 API,具体如下:

buf.readUIntLE(offset, byteLength[, noAssert]) buf.readUIntBE(offset, byteLength[, noAssert]) buf.readIntLE(offset, byteLength[, noAssert]) buf.readIntBE(offset, byteLength[, noAssert]) buf.readUInt8(offset[, noAssert]) buf.readUIntLE(offset[, noAssert]) buf.readUIntBE(offset[, noAssert]) buf.readUIntLE(offset[, noAssert]) buf.readUIntBE(offset[, noAssert]) buf.readInt8(offset[, noAssert]) buf.readIntLE(offset[, noAssert]) buf.readIntBE(offset[, noAssert]) buf.readIntLE(offset[, noAssert]) buf.readIntBE(offset[, noAssert]) buf.readFloatLE(offset[, noAssert]) buf.readFloatBE(offset[, noAssert]) buf.readDoubleLE(offset[, noAssert]) buf.readDoubleBE(offset[, noAssert]) buf.write(string[, offset][, length][, encoding]) buf.writeUIntLE(value, offset, byteLength[, noAssert]) buf.writeUIntBE(value, offset, byteLength[, noAssert]) buf.writeIntLE(value, offset, byteLength[, noAssert]) buf.writeIntBE(value, offset, byteLength[, noAssert]) buf.writeUInt8(value, offset[, noAssert]) buf.writeUIntLE(value, offset[, noAssert]) buf.writeUIntBE(value, offset[, noAssert]) buf.writeUIntLE(value, offset[, noAssert]) buf.writeUIntBE(value, offset[, noAssert]) buf.writeInt8(value, offset[, noAssert]) buf.writeIntLE(value, offset[, noAssert]) buf.writeIntBE(value, offset[, noAssert]) buf.writeIntLE(value, offset[, noAssert]) buf.writeIntBE(value, offset[, noAssert]) buf.writeFloatLE(value, offset[, noAssert]) buf.writeFloatBE(value, offset[, noAssert]) buf.writeDoubleLE(value, offset[, noAssert]) buf.writeDoubleBE(value, offset[, noAssert])

这些 API 为在 Node.js 中操作数据提供了极大的便利。假设我们要将一个整形数值存储到文件中,比如当前时间戳为,如果将其当作一个字符串存储时,需要占用 字节的空间,而将其转换为二进制存储时仅需 6 字节空间即可:

在使用 Node.js 编写一些底层功能时,比如一个网络通信模块、某个数据库的客户端模块,或者需要从文件中操作大量结构化数据时,以上 Buffer 对象提供的 API 都是必不可少的。

接下来将演示一个使用 Buffer 对象操作结构化数据的例子。

操作结构化数据

关于Node.js中Buffer的一些你可能不知道的用法(nodejs fabric)

假设有一个学生考试成绩数据库,每条记录结构如下:

学号 课程代码 分数 XXXXXX XXXX XX

其中学号是一个 6 位的数字,课程代码是一个 4 位数字,分数最高分为 分。

在使用文本来存储这些数据时,比如使用 CSV 格式存储可能是这样的:

其中每条记录占用 字节的空间,而使用二进制存储时其结构将会是这样:

学号 课程代码 分数 3 字节 2 字节 1 字节

每一条记录仅需要 6 字节的空间即可,仅仅是使用文本存储的 %!下面是用来操作这些记录的程序:

我们可以再编写一段程序来看看效果:

lei-proto 模块介绍

上面的例子中,当每一条记录的结构有变化时,我们需要修改readRecord()和writeRecord() ,重新计算每一个字段在 Buffer 中的偏移量,当记录的字段比较复杂时很容易出错。为此我编写了lei-proto模块,它允许你通过简单定义每条记录的结构即可生成对应的readRecord()和`writeRecord()函数。

首先执行以下命令安装此模块:

使用lei-proto模块后,前文的例子可以改为这样:

运行与上文同样的测试程序,可看到其结果是一样的:

关于lei-proto模块的详细使用方法可访问该模块的主页浏览:

NodeJS测试框架mocha入门教程 NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assertlibs,同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑

NodeJs测试框架Mocha的安装与使用 Mocha是运行在nodejs和浏览器下的JavaScript的单元测试框架,官方文档在

nodejs实现邮件发送服务实例分享 前段时间,想用python实现发送邮件的服务,用的是smtp,但是不知道为什么一直没有成功,于是想用nodejs尝试下,意外的简单容易。先安装模块:npminstall

标签: nodejs fabric

本文链接地址:https://www.jiuchutong.com/biancheng/377901.html 转载请保留说明!

上一篇:nodejs模块nodemailer基本使用-邮件发送示例(支持附件)(nodejs模块有哪些)

下一篇:NodeJS测试框架mocha入门教程(nodejs test)

  • 自行研发的无形资产不确认递延所得税
  • 金税盘开票系统怎么增加税目
  • 增值税纳税申报时间
  • 金蝶财务软件年末结账步骤
  • 变更法人代表要查征信吗
  • 结算金额和付款金额
  • 公司收到红字发票怎么开
  • 简易计征开什么发票
  • 人身保险和意外保险是一个东西吗
  • 电影院买电影票怎么买
  • 制造费用工资结转怎么算
  • 集团股份怎么分配
  • 公司是否可以开电子发票
  • 进销项税额的会计分录
  • 增值税专用发票可以开电子发票吗
  • 增值税为什么申报不了
  • 可以抵扣的增值税计入什么科目
  • 提前收取租赁收入的财务处理
  • 文化事业建设费税率
  • 企业固定资产损失包括
  • 所得税季报营业外收入怎么填
  • 暑假工需要什么条件
  • 以土地入股需要开发票吗
  • 企业所得税以前年度亏损怎么弥补
  • 事业单位租赁收入的处理
  • 进项发票没认证可以开红字申请单吗
  • 工地安装监控哪个部门管
  • win10更新kb5006670
  • 企业购进房产怎么抵扣
  • 小规模纳税人需要缴纳个人所得税吗
  • mini program是什么
  • 不征税收入税收政策
  • 销售商品怎么做会计分录呢
  • vue如何配置环境变量
  • 哪个光圈值最大
  • vue中使用nodejs
  • 大型语言模型的教育应用
  • 【Pytorch深度学习50篇】·······第六篇:【常见损失函数篇】-----BCELoss及其变种
  • spring integration使用:消息转换器
  • 增值税发票没认证可以退回吗
  • 销售收入是不是销售额
  • 财务报表季报应付职工薪酬为负数
  • 年度财务报表分为哪几类
  • 主管盾和制单盾是是转账使用的U盾吗?
  • 季度利润表是累计数吗
  • odbc api
  • 家具厂成本
  • 所有者权益和负债的主要区别
  • 融资租赁固定资产折旧年限
  • 商业保理怎么账务处理?
  • 增值税专用发票丢了怎么补救
  • 家电销售范围包括哪些
  • 自产货物用于在建工程账务处理
  • 营改增后租金收入交什么税
  • 管理费用算产品成本吗
  • 跨年退货怎么处理账务
  • 销售商品托收承付怎么确认收入
  • 同期增长率如何计算
  • mysql中自定义函数属于那个
  • sql操作方法
  • xp电脑工作组找不到其他电脑
  • 优盘和硬盘
  • vi编辑器使用教程
  • icore是什么意思
  • 误删了一些文件电脑不能正常启动了
  • ExtJS4中的requires使用方法示例介绍
  • ghost详细说明
  • shell脚本-ge
  • cmd下在win上做vpn的命令分享
  • html文字美化
  • shell脚本用法
  • jquery form序列化
  • linux搭建ftp服务器
  • 安卓 html
  • javascript代码用什么来标记
  • js重要知识点
  • 关于成品油的吨油换算
  • 上海哪能玩
  • 业务竞赛经验分享
  • 公司忘记报税了怎么补
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设