//通过长度构建的buffer内容是随机的
var buffer=new Buffer(100);
console.log(buffer);
//手动清空buffer,一般创建buffer不会清空
buffer.fill(0);
//通过字符串创建buffer
//字符串具有不变性 var str="阿尼";
var buffer=new Buffer(str);
console.log(buffer) // 通过数据创建 ,一般这种方式用的较少
var buffer=new Buffer([0,255]);
console.log(buffer); //代表的是内存,引用
//数组的slice是浅拷贝
let ary=[1,2,3];
let ary1=[ary,100,200];
let newAry=ary1.slice();
ary[0]=500;
console.log(newAry);
// 深拷贝 ,指的是对象中里面存的对象和以前的对象毫无关系,但长的一样
var obj={a:1};
console.log([obj]===[{a:1}])
// 浅拷贝 ,里面存放的内容和以前的是同一个地址
var obj={a:1};
console.log([obj]===[obj]) var ee=Object.assign({w:1},{a:{a:1}}) //浅拷贝 将两个对象合成一个新的对象
console.log(ee);
//JSON.parse(JSON.stringify({a:{a:1}})); //深拷贝 //buffer存放的都是内存地址,所有slice不会返回一个新的buffer
var buffer=new Buffer([1,2,3]);
var newBuffer=buffer.slice(0,1);
newAry[0]=100;
console.log(buffer); //
var buf1=new Buffer('音乐');
var buf2=new Buffer('啦啦');
var bigBuffer=new Buffer(12);
//拷贝
buf1.copy(bigBuffer,0);
buf2.copy(bigBuffer,buf1.length);
console.log(bigBuffer.toString()) ;//可以调用toString方法转为字符 //buffer concat
//合并两个buffer
let ww=Buffer.concat([buf1,buf2]).toString();
console.log(ww);
//合并两个buffer
Buffer.myConcat=function (list,totaLength) {
//totaLength 是否传递,如果传递用传递的长度构建一个buffer
//如果没有长度。循环list算出总长度,构建一个大buffer
//循环list将每一个小buffer拷贝到大buffer上
//如果长度过长,可以截取有效的长度,返回大buffer
if(typeof totaLength=='undefined'){
totaLength=list.reduce((per,next)=>{
return per+next.length;
},0);
let buffer=new Buffer(totaLength);
let index=0;
list.forEach(item=>{
item.copy(buffer,index)
index+=item.length; });
console.log(index);
return buffer.slice(0,index);
}
}
console.log(Buffer.myConcat([buf1,buf2]).toString());

node.js里的buffer常见操作,copy,concat等实例讲解的更多相关文章

  1. Node.js缓冲模块Buffer

    前言 Javascript是为浏览器而设计的,能很好的处理unicode编码的字符串,但对于二进制或非unicode编码的数据就显得无能为力. Node.js继承Javascript的语言特性,同时又 ...

  2. 理解 Node.js 里的 process.nextTick()

    有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...

  3. Node.js文件系统、路径的操作详解

    17173 17173 2 75 2014-12-12T05:06:00Z 2014-12-12T05:06:00Z 21 2735 15595 www.17173.com 129 36 18294 ...

  4. Node.js文件系统、路径的操作函数

    Node.js文件系统.路径的操作函数 目录 Node.js文件系统.路径的操作函数 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到 ...

  5. Node.js系列:Buffer类的使用

    客户端JavaScript中没有对二进制数据提供很好的支持.但是在处理TCP流或文件流时,必须要处理二进制数据.Node.js定义了一个Buffer类,用来创建一个专门存放二进制数据的缓存区. Buf ...

  6. Node.js之使用Buffer类处理二进制数据

    Node.js之使用Buffer类处理二进制数据 Buffer类可以在处理TCP流或文件流时处理二进制数据,该类用来创建一个专门存放二进制数据的缓存区. 1. 创建Buffer对象 1.1 直接创建: ...

  7. 学废了系列 - WebGL与Node.js中的Buffer

    WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...

  8. PHP中的__toString方法(实现JS里的链式操作)

    _toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错 Catchable fatal error: Object of class String could not be co ...

  9. node.js模块之Buffer模块

    http://nodejs.org/api/buffer.html Pure JavaScript is Unicode friendly but not nice to binary data. W ...

随机推荐

  1. Service官方教程(2)*IntentService与Service示例、onStartCommand()3个返回值的含义。

    1.Creating a Started Service A started service is one that another component starts by calling start ...

  2. 199 Binary Tree Right Side View 二叉树的右视图

    给定一棵二叉树,想象自己站在它的右侧,返回从顶部到底部看到的节点值.例如:给定以下二叉树,   1            <--- /   \2     3         <--- \  ...

  3. 未来十年Python的前景会怎样?

    转自:一位非常优秀的Python倡导者 作者:alex链接:https://www.zhihu.com/question/22112542/answer/166053516来源:知乎著作权归作者所有. ...

  4. solr之~模糊查询【转】

    solr之~模糊查询 有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有 ...

  5. [转]ASP.net MVC 2 自定义模板来显示数据

    本文转自:http://blog.163.com/liaojunbo@126/blog/static/1394892972012113104653651/ 在ASP.net MVC 2中,一个很有意思 ...

  6. oracle数据库常用的99条查询语句

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  7. ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码

    上一篇 我们介绍了什么是ABP,这一篇我们通过原作者的”简单任务系统”例子,演示如何运用ABP开发项目 创建实体 一般来说任务是需要分配给人来做的,所以我们创建两个实体模型类:Task和Persion ...

  8. dubbo系列--集群容错

    作为一个程序员,咱们在开发的时候不仅仅是完成某个功能,更要考虑其异常情况程序如何设计,比如说:dubbo的消费端调用服务方异常的情况,要不要处理?如何处理? dubbo提供了多种集群容错机制,默认是f ...

  9. OC中文件读取类(NSFileHandle)介绍和常用使用方法

    NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建 NSFileManager *fi ...

  10. JS获取服务器端控件ID

    很多时候我们需要在JS中对服务器端控件进行一些简单处理,但是这个时候没有必要回发到服务器,让服务器去处理,这个时候就又要用到JS了 那么怎么去获取这个服务器端控件呢?我们知道服务器最终返回到用户界面的 ...