当前位置: 首页 > news >正文

Guava常用方法

目录

一、数学和数值操作

二、并发库

三、缓存

 四、集合

 五、I/O 与文件操作

 六、网络

 七、时间处理

 八、事件总线

九、反射

 十、范围和集合操作

 十一、随机数和测试

 十二、注解处理

 十三、比较器和排序

 十四、哈希和散列


  • Guava 是 Google 开源的一个 Java 工具库,它提供了很多 Java 标准库中没有的便利工具和功能。上面的代码示例已经涵盖了 Guava 的一些核心功能,但 Guava 库的用途远不止这些。以下是一些其他的 Guava 特性和组件,可以作为补充:

一、数学和数值操作


  • IntsLongsDoubles 等类提供了对基本数值类型的操作,如比较器、排序、最小最大值等。
// 代码如下
import com.google.common.primitives.Ints;// 使用 Ints 类获取最小值
int min = Ints.min(1, 3, 2);
System.out.println("Min value: " + min); // 输出: 1

二、并发库


  • AbstractFuture 和 ListenableFuture 等类提供了对异步编程的支持。
  • RateLimiter 类用于控制对资源的访问速率。
// 代码如下
import com.google.common.util.concurrent.RateLimiter;// 创建一个速率限制器
RateLimiter rateLimiter = RateLimiter.create(1.0); // 每秒一个操作
rateLimiter.acquire(); // 请求一个操作

三、缓存


  • CacheBuilder 不仅可以创建简单的缓存,还可以实现复杂的缓存策略,如自动过期、软引用和弱引用缓存等。
