Charles7c
89a327920e
优化:基于阿里巴巴 Java 开发手册(黄山版)优化常量
...
1.编程规约>常量定义>第1条:
【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
2023-03-04 14:35:45 +08:00
Charles7c
c4d9bd3a75
优化:基于阿里巴巴 Java 开发手册(黄山版)优化 ThreadLocal 使用
...
1.编程规约>并发处理>第6条:
【强制】必须回收自定义的 ThreadLocal 变量记录的当前线程的值,尤其在线程池场景下,线程经常会
被复用,如果不清理自定义的 ThreadLocal 变量,可能会影响后续业务逻辑和造成内存泄露等问题。
尽量在代码中使用 try-finally 块进行回收。
2023-03-04 14:01:33 +08:00
Charles7c
4779d77265
优化:基于阿里巴巴 Java 开发手册(黄山版)优化方法排序及访问权限修饰符
...
1.编程规约>OOP规约>第20条:
【推荐】当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起,便于阅读,
此条规则优先于下一条。
2.编程规约>OOP规约>第21条:
【推荐】类内方法定义的顺序依次是:公有方法或保护方法 > 私有方法 > getter / setter 方法。
说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类关心,也可能是“模板设
计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个黑盒实现;因为承载的信息价值较低,所有
Service 和 DAO 的 getter / setter 方法放在类体最后。
3.编程规约>OOP规约>第26条:
【推荐】类成员与方法访问控制从严:
1)如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。
2)工具类不允许有 public 或 default 构造方法。
3)类非 static 成员变量并且与子类共享,必须是 protected。
4)类非 static 成员变量并且仅在本类使用,必须是 private。
5)类 static 成员变量如果仅在本类使用,必须是 private。
6)若是 static 成员变量,考虑是否为 final。
7)类成员方法只供类内部调用,必须是 private。
8)类成员方法只对继承类公开,那么限制为 protected。
说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。思考:如果是一个
private 的方法,想删除就删除,可是一个 public 的 service 成员方法或成员变量,删除一下,不得手心冒点汗吗?
变量像自己的小孩,尽量在自己的视线内,变量作用域太大,无限制的到处跑,那么你会担心的。
2023-03-04 10:41:43 +08:00
Charles7c
6da85463c9
优化:基于阿里巴巴 Java 开发手册(黄山版)优化部分空集合处理
...
1.编程规约>集合处理>第7条:(个人理解:emptyList() 固然可以减少资源浪费,但未来由于不确定的需求变更,一旦增删元素必然会引发异常)
【强制】Collections 类返回的对象,如:emptyList() / singletonList() 等都是 immutable list,不可
对其进行添加或者删除元素的操作。
反例:如果查询无结果,返回 Collections.emptyList() 空集合对象,调用方一旦在返回的集合中进行了添加元素的操
作,就会触发 UnsupportedOperationException 异常。
2.编程规约>集合处理>第17条:
【推荐】集合初始化时,指定集合初始值大小。
说明:HashMap 使用构造方法 HashMap(int initialCapacity) 进行初始化时,如果暂时无法确定集合大小,那么指
定默认值(16)即可。
正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loaderfactor)默认为 0.75,如果
暂时无法确定初始值大小,请设置为 16(即默认值)。
反例:HashMap 需要放置 1024 个元素,由于没有设置容量初始大小,随着元素增加而被迫不断扩容,resize() 方法
总共会调用 8 次,反复重建哈希表和数据迁移。当放置的集合元素个数达千万级时会影响程序性能。
2023-03-03 23:41:01 +08:00
Charles7c
dc751fc3ec
优化:基于阿里巴巴 Java 开发手册(黄山版)优化部分方法使用
...
1.编程规约>OOP规约>第12条:
【强制】禁止使用构造方法 BigDecimal(double) 的方式把 double 值转化为 BigDecimal 对象。
说明:BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
如:BigDecimal g = new BigDecimal(0.1F);实际的存储值为:0.100000001490116119384765625
正例:优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,此方法内部其实执行了 Double 的
toString,而 Double 的 toString 按 double 的实际能表达的精度对尾数进行了截断。
BigDecimal recommend1 = new BigDecimal("0.1");
BigDecimal recommend2 = BigDecimal.valueOf(0.1);
2.编程规约>OOP规约>第19条:
【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,
否则会有抛 IndexOutOfBoundsException 的风险。
说明:
String str = "a,b,c,,";
String[] ary = str.split(",");
// 预期大于 3,结果等于 3
System.out.println(ary.length);
2023-03-03 23:14:15 +08:00
Charles7c
1257a4bc35
优化:基于阿里巴巴 Java 开发手册(黄山版)优化常量及包命名
...
1.编程规约>常量定义>第4条:
【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
说明:大而全的常量类,杂乱无章,使用查找功能才能定位到要修改的常量,不利于理解,也不利于维护。
正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 SystemConfigConsts 下。
2.编程规约>常量定义>第5条:
【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常
量、类内共享常量。
1)跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
2)应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。
反例:易懂常量也要统一定义成应用内共享常量,两个程序员在两个类中分别定义了表示“是”的常量:
类 A 中:public static final String YES = "yes";
类 B 中:public static final String YES = "y";
A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
3)子工程内部共享常量:即在当前子工程的 constant 目录下。
4)包内共享常量:即在当前包下单独的 constant 目录下。
5)类内共享常量:直接在类内部 private static final 定义。
2023-03-03 22:34:19 +08:00
Charles7c
94be1f9553
新增:新增功能权限适配及校验
...
1.后端 API 注解鉴权使用方式:@SaCheckPermission("system:user:add")
2.前端全局指令函数使用方式:v-permission="['system:user:add']"
3.前端权限判断函数使用方式:checkPermission(['system:user:add'])
2023-03-02 23:39:22 +08:00
Charles7c
843cac4e54
修复:修复多列布局表单样式错乱问题
2023-03-01 21:17:38 +08:00
Charles7c
c1bc5d9049
修复:修复记录被忽略的日志的问题
2023-03-01 20:53:58 +08:00
Charles7c
ac6d2918d9
删除:删除系统管理/岗位管理(过于偏向行政业务向)
2023-02-27 22:53:36 +08:00
Charles7c
8eb82d4c72
修复:修复初始菜单数据错误
2023-02-27 22:21:20 +08:00
Charles7c
d4fd76dcc1
重构: 🔥 重构查询树列表相关 API,并抽取到后端 CRUD 公共组件中
...
1.基于 Hutool TreeUtil 重构查询树列表相关 API
2.抽取查询树列表 API 到后端 CRUD 公共组件中,大大简化部门管理和菜单管理部分代码
2023-02-27 22:03:27 +08:00
Charles7c
6723903c62
优化:优化部分空集合返回
2023-02-26 23:39:41 +08:00
Charles7c
72e5522952
优化:优化新增关键词 create => add
2023-02-26 22:26:17 +08:00
Charles7c
a79b3e0e96
新增:新增公共查询枚举字典 API,优化前端获取枚举数据的方式
2023-02-26 21:49:03 +08:00
Charles7c
8200ea822f
新增:新增系统管理/岗位管理(列表、查看详情、新增、修改、删除、导出)
2023-02-26 00:19:56 +08:00
Charles7c
4071bb7f67
优化:优化部分 equals() 用法为 Objects.equals()
2023-02-25 14:26:15 +08:00
Charles7c
5519c209b1
新增:新增系统管理/用户管理重置密码、分配角色功能
2023-02-25 14:21:46 +08:00
Charles7c
91165e63e5
重构:重构查询角色树 API 为查询角色字典列表
...
1.新增 LabelValueVO 通用字典数据结构
2023-02-24 22:24:25 +08:00
Charles7c
7cf56202d8
完善:完善 README 文档部分功能截图部分内容
2023-02-23 00:21:32 +08:00
Charles7c
efa8f4fcf5
新增:新增系统管理/用户管理(列表、查看详情、新增、修改、删除、导出)
2023-02-22 23:58:28 +08:00
Charles7c
297fbd3675
重构:重构系统管理/角色管理功能
...
1. 使用抽屉代替对话框
2. 优化数据权限权限范围存储,新增角色和部门关联表
3. 新增角色和菜单关联表
4. 部分细节优化
2023-02-20 00:14:14 +08:00
Charles7c
510f86031f
新增:新增系统管理/菜单管理(列表、创建、修改、删除、导出)
2023-02-16 23:01:26 +08:00
Charles7c
1319cb3264
优化:使用 MyBatis Plus ChainWrapper 优化部分 QueryWrapper 的写法
2023-02-16 21:00:12 +08:00
Charles7c
56449263d3
优化:优化校验注解提示信息的写法
2023-02-16 20:54:17 +08:00
Charles7c
db345664a3
优化:优化设置表单控件尺寸大小的写法
2023-02-16 20:45:44 +08:00
Charles7c
6d72537125
优化:优化系统管理/部门管理行选择器,如果选中部门存在子部门,则递归选中
2023-02-15 22:50:05 +08:00
Charles7c
302f0ea573
优化:优化菜单配置
...
1. 调整菜单排序
2. 优化部分菜单图标
3. 新增菜单栏手风琴配置,默认生效
2023-02-14 23:37:56 +08:00
Charles7c
148a98371f
优化:优化 Hikari 连接池配置
2023-02-14 23:17:08 +08:00
Charles7c
fb740f2938
修复:删除部门及角色时,新增检测是否存在关联用户
2023-02-14 21:27:26 +08:00
Charles7c
68a1da687f
优化:生产环境打印日志到控制台去除颜色格式
2023-02-14 21:16:05 +08:00
Charles7c
03b57fb021
优化: 🔥 深度优化后端 CRUD 公共组件,并抽取前端下载功能到 CRUD 公共组件
...
1. 后端抽取导出功能到 CRUD 公共组件
2. 查询列表及导出接口支持排序参数
3. 深度优化 BaseServiceImpl 中的 CRUD 公共实现
4. 前端抽取公共下载组件
5. 优化部分细节并修复部分错误
2023-02-13 21:15:06 +08:00
Charles7c
142d315a8d
优化:MyBatis Plus 新增防全表更新与删除插件配置
2023-02-11 22:56:13 +08:00
Charles7c
716b721aa6
!1 优化: 新增远程仓库配置
...
* 优化: 新增远程仓库配置
2023-02-11 04:59:02 +00:00
Charles7c
3f0b10b2f9
完善:新增 Gitee(码云) Issues 和 PR 模板
2023-02-11 11:59:17 +08:00
Charles7c
ebc7c2b3b0
优化:基于 ESLint 和阿里编码规约插件对部分代码规范进行优化
2023-02-10 20:45:15 +08:00
Charles7c
5251a484f2
新增:新增系统管理/角色管理(分页、查看详情、创建、修改、删除)
2023-02-09 23:15:16 +08:00
Charles7c
4171fe0597
升级:arco-design-pro-vue => 2.6.1(优化语言切换及修复若干问题)
2023-02-09 20:22:34 +08:00
Charles7c
8085edbfe6
优化:优化响应时间戳数据值
2023-02-08 22:11:05 +08:00
Charles7c
2bc68528a4
优化:优化 Hikari 连接池配置
2023-02-08 22:00:58 +08:00
Charles7c
c44503b7ea
新增:部门管理对接用户信息(新增所属部门),并完善查看部门详情(增加上级部门显示)
2023-02-07 22:04:22 +08:00
Charles7c
908af28235
新增:操作栏右侧新增工具条(显示或隐藏搜索栏按钮、刷新按钮)
2023-02-07 20:53:36 +08:00
Charles7c
ceba8e9e53
新增:新增系统管理/部门管理/导出功能(引入 Easy Excel 依赖用于导出 Excel,详情可见 README 介绍。另请注意:测试导出功能时,前端需要关闭 mockjs,否则 responseType 会被 mockjs 设置为 '',导致导出的文件无法打开)
2023-02-06 23:02:23 +08:00
Charles7c
4bde837649
新增:部门管理操作栏新增修改按钮
2023-02-05 21:28:28 +08:00
Charles7c
3add8302c9
优化:优化全局样式
2023-02-04 22:46:45 +08:00
Charles7c
86c4350de4
重构:重构个人中心前端代码
2023-02-04 16:20:35 +08:00
Charles7c
35e2964b49
重构:重构登录页面前端代码
2023-02-04 13:16:41 +08:00
Charles7c
d035d5a362
重构:重构系统日志前端代码
2023-02-04 00:38:22 +08:00
Charles7c
ea32b1fad6
修复:修复 README 部分功能截图排版错误
2023-02-04 00:11:20 +08:00
Charles7c
f2f23e6a17
优化:优化 Hikari 连接池配置
2023-02-03 23:47:58 +08:00