


Pengenalan terperinci kepada modul penimbalan dan penstriman dalam Node.js_node.js
Modul penimbal
js pada asalnya direka untuk penyemak imbas, jadi ia boleh mengendalikan rentetan yang dikodkan unikod dengan baik, tetapi ia tidak dapat mengendalikan data binari dengan baik. Ini adalah masalah dengan Node.js kerana Node.js direka untuk menghantar dan menerima data melalui rangkaian, selalunya dalam format binari. Contohnya:
- Hantar dan terima data melalui sambungan TCP;
- Baca data binari daripada imej atau fail dimampatkan;
- Baca dan tulis data daripada sistem fail
- Proses strim data binari daripada rangkaian
Modul Penampan membawa kaedah menyimpan data mentah ke Node.js, jadi data binari boleh digunakan dalam konteks js. Setiap kali anda perlu mengendalikan data yang dialihkan dalam operasi I/O dalam Node.js, adalah mungkin untuk menggunakan modul Penampan.
Kelas Penampan ialah jenis pembolehubah global yang digunakan untuk memproses data binari secara terus. Ia boleh dibina dalam pelbagai cara.
Data asal disimpan dalam contoh kelas Penampan. Contoh Penampan adalah serupa dengan tatasusunan integer
1.Penimbal(saiz) baharu: Peruntukkan penimbal baharu yang bersaiz 8-bit bait
2.new Buffer(array): Peruntukkan penimbal baharu menggunakan tatasusunan bait 8-bit
3.Penimbal baharu(str, [pengekodan]):pengekodan Jenis rentetan - kaedah pengekodan yang hendak digunakan, parameternya adalah pilihan.
4. Kaedah kelas: Buffer.isEncoding(encoding): Jika pengekodan yang diberikan adalah sah, kembalikan benar, jika tidak, kembalikan palsu.
6. Kaedah kelas: Buffer.concat(senarai, [totalLength]): senarai {Array} jenis tatasusunan, Tatasusunan Penampan, digunakan untuk disambungkan. totalLength {Number} type Jumlah saiz semua Penampan dalam tatasusunan Penampan di atas.
Selain membaca fail untuk mendapatkan contoh Penampan, ia juga boleh dibina secara langsung, contohnya:
Penampan dan rentetan boleh ditukar kepada satu sama lain Sebagai contoh, data binari boleh ditukar kepada rentetan menggunakan pengekodan yang ditentukan:
Kaedah .slice tidak mengembalikan Penampan baharu, tetapi lebih seperti mengembalikan penuding ke kedudukan di tengah Penampan asal, seperti yang ditunjukkan di bawah.
3. |.
4. bin bin.slice(2)
Ini akan menulis aksara "a" ke dalam penimbal, dan nod mengembalikan bilangan bait yang ditulis kepada penimbal selepas pengekodan UTF-8 bagi huruf a di sini menduduki 1 bait.
Salin penimbal
Node.js menyediakan kaedah untuk menyalin keseluruhan kandungan objek Buffer ke objek Buffer yang lain. Kami hanya boleh menyalin antara objek Penampan sedia ada, jadi ia mesti dibuat.
var buffer1 = new Buffer(8);
buffer1.write('selamat berkenalan dengan anda','utf8');
var buffer2 = new Buffer(8);
buffer1.copy(buffer2);
console.log(buffer2.toString());//selamat bertemu dengan anda
Modul strim
Dalam sistem pengendalian jenis UNIX, strim ialah konsep standard. Terdapat tiga aliran utama seperti berikut:
1.Input standard
2. Output standard
3. Ralat piawai
Strim boleh dibaca
Jika penimbal ialah cara Node.js mengendalikan data mentah, maka strim biasanya ialah cara Node.js mengalihkan data. Strim dalam Node.js sama ada boleh dibaca atau ditulis. Banyak modul dalam Node.js menggunakan strim, termasuk HTTP dan sistem fail.
Andaikan kami mencipta fail classesmates.txt dan membaca senarai nama daripadanya untuk menggunakan data ini. Memandangkan data ialah strim, ini bermakna anda boleh bertindak pada data bermula dari beberapa bait pertama sebelum anda selesai membaca fail Ini adalah corak biasa dalam Node.js:
var fs = memerlukan('fs');
var stream = fs.ReadStream('classmates.txt');
stream.setEncoding('utf8');
stream.on('data', fungsi (chunk) {
console.log('baca beberapa data')
});
stream.on('close', function () {
console.log('semua data dibaca')
});
Dalam contoh di atas, data peristiwa dicetuskan apabila data baharu diterima. Acara tutup dicetuskan apabila pembacaan fail selesai.
Strim boleh tulis
Jelas sekali, kami juga boleh mencipta strim boleh tulis untuk menulis data. Ini bermakna dengan skrip ringkas, anda boleh menggunakan strim untuk membaca ke dalam fail dan kemudian menulis ke fail lain:
var fs = memerlukan('fs');
var readableStream = fs.ReadStream('classmates.txt');
var writableStream = fs.writeStream('nama.txt');
readableStream.setEncoding('utf8');
readableStream.on('data', fungsi (chunk) {
writeableStream.write(chunk);
});
readableStream.on('tutup', fungsi () {
writeableStream.end();
});
Apabila peristiwa data diterima, data kini ditulis ke strim boleh tulis.
readable.setEncoding(encoding): return: this
readable.resume(): Sama seperti di atas. Kaedah ini membenarkan strim yang boleh dibaca untuk terus menembak peristiwa data.
readable.pause(): Sama seperti di atas. Kaedah ini menyebabkan strim dalam mod aliran berhenti menembak peristiwa data, bertukar kepada mod tidak mengalir dan meninggalkan data yang tersedia seterusnya dalam penimbal dalaman.
Kelas: strim.Boleh Ditulis
Antara muka strim Boleh Tulis ialah abstraksi data yang anda tulis kepada sasaran.
1.writable.write(chunk, [encoding], [callback]):
ketulan {String |. Buffer} Data untuk ditulis
pengekodan {String} pengekodan, jika potongan ialah rentetan
panggil balik {Function} panggil balik selepas blok data ditulis
Pengembalian: {Boolean} benar jika data telah diproses sepenuhnya.
Kaedah ini menulis data ke sistem asas dan memanggil panggilan balik yang diberikan selepas data diproses.
2.writable.cork(): Paksa semua tulisan kekal.
Data yang disimpan akan ditulis apabila .uncork() atau .end() dipanggil.
3.writable.end([chunk], [encoding], [callback])
potongan {String |. Buffer} pilihan, data untuk ditulis
pengekodan {String} pengekodan, jika potongan ialah rentetan
panggilan balik {Fungsi} pilihan, panggil balik selepas strim tamat
Memanggil write() selepas memanggil end() akan menghasilkan ralat.
// Tulis 'hello, ' dan akhiri dengan 'world!'
http.createServer(fungsi (req, res) {
res.write('hello, ');
res.end('dunia!');
// Tiada penulisan lanjut dibenarkan sekarang
});

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Artikel ini akan menerangkan secara terperinci bagaimana PHP memformat baris ke dalam CSV dan menulis penunjuk fail saya rasa ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan saya harap anda boleh memperoleh sesuatu selepas membaca artikel ini. Format baris ke CSV dan tulis ke penuding fail Langkah 1: Buka penuding fail $file=fopen("path/to/file.csv","w"); kepada rentetan CSV. Fungsi ini menerima parameter berikut: $fail: penuding fail $medan: medan CSV sebagai tatasusunan $pembatas: pembatas medan (pilihan) $kepungan: petikan medan (

Perkhidmatan Node yang dibina berdasarkan bukan sekatan dan dipacu peristiwa mempunyai kelebihan penggunaan memori yang rendah dan sangat sesuai untuk mengendalikan permintaan rangkaian besar-besaran. Di bawah premis permintaan besar-besaran, isu yang berkaitan dengan "kawalan memori" perlu dipertimbangkan. 1. Mekanisme kutipan sampah V8 dan had ingatan Js dikawal oleh mesin kutipan sampah

Artikel ini akan memberi anda pemahaman yang mendalam tentang memori dan pengumpul sampah (GC) enjin NodeJS V8 saya harap ia akan membantu anda!

Node 19 telah dikeluarkan secara rasmi Artikel ini akan memberi anda penjelasan terperinci tentang 6 ciri utama Node.js 19. Saya harap ia akan membantu anda!

Modul fail ialah enkapsulasi operasi fail asas, seperti membaca/menulis/membuka/menutup/memadam fail, dsb. Ciri terbesar modul fail ialah semua kaedah menyediakan dua versi **segerak** dan ** asynchronous**, dengan Kaedah dengan akhiran penyegerakan adalah semua kaedah penyegerakan, dan kaedah yang tidak semuanya adalah kaedah heterogen.

Memilih imej Docker untuk Node mungkin kelihatan seperti perkara remeh, tetapi saiz dan potensi kelemahan imej itu boleh memberi kesan yang ketara pada proses dan keselamatan CI/CD anda. Jadi bagaimana kita memilih imej Node.js Docker yang terbaik?

Bagaimanakah Node.js melakukan GC (pengumpulan sampah)? Artikel berikut akan membawa anda melaluinya.

Sebab mengapa nod tidak boleh menggunakan arahan npm adalah kerana pembolehubah persekitaran tidak dikonfigurasikan dengan betul Penyelesaiannya ialah: 1. Buka "Sistem Sifat"; 2. Cari "Pembolehubah Persekitaran" -> "Pembolehubah Sistem", dan kemudian edit persekitaran. pembolehubah; 3. Cari lokasi folder nodejs;
