偶然机会,开始用Java写项目。之前一直奔波于JavaScript的体系中,从Jquery、Angualr、Node、Vue,百花争艳。
事件插件
八月底入职开始就着手SpringCloud一系列学习,最终调研集成Mybatis-plus。开始编写的功能是个事件管理的公共插件。
- 事件注册
- 事件发布,并支持各个业务模块发布不同实体类信息。支持异步、同步发布。
- 事件订阅,订阅者可以自定义订阅某种或者某些事件
期间用到了反射、泛型、线程、线程安全队列等知识,恶补Java基础语法、JVM运行原理勉强写完事件插件并测试实践于项目中。
反射
Class c = Class.forName(clazz);
BaseApplicationEvent baseApplicationEvent = (BaseApplicationEvent) applicationContext.getBean(c)
baseApplicationEvent.callbackEvent(eventModel)
泛型
public class EventModel<T> implements Serializable
线程
static class AsyncEvent extends Thread implements Runnable
线程安全队列
public static List<EventModel> eventQueue = new Vector<EventModel>()
存储卷模块
第一个开发的业务模块就是这个存储卷模块,业务不多赘言。从driver层开始往上写,构建Client管理器,编写service层逻辑,输出接口。期间涉及到:
- 事务保证数据一致性
- 定义系统返回码
- 封装controller返回体
- 封装校验注解
- 利用Spring切面拦截处理
- 封装系统异常
- 记录日志,日记追踪轨迹,聚合日志
- 熟悉Mybatis-plus快捷语法
- 加并发锁机制,避免数据库数据混乱
- 通过自研任务管理器发起单次异步任务、周期任务
- 通过自研调度算法调度创建
对象存储
对象存储模块涉及差异主要集中在业务,也涉及了存储卷几乎全部知识点。期间主要涉及
- 调取第三方SDK Client,封装第三方Client。
后记
写了两个月发现难点主要集中在蜿蜒曲折的业务流程上,直到现在磕磕绊绊创建出一个裸机。创建一个自带安装过软件的虚拟机,还才起步,愿Java仕途坦荡。