Guava源码阅读

Guava是Google开源出来的Java常用工具集库,包括集合,缓存,并发,字符串,I/O操作等在Java开发过程中经常需要去实现的工具类。

JoinerSplitterStringsCharMathcer等工具类,其中有许多令人眼前一亮的代码。如Strings.repeat方法里,为了尽可能提升效率采用了native方法System.arrayCopy。如Splitter中,匿名类的灵活使用。如Joiner.appendTo中优雅的解决最后一个分隔符问题。如Splitter.separatorStart中神奇的continue用法。

Guava还有一个很重要的功能——GuavaCache,平时开发过程中,一般后台会用数据库作为数据存储。稍大的系统中,为了减少db查询耗费的时间,会在前面加一层NoSql作为缓存。但是随着系统规模的增加,缓存的查询压力会越来越大。本地缓存(或者称为热点缓存)这时候可以有效的缓解缓存的压力,特别当某些数据查询十分频繁但修改较少的时候。

例如,一个官方账号的info数据,几乎每个用户都会用到,很少会有改动。如果按正常得缓存流程,那么每个用户取info时,都会触发一次缓存查询,这会产生很高的tps,如果在每个服务器拿到缓存数据后,存到本地内存中,并设定一个有效期,例如一分钟。那么在一分钟内都不会再去缓存中查询这个数据,相当于直接把tps降到了一分钟一次。当然,这回导致数据更新有一分钟得延迟,多以如果对数据实时性要求非常高的,不适合使用。

......

阅读全文(http://www.lchml.com/blog/2015/07/11/guava-1.html)

posted @ 2016-01-13 17:06  @李城  阅读(1819)  评论(0编辑  收藏  举报