Artikel ini membawakan anda pengetahuan yang berkaitan tentang javascript, yang terutamanya memperkenalkan kandungan File API, Streams API dan API Kriptografi Web yang berkaitan dalam JavaScript. Saya harap ia akan membantu semua orang.
[Cadangan berkaitan: tutorial video javascript]
2. Asas operasi atom
//创建大小为1的缓冲区let sharedArrayBuffer = new SharedArrayBuffer(1); //基于缓冲创建Unit8Arraylet typedArray = new Unit8Array(sharedArrayBuffer); //所有ArrayBuffer全部初始化为0console.log(typedArray); //Unit8Array[0] //对索引0处的值执行原子加10Atomics.add(typedArray,0,10); //Unit8Array[10] //对索引0处的值执行原子减10Atomics.sub(typedArray,0,10); //Unit8Array[0]
const sharedArrayBuffer = new SharedArrayBuffer(4); const view = new Unit32Array(sharedArrayBuffer); //执行非原子写view[0] = 1; //非原子写可以保证在这个读操作之前完成,因此这里一定会读到1console.log(Atomics.load(view,0)); //1 //执行原子写Atomics.store(view,0,2); //非原子读可以保证在原子写完成后发生,这里一定会读到2console.log(view[0]); //2
const sharedArrayBuffer = new SharedArrayBuffer(4); const view = new Unit32Array(sharedArrayBuffer); //在索引0处写入10Atomics.store(view,0,10); //从索引0处读取值,然后在索引0处写入5console.log(Atomics.exchange(view,0,5)); //10 //从索引0处读取值console.log(Atomics.load(view,0)); //5
3. Pemesejan silang konteks
4. API Pengekodan
5. API Fail dan API Blob
1 Jenis failreadAsDataURL(file);//Baca fail dan simpan data URI kandungan dalam atribut hasil
readAsBinaryString(file);// Baca Dapatkan fail dan simpan data binari setiap aksara dalam atribut hasil
readAsArrayBuffer(fail);//Baca fail dan simpan kandungan fail dalam atribut hasil dalam borang daripada ArrayBuffer
Versi segerak jenis FileReader.
Dalam sesetengah kes, anda mungkin perlu membaca sebahagian daripada fail dan bukannya keseluruhan fail untuk tujuan ini memberikan nama ialah kaedah slice(). Kaedah slice() menerima dua parameter: bait permulaan dan bilangan bait dalam kawasan Yaodu. Kaedah ini mengembalikan contoh Blob, yang sebenarnya merupakan superclass Fail.
Blob mewakili objek besar binari, iaitu jenis pengkapsulan JavaScript untuk data binari yang tidak boleh diubah suai. Tatasusunan yang mengandungi rentetan, ArrayBuffers, ArrayBufferViews dan juga gumpalan lain boleh digunakan untuk membuat gumpalan. Pembina Blob boleh menerima parameter pilihan dan menentukan jenis MIME di dalamnya.
Streams API dilahirkan untuk menyelesaikan masalah yang mudah tetapi asas: Web Bagaimana aplikasi boleh menggunakan sedikit , memesan ketulan maklumat dan bukannya ketulan besar? Terdapat dua senario aplikasi utama untuk keupayaan ini.
API Strim mentakrifkan tiga strim:
Strim boleh dibaca: boleh dibaca melalui antara muka awam Dapatkan aliran blok data. Data memasuki strim secara dalaman daripada sumber asas dan kemudian diproses oleh pengguna.
Strim boleh tulis: Strim yang mana blok data boleh ditulis melalui antara muka awam. Pengeluar (pengguna) menulis data ke strim, dan data dipindahkan secara dalaman ke slot data asas (sink).
Strim penukaran: Ia terdiri daripada dua strim, strim boleh tulis digunakan untuk menerima data dan strim boleh dibaca digunakan untuk mengeluarkan data. Kedua-dua semakan kualiti strim ini ialah transformer yang boleh memeriksa dan mengubah suai kandungan strim mengikut keperluan.
API Kriptografi Web menerangkan satu set alat kriptografi yang menyeragamkan cara JavaScript melaksanakan penyulitan dengan cara yang selamat dan konvensional. Alat ini termasuk menjana, menggunakan dan menggunakan pasangan kunci kriptografi, menyulitkan dan menyahsulit maklumat serta menjana nombor rawak dengan pasti.
Ramai orang menggunakan Math.random()
apabila mereka perlu menjana nombor rawak. Kaedah ini dilaksanakan dalam pelayar sebagai penjana nombor pseudo-rawak (PRNG, PseudoRandom Number Generator). Apa yang dipanggil pseudo merujuk kepada proses penjanaan nilai yang tidak benar-benar rawak. Nilai yang dijana oleh PRNG hanya mensimulasikan ciri rawak. PRNG penyemak imbas tidak menggunakan sumber rawak yang benar, tetapi hanya menggunakan algoritma tetap pada keadaan dalaman. Setiap kali Math.random()
dipanggil, keadaan dalaman ini diubah suai oleh algoritma dan hasilnya ditukar kepada nombor rawak baharu. Contohnya, enjin V8 menggunakan algoritma yang dipanggil xorshift128
untuk melakukan pengubahsuaian ini.
Memandangkan algoritma itu sendiri ditetapkan dan inputnya hanyalah keadaan sebelumnya, urutan nombor rawak juga ditentukan. xorshift128
Menggunakan keadaan dalaman 128-bit, dan algoritma direka bentuk supaya mana-mana keadaan awal akan menghasilkan 2128-1 nilai rawak pseudo sebelum mengulangi dirinya sendiri. Gelung jenis ini dipanggil gelung pilih atur, dan panjang gelung ini dipanggil noktah. Adalah jelas bahawa jika penyerang mengetahui keadaan dalaman PRNG, dia boleh meramalkan nilai pseudo-rawak yang dijana kemudiannya. Jika pembangun secara tidak sengaja menggunakan PRNG untuk menjana kunci persendirian untuk penyulitan, penyerang boleh menggunakan ciri PRNG ini untuk mengira kunci persendirian.
Penjana nombor pseudo-rawak terutamanya digunakan untuk mengira nombor yang kelihatan rawak, tetapi ia tidak sesuai untuk algoritma penyulitan Untuk menyelesaikan masalah ini, penjana nombor pseudo-rawak secara kriptografi (CSPRNG, Penjana Nombor PseudoRandom Secara Kriptografi. ), menambah entropi tambahan sebagai input, seperti menguji masa perkakasan atau ciri sistem lain dengan gelagat yang tidak dapat diramalkan Walaupun ia tidak sepantas PRNG, nilai yang dijana lebih sukar untuk diramal dan boleh digunakan untuk penyulitan.
API Kriptografi Web memperkenalkan CSPRNG, yang boleh diakses melalui crypto.getRandomValues()
pada objek Crypto
global. Tidak seperti Math.random()
yang mengembalikan nombor titik terapung antara 0 dan 1, getRandomValues()
akan menulis nilai rawak ke dalam tatasusunan stereotaip yang dihantar kepadanya sebagai parameter. Kelas tatasusunan stereotaip tidak penting kerana penimbal asas akan diisi dengan bit rawak.
[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]
Atas ialah kandungan terperinci Membawa anda mempelajari API Fail, API Strim dan API Kriptografi Web dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!