锁定老帖子 主题:缓存策略之LRU实现(基于双链表实现)
精华帖 (11) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-17
最后修改:2010-06-17
只能投新手帖,没有深度,双重链表,大学数据结构书里就有
HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。 用HashTable就没有并发问题了吗? 讲cache,不提并发,等于没讲。 在并发的时候,moveToHead有明显的并发问题 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。 |
|
返回顶楼 | |
发表时间:2010-06-17
hardPass 写道 只能投新手帖,没有深度,双重链表,大学数据结构书里就有
HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。 用HashTable就没有并发问题了吗? 讲cache,不提并发,等于没讲。 在并发的时候,moveToHead有明显的并发问题 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。 我也同意这个链表会出现最近使用却被最先删除的情况,觉得这个实现很不完善。 |
|
返回顶楼 | |
发表时间:2010-06-17
hardPass 写道 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。
插句嘴,我一直认为真正的LRU实现——兼顾性能和统计的准确性,是需要内部的独立线程完成命中统计及删除操作的,命中数不重要,重要的是单位时间内的命中率。不知道我的想法对不对。 |
|
返回顶楼 | |
发表时间:2010-06-17
可以看下OSCache的实现,JDK有相应数据结构的实现LinkedHashSet。
|
|
返回顶楼 | |
发表时间:2010-06-17
并发,建议使用ConcurrentHashMap吧。效率比HashTable高很多
|
|
返回顶楼 | |
发表时间:2010-06-17
hardPass 写道 只能投新手帖,没有深度,双重链表,大学数据结构书里就有
HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。 用HashTable就没有并发问题了吗? 讲cache,不提并发,等于没讲。 在并发的时候,moveToHead有明显的并发问题 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。 javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。 就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好! 支持楼主的精神先 |
|
返回顶楼 | |
发表时间:2010-06-17
prowl 写道 并发,建议使用ConcurrentHashMap吧。效率比HashTable高很多
美眉是吧,看清楚人家在讨论啥了木有啊,人家重点在LRU算法啊,不是在讲HashTable哦。 |
|
返回顶楼 | |
发表时间:2010-06-18
lru 这个是oracle在 库高速缓存中就是使用的这个策略,最近最少使用 算法 呵呵
|
|
返回顶楼 | |
发表时间:2010-06-18
linliangyi2007 写道 [
这是算法好贴,那个家伙投的“新手”,替楼主鄙视之~~ 看了楼主的源码,似乎有并发问题,不是hashtable的并发问题,而是在对cache指针做移动时,存在并发问题,不知道是不是我没考虑周全。 不过原理是讲透了,给个精华! linliangyi2007 写道 hardPass 写道 只能投新手帖,没有深度,双重链表,大学数据结构书里就有
HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。 用HashTable就没有并发问题了吗? 讲cache,不提并发,等于没讲。 在并发的时候,moveToHead有明显的并发问题 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。 javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。 就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好! 支持楼主的精神先 不错,对楼主的乐于分享的精神,还是值得肯定的。 说句实话,我之前从来没给谁投过新手帖,一般看到讨论,围观围观就算了。 虽然楼主的代码有问题,我可以不管,但是却被你这位仁兄说成是精华,那就是另外一回事情了。 如果我们默许、纵容你等乱投精华,岂不是误导新人?那才是真正的悲哀! 你可知道,楼主被扣分,也是因为你! je这个地方,注重的是实事求是的讨论,吹嘘拍马的就不要了吧 |
|
返回顶楼 | |
发表时间:2010-06-18
hardPass 写道 linliangyi2007 写道 [
这是算法好贴,那个家伙投的“新手”,替楼主鄙视之~~ 看了楼主的源码,似乎有并发问题,不是hashtable的并发问题,而是在对cache指针做移动时,存在并发问题,不知道是不是我没考虑周全。 不过原理是讲透了,给个精华! linliangyi2007 写道 hardPass 写道 只能投新手帖,没有深度,双重链表,大学数据结构书里就有
HashTable本身是没有并发问题,但楼主的程序有明显的并发问题。 用HashTable就没有并发问题了吗? 讲cache,不提并发,等于没讲。 在并发的时候,moveToHead有明显的并发问题 有可能出现最近使用,却被首先删除的情况。和LRU背道而驰。 javaeye就是多这样的看客,有本事自己写几个深刻的啊!不要人家写了还这么不怀好意。 就算不深刻,也不用投个新手吧(要扣分的),你牛你飘过就好! 支持楼主的精神先 不错,对楼主的乐于分享的精神,还是值得肯定的。 说句实话,我之前从来没给谁投过新手帖,一般看到讨论,围观围观就算了。 虽然楼主的代码有问题,我可以不管,但是却被你这位仁兄说成是精华,那就是另外一回事情了。 如果我们默许、纵容你等乱投精华,岂不是误导新人?那才是真正的悲哀! 你可知道,楼主被扣分,也是因为你! je这个地方,注重的是实事求是的讨论,吹嘘拍马的就不要了吧 楼上的搞清楚孰先孰后,是帖子先被投了新手,我才投个精华来做冲抵的,不要冤枉好人哈 |
|
返回顶楼 | |