LRUCache算法实现

本文详细介绍了LRU(Least Recently Used)缓存淘汰算法,通过实例解析其工作原理。文章讨论了如何使用Java中的LinkedList和HashMap实现LRU,并提出使用LinkedHashMap作为更优的解决方案,以解决时间复杂度问题。
摘要由CSDN通过智能技术生成

1.概念理解

        LRU是Least Recently Used(最近最少使用)的首字母组合,最早接触是在操作系统课程中,关于Cache的hit和miss的一种算法,可以极大地提高访问命中率。

        网上有许多关于LRU算法解释的例子,这里简单说一下:

        1、该算法的运行过程就像一个特殊的栈;

        2、“栈”容量大小cacheSize固定;

        3、当要访问的表项不在“栈”中时,是一个cache miss的过程:

              如果"栈"还有剩余空间(即使用量小于cacheSize),则将该表项置于栈顶;

              如果"栈"已被填满(即使用量等于cacheSize),这时必须先将栈底(即最早被使用过,但是最近最少使用)的表项弹出,然后将待访问的表项压入"栈"中;

        4、当要访问的页面在“栈”中时,是一个cache hit的过程,就能直接获得该页面的地址,并且将该地址置于栈顶(每个表项在cache中只出现一次,可以理解为将“栈”中原表项先删除,再将其压入栈顶),表示最新访问过的表项。

        算法理解,还是来看个例子:栈容量为3,页面访问序列为3、0、2、0、1、3,“栈”的表现如下:

        3(访问3,miss,压入栈顶)

        3 0(访问0,miss,压入栈顶)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值