相关疑难解决方法(0)

带有过期密钥的基于Java时间的映射/缓存

你们是否知道Java Map或类似的标准数据存储在给定的超时后自动清除条目?这意味着老化,旧的过期条目会自动"老化".

最好是在可通过Maven访问的开源库中?

我知道自己实现这些功能的方法,并且过去曾多次这样做过,所以我不是在这方面寻求建议,而是指向一个好的参考实现.

基于WeakReference的解决方案(如WeakHashMap)不是一个选项,因为我的键很可能是非实习字符串,我想要一个不依赖于垃圾收集器的可配置超时.

Ehcache也是一个我不想依赖的选项,因为它需要外部配置文件.我正在寻找一个仅限代码的解决方案.

java caching dictionary

241
推荐指数
4
解决办法
16万
查看次数

Java中的LRU缓存,具有泛型和O(1)操作

这是一个在求职面试中出现的问题.我们的想法是定义一个数据结构,而不是使用Java内置的LinkedHashMap.

LRU高速缓存删除最近最少使用的条目以插入新条目.因此,给出以下场景:

 A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)

如果A是最近最少使用的项目,如果我们要插入F,我们需要删除A.

如果我们通过(键,值)保存带有缓存条目的HashMap以及包含元素的键和使用时间的单独列表,则可以轻松实现这一点.但是,我们需要查询列表以找到最近最少使用的项目,具有潜在的O(n)时间复杂度.

如何在Java中为通用对象和O(1)操作实现此结构?

这与可能的重复不同,因为它侧重于效率(O(1)ops)和实现数据结构本身,而不是扩展Java.

java generics time-complexity data-structures

35
推荐指数
4
解决办法
6万
查看次数

为什么使用最近最少使用的简单缓存机制?

我使用JProfiler检查Java微服务,同时用JMeter模拟并发用户.使用JProfiler,我可以看到: 概观 线程历史 监控用法 监控历史 导航到方法find(),我意识到该方法有synchronized关键字 方法

在我看来,这种方法导致线程被阻塞的问题.但为什么要使用它?我可以从微服务中禁用这个缓存机制吗?微服务是用Java编写的,它使用Spring,Spring Boot.

谢谢

我从Monitor History的相同JProfiler快照中添加了屏幕截图,以显示ResolvedTypeCache类所花费的时间.有时候时间较少但有时却很大. 历史监视器更新

java spring profiling jprofiler spring-boot

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