Skip to content

Commit 57ce004

Browse files
committed
跟换图片源
1 parent f039b42 commit 57ce004

34 files changed

+234
-234
lines changed

CREADME.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Full-Stack-Notes
22

3-
<div align="center"> <img width="380px" src="pictures/full-stack-notes-logo.png"/> </div>
3+
<div align="center"> <img width="380px" src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/full-stack-notes-logo.png"/> </div>
44
<br/>
55
<div align="center">
66
<img src="pictures/芽.png"/>
@@ -218,6 +218,6 @@ TODO
218218

219219
<br>
220220

221-
<div align="center"> <img width="200px" src="pictures/blog-logo.png"/> </div>
221+
<div align="center"> <img width="200px" src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/blog-logo.png"/> </div>
222222

223223
<div align="center"> <a href = "https://blog.csdn.net/m0_37809146"> 欢迎关注我的博客:https://blog.csdn.net/m0_37809146</a> </div>

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Full-Stack-Notes
22

3-
<div align="center"> <img width="380px" src="pictures/full-stack-notes-logo.png"/> </div>
3+
<div align="center"> <img width="380px" src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/full-stack-notes-logo.png"/> </div>
44
<br/>
55
<div align="center">
66
<img src="pictures/芽.png"/>
@@ -145,6 +145,6 @@
145145

146146
<br>
147147

148-
<div align="center"> <img width="200px" src="pictures/blog-logo.png"/> </div>
148+
<div align="center"> <img width="200px" src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/blog-logo.png"/> </div>
149149

150150
<div align="center"> <a href = "https://blog.csdn.net/m0_37809146"> 欢迎关注我的博客:https://blog.csdn.net/m0_37809146</a> </div>

