- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我很想知道 google guava 11.0 库中引入的 loadAll 方法实现的有效方式是什么。
下面是描述load all方法实现扩展的代码
根据 CachesExplained 的示例
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder().maximumSize(1000)
.refreshAfterWrite(1, TimeUnit.MINUTES)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) { // no checked exception
return getGraphFromDatabase(key);
}
public Map<Key, Graph> loadAll(Iterable<? extends K> keys) {
return getAllGraphsFromDatabase(keys);
}
}
);
private Map<Key, Graph> getAllGraphsFromDatabase(Iterable<? extends key> keys)
{
lListOfGraph = //resultset got from DB Call
for (lCount = 0; lCount < lListOfGraph.size(); lCount++)
{
lGraph = (Graph)lListOfGraph.get(lCount).get(0);
graphs.asMap().put((key , lGraph);
}
return (Map<key, Graph>) graphs;
}
这里的返回类型是 Map 抛出错误 java.lang.ClassCastException:com.google.common.cache.LocalCache$LocalLoadingCache cannot be cast to java.util.Map (知道加载缓存对象不能是类型的事实 map )
如果这不是使用 LoadingCache 的正确实现方式,那么LoadingCache的Component中数据是如何注入(inject)的,从而可以作为Cache使用。
最佳答案
您的getAllGraphsFromDatabase
方法应该从底层数据存储中获取值。 LoadingCache
实现会为您处理将返回值添加到 map 中。
我认为你的加载方法应该是这样的:
private Map<Key, Graph> getAllGraphsFromDatabase(Iterable<? extends key> keys)
{
final List<Graph> lListOfGraph = //resultset got from DB Call
final Map<Key, Graph> map = new HashMap<Key, Graph>(listOfGraph.size());
for (final Graph graph : lListOfGraph)
map.put(graph.getKey(), graph);
return map;
}
关于java - Google Guava 的 CacheLoader loadAll() 方法实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794297/
使用 luajit 查看默认的 Lua cpath: luajit -e "print(package.cpath)" 我得到: ./?.so;/usr/local/lib/lua/5.1/?.so;
我需要在分页器中显示表中的数据,同时获取子表中记录的计数。有太多子记录无法加载到内存中并进行计数,因此我想修改在我的 EntityRepository 中构建查询的方式。 理想情况下,我不想重新实现寻
我可以使用 GreeDAO 成功地异步插入行的 AsyncSession像这样: getMyObjectDao().getSession().startAsyncSession().insertOrR
本文整理了Java中org.yaml.snakeyaml.Yaml.loadAll()方法的一些代码示例,展示了Yaml.loadAll()的具体用法。这些代码示例主要来源于Github/Stacko
我有一个由国家组成的数据库表。在我扩展 HibernateDAOSupport 的 DAO 中,以下方法... public List getCountries() { return getH
我很想知道 google guava 11.0 库中引入的 loadAll 方法实现的有效方式是什么。 下面是描述load all方法实现扩展的代码 根据 CachesExplained 的示例 Lo
我非常喜欢 Guava 11 的 CacheLoader(感谢 Google!)的两件事是 loadAll(),它允许我一次加载多个 key ,以及 reload(),当它“过时”时,它允许我异步重新
我是一名优秀的程序员,十分优秀!