程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等
获取方式: 关注公众号并回复 666 领取,更多内容持续奉上
LRU(Least Recently Used):最近最少使用策略,是一种缓存淘汰机制。
基本思想:当缓存空间已满时,优先淘汰最近最少使用的缓存数据,以腾出更多的缓存空间。
算法规则:
1、新数据插入到链表头部;
2、当缓存命中(即缓存数据被访问),数据要移到表头;
3、当链表满的时候,将链表尾部的数据丢弃。
实现原理:
LRU算法的实现可以采用多种数据结构,其中最常见的是使用一个双向链表和一个哈希表。
双向链表用于维护缓存数据的访问顺序,哈希表用于快速查找缓存数据。当新的数据被访问时,先在哈希表中查找该数据是否已经存在于缓存中,如果存在,则将该数据移动到双向链表的头部,表示该数据是最近访问的数据;如果不存在,则需要将该数据添加到缓存中,并将其添加到双向链表的头部。当缓存空间已满时,需要淘汰双向链表中最后一个节点,同时在哈希表中删除对应的缓存数据。
应用场景:
网站页面缓存、图片缓存、数据结构缓存、数据库缓存
系列文章索引
MyBatis的插件能在哪些地方进行拦截?
了解MyBatis的缓存机制吗
面试官:谈谈对volatile的理解
Spring中用到了哪些设计模式
面试官:说一下SQL的执行过程
线程池的工作原理