node.js中的Buffer模块学习笔记

一,前言

  说要学node很久了,近两日才开始认真学习,之前看了一点就忙别的去了,还是不能半途而废啊!开始看node的时候觉得很有意思,跟着文档走,就到了Buffer,简单说一说Buffer!

  1-1什么是Buffer?

    Buffer就是缓冲区,是暂时存放数据输入输出的一个内存,也是node用来与String(字符串数据类型)相互转换的一个全局构造函数。

 

二,Buffer相关概念

  2-1.那Buffer到底是干啥的呢?

    对二进制数据进行操作!

 

  2-2.Buffer的特性?

    Buffer和字符串是类似的,它也可以像字符串一样用.length属性得到字符长度,也能用[index]的方式制定读取的位置,这样也有点像数组的嘞!

    Buffer和字符串的区别:

      字符串是只读的,对字符串的操作得到的都是一个新字符串,原来的字符串都是保持不变的

      Buffer像c语言数组,可以用下标[ index ]直接操作

 

  2-3Buffer二进制数据转字符串以及字符串转Buffer二进制数据

    Buffer二进制数据转字符串:

    buf.toString([encoding], [start], [end])

     eg:

      var buffer = new Buffer([ 0x68 , 0x65 , 0x6c , 0x6f ])
      var str = buffer.toString("UTF-8") // hello

    字符串转Buffer二进制数据:  

    new Buffer(str, [encoding]),默认UTF-8
    buf.write(string, [offset], [length], [encoding])

     eg: 

      var buffer = new Buffer('你好', 'utf-8')
      console.log(buffer) //<Buffer e4 bd a0 e5 a5 bd>
   

  2-4.Buffer的转换

    Buffer支持的编码类型:ASC-II,UTF-8,Base64,Hex,Binary,UTF-16LE/UCS-2

 

  2-5.Buffer的内存问题

    Buffer对象的内存不是在V8的堆内存中,是在node的c++层面实现内存的申请。

    node对于内存,使用分配机制:

      full:完全分配

      partial:部分分配

      empty:没有分配

 

结束语:这是我第一次发博,也是自己学习的笔记,有问题还请各位大佬不吝赐教喔~

参考:https://www.cnblogs.com/hanguidong/p/9409215.html

(这篇更为全面!!!!想更加了解的建议看这个!!!好文必推啊)

 

posted on 2020-01-08 11:26  kitty-chan  阅读(167)  评论(2编辑  收藏  举报