工具-Guava&Caffeine
工具-Guava&Caffeine
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
Caffeine用法
Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中将取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。使用spring.cache.cache-names属性可以在启动时创建缓存,并可以通过以下配置进行自定义(按顺序):spring.cache.caffeine.spec: 定义的特殊缓存 com.github.benmanes.caffeine.cache.CaffeineSpec: bean定义 com.g转载 2020-12-11 14:23:17 · 2946 阅读 · 2 评论 -
Caffeine:Java8中Guava的替代者
话说,中间件的选择上,Spring(SpringBoot)一直是业界的风向标。比如Spring一直使用「Jackson」,而没有使用Gson和fastjson。SpringBoot2.0默认数据库连接池从TomcatPool换到了「HikariCP」。在本地缓存方面,SpringFramework5.0(SpringBoot2.0)放弃了Google的GuavaCache,选择了「Caffeine」(Drop Guava caching - superseded by Caffeine [SPR-13797转载 2020-12-11 09:18:51 · 1929 阅读 · 0 评论 -
Guava中Lists.partition(List, size) 方法懒划分/懒分区
Guava中Lists.partition(List, size) 方法懒划分/懒分区背景前几天有同事使用这个方法,不小心点进去查看源码,源码如下,然他通过idea工具debug发现执行完Lists.partition(List, size)这一行直接就现实了个size大小如下图:看了源码后根本就没有显示的调用size这些啊,就在那思考不知道为什么?Lists.partition(List, size)源码如下:@GwtCompatible(emulated = true)publi转载 2020-06-19 19:05:38 · 5278 阅读 · 1 评论 -
Guava LoadingCache不能缓存null值
测试的时候发现项目中的LoadingCache没有刷新,但是明明调用了refresh方法了。后来发现LoadingCache是不支持缓存null值的,如果load回调方法返回null,则在get的时候会抛出异常。通过几个例子开看这个问题:public void test_loadNull() { LoadingCache<String, String> stringCache = CacheBuilder.newBuilder() .maximumSiz转载 2020-05-14 15:01:58 · 2636 阅读 · 0 评论 -
Java 高并发缓存与Guava Cache
一.背景缓存是我们在开发中为了提高系统的性能,把经常的访问业务的数据第一次把处理结果先放到缓存中,第二次就不用在对相同的业务数据在重新处理一遍,这样就提高了系统的性能。缓存分好几种:(1)本地缓存。(2)数据库缓存。(3)分布式缓存。分布式缓存比较常用的有memcached等,memcached是高性能的分布式内存缓存服务器,缓存业务处理结果,减少数据库...转载 2019-11-07 18:10:47 · 991 阅读 · 0 评论 -
Guava学习:Cache缓存入门
https://segmentfault.com/a/1190000007300118一、什么是缓存?根据科普中国的定义,缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。在这里,我们借用了硬件缓存的概念,当在Java程...转载 2019-03-27 16:10:42 · 1020 阅读 · 0 评论 -
guava处理字符串与List之间,字符串与map之间的转换
import static org.junit.Assert.*;import java.util.List;import java.util.Map;import org.junit.Test;import com.google.common.base.Joiner;import com.google.common.base.Splitter;import com.google转载 2017-10-10 17:46:43 · 1068 阅读 · 0 评论 -
Java: Best way of converting List<Integer> to List<String>
60down voteacceptedAs far as I know, iterate and instantiate is the only way to do this. Something like (for others potential help, since I'm sure you know how to do this):ListInteger> o转载 2017-08-28 11:40:07 · 893 阅读 · 0 评论 -
Guava学习笔记:Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示:import org.junit.Test;转载 2017-03-21 18:07:11 · 1530 阅读 · 0 评论 -
Google Guava集合在实体类中的应用示例
将实体list,转换成map,拿到所有id的集合方法。减少访问数据库。 实体基类BaseEntitypackage com.mytest;import org.apache.commons.lang3.builder.ToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;public转载 2016-11-25 16:38:35 · 2350 阅读 · 0 评论 -
Guava学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法。在Lists类中支持构造ArrayList、LinkedList以及newCopyOnWriteArrayList对象的方法。其中提供了以下构造ArrayList的函数:下面四个构造一个ArrayList对象,但是不显式的给出申请空间的大小: newArrayList() newArrayList(E... elem转载 2016-07-28 15:30:18 · 1945 阅读 · 0 评论 -
使用google guava 实现定时缓存功能
使用google guava 实现定时缓存功能。创建Book.java[java] view plaincopyprint?public class Book { private int id; public int getId() { return id; }转载 2015-11-17 10:36:06 · 4217 阅读 · 0 评论 -
Google Guava EventBus实例与分析
EventBus是Guava框架对观察者模式的一种实现,使用EventBus可以很简洁的实现事件注册监听和消费。Guava框架里面提供了两种相关的实现,一种是单线程同步事件消费,另外一直是多线程异步事件消费。后者在对象设计上是前者的子类。首先我们看一个最简单的实例:12345678p转载 2015-11-17 10:44:36 · 6396 阅读 · 0 评论 -
google guava cache 处理
使用本地内存Java代码 LoadingCache cache = CacheBuilder.newBuilder().maximumSize(100) .expireAfterAccess(5, TimeUnit.SECONDS).build(new CacheLoader() {转载 2015-11-17 10:43:57 · 5472 阅读 · 0 评论 -
使用google guava做内存缓存
google guava中有cache包,此包提供内存缓存功能。内存缓存需要考虑很多问题,包括并发问题,缓存失效机制,内存不够用时缓存释放,缓存的命中率,缓存的移除等等。 当然这些东西guava都考虑到了。guava中使用缓存需要先声明一个CacheBuilder对象,并设置缓存的相关参数,然后调用其build方法获得一个Cache接口的实例。请看下面的代码和注释,注意在注释中指定了Cache...转载 2015-11-17 10:42:48 · 8552 阅读 · 0 评论 -
Google Guava Cache实例与分析
本文主要叙述如何使用Cuava的Cache。示例12345678910LoadingCache graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expir转载 2015-11-17 10:36:34 · 4697 阅读 · 0 评论