![](https://img-blog.csdnimg.cn/20200202115021828.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Google Guava
Google Guava
mazhongjia
这个作者很懒,什么都没留下…
展开
-
10.Guava base encoding decoding
1、作用对一个字符串进行base64或base16算法的编解码。2、代码示例package com.mzj.guava.io.base64;import com.google.common.io.BaseEncoding;import org.junit.Test;public class BaseEncodingTest { @Test public v...原创 2020-03-19 19:21:26 · 1022 阅读 · 0 评论 -
09.Guava Closer
一、背景JDK8之前关闭资源BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { if (br != null) br.close(); }JDK8中关闭资源try (Buf...原创 2020-03-18 21:23:55 · 177 阅读 · 0 评论 -
08.Guava Files
XXX原创 2020-03-14 17:53:33 · 162 阅读 · 0 评论 -
07.Guava Collections
一、FluentIterable1、作用:提供对集合的流式/函数式编程风格操作,在JDK1.8后提供了stream,FluentIterable已经无其优势了。但是GoogleGuava依然没有将其废弃,目的是提供习惯使用guava collections的研发人员。代码示例:package com.mzj.guava.collections;import com.googl...原创 2020-03-01 19:39:59 · 268 阅读 · 0 评论 -
06.EventBus异步的AsyncEventBus
一、说明1、需要外部提供异步执行事件使用的线程池,对事件进行异步发送2、实际上,尽管用异步的事件总线,也不应该占用事件发送线程处理事件,而应该由业务线程池处理,如netty的设计理念二、代码listenerpackage com.mzj.guava.eventbus.listeners;import com.google.common.eventbus.Subscribe...原创 2020-02-27 10:45:59 · 2543 阅读 · 0 评论 -
06.EventBus扩展
一、说明google eventbus有一个缺点:只能通过listener的方法参数类型不同,来分发事件(eventbus上无topic,不能在相同事件类型时,向event的某个topic上发送事件,对此topic感兴趣的listener才收到这个事件,注册其他topic的listener不接收)逻辑2,3,4都关注某一类型消息,但是逻辑1发送此类型消息到topic1,只有逻辑2,3收...原创 2020-02-25 11:37:06 · 219 阅读 · 0 评论 -
06.EventBus结合JDK1.7中NIO2的WatchService实现:监听一个目录,当变化时进行通知
待续原创 2020-02-21 20:31:33 · 293 阅读 · 0 评论 -
06.EventBus
一、进程间(服务间)的消息发送/事件通知二、进程内的消息发送/事件通知不适用EventBus时,进程内程序,模块与模块之间调用,是直接调用的方式,这样的缺点是:①模块之间耦合度高,不易扩展②如果存在多个依赖关系,采用直接调用,代码难以维护使用EventBus的目的是进行解耦:模块A(进程A)向eventbus发送事件,模块B提前注册自己感兴趣的事件,当此类...原创 2020-02-17 11:42:13 · 266 阅读 · 0 评论 -
05.Guava Cache
一、cache应具备的逐出策略(缓存元素剔除策略) 1)数量逐出:通过LRU算法(最近最少使用)可以实现超过limit时顶替掉最近最少使用的元素 2)重量逐出:大小限制(通过softreference实现) 3)时间逐出:比如限制cache元素只能存活30秒二、Guava cache:LoadingCache数量逐出:CacheBuilder的ma...原创 2020-02-11 14:04:11 · 223 阅读 · 0 评论 -
04.cache
一、LRU算法最近&&最少使用置换算法,是缓存算法的一种,常用缓存算法有:FIFO(先进先出) LFU:LFU(LeastFrequentlyUsed),即最近经常使用算法,算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高” LRU是LeastRecentlyUsed的缩写,即最近最少使用页面置换算法LR...原创 2020-02-06 16:57:25 · 165 阅读 · 0 评论 -
03.ListenableFuture和Futures
一、作用jdk1.8之前的Future模式一个最大的问题是:向线程池提交任务异步执行并获取的Future对象后,需要获取结果做后续处理操作的时候,还是需要阻塞某线程进行等待。这样的话,和同步调用方式就没有多大区别了。而ListenableFuture和CompletableFuture对于这种情况则是提供了很多易用的API。如果说按照先后顺序来讲的话,首先是ListenableFuture...原创 2020-02-05 12:33:36 · 416 阅读 · 0 评论 -
02.RateLimiter
1.作用跟JDK的信号量Semaphore作用比较像,Semaphore用于控制,如下代码允许被多个线程同时访问的线程数量:try { semaphore.acquire(); //被控制代码....} catch (InterruptedException e) { e.printStackTrace();} finally { semaphore....原创 2020-02-02 17:31:54 · 130 阅读 · 0 评论 -
01.Monitor
1.作用实现上是对JDK中Lock和Condition的封装,意在解决开发者使用JDK中Lock或者synchronized开发生产者/消费者模型时编写的代码的视觉不友好问题2.代码示例https://github.com/mazhongjia/googleguava/tree/master/src/main/java/com/mzj/guava/concurrent/monitor...原创 2020-02-02 12:05:49 · 180 阅读 · 0 评论