Tag: 缓存

java缓存方法的结果

我使用 JMH来指定操作的复杂性。 如果您从未与JMH合作过,请不要担心。 JMH将多次启动estimateOperation方法,然后获得平均时间。 问题:[narrow]这个程序每次都会计算Math.cbrt(Integer.MAX_VALUE)吗? 或者它只计算一次然后返回缓存结果? @GenerateMicroBenchmark public void estimateOperation() { calculate(); } public int calculate() { return Math.cbrt(Integer.MAX_VALUE); } 问题:[broad]: JVM是否会缓存方法的结果?

是否真的缓存了java.lang.String的哈希码?

String s1 = “String1”; System.out.println(s1.hashCode()); // return an integer i1 Field field = String.class.getDeclaredField(“value”); field.setAccessible(true); char[] value = (char[])field.get(s1); value[0] = ‘J’; value[1] = ‘a’; value[2] = ‘v’; value[3] = ‘a’; value[4] = ‘1’; System.out.println(s1.hashCode()); // return same value of integer i1 即使我在reflection的帮助下更改了字符,也会保留相同的哈希码值。 这里有什么我需要知道的吗?

第三方缓存软件 – 它们提供了什么?

为什么要使用开箱即用的缓存产品,如ehcache或memcached? 不是一个简单的hashmap吗? 我知道这是一个天真的问题但我希望看到一些关于何时简单的hashmap足够并且第三方缓存解决方案过度的答案。

Hibernate Bi-Directional多对多关联创建重复

我的问题非常类似于这个具有二级缓存的Hibernate Bi-Directional ManyToMany更新 我上课如下所示 @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) @Entity public class A{ private int id; private List listB; … @Cache (usage = CacheConcurrencyStrategy.TRANSACTIONAL) @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity = B.class) @JoinTable(name = “A_B”, joinColumns = { @JoinColumn(name = “a_id”) }, inverseJoinColumns = { @JoinColumn(name = “b_id”) }) public List getListB() { return listB ; } } […]

java cache hashmap每日到期

我想有一个HashMap ,每天午夜,缓存都会过期。 请注意它是J2EE解决方案,因此多个线程可以访问它。 在Java中实现它的最佳方法是什么?

如何远程查看和编辑Infinispan缓存数据

我在WildFly 8.2服务器中嵌入了Infinispan缓存。 我在添加了standalone.xml : …并像这样注入缓存容器: @Singleton @Startup public class CacheManager { @Resource(lookup = “java:jboss/infinispan/container/mycache”) private CacheContainer container; . . . . } 我可以在我的应用程序中使用缓存。 但是,要求是使用任何缓存监视API远程查看/编辑/删除缓存数据。 通过jconsole,我可以看到缓存信息,但不能看到缓存的数据。 如何远程访问缓存?

为什么Cache.asMap()与Cache.size()不一致?

在Guava库中,我很困惑为什么Cache.asMap()与Cache.size()不一致,除非Cache.cleanUp() 。 Cache cache = CacheBuilder.newBuilder() .expireAfterWrite(1, TimeUnit.SECONDS) .build(); cache.get(…); … //After some seconds, all entries are expired. //cache.asMap() is EMPTY Map, but cache.size() != 0 所以我的问题是: Cache.asMap()与Cache.size()不一致是错误吗? 虽然我注意到Cache.size()的javadoc是: /** * Returns the **approximate** number of entries in this cache. */ 我猜它可能与并发环境有关。 而Cache.cleanUp()究竟做了什么?

简单的Java缓存库或设计模式?

我需要经常访问耗时计算的结果。 结果不经常更改,因此我不得不不时重新计算数据,但可以暂时使用过时的结果。 最简单的方法是什么?现有的库方法或设计模式是什么? 我在想类似的东西 private static List myCachedList = null; … // refresh list once in 3600 seconds if (needsRefresh(myCachedList, 3600)) { // run the calculation myCachedList = … } // use either updated or previous value from here on 一个正确的实现可能不是微不足道的,它可能必须处理线程安全,竞争条件等,所以我宁愿使用一个经过validation的实现,而不是在我自己。

在JDBC中缓存

我想在JDBC中使用缓存。 我怎样才能做到这一点? 是否有任何内置机制或我是否必须使用第三方解决方案? 使用JDBC进行缓存的最佳做法是什么。 谢谢你,杰克 编辑:CachedRowSet怎么样? http://docs.oracle.com/javase/tutorial/jdbc/basics/cachedrowset.html

如何让Spring缓存存储ResponseBody而不是中间对象

我使用spring cache和this方法,它将查询的值作为JSON返回: @RequestMapping(“/getById”) @ResponseBody @Cacheable public HugeValue getHugeValueFromSlowFoo( @RequestParam(value = “id”, defaultValue = “”) String id ) { return Foo.getById( id ); } 这工作正常,HugeValue对象存储在缓存中(在本例中为Hazelcast)。 我想进一步改进这个,因为从HugeValue创建JSON的时间非常长。 我可以告诉spring cache缓存我对象的JSON-ified版本吗? 我使用Jackson和Spring Boot 1.2以及Spring 4.1