notes/CAP理论和BASE理论.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ CAP 理论强调:一个分布式系统不可能同时满足一致性(C:Con
3131

3232
首先对于一个分布式系统而言,网络分区是不可避免的,不可能永远不出现网络故障,所以分区容错性 P 必须要保证。假设一个分布式系统中出现了网络分区,如下:
3333

34-
<div align="center"> <img src="../pictures/cap_示例.png"/> </div>
34+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/cap_示例.png"/> </div>
3535

3636

3737
假设用户 1 向节点 1 上增加了 10 个数据,但节点 1 和节点 2 之间因为网络分区而无法进行数据同步,碰巧用户 2 此时发起了查询请求,此时有两种处理方案:
@@ -51,7 +51,7 @@ CAP 理论强调:一个分布式系统不可能同时满足一致性(C:Con
5151
+ **保证 CP ,放弃 A**:这种情况下如果发生了网络分区故障,此时节点间的数据就无法同步。因此在故障修复前都需要放弃对外提供服务,直至网络恢复,数据到达一致为止。
5252
+ **保证 AP ,放弃 C**:这种情况相当于放弃一致性。具体而言,是放弃数据的强一致性,但保证数据的最终一致性。因为不论是什么系统,数据最终都需要保持一致,否则整个系统就无法使用。在这种策略下,在某个短暂的时间窗口内会存在数据不一致的情况。
5353

54-
<div align="center"> <img src="../pictures/cap理论.jpg"/> </div>
54+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/cap理论.jpg"/> </div>
5555

5656

5757
## 二、BASE 理论

notes/Docker_基础.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ Docker 使用 Go 语言进行开发,基于 Linux 内核的 cgroup,namespace
1919

2020
下图体现了 Docker 和传统虚拟化方式的差异:传统虚拟机技术是虚拟出一套硬件后,再在其上运行一个完整操作系统,之后可以在该系统上运行所需的应用进程;而 Docker 容器内的应用进程则是直接运行于宿主的内核,容器没有自己的内核,也没有进行硬件虚拟,因此要比传统虚拟机更为轻便。
2121

22-
<div align="center"> <img src="../pictures/docker与虚拟机.png"/> </div>
22+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/docker与虚拟机.png"/> </div>
2323

2424
## 二、Docker 架构与核心概念
2525

2626
Docker 使用 client-server 架构, Docker 客户端将命令发送给 Docker 守护进程,后者负责构建,运行和分发 Docker 容器。 Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。核心概念如下:
2727

28-
<div align="center"> <img src="../pictures/docker架构.png"/> </div>
28+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/docker架构.png"/> </div>
2929

3030
### 2.1 镜像
3131

@@ -61,7 +61,7 @@ Docker 客户端(docker)是用户与 Docker 交互的主要方式。当你
6161

6262
Docker 提供了大量命令用于管理镜像、容器和服务,命令的统一使用格式为:`docker [OPTIONS] COMMAND` ,其中 OPTIONS 代表可选参数。需要注意的是 Docker 命令的执行一般都需要获取 root 权限,这是因为 Docker 的命令行工具 docker 与 docker daemon 是同一个二进制文件,docker daemon 负责接收并执行来自 docker 的命令,它的运行需要 root 权限。所有常用命令及其使用场景如下:
6363

64-
<div align="center"> <img src="../pictures/docker常用命令.jpg"/> </div>
64+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/docker常用命令.jpg"/> </div>
6565

6666
### 3.1 基础命令
6767

@@ -277,7 +277,7 @@ docker run -it -p 8080:8080 spring-boot-base-java
277277

278278
这里为了观察到启动效果,所以使用交互的方式启动,实际部署时可以使用`-d`参数来后台启动,输出如下:
279279

280-
<div align="center"> <img src="../pictures/dockerfile01.png"/> </div>
280+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/dockerfile01.png"/> </div>
281281

282282
### 5.2 基于 JDK 镜像部署 Spring Boot 项目
283283

notes/HTTPS.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ OpenSSL 是一个开源的底层密码库,封装了所有的密码学算法,
3939

4040
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议)是在 HTTP 的基础上通过 SSL/TLS 层来进行传输加密和身份认证,从而保证通讯的安全性。除此之外它的报文结构、请求方法等都完全沿用 HTTP 原有的模式,因此可以很方便地将原有 HTTP 服务转换为 HTTPS 服务。
4141

42-
![http+tls](../pictures/http+tls.png)
42+
![http+tls](https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/http+tls.png)
4343

4444
## 二、数据安全
4545

@@ -51,7 +51,7 @@ HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输
5151

5252
HTTPS 的公钥可以由任意的客户端持有,但私钥只能由服务器持有,因此所有经过公钥加密的数据只能由对应的服务器解密。
5353

54-
<div align="center"> <img src="../pictures/https_非对称加密.png"/> </div>
54+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_非对称加密.png"/> </div>
5555

5656

5757
### 2.2 对称加密
@@ -60,7 +60,7 @@ HTTPS 的公钥可以由任意的客户端持有,但私钥只能由服务器
6060

6161
对称加密算法采用同一个密钥来进行信息的加密和解密,因此也被称为单密钥加密算法,其加解密速度都比较快。HTTPS 会在握手阶段采用非对称加密算法来生成对称加密所需的密钥,而之后的过程,因为要涉及到大量业务信息的传输,故都采用对称加密来提升性能。
6262

63-
<div align="center"> <img src="../pictures/https_对称加密.png"/> </div>
63+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_对称加密.png"/> </div>
6464

6565

6666
### 2.3 摘要算法
@@ -71,7 +71,7 @@ HTTPS 的公钥可以由任意的客户端持有,但私钥只能由服务器
7171

7272
HTTPS 会为需要传输的数据生成摘要信息,然后将经过会话密钥加密后的摘要和数据传送给服务器。服务器进行解密后,首先需要使用同样的摘要算法为数据生成摘要,并与客户端传送过来的摘要进行比较;如果一致,则证明数据没有被篡改。
7373

74-
<div align="center"> <img src="../pictures/https_摘要会话密钥加密.png"/> </div>
74+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_摘要会话密钥加密.png"/> </div>
7575

7676

7777
### 2.4 数字签名
@@ -80,14 +80,14 @@ HTTPS 会为需要传输的数据生成摘要信息,然后将经过会话密
8080

8181
由于非对称性加密比较耗时,因此只会对返回数据的摘要进行加密。当客户端收到服务器的响应时,首先尝试使用公钥对加密后的摘要进行解密,如果解密失败,则表示是其他伪装服务器返回的;如果解密成功,则继续对数据的完整性进行校验。
8282

83-
<div align="center"> <img src="../pictures/https_摘要私钥加密.png"/> </div>
83+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_摘要私钥加密.png"/> </div>
8484

8585

8686
### 2.5 中间人攻击
8787

8888
经过以上步骤,数据的传输已经相当安全了,但此时还是无法抵御中间人攻击:
8989

90-
<div align="center"> <img src="../pictures/https_中间人攻击.png"/> </div>
90+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_中间人攻击.png"/> </div>
9191

9292

9393
简单来说,中间人攻击就是服务器传递给客户端的公钥可能被攻击者替换,进而丧失数据安全的一种攻击方式:
@@ -104,7 +104,7 @@ CA(Certification Authority)是证书的签发机构,它是公钥基础设
104104

105105
顶级的 CA 机构有 Symantec、Comodo、GeoTrust、DigiCert,但是通常它们并不支持给厂商颁发证书,而是授权给中间厂商,由中间厂商再颁发给应用厂商。从而形成 CA 认证链:
106106

107-
<div align="center"> <img src="../pictures/https_证书链.png"/> </div>
107+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_证书链.png"/> </div>
108108

109109

110110
就 CA 证书类型而言,其分为以下三类:
@@ -115,15 +115,15 @@ CA(Certification Authority)是证书的签发机构,它是公钥基础设
115115

116116
通过点击浏览器上锁图标可以查看对应网站的证书状态,示例如下:
117117

118-
<div align="center"> <img src="../pictures/http_baidu_ov.png"/> </div>
118+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/http_baidu_ov.png"/> </div>
119119

120120

121-
<div align="center"> <img src="../pictures/http_baidu_ov_证书.png"/> </div>
121+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/http_baidu_ov_证书.png"/> </div>
122122

123123

124124
除了以上三种证书外,你还可以使用 Openssl 生成自签名证书,但由于自签名证书并不在整个认证链上,所以其通常不被浏览器所信任,访问时会出现以下警告:
125125

126-
<div align="center"> <img src="../pictures/https_非安全的连接.png"/> </div>
126+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_非安全的连接.png"/> </div>
127127

128128

129129
### 2.7 PKI 体系
@@ -138,7 +138,7 @@ PKI(Public Key Infrastructure,公开密钥基础建设系统)由数字证
138138

139139
`TLS v1.2` 版本中采用 ECDHE 算法的握手过程为例,其具体流程如下:
140140

141-
<div align="center"> <img src="../pictures/https_tsl_v1.2_ECDHE.jpg"/> </div>
141+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_tsl_v1.2_ECDHE.jpg"/> </div>
142142

143143

144144
1. TLS/SSL 协议是基于 TCP/IP 协议的,因此需要先等待 TCP 三次握手完成;
@@ -151,14 +151,14 @@ PKI(Public Key Infrastructure,公开密钥基础建设系统)由数字证
151151

152152
5. 之后服务器还会发送一个 `Server Key Exchange` 消息,里面包含了进行 ECDHE 算法所需的各种参数 `Server Params`
153153

154-
<div align="center"> <img src="../pictures/https_server_key_exchange.png"/> </div>
154+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_server_key_exchange.png"/> </div>
155155

156156

157157
158158

159159
6. 客户端按照密码套件的要求,也生成一个 `Client Params`,并通过 `Client Key Exchange` 消息发送给服务器;
160160

161-
<div align="center"> <img src="../pictures/https_client_key_exchange.png"/> </div>
161+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_client_key_exchange.png"/> </div>
162162

163163

164164
@@ -193,7 +193,7 @@ PKI(Public Key Infrastructure,公开密钥基础建设系统)由数字证
193193

194194
12. 除此之外,服务器还会返回一个 `New Session Ticket` 消息,其内容如下:
195195

196-
<div align="center"> <img src="../pictures/https_new_session_ticket.png"/> </div>
196+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures/https_new_session_ticket.png"/> </div>
197197

198198

199199

notes/JVM_性能监控之可视化工具.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ JConsole(Java Monitoring and Management Console)是一款基于 JMX(Java M
3131

3232
打开位于 bin 目录下的 `jconsole` 程序后,它会自动扫描当前主机上的所有 JVM 进程:
3333

34-
<div align="center"> <img src="..\pictures\jconsole-start.png"/> </div>
34+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-start.png"/> </div>
3535

3636

3737
选中需要监控的进程后,点击连接,即可进入监控界面。监控界面包含了 *概览**内存**线程****VM 概要**MBean* 六个选项卡。其中概览界面显示的是 *内存**线程*** 等三个选项卡界面的概览信息,如下所示:
3838

39-
<div align="center"> <img src="..\pictures\jconsole-概览.png"/> </div>
39+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-概览.png"/> </div>
4040

4141

4242

@@ -45,7 +45,7 @@ JConsole(Java Monitoring and Management Console)是一款基于 JMX(Java M
4545

4646

4747

48-
<div align="center"> <img src="..\pictures\jconsole-内存.png"/> </div>
48+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-内存.png"/> </div>
4949

5050

5151

@@ -54,14 +54,14 @@ JConsole(Java Monitoring and Management Console)是一款基于 JMX(Java M
5454

5555

5656

57-
<div align="center"> <img src="..\pictures\jconsole-检测死锁.png"/> </div>
57+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-检测死锁.png"/> </div>
5858

5959

6060

6161

6262
点击死锁选项卡则可以看到造成死锁的线程:
6363

64-
<div align="center"> <img src="..\pictures\jconsole-死锁.png"/> </div>
64+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-死锁.png"/> </div>
6565

6666

6767

@@ -70,7 +70,7 @@ JConsole(Java Monitoring and Management Console)是一款基于 JMX(Java M
7070

7171

7272

73-
<div align="center"> <img src="..\pictures\jconsole-概要.png"/> </div>
73+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jconsole-概要.png"/> </div>
7474

7575

7676

@@ -91,7 +91,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
9191

9292
打开位于 bin 目录下的 `jvisualvm` 程序, 它会自动扫描当前主机上的所有 JVM 进程:
9393

94-
<div align="center"> <img src="..\pictures\jvisual.png"/> </div>
94+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual.png"/> </div>
9595

9696

9797

@@ -100,7 +100,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
100100

101101

102102

103-
<div align="center"> <img src="..\pictures\jvisual-监视.png"/> </div>
103+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-监视.png"/> </div>
104104

105105

106106

@@ -111,7 +111,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
111111

112112

113113

114-
<div align="center"> <img src="..\pictures\jvisual-堆dump.png"/> </div>
114+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-堆dump.png"/> </div>
115115

116116

117117

@@ -120,7 +120,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
120120

121121
在线程界面可以查看所有线程的状态,如果出现死锁,该界面还会进行提示:
122122

123-
<div align="center"> <img src="..\pictures\jvisual-线程.png"/> </div>
123+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-线程.png"/> </div>
124124

125125

126126

@@ -129,7 +129,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
129129

130130

131131

132-
<div align="center"> <img src="..\pictures\jvisual-dump.png"/> </div>
132+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-dump.png"/> </div>
133133

134134

135135

@@ -138,7 +138,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
138138

139139
在 Profiler 界面,可以进行 CPU 和 内存的性能分析。要开始性能分析,需要先选择 **CPU****内存** 按钮中的一个,VisualVM 将会开始记录应用程序执行过的所有方法:如果是进行的是 CPU 执行时间分析,将会统计每个方法的执行次数、执行耗时;如果是内存分析,则会统计每个方法关联的对象数以及这些对象所占的空间。想要结束性能分析,点击停止按钮即可:
140140

141-
<div align="center"> <img src="..\pictures\jvisual-性能分析.png"/> </div>
141+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-性能分析.png"/> </div>
142142

143143

144144

@@ -147,7 +147,7 @@ VisualVM(All-in-One Java Troubleshooting Tool)是 Oracle 提供的功能最
147147

148148
Visual GC 面板默认是不显示的,需要通过插件进行扩展。它会实时监控虚拟机的状态,在功能上类似于 jstat 命令:
149149

150-
<div align="center"> <img src="..\pictures\jvisual-gc.png"/> </div>
150+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-gc.png"/> </div>
151151

152152

153153

@@ -156,7 +156,7 @@ Visual GC 面板默认是不显示的,需要通过插件进行扩展。它会
156156

157157
在主界面,点击 **工具 => 插件** ,可以打开插件面板。右击插件选项或者点击安装按钮即可完成对应插件的安装:
158158

159-
<div align="center"> <img src="..\pictures\jvisual-插件安装.png"/> </div>
159+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-插件安装.png"/> </div>
160160

161161

162162

@@ -165,7 +165,7 @@ Visual GC 面板默认是不显示的,需要通过插件进行扩展。它会
165165

166166

167167

168-
<div align="center"> <img src="..\pictures\jvisual-插件中心.png"/> </div>
168+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-插件中心.png"/> </div>
169169

170170

171171

@@ -174,7 +174,7 @@ Visual GC 面板默认是不显示的,需要通过插件进行扩展。它会
174174

175175

176176

177-
<div align="center"> <img src="..\pictures\jvisual-配置插件中心.png"/> </div>
177+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-配置插件中心.png"/> </div>
178178

179179

180180

@@ -232,7 +232,7 @@ chown root:root /usr/local/jmxremote.password
232232

233233
之后在使用 VisualVM 进行远程连接时,配置如下:
234234

235-
<div align="center"> <img src="..\pictures\jvisual-连接远程主机.png"/> </div>
235+
<div align="center"> <img src="https://gitee.com/heibaiying/Full-Stack-Notes/raw/master/pictures\jvisual-连接远程主机.png"/> </div>
236236

237237

238238
需要注意的是这里的端口号是配置的 `Dcom.sun.management.jmxremote.port` 的值,而不是 Java 程序的端口号。连接完成后,即可查看到对应进程的监控状态。

0 commit comments

Comments
 (0)