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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