论坛首页 Java企业应用论坛

缓存策略之LRU实现(基于双链表实现)

浏览 13065 次
精华帖 (11) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-17   最后修改:2010-06-17
只能投新手帖,没有深度,双重链表,大学数据结构书里就有

HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。
用HashTable就没有并发问题了吗?
讲cache,不提并发,等于没讲。

在并发的时候,moveToHead有明显的并发问题
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。
0 请登录后投票
   发表时间:2010-06-17  
hardPass 写道
只能投新手帖,没有深度,双重链表,大学数据结构书里就有

HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。
用HashTable就没有并发问题了吗?
讲cache,不提并发,等于没讲。

在并发的时候,moveToHead有明显的并发问题
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。

我也同意这个链表会出现最近使用却被最先删除的情况,觉得这个实现很不完善。
0 请登录后投票
   发表时间:2010-06-17  
hardPass 写道
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。


插句嘴,我一直认为真正的LRU实现——兼顾性能和统计的准确性,是需要内部的独立线程完成命中统计及删除操作的,命中数不重要,重要的是单位时间内的命中率。不知道我的想法对不对。


0 请登录后投票
   发表时间:2010-06-17  
可以看下OSCache的实现,JDK有相应数据结构的实现LinkedHashSet。
0 请登录后投票
   发表时间:2010-06-17  
并发,建议使用ConcurrentHashMap吧。效率比HashTable高很多
0 请登录后投票
   发表时间:2010-06-17  
hardPass 写道
只能投新手帖,没有深度,双重链表,大学数据结构书里就有

HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。
用HashTable就没有并发问题了吗?
讲cache,不提并发,等于没讲。

在并发的时候,moveToHead有明显的并发问题
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。


javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。

就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好!

支持楼主的精神先
0 请登录后投票
   发表时间:2010-06-17  
prowl 写道
并发,建议使用ConcurrentHashMap吧。效率比HashTable高很多



美眉是吧,看清楚人家在讨论啥了木有啊,人家重点在LRU算法啊,不是在讲HashTable哦。
0 请登录后投票
   发表时间:2010-06-18  
lru 这个是oracle在 库高速缓存中就是使用的这个策略,最近最少使用 算法 呵呵
0 请登录后投票
   发表时间:2010-06-18  


linliangyi2007 写道
[
这是算法好贴,那个家伙投的“新手”,替楼主鄙视之~~

看了楼主的源码,似乎有并发问题,不是hashtable的并发问题,而是在对cache指针做移动时,存在并发问题,不知道是不是我没考虑周全。

不过原理是讲透了,给个精华!


linliangyi2007 写道
hardPass 写道
只能投新手帖,没有深度,双重链表,大学数据结构书里就有

HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。
用HashTable就没有并发问题了吗?
讲cache,不提并发,等于没讲。

在并发的时候,moveToHead有明显的并发问题
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。


javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。

就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好!

支持楼主的精神先



不错,对楼主的乐于分享的精神,还是值得肯定的。
说句实话,我之前从来没给谁投过新手帖,一般看到讨论,围观围观就算了。

虽然楼主的代码有问题,我可以不管,但是却被你这位仁兄说成是精华,那就是另外一回事情了。
如果我们默许、纵容你等乱投精华,岂不是误导新人?那才是真正的悲哀!
你可知道,楼主被扣分,也是因为你!

je这个地方,注重的是实事求是的讨论,吹嘘拍马的就不要了吧




0 请登录后投票
   发表时间:2010-06-18  
hardPass 写道


linliangyi2007 写道
[
这是算法好贴,那个家伙投的“新手”,替楼主鄙视之~~

看了楼主的源码,似乎有并发问题,不是hashtable的并发问题,而是在对cache指针做移动时,存在并发问题,不知道是不是我没考虑周全。

不过原理是讲透了,给个精华!


linliangyi2007 写道
hardPass 写道
只能投新手帖,没有深度,双重链表,大学数据结构书里就有

HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。
用HashTable就没有并发问题了吗?
讲cache,不提并发,等于没讲。

在并发的时候,moveToHead有明显的并发问题
有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。


javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。

就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好!

支持楼主的精神先



不错,对楼主的乐于分享的精神,还是值得肯定的。
说句实话,我之前从来没给谁投过新手帖,一般看到讨论,围观围观就算了。

虽然楼主的代码有问题,我可以不管,但是却被你这位仁兄说成是精华,那就是另外一回事情了。
如果我们默许、纵容你等乱投精华,岂不是误导新人?那才是真正的悲哀!
你可知道,楼主被扣分,也是因为你!

je这个地方,注重的是实事求是的讨论,吹嘘拍马的就不要了吧




楼上的搞清楚孰先孰后,是帖子先被投了新手,我才投个精华来做冲抵的,不要冤枉好人哈
0 请登录后投票
论坛首页 Java企业应用版

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