相关阅读:
【极客源码】JetCache源码(一)开篇
JAVA基础(一)简单、透彻理解内部类和静态内部类
JAVA基础(二)内存优化-使用Java引用做缓存
JAVA基础(三)ClassLoader实现热加载
JAVA基础(四)枚举(enum)和常量定义,工厂类使用对比
JAVA基础(五)函数式接口-复用,解耦之利刃
JAVA编程思想(一)通过依赖注入增加扩展性
JAVA编程思想(二)如何面向接口编程
JAVA编程思想(三)去掉别扭的if,自注册策略模式优雅满足开闭原则
JAVA编程思想(四)Builder模式经典范式以及和工厂模式如何选?
HikariPool源码(二)设计思想借鉴
人在职场(一)IT大厂生存法则
1. 项目地址
仓库 | 地址 |
---|---|
github | github.com/alibaba/jet… |
码云 | gitee.com/mirrors/Jet… |
2. 工程结构
JetCache的工程结构如下:
子工程 | 描述 |
---|---|
jetcache-anno | 基于Spring提供@Cached和@CreateCache注解支持。 |
jetcache-anno-api | 定义jetcache的注解和常量,不传递依赖。如果你想把Cached注解加到接口上,又不希望你的接口jar传递太多依赖,可以让接口jar依赖jetcache-anno-api。 |
jetcache-core | 核心api,完全通过编程来配置操作Cache,不依赖Spring。两个内存中的缓存实现LinkedHashMapCache和CaffeineCache也由它提供。 |
jetcache-starter | 使能在spring中使用 |
jetcache-support | 对不同场景下使用redis做的适配。 |
jetcache-test | 测试代码 |
samples | 使用例子 |
3. Level-0 概念模型
任何业务系统,在理解其核心业务概念后,后续就能在此基础上快速的做更深入的了解和延展,达到事半功倍的效果。下图是JetCache的核心概念,在代码中对应类或接口:
这里没有统一使用缓存工厂来创建,更利于解耦,因为每个缓存的创建方式差异较大,将创建者独立出来则互不影响。
4. 编写自己的缓存工具
开发者能力层次:
级别 | 具备能力 |
---|---|
初级 | 照着详细设计文档能完成编码。 |
中级 | 照着概念模型即可完成编码。(当然会有一些细节的澄清)。 |
高级 | 具备独立建模能力,自己建模自己编码。 |
建议初,中级开发者可以在以上核心概念的基础上,尝试编写自己的缓存工具,看看能写到什么程度,好坏并不重要,重要的是在编写过程中碰到的问题会引发你思考,并尝试寻找答案,这样能大大能提高你的编码能力。
编写时不需要写得很好,只要能用上这些概念就行,存放缓存的数据结构就用ConcurrentHashMap。
4. 总结
1. 阅读源码可由粗到细,先大致看下目录/工程结构,核心概念,然后逐层展开,能事半功倍。
2. 调试是加快理解源码最有效的方式,大致了解代码后,就快速调试起来。
3. 平时多注意逐步提高自己的能力,能独立建模并完成编码。
end.