ARTS-第27周

ARTS (第27周)

积少成多,换位思考。

Algorithm 算法

LeetCode32 最长有效括号

这里是动态规划解法和左右括号统计的解法

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
65
66
67
68
69
70
71
72
73
74
75
76
77
// 动态规划
public int longestValidParenthesesdp(String s) {
int[] dp = new int[s.length()];
if (s.length() < 2) {
return 0;
}
// 首个
if (s.charAt(0) == '(' && s.charAt(1) == ')') {
dp[1] = 2;
}
// System.out.println(Arrays.toString(s.toCharArray()));
for (int i = 2; i < dp.length; i++) {
if (s.charAt(i) == ')') {// 结尾符号
if (s.charAt(i - 1) == '(') {
// 符合的情况
// 去前面的结果里取
dp[i] = dp[i - 2] + 2;
} else if (i - dp[i - 1] - 1 >= 0 && s.charAt(i - dp[i - 1] - 1) == '(') {
// i代表当前字符 ,dp[i - 1]为前一个字符的最大长度 ,然后再减一代表再前一个字符
// 即通过前一个字符的最大长度,去查找改长度前的那一个字符是不是(,如果是就和当前字符对的上,就可以进行累加2
if (i - dp[i - 1] - 2 >= 0)
// 和前面的字符串能拼上的时候 将2个长度都加上再加2
dp[i] = dp[i - 1] + 2 + dp[i - dp[i - 1] - 2];
else
dp[i] = dp[i - 1] + 2;
}
}
// System.out.println(Arrays.toString(dp));
}
int max = 0;
for (int i = 0; i < dp.length; ++i) {
if (max < dp[i])
max = dp[i];
}
return max;

}
//左右括号统计
public int longestValidParentheseslr(String s) {
if (s.length() == 0)
return 0;
int left = 0;
int right = 0;
int max = 0;
for (int i = 0; i < s.length(); ++i) {
if (s.charAt(i) == '(')
left++;
if (s.charAt(i) == ')')
right++;
//左右相同的时候
//即能拼的上的时候
if (left == right)
max = Math.max(max, left * 2);
//出现多余的右括号
if (right > left) {
right = 0;
left = 0;
}

}
left = right = 0;
//从右边再来一次
for (int i = s.length() - 1; i >= 0; --i) {
if (s.charAt(i) == '(')
left++;
if (s.charAt(i) == ')')
right++;
if (left == right)
max = Math.max(max, left * 2);
if (right < left) {
right = 0;
left = 0;
}

}
return max;
}

Review 英文文章

https://dev.mysql.com/doc/refman/8.0/en/data-types.html
mysql 8.0各个类型的介绍。才发现现在mysql已经支持json类型了。

Tip 技巧

dubbo的学习和配置

什么叫RPC

RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

DUBBO

而dubbo就是RPC的一种实现。
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
官网:
http://dubbo.apache.org/
基本概念:
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

Share 分享

https://my.oschina.net/u/3229807/blog/1821679
apache commons api 整理