
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 · 1149 阅读 · 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 · 232 阅读 · 0 评论 -
08.Guava Files
XXX原创 2020-03-14 17:53:33 · 194 阅读 · 0 评论 -
07.Guava Collections
一、FluentIterable 1、作用:提供对集合的流式/函数式编程风格操作,在JDK1.8后提供了stream,FluentIterable已经无其优势了。但是GoogleGuava依然没有将其废弃,目的是提供习惯使用guava collections的研发人员。 代码示例: package com.mzj.guava.collections; import com.googl...原创 2020-03-01 19:39:59 · 341 阅读 · 0 评论 -
06.EventBus异步的AsyncEventBus
一、说明 1、需要外部提供异步执行事件使用的线程池,对事件进行异步发送 2、实际上,尽管用异步的事件总线,也不应该占用事件发送线程处理事件,而应该由业务线程池处理,如netty的设计理念 二、代码 listener package com.mzj.guava.eventbus.listeners; import com.google.common.eventbus.Subscribe...原创 2020-02-27 10:45:59 · 2678 阅读 · 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 · 269 阅读 · 0 评论 -
06.EventBus结合JDK1.7中NIO2的WatchService实现:监听一个目录,当变化时进行通知
待续原创 2020-02-21 20:31:33 · 365 阅读 · 0 评论 -
06.EventBus
一、进程间(服务间)的消息发送/事件通知 二、进程内的消息发送/事件通知 不适用EventBus时,进程内程序,模块与模块之间调用,是直接调用的方式,这样的缺点是: ①模块之间耦合度高,不易扩展 ②如果存在多个依赖关系,采用直接调用,代码难以维护 使用EventBus的目的是进行解耦: 模块A(进程A)向eventbus发送事件,模块B提前注册自己感兴趣的事件,当此类...原创 2020-02-17 11:42:13 · 325 阅读 · 0 评论 -
05.Guava Cache
一、cache应具备的逐出策略(缓存元素剔除策略) 1)数量逐出:通过LRU算法(最近最少使用)可以实现超过limit时顶替掉最近最少使用的元素 2)重量逐出:大小限制(通过softreference实现) 3)时间逐出:比如限制cache元素只能存活30秒 二、Guava cache:LoadingCache 数量逐出:CacheBuilder的ma...原创 2020-02-11 14:04:11 · 312 阅读 · 0 评论 -
04.cache
一、LRU算法 最近&&最少使用置换算法,是缓存算法的一种,常用缓存算法有: FIFO(先进先出) LFU:LFU(LeastFrequentlyUsed),即最近经常使用算法,算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高” LRU是LeastRecentlyUsed的缩写,即最近最少使用页面置换算法 LR...原创 2020-02-06 16:57:25 · 205 阅读 · 0 评论 -
03.ListenableFuture和Futures
一、作用 jdk1.8之前的Future模式一个最大的问题是:向线程池提交任务异步执行并获取的Future对象后,需要获取结果做后续处理操作的时候,还是需要阻塞某线程进行等待。这样的话,和同步调用方式就没有多大区别了。而ListenableFuture和CompletableFuture对于这种情况则是提供了很多易用的API。 如果说按照先后顺序来讲的话,首先是ListenableFuture...原创 2020-02-05 12:33:36 · 492 阅读 · 0 评论 -
02.RateLimiter
1.作用 跟JDK的信号量Semaphore作用比较像,Semaphore用于控制,如下代码允许被多个线程同时访问的线程数量: try { semaphore.acquire(); //被控制代码.... } catch (InterruptedException e) { e.printStackTrace(); } finally { semaphore....原创 2020-02-02 17:31:54 · 172 阅读 · 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 · 221 阅读 · 0 评论