1, analisis pembukaan
Penampan penimbal yang dipanggil bermaksud "kawasan storan sementara", iaitu bahagian memori yang menyimpan data input dan output buat sementara waktu.
Bahasa JS itu sendiri hanya mempunyai jenis data rentetan dan tiada jenis data binari, jadi NodeJS menyediakan Penimbal pembina global bersamaan dengan String untuk menyediakan operasi pada data binari. Selain membaca fail untuk mendapatkan contoh Penampan, ia juga boleh dibina secara langsung, contohnya:
var penimbal = Penampan baharu([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ;
Terdapat perbezaan penting antara Penampan dan rentetan. Rentetan adalah baca sahaja, dan sebarang pengubahsuaian pada rentetan menghasilkan rentetan baharu, manakala rentetan asal kekal tidak berubah.
Bagi Penampan, ia lebih seperti tatasusunan bahasa C yang boleh melakukan operasi penunjuk. Sebagai contoh, anda boleh menggunakan kaedah [indeks] untuk mengubah suai bait secara langsung pada kedudukan tertentu.
------------------------------------------------ --------------------------------------------------- --------------------------------------------------- --------------------------------------------------- --- --------------------------------
Kaedah
slice tidak mengembalikan Penampan baharu, sebaliknya mengembalikan penuding ke kedudukan di tengah Penampan asal, seperti ditunjukkan di bawah.[ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]
|
bin bin.slice(2)
Oleh itu, pengubahsuaian kepada Penampan yang dikembalikan melalui kaedah hirisan akan menjejaskan Penampan asal, contohnya:
sub[0] = 0x65;
console.log(buffer); //
Ini sama seperti memohon memori baharu dan menyalin data dalam memori sedia ada. Di bawah adalah contoh.
buffer.copy(dup) ;
dup[0] = 0x48 ;
console.log(buffer); //
console.log(dup) ; //
Ringkasnya, Penampan memanjangkan keupayaan pemprosesan data JS daripada rentetan kepada data binari arbitrari.
Di atas ialah pengenalan ringkas tentang apa itu Penampan Mari kita bincangkan tentang cara menggunakannya dan senario penggunaan khusus.
Dua, mari bercakap tentang Penampan
JavaScript sangat mesra pemprosesan rentetan sama ada bait lebar atau rentetan bait tunggal, ia dianggap sebagai rentetan. Node perlu memproses protokol rangkaian, mengendalikan pangkalan data, memproses gambar, muat naik fail, dsb. Ia juga perlu memproses sejumlah besar data binari Rentetan terbina dalam jauh daripada memenuhi keperluan ini, jadi Penimbal wujud.
Struktur penimbal
Penimbal ialah modul biasa yang menggabungkan Javascript dan C. Bahagian berkaitan prestasi dilaksanakan dalam C, dan bahagian bukan berkaitan prestasi dilaksanakan dalam JavaScript.
Node telah pun memuatkan Penampan ke dalam memori apabila proses bermula dan meletakkannya ke dalam objek global, jadi tidak perlu memerlukan
Objek penimbal: serupa dengan tatasusunan, elemennya ialah dua digit digit perenambelasan.
Peruntukan memori penimbal
Peruntukan memori objek Penampan tidak berada dalam memori timbunan V8 Aplikasi memori dilaksanakan pada tahap C Node.
Untuk menggunakan memori yang diminta dengan cekap, Node menggunakan mekanisme peruntukan papak ialah mekanisme pengurusan memori dinamik yang menggunakan pelbagai sistem pengendalian *nix. Papak mempunyai tiga keadaan:
(1) penuh: status diperuntukkan sepenuhnya
(2) separa: status peruntukan separa
(3) kosong: tiada status diberikan
Penukaran penimbal
Objek penimbal boleh ditukar kepada dan daripada rentetan Jenis pengekodan yang disokong adalah seperti berikut:
ASCII, UTF-8, UTF-16LE/UCS-2, Base64, Binary, Hex
Rentetan untuk Penampan
Penimbal baharu(str, [pengekodan]), lalai UTF-8
buf.write(rentetan, [offset], [panjang], [pengekodan])
Penimbal kepada rentetan
buf.toString([pengekodan], [mula], [tamat])
Jenis pengekodan tidak disokong oleh Penampan
Tentukan sama ada ia disokong oleh Buffer.isEncoding(encoding)
iconv-lite: Pelaksanaan JavaScript tulen, berat lebih ringan, prestasi lebih baik tanpa penukaran C kepada javascript
iconv: Panggil pustaka libiconv C untuk melengkapkan
Penyambungan penimbal
Beri perhatian kepada "res.on('data', function(chunk) {})". boleh dijana ,
Penyelesaian:
(1) Melalui kaedah setEncoding() dalam strim boleh dibaca, kaedah ini membenarkan peristiwa data dihantar bukan lagi sebagai objek Penampan, tetapi sebagai rentetan yang dikodkan, yang menggunakan modul StringEncoder secara dalaman.
(2) Simpan objek Penampan ke dalam tatasusunan buat sementara waktu, dan akhirnya pasangkannya ke dalam Penampan yang besar dan kemudian kodkannya ke dalam rentetan untuk output.
Penimbal digunakan secara meluas dalam fail I/O dan rangkaian I/O Prestasinya sangat penting, dan prestasinya jauh lebih tinggi daripada rentetan biasa.
Selain kehilangan prestasi dalam menukar rentetan, penggunaan Buffer mempunyai tetapan highWaterMark yang penting untuk prestasi semasa membaca fail.
a. Tetapan highWaterMark mempunyai kesan tertentu pada peruntukan dan penggunaan memori Penampan.
b. Menetapkan highWaterMark terlalu kecil boleh mengakibatkan terlalu banyak panggilan sistem.
Bila hendak menggunakan penimbal dan bila tidak menggunakannya ------ Javascript tulen menyokong kod unicode tetapi bukan binari Apabila berurusan dengan strim TCP atau strim fail, adalah perlu untuk memproses strim tersebut. utf-8, binari dan format lain, kita mesti menggunakan "Buffer".
3. Pengenalan contoh
var buf = new Buffer("ini adalah ujian concat teks !") ,str = "ini ialah ujian concat teks ;
console.time("buffer concat test !");
senarai var = [] ;
var len = 100000 * buf.length ;
untuk(var i=0;i List.push(buf) ;
len = buf.length ;
}
var s1 = Buffer.concat(senarai, len).toString() ;
console.timeEnd("buffer concat test !") ;
console.time("string concat test !") ;
senarai var = [] ;
untuk (var i = 100000; i >= 0; i--) {
List.push(str) ;
}
var s2 = list.join("") ;
console.timeEnd("string concat test !") ;
Berikut ialah keputusannya:
Kelajuan membaca rentetan pasti lebih pantas, dan penimbal juga memerlukan operasi toString(). Oleh itu, apabila kita menyimpan rentetan, kita harus menggunakan rentetan atau rentetan Walaupun rentetan besar disambungkan ke dalam rentetan, kelajuan penyambungannya tidak akan lebih perlahan daripada penampan.
Jadi bila kita perlu menggunakan penimbal lagi? Apabila tidak ada cara lain, apabila kita menyimpan rentetan bukan utf-8, binari dan format lain, kita mesti menggunakannya.
Empat, ringkasan
(1), JavaScript sesuai untuk memproses data yang dikodkan Unicode, tetapi ia tidak mesra pemprosesan data binari.
(2), jadi apabila memproses aliran TCP atau sistem fail, adalah perlu untuk memproses aliran oktet.
(3), Node mempunyai beberapa kaedah untuk memproses, mencipta dan menggunakan aliran oktet.
(4) Data asal disimpan dalam contoh Penampan A adalah serupa dengan tatasusunan integer, tetapi memorinya diperuntukkan di luar tindanan V8. Saiz Penampan tidak boleh diubah.
(5), jenis pengekodan yang diproses ialah: ascii, utf8, utf16le, ucs2 (alias utf16le), base64, binari, hex.
(6), Penampan ialah elemen global, dan anda boleh mendapatkan contoh Penampan secara langsung dengan menggunakan Penampan baharu().

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.


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

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft