ARTS是什么? Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文技术文章 Tip:学习至少一个技术技巧,总结和归纳日常工作中遇到的知识点 Share:分享一篇有观点和思考的技术文章
Algorithm
完成leetcode算法第720题。
使用暴力匹配的方式完成。
todo:由于涉及到字符串的前缀,通常可以使用 trie(前缀树)来解决。
String ans = "";
Set<String> wordSet = new HashSet<>();
wordSet.addAll(Arrays.asList(words));
for (String word: words) {
if (word.length() > ans.length() ||
word.length() == ans.length() && word.compareTo(ans) < 0) {
boolean good = true;
for (int k = 1; k < word.length(); ++k) {
if (!wordSet.contains(word.substring(0, k))) {
good = false;
break;
}
}
if (good) {
ans = word;
}
}
}
return ans;
Review
Text Blocks In Java 15
文章介绍了Java15中的Text Blocks功能,它优化了在java代码中String换行后的展示效果,比如一个复杂的sql的前后效果如下
String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" +
"WHERE `CITY` = 'INDIANAPOLIS'\n" +
"ORDER BY `EMP_ID`, `LAST_NAME`;\n";
// Text Blocks
String query = """
SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
WHERE `CITY` = 'INDIANAPOLIS'
ORDER BY `EMP_ID`, `LAST_NAME`;
""";
Tip
- 关于MySQL set autocommit=0的小实验,MySQL的隔离级别为”可重复读”,
set global autocommit=off,然后启动两个客户端
然后A客户端执行更新操作
B客户端查询
由于A端没有commit,所以B端看不到修改,正常。
然后A端commit后,B端还是查询不到更新后的数据。这时候我发现B端只要commit了,就可以正常拿到数据了,由此可见,在B端第一次select后就开启了一次事务a,虽然A端commit了,但是在事务a中还是会拿到旧数据,只有commit结束事务a后,才能拿到最新的数据。
这说明两点:
- MySQL的每个操作都会开启事务
- set autocommit=0后,必须手动commit或rollback才能结束当前事务,否则后续的操作都在当前事务中
Share
写文章 - MySQL日志篇 — redo logFinish
预计完成时间:2021.09.27 ~ 2021.10.03
实际完成时间:2021.10.06
延期原因:国庆假期,处理其他事情[
](https://www.yuque.com/yigenranshaodexiongmao/fgx0oh/zp62pn)