位置: 编程技术 - 正文

关于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)

  • 只拿了营业执照十年无办税好注销吗
  • 退税怎么做账务处理,需要交什么税
  • 增值税税率改变后原项目的新增单价按哪个税率
  • 成本结算怎么处理?
  • 月末只有进项税需要把转出未交增值税转到未交增值税
  • 免税是不是不用交税
  • 企业对企业分红要缴纳什么税免税分红
  • 小微企业一般要交什么费用2019
  • 财政补贴交不交印花税
  • 一般纳税人企业所得税税率
  • 非货币性资产含义
  • 库存盘盈盘亏按进价还是售价
  • 车辆保险怎么计算器
  • 保证金存款余额
  • 给别人开的维修费专票怎么入账
  • 工地工资是人走账清吗
  • 车间不生产时折旧怎么算
  • 其他应收款里面有增值税
  • 什么是企业所得税收入
  • 没有订立合同的著作权属于什么人
  • 免征企业所得税的有哪些行业
  • 凭证类别不合法怎么处理
  • 企业的其他业务收入有
  • 调整上年度多计提费用
  • 推广费什么公司能开
  • 小规模纳税人的增值税账务处理
  • 事业单位福利发放时间
  • 企业出售自用车账务处理
  • 未开票收入冲回如何做账
  • 其他应收款贷方负数说明什么
  • PHP:stream_register_wrapper()的用法_Stream函数
  • php数据库语句
  • 企业年金缴纳标准400什么意思啊
  • 用交易所转付货款怎么转
  • php定时发送邮件
  • 公司支付工伤赔偿,是先签字还是先打钱
  • Code For Better 谷歌开发者之声——使用谷歌浏览器 Chrome 更好地调试
  • 产品检测费可以放入研发费用吗
  • 转让使用过的固定资产增值税
  • excel表格复杂表头
  • php发邮件系统源码
  • 如何进行会计制度改革
  • 填写记账凭证的日期一般是会计人员填制记账凭证的
  • 厂区绿化工程计入什么科目
  • 环境检测费可以计入环保费吗
  • 企业的所得税税率怎么计算
  • 现金流量表的编制公式 计算公式
  • 计提成本后如何冲回
  • 哪些地方中国没有收复
  • 运费对方出怎么处理
  • 未认证的进项税发票入账
  • 工业用电交税怎么算
  • 股东股权转让后还能起诉公司或者股东侵害其权利吗
  • 哪些发票可以报销哪些发票不可以报销
  • 预收账款占销售收入比例预警值为比例大于
  • mysql where clause
  • winxp系统开机启动项
  • Windows Server 2008如何设置自动获取ip?设置自动获取ip教程
  • win7系统最佳性能
  • win10每次开机都假死机
  • xp系统打开注册表
  • windowsxp的快捷键
  • xp系统被锁定怎么解除锁定
  • 怎样取消进windows 密码
  • ubuntu怎么打开系统设置
  • 如何判断win7
  • 延长药品使用时间的方法
  • 如何装win8.1
  • win7系统连不了蓝牙
  • android通知消息
  • iframe 自适应宽度和高度
  • 刚接触 python 如何快速上手?
  • python的判断
  • js修改地址栏参数但不让他跳转
  • angular.min.js
  • shell中的注释用什么表示
  • android 调用相机拍照
  • 安卓获取手机号及通话状态权限
  • 2022年各大省份录取分数线
  • 起诉公司需要法人信息吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设