Šta su Baferi (eng. Buffers)?

Kada radimo s podacima koji se prenose preko mreže ili kada čitamo i pišemo datoteke na disku, često se susrećemo sa podacima koji nisu odmah dostupni u celosti. Bufferi su privremena skladišta za podatke dok se oni premeštaju iz jednog mesta u drugo. Bufferi omogućavaju da se ovi podaci akumuliraju i obrađuju u delovima, čime se efikasno upravlja memorijom i brzinom obrade. Baferi su praktično nizovi bajtova (pročitajte više o binarnim brojevima u okviru članka “Binarni sistem”).

Baferi se koriste u različitim situacijama:

  1. Upravljanje Protokom Podataka:

    Baferi si koriste kada server prima podatke brže nego što ih može obraditi i tada se baferi koriste je mogu privremeno čuvati te podatke dok server ne stigne da ih obradi.

  2. Poboljšanje Performansi:

    Korišćenjem bafera, program može nastaviti sa radom bez čekanja da se svaki komad podataka potpuno obradi. To može značajno poboljšati performanse aplikacija, posebno u mrežnim operacijama gde su latencija i brzina prenosa ključni faktori.

  3. Asinhrono Programiranje:

    Baferi su ključni u asinhronom programiranju, omogućavajući aplikacijama da obavljaju operacije ulaza/izlaza (I/O) bez blokiranja. To znači da server može efikasno upravljati višestrukim zahtevima istovremeno, čineći ga sposobnim da opslužuje više korisnika bez usporavanja.

baffer

Buffers u Node.js-u

Buffer je klasa u Node.js-u dizajnirana za rad sa binarnim podacima. Omogućava direktno čitanje iz i pisanje u memoriju, što je mnogo brže i efikasnije za binarne podatke nego korišćenje stringova.U modernim verzijama Node.js-a, nije potrebno koristiti require za pozivanje Buffer objekta. Buffer je globalni objekat u Node.js, što znači da je automatski dostupan u svakom fajlu bez potrebe za eksplicitnim uvozom. Ovo olakšava rad sa binarnim podacima jer možete direktno koristiti Buffer metode.

Primer

U Node.js, bufferi se koriste za rad sa binarnim podacima. To znači da svaki element u bufferu predstavlja jedan bajt podataka. Bufferi su ključni kada radimo sa bilo kakvim binarnim podacima, kao što su multimedijalni fajlovi (slike, video, audio), jer omogućavaju efikasno upravljanje tim podacima.

Kreiranje buffera

Buffer možemo kreirati na nekoliko načina:

  • Buffer.from(): Kreira buffer iz postojećih podataka, kao što je string.
  • Buffer.alloc(): Kreira prazan buffer određene veličine, sa inicijalizovanim podacima.
  • Buffer.allocUnsafe(): Slično kreira buffer određene veličine, ali bez inicijalizacije podataka.
Primer kreiranja bafera

Prvi način kreira buffer određene veličine, drugi kreira buffer iz stringa, a treći kreira buffer iz niza brojeva.

Nakon kreiranja, buffer možemo koristiti za čuvanje ili manipulaciju binarnim podacima.

Čitanje i pisanje bafera

Možete da čitate i pišete u buffere koristeći metode kao što su buf.write() i buf.toString().

Primer

Na primer, da napišete string u buffer i zatim ga pročitate:

Ovo će ispisati “hello” u konzoli, prevedeno iz binarnog formata koji je bio sačuvan u bufferu.

Primer korišćenja za konverzije

U Node.js-u, Buffers često koristimo za konvertovanje binarnih podataka u heksadecimalne stringove ili za rad sa različitim kodiranjima znakova.

Maksimalna veličina buffer-a u Node.js
Veličina buffera zavisi od verzije Node.js-a i arhitekture sistema na kojem se izvršava (32-bitni ili 64-bitni). U novijim verzijama Node.js-a, na 64-bitnim sistemima, maksimalna veličina buffer-a može biti do oko 2GB (gigabajta). Ovo ograničenje je postavljeno zbog ograničenja u V8 JavaScript motoru koji Node.js koristi. Da budemo precizniji, treba napomenuti da se maksimalna veličina može razlikovati u zavisnosti od verzije V8 motora i specifičnih izmena koje Node.js tim može implementirati. Stoga, ako radite s vrlo velikim bufferima i blizu ste granici onoga što V8 može da rukuje, preporučuje se da proverite najnoviju dokumentaciju Node.js-a ili testirate u vašem specifičnom okruženju.

Podelite:

Ostavite komentar