Izpratne par buferiem pakalpojumā Node.js

Izpratne par buferiem pakalpojumā Node.js
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Buferis ir noteikta vieta neapstrādātajā atmiņā. Tā kalpo kā pagaidu glabāšanas vieta liekajiem binārajiem datiem, kurus apstrādes iekārta konkrētajā brīdī nevar pieņemt.





Node.js ietver bufera klasi. Tas var apstrādāt bināros datus, pārvaldot TCP (Transfer Control Protocol) straumes un lasīšanas-rakstīšanas darbības failu sistēmā.





DIENAS VIDEO MAKEUSEOF

Uzziniet, kā izveidot, lasīt un mainīt bufera saturu.





Bufera izveide

Lai izveidotu buferi pakalpojumā Node.js, izmantojiet alloc() vai no () metodes. The alloc() metode izveido jaunu buferi, norādot tā lielumu izveides laikā kā pirmo un vienīgo nepieciešamo parametru. Tas ir noderīgi, ja bufera izveides laikā jums nav datu, ko uzglabāt.

Norādiet bufera lieluma parametru baitos, kad veidojat buferi ar alloc() metodi. Piemēram:



 const buf = Buffer.alloc(8); 
console.log(buf);
// output: <Buffer 00 00 00 00 00 00 00 00>

Bufera klase automātiski pievieno nulles kā viettura vērtības jauniem datiem, kad tos izveidojat ar alloc() metodi.

Bufera klase katru 0 vērtību izsaka kā 00 , izmantojot heksadecimālo formātu. Šajā piemērā tas satur kopumā astoņas vērtības.





Lai inicializētu buferi ar dažādām vietturu vērtībām, pagaidiet vienu sekundi aizpildīt parametrs:

 const buf_filled = Buffer.alloc(8, 5); 
console.log(buf_filled);
// output: <Buffer 05 05 05 05 05 05 05 05>

Šis objekts citē atmiņas daļu, kurā tiek saglabāti 8 vērtības baiti 05 . Ņemiet vērā, ka, lai gan jūs nodevāt numuru kā aizpildīt parametrs, buferi glabā datus tikai bināros.





Pēc atmiņas piešķiršanas buferim ierakstiet datus, zvanot uz rakstīt () metode:

 const buf = Buffer.alloc(8); 

buf.write("v", "utf-8");
console.log(buf)
// output: <Buffer 76 00 00 00 00 00 00 00>

buf.write("va","utf-8");
console.log(buf)
// output: <Buffer 76 61 00 00 00 00 00 00>

The rakstīt () metode izmanto rakstzīmju kodējumu, lai pārveidotu pirmo parametru, izmantojot utf-8 un pēc tam ieraksta virkni buferī. Pievienojot virknei otru rakstzīmi, otrais baits tiks aizpildīts.

kā nomainīt tīkla paroli Windows 10

Lai iegūtu datus no esošajiem datu tipiem, piemēram, virknēm vai masīviem, izmantojiet no () metodi. Šī metode veido buferus no virknēm un masīviem.

Piemēram:

nepietiek vietas Windows atjaunināšanai
 // String 
const stringBuf = Buffer.from('string')
console.log(stringBuf)
// output: <Buffer 73 74 72 69 6e 67>

// Array
const arrayBuf = Buffer.from([97, 114, 114, 97, 121], 'hex')
console.log(arrayBuf);
// output: <Buffer 61 72 72 61 79>

The no () metode izmanto ievadi kā savu pirmo parametru, aprēķina baitu skaitu, kas nepieciešams datu kodēšanai, un pēc tam nosūta rezultātu uz buferi. Iesniedzot citu kodēšanas formātu kā otro parametru, varat ignorēt noklusējuma kodējumu (UTF-8).

Ciparu nodošana uz no () metode radīs kļūdu.

Bufera lasīšana

Lai gan buferi ir līdzīgi masīviem, to izmērus nevar mainīt un ar tiem var tikt galā binārie datora dati pateicoties iebūvētajām metodēm.

Bufera klase ļauj mums nolasīt atsevišķus datu baitus, izmantojot JavaScript kvadrātiekavas sintaksi.

Piemēram:

 const myBuf = Buffer.from('Mine'); 
console.log(MyBuf[1]);
// output: 105

console.log(MyBuf[3]);
// output: 101

console.log(MyBuf[5]);
// output: undefined

Iepriekš minētajā koda blokā tiek izmantota kvadrātiekavas sintakse, lai iegūtu pirmā un trešā baita vērtības to decimāldaļās. Mēģinot iegūt nederīgu baitu, tiks parādīts nenoteikts kļūda.

Lai piekļūtu visiem datiem, bufera klasei ir metodes uz JSON() un toString() , kas iegūst saturu divos dažādos formātos.

The toString() metode izvada virkni kā bufera saturu:

 const myBuf = Buffer.from('Mine'); 
console.log(myBuf.toString());
// output: 'Mine'

const numberBuf = Buffer.from([123]);
console.log(numberBuf.toString())
// output: '{'

const emptyBuf = Buffer.alloc(5);
console.log(emptyBuf.toString());
// output: '\x00\x00\x00\x00\x00'

Pirmais zvans inicializē buferi ar vērtību ' Manējais ”, ko atkārto izsaukums uz toString. Otrajā piemērā inicializācijai tiek izmantots viena int masīvs, kuram ir virknes attēlojums kā ' { ” varonis. Pēdējā gadījumā buferis ar pieciem nulles vērtības atgriež virkni ' \x00\x00\x00\x00\x00 ”. Stīga \x00 ir nulles heksadecimālais attēlojums.