import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.RemovalListener; import com.google.common.cache.RemovalNotification; public class GuavaCacheBuilderTest { static Cache<String, String> loadingCache = CacheBuilder.newBuilder() .maximumSize(20)//设置大小,条目数 .expireAfterWrite(20, TimeUnit.SECONDS)//设置失效时间,创建时间 .expireAfterAccess(20, TimeUnit.HOURS) //设置时效时间,最后一次被访问 .removalListener(new RemovalListener<String, String>() { //移除缓存的监听器 public void onRemoval(RemovalNotification<String, String> notification) { System.out.println("有缓存数据被移除了"); }}) .build(new CacheLoader<String, String>(){ //通过回调加载缓存 @Override public String load(String name) throws Exception { System.out.println("第一次加載緩存》》》》》》》》》》》"); return name + "-" + "iamzhongyong"; } }); public static void main(String[] args) throws Exception{ final GuavaCacheBuilderTest cache = new GuavaCacheBuilderTest(); for(int i=0;i<10;i++){ new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { cache.getNameLoadingCache("bixiao"); loadingCache.invalidate("bixiao"); } catch (Exception e) { e.printStackTrace(); } } }).start();; } } public void getNameLoadingCache(String name) throws Exception{ // System.out.println(cache.get(name)); //cache.invalidateAll(); String rs = loadingCache.get(name, new Callable<String>() { @Override public String call() throws Exception { // TODO Auto-generated method stub System.out.println("自定義第一次觸發"); return "1234"; } }); //System.out.println(rs); } }
相关推荐
本项目"spring-boot-redis-guava-caffeine-cache"主要探讨了如何在Spring Boot应用中集成Redis、Guava和Caffeine三种不同的缓存策略。 首先,Redis是一款开源的内存数据结构存储系统,常被用作数据库、缓存和消息...
这里提到了多级缓存的概念,通常包括堆内缓存(如Guava Cache)和分布式缓存(如Redis)。在代码示例中,我们看到一个典型的多级缓存访问流程:首先尝试从JVM堆缓存中获取数据,若未命中,则查询分布式缓存,最后再...
总结起来,这个压缩包包含了一个针对Scala Partest的特定版本和一个对Guava Cache的重要扩展,两者都是软件开发中的实用工具,分别提升了Scala测试的效率和Java缓存的弹性。通过深入研究和利用这些资源,开发者可以...
- **Guava Cache**:Google提供的Guava库包含了强大的缓存功能。通过`LoadingCache`接口,我们可以自定义缓存加载逻辑,例如使用`CacheLoader`加载数据到缓存。源码中,`get`方法会检查缓存中是否存在指定键,若不...
开源项目-goburrow-cache.zip 是一个基于Go语言实现的本地缓存库,它受到了Google的Guava Cache的启发,旨在为Go开发者提供类似于Guava Cache的功能。Guava Cache是Java开发中的一个流行缓存解决方案,而goburrow-...
6. **其他缓存技术**:除了OSCache和JCS,JAVAWeb还有其他缓存技术,如Hibernate的二级缓存、 Ehcache、Guava Cache等,它们各有特点,适应不同的场景。 总的来说,JAVAWeb缓存技术的选型和使用是一项复杂而重要的...
Guava的Cache模块是其一大亮点,它提供了一种强大的本地缓存解决方案。开发者可以通过自定义加载函数、过期策略、大小限制等方式来管理缓存。缓存的使用可以显著提高应用程序的性能,减少对远程服务或数据库的访问...
多级缓存通常包括本地缓存(如Guava Cache)、远程分布式缓存以及二级缓存等层次。通过合理设置缓存策略,可以显著降低对数据库的访问压力。在微服务中,你需要掌握缓存的生命周期管理、缓存穿透、缓存击穿和缓存...
"SpringBoot集成Spring Cache缓存示例代码" SpringBoot框架提供了强大的缓存机制,通过集成Spring Cache,可以大大提高应用程序的性能。在本文中,我们将介绍如何在SpringBoot中使用Spring Cache缓存。 ...
Spring支持多种缓存框架,如 EhCache、Hibernate 的二缓、Guava Cache等。在这里,我们将以EhCache为例,介绍如何在Spring中配置二级缓存。 1. 引入依赖:在项目中,我们需要添加EhCache的依赖,通常是在`pom.xml`...
常用的Java缓存框架有Ehcache、Guava Cache和Spring Cache等。例如,在`java写缓存.docx`文件中,可能详细讲解了如何利用这些库创建缓存策略,包括设置缓存大小、过期策略、并发控制等。在自定义缓存实现时,需要...
1. **本地缓存**:使用Java集合类如HashMap或者特定库如Guava Cache来实现的本地内存缓存,用于快速访问最近使用过的数据。 2. **分布式缓存**:通过连接远程缓存服务(如Redis、Memcached),实现跨节点的数据共享...
3. **Guava库的`LoadingCache`**:Google的Guava库提供了强大的缓存功能,可以自动处理缓存过期和清理。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; ...
此外,这也能帮助开发者扩展知识,比如了解如何将这种简单的缓存机制与更复杂的缓存系统,如Ehcache、Guava Cache或Spring Framework的Cache抽象相结合,以适应更大型的分布式系统需求。 总的来说,"基于Java的实例...
在Java中,缓存可以是内存中的数据结构,如HashMap,也可以是专门的缓存库,如 Ehcache、Guava Cache 或 Redis。 2. **CacheUtil 类**:这个工具类很可能是为了简化缓存操作而设计的,它封装了缓存的增删改查等基本...
9. Java缓存API:如Guava Cache、Spring Cache等的使用方法。 10. 测试:如何编写测试用例来验证缓存功能的正确性和效率。 通过研究这个"cache-demo-2.5.zip",开发者可以深入了解阿里巴巴系统中的缓存管理实践,并...
- **缓存测试**:Guava的Cache模块有全面的测试,确保缓存的实现和行为符合预期。 - **函数式编程**:测试了函数式接口、 Predicates、Functions等,以支持Java 8的Lambda表达式。 2. **FileCache**: - **缓存...
Guava的Cache提供了内存管理和数据缓存的解决方案,支持过期策略、最大容量限制等功能。此外,Guava的Persister接口允许开发者自定义数据持久化策略,方便在内存和持久存储间切换。 总结起来,Guava 22.0是一个功能...
在Java中,我们可以使用各种库来实现缓存机制,如Guava Cache、Spring Cache等。本项目可能是一个用Java编写的自定义缓存模拟器,用于教育目的或进行性能分析。 首先,我们需要了解缓存的基本概念,包括缓存命中率...
4. **缓存策略**:测试缓存系统(如Guava Cache、Ehcache)的配置,确保过期数据能够被及时移除。 总的来说,MAT工具在测试类中的运用是排查和优化Web应用内存性能的关键步骤。通过编写测试用例模拟实际问题,结合...