// 代码如下
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;LoadingCache<String, String> cache = CacheBuilder.newBuilder().maximumSize(100).build(CacheLoader.from(key -> {// 模拟数据库查询return "Value for " + key;}));String value = cache.get("key1"); // 从缓存获取,或者执行加载逻辑

 四、集合


  • MultisetMultimapBiMap 等类提供了对集合的扩展,支持多值映射和双向映射。
  • Table 类提供了一种存储和操作二维数据的方式。
// 代码如下
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;// 创建双向映射
BiMap<String, Integer> map = HashBiMap.create();
map.put("one", 1);
map.put("two", 2);Integer value = map.get("one"); // 获取值
String key = map.inverse().get(2); // 通过值获取键

 五、I/O 与文件操作


  • Files 类提供了文件读写、文件属性获取等操作。
  • ByteSourceCharSource 等类提供了对字节和字符流的操作。
// 代码如下
import com.google.common.io.Resources;// 读取网络资源
String content = Resources.toString(Resources.getResource("http://example.com/file.txt"),Charsets.UTF_8
);

 六、网络

  • HttpTransport 和 UrlFetch 类提供了对 HTTP 请求的支持。
// 代码如下
import com.google.common.net.HttpTransportFactory;// 使用 UrlFetch 进行 HTTP 请求
String url = "http://example.com";
String response = HttpTransportFactory.create().fetch(url).execute().parseAsString();

 七、时间处理


  • Stopwatch 类用于测量代码段的执行时间。
  • TimeLimiter 类可以对操作设置时间限制。
// 代码如下
import com.google.common.base.Stopwatch;// 使用 Stopwatch 测量时间
Stopwatch stopwatch = Stopwatch.createStarted();
// 执行一些操作...
stopwatch.stop();
System.out.println("Elapsed time: " + stopwatch.elapsed());

 八、事件总线


  • EventBus 类支持发布-订阅模式的事件处理。
// 代码如下
import com.google.common.eventbus.EventBus;// 创建事件总线并发布事件
EventBus eventBus = new EventBus();
eventBus.post("Event message");

九、反射

  • ClassPath 类用于扫描类路径下的类和资源。
// 代码如下
import com.google.common.reflect.ClassPath;// 扫描类路径下的类
ClassPath classPath = ClassPath.from(getClassLoader());
ImmutableSet<ClassInfo> allClasses = classPath.getAllClasses();

 十、范围和集合操作

  • Range 类用于表示和操作有序值的范围。
  • Iterables 和 Collections2 类提供了一系列静态方法来增强集合的操作。

// 代码如下
import com.google.common.collect.Range;// 使用 Range 表示范围
Range<Integer> range = Range.closed(1, 5);
boolean contains = range.contains(3); // 检查是否包含某个值

 十一、随机数和测试

  • Randoms 类提供生成随机数的方法。
  • MoreAsserts 类提供额外的断言方法,用于测试。

// 代码如下
import com.google.common.reflect.TypeToken;
import java.lang.reflect.Type;// 使用 TypeToken 处理泛型类型
Type type = new TypeToken<List<String>>(){}.getType();

 十二、注解处理

  • Annotations 类提供对注解的操作。

// 代码如下
import com.google.common.reflect.TypeToken;
import java.lang.reflect.Type;// 使用 TypeToken 处理泛型类型
Type type = new TypeToken<List<String>>(){}.getType();

 十三、比较器和排序

  • Ordering 类提供灵活的比较器和排序功能。

// 代码如下
import com.google.common.collect.Ordering;// 使用 Ordering 进行排序
List<String> list = Arrays.asList("Alice", "Bob", "Charlie");
Ordering<String> naturalOrder = Ordering.natural();
List<String> sortedList = naturalOrder.sortedCopy(list);

 十四、哈希和散列

  • Hash 类提供哈希相关的操作。

// 代码如下
import com.google.common.hash.HashFunction;
import com.google.common.hash.Hashing;// 使用 HashFunction 进行哈希计算
HashFunction hashFunction = Hashing.murmur3_32();
String string = "hello";
HashCode hashCode = hashFunction.hashString(string, Charsets.UTF_8);

 

相关文章:

Guava常用方法

目录 一、数学和数值操作 二、并发库 三、缓存 四、集合 五、I/O 与文件操作 六、网络 七、时间处理 八、事件总线 九、反射 十、范围和集合操作 十一、随机数和测试 十二、注解处理 十三、比较器和排序 十四、哈希和散列 Guava 是 Google 开源的一个 Java 工具库&#xff…...

干货分享:宏集物联网HMI通过S7 MPI协议采集西门子400PLC数据

前言 为了实现和西门子PLC的数据交互&#xff0c;宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集HMI通过S7 MPI协议采集西门子400PLC数据的操作步骤&#xff0c;其他协议的操作…...

【Web API DOM11】节点操作

目录 一&#xff1a;DOM节点 1 什么是DOM节点 2 DOM节点分类 二&#xff1a;节点查找&#xff08;元素节点&#xff09; 1 节点关系 父节点 子节点 兄弟节点 三&#xff1a;增加节点 1 创建节点 2 追加节点 2 案例&#xff1a;渲染数据 案例中核心代码块 样式 四…...

Unity 设置窗口置顶超级详解版

目录 前言 一、user32.dll 1.什么是user32.dll 2.如何使用user32.dll 二、句柄Handle 1.句柄 2.句柄的功能 3.拿句柄的方法 三、窗口置顶 1.窗口置顶的方法 2.参数说明 3.使用方法 四、作者的碎碎念 前言 up依旧挑战全网讲解最详细版本~~ 本篇文章讲解的是unity…...

编程后端:深入探索其所属的行业领域

编程后端&#xff1a;深入探索其所属的行业领域 在数字化浪潮席卷全球的今天&#xff0c;编程后端作为技术领域的重要分支&#xff0c;其所属的行业领域一直备受关注。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析编程后端所属的行业&#xff0c;并揭…...

ubuntu18.04离线源制作

给客户部署有时需要纯内网环境&#xff0c;那这样就连不了网络。 一些包就下载不下来&#xff0c;而大家都知道用deb离线安装是非常麻烦的&#xff0c;各种依赖让你装不出来。 这里教大家打包源。 我准备2台机器&#xff0c;42和41 42可以联网&#xff0c;41不能联网。我想在…...

【DPDK学习路径】八、轮询

前面我们已经了解了如何使用DPDK创建线程并绑定核心&#xff0c;以及如何申请内存池并创建 RX/TX 队列。 接下来我们将了解DPDK的核心内容之一&#xff1a;以轮询的方式从网卡中收取报文。 下面直接给出一个实例&#xff0c;此实例使用核心1及核心2创建了两个线程用于报文处理&…...

Mac环境下,简单反编译APK

一、下载jadx包 https://github.com/skylot/jadx/releases/tag/v1.4.7 下载里面的这个&#xff1a;下载后&#xff0c;找个干净的目录解压&#xff0c;我是放在Downloads下面 二、安装及启动 下载和解压 jadx&#xff1a; 下载 jadx-1.4.7.zip 压缩包。将其解压到你希望的目…...

027、工具_redis-benchmark

redis-benchmark可以为Redis做基准性能测试 1.-c -c(clients)选项代表客户端的并发数量(默认是50)。 2.-n -n(num)选项代表客户端请求总量(默认是100000)。 例如redis-benchmark-c100-n20000代表100各个客户端同时请求Redis,一 共执行20000次。 redis-benchmark会…...

京准电钟 | 对比GPS,北斗卫星授时的场景有哪些?

京准电钟 | 对比GPS&#xff0c;北斗卫星授时的场景有哪些&#xff1f; 京准电钟 | 对比GPS&#xff0c;北斗卫星授时的场景有哪些&#xff1f; 对比国外的GPS&#xff0c;我国北斗卫星授时由于其高精度和稳定性&#xff0c;在各个领域都有广泛的应用场景。 以下是一些单北斗卫…...

电脑桌面提醒做事的app 好用的桌面提醒app

在快节奏的现代生活中&#xff0c;我们每天都要通过电脑处理大量的工作事项。然而&#xff0c;繁忙的工作节奏有时会导致我们遗忘某些重要任务&#xff0c;从而带来不必要的损失。为了避免这种情况&#xff0c;选择一款好用的桌面提醒app显得尤为重要。 想象一下&#xff0c;你…...

ICC2:如何获取get_xx -filter后可用的属性有哪些?

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 report_attribute -app -class cell $instname 这种直接告诉你指定cell有哪些属性&#xff0c;以及对应的值是什么 或者直接用list_attribute也可以 list_attribute -help可以…...

SSL协议在实际生活中有哪些应用实例?

SSL协议的实际应用案例 SSL&#xff08;Secure Sockets Layer&#xff09;协议是一种网络通信协议&#xff0c;用于在客户端和服务器之间建立加密链接&#xff0c;以确保数据在传输过程中的安全性。尽管SSL协议已被TLS&#xff08;Transport Layer Security&#xff09;协议所取…...

Python连接到Jira实例、登录、查询、修改和创建bug

Python连接到Jira实例、登录、查询、修改和创建bug 首先&#xff0c;你需要安装jira Python库 pip install jira1. 连接到Jira并登录 from jira import JIRA from jira.exceptions import JIRAError# Jira服务器地址&#xff0c;用户名和密码 jira_server https://your-jir…...

等保测评考试初级题大题部分

主机安全问答&#xff1a; 在主机安全测评前期调研活动中&#xff0c;收集信息的内容&#xff08;至少写出六项&#xff09;&#xff1f; 在选择主机测评对象时应该注意哪些要点&#xff1f; 主机安全回答&#xff1a; 至少需要收集服务器主机的设备名称、型号、所属网络区…...

【前端面试】动态表单篇

问题&#xff1a;什么是动态表单&#xff1f; 动态表单是一种可以根据用户的输入或者选择&#xff0c;动态改变其结构和元素的表单。比如&#xff0c;当用户在一个下拉列表中选择不同的选项时&#xff0c;表单中可能会出现不同的输入框、复选框、单选按钮等。 问题&#xff1a…...

Mybatis save、saveOrUpdate、update的区别

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 1. save方法 Mybatis的save方法用于插入一条新的记录。当数据库中不存在相同的记录时&#xff0c;会执行插入操作&#xff1b;如果已经存在相同的记录&#xff0c;则会抛出异常。 int result sqlSession.insert(&…...

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子&#xff0c;记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设&#xff0c;它可以产生一定的时间间隔、延时、定时等功能&#xff0c;广泛应用于…...

赚流量卷,晚点删

自己封装ajax方法 import ajax from /libs/ajax; import qs from "qs"; import Config from /config; import { getProtocolAndHostname } from /libs/util;const AjaxPlugin {}; // const baseUrl process.env.NODE_ENV development ? Config.baseUrl.dev : Co…...

36、matlab矩阵特征值、特征向量和奇异值

1、名词说明 1)特征值 特征值&#xff08;Eigenvalues&#xff09;是矩阵的一个重要概念&#xff0c;在线性代数中起着非常重要的作用。给定一个nn的方阵A&#xff0c;如果存在一个非零向量v&#xff0c;使得矩阵A作用于向量v后&#xff0c;得到的结果与向量v成比例&#xff…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...