ホームページ >ウェブフロントエンド >jsチュートリアル >NodeJS の Buffer の簡単な分析
関連する推奨事項: 「node js チュートリアル 」
Node を使い始めるために、Pu Ling の Nine Lights and One Deep NodeJS を読みました。 , Park Dada の本では実践についてはほとんど語られておらず、原則の説明に多くのスペースが割かれています。非常に多くの原則を聞いた後、彼は後にフロントエンド エンジニアリングの分野で NodeJS を使い始めましたが、あらゆるところで妨げられました。理由を要約すると、彼は次のように発見しました。 NodeJS の難しい部分は、ファイルとファイルにすぎないということです。ネットワーク、ファイル操作、およびネットワークはすべて、非常に重要なオブジェクトであるストリームに依存しています。これは、まさに Park が著書で言及していないことです。
Buffer Park Dada が本の中で言及しましたが、ストリームは実際にバッファを処理しているため、まだ簡単に要約する必要があります。
Buffer.from(array): 指定されたバイトのコピーを含むバッファを返します。配列内の各項目はオクテットを表す数値であるため、値は 0 ~ 255 の間である必要があります。それ以外の場合は、モジュロになります。
// 0x 表示 16 进制 Buffer.from([1, 2, 3]) // [0x1, 0x2, 0x3] Buffer.from('test', 'utf-8') // [0x74, 0x65, 0x73, 0x74] Buffer.alloc(5, 1) // [0x1, 0x1, 0x1, 0x1, 0x1] Buffer.allocUnsafe(5); // 值不确定,后面详谈# などのメソッドで埋める必要があります。
よりも高速に実行されます。名前を見ると安全ではありませんし、実際に安全ではありません。 Buffer.allocUnsafe()
が呼び出されたとき、割り当てられたメモリ セグメントは初期化されていない (ゼロに戻されていない) ため、メモリ割り当て速度は非常に遅くなりますが、割り当てられたメモリ セグメントは古いデータが含まれている可能性があります。これらの古いデータを上書きして使用しないと、メモリリークが発生する可能性がありますので、高速ではありますが、使用は避けてください。
エンコーディング
Buffer.from(string [, encoding])同時に、Buffer インスタンスには、Buffer を文字列に変換する toString メソッドもあります
buf.toString([encoding[, start[, end]]])Buffer splicing
Buffer.concat(list[, totalLength])
const buf = Buffer.from('中文字符串!'); for(let i = 0; i < buf.length; i+=5){ var b = Buffer.allocUnsafe(5); buf.copy(b, 0, i); console.log(b.toString()); }結果には文字化けがあることがわかります
const StringDecoder = require('string_decoder').StringDecoder; const decoder = new StringDecoder('utf8'); const buf = Buffer.from('中文字符串!'); for(let i = 0; i < buf.length; i+=5){ var b = Buffer.allocUnsafe(5); buf.copy(b, 0, i); console.log(decoder.write(b)); }StringDecoder in エンコーディングを取得すると、UTF-8 ではワイド バイトが 3 バイトを占めることがわかります。そのため、最後に不完全なバイトを処理すると、2 回目の write() まで保持されます。現在、処理できるのは UTF-8、Base64、UCS-2/UTF-16LE のみです。 Buffer 他の一般的に使用される API
プログラミング関連の知識については、プログラミング ビデオ##を参照してください。 #! !
以上がNodeJS の Buffer の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。