guava 相关问题

用于Java和Android开发的Google核心Java库。

清理过期的哈希映射

我需要一个在键值对过期后运行一段代码的数据结构。例如,我有一个密钥和一个连接对象存储在即将过期的哈希图中。我需要这个即将过期的 hashma...

回答 2 投票 0


如何在构建 Gradle 项目时排除 com.google.guava 依赖项的变体之一

我已将以下依赖项包含在我的 gradle 项目的 build.gradle 文件中,以便与 VertexAi LLM 库一起使用。 实现组:'dev.langchain4j',名称:'langchain4j-vertex-ai',versi...

回答 3 投票 0

无法解析符号“MoreObjects”

我有这个旧的遗留代码: 依赖 com.google.guava:guava:15.0 @实体 @Table(名称=“配置文件”) 公开课简介{ @ID @Column(name = "id", nullable = false)

回答 1 投票 0

如何避免Gradle多模块项目中多余的configuration.all属性声明?

我正在开发一个Gradle多模块项目,其中服务A(库模块)依赖于最新版本的Guava(33.1.0-jre)。为了确保 Guava 功能正常,服务 A 的 build.gradle

回答 1 投票 0

如果 Guava 缓存绑定到 MeterRegistry,EhCache 指标不会出现在 Prometheus 中

隐式创建的EhCache缓存 我有一个 Spring 组件,它使用具有以下配置的文件 ehcache.xml 声明一些缓存: 隐式创建的EhCache缓存 我有一个 Spring 组件,它使用具有以下配置的文件 ehcache.xml 声明一些缓存: <?xml version="1.0" encoding="UTF-8"?> <eh:config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eh="http://www.ehcache.org/v3" xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.3.xsd"> <eh:cache alias="Cache1"> <eh:expiry> <eh:ttl unit="minutes">1</eh:ttl> </eh:expiry> <eh:resources> <eh:heap>10000</eh:heap> </eh:resources> </eh:cache> <!-- [...] --> </eh:config> 然后使用类似于以下内容: import org.springframework.cache.annotation.Cacheable; public class ThingDoer { @Cacheable("Cache1") public Integer doSomethingCached(int value) { return value + 3; } // ... } 这样,我可以看到 Prometheus 中出现不同的缓存指标: bash> 2>&1 curl -v --silent 'http://localhost:9000/actuator/prometheus' | grep cache_gets | sort cache_gets_total{cache="Cache1",cache_manager="cacheManager",hostname="localhost",name="Cache1",result="hit",} 0.0 cache_gets_total{cache="Cache1",cache_manager="cacheManager",hostname="localhost",name="Cache1",result="miss",} 0.0 cache_gets_total{cache="Cache2",cache_manager="cacheManager",hostname="localhost",name="Cache2",result="hit",} 0.0 cache_gets_total{cache="Cache2",cache_manager="cacheManager",hostname="localhost",name="Cache2",result="miss",} 0.0 cache_gets_total{cache="Cache3",cache_manager="cacheManager",hostname="localhost",name="Cache3",result="hit",} 0.0 cache_gets_total{cache="Cache3",cache_manager="cacheManager",hostname="localhost",name="Cache3",result="miss",} 0.0 [...] 我在文件中定义的所有缓存ehcache.xml都会自动公开它们的指标。 添加自制缓存 现在,我创建了一个自制的缓存,它在查询时执行复杂的操作,并为此使用了 com.google.common.cache.LoadingCache 接口,因为它的目的是替换此类缓存的另一个实例,并对其余代码进行尽可能少的更改。因此,我创建了一个自定义缓存,具有以下签名: import com.google.common.cache.AbstractLoadingCache; public class CustomCache extends AbstractLoadingCache<String, Object> { public CustomCache(Function<String, Object> valueLoader) { // ... } // ... } 它正确声明了一个 stats() 方法,该方法返回包含缓存统计信息的 com.google.common.cache.CacheStats。其构造函数的参数 valueLoader 用于在缓存中缺少新值时加载新值。 现在,这是如何使用此缓存的草图: import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.function.Function; public class CustomThingDoer { private final CustomCache customCache; public CustomThingDoer() { this.customCache = new CustomCache(this::loadNewObject); } public Optional<Object> doSomethingCached(String value) { try { return Optional.of(customCache.get(value)); } catch (ExecutionException e) { System.out.println("Something wrong happened"); return Optional.empty(); } } private Object loadNewObject(String value) { // Do something non-static } } 由于缓存旨在直接调用其方法的地方使用(即没有 @Cacheable 注释来使用此缓存,而是使用对 get 的调用),并且由于加载缺失值的方法取决于在定义它的类的实例上(即,所讨论的方法是提取数据库,其代码取决于CustomThingDoer实例中定义的内容),我希望将其手动注册到MeterRegistry中。 为此,我将 MeterRegistry 的 bean 传递给构造函数中的 CustomThingDoer,并执行以下操作: GuavaCacheMetrics.monitor(meterRegistry, this.customCache, "MyCustomCache"); 消失的缓存指标 但是现在这已经完成了,这就是我在 Prometheus 中获得的缓存指标: bash> 2>&1 curl -v --silent 'http://localhost:9000/actuator/prometheus' | grep cache_gets | sort cache_gets_total{cache="MyCustomCache",hostname="localhost",result="hit",} 0.0 cache_gets_total{cache="MyCustomCache",hostname="localhost",result="miss",} 0.0 现在,仅显示我的自定义缓存的指标。此外,字段 cache_manager 不存在。 我的怀疑是,由于我手动注册缓存,一些谓词被 automagic 破坏了,并且它永远不会将自动生成的 EhCache 缓存添加到 MeterRegistry。 我想要同时拥有自定义缓存的指标以及隐式创建的 EhCache 缓存的指标。如果可能的话,我希望不必更改所使用的接口(即`com.google.common.cache.LoadingCache),以便对代码(并且老实说,对单元测试)进行最少的更改。有人知道问题可能是什么,或者我可能有什么解决方案吗? 这似乎与 Micrometer 中的一个长期错误有关:https://github.com/micrometer-metrics/micrometer/issues/877。 它在几年前就被修复了,但它仍然有副作用,其中每个指标名称必须具有相同的标签键集,否则有些不被考虑在内。 https://github.com/micrometer-metrics/micrometer/issues/877#issuecomment-944894069

回答 1 投票 0

无法解析 com.google.guava:guava:31.1.-jre

我正在尝试下载依赖项 serenity core 4xx 版本(testImplementation "net.serenity-bdd:serenity-core:4.0.0-beta-1"),但它抛出以下错误: 无法解析com....

回答 1 投票 0

Java:通过将类型作为方法参数传递来实例化参数化类

我的问题是有一个名为 TypedProducer 的通用类用于键和值,我必须从配置中实例化它(假设有人告诉我键是 Integer 并且...

回答 1 投票 0

使用 .. 父目录说明符(“点点”)解析路径名,而不解析符号链接

给定 /a/./b/c/../d 这样的路径,我想删除所有“当前目录”指示符(即句点)和“父目录”指示符(即..) ,给出 a/b/d。 我可以使用文件。

回答 4 投票 0

合并时`onClose`是否会传播到底层流?

我的代码将多个 IO 流合并(平面映射、连接)到单个流中。使用带有 try 的资源块包装该流是否可以正确关闭底层流? 公开

回答 1 投票 0

如果mappingFunction在Caffeine中失败,则使Cache.get(key,mappingFunction)也使所有等待线程失败

如果mappingFunction在Caffeine中失败,则使Cache.get(key,mappingFunction)也使所有等待线程失败 如果 3 个线程并行,那么目前如果第一个 get 调用在 1 分钟后失败,那么第二个......

回答 1 投票 0

咖啡因缓存删除侦听器可能会针对同一条目多次(同时)调用

咖啡因缓存删除侦听器可能会针对同一条目多次(同时)调用。 假设 Entry 已被删除。 删除侦听器可以多次(同时)运行

回答 1 投票 0

在模块 guava-20.0.jar 中发现重复的类 com.google.common.util.concurrent.ListenableFuture (com.google.guava:guava:20.0)

当我在 app/build.gradle 中使用实现 'com.google.firebase:firebase-inappmessaging-display:17.2.0' 时,出现以下错误: 重复类 com.google.common.util.concurrent.ListenableFuture ...

回答 11 投票 0

在java中将Maps.difference(firstMap, secondaryMap)转换为Map

我有一个Java代码来查找两个JSON字符串之间的差异。如下所示: String afterString = converterUtil.convertObjectToJson(targetObject); Gson g = new Gson(); 类型 m...

回答 1 投票 0

咖啡因缓存在 Spring Boot 中不起作用

我有一个 Spring Boot 应用程序,其中有以下 Caffeine 实现来帮助我缓存一些令牌: 缓存配置.java @配置 @启用缓存 @Profile("!测试") 噗...

回答 1 投票 0

Gradle 依赖项 - 将一个模块替换为另一个模块

在我的项目中,gradle 显示了依赖关系: com.google.guava:番石榴:19.0 -> 20.0-rc1 com.google.guava:guava-jdk5:17.0 Afaik gradle 选择最新版本的同名依赖项,这...

回答 1 投票 0

如何反转地图

我们来一张地图: A -> {1, 2, 3} B -> {3, 4, 5} C -> {2, 3, 5} 我需要反转这张地图并获得: 1 -> {A} 2 -> {A,C} 3 -> {A、B、C} 4 -> {B} 5 -> {B,C} 我用这个c做到了...

回答 2 投票 0

保证元素唯一性的队列?

我正在寻找 java.util.Queue 的实现或 Google 集合中的某些东西,它们的行为类似于队列,但也确保队列的每个元素都是唯一的。 (所有进一步插入...

回答 10 投票 0

无法通过 Kotlin Multiplatform 在 iOS 中使用 Guava 库

我正在尝试使用针对 Android 和 iOS 的 Kotlin Multiplatform。但是,当使用任务“iosSimulatorArm64”运行测试时,这些导入显示错误“未解决的引用...

回答 1 投票 0

Java 将值映射到逗号分隔的字符串

有没有一种有效的方法可以使用 guava 或 StringUtils 将 java 映射值转换为逗号分隔的字符串? Map testMap = new HashMap<>(); testMap.put("key1", "val1"); t...

回答 8 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.