Artikel ini akan berkongsi dengan anda panduan lengkap untuk penimbal Node.js dan membincangkan beberapa kaedah penting modul penimbal (Penimbal) Node Saya harap ia akan membantu semua orang.
Strim binari ialah koleksi besar data binari. Oleh kerana saiz aliran binari biasanya agak besar, aliran binari biasanya tidak dihantar bersama, tetapi dibahagikan kepada ketulan kecil sebelum dihantar dan dihantar satu demi satu.
Apabila unit pemprosesan data berhenti menerima aliran data lain buat sementara waktu, data yang selebihnya akan disimpan dalam cache sehingga unit pemprosesan data bersedia untuk menerima lebih banyak data.
Node.js Pelayan secara amnya perlu membaca dan menulis dalam sistem fail, dan fail sebenarnya adalah strim binari pada tahap storan. Selain itu, Node.js juga boleh digunakan dengan strim TCP, membolehkan strim TCP menyediakan strim bait hujung ke hujung yang boleh dipercayai untuk memastikan komunikasi melalui rangkaian Internet yang tidak boleh dipercayai.
Strim data yang dihantar kepada penerima ditimbal sehingga penerima bersedia untuk menerima lebih banyak data untuk diproses. Inilah yang dilakukan oleh bahagian data sementara Node.js - mengurus dan menyimpan data binari di luar enjin V8.
Mari kita mendalami pelbagai kegunaan penimbal (Buffer
), ketahui lebih lanjut tentangnya dan ketahui cara menggunakannya dalam program Node.js.
Kelebihan terbesar modul penimbal Node.js ialah ia terbina dalam Node.js, jadi kita boleh gunakan di mana sahaja kita mahu menggunakannya.
Mari kita bincangkan beberapa kaedah modul penimbal Node.js yang penting.
Buffer.alloc()
Kaedah ini akan mencipta penimbal baharu, tetapi saiz yang diperuntukkan tidak tetap. Apabila kita memanggil kaedah ini, kita boleh memperuntukkan saiz sendiri (dalam bait).
const buf = Buffer.alloc(6) // 这会创建一个 6 字节的缓冲区 console.log(buf) // <Buffer 00 00 00 00 00 00>
Buffer.byteLength()
Jika kita ingin mendapatkan panjang penimbal, kita panggil sahaja Buffer.byteLength()
.
var buf = Buffer.alloc(10) var buffLen = Buffer.byteLength(buf) // 检查缓冲区长度 console.log(buffLen) // 10
Buffer.compare()
Dengan menggunakan Buffer.compare()
kita boleh membandingkan dua penimbal, nilai pulangan kaedah ini ialah -1
, 0
, salah satu daripada 1
.
Nota Penterjemah: buf.compare(otherBuffer);
Panggilan ini akan mengembalikan nombor -1
, 0
, 1
, sepadan dengan buf
sebelum, selepas, atau nombor yang sama. otherBuffer
var buf1 = Buffer.from('Harsh') var buf2 = Buffer.from('Harsg') var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 0 var buf1 = Buffer.from('a') var buf2 = Buffer.from('b') var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 -1 var buf1 = Buffer.from('b') var buf2 = Buffer.from('a') var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 1
Buffer.concat()
var buffer1 = Buffer.from('x') var buffer2 = Buffer.from('y') var buffer3 = Buffer.from('z') var arr = [buffer1, buffer2, buffer3] console.log(arr) /* buffer, !concat [ <Buffer 78>, <Buffer 79>, <Buffer 7a> ] */ // 通过 Buffer.concat 方法连接两个缓冲区 var buf = Buffer.concat(arr) console.log(buf) // <Buffer 78 79 7a> concat successful
Buffer.entries()
akan mencipta dan mengembalikan lelaran borang [index, byte] menggunakan kandungan penimbal ini. Buffer.entries()
var buf = Buffer.from('xyz') for (a of buf.entries()) { console.log(a) /* 这个会在控制台输出一个有缓冲区位置与内容的字节的数组 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */ }
Buffer.fill()
fungsi ini untuk memasukkan atau mengisi data ke dalam penimbal. Lihat di bawah untuk maklumat lanjut. Buffer.fill()
const b = Buffer.alloc(10).fill('a') console.log(b.toString()) // aaaaaaaaaa
Buffer.includes()
, kaedah yang diberikan mengembalikan nilai boolean iaitu Buffer.includes()
atau true
bergantung pada carian. false
const buf = Buffer.from('this is a buffer') console.log(buf.includes('this')) // true console.log(buf.includes(Buffer.from('a buffer example'))) // false
Buffer.isEncoding()
untuk mengesahkan. Jika disokong, ia akan kembali Buffer.isEncoding()
. true
console.log(Buffer.isEncoding('hex')) // true console.log(Buffer.isEncoding('utf-8')) // true console.log(Buffer.isEncoding('utf/8')) // false console.log(Buffer.isEncoding('hey')) // false
Buffer.slice()
akan mencipta penimbal baharu menggunakan elemen penimbal yang dipilih - apabila memotong penimbal , akan mencipta penimbal baharu mengandungi senarai item yang boleh ditemui dalam kepingan penimbal baharu. buf.slice()
var a = Buffer.from('uvwxyz'); var b = a.slice(2, 5); console.log(b.toString()); // wxy
Buffer.swapX()
Tertib bait digunakan untuk menukar penimbal. Gunakan Buffer.swapX()
(di mana Buffer.swapX()
boleh menjadi 16, 32, 64) untuk menukar susunan bait objek penimbal 16-bit, 32-bit dan 64-bit. X
const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]) console.log(buf1) // <Buffer 01 02 03 04 05 06 07 08> // 交换 16 位字节顺序 buf1.swap16() console.log(buf1) // <Buffer 02 01 04 03 06 05 08 07> // 交换 32 位字节顺序 buf1.swap32() console.log(buf1) // <Buffer 03 04 01 02 07 08 05 06> // 交换 64 位字节顺序 buf1.swap64() console.log(buf1) // <Buffer 06 05 08 07 02 01 04 03>
Buffer.json()
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); console.log(buf.toJSON()); // {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}
如果我们需要进一步了解并使用 Node.js 的缓冲区,我们需要对缓冲区以及 Node.js 缓冲区的工作原理有更扎实的基础知识。我们还应该了解为什么我们需要使用 Node.js 缓冲区和各种 Node.js 缓冲区方法的使用。
更多node相关知识,请访问:nodejs 教程!!
Atas ialah kandungan terperinci Mari bercakap tentang beberapa kaedah penting modul penimbal Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!