guava
文章平均质量分 85
guava
赶路人儿
一个十年以上编程人员,擅长使用java、python、C++等语言,具有广告投放、个性化推荐引擎等超大规模系统开发经验。
展开
-
guava缓存批量获取的一个坑
摘要Guava Cache是Google开源的Java工具集库Guava里的一款缓存工具,一直觉得使用起来比较简单,没想到这次居然还踩了一个坑背景功能需求抽象出来很简单,就是将数据库的查询sthMapper.findById(Long id)的结果缓存起来。但同时还有批量请求,为了提高效率,肯定要批量查询数据库,sthMapper.findByIds(Collection<Long> ids)对于的guava cache 处理类 // 定义guava缓存 public转载 2020-09-03 20:50:14 · 2708 阅读 · 0 评论 -
guava cache详细介绍
官方文档:https://github.com/google/guava/wiki/CachesExplainedguava cache是google开源的一款本地缓存工具库,它的设计灵感来源于ConcurrentHashMap,使用多个segments方式的细粒度锁,在保证线程安全的同时,支持高并发场景需求,同时支持多种类型的缓存清理策略,包括基于容量的清理、基于时间的清理、基于引用的清理等。<dependency> <groupId>com.google.gua原创 2020-09-03 22:53:02 · 13739 阅读 · 0 评论 -
java 将list按照指定数量分成小list
1、自己编写相关代码:2、使用guava:import java.util.ArrayList; import java.util.List; import com.google.common.collect.Lists; public class Test4 { public static void main(String[] args) { ...原创 2017-07-21 19:09:18 · 28262 阅读 · 0 评论 -
guava cache详解
范例:LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER) .bui...转载 2018-04-24 17:03:49 · 2502 阅读 · 0 评论 -
java大小固定的队列——保存最后N个元素
我们在应用中有时会用到这样一个数据结构——一个大小固定的队列,每次插入数据后最新的数据被删除,就类似一个圈,每次加入新元素后旧元素被覆盖。1、EvictingQueue:Guava现在有一个EvictingQueue , 一个非阻塞队列,当尝试向队列中添加新元素并且它已满时,会自动从其头部驱逐一个元素。我们可以把EvictingQueue想象成一个我们以仅追加方式插入元素的环。如果我们想要...原创 2018-08-17 19:45:45 · 15226 阅读 · 0 评论 -
MinMaxPriorityQueue类介绍
一、MinMaxPriorityQueue:1、在guava包中有一个MinMaxPriorityQueue类,它提供了一种常数时间复杂度的方式访问其最小和最大元素的数据结构。作为一个queue,它在功能上和PriorityQueue一样。1)在构造是可以指定比较器,如果没有指定那么使用自然排序。2)要获得最少的元素,我们需要调用peekFirst()方法。为了获得最大的元素,我们可以...原创 2018-08-18 14:46:27 · 2172 阅读 · 0 评论 -
Guava---文件操作Files
1、复制文件//通过guava 实现文件复制private static String from = "D:\\自定义代码\\Guava\\guava\\src\\1.txt";private static String to = "D:\\自定义代码\\Guava\\guava\\src\\2.txt";Files.copy(new File(from),new File(to));...原创 2019-05-25 14:02:51 · 8754 阅读 · 0 评论 -
对Guava Cache的封装和使用
由于项目的实际情况,需要缓存一些比较不经常改动的数据在本地服务器中,以提高接口处理的速度。决定采用Guava Cache之后,整理了一些具体需求:由于要缓存的key-value对比较多,需要一个封装好的类被继承,子类可以简单的实现把key-value缓存到Guava Cache中; 需要定义一个接口,简单的定义一个get(K key)方法,方便使用; 需要有一个管理界面,统计缓存的命...转载 2016-08-26 18:55:56 · 7997 阅读 · 0 评论 -
guava学习之RangeMap
在Google Guava官方API上面可以得知:RangeMap是一种集合类型( collection type),它将不相交、且不为空的Range(key)映射给一个值(Value)。和RangeSet不一样,RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的。 和RangeSet一样,实现RangeMap也是一个接口,实现它的也只有两个类,分别为mmutableRa...原创 2017-03-15 15:14:58 · 1084 阅读 · 0 评论 -
guava学习:RangeSet
RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。 讲了这么多,我们该怎么样利用RangeSet?RangeSet类是一个接口,需要用它的子类来声明一个RangeSet型的对象,实现了RangeSet接口的类有ImmutableRangeSet和TreeRangeS...转载 2017-03-15 14:57:05 · 3653 阅读 · 0 评论 -
Guava学习笔记:Range
在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构。从Google官方文档可以得到定义:Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。 在数学里面的范围是有边界和无边界之分的;同样,在Guava中也有这个说法。如果这个范围是有边界的,那么这个范围又可以分为包括开集(...转载 2017-03-15 14:31:38 · 996 阅读 · 0 评论