Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSystem Design for Python JuniorsModulul 1 · Fundamentele de proiectare a sistemuluiMemorarea în cache: când, unde, cepredict5 / 105
+100 XP
Sarcină
📝 **Sarcina:** Preziceți urma de 7 rânduri produsă de patru citiri de catalog de produse în raport cu un strat din cache-aside (fiecare greșeală imprimă `miss` apoi `db`; o lovitură imprimă doar `hit`). O invalidare din mijloc resetează imaginea. 📋 Implementați funcția de mai sus. Testele rulează automat. 💡 **Sugestie:** Recitiți teoria dacă rămâneți blocat.
Prezice ieșirea

Citește codul cu atenție

class CacheAside:
    def __init__(self, db):
        self.cache = {}
        self.db = db
        self.log = []

    def read(self, key):
        if key in self.cache:
            self.log.append("hit")
            return self.cache[key]
        self.log.append("miss")
        # Fall back to DB.
        value = self.db[key]
        self.log.append("db")
        self.cache[key] = value
        return value

    def invalidate(self, key):
        self.cache.pop(key, None)

DB = {"product:1": "Widget", "product:2": "Gadget"}
c = CacheAside(DB)

c.read("product:1")    # first read — cold cache
c.read("product:1")    # second read — should hit
c.read("product:2")    # different key — cold
c.invalidate("product:1")
c.read("product:1")    # invalidated — back to db

print("\n".join(c.log))

# What does this print? Type your prediction.

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…