Guava优美代码-19-EventBus
Guava事件总线EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 对于观察者模式,我这里就不再赘述了,大家可以去我的另一篇博文《设计模式学习之观察者模式(Observer)》里面详细了解观察者模式。 EventBus使用实例单事件监
Guava事件总线EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 对于观察者模式,我这里就不再赘述了,大家可以去我的另一篇博文《设计模式学习之观察者模式(Observer)》里面详细了解观察者模式。 EventBus使用实例单事件监
Guava哈希算法Java内建的散列码(hash code)概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换。此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它们最终都依赖于JDK类中已有的劣质散列码。 Object.hashCode往往很快,但是在预防碰撞上却很弱,也没有对分散性的预期。这使得它们很适合在散列表中运用,因为额外碰撞只会带来轻微的
Guava文件IO操作博主认为JDK中属文件IO的操作最麻烦而且最容易出错了,比如什么Stream啊,Reader啊,太多了,时间长了就容易记不住,经常写的话还是OK的,因为很熟练嘛,哈哈!那有没有什么方法能解放我们的文件操作呢?答案是Guava!Guava为我们提供了文件IO的各种工具类,其中使用最多的就是Files。下面我们仔细讨论Files的具体使用方式。 Files使用实例(1) 读文件1
Guava区间Range区间,有时也称为范围,是特定域中的凸性(非正式说法为连续的或不中断的)部分。在形式上,凸性表示对a<=b<=c, range.contains(a)且range.contains(c)意味着range.contains(b)。 Range的表示形式 区间 数学表达式 (a..b) {a < x < b} [a..b] {a <
Guava基本类型关于基本类型,我们在Java中有:byte、short、int、long、float、double、char和boolean。我们知道除了这些之外,还有关于这些基本类型的包装类:Byte、Short、Integer、Long、Float、Double、Character和Boolean。原因是这些基本类型没法当成对象或者泛型的参数使用。这意味着许多通用的方法都不支持它们。基于这个
Guava字符串处理字符串不管在什么时候都是我们最为关心的,尤其是从事Web开发的朋友,字符串的各种操作也都是工作中必备的技能。Google也看到了我们广大的开发者处理字符串的痛点,于是他们为我们带来了Strings的工具类,这个工具类套件包含了很多有用的类,比如Strings类本身,还有用于分割的Splitter类,用于连接的Joiner类以及用于字符串匹配的CharMatcher类等等。下面我
Guava函数式编程上一节篇文章我们说了Guava的Function函数的用法,这一节我们来说一说Predicate预言。Predicate的使用也是非常多的,因此读者朋友们也需要多多重视Predicate的用法。简单说一下Predicate和Function的区别,你可以理解为Predicate主要是用来判断一些条件成不成立的,而Function主要是用来执行一些操作的,侧重点不同。 Predi
什么是观察者模式观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,这样一来,当一个对象改变状态的时候,它的所有依赖者都会收到通知并自动更新。 出版者+订阅者=观察者模式如果你了解报纸的订阅方式,我想你基本上也就知道了观察者模式是怎样的一回事了。在观察者模式中我们一般使用主题来表示出版者,用观察者来表示订阅者。 观察者模式类图 可以看到整个类图非常简单,定义了两
本文背景昨天夜里本来想写一篇设计模式的博文,先去查看了一下博客,忽然发现博客系统的css和js样式全部失效了。通过默认的访问方式全部都没有用,整个博客的用户体验非常差。然后我就开始找原因,因为采用的是阿里云CDN加速的,又是在深夜,我在想是不是阿里云官方在升级CDN系统导致我的全站样式文件全部失效,后来发现过了俩小时还不行,那就不是阿里云的问题了。然后一直找到3点钟还没有头绪,就睡了一觉,睡的时候
Guava函数式编程关于函数式编程,好像越来越多的编程语言都开始逐渐支持这个特性,最明显的就是python,javascript,还有Swift等等。Java终于在1.8中支持了函数式编程,但是在JDK1.8推出来以前,Guava就为我们提供了强大的函数式编程框架—Function。 Function和FunctionsFunction<A, B>,它声明了单个方法B apply(A