ARTS第二周

Algorithm/Review/Tips/Share每周学习一道leetcode算法题,提高自己逻辑思维,阅读一篇英文文档,锻炼自己的英语能力。总结工作或者学习中遇到的编程技巧,提高自己代码水平。分享一篇有意义的技术文章。

Algorithm

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

实例一

1
2
输入: "A man, a plan, a canal: Panama"
输出: true

实例二

1
2
输入: "race a car"
输出: 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
class Solution {
public boolean isPalindrome(String s) {
if (s == null || s.length() == 0) {
return true;
}
int i = 0, j = s.length() - 1;
while (i < j) {
while (!checkValue(s.charAt(i)) && i < j) {
i++;
}

while (!checkValue(s.charAt(j)) && i < j) {
j--;
}


char a = s.charAt(i);
char b = s.charAt(j);
if (a >= 'A' && a <= 'Z') {
a += 32;
}
if (b >= 'A' && b <= 'Z') {
b += 32;
}
if (a != b) {
return false;
}
i += 1;
j -= 1;
continue;
}
return true;
}
private static boolean checkValue(char c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');
}
}

Review

这篇文章主要讲了netflix的六角形架构。主要讲了从一开始的聚合架构到六角形架构的解耦,包括底层数据源的不同,可能是数据库,也可能是来源于微服务。到能够简单的实现交互restful api。这样做的目的当然是为了适应需求的变化而快速开发。文章当中还提到了架构中的测试问题。主要分为api的测试,数据源可以进行mock操作。还有对微服务之间交互测试以及整体测试。

Tips

CDN(Content Delivery Network)

上一篇文章主要讲了Python的一些应用,其中netflix将一些用户的信息之间存在CDN中,这样做的目的当然是减少网络传输以及减轻服务器的压力,这次主要了解一下CDN的一些内容。

CDN主要为了解决网络传输问题,加速网站的访问。用户请求过来的时候,先通过DNS解析IP地址,然后找到离用户最近的CDN服务器,去获取一些内容,CDN服务器主要存储一些静态的内容。比如图像,JS文件以及流媒体视频等等。