Guava
文章平均质量分 92
nuaazhaofeng
爱生活,爱coding
展开
-
【源码分析】Guava源码解析之EventBus
最近看Elastic-Job源码,看到它里面实现的任务运行轨迹的持久化,使用的是Guava的AsyncEventBus,一个内存级别的异步事件总线服务,实现了简单的生产-消费者模式,从而在不影响任务执行效率的基础上,将任务执行和任务轨迹记录解耦,大大提高了EJ的性能。EventBus在Elastic-Job中的使用EventBus的使用方法不难,具体可以参考EJ里面几个相关的类:JobEventLi原创 2017-05-23 16:34:10 · 443 阅读 · 0 评论 -
【Guava】使用Guava的RateLimiter做限流
一、常见的限流算法目前常用的限流算法有两个:漏桶算法和令牌桶算法。1.漏桶算法漏桶算法的原理比较简单,请求进入到漏桶中,漏桶以一定的速率漏水。当请求过多时,水直接溢出。可以看出,漏桶算法可以强制限制数据的传输速度。2.令牌桶算法令牌桶算法的原理是系统以一定速率向桶中放入令牌,如果有请求时,请求会从桶中取出令牌,如果能取到令牌,则可以继续完成请求,否则等待或者拒绝服务。这种算法可以应对突发程度的请求,原创 2017-07-20 11:13:48 · 1871 阅读 · 0 评论 -
【Guava】基于guava的重试组件Guava-Retryer
一、使用场景在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活( Active)。Guava Retrying 是一个灵活方便的重试组件,包含了多种的重转载 2017-08-03 09:36:15 · 524 阅读 · 0 评论 -
【Guava】Optional接口来避免空指针错误
null会带来很多问题,从开始有null开始有无数程序栽在null的手里,null的含义是不清晰的,检查null在大多数情况下是不得不做的,而我们又在很多时候忘记了对null做检查,在我们的产品真正投入使用的时候,空指针异常出现了,这是一种讨厌的情况。鉴于此google的guava库中提供了Optional接口来使null快速失败,即在可能为null的对象上做了一层封装,在使用Optional静态方转载 2017-08-22 09:10:19 · 584 阅读 · 0 评论 -
【Guava】PreConditions来校验参数
前置条件:让方法调用的前置条件判断更简单。在我们的日常开发中,经常要对入参进行一定的参数校验,比如是否为空,参数的取值范围是否符合要求等等。这种参数校验如果我们单独进行校验的话,代码的重复率比较高,也不是很优雅。Guava提供了一个类PreConditions来统一校验我们的参数,同时可以抛出对应的异常信息,将参数校验的工作进行了统一。下面是它提供的几种校验方法: 方法声明(不包含额外参数)转载 2017-08-22 09:13:21 · 559 阅读 · 0 评论