Javascript在客戶端對于unicode編碼的數(shù)據(jù)操作支持非常友好,但是對二進(jìn)制數(shù)據(jù)的處理就不盡人意。Node.js為了能夠處理二進(jìn)制數(shù)據(jù)或非unicode編碼的數(shù)據(jù),便設(shè)計(jì)了Buffer類,該類實(shí)現(xiàn)了Uint8Array接口,并對其進(jìn)行了優(yōu)化,它的實(shí)例類似于整型數(shù)組,但是它的大小在創(chuàng)建后便不可調(diào)整。在介紹Buffer如何使用之前,先介紹幾個(gè)知識(shí)點(diǎn)。

1、V8引擎的內(nèi)存使用限制

V8引擎最大堆內(nèi)存使用在32位系統(tǒng)上默認(rèn)為512M,在64位系統(tǒng)上是1GB,雖然可以使用--max-old-space-size參數(shù)調(diào)整該值,但還是建議要用到大內(nèi)存的時(shí)候使用Buffer或Stream,因?yàn)锽uffer的內(nèi)存分配不在V8的堆上。

2、單個(gè)Buffer實(shí)例大小限制

單個(gè)Buffer實(shí)例的大小最大數(shù)值為1GB-1(32位系統(tǒng))或2GB-1(64位系統(tǒng)),所以在創(chuàng)建Buffer實(shí)例的時(shí)候不能超過該值,或者使用readFile()方法讀取大文件,否則將拋出RangeError錯(cuò)誤。

3、8KB池

Nodejs在創(chuàng)建Buffer實(shí)例的時(shí)候,當(dāng)用戶申請的空間大于8KB,會(huì)直接調(diào)用內(nèi)部的createUnsafeBuffer()方法創(chuàng)建一個(gè)Buffer,如果申請的空間大于0且小于4KB,新的Buffer則會(huì)建立在當(dāng)前的8kb SLAB上,并更新剩余空間,如下圖所示:
seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

下面介紹Buffer API的簡單使用:
1、創(chuàng)建Buffer實(shí)例
使用Buffer.from(), Buffer.alloc(), Buffer.allocUnsafe()等方法來創(chuàng)建一個(gè)Buffer實(shí)例,6.0版本以前直接使用構(gòu)造函數(shù)創(chuàng)建的方法

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式