博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node学习记录(1)
阅读量:7065 次
发布时间:2019-06-28

本文共 1291 字,大约阅读时间需要 4 分钟。

1.buffer

buffer.allocUnsafe(size)和allocUnsafeSlow(size)可以迅速创建一个buffer实例,但是使用的内存可能来源于共享内存池,因此可能包含有内存中未释放的旧数据。最好使用前完全重写内存。

共享内存的还包括:Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一个新的 Buffer,它与给定的 ArrayBuffer 共享相同的已分配内存

const arr = new Uint16Array(2);arr[0] = 5000;arr[1] = 4000;// 拷贝 `arr` 的内容。const buf1 = Buffer.from(arr);// 与 `arr` 共享内存。const buf2 = Buffer.from(arr.buffer);console.log(buf1);// 打印: 
console.log(buf2);// 打印:
arr[1] = 6000;console.log(buf1);// 打印:
console.log(buf2);// 打印:
复制代码

以及使用slice切割的buffer内容,也是共享buffer内存

buf.byteOffset

需要注意的是,当Buffer.from(ArrayBuffer, byteOffset, length) 设置了 byteOffset 或创建一个小于 Buffer.poolSize 的 Buffer 时,底层的 ArrayBuffer 的偏移量并不是从 0 开始

const nodeBuffer = Buffer.from('test poolsize byteoffset')console.log(nodeBuffer.byteOffset)//512const nodeBuffer1 = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])console.log(nodeBuffer.byteOffset)//536复制代码

因此,当使用 Buffer 创建 TypedArray 时,需要正确地指定 byteOffset。直接使用 buf.buffer 访问底层的 ArrayBuffer 时, ArrayBuffer 的第一个字节可能并不指向 buf 对象

// 创建一个小于 `Buffer.poolSize` 的 `Buffer`。const nodeBuffer = new Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);// 将 `Buffer` 赋值给一个 `Int8Array`。new Int8Array(nodeBuffer.buffer, nodeBuffer.byteOffset, nodeBuffer.length);复制代码

转载地址:http://owoll.baihongyu.com/

你可能感兴趣的文章
Spring Security OAuth 个性化token
查看>>
leetcode378. Kth Smallest Element in a Sorted Matrix
查看>>
如何实现label长度固定,文字分散分布的效果
查看>>
【跃迁之路】【727天】程序员高效学习方法论探索系列(实验阶段484-2019.2.17)...
查看>>
redux源码解析
查看>>
从理论到实践 全面理解HTTP/2
查看>>
vue2.X 解决同一路由跳转只有参数变化的情况下,组件不刷新的问题
查看>>
深度强化学习DQN(Deep Q Network)原理及例子:如何解决迷宫问题,附源码
查看>>
我是如何设计 Upload 上传组件的
查看>>
weekly 2019-02-15
查看>>
SpringBoot+jsp项目启动出现404
查看>>
Markdown写作中的图床解决方案(基于七牛云、PicGo)
查看>>
通过Spring Boot中的手动Bean定义提高启动性能
查看>>
再次简单明了总结flex布局,一看就懂...
查看>>
一步步学会用docker部署应用(nodejs版)
查看>>
无root权限新建git仓库进行多人协同工作
查看>>
【跃迁之路】【687天】程序员高效学习方法论探索系列(实验阶段444-2019.1.6)...
查看>>
假装用某米赛尔号的角度看Python面向对象编程
查看>>
RGBA和OPACITY的区别&DISPLAY和VISIBILITY的区别
查看>>
膨胀的template class成员函数
查看>>