1、使用Collections.max()或者Collections.min()获取最大值或者最小值。
OrderMaster max = Collections.max(list, new Comparator<OrderMaster>() { //找到最大值
@Override
public int compare(OrderMaster o1, OrderMaster o2) {
return o1.getRequireTimeEnd() - o2.getRequireTimeEnd() > 0 ? 1 : -1;
}
});
2、mysql使用强制索引
idx_delivery_no 是索引名
SELECT * FROM tbl FORCE INDEX (idx_delivery_no) WHERE 1=1
3、MySQL使用MIN()时想要过滤掉某个值,比如想找到最小值是0以外的最小值,使用 MIN(NULLIF(col, 0)),将字段中的0替换为null,此时可以取到除0外的最小值
4、存在即更新,不存在即删除,防止高并发下读取的数据不是最新导致后一次更新数据后错误。
INSERT INTO **表名** (col1,col2...) VALUES (val1,val2...) ON DUPLICATE KEY UPDATE col1 = col1+1,col2 = val2...
5、位运算
&:两个位上都为1才为1,否则为0,将某些不为1的位置0。与0进行运算结果是0,与1进行运算结果是1
|:只要有一个位上为1就为1,否则为0。与0计算结果是自己本身
^:两个位上不同时为1,相同则为0
<<:左移,丢弃最高位,右边0补齐,例:num << bit ,num向左移动bit位 相当于num乘2的bit次方倍
>>:右移,最高位是0,左边补齐0,最高位是1,左边补齐1;符号位(最高位)不变,左边补上符号位
>>>:无符号右移,无论最高位是0还是1,左边补齐0