Guava 常用功能,防止阁下重复造轮子

2023-10-12 15:21

本文主要是介绍Guava 常用功能,防止阁下重复造轮子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 本地缓存

    /*** 功能:缓存* 文档:<a href="https://github.com/google/guava/wiki/CachesExplained">CachesExplained</a>*/@Testpublic void test_cache() {Cache<String, String> cache = CacheBuilder.newBuilder()// 最大存储条数,缓存将尝试逐出最近或不经常使用的条目.maximumSize(10000)// 可以设定删除时候的权重判断//.weigher((Weigher<String, String>) (x, y) -> x.length() - y.length())// 有效时间.expireAfterWrite(3, TimeUnit.SECONDS)// 记录次数.recordStats().build();cache.put("Lasse", "You are handsome.");log.info("测试结果:{}", cache.getIfPresent("Lasse"));cache.invalidate("Lasse"); // cache.invalidateAll(); 也可以全部删除log.info("测试结果:{}", cache.getIfPresent("Lasse"));log.info("测试结果:{}", cache.stats());}

2. MQ

    @Testpublic void test_eventbus() {EventBus eventBus = new EventBus();eventBus.register(new Listener());// 可以由其他服务推送消息,之后就可以在监听中收到了eventBus.post("消息总线,订单号:100001");}static class Listener {@Subscribepublic void handleEvent(String orderId) {log.info("测试结果:{}", orderId);}}

3. 并发回调

    /*** 功能:并发回调* 文档:https://github.com/google/guava/wiki/ListenableFutureExplained*/@Testpublic void test_ListenableFuture() throws InterruptedException {CountDownLatch countDownLatch = new CountDownLatch(1);ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));ListenableFuture<String> explosion = executorService.submit(() -> "finished");ExecutorService callBackService = Executors.newFixedThreadPool(1);Futures.addCallback(explosion, new FutureCallback<String>() {public void onSuccess(String explosion) {System.out.println("onSuccess");countDownLatch.countDown();}public void onFailure(Throwable thrown) {System.out.println("onFailure");countDownLatch.countDown();}}, callBackService);countDownLatch.await();}

4. 布隆过滤器

    /*** 功能:布隆过滤器* 文档:https://github.com/google/guava/wiki/HashingExplained#bloomfilter*/@Testpublic void test_BloomFilter() {BloomFilter<String> bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()),1000,0.01);// 向布隆过滤器中添加元素bloomFilter.put("apple");bloomFilter.put("banana");bloomFilter.put("orange");// 检查元素是否存在于布隆过滤器中System.out.println(bloomFilter.mightContain("apple"));   // trueSystem.out.println(bloomFilter.mightContain("banana"));  // trueSystem.out.println(bloomFilter.mightContain("orange"));  // trueSystem.out.println(bloomFilter.mightContain("grape"));   // false// 输出布隆过滤器的统计信息System.out.println("Expected FPP: " + bloomFilter.expectedFpp());System.out.println("Number of Inserted Elements: " + bloomFilter.approximateElementCount());}

5. 反射工具包

    /*** 功能:反射* 文档:https://github.com/google/guava/wiki/ReflectionExplained*/@Testpublic void test_Invokable() throws NoSuchMethodException {Method method = UserEntity.class.getMethod("getCreateTime");Invokable<?, ?> invokable = Invokable.from(method);log.info("测试结果 - 方法名称:{}", invokable.getName());log.info("测试结果 - 参数类型:{}", JSON.toJSONString(invokable.getTypeParameters()));log.info("测试结果 - 静态判断:{}", invokable.isStatic());// !(Modifier.isFinal(method.getModifiers()) || Modifiers.isPrivate(method.getModifiers()) || Modifiers.isStatic(method.getModifiers()) || Modifiers.isFinal(method.getDeclaringClass().getModifiers()))log.info("测试结果 - isOverridable:{}", invokable.isOverridable());}

这篇关于Guava 常用功能,防止阁下重复造轮子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196728

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

poj3261(可重复k次的最长子串)

题意:可重复k次的最长子串 解题思路:求所有区间[x,x+k-1]中的最小值的最大值。求sa时间复杂度Nlog(N),求最值时间复杂度N*N,但实际复杂度很低。题目数据也比较水,不然估计过不了。 代码入下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF