Guava常用方法
目录
一、数学和数值操作
二、并发库
三、缓存
四、集合
五、I/O 与文件操作
六、网络
七、时间处理
八、事件总线
九、反射
十、范围和集合操作
十一、随机数和测试
十二、注解处理
十三、比较器和排序
十四、哈希和散列
- Guava 是 Google 开源的一个 Java 工具库,它提供了很多 Java 标准库中没有的便利工具和功能。上面的代码示例已经涵盖了 Guava 的一些核心功能,但 Guava 库的用途远不止这些。以下是一些其他的 Guava 特性和组件,可以作为补充:
一、数学和数值操作
Ints,Longs,Doubles等类提供了对基本数值类型的操作,如比较器、排序、最小最大值等。
// 代码如下
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"); // 从缓存获取,或者执行加载逻辑
四、集合
Multiset,Multimap,BiMap等类提供了对集合的扩展,支持多值映射和双向映射。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类提供了文件读写、文件属性获取等操作。ByteSource,CharSource等类提供了对字节和字符流的操作。
// 代码如下
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 工具库ÿ…...
干货分享:宏集物联网HMI通过S7 MPI协议采集西门子400PLC数据
前言 为了实现和西门子PLC的数据交互,宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集HMI通过S7 MPI协议采集西门子400PLC数据的操作步骤,其他协议的操作…...
【Web API DOM11】节点操作
目录 一:DOM节点 1 什么是DOM节点 2 DOM节点分类 二:节点查找(元素节点) 1 节点关系 父节点 子节点 兄弟节点 三:增加节点 1 创建节点 2 追加节点 2 案例:渲染数据 案例中核心代码块 样式 四…...
Unity 设置窗口置顶超级详解版
目录 前言 一、user32.dll 1.什么是user32.dll 2.如何使用user32.dll 二、句柄Handle 1.句柄 2.句柄的功能 3.拿句柄的方法 三、窗口置顶 1.窗口置顶的方法 2.参数说明 3.使用方法 四、作者的碎碎念 前言 up依旧挑战全网讲解最详细版本~~ 本篇文章讲解的是unity…...
编程后端:深入探索其所属的行业领域
编程后端:深入探索其所属的行业领域 在数字化浪潮席卷全球的今天,编程后端作为技术领域的重要分支,其所属的行业领域一直备受关注。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析编程后端所属的行业,并揭…...
ubuntu18.04离线源制作
给客户部署有时需要纯内网环境,那这样就连不了网络。 一些包就下载不下来,而大家都知道用deb离线安装是非常麻烦的,各种依赖让你装不出来。 这里教大家打包源。 我准备2台机器,42和41 42可以联网,41不能联网。我想在…...
【DPDK学习路径】八、轮询
前面我们已经了解了如何使用DPDK创建线程并绑定核心,以及如何申请内存池并创建 RX/TX 队列。 接下来我们将了解DPDK的核心内容之一:以轮询的方式从网卡中收取报文。 下面直接给出一个实例,此实例使用核心1及核心2创建了两个线程用于报文处理&…...
Mac环境下,简单反编译APK
一、下载jadx包 https://github.com/skylot/jadx/releases/tag/v1.4.7 下载里面的这个:下载后,找个干净的目录解压,我是放在Downloads下面 二、安装及启动 下载和解压 jadx: 下载 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,北斗卫星授时的场景有哪些? 京准电钟 | 对比GPS,北斗卫星授时的场景有哪些? 对比国外的GPS,我国北斗卫星授时由于其高精度和稳定性,在各个领域都有广泛的应用场景。 以下是一些单北斗卫…...
电脑桌面提醒做事的app 好用的桌面提醒app
在快节奏的现代生活中,我们每天都要通过电脑处理大量的工作事项。然而,繁忙的工作节奏有时会导致我们遗忘某些重要任务,从而带来不必要的损失。为了避免这种情况,选择一款好用的桌面提醒app显得尤为重要。 想象一下,你…...
ICC2:如何获取get_xx -filter后可用的属性有哪些?
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 report_attribute -app -class cell $instname 这种直接告诉你指定cell有哪些属性,以及对应的值是什么 或者直接用list_attribute也可以 list_attribute -help可以…...
SSL协议在实际生活中有哪些应用实例?
SSL协议的实际应用案例 SSL(Secure Sockets Layer)协议是一种网络通信协议,用于在客户端和服务器之间建立加密链接,以确保数据在传输过程中的安全性。尽管SSL协议已被TLS(Transport Layer Security)协议所取…...
Python连接到Jira实例、登录、查询、修改和创建bug
Python连接到Jira实例、登录、查询、修改和创建bug 首先,你需要安装jira Python库 pip install jira1. 连接到Jira并登录 from jira import JIRA from jira.exceptions import JIRAError# Jira服务器地址,用户名和密码 jira_server https://your-jir…...
等保测评考试初级题大题部分
主机安全问答: 在主机安全测评前期调研活动中,收集信息的内容(至少写出六项)? 在选择主机测评对象时应该注意哪些要点? 主机安全回答: 至少需要收集服务器主机的设备名称、型号、所属网络区…...
【前端面试】动态表单篇
问题:什么是动态表单? 动态表单是一种可以根据用户的输入或者选择,动态改变其结构和元素的表单。比如,当用户在一个下拉列表中选择不同的选项时,表单中可能会出现不同的输入框、复选框、单选按钮等。 问题:…...
Mybatis save、saveOrUpdate、update的区别
哈喽,大家好,我是木头左! 1. save方法 Mybatis的save方法用于插入一条新的记录。当数据库中不存在相同的记录时,会执行插入操作;如果已经存在相同的记录,则会抛出异常。 int result sqlSession.insert(&…...
立创·天空星开发板-GD32F407VE-Timer
本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于…...
赚流量卷,晚点删
自己封装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)特征值 特征值(Eigenvalues)是矩阵的一个重要概念,在线性代数中起着非常重要的作用。给定一个nn的方阵A,如果存在一个非零向量v,使得矩阵A作用于向量v后,得到的结果与向量v成比例ÿ…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
