ARTS第三周

本篇文章算法内容是判断一个二叉树是否对称,英文阅读是netflix的一个开源事件管理框架的介绍,最后是数据库连接池的内容。

Algorithm

给定一个二叉树,你要判断它是否沿中轴线对称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
比如说,给你的二叉树是:

1
/ \
2 2
/ \ / \
4 8 8 4

这棵二叉树是沿中轴线对称的,因此要返回 true。如果我去掉最后这个 4:

1
/ \
2 2
/ \ /
4 8 8

就不对称了,这时就要返回 false。

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
package test;

import java.util.Stack;

public class AIMain {
class TreeNode {
int value;
TreeNode(int value) {
this.value = value;
}
TreeNode left;
TreeNode right;
}

public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root.right);
stack.push(root.left);

while (!stack.isEmpty()) {
TreeNode L = stack.pop();
TreeNode R = stack.pop();
if (L == null && R == null) {
continue;
}
if (L == null || R == null) {
return false;
}
if (L.value != R.value) {
return false;
}
stack.push(L.left);
stack.push(R.right);
stack.push(L.right);
stack.push(R.left);
}
return true;
}
public static void main(String[] args) {
}
}

Review

本篇文章主要介绍了网飞的开源项目管理工具Dispatch。开始主要介绍事件管理,以及要做的事情。然后介绍了DIspatcher的工作流程,以及与其他的管理工具,比如Jira的关系。

Share

数据库连接池

数据库连接池的作用是避免资源浪费。连接数据库一般会有以下几个步骤,加载驱动,连接数据库,执行语句,返回结果,关闭数据库连接。为了避免资源的浪费同时提升程序执行的效率,可以使用数据库连接池来解决这个问题,数据库连接池有最小连接和最大连接两个参数,最小连接是指在项目启动的时候会生成固定大小的连接,这样请求过来直接使用这些连接去执行SQL。最大连接是指如果请求的数量超过最小连接,会再继续生成连接,如果经过一段时间之后没有使用将销毁这些连接。

比较常见的数据库连接池有dbcp、c3p0、druid和hikariCP