0%

高级筛选

Java解析运算表达式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
        //高级筛选 option1、option2、option3、option4为筛选条件
String input = "((option1&&option2)||(option3&&option4))";
//用正则表达式去掉逻辑运算符
String optionStr = input.replaceAll("[\\(\\)]", "").replaceAll("\\&&", ",").replaceAll("\\|\\|", ",");
System.out.println("option String: " + optionStr);
List<String> optionList = Arrays.asList(optionStr.split(","));
//条件最大值
int maxOption = 0;
for (String option : optionList) {
int optionNum = Integer.parseInt(option.replace("option", ""));
if (optionNum > maxOption) {
maxOption = optionNum;
}
}
System.out.println("option maxNum: " + maxOption);
System.out.println("option List: " + JSON.toJSONString(optionList));
//执行各个条件查询,将结果放到map中,key为条件条件,value为结果集合
int size = optionList.size();
Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < size; i++) {
List<String> list = new ArrayList<>();
for (int j = 0; j <= i; j++) {
list.add("empi-" + (j + 1));
}
map.put(optionList.get(i), list);
}
System.out.println("option and result map: " + JSON.toJSONString(map));

/**
* 正则表达式匹配,求出最小运算单元结果集,并替换
* ((option1&&option2)||(option3&&option4))
* -->(option5||(option3&&option4))
* -->(option5||option6)
* -->option7 最终结果
*/
Pattern r = Pattern.compile("\\(option[0-9]&&option[0-9]\\)|\\(option[0-9]\\|\\|option[0-9]\\)");
Pattern r1 = Pattern.compile("option[0-9]");
Matcher m = r.matcher(input);

while (m.find()) {
String temp = m.group();
System.out.println(temp);
Matcher m1 = r1.matcher(temp);
m1.find();
String option1 = m1.group();
m1.find();
String option2 = m1.group();
System.out.println(option1 + "--" + option2);
maxOption++;

List list1 = map.get(option1);
List list2 = map.get(option2);
if (temp.contains("&&")) {
list1.retainAll(list2);
} else {
list1.removeAll(list2);
list1.addAll(list2);
}
map.put("option" + maxOption, list1);
input = input.replace(temp, "option" + maxOption);
System.out.println("input: " + input);
m = r.matcher(input);
}
System.out.println("option and result map: " + JSON.toJSONString(map));

问题现象

有一张3亿的表,现在要对这张表进行删除1亿行,于是有人开始运行delete from table limit 100000000;毫无疑问这是一个愚蠢的删除方式,于是有人开始变更删除方式:delete from table where id<100000000;然而运行一段时间后,又发现批量删除的效率可能会更高,所以kill掉了上一条运行了一段时间的sql,开始批量删除, 由于是大sql,晚上点击运行想第二天早上来看结果的DBA就会遗憾的发现新执行的sql被锁给挡了回来,并没有运行,导致浪费了一晚上的时间。但是盲目的等待锁释放心里没底,所以我们可以通过下面的方式计算出这个锁什么时候能够释放,我们就可以使用表了。

阅读全文 »

服务器

1
116.62.29.166  nexus / hZ296nEx296

随访路径

1
/home/joinhealthys

账号

1
jhys_admin / 493004271

随访地址

1
https://ys.joinhealth.cn/hug_interview/

需求

办公使用,常用软件:微信、钉钉、QQ、office、几何画板、录屏软件、pdf、视频、音乐

型号 价格
CPU AMD 锐龙3 2200G(盒装) 599
主板 华擎 A320 359
内存条 海盗船 DDR4 3200 258
固态硬盘 三星 970 EVO Plus 250G 479
硬盘 西部数据 蓝盘 1T 299
机箱 先马 黑洞 289
电源 长城HOPE-6000DS 269
散热器 盒装自带幽灵散热器
显卡
显示器 Philip 243S7EHMB 799
鼠标键盘 罗技(Logitech)MK275 95
无线网卡 TP-LINK TL-WN725N 51
总价 3270

软件

  • office

  • Snipaste

  • Listary

  • Everything

  • SpaceSniffer

  • fences

  • Bandizip

  • Potplayer