李才哥
理解Buffer
原创
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
李才哥
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
理解Buffer
理解Buffer
原创
李才哥
关注
修改于 2021-03-02 18:07:16
940
0
修改于 2021-03-02 18:07:16
举报
文章被收录于专栏:
李才哥
理解Buffer
Buffer 结构
Buffer所占用的内存不是通过V8分配的,属于堆外内存
Buffer受Array类型的影响很大,可以访问length属性得到长度,也可以通过下标访问元素
Node在内存的使用上应用的是在C++ 层面申请内存、在JavaScript中分配内存的策略
Node采用了slab动态内存管理分配机制
Buffer 的转换
字符串转Buffer
通过构造函数转换的Buffer对象,存储的只能是一种编码类型
一个Buffer对象可以存储不同编码类型的字符串转码的值
Buffer转字符串
Buffer对象的toString()可以将Buffer对象转换为字 符串
Buffer不支持的编码类型
只有少数的几种编码类型可以 在字符串和Buffer之间转换
Buffer提供了一个isEncoding()函数来判断编码是否支持转换
对于不支持的编码类型,可以借助Node生态圈中的模块完成转换
Buffer 的拼接
乱码是如何产生的
文件可读流在读取时会逐个读取Buffer
对于任意长度的Buffer而言,宽字节字符串都有 可能存在被截断的情况
setEncoding()与string_decoder()
让data事件中传递的不再是一个Buffer对象,而是编码后的字符串
可读流对象在内部设置了一个decoder对象,进行Buffer到字符串的解码,然后传递给调用者
正确拼接Buffer
正确的拼接方式是用一个数组来存储接收到的所有Buffer片段并记录下所有片段的总长度
然后调用
Buffer.concat() 方法生成一个合并的Buffer对象
Buffer
与性能
通过预先转换静态内容为Buffer对象,可以有效地减少CPU的重复使用,节省服务器资源
动态内容和静态内容分离,静态内容部分可以通 过预先转换为Buffer的方式,使性能得到提升
尽量只读取Buffer,然后直接传输,不做额外的转换,避免损耗
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
node.js
编程算法
存储
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
node.js
编程算法
存储
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
Buffer 结构
Buffer所占用的内存不是通过V8分配的,属于堆外内存
Buffer受Array类型的影响很大,可以访问length属性得到长度,也可以通过下标访问元素
Node在内存的使用上应用的是在C++ 层面申请内存、在JavaScript中分配内存的策略
Node采用了slab动态内存管理分配机制
Buffer 的转换
字符串转Buffer
通过构造函数转换的Buffer对象,存储的只能是一种编码类型
一个Buffer对象可以存储不同编码类型的字符串转码的值
Buffer转字符串
Buffer对象的toString()可以将Buffer对象转换为字 符串
Buffer不支持的编码类型
只有少数的几种编码类型可以 在字符串和Buffer之间转换
Buffer提供了一个isEncoding()函数来判断编码是否支持转换
对于不支持的编码类型,可以借助Node生态圈中的模块完成转换
Buffer 的拼接
乱码是如何产生的
文件可读流在读取时会逐个读取Buffer
对于任意长度的Buffer而言,宽字节字符串都有 可能存在被截断的情况
setEncoding()与string_decoder()
让data事件中传递的不再是一个Buffer对象,而是编码后的字符串
可读流对象在内部设置了一个decoder对象,进行Buffer到字符串的解码,然后传递给调用者
正确拼接Buffer
正确的拼接方式是用一个数组来存储接收到的所有Buffer片段并记录下所有片段的总长度
然后调用 Buffer.concat() 方法生成一个合并的Buffer对象
Buffer 与性能
通过预先转换静态内容为Buffer对象,可以有效地减少CPU的重复使用,节省服务器资源
动态内容和静态内容分离,静态内容部分可以通 过预先转换为Buffer的方式,使性能得到提升
尽量只读取Buffer,然后直接传输,不做额外的转换,避免损耗
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
产品介绍
产品文档
对象存储COS新用户低至1元!
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