From 29ee3c4f2c0ce64e8903002e09dd79b06207004c Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 14 May 2019 16:57:43 +0800 Subject: [PATCH] auto commit --- docs/notes/Java IO.md | 2 +- docs/notes/Java 容器.md | 2 +- docs/notes/算法 - 并查集.md | 2 +- docs/notes/计算机操作系统 - 进程管理.md | 3 +-- .../1e6affc4-18e5-4596-96ef-fb84c63bf88a.png | Bin 0 -> 40674 bytes notes/Java IO.md | 2 +- notes/Java 容器.md | 2 +- .../1e6affc4-18e5-4596-96ef-fb84c63bf88a.png | Bin 0 -> 40674 bytes notes/算法 - 并查集.md | 2 +- notes/计算机操作系统 - 进程管理.md | 6 +++--- 10 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 docs/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png create mode 100644 notes/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md index c1034d0e..25d0483a 100644 --- a/docs/notes/Java IO.md +++ b/docs/notes/Java IO.md @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram diff --git a/docs/notes/Java 容器.md b/docs/notes/Java 容器.md index 727ed03d..cf29f0e4 100644 --- a/docs/notes/Java 容器.md +++ b/docs/notes/Java 容器.md @@ -409,7 +409,7 @@ transient Node last; transient Entry[] table; ``` -Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值相同的 Entry。 +Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。

diff --git a/docs/notes/算法 - 并查集.md b/docs/notes/算法 - 并查集.md index 0f7e3813..7d7613b3 100644 --- a/docs/notes/算法 - 并查集.md +++ b/docs/notes/算法 - 并查集.md @@ -47,7 +47,7 @@ public abstract class UF { 可以快速进行 find 操作,也就是可以快速判断两个节点是否连通。 -需要保证同一连通分量的所有节点的 id 值相等。 +需要保证同一连通分量的所有节点的 id 值相等,就可以通过判断两个节点的 id 值是否相等从而判断其连通性。 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 diff --git a/docs/notes/计算机操作系统 - 进程管理.md b/docs/notes/计算机操作系统 - 进程管理.md index 316c17c8..8f51026e 100644 --- a/docs/notes/计算机操作系统 - 进程管理.md +++ b/docs/notes/计算机操作系统 - 进程管理.md @@ -101,8 +101,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H **1.3 最短剩余时间优先 shortest remaining time next(SRTN)** -最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 -当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。 +最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。 ## 2. 交互式系统 diff --git a/docs/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png b/docs/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png new file mode 100644 index 0000000000000000000000000000000000000000..e28387b06cf19af4233fa671f9e01e37d1d035a9 GIT binary patch literal 40674 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 bkJA78n=dqG*LHTZf%JL0`njxgN@xNAfzW4V literal 0 HcmV?d00001 diff --git a/notes/Java IO.md b/notes/Java IO.md index d3bc1ddd..0d85485c 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -


+

## Datagram diff --git a/notes/Java 容器.md b/notes/Java 容器.md index 803d7971..1284730d 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -409,7 +409,7 @@ transient Node last; transient Entry[] table; ``` -Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值相同的 Entry。 +Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。

diff --git a/notes/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png b/notes/pics/1e6affc4-18e5-4596-96ef-fb84c63bf88a.png new file mode 100644 index 0000000000000000000000000000000000000000..e28387b06cf19af4233fa671f9e01e37d1d035a9 GIT binary patch literal 40674 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 bkJA78n=dqG*LHTZf%JL0`njxgN@xNAfzW4V literal 0 HcmV?d00001 diff --git a/notes/算法 - 并查集.md b/notes/算法 - 并查集.md index 63c471e1..3a3e5cb0 100644 --- a/notes/算法 - 并查集.md +++ b/notes/算法 - 并查集.md @@ -47,7 +47,7 @@ public abstract class UF { 可以快速进行 find 操作,也就是可以快速判断两个节点是否连通。 -需要保证同一连通分量的所有节点的 id 值相等。 +需要保证同一连通分量的所有节点的 id 值相等,就可以通过判断两个节点的 id 值是否相等从而判断其连通性。 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 diff --git a/notes/计算机操作系统 - 进程管理.md b/notes/计算机操作系统 - 进程管理.md index 1732d70b..4bec58d2 100644 --- a/notes/计算机操作系统 - 进程管理.md +++ b/notes/计算机操作系统 - 进程管理.md @@ -89,19 +89,19 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H **1.1 先来先服务 first-come first-serverd(FCFS)** -按照请求的顺序进行调度。 +非抢占式的调度算法,按照请求的顺序进行调度。 有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。 **1.2 短作业优先 shortest job first(SJF)** -按估计运行时间最短的顺序进行调度。 +非抢占式的调度算法,按估计运行时间最短的顺序进行调度。 长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。 **1.3 最短剩余时间优先 shortest remaining time next(SRTN)** -按估计剩余时间最短的顺序进行调度。 +最短作业优先的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。 ## 2. 交互式系统