Skip to content

问题收集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一般做业务的调度、数据结果的拼凑