CodeBlanks Logo Icon CodeBlanks

Snapshot

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

index.js
// 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

index.js
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

Soru
keys.map(k => k + '=' + state[k]).____(';')
Cevap
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?

index.js
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'].

Uzman bölümündeki tüm dersler