Google Guava 的 CacheLoader loadAll() 方法实现问题

2023-12-28

我有兴趣知道 google guava 11.0 库中引入的 loadAll 方法实现的有效方式是什么。

下面是描述加载所有方法实现扩展的代码
根据 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 无法转换为 java.util.Map (知道 Loading Cache 对象不能是 Map 类型)

如果这不是使用 LoadingCache 的正确实现方式,那么 LoadingCache的Component中是如何注入数据,使其可以作为Cache使用的。


Your getAllGraphsFromDatabase方法应该从底层数据存储中获取值。这LoadingCache实现会为您将返回的值添加到映射中。

我认为你的加载方法应该是这样的:

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Guava 的 CacheLoader loadAll() 方法实现问题 的相关文章

  • 如何查看Pocketsphinx词典中是否存在该单词?

    我只是想看看字典文件中是否存在字符串 字典文件位于问题底部 我想检查语音识别器是否可以识别单词 例如 识别器将无法识别字符串ahdfojakdlfafiop 因为字典中没有定义 所以 我可以检查某个单词是否在 pocktsphinx 词典中
  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr

随机推荐

  • 应用程序部署到II后如何调试?

    大家好 我正在使用 net 2008 和 Oracle 10g 作为数据库来开发应用程序 我已经在 IIS 中部署了该应用程序 现在当两个用户登录到同一应用程序时 同一页面一次会出现错误 如下所示 必须为此操作打开连接 无法访问已释放的对象
  • 类路径似乎正确,但 JVM 仍然无法找到或加载主类

    我对编程和 java 比较陌生 正在尝试学习如何从命令行创建用户定义的包 我得到以下信息 Error Could not find or load main class TestPhone 我已经查看了有关此类错误的帖子 包括评论良好的帖子
  • 导入 pandas 模块给出属性错误

    我最近从 Windows 更改为 Ubuntu 12 04 LTS 并且正在尝试掌握 Python 我复制了几个示例命令http pandas pydata org pandas docs stable 10min html http pa
  • 非法字符导致 xml 解析错误

    所以 我问这是最后的手段 因为我完全没有想法 我有一个 Windows ASP NET ASMX Web 服务应用程序 它返回一个带有 的序列化 Person 对象 姓名 地址 电子邮件 等 但是 xml 中的一些属性的编码非常奇怪 例如
  • 如何在 Android Activity 中垂直滚动

    我有以下布局
  • 尝试使用带有nodeJS的构建脚本构建LESS(更少的CSS)

    我们正在使用 NodeJS 来构建我们的项目 我们已将 LESS CSS 集成为该项目的一部分 我们试图保持我们的构建干净 并希望能够调用 lessc 命令 或类似的命令 来构建我们的 LESS 文件 LESS 文档不是很深入 但希望与社区
  • 错误:“experimental.runtime”需要“experimental.reactRoot”与 React 18 一起启用

    我有一个项目 next 12 1 6 React 18 1 React dom 18 1 现在我想向其中添加 React 服务器组件 更新了我的next config js像这样 const nextConfig distDir next
  • “安全组是有状态的”是什么意思?

    在AWS文档中它说 安全组是有状态的 如果您从实例发送请求 则无论入站安全组规则如何 都允许该请求的响应流量流入 我不明白这种行为如何被视为有状态 无国籍情况将如何进行 我认为响应流量将取决于某种类型的规则 但这与状态有何关系 Thanks
  • 如何在 Haskell 中创建数字列表

    我需要创建一个函数来制作行和列大小的板 然后用零填充它 mkBoard 2 3 会使 0 0 0 0 0 0 我真的不知道从哪里开始 因为我是 Haskell 编程的新手 我想这个函数会是这样的 mkBoard m n m take n r
  • PyCharm 自动完成导入模块

    我是 Python 新手 正在尝试熟悉其语法和语言 我尝试了一下 PyCharm 发现它非常舒服 唯一的问题是自动完成功能没有像我预期的那样工作 作为学习过程和研究某些模块的一部分 它对我来说非常重要 即使没有自动完成功能 我的代码也可以工
  • Rails 4 覆盖设备如何响应错误路径

    我已经为此苦苦挣扎了一段时间 我有一个 Rails4 Devise 3 1 应用程序 系统中有两个用户 毕业生 雇主 一个设计用户可以通过多态性成为毕业生或雇主 profile协会 我有毕业生通过以下方式注册 graduate sign u
  • Vue 中井号 (#) 的含义是什么?

    我是一个相当新的 Vue 开发人员 在堆栈中的每个地方 我都会在组件组件中看到这样的代码
  • Android 应用市场更新传播

    我将新版本的 APK 上传到 Android 市场并 激活 然后保存 我的发布商 主页报告说这是我想要的版本 但应用程序市场中的应用程序下载页面仍然显示以前的版本 有传播期吗 是的 有一个传播期 您的应用最多可能需要 48 小时才会出现在市
  • 干扰器:门控序列

    我正在研究 Java 中的 Disruptor 我不明白门控序列的含义是什么 我知道它的核心部分是环形缓冲区 每个缓冲区都与一个序列号相关联 实际上LMAX实现的核心部分是Sequencer和它的Sequences 所以ringBuffer
  • Python selenium 进入#document

    我怎样才能继续寻找 document中的元素 div document div Element I want to find div div 我认为你的问题不在于a 文档但与iframe from selenium import webdr
  • Git 初学者:权威的实用指南

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 好吧 看完后PJ Hyett 的这篇文章 https stackoverflow com qu
  • 角度错误“没有 InjectionToken ORIGIN_URL 的提供程序!”

    我正在尝试通过以下方式制作一个具有 ngx translate 功能的 Angular 应用程序this https medium com letsboot translate angular 4 apps with ngx transla
  • X509Certificate2 p12 是否需要存储?

    运行以下代码时出现问题 X509Certificate2 cert new X509Certificate2 C file p12 password X509KeyStorageFlags Exportable RSACryptoServi
  • PWA 调试 chrome“添加到主屏幕”按钮不执行任何操作

    我正在尝试将 添加到主屏幕 提示功能添加到我的网站 现在我已经阅读了谷歌开发者文章并且我已经设置好了一切 现在 如果我尝试使用 Chrome 开发工具 gt 应用程序 gt 清单中的 添加到主屏幕 按钮手动将页面添加到主屏幕 则不会发生任何
  • Google Guava 的 CacheLoader loadAll() 方法实现问题

    我有兴趣知道 google guava 11 0 库中引入的 loadAll 方法实现的有效方式是什么 下面是描述加载所有方法实现扩展的代码根据 CachesExplained 的示例 LoadingCache