详解工程师不可不会的LRU缓存淘汰算法( 三 )
在这种实现当中我们没有用除了dict之外的其他任何工具 , 连LinkedList都是自己实现的 。 实际上在Python语言当中有一个数据结构叫做OrderedDict , 它是一个字典 , 但是它当中的元素都是有序的 。 我们利用OrderedDict来实现LRU就非常非常简单 , 代码量也要少得多 。
我们来看代码:
class LRU(OrderedDict):def __init__(self, cap=128, /, *args, **kwds):self.cap = capsuper().__init__(*args, **kwds)def __getitem__(self, key):# 查询函数value = http://kandian.youth.cn/index/super().__getitem__(key)# 把节点移动到末尾self.move_to_end(key)return valuedef __setitem__(self, key, value):# 更新函数super().__setitem__(key, value)if len(self)> self.cap:oldest = next(iter(self))del self[oldest]
在上面一种实现当中由于只用了一个数据结构 , 所以整个代码要简洁许多 。 使用起来也更加方便 , 直接像是dict一样使用方括号进行查询以及更新就可以了 。 不过在其他语言当中可能没有OrderedDict这种数据结构 , 这就需要我们自己来编码实现了 。
好了 , 今天的文章就到这里 。 衷心祝愿大家每天都有所收获 。 如果还喜欢今天的内容的话 , 请来一个三连支持吧~(点赞、关注、转发)
- END -
本文始发于公众号:TechFlow , 求个关注
- 雷军:2021年的第一件大事,给工程师发百万美金大奖
- 日本工程师:潘多拉魔盒被美国打开,中国办芯片大学只为打破禁令
- 性能翻倍!飞腾首款8核桌面处理器腾锐D2000详解
- 从工程师到“水果猎人”他在百度做科普
- 年代感十足!前苹果工程师放出初代iPhone生产线照片
- 能装进口袋的工程师运维笔记本:壹号本壹号工程师PC A1
- 布局AI药物研发!华为招聘药物研发算法工程师,早有准备进军医疗行业?
- 网速再翻倍,官方详解小米 11 搭载的 WiFi 6 增强版技术
- 腾讯数据工程师推荐的Python新手入门书籍,还是首发电子版
- 美国工程师:中国又一项技术刷新纪录!科技史上又一里程碑的存在