Skip to content

Commit 9f98665

Browse files
committed
auto commit
1 parent 47fbcf2 commit 9f98665

26 files changed

Lines changed: 499 additions & 352 deletions

notes/Git.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ Git 的中心服务器用来交换每个用户的修改。没有中心服务器
3939

4040
# Git 工作流
4141

42-
<div align="center"> <img src="../pics//a1198642-9159-4d88-8aec-c3b04e7a2563.jpg"/> </div><br>
42+
<div align="center"> <img src="index_files/a1198642-9159-4d88-8aec-c3b04e7a2563.jpg"/> </div><br>
4343

4444
新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。
4545

4646
Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针。
4747

48-
<div align="center"> <img src="../pics//46f66e88-e65a-4ad0-a060-3c63fe22947c.png"/> </div><br>
48+
<div align="center"> <img src="index_files/46f66e88-e65a-4ad0-a060-3c63fe22947c.png"/> </div><br>
4949

5050
- git add files 把文件的修改添加到暂存区
5151
- git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
5252
- git reset -- files 使用当前分支上的修改覆盖暂缓区,用来撤销最后一次 git add files
5353
- git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改
5454

55-
<div align="center"> <img src="../pics//17976404-95f5-480e-9cb4-250e6aa1d55f.png"/> </div><br>
55+
<div align="center"> <img src="index_files/17976404-95f5-480e-9cb4-250e6aa1d55f.png"/> </div><br>
5656

5757
可以跳过暂存区域直接从分支中取出修改或者直接提交修改到分支中
5858

@@ -63,25 +63,25 @@ Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master
6363

6464
Git 把每次提交都连成一条时间线。分支使用指针来实现,例如 master 分支指针指向时间线的最后一个节点,也就是最后一次提交。HEAD 指针指向的是当前分支。
6565

66-
<div align="center"> <img src="../pics//fb546e12-e1fb-4b72-a1fb-8a7f5000dce6.jpg"/> </div><br>
66+
<div align="center"> <img src="index_files/fb546e12-e1fb-4b72-a1fb-8a7f5000dce6.jpg"/> </div><br>
6767

6868
新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支表示新分支成为当前分支。
6969

70-
<div align="center"> <img src="../pics//bc775758-89ab-4805-9f9c-78b8739cf780.jpg"/> </div><br>
70+
<div align="center"> <img src="index_files/bc775758-89ab-4805-9f9c-78b8739cf780.jpg"/> </div><br>
7171

7272
每次提交只会让当前分支向前移动,而其它分支不会移动。
7373

74-
<div align="center"> <img src="../pics//5292faa6-0141-4638-bf0f-bb95b081dcba.jpg"/> </div><br>
74+
<div align="center"> <img src="index_files/5292faa6-0141-4638-bf0f-bb95b081dcba.jpg"/> </div><br>
7575

7676
合并分支也只需要改变指针即可。
7777

78-
<div align="center"> <img src="../pics//1164a71f-413d-494a-9cc8-679fb6a2613d.jpg"/> </div><br>
78+
<div align="center"> <img src="index_files/1164a71f-413d-494a-9cc8-679fb6a2613d.jpg"/> </div><br>
7979

8080
# 冲突
8181

8282
当两个分支都对同一个文件进行了修改,在分支合并时就会产生冲突。
8383

84-
<div align="center"> <img src="../pics//58e57a21-6b6b-40b6-af85-956dd4e0f55a.jpg"/> </div><br>
84+
<div align="center"> <img src="index_files/58e57a21-6b6b-40b6-af85-956dd4e0f55a.jpg"/> </div><br>
8585

8686
Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。
8787

