Appearance
问题收集1
Docker的基本使用
想法来源:海域海岛的数据库是通过Docker启动的,所以想了解如何使用Docker Desktop。
在独自安装Docker Desktop的时候就发现对Windows环境有要求(安装Hyper-V与启用虚拟化),倒腾了很久才安装上,想稍微交流下安装Docker Desktop的一些经验。
以及,如何在Docker中安装各种环境(比如Oracle数据库、redis等)、保存镜像、使用镜像等。
思维扩展:Docker作为容器可以保存镜像,随意部署,那之后是否可以把公共的环境(oracle、redis、jdk)甚至应用程序都部署在docker中,这样之后如果做服务器迁移会变得方便。
附件上传
当前后台代码只有切片上传代码,能否扩展一个直接附件上传公共方法。有的时候其实不需要切片(上传图片,文件不大),用切片上传方式是否性能会降低。
附件模块扩展针对当前附件模块的使用痛点、难点需求征集
- gisboot附件模块搬迁
- 扩展不需要切片的上传接口
- 文档上的补充
单据编码问题
提出背景:在之前的gis-boot框架中发现的问题,即在单据编码在并发情况下有重复获取的可能性,故提出。zt-gis框架是否有存在该问题的风险。
gis-boot的该问题解决方案可分享:代码加锁无用,与数据库的读写有关(SQL语句中的 for update 的使用)。
机制使然,在高并发情况下必然出现流水号重复;如需避免,可使用接口加锁、redis存储流水号方式、数据库自增
结论:
- redis先取,拿不到再到数据库取 redis key : 系统code+dj:+流水号
@MoreTransaction
@MoreTransaction嵌套事务引发数据库数据死锁问题
未见死锁情况,需要提供更多的示例
代码规范方面
- 少用 JSONObject 接收参数拼凑参数,使用模型类 动态参数不利于维护,同样不建议使用Map、Set
- 尽量减少魔法值的使用 不利于代码维护
- 一个方法的代码量不要超过一个屏幕的长度
- switch case 要写 default,提高容错率 break;也不要忘记
- 要写【好】注释。不能不写,不能写太多。 文件备注不要写第三者名字
- 谨慎使用全局变量
- 不要创建多余的变量
- 业务逻辑不要写在Controller里 controller一般做业务的调度、数据结果的拼凑