Guava
沧南
这个作者很懒,什么都没留下…
展开
-
Guava缓存器源码分析——数据查询
Guava缓存器的数据查询函数调用: get(K) —— localCache.getOrLoad(key) —— get(key, defaultLoader)(如果创建的为Cache缓存,defaultLoader设为null)具体步骤:1、计算key的哈希值。 LocalCache会使用分段锁来原创 2013-09-17 13:35:52 · 3354 阅读 · 0 评论 -
Guava源码分析——Proxy模式(TimeLimiter)
代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引用。主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。in原创 2013-09-29 11:20:42 · 3675 阅读 · 0 评论 -
Guava源码分析——ServiceManager
ServiceManager类: 用于监控服务集的管理器,该类提供了诸如startAsync、stopAsync、servicesByState方法来运行、结束和检查服务集,而且,通过监听器机制还能监控状态的改变。 建议通过此类来管理服务的生命周期,状态转变则通过其它机制来执行。例如,如果服务集通过除startAsync之外的某些机制启动,那么监听器将在合适的时候被唤醒,同原创 2013-09-26 10:50:28 · 4500 阅读 · 1 评论 -
Guava缓存器源码分析——删除消息
Guava缓存器的删除消息机制测试代码—— LoadingCache cache = CacheBuilder.newBuilder() .maximumSize(3) .expireAfterWrite(10, TimeUnit.SECONDS) .record原创 2013-09-20 20:45:43 · 4059 阅读 · 0 评论 -
Guava缓存器源码分析——缓存统计器
Guava缓存器统计器实现:全局统计器—— 1、CacheBuilder的静态成员变量Supplier CACHE_STATS_COUNTER初始化时,重载的get方法,返回了一个SimpleStatsCounter实例。 2、当缓存器开启缓存统计时(recordStats),statsCounterSupplier被赋值为CAC原创 2013-09-18 12:09:01 · 3337 阅读 · 0 评论 -
Guava缓存器源码分析——CacheBuilderSpec
CacheBuilderSpec为CacheBuilder的配置规范类,类结构图如下: 配置参数字符串cacheBuilderSpecification的格式:"maximumSize=1000,expireAfterAccess=1h"。缓存时间为整型,单位可以是天、时、分或秒,目前还不支持毫秒、微妙或纳秒。 在类中定义了ImmutableMap VA原创 2013-09-17 13:29:22 · 2750 阅读 · 0 评论 -
Guava缓存器源码分析——LocalCache
上图为缓存器所涉及的大致类图,与缓存器配置相关的参数都封装进了CacheBuilder中,与缓存器载入数据相关的操作都封装进了CacheLoader中,并将CacheLoader设计为抽象类,数据载入方法由用户自己实现。因此,用户可以有两种方式来创建缓存器: 1、配置完参数后,直接创建 Cache build() build函数内部,通过调用new原创 2013-09-17 13:34:46 · 10013 阅读 · 0 评论 -
Guava缓存器源码分析——键值类型
昨天分析了Guava缓存器的数据存取过程,下面介绍下键值类型所涉及的类图: Guava缓存器中键值都通过工厂模式来创建,工厂类型为枚举变量,包括以下8种:STRONG, STRONG_ACCESS, STRONG_WRITE, STRONG_ACCESS_WRITE, WEAK, WEAK_ACCESS, WEAK_WRITE, WEAK_ACCESS_WRI原创 2013-09-17 13:37:26 · 2389 阅读 · 0 评论 -
Guava缓存器源码分析——数据加载
Guava缓存器加载数据的方式有两种:同步(loadSync)与异步(loadAsync)。 同步方式—— 只在取数据 V get(K, int, CacheLoader)执行过程中会被调用到。 同步加载数据代码如下: ListenableFuture loadingFuture = loadingValueReference.原创 2013-09-17 13:38:00 · 3673 阅读 · 0 评论 -
Guava缓存器源码分析——CacheBuilder
CacheBuilder作为LoadingCache 与 Cache实例的创建者,具有以下特征: 1、自动载入键值至缓存; 2、当缓存器溢出时,采用最近最少使用原则进行替换。 3、过期规则可基于最后读写时间。 4、设置键值引用级别。 5、元素移出通知。6、缓存访问统计。 示例: LoadingCache cache = Cac原创 2013-09-17 13:31:03 · 18535 阅读 · 0 评论 -
Guava源码分析——Strategy模式(Splitter)
策略模式(Strategy):定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。在Guava的Splitter类中便用到了这种模式——字符串的分割方式:1、根据单个字符分割public static Splitter on(char separator) { return on(CharMatc原创 2013-09-29 11:22:37 · 3347 阅读 · 0 评论