引入消息队列解决双端性能差异问题
增加缓存层提高查询效率
面向对象的五个基本原则
- 单一职责原则;
- 开放封闭原则;
- 依赖倒置原则;
- 接口隔离原则;
- 合成复用原则;
反射类时需要的是类的全路径
时间戳转成 yyyy-MM-dd HH:mm:ss
//必须是long类型 如果是10位时间戳的话需要在数后面*1000
long a = (long)(1620000000 + (random.nextInt(9999999)))*1000;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timestamp ts = new Timestamp(a);
System.out.println(sdf.format(ts));
取某个范围内的随机数
Random random = new Random();
//1000000到9999999范围内的随机数
random.nextInt(8999999) + 1000000
mysql 取7天时间
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 6 DAY),'%Y-%m-%d') AS day_show UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 5 DAY),'%Y-%m-%d') UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 4 DAY),'%Y-%m-%d') UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 3 DAY),'%Y-%m-%d') UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 2 DAY),'%Y-%m-%d') UNION
SELECT DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d') UNION
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d')
mysql 时间戳转 年月日
FROM_UNIXTIME('要转的时间戳','%Y-%m-%d')
年月日转时间戳
UNIX_TIMESTAMP(DATE_FORMAT(NOW(),'%Y-%m-%d'))
存在条数统计
SUM(CASE WHEN ? IS NULL THEN 0 ELSE 1 END)
获取CPU核数
// 获取CPU核数
System.out.println(Runtime.getRuntime().availableProcessors());
处理字符串的一些操作
1.字符串去除某些字符
String regEx="[这里面写要去处的字符]";
String aa = "";//这里是将特殊字符换为aa字符串," "代表直接去掉
Pattern p= Pattern.compile(regEx);
Matcher m = p.matcher(//这里把想要替换的字符串传进来//);
String newString = m.replaceAll(aa).trim();
2.字符串替换
String replace = newString.replace("被替换的字段", "替换字段");
3.// 替换字符串第一个匹配给定的正则表达式的子字符串
replaceFirst()
4.字符串分割
String[] split = replace.split("要根据什么来分割,如",","-"等等特殊字符需要转义");
oracle findinset
INSTR(字符串, 列名)>0 = 0 = 1
oracle的分页
1.无ORDER BY排序的写法。(效率最高)
SELECT *
FROM (SELECT ROWNUM AS rowno, t.* FROM emp t
WHERE ROWNUM <= 20) table_alias
WHERE table_alias.rowno >= 10;
2.有ORDER BY排序的写法。(效率较高)
SELECT * FROM (SELECT tt.*, ROWNUM AS rowno
FROM (SELECT t.* FROM emp t WHERE 1 = 1
ORDER BY create_time DESC) tt
WHERE ROWNUM <= 20) table_alias
WHERE table_alias.rowno >= 10;