![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
guava
文章平均质量分 92
georgesnoopy
这个作者很懒,什么都没留下…
展开
-
高性能内存队列-Disruptor
Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。基于Disruptor开发的系统单线程能支撑每秒600万订单。2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。martin fowler的的大作:原文、参考译文ps:恕我浅薄,直接看大神的文章,说实话,是有些看不明白的,包括有些观点确实还不能消化,因为高度不够,看不清其背后的逻辑本质原创 2022-01-06 17:53:31 · 3221 阅读 · 0 评论 -
缓存Caffeine之W-TinyLFU淘汰策略
我们常见的缓存是基于内存的缓存,但是单机的内存是有限的,不能让缓存数据撑爆内存,所有需要缓存淘汰机制。中大概说明了LRU的缓存淘汰机制,以及基于LRU的著名实现guava cache。除了LRU淘汰策略外,其是常见的还有FIFO以及LFU,只是说目前用的最多的是LRU。原创 2023-01-19 11:13:48 · 2263 阅读 · 0 评论 -
guava之Retryer
Retryer看结构上是比较简单的,但是就是用这个简单结构实现了比较通用的重试框架。它之所以用入册简单的结构能实现通用的重试框架,它对重试这件事情抽象的是很好的,所以我们看一下重试需要哪些事情:需要用一个机制来表达重试的任务。Retryer采用的是使用Callable这个接口来表示一个重试任务。并且通过AttemptTimeLimiter封装实现了多种执行任务的方式。 需要一种判断什么时候重试、什么时候结束。Retryer使用了Predicate这个函数式接口来让用户来决定什么时候表示执行成功原创 2021-04-15 19:24:59 · 1953 阅读 · 0 评论 -
guava之EventBus
观察者模式这个讲的地方特别多,随便百度就好,这里随意贴了一个别人的链接http://c.biancheng.net/view/1390.html解决的问题观察者模式解决的场景就是:解耦。将一些和主业务逻辑不强相关的逻辑可以解耦出来,统一处理。EventbusEventBus提供了两种观察方式:同步和异步同步方式:post()和对应的事件处理器EventHandler逻辑在同一个线程执行。 异步方式:事件处理器EventHandler逻辑在指定线程池中执行,和post()事件的线原创 2021-04-19 16:07:24 · 1720 阅读 · 0 评论 -
guava之guava cache
caffine的原文翻译https://segmentfault.com/a/1190000008751999细读这个:https://www.chinacion.cn/article/5629.htmlCount-Min Sketch算法,就是BloomFilter的升级版本,BloomFilter是判断一个对象存在or不存在的,Count-Min Sketch是用来记录一个对象的次数的。BloomFilter的问题,也同样存在Count-.原创 2021-04-23 09:33:10 · 1296 阅读 · 0 评论 -
guava之限流RateLimiter
常用的限流方式和场景有:限制总并发数(比如数据库连接池、线程池) 限制瞬时并发数(如nginx的limitconn模块,用来限制瞬时并发连接数,Java的Semaphore也可以实现) 限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limitreq模块,限制每秒的平均速率) 其他:比如如限制远程接口调用速率、限制MQ的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流。我们常说的限流,其实更多的都是指时间窗口内的平均速率,所以往往这种限流方式成了原创 2022-05-07 08:38:27 · 13799 阅读 · 0 评论