@@ -103,15 +103,15 @@ Creating a new branch is quick AND simple.
103103
$ git merge --no-ff -m "merge with no-ff" dev
104104
```
105105

106-
<div align="center"> <img src="../pics//dd78a1fe-1ff3-4bcf-a56f-8c003995beb6.jpg"/> </div><br>
106+
<div align="center"> <img src="index_files/dd78a1fe-1ff3-4bcf-a56f-8c003995beb6.jpg"/> </div><br>
107107

108108
# 分支管理策略
109109

110110
master 分支应该是非常稳定的,只用来发布新版本;
111111

112112
日常开发在开发分支 dev 上进行。
113113

114-
<div align="center"> <img src="../pics//245fd2fb-209c-4ad5-bc5e-eb5664966a0e.jpg"/> </div><br>
114+
<div align="center"> <img src="index_files/245fd2fb-209c-4ad5-bc5e-eb5664966a0e.jpg"/> </div><br>
115115

116116
# 储藏(Stashing)
117117

@@ -151,6 +151,6 @@ $ ssh-keygen -t rsa -C "youremail@example.com"
151151

152152
# Git 命令一览
153153

154-
<div align="center"> <img src="../pics//7a29acce-f243-4914-9f00-f2988c528412.jpg"/> </div><br>
154+
<div align="center"> <img src="index_files/7a29acce-f243-4914-9f00-f2988c528412.jpg"/> </div><br>
155155

156156
比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf

notes/HTTP.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,17 @@
6161

6262
URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。
6363

64-
<div align="center"> <img src="../pics//4102b7d0-39b9-48d8-82ae-ac4addb7ebfb.jpg"/> </div><br>
64+
<div align="center"> <img src="index_files/4102b7d0-39b9-48d8-82ae-ac4addb7ebfb.jpg"/> </div><br>
6565

6666
## 请求和响应报文
6767

6868
**请求报文**
6969

70-
<div align="center"> <img src="../pics//22b39f77-ac47-4978-91ed-84aaf457644c.jpg"/> </div><br>
70+
<div align="center"> <img src="index_files/22b39f77-ac47-4978-91ed-84aaf457644c.jpg"/> </div><br>
7171

7272
**响应报文**
7373

74-
<div align="center"> <img src="../pics//00d8d345-cd4a-48af-919e-209d2788eca7.jpg"/> </div><br>
74+
<div align="center"> <img src="index_files/00d8d345-cd4a-48af-919e-209d2788eca7.jpg"/> </div><br>
7575

7676
# HTTP 方法
7777

@@ -152,7 +152,7 @@ DELETE /file.html HTTP/1.1
152152
CONNECT www.example.com:443 HTTP/1.1
153153
```
154154

155-
<div align="center"> <img src="../pics//5994928c-3d2d-45bd-abb1-adc4f5f4d775.jpg"/> </div><br>
155+
<div align="center"> <img src="index_files/5994928c-3d2d-45bd-abb1-adc4f5f4d775.jpg"/> </div><br>
156156

157157
## TRACE:追踪路径
158158

@@ -162,7 +162,7 @@ CONNECT www.example.com:443 HTTP/1.1
162162

163163
通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。
164164

165-
<div align="center"> <img src="../pics//c8637fd2-3aaa-46c4-b7d9-f24d3fa04781.jpg"/> </div><br>
165+
<div align="center"> <img src="index_files/c8637fd2-3aaa-46c4-b7d9-f24d3fa04781.jpg"/> </div><br>
166166

167167
# HTTP 状态码
168168

@@ -204,7 +204,7 @@ CONNECT www.example.com:443 HTTP/1.1
204204

205205
- **401 Unauthorized** :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
206206

207-
<div align="center"> <img src="../pics//b1b4cf7d-c54a-4ff1-9741-cd2eea331123.jpg"/> </div><br>
207+
<div align="center"> <img src="index_files/b1b4cf7d-c54a-4ff1-9741-cd2eea331123.jpg"/> </div><br>
208208

209209
- **403 Forbidden** :请求被拒绝,服务器端没有必要给出拒绝的详细理由。
210210

@@ -385,13 +385,13 @@ Expires 字段也可以用于告知缓存服务器该资源什么时候会过期
385385

386386
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。持久连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。
387387

388-
<div align="center"> <img src="../pics//c73a0b78-5f46-4d2d-a009-dab2a999b5d8.jpg"/> </div><br>
388+
<div align="center"> <img src="index_files/c73a0b78-5f46-4d2d-a009-dab2a999b5d8.jpg"/> </div><br>
389389

390390
持久连接需要使用 Connection 首部字段进行管理。HTTP/1.1 开始 HTTP 默认是持久化连接的,如果要断开 TCP 连接,需要由客户端或者服务器端提出断开,使用 Connection : close;而在 HTTP/1.1 之前默认是非持久化连接的,如果要维持持续连接,需要使用 Connection : Keep-Alive。
391391

392392
**管线化方式** 可以同时发送多个请求和响应,而不需要发送一个请求然后等待响应之后再发下一个请求。
393393

