Skip to content

Commit e39faa5

Browse files
author
haoyang.shi
committed
fix 错别字
1 parent 5671689 commit e39faa5

4 files changed

Lines changed: 44 additions & 8 deletions

File tree

basic/1-algo/1-tree.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,16 @@ B+树是B-树的变体,也是一种多路搜索树:
208208
209209
m阶的B+树和B-树的主要差异如下:
210210
211-
- 在B+树中,具有n个关键字的节点含有n个子树,即每个关键字对应一个子树,而在B-树种,具有n个关键字的节点含有(n+1)个子树。
212-
- 在B+树种,每个节点(除根节点外)中的关键字个数n的取值范围是[m/2] <= n <= m,根节点n的取值范围2 <=n <=m;而在B-树种,除根节点外,其他所有非叶子节点的关键字个数:[m/2]-1 <= n <= m-1,根节点关键字个数为1 <= n <= m-1
213-
- **B+树种所有叶子节点包含了全部关键字,即其他非叶子节点中的关键字包含在叶子节点中,而在B-树中,关键字是不重复的。**
214-
- **B+树中所有非叶子节点仅起到索引的作用**,即节点中每个索引项值含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。而在B-树种,每个关键字对应一个记录的存储地址。
211+
- 在B+树中,具有n个关键字的节点含有n个子树,即每个关键字对应一个子树,而在B-树中,具有n个关键字的节点含有(n+1)个子树。
212+
- 在B+树中,每个节点(除根节点外)中的关键字个数n的取值范围是[m/2] <= n <= m,根节点n的取值范围2 <=n <=m;而在B-树中,除根节点外,其他所有非叶子节点的关键字个数:[m/2]-1 <= n <= m-1,根节点关键字个数为1 <= n <= m-1
213+
- **B+树中所有叶子节点包含了全部关键字,即其他非叶子节点中的关键字包含在叶子节点中,而在B-树中,关键字是不重复的。**
214+
- **B+树中所有非叶子节点仅起到索引的作用**,即节点中每个索引项值含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。而在B-树中,每个关键字对应一个记录的存储地址。
215215
- 通常B+树上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,所有叶子节点链接成一个不定长的线性表。
216216
217217
218218
### B+树的查找
219219
220-
在B+树种可以采用两种查找方式
220+
在B+树中可以采用两种查找方式
221221
222222
- 直接从最小关键字开始顺序查找。
223223
- 从B+树的根节点开始随机查找。这种查找方式与B-树的查找方式类似,只是在分支节点上的关键字与查找值相等时,查找并不会结束,要继续查到叶子节点为止,此时若查找成功,则按所给指针取出对应元素。

basic/1-algo/4-path.md

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 最短路径算法
22

3-
## Dijkstra——贪心算法
3+
## Dijkstra —— 贪心算法
44

55
> 从一个顶点到其余顶点的最短路径
66
@@ -15,6 +15,31 @@
1515
4. 重复以上步骤知道S包含所有顶点。
1616
```
1717

18-
## Floyd——动态规划
18+
## Floyd —— 动态规划
1919

20-
> 每对顶点之间的最短路径
20+
Floyd 算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径问题。该算法的时间复杂度为 $$O(N^{3})$$,空间复杂度为 $$O(N^{2})$$
21+
22+
$$D_{i,j,k}$$ 为从 $$i$$$$j$$ 的只以 $$(1..k)$$ 集合中的节点为中间节点的最短路径的长度。
23+
24+
$$
25+
D_{i,j,k}=\begin{cases}
26+
D_{i,j,k-1} & 最短路径不经过 k\\
27+
D_{i,k,k-1}+D_{k,j,k-1} & 最短路径经过 k
28+
\end{cases}
29+
$$
30+
31+
因此, $$D_{i,j,k}=min(D_{i,k,k-1}+D_{k,j,k-1},D_{i,j,k-1})$$。伪代码描述如下:
32+
33+
```
34+
// let dist be a |V| × |V| array of minimum distances initialized to ∞ (infinity)
35+
for each vertex v
36+
dist[v][v] ← 0
37+
for each edge (u,v)
38+
dist[u][v] ← w(u,v) // the weight of the edge (u,v)
39+
for k from 1 to |V|
40+
for i from 1 to |V|
41+
for j from 1 to |V|
42+
if dist[i][j] > dist[i][k] + dist[k][j]
43+
dist[i][j] ← dist[i][k] + dist[k][j]
44+
end if
45+
```

basic/2-op/1-arch.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,14 @@
5959
[+1] = [00000001]原 = [00000001]反 = [00000001]补
6060
6161
[-1] = [10000001]原 = [11111110]反 = [11111111]补
62+
63+
1+(-1)= 00000001 + 11111111 = 00000000 = 0
6264
```
6365

6466
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
6567

68+
> 在计算机系统中,**数值一律用补码来表示和存储**。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
69+
6670
#### 定点数与浮点数
6771

6872
**定点数是小数点固定的数**。在计算机中没有专门表示小数点的位,小数点的位置是约定默认的。一般固定在机器数的最低位之后,或是固定在符号位之后。前者称为定点纯整数,后者称为定点纯小数。

fromwork/1-netty.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Netty 是一个 异步 事件驱动 的网络应用框架,用于快速开发
66

77
无论是 C++ 还是 Java 编写的网络框架,大多数都是基于 Reactor 模式进行设计和开发,Reactor 模式基于事件驱动,特别适合处理海量的 I/O 事件。
88

9+
反应器设计模式(`Reactor pattern`)是一种为处理服务请求并发 提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。
10+
911
### 单线程模型
1012

1113
Reactor 单线程模型,指的是所有的 IO 操作都在同一个 NIO 线程上面完成,NIO 线程的职责如下:
@@ -85,6 +87,11 @@ Netty 的 Zero-copy 体现在如下几个个方面:
8587

8688
![image](images/922e67970b6ac7bf78cd43ac61f7aec0.png)
8789

90+
## Epool 触发
91+
92+
- `NioChannel`:是水平触发
93+
- `EpollChannel`:是边缘触发,Netty 自己触发 Epoll Event
94+
8895
## [JDK NIO BUG](https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6403933)
8996

9097
- 正常情况下,`selector.select()` 操作是阻塞的,只有被监听的 `fd` 有读写操作时,才被唤醒

0 commit comments

Comments
 (0)