记录实习

2020

07.02

改前辈的代码,发现新知识。其中一条sql中出现了这个

"INSERT INTO `xxx` (xx, xx) " +
        "VALUES(#{xx}, #{xx}) " +
        "ON DUPLICATE KEY UPDATE Title = #{xx}, Modify_Time = now()"

其中的ON DUPLICATE KEY UPDATE,表示如果有重复的行记录,那么更新行记录。没有则插入新的行。

怎么判断行记录是否重复?mysql官网文档解释如下

If you specify an ON DUPLICATE KEY UPDATE clause and a row to be inserted would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row occurs.

也就是说如果有主键或者是唯一索引相同,就认定行重复,执行更新。

文档地址如下:

https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

07.03

where 1=1出现在sql中的原因。

https://blog.csdn.net/qq_23994787/article/details/79045768?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

07.08

Java8 Stream流

对集合对数组的stream流操作

Lists.transform

 

07.09

因为环境问题调了一个下午+晚上,幸好有热心的小伙伴解决了,感恩。

对灯塔迭代环境的理解还是不够,有时间补补课。

 

 

07.10

在git提交的时候,经常会commit之后发现有问题还需要修改,因此再次修改再次commit,导致push的时候,gitlab出现多次commit记录,这里记录一下忽略某次commit的方法。

在git控制台 输入git log 回车查看commit记录,找到最近的一条版本号为07de81c1bfee32d16c406222c21edeb860835636

记录实习_第1张图片

执行git rebase -i 07de81c1bfee32d16c406222c21edeb860835636(这是版本号)

进入到文件编辑,这里是vim编辑风格,按i输入,esc退出输入,:wq保存退出。

这里将我们不需要的版本那行前面的pick 改为 drop即可,esc,然后 :wq保存退出。

记录实习_第2张图片

这时候就已经把误操作的commit删除了,提交即可。

 

07.16

写代码太粗心,以后一定注意逻辑严密,时刻检查对象是否为null,集合是否为空,所有需求对应接口是不是都检查完毕。希望中期赶紧过去,不要再心神不灵了.....免得被人嫌弃就不好了......

大佬看我1分钟教的快捷键 idea ctrl+shift+f 用来搜索文件中的关键字,以前只知道双击shift 搜索文件名字关键字。

 

07.30

好久没写csdn了,最近的学习记录都写到markdown上传github了,=.=。

早上遇见两个问题,记录一下。

第一个是关于maven聚合工程的。公司的某个数据库访问服务是maven聚合工程,下面的api子模块依赖于父模块,某天大佬更新了子模块,并且修改了子模块pom中依赖的父模块(2.3.7改为2.3.8),单独把子模块depoly到了私服仓库,父模块忘记depoly。

结果调用服务的另一个后端来找我了,api包引入失败呀。。。找到问题,通知大佬重新depoly了一下。

结果,清空maven子模块的本地仓库缓存,嗯。。。还是不行。这里就涉及到maven的一个坑了。

由于子模块依赖父模块,在第一次导入maven包的时候,父模块在远程仓库没有发布,但是在本地会生成对应的版本的文件夹,但是没有可用jar。当把父模块发布之后,本地再次reimport maven是没有用的,要先去删除本地的父模块的仓库缓存,再重新reimport maven。

第二个问题是关于双检锁的。来自于今天小组群里的讨论,

记录实习_第3张图片

记录实习_第4张图片

额。。这个写法有点骚的,虽然现在没出现问题,但是是有隐患的。首先这里即使给projectConf加上volatile也不解决问题,因为在第二个null判断后的projectConf的初始化和赋值都不是原子性的,volatile是无法保证这样的线程安全的。应该首先用局部变量引用初始化对象,最后再把引用给到projectConf,这样才能保证绝对安全。

不过,大多数时候,应该都是静态内部类的方式用的多吧?

08.12

App server服务注解在上传代码,修改sonar bug的时候 误删了 @AutoBindSingleton

导致service没有注入到容器,调了两三个小时bug,幸好有大佬帮忙挑错。

测试一催,我人都慌了。。。。。。以后一定检查无误才上提测环节,谨记谨记!!!

你可能感兴趣的:(记录实习)