随笔分类 -  算法与数据结构

摘要:Java中最简单的LRU算法实现,就是利用 LinkedHashMap,覆写其中的removeEldestEntry(Map.Entry)方法即可 如果你去看LinkedHashMap的源码可知,LRU算法是通过双向链表来实现,当某个位置被命中,通过调整链表的指向将该位置调整到头位置,新加入的内容直 阅读全文
posted @ 2017-09-01 21:23 皈依之路 阅读(538) 评论(0) 推荐(0)
摘要:1. LFU类 1.1. LFU LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。 LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序。 阅读全文
posted @ 2017-08-31 17:05 皈依之路 阅读(14341) 评论(0) 推荐(0)
摘要:1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每 阅读全文
posted @ 2017-08-31 17:01 皈依之路 阅读(381) 评论(0) 推荐(0)
摘要:前段时间去网易面试,被这个问题卡住,先做总结如下: 常用缓存淘汰算法 FIFO类:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。 LRU类:Least Recently Used,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。 LFU类 阅读全文
posted @ 2017-08-31 16:23 皈依之路 阅读(1325) 评论(0) 推荐(0)
摘要:一 基本思路 二 图示 三 代码实现(Java) 四 优化 阅读全文
posted @ 2017-08-13 16:48 皈依之路 阅读(2112) 评论(0) 推荐(0)