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

Node.js 緩沖區(qū)(Buffer)模塊的方法及實(shí)例分析

 更新時(shí)間:2022年01月06日 08:38:05   作者:青燈夜游  
在本篇文章里小編給大家整理了一篇關(guān)于Node.js 緩沖區(qū)(Buffer)模塊的方法及實(shí)例分析,對(duì)此有興趣的朋友們可以跟著學(xué)習(xí)下。

二進(jìn)制流是大量的二進(jìn)制數(shù)據(jù)的集合。由于通常情況下二進(jìn)制流的大小挺大的,因此二進(jìn)制流一般不會(huì)一起運(yùn)送,而會(huì)在運(yùn)輸前切分成小塊然后逐一發(fā)送。

當(dāng)數(shù)據(jù)處理單元暫時(shí)不再接收其他數(shù)據(jù)流時(shí),剩余的數(shù)據(jù)將會(huì)被保留在緩存中,直到數(shù)據(jù)處理單元準(zhǔn)備好接收更多數(shù)據(jù)為止。

Node.js 服務(wù)器一般需要在文件系統(tǒng)中進(jìn)行讀寫,而文件在存儲(chǔ)層面而言其實(shí)都是二進(jìn)制流。除此之外,Node.js 還能與 TCP 流一起使用,讓 TCP 流在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流保障通信。

發(fā)送給接收者的數(shù)據(jù)流會(huì)被緩沖,直到接收者準(zhǔn)備接收更多要處理的數(shù)據(jù)為止。這就是 Node.js 處理臨時(shí)數(shù)據(jù)部分的工作內(nèi)容 —— 在 V8 引擎外部管理和存儲(chǔ)二進(jìn)制數(shù)據(jù)。

讓我們一起深入緩沖區(qū)(Buffer)的各種使用方法,了解更多有關(guān)它們的信息以及一起學(xué)習(xí)如何在 Node.js 程序中使用它們吧。

Node.js Buffer 的方法

Node.js 緩沖模塊的最大優(yōu)勢(shì),其實(shí)就是它是內(nèi)置于 Node.js 中的,因此我們可以在任何我們想要使用它的地方使用它。

讓我們一起瀏覽一些重要的 Node.js 緩沖模塊的方法吧。

Buffer.alloc()

此方法將創(chuàng)建一個(gè)新的緩沖區(qū),但是分配的大小不是固定的。當(dāng)我們調(diào)用此方法時(shí),可以自行分配大?。ㄒ宰止?jié)為單位)。

const buf = Buffer.alloc(6)  // 這會(huì)創(chuàng)建一個(gè) 6 字節(jié)的緩沖區(qū)
console.log(buf) // <Buffer 00 00 00 00 00 00>

Buffer.byteLength()

如果我們想要獲取緩沖區(qū)的長度,我們只需調(diào)用 Buffer.byteLength() 就行了。

var buf = Buffer.alloc(10)
var buffLen = Buffer.byteLength(buf) // 檢查緩沖區(qū)長度
 
console.log(buffLen) // 10

Buffer.compare()

通過使用 Buffer.compare() 我們可以比較兩個(gè)緩沖區(qū),此方法的返回值是 -1,0,1 中的一個(gè)。

譯者注:buf.compare(otherBuffer); 這一句調(diào)用會(huì)返回一個(gè)數(shù)字 -1,0,1,分別對(duì)應(yīng) buf 在 otherBuffer 之前,之后或相同。

var buf1 = Buffer.from('Harsh')
var buf2 = Buffer.from('Harsg')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會(huì)打印 0
 
var buf1 = Buffer.from('a')
var buf2 = Buffer.from('b')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會(huì)打印 -1
 
 
var buf1 = Buffer.from('b')
var buf2 = Buffer.from('a')
var a = Buffer.compare(buf1, buf2)
console.log(a) // 這會(huì)打印 1

Buffer.concat()

顧名思義,我們可以使用此函數(shù)連接兩個(gè)緩沖區(qū)。當(dāng)然,就像字符串一樣,我們也可以連接兩個(gè)以上的緩沖區(qū)。

