//通过长度构建的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. Java多线程——进程和线程

    Java多线程——进程和线程 摘要:本文主要解释在Java这门编程语言中,什么是进程,什么是线程,以及二者之间的关系. 部分内容来自以下博客: https://www.cnblogs.com/dolp ...

  2. 使用 ArrayAdapter 来定制 ListView

    一个 ListView,其宽高都设为 match_parent,可以更省资源. activity_main.xml <ListView android:id="@+id/list_Vi ...

  3. Jenkins .NET项目持续集成配置

    基本步骤 1. 安装并配置MSBUILD 在系统管理->插件管理->添加MSBuild插件 在系统管理->系统设置->找到MSBuild配置部分,配置不同的MSbuild版本 ...

  4. sql把两值之和当作条件进行查询

    目的:把表中两个字段之和作为where条件进行过滤查询 //查询在没有过期的记录select a,b from test where a+b>now();// a:存入时间 b:有效期时间段 进 ...

  5. 内存管理总结-autoreleasePool

    转自其他 序言 无论是在MRC时期还是ARC时期,做过开发的程序员都接触过autoreleasepool.尽管接触过但本人对它还不是很了解.本文只是将自己的理解说出来.在内存管理的文章中提到了OC的内 ...

  6. redis 可视化管理工具

    Redis Desktop Manager 下载地址:http://redisdesktop.com/download 支持: Windows 7+, Mac OS X 10.10+, Ubuntu ...

  7. Java EE 目标

    在大三上学期学习了Java se,只是简单的学习了语法,而且没有及时的复习巩固,语法知识已经忘了许多.在这个新学期,又有了Java EE这门课,书上的内容是从没学习过的新知识,只是在网站上看到过像Sp ...

  8. 迅为iMX6UL开发板低功耗高能效开发平台

    迅为i.MX 6UL开发板基于ARM Cortex-A7内核,主频高达528 MHz,内存:512MDDR3,存储:8G EMMC,支持2路CAN,2路百兆以太网,4路USB HOST,8路串口,以及 ...

  9. Swift protocol extension method is called instead of method implemented in subclass

    Swift protocol extension method is called instead of method implemented in subclass protocol MyProto ...

  10. golang zip 解压、压缩文件

    package utils import (    "archive/zip"    "fmt"    "io"    "io/i ...