Guava和Apache Common提供了非常强大的类库工具。涉及面非常广泛。日常工作中如果遇到需要一些基础能力,要优先想想这些类库。

Apache Common

IO相关-读写文件

Collection of I/O utilities.

读写csv文件

加密解密

压缩,解压缩

读取配置文件 -Configuration

image.png

XML-to-Java-object mapping

发送邮件

image.png

文件上传

File upload capability for your servlets and web applications.

数学计算相关/统计相关

计算一系列数字的平均值、方差和其他汇总统计数据
使用线性回归将一条线拟合到一组数据点
将曲线拟合到一组数据点
寻找通过点集合的平滑曲线(插值)
使用最小二乘法将参数模型拟合到一组测量值
求解包含实值函数的方程(即寻根)
线性方程组的求解
求解常微分方程
最小化多维函数
生成比使用JDK可能有更多限制(例如分布、范围)的随机数
生成与输入文件中的数据“相似”的随机样本和/或数据集
进行统计显著性检验
各种数学函数,如阶乘、二项式系数和“特殊函数”(如gamma、beta函数)

Guava

https://github.com/google/guava/wiki

如何优雅地统计方法耗时-stopWatch

http://www.ibloger.net/article/3304.html

  1. Stopwatch watch = Stopwatch.createStarted();
  2. xxx (实际代码)
  3. watch.stop();
  4. sout(watch.elapsed(TimeUnit.MILLISECONDS))

如何创建内存缓存

常用 Guava 和 Caffeine,两者对比 https://zhuanlan.zhihu.com/p/345175951 推荐Caffeine

https://github.com/ben-manes/caffeine
https://github.com/google/guava/wiki/CachesExplained

最佳实践

  1. 在访问时load db 到内存,并隔一段时间自动刷新
  2. LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
  3. .maximumSize(10000)
  4. .refreshAfterWrite(Duration.ofMinutes(1)) // 隔一段时间自动刷新
  5. .build(key -> createExpensiveGraph(key));

hutool - java基础操作这里都会有util,想用基础util优先想到这里

https://hutool.cn/image.png

ReflectUtil
文件相关
excel相关
加解密
DataUtil
…..