小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本次话题是自己在近两月开发过程中遇到的问题 链接第一次的文章(性感应届生在线内卷!!菜鸟正式工作一个半月踩的20个坑 - 掘金 (juejin.cn))
摘要
开发过程中遇到的问题整理,本篇总共整理分享10个开发过程中的小经验,希望能对您有所帮助,如果觉得有用,那就点个赞吧!
21.compareTo方法的注意点
虽然大多数compareTo方法返回-1、0或1,但有些方法不返回-1、0或1,并且将compareTo的结果与0以外的特定值进行测试可能会导致误判。
22.使用SimpleDateFormat格式化和解析日期
在使用SimpleDateFormat格式化和解析日期时,很少有开发人员注意到“周-年”的Y和“年”的Y之间的区别。这可能是因为对于大多数日期,周-年和年是相同的,因此在一年中第一周或最后一周以外的任何时间进行测试都会产生相同的y和y值。但是在12月的最后一周和1月的第一周,你可能会得到意想不到的结果。
23.引入包的时候要明确是哪个包,不能用通配符的形式引入
24.必须等事务提交之后再存数据
25.使用split分割时需要注意:
String[] split = outMessage.split("|");,split中要用\转义,否则回错误分割 例如String test = "aaa|bbb|ccc"; 不转义的话会错误分割为a,a,a,b,b,b 如果用\转义,则会成功分割为aaa,bbb,ccc
26.循环调用给数据库新增数据
如果方法被循环调用给数据库新增数据,那么实例化存放入数据库数据的实体类必须在循环内声明, 否则会造成复用上一次的数据
27.不用写sql直接查询可以用的方法(一般不推荐)
Example example = new Example(Event.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId", userId);
criteria.andEqualTo("isDel", Common.LogicDel.NOT_DEL);
List<Event> events = eventMapper.selectByExample(example);
28.使用stream api 方式转换list -> map
/**
- 使用stream api 方式转换list -> map / public static <K, V> Map<K, V> listGroup2MapObj(List listData, Function<V, K> methodName) { if (CollectionUtils.isEmpty(listData)) { return new HashMap<>(); } // 将list 转换为 k:v形式, 如果有重复key, 则进行覆盖 return listData.stream().collect(Collectors.toMap(methodName, Function.identity(), (existing, replacement) -> replacement)); }
调用举例: List testDoList = testDao.querytestData(requestVo); Map<Long, testDo> testMap = CollectionConvertUtils.listGroup2MapObj(tesrDoList,testDo::getId); 将查到的testDoList转换成了以id为key,以tesrDoList为value的map
29.MySQL 调优 —— force index() 方法强制使用这个索引
出现这个问题的原因在于 MySQL 每次查询只能使用一个索引, 而你的 SQL 语句 WHERE 条件和 ORDER BY 的条件不一样, 索引没建好的话, 那么 ORDER BY 就使用不到索引, 出现了 Using filesort 问题。 解决这个问题就是建立一个包含 WHERE 和 ORDER BY 条件的混合索引。
30.要让别人使用自己本地的数据库,需要执行
use mysql; update user set host = '%' where user ='root'; flush privileges; 三条语句 ①使用当前库 ②更改user为root的host为通配符% ③flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令