var buffer1 = Buffer.from('x')
var buffer2 = Buffer.from('y')
var buffer3 = Buffer.from('z')
var arr = [buffer1, buffer2, buffer3]
 
console.log(arr)
/* buffer, !concat [ <Buffer 78>, <Buffer 79>, <Buffer 7a> ] */
 
// 通過 Buffer.concat 方法連接兩個(gè)緩沖區(qū)
var buf = Buffer.concat(arr)
 
console.log(buf)
// <Buffer 78 79 7a> concat successful

Buffer.entries()

Buffer.entries() 會(huì)用這一緩沖區(qū)的內(nèi)容創(chuàng)建并返回一個(gè) [index, byte] 形式的迭代器。

var buf = Buffer.from('xyz')
 
for (a of buf.entries()) {
    console.log(a)
    /* 這個(gè)會(huì)在控制臺(tái)輸出一個(gè)有緩沖區(qū)位置與內(nèi)容的字節(jié)的數(shù)組 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */
}

Buffer.fill()

我們可以使用 Buffer.fill() 這個(gè)函數(shù)將數(shù)據(jù)插入或填充到緩沖區(qū)中。更多信息請(qǐng)參見下文。

const b = Buffer.alloc(10).fill('a')
 
console.log(b.toString())
// aaaaaaaaaa

Buffer.includes()

像字符串一樣,它將確認(rèn)緩沖區(qū)是否具有該值。我們可以使用 Buffer.includes() 方法來實(shí)現(xiàn)這一點(diǎn),給定方法根據(jù)搜索返回一個(gè)布爾值,即 true 或 false。

const buf = Buffer.from('this is a buffer')
console.log(buf.includes('this'))
// true
 
console.log(buf.includes(Buffer.from('a buffer example')))
// false

Buffer.isEncoding()

我們可能知道二進(jìn)制文件必須進(jìn)行編碼,那么如果我們要檢查數(shù)據(jù)類型是否支持字符編碼該怎么辦呢?我們可以使用 Buffer.isEncoding() 方法進(jìn)行確認(rèn)。如果支持,它將返回 true。

console.log(Buffer.isEncoding('hex'))
// true
 
console.log(Buffer.isEncoding('utf-8'))
// true
 
console.log(Buffer.isEncoding('utf/8'))
// false
 
console.log(Buffer.isEncoding('hey'))
// false

Buffer.slice()

buf.slice() 將用于使用緩沖區(qū)的選定元素創(chuàng)建一個(gè)新緩沖區(qū) —— 對(duì)緩沖區(qū)進(jìn)行切割時(shí),將創(chuàng)建一個(gè)新緩沖區(qū),其中包含要在新緩沖區(qū)切片中找到的項(xiàng)目的列表。

var a = Buffer.from('uvwxyz');
var b = a.slice(2, 5);
 
console.log(b.toString());
// wxy

Buffer.swapX()

Buffer.swapX() 用于交換緩沖區(qū)的字節(jié)順序。使用 Buffer.swapX() (此處 X 可以為 16, 32, 64)來交換 16 位,32 位和 64 位緩沖區(qū)對(duì)象的字節(jié)順序。

const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])
console.log(buf1)
// <Buffer 01 02 03 04 05 06 07 08>
 
// 交換 16 位字節(jié)順序
buf1.swap16()
console.log(buf1)
// <Buffer 02 01 04 03 06 05 08 07>
 
// 交換 32 位字節(jié)順序
buf1.swap32()
console.log(buf1)
// <Buffer 03 04 01 02 07 08 05 06>
 
// 交換 64 位字節(jié)順序
buf1.swap64()
console.log(buf1)
// <Buffer 06 05 08 07 02 01 04 03>

Buffer.json()

它可以幫助我們從緩沖區(qū)創(chuàng)建 JSON 對(duì)象,而該方法將返回 JSON 緩沖區(qū)對(duì)象,

const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
 
console.log(buf.toJSON());
// {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}

結(jié)論

如果我們需要進(jìn)一步了解并使用 Node.js 的緩沖區(qū),我們需要對(duì)緩沖區(qū)以及 Node.js 緩沖區(qū)的工作原理有更扎實(shí)的基礎(chǔ)知識(shí)。我們還應(yīng)該了解為什么我們需要使用 Node.js 緩沖區(qū)和各種 Node.js 緩沖區(qū)方法的使用。

