ARTS第一周

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

Algorithm

实现一个字符串,将字符串转换成整数,首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

实例一

1
2
输入: "42"
输出: 42

实例二

1
2
输入: "   -42"
输出: -42

实例三

1
2
输入: "4193 with words"
输出: 4193

实例四

1
2
输入: "words and 987"
输出: 0

实例五

1
2
输入: "-91283472332"
输出: -2147483648
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
public class AIMain {

public static int str2Int(String value) {
int start = 0; int p = 0; int n = value.length();
boolean flag = false;
// 得到数字开始的位置并判断开始位置是否和字符串的长度相等
while (p < n && (value.charAt(p) < '0' || value.charAt(p) > '9')) {
p++;
}
if (p == n) {
return 0;
}

if (value.charAt(p-1) == '-') {
flag = true;
}

if (value.charAt(p) == '0') {
p++;
}
if (p == n) {
return 0;
}
start = p;

while (p < n && value.charAt(p) >= '0' && value.charAt(p) <= '9') {
p++;
}
if (p == start) {
return 0;
}

if (n - start > 10) {
if (flag) {
return Integer.MIN_VALUE;
} else {
return Integer.MAX_VALUE;
}
}

long num = 0;
for (int i = start; i < p; i++) {
num = num * 10 + (value.charAt(i) - '0');
}
num = flag ? num : - num;
if (num > Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}
if (num < Integer.MIN_VALUE) {
return Integer.MIN_VALUE;
}
return (int)num;
}

public static void main(String[] args) {
str2Int("aa");
}
}

Review

这篇文章主要介绍了python在netflix公司的应用情况,读完感觉也是python的主要应用方向。

首先netflix把一些内容保存在开放链接上(Open connect),开放性链接也就是CDN(content delivery network)。这些内容包括推荐用户的信息,是否登录,观看记录等等。这些信息存放在CDN上的目的是为了减少与服务器之间的交互,提高效率,节省流量。CDN上的系统软件是用python进行构建的。

此外,本篇文章还介绍了python在一些其他团队的应用,比如进行系统报警,自动检测,自动修复等功能。还可以进行数据分析,人工智能,算法推荐,应用测试等。

Tips

restful接口的安全性校验

使用restful进行接口交互的优点有很多,首先,restful实现接口比较轻量级,直接基于http协议,以http协议的Get/Post/Delete/Put为CRUD操作。数据描述比较简单,可以直接通过Json进行交互,但是由于restful接口是无状态的,所以存在安全性的问题,比如说存在A、B、C三个服务,其中服务A只允许服务B进行调用,不允许服务C进行调用,这种情况下就需要接口的安全性校验。安全性的校验可以有多种的实现,主要介绍基于token机制的签名认证机制(对接平安保险业务时平安保险就使用该种接口认证方式)

token认证机制主要是在调用接口之前首先进行resutful接口的请求获取access key 和secret key。access key主要是进行用户信息的认证,应用会通过它进行区分不同的用户。而access key是接口请求的加密。其中加密算法可以使用对称加密和非对称加密。