ホームページ  >  記事  >  ウェブフロントエンド  >  Node.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?

Node.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?

青灯夜游
青灯夜游転載
2021-07-28 18:41:371930ブラウズ

この記事では、node.js の Buffer オブジェクトについて紹介し、Buffer オブジェクトの使用シナリオとその利点について説明します。

Node.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?

Buffer オブジェクトは Node のコア モジュールです。これは面接でよく聞かれるテスト質問でもあります。詳しく調べないと、はい、面接官がさらに詳しく質問してしまうと、それは不可能になる可能性があります。とにかく、当時の私は次のように答えるしかありませんでした。Buffer モジュールは、現在のビジネスに関連して使用されることはほとんどありませんが、Buffer オブジェクトは、文字列送信では満足できない一部のビジネス機能とパフォーマンスを効果的に最適化できます。 [推奨学習:「nodejs チュートリアル 」]

それでは、今日は Buffer オブジェクトについて学びましょう。

Buffer オブジェクト

Buffer オブジェクトは、固定長のバイト シーケンスを表すために使用されます

// 创建一个长度为 10、以零填充的 Buffer。
const buf1 = Buffer.alloc(10);

// 创建一个长度为 10 的 Buffer,
// 其中全部填充了值为 `1` 的字节。
const buf2 = Buffer.alloc(10, 1);

var str="hello Jasen"; 
var buf = new Buffer.from(str,'utf-8');
console.log(buf);

//输出:<Buffer 68 65 6c 6c 6f 20 4a 61 73 65 6e>

出力結果を観察します, Buffer Objectは配列のようなものです。

Buffer オブジェクトの各要素は 2 桁の 16 進数 (つまり、0 ~ 255 の値) です。

Buffer の要素に割り当てられた値が 0 未満の場合256、0~255の範囲の値が得られるまで順次加算されます 255より大きい場合は、0~255の範囲の値が得られるまで256を1つずつ減算します。小数なので直接四捨五入されます。

利用シーン

  • 大量のバイナリデータの処理に使用可能
  • 画像処理、ファイル受信およびアップロード、ネットワーク プロトコル 待機

#利点

ネットワーク送信時のパフォーマンスの向上

文字列のほとんどはネットワーク送信中に使用されるため、必然的にバイナリモードでのデータ送信用のバッファに変換する必要があります。送信前に直接 Buffer に変換すると、送信プロセス中に追加の変換を行う必要がなくなり、損失が回避され、パフォーマンスが向上します。

以下は ab によるパフォーマンス テストであり、200 の同時クライアント リクエストを開始した結果です。QPS の向上はそれほど高くはありませんが、それでもわずかな改善はあります。コードをコピーして実行できます。結果が私と同じかどうかを確認してください。

Node.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?

Node.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?

var http = require(&#39;http&#39;);
var str = "";

for (var i = 0; i < 1024 * 10; i++) {
    str += "a";
}

str = new Buffer.from(str,&#39;utf-8&#39;);

http.createServer(function (req, res) {
    res.writeHead(200);
    res.end(bufstr);
}).listen(8002);

バッファとストリーム

ストリームは Node のコア モジュールでもあります。データは水のようなものです。ストリームは入力デバイスと出力デバイスを抽象化したものです。開始点と終了点を持つ順序付けされたバイト データ送信メソッドのセットです。

Node.js には 4 つの基本的なストリーム タイプがあります。

    Writable - データを書き込むことができるストリーム (fs.createWriteStream() など)
  • Readable - データを読み取ることができるストリーム (例: fs.createReadStream())。
  • Duplex - 読み取りおよび書き込み可能なストリーム (例: net.Socket)。
  • 変換 - 読み取りおよび書き込みプロセス中にデータを変更または変換できる
  • Duplex ストリーム
シナリオ:

ファイルのアップロードとダウンロードたとえば、映画をダウンロードするときに、ダウンロードしながら視聴できる、そんな実装プロセスです。

元のアドレス: https://juejin.cn/post/6955490895131066382

プログラミング関連の知識の詳細については、こちらをご覧ください:

プログラミング入門! !

以上がNode.jsのBufferオブジェクトとは何ですか?使用シナリオは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。