Guava Cache源码解析】的更多相关文章

此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) 2.使用实例 具体在实际中使用的例子,去查看<第七章 企业项目开发--本地缓存guava cache>,下面只列出测试实例: import java.util.concurrent.ExecutionExc…
1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) 2.使用实例 具体在实际中使用的例子,去查看<第七章 企业项目开发--本地缓存guava cache>,下面只列出测试实例: import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit;…
概述: 本次主要是分析cache的源码,基本概念官方简介即可. 基本类图: 在官方的文档说明中,Guava Cache实现了三种加载缓存的方式: LoadingCache在构建缓存的时候,使用build方法内部调用CacheLoader方法加载数据 在使用get方法的时候,如果缓存不存在该key或者key过期等,则调用get(K, Callable)方式加载数据: 直接调用put方法来放置缓存 核心类及接口的说明,简单的理解如下: Cache接口是Guava对外暴露的缓存接口,对外的方法如下图,…
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. CacheBuilder-->maximumSize(long size)     /**      * 指定cache中最多能存放的entry(key-value)个数maximumSize      * 注意:      * 1.在entry个数还未达到这个指定个数maximumSize的时候,可能就会发生缓存回收      * 上边这种情况发生在cache size接近指定个数maximumSize…
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 下面介绍在LocalCache(CacheBuilder, CacheLoader)中调用的一些方法: CacheBuilder-->getConcurrencyLevel() int getConcurrencyLevel() {         return (concurrencyLevel == UNSET_INT) ? //是否设置了concurrencyLevel               …
目录 一.引子 二.使用方法 2.1 CacheBuilder有3种失效重载模式 2.2 测试验证 三.源码剖析 3.1 简介 3.2 源码剖析 四.总结 优点: 缺点: 正文 回到顶部 一.引子 缓存有很多种解决方案,常见的是: 1.存储在内存中 : 内存缓存顾名思义直接存储在JVM内存中,JVM宕机那么内存丢失,读写速度快,但受内存大小的限制,且有丢失数据风险. 2.存储在磁盘中: 即从内存落地并序列化写入磁盘的缓存,持久化在磁盘,读写需要IO效率低,但是安全. 3.内存+磁盘组合方式:这种…
在分布式系统中,应对高并发访问时,缓存.限流.降级是保护系统正常运行的常用方法.当请求量突发暴涨时,如果不加以限制访问,则可能导致整个系统崩溃,服务不可用.同时有一些业务场景,比如短信验证码,或者其它第三方API调用,也需要提供必要的访问限制支持.还有一些资源消耗过大的请求,比如数据导出等(参考 记一次线上Java服务CPU 100%处理过程 ),也有限制访问频率的需求. 常见的限流算法有令牌桶算法,漏桶算法,与计数器算法.本文主要对三个算法的基本原理及Google Guava包中令牌桶算法的实…
1. 简介 Guava Cache是指在JVM的内存中缓存数据,相比较于传统的数据库或redis存储,访问内存中的数据会更加高效,无网络开销. 根据Guava官网介绍,下面的这几种情况可以考虑使用Guava Cache: 1. 愿意消耗一些内存空间来提升速度. 2. 预料到某些键会被多次查询. 3. 缓存中存放的数据总量不会超出内存容量. 因此,Guava Cache特别适合存储那些访问量大.不经常变化.数据量不是很大的数据,以改善程序性能. 2. 类图 Guava Cache的类图中,主要涉及…
这个类实现了Spring的缓存拦截器 org.springframework.cache.interceptor.CacheInterceptor @SuppressWarnings("serial") public class CacheInterceptor extends CacheAspectSupport implements MethodInterceptor, Serializable { private static class ThrowableWrapper ext…
ThreadPoolExecutor使用方式.工作机理以及参数的详细介绍,请参照<第十二章 ThreadPoolExecutor使用与工作机理 > 1.源代码主要掌握两个部分 线程池的创建:构造器 提交任务到线程池去执行:execute() 2.构造器 2.1.一些属性: /** * runState provides the main lifecyle control, taking on values: * * RUNNING -> SHUTDOWN * On invocation…