工作记录


ClickHouse

=数据库=
mysql中varchar(6)代表可以存放6个汉字,6个字母,或6个数字。
oracle中varchar2(6)代表可以中存放6个字节。即oracle中varchar2的长度代表字节数而不是字符数。
mysql中一个汉字占三个字节,Oracle中一个汉字占两个字节。
mysql 存储时间比现在少13个小时 jdbc:mysql://xxxxx:3306/xxxx?serverTimezone=GMT%2B8

001 mysql colunm 字段类型为clob 查询的sql 中含有 distinct 报错 need -- return clob
1/方案一 去掉distinct
2/方案二 将clob字段转换为 char 类型

002 mysql根据创建时间creat_time 来group by
方案一 使用substring 函数 substring(create_time,1,10)
方案二 使用cast 函数 cast(create_time as date)

003 mysql 查询慢 大表1.6万数据 小表6千数据 left join 关联查询,慢 导致报超时错误
方案 两个表的关联字段都加上索引 解决.

004 表设计考虑不足
a/表字段的大小要根据需求裁定,是否必填也要依据需求裁定

=代码=
2/把一个基本数据类型转为String的时候,优先考虑使用toString()方法
3/推荐使用JDK7中新引入的Objects工具类来进行对象的equals比较,直接a.equals(b),有空指针异常的风险

1/
20201105版本 查询的接口数据与实际数据库数据不相符,改进:对接口不应只自测逻辑,数据的验证也要做.
2/
20201119版本 hive导出数据脚本问题,有个字段ALL 写成了 All 导致脚本第一次运行通过,后面都运行失败,改进:小心和细心,编辑器选择大小写敏感去比较.
3/
20201203版本 条件加分页查询时 记录总数和记录列表逻辑不一致导致 前端展示记录数和列表不一样,改进:修改开发接口时对2边的逻辑要记得同时修改.
4/
20210114版本 CollectionUtils.isEmpty 方法 如果list.add(null) list size 为1 CollectionUtils.isEmpty(list) 结果为false foreach 遍历报空指针
5/ servicecomb log4j-slf4j-impl cannot be present with log4j-to-slf4j https://blog.csdn.net/lyflyyvip/article/details/106685011
6/springboot之mongoDB项目Exception in monitor thread while connecting to server localhost:27017 @SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})

com.alibaba.fastjson.JSONException: java.util.EnumSet 有枚举类型或其他复杂类型(比如java.util.Date,或自定义类型)的成员,fastjson反序列化会抛出异常 fastjson 1.2.7升级到1.2.75 解决
解决 Maven 本地仓库有jar包,还是要到远程仓库去取的问题. idea中配置的settings文件和电脑本地配置不一致

反序列话丢失属性

7/ 启动swagger报错 Multiple Dockets with the same group name are not supported.The following duplicate groups were disc
增加 .groupName("xxx接口") 解决

8/TransactionManager expected single matching bean but found 2 java 多数据源以及多数源事务控制问题
解决 指定数据源使用的事务@Transactional(transactionManager = “transactionManager1”)和@Transactional(transactionManager = “transactionManager2”)

9/java.sql.SQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown.

=操作系统
windows 端口占用
输入netstat -ano |findstr "端口号",然后回车就可以看到这个端口被哪个应用占用。
使用命令tasklist |findstr "进程id号" 可以通过id查找对应的进程名称
输入如下命令taskkill /f /t /im "进程id或者进程名称" 直接根据进程的名称杀掉所有的进程
dir === ls

idea 关于jdk版本设置的几处位置
1/run config
2/project structure-project&Modules
3/compiler java compiler-module

=其他==
1/提供报表时2个字段搞反了,发邮件时比较快没仔细检查下,改进:细心再细心,发邮件检查2遍再发.
2/两次考勤异常间隔太短,改进:尽量早起早出门7点半之前出门
3/接口设计的字段值为0和1时 应斟酌使用String 还是 boolean 类型
4/接口设计完成 开发自测时注意接口的出参入参与接口文档核对下,确保一致,不一致则需要修改接口或者文档.

=idea快捷键==

代码格式化 包括对json 格式化
Ctrl+Alt+L

跳转到上一步操作位置
Ctrl + Alt + 方向左键

跳转到上次编辑的地方
Ctrl + Shift + Backspace

大小写转化
Ctrl+Shift+U

跳转到大括号的开始处(光标放在大括号的前或后面)
Ctrl + {

跳转到大括号的结束处(光标放在大括号的前或后面)
Ctrl + }

选择大括号内的全部内容(光标放在大括号的前或后面)
Ctrl + W

可以显示参数信息
Ctrl + P

可以看到当前方法的声明
Ctrl + Q

要看一个所选择的类的继承层次
Ctrl + H

导入包,自动修正
Ctrl+Enter, Ctrl + Alt + O

foreach实现方法
输入iter 按tab键

实现try-catch,if-else,while等(选择要框住的代码)
Ctrl + Alt + T

提取方法,选中需要提取的代码
Ctrl + Alt + M

查询方法/接口被调用的地方
Ctrl + Alt + H

跳转到方法/接口的实现内部
Ctrl + Alt + B

删除整行行
Ctrl + X

复制行
Ctrl + D

定位行
Ctrl + G

可以整合两行
Ctrl+Shift+J

gitlab

1.将项目B clone 到本地

git clone -b master 项目B的git地址

2.将项目A的git地址,添加至本地的remote

git remote add upstream 项目A的git地址

3.在本地新建一个分支,该分支的名称最好与项目A中新增的那个分支的名称相同以便区分

git checkout -b 新分支名称

4.从项目A中将新分支的内容 pull 到本地

git pull upstream 新分支名称

5.将 pull 下来的分支 push 到项目B 中去

git push origin 新分支名称
其中,上面的 3 和 4 两步可以合并为下面的这一步:

git checkout -b 新分支名称 upstream/新分支名称

git fetch 在本地刷新服务器上新分支
git branch -a 查看所有分支