Vysvetlenie vyrovnávacej pamäte Node.js

Čo sú to nárazníky?

Binárna je jednoducho sada alebo zbierka 1a 0. Každé číslo v binárnom formáte, každé 1 a 0 v množine sa nazýva bit . Počítač prevádza údaje do tohto binárneho formátu na ukladanie a vykonávanie operácií. Nasleduje napríklad päť rôznych binárnych súborov:

10, 01, 001, 1110, 00101011

JavaScript nemá vo svojom jadre API údaje typu bytu. Na spracovanie binárnych údajov obsahuje Node.js implementáciu binárnej vyrovnávacej pamäte s globálnym modulom s názvom Buffer.

Vytvorenie vyrovnávacej pamäte

Existujú rôzne spôsoby, ako môžete vytvoriť vyrovnávaciu pamäť v Node.js. Môžete vytvoriť prázdnu medzipamäť s veľkosťou 10 bajtov.

const buf1 = Buffer.alloc(10);

Z reťazcov kódovaných UTF-8 je vytvorenie podobné tomuto:

const buf2 = Buffer.from('Hello World!');

Pri vytváraní vyrovnávacej pamäte existujú rôzne akceptované kódovania:

  • ascii
  • utf-8
  • base64:
  • latin1
  • binárne
  • hex

V API vyrovnávacej pamäte sú pridelené tri samostatné funkcie na použitie a vytváranie nových vyrovnávacích pamätí. Vo vyššie uvedených príkladoch sme videli alloc()a from(). Tretie je allocUnsafe().

const buf3 = Buffer.allocUnsafe(10);

Po vrátení môže táto funkcia obsahovať staré údaje, ktoré je potrebné prepísať.

Interakcie s pufrom

S Buffer API je možné nadviazať rôzne interakcie. Väčšinu z nich tu pokryjeme. Začnime konverziou medzipamäte na JSON.

let bufferOne = Buffer.from('This is a buffer example.'); console.log(bufferOne); // Output:  let json = JSON.stringify(bufferOne); console.log(json); // Output: {"type": "Buffer", "data": [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}

JSON určuje, že typ transformovaného objektu je vyrovnávacia pamäť a jeho údaje. Konverzia prázdneho bufferu na JSON nám ukáže, že neobsahuje nič iné ako nuly.

const emptyBuf = Buffer.alloc(10); emptyBuf.toJSON(); // Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Všimnite si, že Buffer API tiež poskytuje priamu funkciu toJSON()na prevod medzipamäte na objekt JSON. Na preskúmanie veľkosti medzipamäte môžeme použiť lengthmetódu.

emptyBuf.length; // Output: 10

Teraz preveďme vyrovnávaciu pamäť na čitateľný reťazec, v našom prípade kódovaný kód utf-8.

console.log(bufferOne.toString('utf8')); // Output: This is a buffer example.

.toString()štandardne prevádza vyrovnávaciu pamäť na reťazec formátu utf-8. Takto dekódujete vyrovnávaciu pamäť. Ak zadáte kódovanie, môžete previesť vyrovnávaciu pamäť na iné kódovanie

console.log(bufferOne.toString('base64'));

Viac informácií o nárazníkoch:

  • Potrebujete lepšie porozumieť vyrovnávacej pamäti v Node.js? Pozri na toto.