论坛首页 综合技术论坛

LRU缓存

浏览 3611 次
锁定老帖子 主题:LRU缓存
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-15  
之前用链表简单实现了一个LRU,但不实用

本次来一个具有实用意义的实现:
1.通过大根堆记录key值的访问次数
2.定期重置访问次数(LRU周期)
3.访问元素时,不直接修改其访问次数,而是将其访问记录加入到一个列表中(降低主调线程的工作量)
4.后台线程定期将访问历史列表中的记录取出,并合适的修改其记录器在堆中的位置

附连接:
http://cjf068.iteye.com/blog/1454228
   发表时间:2012-03-19  
直接extends LinkedHashMap
然后在构造方法里调用super(capacity, DEFAULT_LOAD_FACTOR, true);

然后覆盖方法
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > capacity;
}


不就是一个LRU了
0 请登录后投票
   发表时间:2012-03-19  
freish 写道
直接extends LinkedHashMap
然后在构造方法里调用super(capacity, DEFAULT_LOAD_FACTOR, true);

然后覆盖方法
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > capacity;
}


不就是一个LRU了

+1
0 请登录后投票
   发表时间:2012-03-19  
freish 写道
直接extends LinkedHashMap
然后在构造方法里调用super(capacity, DEFAULT_LOAD_FACTOR, true);

然后覆盖方法
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > capacity;
}


不就是一个LRU了

呵呵,我稀饭造轮子,谢谢
0 请登录后投票
   发表时间:2012-04-01  
org.apache.commons.collections.map.LRUMap
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics