展开

关键词

Guava -- 集合类 和 Guava Cache

Guava -- 集合类 和 Guava Caches 1. 什么是 Guava Guava 是 google 推出的一个第三方 java 库,用来代替 jdk 的一些公共操作,给我印象特别深的就是 Collection 的扩展和本地缓存的扩展这两个方面了。 所以今天也就主要来讲讲 guava 的 collection 和 caches 两方面。 2. 依赖 使用 guava 非常简单,可以直接通过 maven 导入依赖: <dependency> <groupId>com.google.guava</groupId> <artifactId Caches guava caches 用来当本地缓存个人认为是一个非常不错的选择。 1.

64830

Guava RateLimiter

来源:https://mrbird.cc/Guava-RateLimiter.html Google Guava提供的RateLimiter使用的是令牌桶算法。 Guava RateLimiter允许某次请求获取超出剩余令牌数的令牌,但是下一次请求将为此付出代价,一直等到令牌亏空补上。

23510
  • 广告
    关闭

    腾讯云校园大使火热招募中!

    开学季邀新,赢腾讯内推实习机会

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Guava Cache

    根据科普中国的定义,缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中...

    20730

    Guava Collect

    Guava是什么 进入新公司就会接触一些新的东东,Guava就是一个,Guava是Google的一个开源类库,丰富了JDK的API,而且使用起来很方便,本文介绍的是Guava collect包下的一些常用工具类 项目主页:https://github.com/google/guava Maven依赖: <groupId>com.google.guava</groupId> <artifactId>guava</ 可以简化: List<String> strList = new ArrayList<String>(); Collections.addAll(strList, "1", "2", "3"); 使用Guava Guava可以创建一个完全不可变的集合,如下代码: List<String> strList = ImmutableList.of("1", "2", "3"); 本文只是对Guava Collect的管中窥豹 ,也仅仅介绍了List部分,更多请移步:https://github.com/google/guava/wiki。

    52000

    Guava Predicate

    简介 Predicate<泛型>(断言,断定),是Guava中的一个基础接口,其内部只有一个方法boolean apply(T input),这个方法输入是一个泛型对象,输出是一个布尔值,非常简单,下面来看一下这个小东西能帮助我们做什么

    31700

    关于Guava ForwardingMap

    如上示例,对于使用ForwardingMap的主体,可以不用考虑多代理的Map的具体实现。

    30720

    Guava学习笔记(2) --- Guava的不可变集合

    /** * Guava的不可变集合用法 * * 创建对象的不可变集合是一种很好的防御性编程技巧; * Guava为所有JDK标准集合类型和Guava集合类型都提供了简单易用的不可变版本; *

    21220

    Guava Collect API

    简介 Guava[ˈɡwɑːvə] 是 Google 开源的一个 Java 工具库。 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre< 不变的;不可变的;不能变的 Guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现。 Guava提供了对JDK里标准集合类里的immutable版本的简单方便的实现,以及Guava自己的一些专门集合类的immutable实现。 注意:每个Guava immutable集合类的实现都拒绝null值。

    27011

    Guava之Objects

    Guava中Objects类提供了很多和Object类作用相同、效率更高的方法可供使用: 1.equal方法 使用Obejct的equals方法进行相等判断,例如: test.equals("test Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, view plain copy Objects.firstNonNull(null, "jack"); Guava

    39370

    初探Google 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探讨 在设计模式中, 有一种叫做发布/订阅模式, 即某事件被发布, 订阅该事件的角色将自动更新。

    52120

    Guava之Objects

    Guava中Objects类提供了很多和Object类相似方法可供使用: 1.equal方法 使用Object的equals方法进行相等判断,例如: test.equals("test"); 如果test .firstNonNull方法 Object的firstNonNull方法可以根据传入的两个参数来返回一个非Null的参数, Objects.firstNonNull(null, "jack"); Guava

    22830

    guava并发工具

    并发是一个难题,但是可以通过使用强力简单的抽象来显著的简化,为了简化问题,guava扩展了Future接口,即 ListenableFuture (可以监听的Future)。 它返回一个常规的Future,guava提供了ListeningExecutorService接口,它返回ListenableFuture。 private String sex; private Integer id; } } 相对的,如果你想从基于FutureTask的API转换过来,Guava 为了避免这种情况,所有的guava的Future处理方法(有些从jdk来),有 *Async版本来安全的解开这个嵌套。

    74030

    Guava之Ordering

    Ordering类提供了一些链式的排序方法,相比JDK自带的排序方法更加简练、方便。 Ordering中有3种静态方法用于创建Ordering排序器: ? 根据...

    51780

    Guava----Function

    1. Function接口,提供两个方法: apply方法:    可以自定义自己想实现的功能 1 @Nullable T apply(@Nullable F...

    41690

    google Guava之EventBus

    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

    81320

    Google Guava Cache 使用

    Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。 如果这不符合你的需求,请尝试Memcached这类工具) 如果你的场景符合上述的每一条,Guava Cache就适合你。 Guava Cache提供了三种基本的缓存回收方式:基于容量回收、定时回收和基于引用回收。 其他特性 统计 CacheBuilder.recordStats()用来开启Guava Cache的统计功能。 如上所述,Guava Cache在某种意义上支持中断。

    42830

    Guava学习:Cache缓存

    摘要: 学习Google内部使用的工具包Guava,在Java项目中轻松地增加缓存,提高程序获取数据的效率。 一、什么是缓存? logger.info("put key :{} value : {}",key,value.getName()); cache.put(key,value); } } 在这个demo中,分别采用了Guava 刷新:主动刷新方法LoadingCache.referesh(K) 信息统计:CacheBuilder.recordStats() 开启Guava Cache的统计功能。 peida/... https://github.com/tiantianga... http://www.blogjava.net/DLevi... http://ifeve.com/google-guava

    31110

    guava cache 用法详解

    在 java 环境下,最常见的一种开源缓存框架要数 guava cache 了。简单的配置与优秀的性能,让它得到了广大 java 程序员的青睐。 2. guava cache 的使用 guava cache 的使用非常简单,下面是一个 sample: LoadingCache<String, String> cache = CacheBuilder.newBuilder cache 通过 load 方法获取数据,而当缓存中存在数据但已失效后,guava cache 则改为通过 reload 方法获取数据。 总结 guava cache 的异步 reload 策略可以有效实现容错、节约调用耗时的目的,但有一个致命的缺陷:主线程返回的数据有可能是已过期的。 那么,guava cache 是如何做到上述机制的呢?敬请期待下一篇文章,让我来深入 guava cache 的源码,详细为您解读。

    47120

    限流算法(Guava RateLimiter)

    使用 Redis + Lua 脚本的方式可以简单的实现 Guava RateLimiter guava RateLimiter 作为抽象类有个子类 SmoothRateLimiter, 这是个抽象类并且又两个实现类 参考资料 Guava限流器RateLimiter中mutexDoNotUseDirectly/锁的使用

    10320

    扫码关注腾讯云开发者

    领取腾讯云代金券