LRU Cache 原理
LRU是Least Recently Used 的缩写,是一种缓存替换算法,当系统中的缓存满时,通过删除最近最少使用的元素来填充新的内容。LRU 算法在操作系统中有广泛应用,如CPU与物理内存之间的Cache替换算法, 物理内存与硬盘之间Cache替换算法。
LRU Cache 实现
我们可以使用一个双向链表和hash map 实现LRU Cache,其中hash map 存储缓存的内容,hash map 的value 存储指向双向链表节点的指针,双向链表存储缓存的内容,当有节点被加入时,该节点放到双向列表的头部,当访问已经存在的节点时,把该节点移动到双向链表头部,当双向链表满时,删除双向链表最后一个元素。简单的讲,双向链表的作用是记录缓存内容的使用顺序。
C++ 实现
1 | /************************************************************************* |