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

相关文章

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例