草庐IT

java - 我应该如何使用 Guava 的 Hashing#consistentHash?

我正在考虑使用consistenthash我正在编写的一些java代码中的算法。guavaHashing库有一个consistentHash(HashCode,int)方法,但是thedocumentation比较缺乏。我最初的希望是我可以使用consistentHash()来实现简单的session亲和性,从而在一组后端服务器之间有效地分配负载。有人有如何使用此方法的真实示例吗?特别是我关心管理从目标范围中移除存储桶。例如:@TestpublicvoidtestConsistentHash(){Listservers=Lists.newArrayList("server1","ser

java - Guava 缓存和保留检查的异常

我正在重构一些代码以使用guavaCache.初始代码:publicPostgetPost(Integerkey)throwsSQLException,IOException{returnPostsDB.findPostByID(key);}为了不破坏某些东西,我需要按原样保留任何抛出的异常,而不是包装它。当前的解决方案看起来有些难看:publicPostgetPost(finalIntegerkey)throwsSQLException,IOException{try{returncache.get(key,newCallable(){@OverridepublicPostcall(

java - Guava 缓存的预加载值

我有一个要求,我们从数据库加载静态数据以用于Java应用程序。任何缓存机制都应具有以下功能:从数据库中加载所有静态数据(一旦加载,此数据不会改变)从数据库加载新数据(启动时数据库中的数据不会改变,但可以添加新数据)所有数据的延迟加载不是一个选项,因为应用程序将部署到多个地理位置并且必须与单个数据库进行通信。延迟加载数据会使对特定元素的第一次请求太慢,因为应用程序与数据库位于不同的区域。我在Guava中成功使用了MapMakerAPI,但我们现在正在升级到最新版本,我似乎无法在CacheBuilderAPI中找到相同的功能;我似乎找不到在启动时加载所有数据的干净方法。一种方法是从数据库中

java - 我可以用 Guava 将文本换行到给定的宽度吗?

我希望能够将长字符串包装成固定长度。Guava中有没有办法做到这一点??ApacheCommons/Lang有方法WordUtils.wrap(String,length)这正是我需要的。Guava有简单的方法来完成这个吗?我知道我可以使用Splitter.fixedLength(int)进行硬包装,但我想要一个软包装。更新:这个问题现在有赏金。显然,此功能在Guava开箱即用中不可用,因此赏金用于使用Guava中的内容的最简洁(或最完整)和类似Guava的答案。不允许使用除Guava之外的库。 最佳答案 我们(Guava)强烈建议

java - 使用没有加载功能的 Guava 缓存

我的java应用有一个缓存,我想换掉当前的缓存实现并用guava缓存替换它。不幸的是,我的应用程序的缓存使用似乎与guava缓存的工作方式不匹配。我想要的只是能够创建一个空缓存,使用“get”方法从缓存中读取一个项目,并使用“put”方法将一个项目存储在缓存中。我不希望“get”调用尝试将项目添加到缓存中。看来LoadingCache类有我需要的get和put方法。但是我无法弄清楚如何在不提供“加载”功能的情况下创建缓存。我的第一次尝试是这样的:LoadingCacheCACHE=CacheBuilder.newBuilder().build();但这会导致编译器错误:不兼容的类型;不

java - Scala 的 flatMap 的 Guava 等价物是什么?

浏览https://github.com/google/guava/wiki/FunctionalExplained我看到像transform这样的操作,这将转换一个列表但保持相同的基数。如何执行导致不同基数的转换?例如(伪代码)List(1,2,3).transform(i=>List(i,i))->List(1,1,2,2,3,3) 最佳答案 从版本13开始,有transformAndConcat在FluentIterable. 关于java-Scala的flatMap的Guava等

java - 创建 Guava 多图的紧凑方法?

如果我想创建一个具有简单默认值的新Multimap,我目前需要执行以下操作:privatefinalMultimapprovidersToClasses=Multimaps.newListMultimap(newHashMap>(),newSupplier>(){@OverridepublicListget(){returnLists.newArrayList();}});...因为如果Maps.newHashMap用于支持映射,Java无法推断出正确的类型。当然,这可以重构为一个单独的方法,但是已经有办法写得更简洁了吗? 最佳答案

java - Guava :Set<K> + Function<K,V> = Map<K,V>?

有没有一种惯用的方法来获取Set和Function,并获得Map实时取景?(即Map由Set和Function组合支持,例如,如果将元素添加到Set,则相应的条目也存在于Map中。(参见例如Collections2.filter了解更多关于实时取景的讨论)如果不需要实时取景怎么办?还有比这更好的吗:publicstaticMapnewMapFrom(Setkeys,Functionf){Mapmap=Maps.newHashMap();for(Kk:keys){map.put(k,f.apply(k));}returnmap;} 最佳答案

java - 使用 Guava 从列表中删除重复项

我们如何在Guavaapi的帮助下从List中删除重复项?目前我正在关注这个:privateListremoveDuplicate(Listlist){returnnewArrayList(newLinkedHashSet(list));} 最佳答案 可能最有效的方法是ImmutableSet.copyOf(list).asList(),它消除了重复并保留了迭代顺序。(但是您使用LinkedHashSet的实现几乎同样有效,并且不会抛出空值,万一您实际上希望集合中有空值。) 关于java

java - Guava ImmutableMap 的访问速度明显比 HashMap 慢

在对一些高吞吐量数据结构进行内存基准测试时,我意识到我可以使用ImmutableMap只需进行一点重构。认为这将是一个改进,我将其投入其中,并惊讶地发现它不仅比HashMap慢,而且在单线程环境中它似乎一直更慢,甚至比ConcurrentHashMap!你可以看到fullbenchmark测试的内容非常简单,计算获取map中可能存在的大量随机字符串需要多长时间。publicstaticvoidtimeAccess(Mapmap){Randomrnd=newRandom(seed);intfoundCount=0;longstart=System.nanoTime();for(inti=