最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs基礎(chǔ)之buffer緩沖區(qū)用法分析

 更新時間:2018年12月26日 10:21:24   作者:菜鳥學(xué)編程$  
這篇文章主要介紹了nodejs基礎(chǔ)之buffer緩沖區(qū)用法,結(jié)合實(shí)例形式分析了buffer緩沖區(qū)的概念、功能、創(chuàng)建、讀寫等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了nodejs基礎(chǔ)之buffer緩沖區(qū)用法。分享給大家供大家參考,具體如下:

JavaScript 語言自身只有字符串?dāng)?shù)據(jù)類型,沒有二進(jìn)制數(shù)據(jù)類型。但在處理像TCP流或文件流時,必須使用到二進(jìn)制數(shù)據(jù)。因此在 Node.js中,定義了一個 Buffer 類,該類用來創(chuàng)建一個專門存放二進(jìn)制數(shù)據(jù)的緩存區(qū)。在 Node.js 中,Buffer 類是隨 Node 內(nèi)核一起發(fā)布的核心庫。Buffer 庫為 Node.js 帶來了一種存儲原始數(shù)據(jù)的方法,可以讓 Node.js 處理二進(jìn)制數(shù)據(jù),每當(dāng)需要在Node.js 中處理I/O操作中移動的數(shù)據(jù)時,就有可能使用 Buffer 庫。原始數(shù)據(jù)存儲在 Buffer 類的實(shí)例中。一個 Buffer 類似于一個整數(shù)數(shù)組,但它對應(yīng)于 V8 堆內(nèi)存之外的一塊原始內(nèi)存。

創(chuàng)建buffer類

1、創(chuàng)建長度為指定字節(jié)的buffer實(shí)例

var buffer = new Buffer(10); //創(chuàng)建長度為10字節(jié)的buffer實(shí)例

2、通過數(shù)組創(chuàng)建buffer實(shí)例

var buffer = new Buffer([10,20,30,40,50]);

3、通過一個字符串來創(chuàng)建buffer實(shí)例

var buffer = new Buffer('www.google.com','utf-8');
//utf-8 是默認(rèn)的編碼方式,此外還可以指定以下編碼:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"

緩沖區(qū)長度

語法:

buf.length;

返回值:

返回 Buffer 對象所占據(jù)的內(nèi)存長度。

實(shí)例:

var buffer = new Buffer('www.runoob.com');
// 緩沖區(qū)長度
console.log("buffer length: " + buffer.length); //buffer length: 14

寫入緩沖區(qū)

語法:

buffer.write(string[, offset][, length][, encoding])

參數(shù):

  • string:寫入緩沖區(qū)的字符串。
  • offset:緩沖區(qū)開始寫入的索引值,默認(rèn)為 0 。
  • length:寫入的字節(jié)數(shù),默認(rèn)為 buffer.length
  • encoding:使用的編碼。默認(rèn)為 'utf8' 。

返回值:

返回實(shí)際寫入的大?。╪umber類型)。如果 buffer 空間不足, 則只會寫入部分字符串。

實(shí)例:

buf = new Buffer(256);
len = buf.write("www.runoob.com");
console.log("寫入字節(jié)數(shù) : "+ len); //寫入字節(jié)數(shù) : 14

從緩沖區(qū)讀取數(shù)據(jù)

語法:

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

參數(shù):

  • encoding:使用的編碼,默認(rèn)為utf-8
  • start:指定開始讀取的索引位置,默認(rèn)為0
  • end:指定讀取的結(jié)束位置,默認(rèn)為緩沖區(qū)的末尾

返回值:

解碼緩沖區(qū)數(shù)據(jù),并使用指定的編碼返回字符串

實(shí)例:

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
}
console.log( buf.toString('ascii'));  // 輸出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5)); // 輸出: abcde
console.log( buf.toString('utf8',0,5)); // 輸出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 編碼, 并輸出: abcde

buffer對象轉(zhuǎn)換成json對象

語法:

toJSON()方法

返回值:

json對象

實(shí)例:

var buf = new Buffer('www.google.com');
var json = buf.toJSON(buf);
console.log(json); //[ 119, 119, 119, 46, 103, 111, 111, 103, 108, 101, 46, 99, 111, 109 ]

緩沖區(qū)合并

語法:

Buffer.concat(list[, totalLength])

參數(shù):

  • list:用于合并的 Buffer 對象數(shù)組列表。
  • totalLength:指定合并后Buffer對象的總長度。

返回值:

返回一個多個成員合并的新 Buffer 對象。

實(shí)例:

var buf1 = new Buffer("谷歌網(wǎng)址:");
var buf2 = new Buffer("www.google.com");
var buf3 = Buffer.concat([buf1,buf2]);
console.log('buf1的內(nèi)容為:'+buf1.toString()); //buf1的內(nèi)容為:谷歌網(wǎng)址:
console.log('buf2的內(nèi)容為:'+buf2.toString()); //buf2的內(nèi)容為:www.google.com
console.log('buf3的內(nèi)容為:'+buf3.toString()); //buf3的內(nèi)容為:谷歌網(wǎng)址:www.google.com

緩沖區(qū)拷貝

語法:

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

參數(shù):

