JAVA
For循环中remove元素
存在两个问题:
1.集合中的元素没有遍历完全
2.一旦集合中的元素删空,会抛java.util.ConcurrentModificationException异常
因为集合的大小是动态变化的,当你删除一个元素后,下一个位置的元素会补位到当前元素,但是i的值还是会继续+1,相当于跳过了下一个元素。
解决办法:选用迭代器进行遍历删除,用迭代器的hasnext方法寻找下一个元素
接口调用
对外接口,一般都会封装服务结果,像下面这样,将实际返回数据放到data属性,另外标记调用结果code,失败标注失败原因Msg
但内部服务,一般都是直接返回data,捕获异常
这次踩坑就是复用内部对外提供的接口,没有校验返回code,当做一般内部服务处理,导致相关数据没有取到
public class ResultBean<T> implements Serializable {
private static final long serialVersionUID = 1L;
public static final int SUCCESS = 0;
public static final int FAIL = 1;
private String msg = "success";
private int code = SUCCESS;
private T data;
public ResultBean() {
super();
}
public ResultBean(T data) {
super();
this.data = data;
}
public ResultBean(Throwable e) {
super();
this.msg = e.toString();
this.code = FAIL ;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
MySql
mapper文件中用–注释sql
–注释会与mapper文件中的标签冲突,导致注释的字段没有被注释
如果因为没有注释直接报错还好,可以比较容易的发现问题,但如果是sql可以继续执行,只是执行结果变了,就很难发现了
GroupBy 统计数据
需考量数据量,大的表,需要对group by后面的字段按最左匹配原则,创建联合索引
没有去重需求的sql,可以考虑拆分执行再合并数据
两个字段相加,需要做空判断
sql两个字段相加,如果有一个为空,则结果也为空
JS
使用EasyUI的出现Cannot read property ‘options’ of undefined,样式重复,
很多子页面会继承父页面的引用,css,js文件。如果子页面重复引用,则可能导致上述错误。