ARTS-Week-5

ARTS Week-5

1.Algorithm:每周至少做一个 leetcode 的算法题

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
560. Subarray Sum Equals K

Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.

Example 1:

Input:nums = [1,1,1], k = 2
Output: 2

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subarray-sum-equals-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public int subarraySum(int[] nums, int k) {
int n = nums.length;
Map<Integer, Integer> map = new HashMap<>();
int ans = 0, sum = 0;
map.put(0, 1);
for (int i = 0; i < n; i++) {
sum += nums[i];
int count = map.getOrDefault(sum - k, 0);
if (count > 0) {
ans += count;
}
map.put(sum, map.getOrDefault(sum, 0) + 1);
}
return ans;
}
}

解题思路:前缀和 + 哈希缓存

  1. sum{nums[x] + num[x + 1]…. nums[i]} == k
  2. sum - pre[x] == k
  3. sum - k == pre[x]
  4. 通过 sum - k,通过map寻找 pre[x],如果没有则返回0,否则累加次数
  5. 缓存sum到map,如果map中不存在sum到话存储0 + 1,否则获取到原来到次数 + 1存储

2.Review:阅读并点评至少一篇英文技术文章

HTTP/2: the difference between HTTP/1.1, benefits and how to use it

  • Request multiplexing(请求多路复用)

主要介绍http/2,跟http1.0 最大到区别就是2.0能够做到请求的多路复用,而1.0不是。引用文章到图片更好说明这一点:

https://miro.medium.com/max/1494/0*lY05UTuA-dWCXU-q.png

  • Header compression(请求头压缩)

https://miro.medium.com/max/1400/0*5r8-MbhEseP6lEQg.png

  • Binary protocol(二进制协议)

https://miro.medium.com/max/1400/0*0LtM_XmkauxVoY8M.png

  • HTTP/2 Server Push

如果服务端发现 资源X 和 Y 是有关联,会一并发送,而不是分开发送,这个也是1.0的区别。

https://miro.medium.com/max/996/0*ZJLgVdXq_06hcF1o.png

3.Tip:学习至少一个技术技巧

学习如何将自己本地的docker镜像上传到docker hub中,遇到的坑为:需要自己在docker创建仓库,并且docker的tag需要跟你的仓库保持一致。例如,我的账号为:jaryoung,创建了一个web-demo的仓库,所以我们需要修改本地的tag为 jaryoung/web-demo

下面为修改镜像的tag和推送到远端的命令

1
2
tag web-demo-docker-image jaryoung/web-demo
docker push jaryoung/web-demo

4.Share:分享一篇有观点和思考的技术文章

HTTP的前世今生 | | 酷 壳 - CoolShell

(注:国内很多公司HTTP无论对错只返回200,这种把HTTP Status Code 全部抹掉完全是一种工程界的倒退)
不禁想起来自己以前做得蠢事,实在不应该。

如果有不对的地方,及时指出,我会继续努力。
稳食艰难啊,老细。(中文翻译:原创不易,您的支持将鼓励我继续创作!)