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

青灯夜游
リリース: 2021-07-28 18:41:37
転載
1914 人が閲覧しました

この記事では、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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!