Guava源码学习(四)新集合类型】的更多相关文章

基于版本:Guava 22.0 Wiki:New collection types 0. 简介 Guava提供了很多好用的集合工具,比如Multiset和BiMap,本文介绍了这些新集合类型的使用方式与实现原理. 1. Multiset a. 简介 一般的Set会对相同元素去重,而Multiset则会记下某个元素重复出现的次数.可以理解为Multiset内部维护了一个HashMap,对每个元素的重复次数进行计数,每次插入或者删除元素,都会更新这个HashMap. b. Multiset类图 c.…
基于版本:Guava 22.0 Wiki:EventBus 0. EventBus简介 提供了发布-订阅模型,可以方便的在EventBus上注册订阅者,发布者可以简单的将事件传递给EventBus,EventBus会自动将事件传递给相关联的订阅者. 支持同步/异步模式. 只能用于线程间通信. 1. EventBus类图 EventBus是同步实现 AsyncEventBus是异步实现 2. 代码实例 EventBus eventBus = new EventBus(); eventBus.reg…
基于版本:Guava 22.0 Wiki:Ordering 0. Ordering简介 Guava的Ordering提供了链式风格的比较器的实现,我们可以用Ordering轻松构建复杂的比较器. 1. 类图 这张类图不完全,实际上Ordering有十几个子类,这些子类共同提供了复杂的功能. 2. 设计思路 Ordering是继承于java.util.Comparator接口的抽象类,它的十几个子类都实现了compare与equals方法,这些子类可以实现基本的排序功能. 通过链式调用,可以将这些…
一.代码例子 此节开始涉及到一个bean具体生成和保存的过程,仅仅涉及到最简单的bean,代码依旧是最简单的 public static void main(String[] args) { DefaultListableBeanFactory beanFacory=new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFacory); reader.loa…
Guava是由Google出品的Java类库,功能强大且易用. 后续我会用多篇博客介绍Guava的使用方法,以及从源码层面分析其实现原理. 分析次序基于Guava的官方Wiki 基于版本:Guava 22.0 (发布时间2017年5月23日)…
dubbo采用的nio异步的通信,通信协议默认为 netty,当然也可以选择 mina,grizzy.在服务端(provider)在启动时主要是开启netty监听,在zookeeper上注册服务节点,处理消费者请求,返回处理后的消息给消费者,消费者使用服务时主要是订阅服务的节点,监听zookeeper节点目录,服务端的变化时zookeeper会推送给消费者,消费者重新缓存服务地址等.服务者.消费者.zookeeper三者之间都是长连接. 下面看dubbo源码来看服务暴露的过程,服务暴露的入口为:…
redis里面的整数集合保存的都是整数,有int_16.int_32和int_64这3种类型,和C++中的set容器差不多. 同时具备如下特点: 1.set里面的数不重复,均为唯一. 2.set里面的数是从小到大有序的,这在后面的intsetAdd函数中可以看到. 然后由于我们可以同时存储int_16.int_32和int_64这3种类型,一开始只能为一种类型.假设为int_32,那么我们要插入一个int_16类型的数,只需要找到位置直接插入就可以了:但是我们要插入一个int_64类型的数,我们…
基于版本:Guava 22.0 Wiki:Using and avoiding null 0:Optional简介 null在很多场景下会引发问题,NullPointerException困扰过无数的程序员,Guava用快速失败的思路来显式的解决null问题 ps:JDK1.8也提供了Optional工具包 1. 类图 2. 设计思路 抽象类Optional有两个子类Absent与Present,Optional本身不保存对象,这两个子类才是对象的容器 Absent表示值为null的情况 Pre…
基于版本:Guava 22.0 Wiki:Immutable collections 0. ImmutableCollection简介 类似于JDK的Collections.unmodifiableXXX,可以创建不可变集合,是一种防御式编程的体现. 1. 类图 这张类图也不完全,ImmutableCollection实际上有十几个子类 2. 设计思路 ImmutableCollection是继承于Collection的抽象类,将所有涉及到修改的方法全部设置为final(禁止子类重写),方法体是…
我们接下来说:springboot是如何和mybatis进行整合的 1.首先,springboot中使用mybatis需要用到mybatis-spring-boot-start,可以理解为mybatis开发的整合springboot的jar包 有一个关键点先说明:前面也提到过,不管是mybatis和spring整合,还是和springboot整合,都需要做两个操作:    1.把当前接口和对应的mapperProxyFactory存入到knownMappers中,    2.把sql包装成map…