2
|
pauljwilliams · 技术社区 · 14 年前 |
![]() |
1
3
我不认为那是浪费。这就是缓存的工作原理。您将传入的对象与最近处理的对象进行比较,当您得到“命中”时,可以避免调用
缓存是否真正适用于您的应用程序将取决于许多因素,如:
(最后一点很难预测/测量,但它包括表示缓存结构所需的额外内存,GC必须处理缓存及其内容“可访问”这一事实,以及与弱引用相关联的GC开销。。。假设你使用它们。) 最终,缓存解决方案的成功(或其他)取决于系统的 平均的 行为 现实的 工作量。一些缓存的结果再也不会被使用的事实与此并不相关。
再说一次,我也不是“笨重”的。这是实现缓存的方法。
再说一遍,我看不出你论点的逻辑。如果一天处理数百万个对象,而你保留(比方说)最后5分钟的价值,那就只有数万个要缓存的对象。这不是什么“坏消息”。 如果你 真正地 每天要处理数百万个物体,然后:
|
![]() |
2
0
您总是调用流程方法吗(我的意思是,您从来没有直接调用get…Fact方法吗)?如果是这样,那么您肯定知道getFirstFact总是在getSecondFact之前调用。 然后,您可以使用私有字段在getFirstFact方法中缓存someExpensiveMethod的布尔输出,并在getSecondFact方法中重用该值:
|
![]() |
3
0
从你的题目我猜你不想
因为这意味着当更改其中一个方法时,您无法访问
当然,这不适用于多线程。(至少要确保
|
![]() |
4
0
我会考虑引入一个工厂方法和一个封装预处理的新对象。这样,一旦对象超出范围,jvm就可以丢弃预处理的数据。
|
![]() |
5
0
除了斯蒂芬的回答,我建议你看看谷歌番石榴。有一个计算地图的概念,适合你在这里面临的问题。我写了一篇关于这个的文章 here . 在代码方面,这是我的建议:
|
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 7 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 7 月前 |
![]() |
rudraraj · java中未声明最终变量 7 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 7 月前 |