归档: 2016

0

Guava优美代码-8-MultiSet

多值集合MultiSet使用过JDK的同学都知道,在Java中集合Set是不允许重复的,也就是说在同一个集合中不允许出现两个相同的元素。但是如果我们需要计算一个集合中一个元素出现的次数,采用JDK的方式去完成的话会非常的麻烦,但是Guava为我们解决了这个问题—-MultiSet。 实现一个Word Count程序我们需要统计一段文字中各个单词出现的次数,下面给出JDK和Guava两种实现方式。

0

Guava优美代码-7-ImmutCollections

不可变集合Immutable Collections为什么要使用不可变集合不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的; 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好的内存利用率(比如分析和测试细节); 不可变对象因为固定不变,所以可以作为常量来安全使用。 创建对象的不可

0

Linux集群管理脚本

不知道你是否遇到下面这种经历,当你面对多台机器需要维护的时候,可能会觉得不知所措,一台机器,两台机器这都还好说,但是如果需要管理的是一个集群(超过50台)呢?一台机器一台机器去管理是不太现实的,那样的话累死了。下面分享一个简单的脚本有助于解决这种管理急群中多台服务器的情况。 前提是你首先得设置主机和各台从机之间的SSH免密码登录。如果不知道的可以去看一下我的另一篇博客设置SSH免登录。补充说明的是

0

Guava优美代码-6-Throwables

简化异常处理的ThrowablesGuava提供了一个异常处理工具类, 可以简单地捕获和重新抛出多个异常。这个工具就是Throwables。借助Throwables工具类,我们可以很轻松地完成以下一些事情: 获取异常链 获取最底层的异常 过滤异常,只抛出我们感兴趣的异常 把受检查的异常转换为运行时异常 下面直接给出上述几种用例场景的示例代码分析。 获取异常链(getCausalChain)12

0

Guava优美代码-5-Ordering

优雅的Guava排序器在开发中经常会对一些数据进行排序或者搜索操作,以前基本上都是先实现Comparator比较器,然后根据这个比较器去比较具体对象之间的顺序。这个过程一直都为开发者所诟病,现在Guava为我们带来了全新的一种比较的方式,那就是Ordering排序器! 排序器[Ordering]是Guava链式风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的

0

Guava优美代码-4-Objects

对象操作类ObjectsJava语言中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, Guava也提供了类似的方式。 关于equals方法需要多说几句,就是我们在写equals判断的时候很容易忘掉很多判断条件,往往容易导致结果不正确,以下的

0

Guava优美代码-3-Preconditions

前置条件Preconditions 前置条件:让方法调用的前置条件判断更简单。 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量

0

Guava优美代码-2-Optional

尽量不要使用NULL轻率地使用null可能会导致很多令人吃惊的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受null,使用快速失败操作拒绝null值对开发者更有帮助。 此外,Null的含糊语义让人很不舒服。Null很少可以明确地表示某种语义,例如,Map.get(key)返回Null时,可能表示map中的值是null,亦或map中没

0

Github Pages自定义域名+CDN加速解决方案

先说说烦恼自CSDN搬家到Github Pages以来,倍感欣喜!原因很简单,省了我每个月一两百的服务器费用。但是随之而来的也存在一个问题,那就是Github Pages的托管服务器是在美国本土的,没有一个在海外。所以,大家平时访问我的网站都是通过浏览器直接访问美国的github服务器实现的,路程远不说,还有天朝的大墙时不时封一些服务器,其结果可想而知。面对博客的访问速度超过12s,患有严重强迫症

0

Guava优美代码-1-简介

Google Guava简介Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/