今天是201711月最后一天了,对自己这个月的历史做个回顾:
1.对后台查询数据的SQL做了一些优化
(1)对需要分组(group by)的数据,先加过滤条件筛数据,再进行分组。也就是用WHERE …….GROUP BY ……代替GROUP BY……HAVING……
(2)用union all代替or,这个我没有合适用的场合。
(3)如果一个查询语句中包含子查询,将过滤条件加在子查询中。如:
SELECT c.name,c.age
FROM(
SELECT a.name,a.age
FROM a
UNION ALL
SELECT b.name,b.age
FROM b
)c
将过滤条件加在查询a,b表的子查询中。
(4)去掉查询不必要的字段。
2.想将公司的项目整合成Maven+SpringBoot的形式,但是最后整合失败了。总结了几点经验教训:
(1)自己对maven的熟悉度不够,对maven的使用仅仅停留在用maven建过几个maven project,写过几个小demo,但是对maven常用的命令和部署方式不了解,以致在整合的时候,不能利用maven命令帮助自己找出出错的依赖。
(2)在整合的过程中,经常出现classnotfound,这个错误大多是因为jar包的版本不匹配或是jar包冲突了。我都是使用谷歌浏览器搜索答案的,在百度上基本就找不到类似的问题,而谷歌浏览器可以找到更多的英文网站,尽管有一些回答,自己的英文水平看起来是云里雾里的。自己在整合的过程中没有把出现的错误保存整理下来,现在遇到又得再试错一遍,是很浪费精力的。所以建议大家要学会把错误整理下来,可以节省自己很多时间,也可以形成自己的知识库。
(3)自己是花了很多时间在这上面的,最后在昨天晚上放弃了,因为有天下午跟人讨论的时候,才有点恍然大悟,自己掉进自己打的洞里,maven和springboot都只是一种工具,无论使不使用,都不会影响我最终的业务逻辑。
3.公司准备将一个旧版的.net系统转成java版本
(1)这个.net系统原本的开发离职了,这个系统上线也至少有6,7年了,资料非常少,数据库字段都没有完整的说明,涉及的工作流流程也没有人说明,只有两份某一个时期的文档,而目前也没有.net研发参与,只有java的开发。
(2)完成这个任务,最困难的是这个系统和产品上的区别没有人去做一个全局的对比,只能一个模块一个模块摸着做,自己得一点一点对比两者之间有什么区别,也没办法看之前的代码,数据库的表关联都不清楚。
(3)最近着手开始做一个模块的编码,先做出点东西,不然总是看着,也看不出什么东西。因为和产品上有些区别,产品原本做好的一些组件现在都使用不了,对于一些常用的功能,如果不做成通用的组件,就会比较冗余,做起来又比较费时间,这个任务什么时候可以完成也是一个未知数。
4.在原本的增加和取消功能上增加手机验证码
(1)这个需求不是一个特别有技术含量的需求。自己建立了一个表用于存储验证码的发送记录。在处理字符串类型的字段时,默认都设置成了Empty String,主要考虑的是索引对NULL不起作用,而NULL实际上还是需要空间的,而Empty String不需要。字段的长度设置也尽量符合实际大小,不设置过大的长度避免浪费存储空间。而对于主键,自己考虑要不要设置成int类型,数字的查询速度会更快,但是因为主键的生成是采用的UUID,所以最后还是用的varchar。