Към основното съдържание
🔒 Режим за преглед. Първите петнадесет урока на Foundations са безплатни; този е Pro. Стартирайте 7-дневен trial, за да отключите редактора, AI подсказките и останалата част от курса. Изисква се карта, отменете по всяко време в Dashboard.Стартирай 7-дневен trial →
← КурсовеSystem Design for Python JuniorsМодул 1 · Основи на системния дизайнКеширане: кога, къде, каквоpredict5 / 105
+100 XP
Задача
📝 **Задача:** Прогнозирайте 7-редовото проследяване, произведено от четири четения на каталог на продукти срещу слой отстрани на кеша (всяко пропускане отпечатва „miss“ след това „db“; попадението отпечатва само „hit“). Едно обезсилване в средата нулира картината. 📋 Приложете функцията по-горе. Тестовете се изпълняват автоматично. 💡 **Съвет:** Прочетете отново теорията, ако се затрудните.
Предскажи изхода

Прочети кода внимателно

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.

Какво ще изведе програмата? Напиши тук:

💬 Дискусия

Бъди първи — задай въпрос или сподели съвет.
Влез за да се присъединиш към дискусията. Четенето е безплатно.
Зареждане на дискусията…