【工具】Google Guava
Guava:Google工具类库,https://github.com/google/guava
使用:
常用开发库:参考 https://pdai.tech/md/develop/package/dev-package-x-google-guava.html
- 基本工具 [Basic utilities]
- 集合[Collections]
- 缓存[Caches]
- 函数式风格[Functional idioms]
- 并发[Concurrency]
- 字符串处理[Strings]
- 原生类型[Primitives]
- 区间[Ranges]
- I/O
- 散列[Hash]
- 事件总线[EventBus]
- 数学运算[Math]
- 反射[Reflection]
Event Bus: 单机版本的生产、消费者模式
Guava RateLimiter :基于令牌桶的单机限流。https://cloud.tencent.com/developer/article/1891525 含基于切面的实现样例
内部设计模式
1、Builder模式:参数较多时,通过构造函数太多变量且部分参数可能不需要且多参数联合校验问题,解决方案:1)使用Builder模式;2)无参构造函数创建对象+ setXXX()方法来逐一设置需要的设置的成员变量。
缓存部分:CacheBuilder
1 Cache<String, String> cache = CacheBuilder.newBuilder() 2 .initialCapacity(100) 3 .maximumSize(1000) 4 .expireAfterWrite(10, TimeUnit.MINUTES) 5 .build(); 6 7 cache.put("key1", "value1"); 8 String value = cache.getIfPresent("key1"); 9 System.out.println(value);
2、Wrapper模式(代理模式、装饰器、适配器):
AddLoggingCollection<E> 基于代理模式,在原始Collection基础上增加add相关操作;
该代理类没有直接实现原始接口而是通过集成ForwardXXX原因:为了简化Wrapper模式的代码实现,Guava提供一系列缺省的ForwardingXXXX类。用户在实现自己的Wrapper类的时候,基于缺省Forwarding类扩展,可只实现自己关心的方法,其他不关心的方法使用缺省Forwarding类实现,

public class AddLoggingCollection<E> extends ForwardingCollection<E> { private static final Logger logger = LoggerFactory.getLogger(AddLoggingCollection.class); private Collection<E> originalCollection; public AddLoggingCollection(Collection<E> originalCollection) { this.originalCollection = originalCollection; } @Override protected Collection delegate() { return this.originalCollection; } @Override public boolean add(E element) { logger.info("Add element: " + element); return this.delegate().add(element); }
Wrapper常规实现框架:

public interface Interf { void f1(); void f2(); } public class OriginalClass implements Interf { @Override public void f1() { //... } @Override public void f2() { //... } } public class WrapperClass implements Interf { private OriginalClass oc; public WrapperClass(OriginalClass oc) { this.oc = oc; } @Override public void f1() { //...附加功能... this.oc.f1(); //...附加功能... } @Override public void f2() { this.oc.f2(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)