当前位置: 首页 > 面试题库 >

请你讲讲LRU算法的实现原理?

赵雅懿
2023-03-14
本文向大家介绍请你讲讲LRU算法的实现原理?相关面试题,主要包含被问及请你讲讲LRU算法的实现原理?时的应答技巧和注意事项,需要的朋友参考一下

考察点:LRU算法

 

①LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也很高”,反过来说“如果数据最近这段时间一直都没有访问,那么将来被访问的概率也会很低”,两种理解是一样的;常用于页面置换算法,为虚拟页式存储管理服务。

②达到这样一种情形的算法是最理想的:每次调换出的页面是所有内存页面中最迟将被使用的;这可以最大限度的推迟页面调换,这种算法,被称为理想页面置换算法。可惜的是,这种算法是无法实现的。 为了尽量减少与理想算法的差距,产生了各种精妙的算法,最近最少使用页面置换算法便是其中一个。LRU 算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到 。这个,就是著名的局部性原理——比内存速度还要快的cache,也是基于同样的原理运行的。因此,我们只需要在每次调换时,找到最近最少使用的那个页面调出内存。

算法实现的关键

命中率: 当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致 LRU 命中率急剧下降,缓存污染情况比较严重。 复杂度: 实现起来较为简单。 存储成本: 几乎没有空间上浪费。 代价: 命中时需要遍历链表,找到命中的数据块索引,然后需要将数据移到头部。

 类似资料:
  • 本文向大家介绍请你讲讲LFU算法的实现原理?相关面试题,主要包含被问及请你讲讲LFU算法的实现原理?时的应答技巧和注意事项,需要的朋友参考一下 考察点:LFU Cache  

  • 本文向大家介绍请你讲讲wait方法的底层原理相关面试题,主要包含被问及请你讲讲wait方法的底层原理时的应答技巧和注意事项,需要的朋友参考一下 考察点:基础 ObjectSynchronizer::wait方法通过object的对象中找到ObjectMonitor对象调用方法 void ObjectMonitor::wait(jlong millis, bool interruptible, TR

  • 本文向大家介绍请你讲讲&和&&的区别?相关面试题,主要包含被问及请你讲讲&和&&的区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:运算符 &运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右

  • 本文向大家介绍请你讲讲http1.1和1.0的区别相关面试题,主要包含被问及请你讲讲http1.1和1.0的区别时的应答技巧和注意事项,需要的朋友参考一下 考察点:http   主要区别主要体现在: 缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Un

  • 本文向大家介绍请你讲讲什么是泛型?相关面试题,主要包含被问及请你讲讲什么是泛型?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA泛型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时

  • 本文向大家介绍请讲讲,你如何看待加班?相关面试题,主要包含被问及请讲讲,你如何看待加班?时的应答技巧和注意事项,需要的朋友参考一下