參數(shù)描述如下:

  • targetBuffer - 要拷貝的 Buffer 對象。
  • targetStart - 數(shù)字, 可選, 默認(rèn): 0
  • sourceStart - 數(shù)字, 可選, 默認(rèn): 0
  • sourceEnd - 數(shù)字, 可選, 默認(rèn): buffer.length

返回值:

沒有返回值。

實(shí)例:

var buf1 = new Buffer('ABC');
// 拷貝一個緩沖區(qū)
var buf2 = new Buffer(2);
var buf3 = new Buffer(3);
var buf4 = new Buffer(5);
var buf5 = new Buffer('abcdef');
buf1.copy(buf2);
buf1.copy(buf3);
buf1.copy(buf4);
buf1.copy(buf5);
console.log("buf2 content: " + buf2.toString()); //buf2 content: AB
console.log("buf3 content: " + buf3.toString()); //buf3 content: ABC
console.log("buf4 content: " + buf4.toString()); //buf4 content: ABC 因?yàn)殚_辟出來的內(nèi)存大了些,所以這里接一堆怪符號
console.log("buf5 content: " + buf5.toString()); //buf5 content: ABCdef

緩沖區(qū)裁剪

語法:

buf.slice([start][, end])

參數(shù):

參數(shù)描述如下:

  • start - 數(shù)字, 可選, 默認(rèn): 0
  • end - 數(shù)字, 可選, 默認(rèn): buffer.length

返回值:

返回一個新的緩沖區(qū),它和舊緩沖區(qū)指向同一塊內(nèi)存,但是從索引 start 到 end 的位置剪切。

實(shí)例:

var buffer1 = new Buffer('runoob');
// 剪切緩沖區(qū)
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString()); //buffer2 content: ru

希望本文所述對大家nodejs程序設(shè)計有所幫助。

相關(guān)文章

  • 利用nodeJs anywhere搭建本地服務(wù)器環(huán)境的方法

    利用nodeJs anywhere搭建本地服務(wù)器環(huán)境的方法

    今天小編就為大家分享一篇利用nodeJs anywhere搭建本地服務(wù)器環(huán)境的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 一文教你學(xué)會Nodejs中puppeteer的簡單使用

    一文教你學(xué)會Nodejs中puppeteer的簡單使用

    Puppeteer是一個控制headless Chrome的Node.js API ,是一個 Node.js庫,在瀏覽器中手動完成的大多數(shù)事情都可以通過使用 Puppeteer完成,本文主要介紹了Puppeteer的簡單使用,希望對大家有所幫助
    2024-01-01
  • Node.js如何實(shí)現(xiàn)注冊郵箱激活功能 (常見)

    Node.js如何實(shí)現(xiàn)注冊郵箱激活功能 (常見)

    今天了解了node如何實(shí)現(xiàn)郵箱激活功能,這個功能非常常見,當(dāng)我們注冊一個賬號時,肯定會有這步,下面看下如何實(shí)現(xiàn)這個功能
    2017-07-07
  • package.json配置文件構(gòu)成詳解

    package.json配置文件構(gòu)成詳解

    這篇文章主要介紹了package.json配置文件構(gòu)成以及相關(guān)知識點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 深入解析koa之異步回調(diào)處理

    深入解析koa之異步回調(diào)處理

    這篇文章主要介紹了深入解析koa之異步回調(diào)處理,我們研究一下koa當(dāng)中異步回調(diào)同步化寫法的原理,同樣的,我們也會實(shí)現(xiàn)一個管理函數(shù),是的我們能夠通過同步化的寫法來寫異步回調(diào)函數(shù)。,需要的朋友可以參考下
    2019-06-06
  • 使用Jasmine和Karma對AngularJS頁面程序進(jìn)行測試

    使用Jasmine和Karma對AngularJS頁面程序進(jìn)行測試

    這篇文章主要介紹了使用Jasmine和Karma對AngularJS頁面程序進(jìn)行測試的方法,以Node.js為環(huán)境,非常適合JavaScript的全棧開發(fā)時使用,需要的朋友可以參考下
    2016-03-03
  • nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實(shí)例代碼

    nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實(shí)例代碼,有需要的朋友們可以參考下。
    2020-01-01
  • Node.js之構(gòu)建WebSocket服務(wù)全過程

    Node.js之構(gòu)建WebSocket服務(wù)全過程

    這篇文章主要介紹了Node.js之構(gòu)建WebSocket服務(wù)全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Angularjs---項(xiàng)目搭建圖文教程

    Angularjs---項(xiàng)目搭建圖文教程

    下面小編就為大家?guī)硪黄狝ngularjs---項(xiàng)目搭建圖文教程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Node.js fs模塊原理及常見用途

    Node.js fs模塊原理及常見用途

    這篇文章主要介紹了Node.js fs模塊原理及常見用途,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10

最新評論

宣威市| 丹寨县| 都匀市| 安远县| 青田县| 丽江市| 布尔津县| 徐州市| 阳原县| 永川市| 横山县| 玉溪市| 遵义县| 和政县| 德安县| 凌云县| 扎鲁特旗| 临城县| 格尔木市| 彭山县| 鲁山县| 衡阳县| 龙江县| 崇礼县| 临泽县| 三明市| 湘阴县| 崇左市| 桐庐县| 闵行区| 易门县| 瑞昌市| 清远市| 体育| 潼关县| 宝坻区| 隆昌县| 云龙县| 宁河县| 当雄县| 平定县|