到此這篇關(guān)于Node.js 緩沖區(qū)(Buffer)模塊的方法及實(shí)例分析的文章就介紹到這了,更多相關(guān)Node.js 緩沖區(qū)(Buffer)模塊的重要方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • npm報(bào)錯(cuò):無法將"npm"項(xiàng)識(shí)別為cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱

    npm報(bào)錯(cuò):無法將"npm"項(xiàng)識(shí)別為cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱

    這篇文章主要給大家介紹了關(guān)于npm報(bào)錯(cuò):無法將"npm"項(xiàng)識(shí)別為cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • node.js中的fs.fstat方法使用說明

    node.js中的fs.fstat方法使用說明

    這篇文章主要介紹了node.js中的fs.fstat方法使用說明,本文介紹了fs.fstat的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    npm 是 Node.js 的模塊依賴管理工具。作為開發(fā)者使用的工具,主要解決開發(fā) Node.js 時(shí)會(huì)遇到的問題。如同 RubyGems 對(duì)于 Ruby 開發(fā)者和 Maven 對(duì)于 Java 開發(fā)者的重要性,npm 對(duì)與 Node.js 的開發(fā)者和社區(qū)的重要性不言而喻。
    2014-07-07
  • node中使用log4js4.x版本記錄日志的方法

    node中使用log4js4.x版本記錄日志的方法

    這篇文章主要介紹了node中使用log4js4.x版本記錄日志的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)

    三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)

    這篇文章主要介紹了三步教你用Node做一個(gè)微信哄女友神器(面向小白),用node和wechaty微信網(wǎng)頁接口開發(fā)的一款小工具,可以定時(shí)給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句,通過配置機(jī)器人api后還可以實(shí)現(xiàn)微信機(jī)器人自動(dòng)陪女朋友聊天,需要的朋友可以參考下
    2019-06-06
  • node.js中的fs.lstat方法使用說明

    node.js中的fs.lstat方法使用說明

    這篇文章主要介紹了node.js中的fs.lstat方法使用說明,本文介紹了fs.lstat的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js如何提取文件中的中文字符

    Node.js如何提取文件中的中文字符

    這篇文章主要介紹了Node.js如何提取文件中的中文字符,本文介紹了在Node.js開發(fā)中如何使用代碼提取文件中的中文字符,幫助開發(fā)者更好地處理中文文本數(shù)據(jù),提高開發(fā)效率
    2023-05-05
  • Ubuntu安裝Node.js的2種方式

    Ubuntu安裝Node.js的2種方式

    這篇文章主要給大家介紹了關(guān)于Ubuntu安裝Node.js的2種方式,在Ubuntu系統(tǒng)上安裝Node.js和npm非常簡單,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Node的事件處理和readline模塊詳解

    Node的事件處理和readline模塊詳解

    這篇文章主要為大家詳細(xì)介紹了Node的事件處理和readline模塊,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Node.js中MongoDB插入數(shù)據(jù)的實(shí)現(xiàn)方法

    Node.js中MongoDB插入數(shù)據(jù)的實(shí)現(xiàn)方法

    在Node.js中,可以使用MongoDB原生驅(qū)動(dòng)或Mongoose庫來連接和操作MongoDB數(shù)據(jù)庫,本文就來介紹一下Node.js中MongoDB插入數(shù)據(jù)的實(shí)現(xiàn)方法,感興趣的可以了解一下
    2023-12-12

最新評(píng)論

岳阳县| 五原县| 视频| 嘉峪关市| 上虞市| 嘉善县| 互助| 新安县| 长海县| 正宁县| 江阴市| 合江县| 安宁市| 嘉黎县| 页游| 安吉县| 青浦区| 天镇县| 河津市| 漳州市| 河津市| 汝州市| 兰州市| 沙河市| 山丹县| 德州市| 衡水市| 武胜县| 天台县| 石林| 光泽县| 自贡市| 伊川县| 曲松县| 来安县| 永宁县| 广宁县| 鹰潭市| 赤峰市| 贵阳市| 盐边县|