394-
<div align="center"> <img src="../pics//6943e2af-5a70-4004-8bee-b33d60f39da3.jpg"/> </div><br>
394+
<div align="center"> <img src="index_files/6943e2af-5a70-4004-8bee-b33d60f39da3.jpg"/> </div><br>
395395

396396
## 编码
397397

@@ -448,7 +448,7 @@ Content-Length: 1024
448448

449449
涉及以下首部字段:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
450450

451-
<div align="center"> <img src="../pics//39a27cca-c9af-482a-8a87-5522557a309e.jpg"/> </div><br>
451+
<div align="center"> <img src="index_files/39a27cca-c9af-482a-8a87-5522557a309e.jpg"/> </div><br>
452452

453453
## 虚拟主机
454454

@@ -464,19 +464,19 @@ Content-Length: 1024
464464

465465
使用代理的主要目的是:缓存、网络访问控制以及访问日志记录。
466466

467-
<div align="center"> <img src="../pics//c07035c3-a9ba-4508-8e3c-d8ae4c6ee9ee.jpg"/> </div><br>
467+
<div align="center"> <img src="index_files/c07035c3-a9ba-4508-8e3c-d8ae4c6ee9ee.jpg"/> </div><br>
468468

469469
**网关**
470470

471471
与代理服务器不同的是,网关服务器会将 HTTP 转化为其它协议进行通信,从而请求其它非 HTTP 服务器的服务。
472472

473-
<div align="center"> <img src="../pics//81375888-6be1-476f-9521-42eea3e3154f.jpg"/> </div><br>
473+
<div align="center"> <img src="index_files/81375888-6be1-476f-9521-42eea3e3154f.jpg"/> </div><br>
474474

475475
**隧道**
476476

477477
使用 SSL 等加密手段,为客户端和服务器之间建立一条安全的通信线路。
478478

479-
<div align="center"> <img src="../pics//64b95403-d976-421a-8b45-bac89c0b5185.jpg"/> </div><br>
479+
<div align="center"> <img src="index_files/64b95403-d976-421a-8b45-bac89c0b5185.jpg"/> </div><br>
480480

481481
# HTTPs
482482

@@ -496,7 +496,7 @@ HTTPs 并不是新协议,而是 HTTP 先和 SSL(Secure Socket Layer)通信
496496

497497
HTTPs 采用 **混合的加密机制** ,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信。(下图中,共享密钥即对称密钥)
498498

499-
<div align="center"> <img src="../pics//110b1a9b-87cd-45c3-a21d-824623715b33.jpg"/> </div><br>
499+
<div align="center"> <img src="index_files/110b1a9b-87cd-45c3-a21d-824623715b33.jpg"/> </div><br>
500500

501501
## 认证
502502

notes/JVM.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565

6666
# 内存模型
6767

68-
<div align="center"> <img src="../pics//dc695f48-4189-4fc7-b950-ed25f6c80f82.jpg"/> </div><br>
68+
<div align="center"> <img src="index_files/dc695f48-4189-4fc7-b950-ed25f6c80f82.jpg"/> </div><br>
6969

7070
注:白色区域为线程私有的,蓝色区域为线程共享的。
7171

@@ -224,7 +224,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
224224

225225
### 2.1 标记-清除算法
226226

227-
<div align="center"> <img src="../pics//a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg"/> </div><br>
227+
<div align="center"> <img src="index_files/a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg"/> </div><br>
228228

229229
将需要回收的对象进行标记,然后清除。
230230

@@ -237,7 +237,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
237237

238238
### 2.2 复制算法
239239

240-
<div align="center"> <img src="../pics//e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg"/> </div><br>
240+
<div align="center"> <img src="index_files/e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg"/> </div><br>
241241

242242
将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。
243243

@@ -247,7 +247,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
247247

248248
### 2.3 标记-整理算法
249249

250-
<div align="center"> <img src="../pics//902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg"/> </div><br>
250+
<div align="center"> <img src="index_files/902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg"/> </div><br>
251251

252252
让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
253253

@@ -262,13 +262,13 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
262262

263263
## 3. 垃圾收集器
264264

265-
<div align="center"> <img src="../pics//c625baa0-dde6-449e-93df-c3a67f2f430f.jpg"/> </div><br>
265+
<div align="center"> <img src="index_files/c625baa0-dde6-449e-93df-c3a67f2f430f.jpg"/> </div><br>
266266

267267
以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。
268268

269269
### 3.1 Serial 收集器
270270

