在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null。因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上的优雅和简单。 null代表不确定的对象: Java中,null是一个关键字,用来标识一个不确定的对 ...
分类:
其他好文 时间:
2017-07-08 17:54:47
阅读次数:
150
在软件开发过程中, 难免有信息的共享或者对象间的协作。 怎样让对象间信息共享高效, 而且耦合性低。 这是一个难题。 而耦合性高将带来编码改动牵一发而动全身的连锁效应。 Spring的风靡正是由于攻克了高耦合问题。 本篇介绍的EventBus中也用到了Spring中的依赖注入。 来进行对象和对象间的解 ...
分类:
其他好文 时间:
2017-07-06 10:08:54
阅读次数:
185
BiMap HashBiMap<K,V> 实现了两份哈希表数据结构(本类独立实现)。分别负责两个方向的映射。 EnumBiMap<K,V> 两个EnumMap对象分别负责两个方向的映射。 EnumHashBiMap<K,V> 一个EnumMap对象负责K到V映射,一个HashMap对象负责V到K的影 ...
分类:
编程语言 时间:
2017-07-01 18:23:43
阅读次数:
413
基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并字符串,字符串匹配的判断等等。 1. 使用com.google.common.base.String ...
分类:
编程语言 时间:
2017-06-28 23:22:54
阅读次数:
608
恢复内容开始 我们分析下EventBus的核心方法 post方法,直接贴代码 第2行,从subscribers中得到一个事件的所有监听者subscriber列表,第4行,调用dispatcher的dispatch方法通知所有的监听者, 第7行,如果当前事件没有任何监听者,则发送一个DeadEvent ...
分类:
其他好文 时间:
2017-06-20 22:17:03
阅读次数:
108
分析guava eventbus之前,先看一下传统观察者模式的写法: Subject接口是抽象主题,相当于被观察者,它持有一个监听者observer的列表,attach方法往这个列表里面注册监听者,detach方法注销监听者,notify方法用于事件发生时通知到列表中的监听者 通常在notify的实 ...
分类:
其他好文 时间:
2017-06-20 14:54:29
阅读次数:
131
Cache Guava的Cache封装的功能比较全面,但是很多地方和设想的不太一样,最明显的就是RemovalListener,它并不是invalid之后就会被调用,因为在调用Cache的invalid的时候,其实并没有真正从内存中删除,只是标记为删除而已,需要通过调用clear或者手工获取的时候, ...
分类:
其他好文 时间:
2017-06-11 14:57:20
阅读次数:
147
缓存的背景 缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。在cpu进行计算的时候, 首先是读取寄存器,然后内存,再是硬盘。由于寄存器容量很小,不太适合存储我们需要快速读取的数据,放在硬盘中话,效率太低,所以大多数人将一些静态 ...
分类:
编程语言 时间:
2017-05-24 23:53:10
阅读次数:
435
Guava工程包含了若干被Google的Java项目广泛依赖的核心库,例如:集合[collections]、缓存[caching]、原生类型支持[primitivessupport]、并发库[concurrencylibraries]、通用注解[commonannotations]、字符串处理[stringprocessing]、I/O等等。所有这些工具每天都在被Google的..
分类:
其他好文 时间:
2017-05-15 14:22:55
阅读次数:
235
Guava是一个很方便的本地缓存工具,但是在多节点处理的过程中,本地缓存无法满足数据一致性的问题。分布式缓存Ignite很好的解决了数据一致性,可靠性,事务性等方面的问题。 Ignite支持分区方式和复制方式存储数据,侧重于不同读写比例的分布式缓存使用。同时,Ignite可以缓存整个数据库数据,支持 ...
分类:
其他好文 时间:
2017-05-14 23:44:02
阅读次数:
313