互联网的基础是数据的传送,一切都围绕着数据展开,比如发送啊,接收啊,这一切都离不开网络,通过之前,学会了通过http模块来搭建一个服务器,也实现了网络爬虫,nodejs中网络的部分,Net这个模块,对于Net这个模块,如果没有深入使用nodejs的话,很少注意他,但是他扮演着十分重要的作用,甚至熟悉的http,https模块都是建立在net这个模块的封装之上的,在学习Net之前,先花时间讲讲Buffer和Stream,因为网络的基础就是数据的传输和处理,在没有理解Buffer和Stream之前,尝试去理解Net这个模块,而忽略数据这些基础知识,走了不少弯路,
Buffer
直译的意思就是缓冲,在nodejs中用来处理二进制的数据,为什么要折腾buffer呢,因为js数据是以字符串utf-8数据格式存储的,处理二进制的能力是很弱的,而网络层不管对资源对处理还是响应都是使用二进制的,所以nodejs就有了这么一个接口,来创建一个专门处理二进制的这么一个缓存区,并提供一些方法来对这个缓存区的数据进行进一步的处理,Buffer在nodejs里面是可以全局访问的,不需要用require关键字来加载他,先了解一下buffer有哪些静态方法,然后再去了解他怎么去实例化,以及序列化后的对象上所有的属性和方法,

我们发现Buffer是一个对象,也是一个构造函数,具有自己的属性和静态方法,通过他new出来的一个实例,其他代表v8引擎分配的一段缓存,基本上是一个数组,成员也是整数值

我们new了一个Buffer的实例,传入一个参数,出来的是用Buffer包起来的一串字符,每个对应的就是字符的长度,比如H就是48,e就是65,空格就是20,注意,在Buffer对象与字符串相互转换的时候,是需要指定编码格式的,如果不指定,就是不传递编码格式的参数的话,默认是按utf-8的形式进行转化,比如我可以按照base64来转化这个编码,

可以看到打印出来的长度已经短了很多,通过new的这种格式是可以直接实例化Buffer对象的,这算是一种实例化的方法,还有第二种,就是传递一个size,以这个字节数为单位,传递参数给构造函数,来生成一段内存区间,比如

这个Buffer的长度就是8,这种实例化的方法只是分配了一段内存区间,如果往里面写的内容超出长度的话,超出长度的部分是不会被缓冲的,

可以看到打印出的Buffer,他的长度是8,从31到38,我们再来声明一个Buffer,声明长度7,写入长度8

可以看到第8位已经没有掉了,那么就是说只要为某个buffer定义一个长度,超出掉部分就是不缓冲了

 
 
第三种实例化的方法,通过数组进行初始化

用数组的方式实例化的buffer对象,也可以直接通过下标来访问数组里面的某一个值,

这里要留意一下,如果是小数点的这种,

再访问出来的就是一个整数的,所以这里就是直接取整

Buffer实例的更多相关文章

  1. 后端程序员之路 39、一个Protocol Buffer实例

    实际工作的Protocol Buffer使用经验 # 写proto文件- 协议版本 项目用的是protobuf2,所以要指定 syntax = "proto2";- 包名 pack ...

  2. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  3. 大熊君大话NodeJS之------Buffer模块

    一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...

  4. Nodejs Buffer

    javascript中的字符串本身就是以字符来存储,而非字节,下面的例子可以说明: console.log("0123456789".length); console.log(&q ...

  5. Node.js缓冲模块Buffer

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

  6. Buffer -nodejs

    纯 JavaScript 对 Unicode 友好但是无法很好地处理二进制数据.当我们面对类似 TCP 流或文件系统时,是需要处理八位流的.Node 有几种操作.创建以及消费八位流的策略.原始数据保存 ...

  7. 如何使用node中的buffer

    介绍:Buffer类是一个全局类,是一个比较罕见不需要require( ‘buffer’ )就可以使用的类,Buffer类似与数组也有length, 它里面的元素为16进制的两位数,即 0-255的数 ...

  8. Node.Buffer

    介绍 Buffer是一个典型的javascript与c++结合的模块,它将性能相关的部分用c++实现,将非性能相关的部分用javascript实现. 纯 JavaScript 对 Unicode 友好 ...

  9. NodeJS stream 一:Buffer

    当年是看了朴灵的九浅一深 NodeJS 入门的 Node, 朴大大的书讲实践很少更多的篇幅用在了讲原理上,道理听了那么多,后来开始在前端工程领域使用 NodeJS 却处处掣肘,总结原因发现 NodeJ ...

随机推荐

  1. classloader 学习

    classloader就是把类文件加载到jvm中供虚拟机使用,先看一个magic小例子: 首先,我定义一个alex/vicky包,然后在这个包内定义一个接口: public interfaceISer ...

  2. Windows无法启动 VMware Workstation server服务解决方法

    Windows无法启动VMware Workstation server服务, 可以通过删除datastores.xml文件来解决. 具体操作步骤如下: 1.在系统盘目录下,找到C:\ProgramD ...

  3. Spyder清除Variable Explorer&&手动安装protobuf3.0(为了配置windows的python接口)

    输入:reset 选择:y PS:建议在windows下,安装anaconda32bit版本的,可以兼容更多第三方包.   Conda使用清华镜像 配置镜像 在conda安装好之后,默认的镜像是官方的 ...

  4. OfficeControl插件的用法

    项目中需要用到文档在线编辑的功能,网上找到这篇文章: http://hi.baidu.com/hurtingwings/item/bf83b6343305a94e3075a19e

  5. UGUI 哪些显示在前方的问题

    1.对于一个场景里不同的Canvas来说,越最后创建的或者越最后激活的Canvas,越显示在前方. 2.对于同一个Canvas里的UI来说在Hierarchy面板越靠下越显示在前方.

  6. 什么是JavaScript Souce Map

    第一部分 我们经常可以看到后缀名为.map的文件,比如我们下载得到bootstrap的css文件,如下所示: 不难理解bootstrap.css. bootstrap.min.css.等这些常规的代码 ...

  7. android 中百度地图 关于地图缩放所调用的事件

    在做百度地图的时候 javascript 有个地图缩放的事件 但是在android 的API里面却没有,但是还好  官方给了一个MapStatusChangeListener,是这样介绍的 百度地图S ...

  8. mysql java 通用AES加密

    最近有个需求,需要对数据库某些字段加密,调研发现采用AES加密的方式较多,而且反向解密速度快,符合需求,于是采用:下面是遇到的问题及相关代码 首先第一个问题,AES的秘钥是16位,mysql的密码长度 ...

  9. Mysql显示行号

    SELECT `Name`,(@rowNum:=@rowNum+1) AS rowNo FROM bas_student,(SELECT (@rowNum :=0)) a LIMIT 10;

  10. Net-SNMP(V3协议)安装配置笔记(CentOS 5.2)(转)

    原出处:http://blog.ihipop.info/2010/03/722.html 为了这颗仙人掌(cacti),我必须先部署(Net-SNMP), 同时我为了安全因素,也为了简便考虑,决定采用 ...