diff --git a/notes/Java 并发.md b/notes/Java 并发.md index c0fa0d6b..d5963911 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -258,9 +258,12 @@ public void func(String name) { ```java private Lock lock; public int func(int value) { - lock.lock(); - // ... - lock.unlock(); + try { + lock.lock(); + // ... + } finally { + lock.unlock(); + } } ``` @@ -383,7 +386,7 @@ Consumer4 is consuming product made by Consumer4... **Executor 的中断操作** -Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断所有它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 +Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程,就可以持有线程的上下文。submit() 将返回一个泛型 Futrue,可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。 diff --git a/notes/Linux.md b/notes/Linux.md index 0ac97d4d..bc59bc0d 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -599,7 +599,7 @@ inode 具体包含以下信息: 符号链接指向源文件所在的目录的 inode 上,从而通过目录获取源文件 inode。 -下图中,源文件位于目录 2,在目录 1 中建立符号链接文件,该符号链接会指向目录 2 的 inode。 +下图中,源文件位于目录 2,在目录 1 中建立符号链接文件,该符号链接会指向目录 2 的 inode,

diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 636809a0..74cbdf3d 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -34,9 +34,11 @@ * [点对点信道 - PPP 协议](#点对点信道---ppp-协议) * [局域网的拓扑](#局域网的拓扑) * [广播信道 - CSMA/CD 协议*](#广播信道---csmacd-协议) - * [集线器](#集线器) + * [扩展局域网*](#扩展局域网) + * [1. 在物理层进行扩展](#1-在物理层进行扩展) + * [2. 在链路层进行扩展](#2-在链路层进行扩展) + * [3. 虚拟局域网](#3-虚拟局域网) * [MAC 层*](#mac-层) - * [虚拟局域网](#虚拟局域网) * [第四章 网络层*](#第四章-网络层) * [网际协议 IP 概述](#网际协议-ip-概述) * [IP 数据报格式](#ip-数据报格式) @@ -47,7 +49,6 @@ * [IP 地址和 MAC 地址](#ip-地址和-mac-地址) * [地址解析协议 ARP](#地址解析协议-arp) * [路由器的结构](#路由器的结构) - * [交换机与路由器的区别](#交换机与路由器的区别) * [路由器分组转发流程](#路由器分组转发流程) * [路由选择协议](#路由选择协议) * [1. 内部网关协议 RIP](#1-内部网关协议-rip) @@ -334,13 +335,37 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定,从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -## 集线器 +## 扩展局域网* -从表面上看,使用集线器的局域网在物理上是一个星型网。但是集线器使用电子器件来模拟实际缆线的工作,逻辑上仍是一个总线网,整个系统仍像一个传统以太网那样运行。 +### 1. 在物理层进行扩展 -

+使用集线器进行扩展。 -

+集线器的主要功能是对接收到的信号进行放大,以扩大网络的传输距离。 + +集线器不能根据 MAC 地址进行转发,而是以广播的方式发送数据帧。 + +集线器是一种共享式的传输设备,意味着同一时刻只能传输一组数据帧。 + +

+ +### 2. 在链路层进行扩展 + +最开始使用的是网桥,它收到一个帧时,根据帧的 MAC 地址,查找网桥中的地址表,然后确定将帧转发到哪一个接口。 + +网桥是一种两接口的网络设备,并且它不是共享式地,因此性能比集线器这种共享式设备更高。 + +交换机的问世很快就淘汰了网桥,它实质上是一个多接口网桥。交换机的每个接口都能直接与一个主机或者另一个交换机相连,并且一般都工作在全双工方式。交换机还具有并发性,使多对主机能同时通信。 + +交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到 接口的映射。下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表现,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 收下之后,查找交换表得到主机 A 映射的接口为 1,因此就把帧发送给主机 A,同时交换机添加主机 B 到接口 3 的映射。 + +

+ +### 3. 虚拟局域网 + +虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 + +

## MAC 层* @@ -353,12 +378,6 @@ MAC 地址是 6 字节(48 位)的地址,用于唯一表示网络适配器 - **FCS** :帧检验序列,使用的是 CRC 检验方法; - **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 -## 虚拟局域网 - -虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 - -

- # 第四章 网络层* ## 网际协议 IP 概述 @@ -469,9 +488,6 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为

-## 交换机与路由器的区别 - - ## 路由器分组转发流程 diff --git a/pics/823cdab7-3779-4e3a-a951-dc2d154e0ee6.jpg b/pics/823cdab7-3779-4e3a-a951-dc2d154e0ee6.jpg new file mode 100644 index 00000000..48d9c267 Binary files /dev/null and b/pics/823cdab7-3779-4e3a-a951-dc2d154e0ee6.jpg differ diff --git a/pics/c9cfcd20-c901-435f-9a07-3e46830c359f.jpg b/pics/c9cfcd20-c901-435f-9a07-3e46830c359f.jpg new file mode 100644 index 00000000..813b5142 Binary files /dev/null and b/pics/c9cfcd20-c901-435f-9a07-3e46830c359f.jpg differ