node js(五)

2818 ワード

Buffer
  • バッファローの紹介
  • JavaScript言語には、バイナリデータストリームの読み取りまたは操作のための機構がありません.Bufferクラスは、Node.js APIの一部として導入されたものであり、TCP(接続向け、信頼性の高い、バイトベースのトランスポート層通信プロトコル)ストリーム、ファイルシステム動作、および他のコンテキストで8ビットのバイトストリームと相互作用するために使用され、または、2進データストリームを処理するために理解され得る.
  • Buffer.alloc
  • によって作成されたバッファは初期化されています.すべての項目は
  • に00で充填されます.
  • 例:
  • let buf1 = Buffer.alloc(6);
    //     6    
    console.log(buf1);
    // 
    
  • Buffer.alloc Unisafe
  • によって作成されたBufferは初期化されていません.メモリに空きがあればそのまま「捕まえて」
  • を使用します.
  • 例:
  • let buf2 = Buffer.allocUnsafe(6);
    //     6    
    console.log(buf2);
    // 
    
  • Buffer.allocUnisafeはバッファerを作成し、メモリの割り当てが非常に速いが、割り当てられたメモリセグメントは潜在的な敏感なデータを含む可能性があり、明らかな性能優勢があると同時に、安全ではないので、注意して使用する必要があります.
  • Buffer.from
  • は、3つの方法をサポートしています.
  • の第一パラメータは文字列であり、第二パラメータは文字コードであり、ASCIIUTF-8Base64などである.
  • は1つの配列に入ってきました.配列の各項目は16進数でバッファerの各項目として保存されます.
  • は、Bufferの各アイテムを新たにBufferに返すために導入されます.
  • 例:
  • //           
    let buf = Buffer.from("hello", "utf8");
    
    console.log(buf); // 
    
    //    
    
    //          
    let buf = Buffer.from([1, 2, 3]);
    
    console.log(buf); // 
    //           
    let buf = Buffer.from([0xe4, 0xbd, 0xa0, 0xe5, 0xa5, 0xbd]);
    
    console.log(buf); // 
    console.log(buf.toString("utf8")); //   
    
  • は、NodeJSではGB2312コードに対応していません.デフォルトはUTF-8をサポートしています.GB2312では漢字1文字が2バイトを占めています.一方、UTF-8では漢字1文字が3バイトを占めていますので、上の「こんにちは」のBufferは6個の16進数で構成されています.
  • 例:
  • //              
    let buf = Buffer.from(["1", "2", "3"]);
    
    console.log(buf); // 
    
  • から入力された配列のメンバは、任意の進数の値であってもよく、メンバが文字列である場合、値が数値である場合、自動的に数値タイプと識別され、値が数字でない場合、またはメンバーが他の非数値タイプのデータである場合、メンバは00に初期化される.作成されたBufferは、toString方式で符号化を直接指定して変換することができ、デフォルトの符号化はUTF-8
  • である.
  • がバッファローに伝えられました.
  • 例:
  • //      Buffer
    let buf1 = Buffer.from("hello", "utf8");
    
    let buf2 = Buffer.from(buf1);
    
    console.log(buf1); // 
    console.log(buf2); // 
    console.log(buf1 === buf2); // true
    console.log(buf1[0] === buf2[0]); // false
    
  • は、入ってきたパラメータがバッファーであるとき、新しいバッファーを作成し、上の各メンバを複製する.
  • Bufferは参照タイプであり、Bufferは別のBufferのメンバーをコピーしています.Buffer複製のメンバーが変更されると、他のBuffer対応のメンバーは同じ参照を指すので、「二次元配列」に似ています.
  • 例:
  • // Buffer       
    let arr1 = [1, 2, [3]];
    let arr2 = arr1.slice();
    
    arr2[2][0] = 5;
    console.log(arr1); // [1, 2, [5]]