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

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下