LRU
最近最久未使用 ,这里的最久是通过隐式体现的 ,是给一个序列,使用一次,就放前面,没使用就不动。这样的话越久没使用的就越在后面 可以想象看
这里的使用一次 指的是 访问一次,更新一次。
注意控制大小,并且在插入元素 ,删除元素的时候 缓存体积也变一下
问:
为什么用双向链表?
答:
因为在删除的时候可以找到下一次即将删除的节点。并之一删除到尾部的时候注意更新 尾结点
代码如下 : 可以直接运行 看着多, 其实不难, get, put 里面是逻辑,node_list 里有双向链表的方法。
# coding=utf8
# __author__ = 'kc'
# @File : lru.py
# @Software: PyCharm
class Node(object):
def __init__(self, val, l, r, k):
self.parent = l
self._next = r
self.val = val
self.k = k
class NodeList(object):
"""双向链表"""
def __init__(self):
self.tail = None
self.head = Node("", None, None, "")
def del_item(self, node):
"""
从链表中删除对应的node
:param node: Node 类型
:return:
"""
parent = node.parent