在计算机科学领域,缓存就像一个会自动整理的魔法书架。它能记住你最常看的书,自动清理掉那些很久没翻的旧书,既节省空间,又让常用数据触手可及。
get
)或放入一本新书(put
),这本书就会被贴上“最近翻过”的标签。O(1)
查找)。get(书名)
:
put(新书)
:
书架上有《Python入门》《Java编程》《算法导论》。
每次操作后,书架都会重新排序,确保你最常看的书永远触手可及。
领域 | 魔法书架的作用 |
---|---|
浏览器缓存 | 存储最近访问的网页,加快加载速度。 |
数据库 | 缓存热点数据(如用户登录信息),减少磁盘IO。 |
操作系统 | 管理内存页,优先保留常用程序的数据。 |
class LRUCache:
def __init__(self, capacity: int):
self.capacity = capacity
self.cache = {} # 哈希表:书名 -> 书的位置
self.books = [] # 双向链表:记录翻阅顺序
def get(self, key: int) -> int:
if key not in self.cache:
return -1
# 将书移到最前面
self.books.remove(key)
self.books.insert(0, key)
return self.cache[key]
def put(self, key: int, value: int) -> None:
if key in self.cache:
# 更新内容并移到最前面
self.cache[key] = value
self.books.remove(key)
self.books.insert(0, key)
else:
if len(self.cache) >= self.capacity:
# 移除最久未翻的书
oldest = self.books.pop()
del self.cache[oldest]
# 放入新书
self.cache[key] = value
self.books.insert(0, key)
LRU缓存机制就像一个会自动整理的魔法书架:
无论是浏览器、数据库还是操作系统,LRU都在默默优化你的体验——它用简单的规则,解决了复杂的数据管理问题。