工作记录
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 查看所有分支