相关疑难解决方法(0)

您将如何在Java中实现LRU缓存?

请不要说EHCache或OSCache等.为了这个问题的目的,假设我只想使用SDK(从实践中学习)来实现我自己的.鉴于缓存将在多线程环境中使用,您将使用哪些数据结构?我已经使用LinkedHashMapCollections#synchronizedMap实现了一个,但我很好奇任何新的并发集合是否会更好.

更新:当我发现这个金块时,我只是阅读Yegge的最新消息:

如果您需要持续时间访问并希望维护插入顺序,那么您不能比LinkedHashMap做得更好,这是一个真正精彩的数据结构.它可能更精彩的唯一方法是如果有并发版本.可惜.

在我使用上面提到的LinkedHashMap+ Collections#synchronizedMap实现之前,我的想法几乎完全相同.很高兴知道我不只是忽略了一些东西.

基于到目前为止的答案,对于高度并发的LRU来说,我最好的选择是使用一些相同的逻辑来扩展ConcurrentHashMapLinkedHashMap.

java caching lru data-structures

167
推荐指数
8
解决办法
12万
查看次数

Java的WeakHashMap和缓存:为什么它引用了键而不是值?

Java的WeakHashMap经常被认为对缓存很有用.虽然它的弱引用是根据地图的键而不是它的值来定义的,但这似乎很奇怪.我的意思是,这是我想要缓存的值,除了缓存之外没有其他人强烈引用它们,我想要收集垃圾,不是吗?

以哪种方式有助于保持对密钥的弱引用?如果你这样做ExpensiveObject o = weakHashMap.get("some_key"),那么我希望缓存保持为'o',直到调用者不再持有强引用,并且我根本不关心字符串对象"some_key".

我错过了什么吗?

java caching weak-references

63
推荐指数
4
解决办法
2万
查看次数

Scala中是否有SoftHashMap?

我知道java这个问题,但这些实现似乎都没有好好发挥scala.collection.JavaConversions.

我在找一些简单的(如单个文件,而不是整个图书馆)实现SoftHashMap,使得它与斯卡拉打得很好Map(即支持getOrElseUpdate,unzip以及剩余的Scala Map方法).

scala map soft-references

6
推荐指数
1
解决办法
911
查看次数