Rumah > hujung hadapan web > tutorial js > Mari bercakap tentang beberapa kaedah penting modul penimbal Node.js

Mari bercakap tentang beberapa kaedah penting modul penimbal Node.js

青灯夜游
Lepaskan: 2022-01-05 19:31:53
ke hadapan
1551 orang telah melayarinya

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.

Mari bercakap tentang beberapa kaedah penting modul penimbal Node.js

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.

Mari bercakap tentang beberapa kaedah penting modul penimbal Node.js

Kaedah Penampan 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>
Salin selepas log masuk

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
Salin selepas log masuk

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(&#39;Harsh&#39;)
var buf2 = Buffer.from(&#39;Harsg&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 0

var buf1 = Buffer.from(&#39;a&#39;)
var buf2 = Buffer.from(&#39;b&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 -1


var buf1 = Buffer.from(&#39;b&#39;)
var buf2 = Buffer.from(&#39;a&#39;)
var a = Buffer.compare(buf1, buf2)
console.log(a) // 这会打印 1
Salin selepas log masuk

Buffer.concat()

Seperti namanya, kita boleh menyambungkan dua penimbal menggunakan fungsi ini. Sudah tentu, sama seperti rentetan, kita juga boleh menggabungkan lebih daripada dua penimbal.

var buffer1 = Buffer.from(&#39;x&#39;)
var buffer2 = Buffer.from(&#39;y&#39;)
var buffer3 = Buffer.from(&#39;z&#39;)
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
Salin selepas log masuk

Buffer.entries()

akan mencipta dan mengembalikan lelaran borang [index, byte] menggunakan kandungan penimbal ini. Buffer.entries()

var buf = Buffer.from(&#39;xyz&#39;)

for (a of buf.entries()) {
    console.log(a)
    /* 这个会在控制台输出一个有缓冲区位置与内容的字节的数组 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */
}
Salin selepas log masuk

Buffer.fill()

Kita boleh menggunakan

fungsi ini untuk memasukkan atau mengisi data ke dalam penimbal. Lihat di bawah untuk maklumat lanjut. Buffer.fill()

const b = Buffer.alloc(10).fill(&#39;a&#39;)

console.log(b.toString())
// aaaaaaaaaa
Salin selepas log masuk

Buffer.includes()

Seperti rentetan, ia akan mengesahkan jika penimbal mempunyai nilai. Kita boleh mencapai ini menggunakan kaedah

, kaedah yang diberikan mengembalikan nilai boolean iaitu Buffer.includes() atau true bergantung pada carian. false

const buf = Buffer.from(&#39;this is a buffer&#39;)
console.log(buf.includes(&#39;this&#39;))
// true

console.log(buf.includes(Buffer.from(&#39;a buffer example&#39;)))
// false
Salin selepas log masuk

Buffer.isEncoding()

Kita mungkin tahu bahawa fail binari mesti dikodkan, jadi bagaimana jika kita ingin menyemak sama ada jenis data menyokong pengekodan aksara? Kami boleh menggunakan kaedah

untuk mengesahkan. Jika disokong, ia akan kembali Buffer.isEncoding(). true

console.log(Buffer.isEncoding(&#39;hex&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf-8&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf/8&#39;))
// false

console.log(Buffer.isEncoding(&#39;hey&#39;))
// false
Salin selepas log masuk

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(&#39;uvwxyz&#39;);
var b = a.slice(2, 5);

console.log(b.toString());
// wxy
Salin selepas log masuk

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>
Salin selepas log masuk

Buffer.json()

Ia boleh membantu kami mencipta objek JSON daripada penimbal, dan kaedah ini akan mengembalikan objek penimbal 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]}
Salin selepas log masuk

结论

如果我们需要进一步了解并使用 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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan