Snapshot
- Node.js kursu
- Uzman
- Ders 5/47
- 5 dk
V8 snapshot ve hızlı başlangıç öğrenirsin.
V8 snapshot
V8 snapshot özelliği, başlangıç durumunu (yerleşik nesneler, prototipler) önceden serileştirilmiş bir dizeden yükler. Bu, Node.js başladığında yerleşikleri sıfırdan kurmayı atlar; sonuçta daha hızlı bir başlangıç sağlar.
Bir serializeSnapshot(state) fonksiyonu bu fikri modeller: bir durumu tekrar yüklenebilir bir dizeye çevirir. Örnek: serializeSnapshot({port: 3000, host: 'localhost'}) 'host=localhost;port=3000' döndürür. Anahtarlar sıralanır; böylece çıktı deterministik olur. Object.keys(state).sort() ile anahtarları alır, .map(k => k + '=' + state[k]) ile her birini anahtar=değer yapar, .join(';') ile birleştirir. Bu, V8'in serileştirme mantığının basit bir modelidir.
Anahtarları sıralama
Snapshot çıktısının deterministik olması için anahtarları sıralarız. Object.keys(state).sort() anahtarları alfabetik sıraya koyar. Böylece aynı durum her zaman aynı dizeyi üretir; bu, snapshot karşılaştırması için şarttır.
Örnek: {port: 3000, host: 'localhost'} nesnesinin anahtarları ['port', 'host'] sırasıyla gelir (eklenme sırası). .sort() bunu ['host', 'port'] yapar. Sonra .map(k => k + '=' + state[k]) ile ['host=localhost', 'port=3000'] elde edilir. .join(';') ile 'host=localhost;port=3000' olur. Sıralama, nesne anahtar sırası farklı olsa bile aynı çıktıyı garanti eder. V8 snapshot'ı da bu determinizme dayanır.
Uygulama Snapshot serileştirici yaz
function serializeSnapshot(state) yaz. const keys = Object.keys(state).sort() ile anahtarları al ve sırala. return keys.map(k => k + '=' + state[k]).join(';') ile döndür. console.log(serializeSnapshot({port: 3000, host: 'localhost'})) ile yazdır.
Başlangıç kodu
// serializeSnapshot fonksiyonu yaz
// Object.keys ile anahtarları al, sırala
// 'anahtar=değer' biçiminde ';' ile birleştir
// {port: 3000, host: 'localhost'} ile çağır ve yazdır
// buraya yazÖrnek çözüm
function serializeSnapshot(state) {
const keys = Object.keys(state).sort();
return keys.map(k => k + '=' + state[k]).join(';');
}
console.log(serializeSnapshot({port: 3000, host: 'localhost'}));Beklenen çıktı
host=localhost;port=3000
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 join çağrısını tamamla
keys.map(k => k + '=' + state[k]).____(';')
keys.map(k => k + '=' + state[k]).join(';')
Açıklama: join diziyi bir dizeye birleştirir.
2 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
Snapshot |
Başlangıç durumunu serileştirir |
Object.keys |
Anahtarları alır |
.sort() |
Alfabetik sıralar |
.join(';') |
Diziyi dizeye birleştirir |
3 Object.keys({b: 1, a: 2}).sort() ne üretir?
Object.keys({b: 1, a: 2}).sort()- ['b', 'a']
- [1, 2]
- ['a', 'b'] Doğru cevap
- 'ab'
Açıklama: sort alfabetik sıralar: ['a', 'b'].