271-
<div align="center"> <img src="../pics//22fda4ae-4dd5-489d-ab10-9ebfdad22ae0.jpg"/> </div><br>
271+
<div align="center"> <img src="index_files/22fda4ae-4dd5-489d-ab10-9ebfdad22ae0.jpg"/> </div><br>
272272

273273
它是单线程的收集器,不仅意味着只会使用一个线程进行垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停所有其他工作线程,往往造成过长的等待时间。
274274

@@ -278,7 +278,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
278278

279279
### 3.2 ParNew 收集器
280280

281-
<div align="center"> <img src="../pics//81538cd5-1bcf-4e31-86e5-e198df1e013b.jpg"/> </div><br>
281+
<div align="center"> <img src="index_files/81538cd5-1bcf-4e31-86e5-e198df1e013b.jpg"/> </div><br>
282282

283283
它是 Serial 收集器的多线程版本。
284284

@@ -300,7 +300,7 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
300300

301301
### 3.4 Serial Old 收集器
302302

303-
<div align="center"> <img src="../pics//08f32fd3-f736-4a67-81ca-295b2a7972f2.jpg"/> </div><br>
303+
<div align="center"> <img src="index_files/08f32fd3-f736-4a67-81ca-295b2a7972f2.jpg"/> </div><br>
304304

305305
Serial Old 是 Serial 收集器的老年代版本,也是给 Client 模式下的虚拟机使用。如果用在 Server 模式下,它有两大用途:
306306

@@ -309,15 +309,15 @@ Serial Old 是 Serial 收集器的老年代版本,也是给 Client 模式下
309309

310310
### 3.5 Parallel Old 收集器
311311

312-
<div align="center"> <img src="../pics//278fe431-af88-4a95-a895-9c3b80117de3.jpg"/> </div><br>
312+
<div align="center"> <img src="index_files/278fe431-af88-4a95-a895-9c3b80117de3.jpg"/> </div><br>
313313

314314
是 Parallel Scavenge 收集器的老年代版本。
315315

316316
在注重吞吐量以及 CPU 资源敏感的场合,都可以优先考虑 Parallel Scavenge 加 Parallel Old 收集器。
317317

318318
### 3.6 CMS 收集器
319319

320-
<div align="center"> <img src="../pics//62e77997-6957-4b68-8d12-bfd609bb2c68.jpg"/> </div><br>
320+
<div align="center"> <img src="index_files/62e77997-6957-4b68-8d12-bfd609bb2c68.jpg"/> </div><br>
321321

322322
CMS(Concurrent Mark Sweep),从 Mark Sweep 可以知道它是基于标记-清除算法实现的。
323323

@@ -342,7 +342,7 @@ CMS(Concurrent Mark Sweep),从 Mark Sweep 可以知道它是基于标记-
342342

343343
### 3.7 G1 收集器
344344

345-
<div align="center"> <img src="../pics//f99ee771-c56f-47fb-9148-c0036695b5fe.jpg"/> </div><br>
345+
<div align="center"> <img src="index_files/f99ee771-c56f-47fb-9148-c0036695b5fe.jpg"/> </div><br>
346346

347347
G1(Garbage-First)收集器是当今收集器技术发展最前沿的成果之一,它是一款面向服务端应用的垃圾收集器,HotSpot 开发团队赋予它的使命是(在比较长期的)未来可以替换掉 JDK 1.5 中发布的 CMS 收集器。
348348

@@ -439,7 +439,7 @@ JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才
439439

440440
## 1 类的生命周期
441441

442-
<div align="center"> <img src="../pics//32b8374a-e822-4720-af0b-c0f485095ea2.jpg"/> </div><br>
442+
<div align="center"> <img src="index_files/32b8374a-e822-4720-af0b-c0f485095ea2.jpg"/> </div><br>
443443

444444
包括以下 7 个阶段:
445445

@@ -627,7 +627,7 @@ public static void main(String[] args) {
627627

628628
应用程序都是由三种类加载器相互配合进行加载的,如果有必要,还可以加入自己定义的类加载器。下图展示的类加载器之间的层次关系,称为类加载器的双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,这里类加载器之间的父子关系一般通过组合(Composition)关系来实现,而不是通过继承(Inheritance)的关系实现。
629629

630-
<div align="center"> <img src="../pics//2cdc3ce2-fa82-4c22-baaa-000c07d10473.jpg"/> </div><br>
630+
<div align="center"> <img src="index_files/2cdc3ce2-fa82-4c22-baaa-000c07d10473.jpg"/> </div><br>
631631

632632
**工作过程**
633633

notes/Java IO.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ File 类可以用于表示文件和目录,但是它只用于表示文件的信
4949

5050
# 字节操作
5151

52-
<div align="center"> <img src="../pics//8143787f-12eb-46ea-9bc3-c66d22d35285.jpg"/> </div><br>
52+
<div align="center"> <img src="index_files/8143787f-12eb-46ea-9bc3-c66d22d35285.jpg"/> </div><br>
5353

5454
Java I/O 使用了装饰者模式来实现。以 InputStream 为例,InputStream 是抽象组件,FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作。FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能,例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。
5555

@@ -150,7 +150,7 @@ is.close();
150150
- Socket:客户端类
151151
- 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。
152152

153-
<div align="center"> <img src="../pics//fa4101d7-19ce-4a69-a84f-20bbe64320e5.jpg"/> </div><br>
153+
<div align="center"> <img src="index_files/fa4101d7-19ce-4a69-a84f-20bbe64320e5.jpg"/> </div><br>
154154

155155
## 4. Datagram
156156

@@ -211,19 +211,19 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重
211211
状态变量的改变过程:
212212

213213
1. 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 9。capacity 变量不会改变,下面的讨论会忽略它。
214-
<div align="center"> <img src="../pics//1bea398f-17a7-4f67-a90b-9e2d243eaa9a.png"/> </div><br>
214+
<div align="center"> <img src="index_files/1bea398f-17a7-4f67-a90b-9e2d243eaa9a.png"/> </div><br>
215215

216216
2. 从输入通道中读取 3 个字节数据写入缓冲区中,此时 position 移动设为 3,limit 保持不变。
217-
<div align="center"> <img src="../pics//4628274c-25b6-4053-97cf-d1239b44c43d.png"/> </div><br>
217+
<div align="center"> <img src="index_files/4628274c-25b6-4053-97cf-d1239b44c43d.png"/> </div><br>
218218

219219
3. 以下图例为已经从输入通道读取了 5 个字节数据写入缓冲区中。在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。
220-
<div align="center"> <img src="../pics//952e06bd-5a65-4cab-82e4-dd1536462f38.png"/> </div><br>
220+
<div align="center"> <img src="index_files/952e06bd-5a65-4cab-82e4-dd1536462f38.png"/> </div><br>
221221

222222
4. 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。
223-
<div align="center"> <img src="../pics//b5bdcbe2-b958-4aef-9151-6ad963cb28b4.png"/> </div><br>
223+
<div align="center"> <img src="index_files/b5bdcbe2-b958-4aef-9151-6ad963cb28b4.png"/> </div><br>
224224

225225
5. 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。
226-
<div align="center"> <img src="../pics//67bf5487-c45d-49b6-b9c0-a058d8c68902.png"/> </div><br>
226+
<div align="center"> <img src="index_files/67bf5487-c45d-49b6-b9c0-a058d8c68902.png"/> </div><br>
227227

228228
## 4. 文件 NIO 实例
229229

@@ -284,7 +284,7 @@ buffer.clear();
284284

285285
服务端都会为每个连接的客户端创建一个线程来处理读写请求,阻塞式的特点会造成服务器会创建大量线程,并且大部分线程处于阻塞的状态,因此对服务器的性能会有很大的影响。
286286

287-
<div align="center"> <img src="../pics//edc23f99-c46c-4200-b64e-07516828720d.jpg"/> </div><br>
287+
<div align="center"> <img src="index_files/edc23f99-c46c-4200-b64e-07516828720d.jpg"/> </div><br>
288288

289289
### 5.2 非阻塞式 I/O
290290

@@ -294,7 +294,7 @@ buffer.clear();
294294

295295
线程通信:线程之间通过 wait()、notify() 等方式通信,保证每次上下文切换都是有意义的,减少无谓的线程切换。
296296

297-
<div align="center"> <img src="../pics//7fcb2fb0-2cd9-4396-bc2d-282becf963c3.jpg"/> </div><br>
297+
<div align="center"> <img src="index_files/7fcb2fb0-2cd9-4396-bc2d-282becf963c3.jpg"/> </div><br>
298298

299299
## 6. 套接字 NIO 实例
300300

0 commit comments

Comments
 (0)