2024-12-9 日报 Day11
今日的鸡汤
每次归程,都是为了更好出发;
每次停歇,都是为了积攒力量。
近况描述
挺更了将近三个礼拜,最近发生了很多事情,也是人生的一个低谷和迷茫期,但是我相信,这一切都会过去,我也要从中吸取教训、走出来变得更加强大。Just keep going on.
今日学习内容
1、《JavaScript数据结构与算法》 P89-92
今日笔记
链表存储有序的元素集合,其存放的是当前元素和下一个元素的引用。链表的好处是在添加和移除元素的时候不需要移动其他元素。其缺点是访问元素时需要从头开始迭代链表直到找到所需的元素。
- 简单链表实现
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
60function LinkedList(){
let Node = function(element){
this.element = element;
this.next = null;
};
let length = 0;
let head = null;
this.append = function(element){
let node = new Node(element),
current;
if(head === null){
head = node;
} else {
current = head;
while(current.next){
current = current.next;
}
current.next = node;
}
length++;
};
this.insert = function(position, element){};
this.removeAt = function(position){
if(position > -1 && position < length){
let current = head,
previous,
index = 0;
if(position === 0){
head = current.next;
} else {
while(index++ < position){
previous = current;
current = current.next;
}
previous.next = current.next;
}
length--;
return current.element;
} else {
return null;
}
};
this.remove = function(element){};
this.indexOf = function(element){};
this.isEmpty = function(){};
this.size = function(){};
this.getHead = function(){};
this.toString = function(){};
this.print = function(){};
}
VPN(Virtual Private Network)
VPN是一种通过公共网络建立私人网络的技术,通过加密通道将用户的数据传输到VPN服务器,再由VPN服务器转发到目标网站,从而实现用户的上网隐私和安全。
- 为什么需要VPN?
- GFW(防火长城):国内的网络审查系统,会屏蔽一些国外的网站,使用VPN可以突破GFW,访问国外网站。
正常没有GFW的情况下,网络包的传输过程是这样的:
1 | 1. 用户设备 (发起DNS请求) -> 2. 路由器 (转发请求) -> 3. ISP DNS服务器 (缓存或递归解析) |
有了GFW之后,网络包的传输过程变成了这样:
1 | 1. 用户设备 (发起DNS请求) -> 2. 路由器 (转发请求) -> 3. ISP DNS服务器 (缓存或递归解析,可能受到GFW干预) |
VPN SSH HTTP代理的原理
1、用户设备会先和VPN服务器建立加密通道,使用SSH(Secure Shell)协议创建加密隧道。
2、在VPN服务器上使用HTTP代理,将用户的数据包转发到目标服务器。
Shadowsocks SSR v2ray等方式运作原理
1、在本地网络上进行加密,发送加密数据经过DNS解析后,到达VPN服务器。
2、VPN服务器解密数据,将数据包转发到目标服务器。
3、目标服务器返回数据,VPN服务器再次加密数据,发送到用户设备。