ノードバッファ

ノードバッファとは何か、それらが何に使用されるか、それらを使用する方法を学ぶ

バッファとは何ですか?

バッファはメモリの領域です。 JavaScript開発者はこの概念に精通しておらず、毎日メモリと対話するC、C ++、またはGo開発者(またはシステムプログラミング言語を使用するプログラマー)よりもはるかに少ないです。

これは、V8 JavaScriptエンジンの外部に割り当てられた固定サイズのメモリチャンク(サイズ変更できません)を表します。

バッファは整数の配列のように考えることができ、それぞれが1バイトのデータを表します。

それはノードによって実装されますバッファクラス

なぜバッファが必要なのですか?

バッファは、従来はバイナリではなく文字列のみを処理していたエコシステムで、開発者がバイナリデータを処理するのを支援するために導入されました。

バッファはと深く関連していますストリーム。ストリームプロセッサは、ダイジェストできるよりも速くデータを受信すると、データをバッファに入れます。

バッファの単純な視覚化は、YouTubeビデオを視聴していて、赤い線が視覚化ポイントを超えている場合です。つまり、データを表示しているよりも速くダウンロードし、ブラウザがバッファリングします。

バッファの作成方法

バッファは、を使用して作成されますBuffer.from()Buffer.alloc()、およびBuffer.allocUnsafe()メソッド。

const buf = Buffer.from('Hey!')

サイズを渡してバッファを初期化することもできます。これにより、1KBのバッファーが作成されます。

const buf = Buffer.alloc(1024)
//or
const buf = Buffer.allocUnsafe(1024)

バッファの使用

バッファの内容にアクセスする

バイトの配列であるバッファには、配列のようにアクセスできます。

const buf = Buffer.from('Hey!')
console.log(buf[0]) //72
console.log(buf[1]) //101
console.log(buf[2]) //121

これらの番号は、バッファ位置の文字を識別するUnicodeコードです(H => 72、e => 101、y => 121)

を使用して、バッファの全内容を印刷できます。toString()方法:

console.log(buf.toString())

サイズを設定する数値でバッファを初期化すると、空のバッファではなく、ランダムデータを含む事前に初期化されたメモリにアクセスできることに注意してください。

バッファの長さを取得する

使用lengthプロパティ:

const buf = Buffer.from('Hey!')
console.log(buf.length)

バッファの内容を繰り返し処理します

const buf = Buffer.from('Hey!')
for (const item of buf) {
  console.log(item) //72 101 121 33
}

バッファの内容を変更する

を使用して、データの文字列全体をバッファに書き込むことができます。write()方法:

const buf = Buffer.alloc(4)
buf.write('Hey!')

配列構文を使用してバッファーにアクセスできるのと同じように、同じ方法でバッファーの内容を設定することもできます。

const buf = Buffer.from('Hey!')
buf[1] = 111 //o
console.log(buf.toString()) //Hoy!

バッファをコピーする

バッファのコピーは、copy()方法:

const buf = Buffer.from('Hey!')
let bufcopy = Buffer.alloc(4) //allocate 4 bytes
buf.copy(bufcopy)

デフォルトでは、バッファ全体をコピーします。さらに3つのパラメーターを使用して、開始位置、終了位置、および新しいバッファー長を定義できます。

const buf = Buffer.from('Hey!')
let bufcopy = Buffer.alloc(2) //allocate 2 bytes
buf.copy(bufcopy, 0, 2, 2)
bufcopy.toString() //'He'

バッファーをスライスする

バッファの部分的な視覚化を作成する場合は、スライスを作成できます。スライスはコピーではありません。元のバッファは依然として信頼できる情報源です。それが変わると、スライスも変わります。

使用slice()それを作成する方法。最初のパラメーターは開始位置であり、オプションの2番目のパラメーターを終了位置で指定できます。

const buf = Buffer.from('Hey!')
buf.slice(0).toString() //Hey!
const slice = buf.slice(0, 2)
console.log(slice.toString()) //He
buf[1] = 111 //o
console.log(slice.toString())

私の無料ダウンロードNode.jsハンドブック


その他のノードチュートリアル: