#20200722
修改mailPageListExport和exportOrderSubstitute两个controller代码过长的问题,提取两者公共代码(写excel部分),编写exportExcel的通用方法。粗略统计web管理端大约十余处导出excel的地方,下一步计划编写出ExcelUtils类,实现导出等涉及excel操作的常用方法。
#20200724
1、集合初始化时,指定集合初始值大小,防止多次扩容,提高性能。
2、重新组织Map<String, SysPermissionDataRule> getRuleMap()方法的逻辑
3、SimpleDateFormat 是线程不安全的类,使用DateTimeFormatter替代,并使用局部变量。
学习git的用法,然后改SimpleDataFormat
*****************************
#20200727
编写用户登录相关Controller的测试用例,MrdsMngLoginControllerTest
问题:是否需要启动spring(测试controller还是测试service)
#20200728
编写用户管理相关controller的测试用例类MrdsSysUserControllerTest
编写定时任务相关controller的测试用例类QuartzJobControllerTest
#20200729
threadlocal存在轻微的内存泄漏
7月总结:
1、修改mailPageListExport和exportOrderSubstitute两个controller代码过长的问题,提取两者公共代码(写excel部分),编写exportExcel的通用方法。
2、集合初始化时,指定集合初始值大小,防止多次扩容,提高性能。
3、SimpleDateFormat 是线程不安全的类,使用DateTimeFormatter替代,并使用局部变量。
4、 编写用户登录相关Controller的测试用例,MrdsMngLoginControllerTest
编写用户管理相关controller的测试用例类MrdsSysUserControllerTest
编写定时任务相关controller的测试用例类QuartzJobControllerTest
5、规范测试用例命名
6、对象名.静态成员=>类名.静态成员,threadlocal存在轻微的内存泄漏
7、修改了MrdsMngLoginControllerTest测试类
8、使用JMeter对用户管理查询controller进行压力测试。
*****************************
#20200731
迁移mock服务从顺丰云到华为云
1、clone顺丰云上医寄通项目的mock包部分,修改包名后push到华为云;
2、在华为云进行编译构建和部署,并配置dockerfile生成SVR镜像;
3、熟悉使用流水线进行编译和部署,为mock服务的pod配置Ingress;
4、在confluence上编写Mock服务的接口说明和使用说明。
(****要写保障什么完成,支持什么完成)
#20200803-20200807
1、修改canal的dockerflie及启动脚本,使其能够在华为云的k8s集群中正确部署,并完成部署canal server和canal admin的华为云流水线。
2、为canal sever添加登录验证码功能,包括前端及后端代码的编写,满足登录安全要求。
3、为canal sever配置apollo,完成代码与配置分离。
#20200811-20200812
canal项目经dependency-check检测,存在CWE-79 CWE-22 CWE-78 CWE-732 CWE-94 CWE-502等高风险问题,原因是部分依赖包的版本过低,升级commons-collections从3.2到3.2.2,,升级commons-beanutils从1.8.2到1.9.4,统一logback-core版本为1.2.3,问题得以解决。
#20200813
修改canal-server对canal-admin的访问,(因为之前加了验证码,在拦截器上把server的请求映射到了其他的controller)
基于华为云api(KeystoneCreateUserTokenByPassword listProjectsV3 GetAllRepositoryByProjectId2)获取所有项目下的所有maven仓库(300+项目),结合shell脚本对代码仓库git clone。
#20200814
测试加密解耦组件丰市中的应用
编写shell脚本,递归遍历单项目下的所有目录,返回所有包含<parent>的 pom.xml文件的全限定名
#20200817-20200818
编写shell脚本遍历分部项目代码汇总目录,实现对每个分部项目代码进行maven依赖分析,并统计安全工具与分部项目依赖冲突情况以及配置中心、加密机、Jasypt、nacos等依赖包在分部代码中的使用情况。
#20200819
1、修改shell脚本,原本是遍历根目录,若根目录不存在则递归遍历所有目录的pom文件,实现遍历存在pom.xml的最浅层目录的所有pom文件,提高效率。
2、统计分析分部项目代码中aes256加密算法依赖的jar包
#20200820
分部项目50多个代码仓库存在master分支依赖分析出错的情况,编写shell脚本遍历出错代码仓库的所有分支,记录能够正确打包的分支,之后选择切换到正确分支继而完成对出错代码仓库进行依赖分析。
加解密很耗时所以用了加密池
实习工作总结:
1、代码规范化与漏洞修复
对“医寄通”存在的漏洞及代码不规范问题,根据Sonar和阿里规范插件检测出的结果,进行修改,修改漏洞X处,代码不规范问题X处。
(1)编写ExcelUtils类,提取公共代码,解决6处方法代码重复和代码过长的问题;
(2)指定集合类的初始值大小,防止多次扩容,提高性能,共10余处;
(3)对SimpleDateFormat线程不安全问题的几种解决方案进行性能分析,局部变量方案:每次使用都new一个对象会导致在内存中驻留大量的对象造成内存浪费;threadlocal方案:每个线程持有一个SimpleDateFormat对象,remove的使用时间难以确定,如果使用时机不当可能会存在轻微的内存泄漏问题;DateTimeFormatter:jdk1.8新引入的时间日期类,是一个不可变类,每次调用会生成一个对象副本。。。,利用jemeter循环调用100次,DateTimeFormatter效果与SimpleDateFormat无明显差距,建议使用DateTimeFormatter。
2、编写单元测试和jmeter压力测试用例
(1)利用MockMVC和Mockito编写用户登录、用户管理、定时任务相关的单元测试用例,共20余个;
(2)使用JMeter对用户管理查询相关controller进行压力测试,共4个;
3、从顺丰云迁移Mock服务到华为云
进行压力测试时,针对部分服务不允许进行压测或需要付费等情况,提供相关服务的Mock
(1)编写dockerfile,并在华为云进行编译生成SVR镜像;
(2)将镜像部署到华为云k8s集群,并为Mock服务的pod配置Ingress提供外网访问接口
(3)在confluence上编写Mock服务的接口说明和使用说明。
4、实时数据订阅框架canal的部署与二次开发
(1)编写及修改canal的dockerfile和启动脚本,并解决部署过程中遇到的日志文件权限缺失等问题,使其能够在华为云的k8s集群中正确部署,并完成部署canal server和canal admin的华为云流水线。
(2)为canal admin增加登录验证码功能,包括前端和后端代码的编写,满足登录安全要求。
(3) 为Canal Admin项目配置Apollo,完成代码与配置分离;
(4)canal项目经dependency-check检测,存在CWE-79 CWE-22 CWE-78 CWE-732 CWE-94 CWE-502等高风险问题,原因是部分依赖包的版本过低,升级commons-collections从3.2到3.2.2,升级commons-beanutils从1.8.2到1.9.4,统一logback-core版本为1.2.3,问题得以解决。
5、Shell脚本工具-分析统计Maven依赖冲突
(1)基于华为云api编写java工具类获取所有项目下的所有maven仓库(300+项目),调用shell脚本对分部项目代码仓库进行clone。
(2)编写shell脚本工具并在confluence上分享,遍历分部项目代码汇总目录,实现对每个分部项目代码进行maven依赖分析,并统计加密脱敏工具与分部项目依赖冲突情况以及配置中心、加密机、Jasypt、nacos等依赖包在分部项目代码中的使用情况。
(3)优化依赖分析的shell脚本工具,原本是遍历根目录下所有pom.xml文件,若根目录不存在则递归遍历所有目录进行,实现遍历存在pom.xml的最浅层目录的所有pom文件,大幅提高脚本执行效率。
(4)编写shell脚本工具并在confluence上分享,300+分部项目代码库中有50个左右代码仓库存在master分支依赖分析出错的情况,编写shell脚本工具遍历出错代码仓库的所有分支,记录能够正确进行maven compile的分支并之后选择切换到正确分支继而完成对出错代码仓库的依赖分析。