Guava -- 集合类 和 Guava Caches 1....什么是 Guava Guava 是 google 推出的一个第三方 java 库,用来代替 jdk 的一些公共操作,给我印象特别深的就是 Collection 的扩展和本地缓存的扩展这两个方面了。...所以今天也就主要来讲讲 guava 的 collection 和 caches 两方面。 2....依赖 使用 guava 非常简单,可以直接通过 maven 导入依赖: com.google.guava <artifactId...Caches guava caches 用来当本地缓存个人认为是一个非常不错的选择。 1.
Guava是什么 进入新公司就会接触一些新的东东,Guava就是一个,Guava是Google的一个开源类库,丰富了JDK的API,而且使用起来很方便,本文介绍的是Guava collect包下的一些常用工具类...项目主页:https://github.com/google/guava Maven依赖: com.google.guava guava</...可以简化: List strList = new ArrayList(); Collections.addAll(strList, "1", "2", "3"); 使用Guava...Guava可以创建一个完全不可变的集合,如下代码: List strList = ImmutableList.of("1", "2", "3"); 本文只是对Guava Collect的管中窥豹...,也仅仅介绍了List部分,更多请移步:https://github.com/google/guava/wiki。
来源:https://mrbird.cc/Guava-RateLimiter.html Google Guava提供的RateLimiter使用的是令牌桶算法。...Guava RateLimiter允许某次请求获取超出剩余令牌数的令牌,但是下一次请求将为此付出代价,一直等到令牌亏空补上。
根据科普中国的定义,缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中...
Guava使用 Guava Cache 是Google Fuava中的一个内存缓存模块,用于将数据缓存到JVM内存中。...提供了get、put封装操作,能够集成数据源 ;线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素,相当于对已有集合框架类的一个扩充;Guava Cache...提供了多种基本的缓存回收方式监控缓存加载/命中情况通常,Guava缓存适用于以下情况: 愿意花费一些内存来提高速度。...转为类型名称这个类型数量比较多,有可能发生变动但不频繁的情景 比如端面需要根据填报志愿的专业code获取专业名称如果返回实体不带Name,每个调一次查询服务,或者一次性拿出所有名称循环对比取显然不是很优雅就可以用Guava...来实现 /** 引入如下依赖 com.google.guava guava</artifactId
简介 Predicate(断言,断定),是Guava中的一个基础接口,其内部只有一个方法boolean apply(T input),这个方法输入是一个泛型对象,输出是一个布尔值,非常简单,下面来看一下这个小东西能帮助我们做什么
/** * Guava的不可变集合用法 * * 创建对象的不可变集合是一种很好的防御性编程技巧; * Guava为所有JDK标准集合类型和Guava集合类型都提供了简单易用的不可变版本; *
Guava中Objects类提供了很多和Object类相似方法可供使用: 1.equal方法 使用Object的equals方法进行相等判断,例如: test.equals("test"); 如果test....firstNonNull方法 Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, Objects.firstNonNull(null, "jack"); Guava
Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好用...guava在还没做分布式处理上,单机单整合上大行其道。...集合[Collections] Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分 2.1 不可变集合: 用不变的集合进行防御性编程和性能提升。...缓存[Caches] Guava Cache:本地缓存实现,支持多种缓存过期策略 4. 函数式风格[Functional idioms] Guava的函数式支持可以显著简化代码,但请谨慎使用它 5....反射[Reflection] Guava 的 Java 反射机制工具类 1.Guava EventBus探讨 在设计模式中, 有一种叫做发布/订阅模式, 即某事件被发布, 订阅该事件的角色将自动更新。
并发是一个难题,但是可以通过使用强力简单的抽象来显著的简化,为了简化问题,guava扩展了Future接口,即 ListenableFuture (可以监听的Future)。...它返回一个常规的Future,guava提供了ListeningExecutorService接口,它返回ListenableFuture。...private String sex; private Integer id; } } 相对的,如果你想从基于FutureTask的API转换过来,Guava...为了避免这种情况,所有的guava的Future处理方法(有些从jdk来),有 *Async版本来安全的解开这个嵌套。
如上示例,对于使用ForwardingMap的主体,可以不用考虑多代理的Map的具体实现。
Guava中Objects类提供了很多和Object类作用相同、效率更高的方法可供使用: 1.equal方法 使用Obejct的equals方法进行相等判断,例如: test.equals("test...Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, view plain copy Objects.firstNonNull(null, "jack"); Guava
简介 Guava[ˈɡwɑːvə] 是 Google 开源的一个 Java 工具库。... com.google.guava guava 29.0-jre<...不变的;不可变的;不能变的 Guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现。...Guava提供了对JDK里标准集合类里的immutable版本的简单方便的实现,以及Guava自己的一些专门集合类的immutable实现。...注意:每个Guava immutable集合类的实现都拒绝null值。
Ordering类提供了一些链式的排序方法,相比JDK自带的排序方法更加简练、方便。 Ordering中有3种静态方法用于创建Ordering排序器: 根据上面...
1. Function接口,提供两个方法: apply方法: 可以自定义自己想实现的功能 1 @Nullable T apply(@Nullable F...
前言 Guava 包含我们在基于Java的项目中依赖的Google的几个核心库:集合,缓存,原语支持,并发库,通用批注,字符串处理,I / O等。...我们日常开发中 遇到最多的Exception 可能就是NullPointException 了,那么 guava 如何来优化这个问题呢? 避免使用null 粗心地使用null可能会导致各种错误。...(UseNullTest.java:51) at com.sf.guava.basic.UseNullTest.main(UseNullTest.java:24) :UseNullTest.main...true System.out.println(Objects.equal(str1, str2)); // 打印 true } 3.利用 比较链的方式 实现比较 package com.sf.guava.basic...other.zipCode, Ordering.natural().nullsLast()) .result(); } } 参数检查 package com.sf.guava.basic
常见实现方案 guava 在Guava中提供了com.google.common.hash.BloomFilter类,如下所示,可以很方便的实现布隆过滤器。其实现原理中有很多值得学习的点。...Byte,占8bits,最大的为Long,占64bits,因此常见方案是使用Long数组作为bits数组使用,举个例子 128bits可以用long[2]标识,146bits可以用long[3]表示,在Guava...如上图计算,100w元素,0.0001误判率下需要13次hash计算,hash在快次数一多也必然会成为性能瓶颈,在Guava中并没有引入多个Hash函数,而是计算出一个hash值后,其他的使用位移,乘除等方法快速计算出来...} 另外com.google.common.hash.BloomFilterStrategies也是枚举策略模式的典型应用场景,值得学习,关于策略模式可以参考 设计模式–策略模式的思考 Redis Guava...文章标题: Guava -- Bloom Filter原理 文章链接: https://mrdear.cn/2019/03/16/framework/guava/guava--bloom-filter/
背景 上一篇文章中,我们详细介绍了 guava cache 的使用方法,尤其是在其中重点介绍了 guava cache 异步回种的用法,那么,性能优异的异步回种缓存究竟是如何实现的呢?...本文我们就来详细阅读 guava cache 的完整流程代码,抽丝剥茧,学习其中的思想与智慧。 guava cache 用法详解 2....基本思想 guava cache 异步回种基本思想: cache.get() 完整流程图: 3....guava cache 在上述情况下调用 lockedGetOrLoad() 方法获取数据,这个方法中,通过加 AQS 锁避免多个线程同时 load 获取数据,然后通过回调 load() 方法同步获取数据...总结 了解了 guava cache 异步回种的基本思想,也许你会觉得这一套解决方案的实现是如此简单,那么,我们知道,memcache、redis 都是只有提供了同步接口的,那么,你是否可以在此基础上实现一套异步回种方案呢
先简单介绍一下 Guava Cache,它是 Google 封装的基础工具包 guava 中的一个内存缓存模块,它主要提供了以下能力: 封装了缓存与数据源交互的流程,使得开发更关注于业务操作 提供线程安全的存取操作...本节介绍 Guava 一些常见的缓存过期行为及策略。...实际上,Guava Cache 默认采取了 LRU 缓存淘汰策略。...总之非常灵活,使用 Guava Cache 的 API 可以满足大多数业务场景的缓存需求。 为什么是 Guava Cache,它的性能怎么样?...我现在主要是出于稳定性考虑,项目一直在使用 Guava Cache。据说有比 Guava Cache 快的本地缓存,但那点性能我的系统不是特别关心。 - END -
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现,在应用中可以处理一些异步任务。...LoggerFactory.getLogger(SimpleListener.class); /** * 一个简单的Listener方法 * @param event Guava...- Apple eat[Fruit{name=’apple’}]. 2018-06-03 16:55:32:INFO main com.guava.eventbus.listeners.FruitEaterListener...@7a0ac6e3 public void com.guava.eventbus.listeners.ExceptionListener.m3(java.lang.String) 2018...-06-03 18:16:25:INFO main com.guava.eventbus.listeners.ExceptionListener - Received event [Exception
领取专属 10元无门槛券
手把手带您无忧上云