← Kursa Dön
💻

Cache Stratejisi Tasarımı

Orta
100 puan · Java

Bir e-ticaret senaryosu için HashMap tabanlı cache sistemi tasarlayıp implement edin. TTL desteği, cache invalidation ve eviction stratejisi içermelidir.

📋 Talimatlar

Cache Stratejisi Tasarımı

Bu ödevde bir e-ticaret platformu için HashMap tabanlı basit bir cache sistemi tasarlayacaksınız. Cache sisteminiz TTL (Time-To-Live) desteği, otomatik expiration kontrolü ve cache istatistikleri sunmalıdır.

Gereksinimler

SimpleCache<V> sınıfı aşağıdaki metotları içermelidir:

  1. SimpleCache(int maxSize) — Constructor. Maksimum cache boyutunu belirler.
  2. void put(String key, V value, long ttlSeconds) — Verilen key ile value'yu cache'e ekler. TTL saniye cinsinden expire süresini belirler. Cache dolu ise (maxSize'a ulaşılmışsa), en eski eklenen entry çıkarılır (FIFO eviction).
  3. V get(String key) — Key'e karşılık gelen value'yu döner. Eğer key yoksa veya TTL süresi dolmuşsa null döner. Süresi dolmuş entry'ler cache'den otomatik silinir.
  4. void invalidate(String key) — Belirtilen key'i cache'den siler.
  5. void invalidateAll() — Tüm cache'i temizler.
  6. String stats() — Cache istatistiklerini döner. Format: size=X, hits=Y, misses=Z

Girdi Formatı

Program stdin'den satır satır komutlar okur:

  • PUT key value ttl — Cache'e ekle (ttl saniye cinsinden)
  • GET key — Cache'den oku, sonucu yazdır (bulunamazsa null)
  • DELETE key — Cache'den sil
  • CLEAR — Tüm cache'i temizle
  • STATS — İstatistikleri yazdır
  • WAIT seconds — Belirtilen saniye kadar iç saati ilerlet (TTL testleri için)
  • EXIT — Programı sonlandır

Not: Gerçek Thread.sleep kullanmak yerine, iç saat değişkeni tutarak WAIT komutu ile saati ilerletin. Bu sayede testler anlık çalışır.

Çıktı

  • GET komutu sonucunda value veya null yazdırılır.
  • STATS komutu sonucunda size=X, hits=Y, misses=Z yazdırılır.
  • Diğer komutlar çıktı üretmez.

Örnek

PUT product:1 Laptop 60
PUT product:2 Phone 30
GET product:1
→ Laptop
STATS
→ size=2, hits=1, misses=0
WAIT 35
GET product:2
→ null
STATS
→ size=1, hits=1, misses=1

🧪 Örnek Test Senaryoları

Girdi
PUT product:1 Laptop 60
PUT product:2 Phone 30
GET product:1
STATS
EXIT
Beklenen Çıktı
Laptop
size=2, hits=1, misses=0
Girdi
PUT product:1 Laptop 60
PUT product:2 Phone 30
WAIT 35
GET product:2
STATS
EXIT
Beklenen Çıktı
null
size=1, hits=0, misses=1
Girdi
PUT a Val1 10
PUT b Val2 10
DELETE a
GET a
GET b
STATS
EXIT
Beklenen Çıktı
null
Val2
size=1, hits=1, misses=1
Girdi
PUT x Data1 100
PUT y Data2 100
CLEAR
STATS
EXIT
Beklenen Çıktı
size=0, hits=0, misses=0

💡 İpuçları

Main.java
✓ Çözüm yüklendi
puan

                    
Ln 1, Col 1 · JAVA · UTF-8
Wandbox