一.系统设计

(一).目的

1.帮助自己梳理思路,没有设计直接写,逻辑都是混乱的.

2.别人评审设计文档时,帮助你优化设计.

3.别人维护你的代码时,快速了解。

4.如果编程水平没有提高一个级别时,同级的人员或自己代码重构是没有太大意义的。

(二).模板

参考  xxx系分


 

(三).建议

1.系统设计主要关注领域模型,时序图,复制流程的关键设计。

2.系统设计的核心是领域定义和模块拆分.领域模型需要画出系统设计的主要概念名词,名词之间的继承关系。

3.只是对表的CRUD的简单操作,可以不画时序图。方法中调用涉及三个以上的类时,需要画时序图。

4.关键设计需要列出复制业务的核心设计流程。


 

二.代码规范

参考之前文章写的代码规范

三.单测

(一).目的

提高代码稳定性.

(二).模板

参考 xxx

(三).建议

1.controller入口开始的方法一定有单测,这个是和前端联调的接口,保证联调前基本功能正常。

2.service层业务比较重要或者业务逻辑复杂,需要mock不同入参,测试核心逻辑。

3.单测遵循BCDE原则,时间允许的情况下,覆盖边界用例,正确用例,异常用例。

4.单测数据使用自己的测试账号,或者自己构造测试数据,不使用其他人或者公用账号,避免dev环境影响其他人的测试。测方法开始时新增数据,方法结束时表中物理delete删除测试数据。


 

四.SQL

(一).目的

优化线上SQL执行时间.

(二).模板

参考 SQL优化思路-CSDN博客

(三).建议

1.能用代码实现的复杂逻辑不建议放在SQL中.

2.表必备三个字段主键id,gmt_create,gmt_modified

3.遵守最左前缀原则

4.多表join时,join的外键必须有索引.

5.频繁查询的where条件列必须有索引.


 

五.工具与技能

(一).工具

Ditto 粘贴板复制工具

conmu windows下支持linux命令

offset explorer kafka客户端

rdm redis客户端

dbeaver mysql客户端

visual code markdown工具

api fox

jad 反编译class文件和jar包

startuml uml工具

yed 架构和部署图工具

(二).技能

1.java技能提升路径

对java技术提升的定级总结_java提升技术的级别-CSDN博客

2.java知识体系

java 架构师知识体系 & 常见面试题_young outofmemory-CSDN博客

3.系统中用到的中间件,比如jvm,RetrofitClient,rancher,skywalking,k8s,apollo,swagger,shiro,xxl-job,maven,kafka,mysql,springboot,redis,mysql。涵盖日常开发的微服务RPC,日志,链路追踪,容器,注册中心,权限校验,调度任务,打包,消息队列,ORM,缓存,数据库等中间件,还有hbase,flink,ElasticSearch,netty,TensorFlow等项目中没有用到的中间件.

建议阅读1-2个源码,提高编码规范,常用架构设计方法。


 

(三).书籍推荐


 

阿里巴巴java开发手册

深入理解Java虚拟机

代码整洁之道

设计模式

spring源码深度剖析

redis设计与实现

深入理解MySQL

深入浅出mybatis技术原理与实战

kubernetes in action中文版

深入分析tomcat

实现领域驱动设计

重构-改善既有代码的设计

微服务架构设计模式

架构整洁之道


 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