hello,各位大佬上午|中午|下午|晚上|凌晨好,我是一灰灰,今天给大家介绍一个相对基础的知识点 HashMultmap;
guava基本上可以说是java开发项目中,大概率会引入的包,今天介绍的主角是一个特殊的容器 – HashMultmap
,可以简单的将它的数据结构理解为Map<K, Set<V>>
那么为什么会突然想到介绍一下它呢,因为昨天刚因为对它理解不够深刻,把它当作了Map<K, List<V>>
来使用,结果出了问题;既然如此那就好好盘一盘,反思一下
hello,各位大佬上午|中午|下午|晚上|凌晨好,我是一灰灰,今天给大家介绍一个相对基础的知识点 HashMultmap;
guava基本上可以说是java开发项目中,大概率会引入的包,今天介绍的主角是一个特殊的容器 – HashMultmap
,可以简单的将它的数据结构理解为Map<K, Set<V>>
那么为什么会突然想到介绍一下它呢,因为昨天刚因为对它理解不够深刻,把它当作了Map<K, List<V>>
来使用,结果出了问题;既然如此那就好好盘一盘,反思一下
使用guava作内存缓存,大多数小伙伴应该都使用过,通过CacheBuilder
创建LoadingCache
一个kv格式的缓存,如果我们需要缓存的只是一个value呢?
针对这种场景,接下来介绍一种基于Supplier
来实现的缓存方式
在jdk中有一个数据结构BitSet,可以用来执行位操作,比如我们常见的统计网站在线人数、pv/uv等;但是当数据样本分布不均,可能导致较大的空间浪费;其次它更适用于正整数类型的判定,针对其他的业务场景,有点薄弱
本文将介绍BloomFilter(布隆过滤器)的相关知识点,以及Guava中BloomFilter的使用姿势
Guava在实际的Java后端项目中应用的场景还是比较多的,比如限流,缓存,容器操作之类的,有挺多实用的工具类,这里记录一下,在使用GuavaCache,返回null的一个问题
1 | @Test |
上面是一个非常简单的测试case,需要注意的是,cache.get("word")
的执行,并不如逾期的返回的是null,而是会抛一个异常出来
1 | word |
从异常描述能看出,不允许返回null,这一块之前倒是没怎么注意,因此对于null的情况,要么定义一个标记表示不存在,要么在load()
方法中主动抛一个异常出来,在使用的时候注意下,通过异常的使用方式,可以如下
1 | public class NoVlaInGauvaException extends Exception { |
说明:为什么重写fillInStackTrace
方法
其次就是get
与getUnchecked
的区别了
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
Update your browser to view this website correctly. Update my browser now