Skip to content

Commit 70186bc

Browse files
committed
修正错别字
1 parent 5dd6239 commit 70186bc

6 files changed

Lines changed: 17 additions & 17 deletions

File tree

docs/algorithm/负载均衡.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static String random() {
6666
}
6767
```
6868

69-
因为使用了非线程安全的集合,所以在访问操作时操作的是集合的拷贝,下面几种轮训方式中也是这种思想
69+
因为使用了非线程安全的集合,所以在访问操作时操作的是集合的拷贝,下面几种轮询方式中也是这种思想
7070

7171
写一个模拟请求方法,请求10w次,记录请求结果。
7272

@@ -102,9 +102,9 @@ IP:192.168.1.4,次数:25082
102102

103103
每台服务器被访问的次数都趋近于 2.5w,有点负载均衡的意思。但是随机毕竟是随机,是不能保证访问次数绝对均匀的。
104104

105-
## 2. 轮训访问
105+
## 2. 轮询访问
106106

107-
轮训访问就简单多了,拿上面的熊1到熊4来说,我们一个接一个的啪啪 - 打脸,熊1打完打熊2,熊2打完打熊3,熊4打完打熊1,最终也是实现了被打均衡。但是保证均匀总是要付出代价的,随机访问中需要随机,轮训访问中需要什么来保证轮训呢
107+
轮询访问就简单多了,拿上面的熊1到熊4来说,我们一个接一个的啪啪 - 打脸,熊1打完打熊2,熊2打完打熊3,熊4打完打熊1,最终也是实现了被打均衡。但是保证均匀总是要付出代价的,随机访问中需要随机,轮询访问中需要什么来保证轮询呢
108108

109109
```java
110110
/** 服务器列表 */
@@ -136,7 +136,7 @@ public static String randomOneByOne() {
136136
}
137137
```
138138

139-
由代码里可以看出来,为了保证轮训,必须记录上次访问的位置,为了让在并发情况下不出现问题,还必须在使用位置记录时进行加锁,很明显这种互斥锁增加了性能开销。
139+
由代码里可以看出来,为了保证轮询,必须记录上次访问的位置,为了让在并发情况下不出现问题,还必须在使用位置记录时进行加锁,很明显这种互斥锁增加了性能开销。
140140

141141
依旧使用上面的测试代码测试10w次请求负载情况。
142142

@@ -147,9 +147,9 @@ IP:192.168.1.5,次数:25000
147147
IP:192.168.1.4,次数:25000
148148
```
149149

150-
## 3. 轮训加权
150+
## 3. 轮询加权
151151

152-
上面演示了轮训方式,还记的一开始提出的熊4比较胖抗击打能力强,可以承受别人2倍的挨打次数嘛?上面两种方式都没有体现出来熊 4 的这个特点,熊 4 窃喜,不痛不痒。但是熊 1 到 熊 3 已经在崩溃的边缘,不行,我们必须要让胖着多打,能者多劳,提高整体性能。
152+
上面演示了轮询方式,还记的一开始提出的熊4比较胖抗击打能力强,可以承受别人2倍的挨打次数嘛?上面两种方式都没有体现出来熊 4 的这个特点,熊 4 窃喜,不痛不痒。但是熊 1 到 熊 3 已经在崩溃的边缘,不行,我们必须要让胖着多打,能者多劳,提高整体性能。
153153

154154
```java
155155
/** 服务器列表 */
@@ -197,7 +197,7 @@ IP:192.168.1.4,次数:20000
197197

198198
## 4. 随机加权
199199

200-
随机加权的方式和轮训加权的方式大致相同,只是把使用互斥锁轮训的方式换成了随机访问,按照概率论来说,访问量增多时,服务访问也会达到负载均衡。
200+
随机加权的方式和轮询加权的方式大致相同,只是把使用互斥锁轮询的方式换成了随机访问,按照概率论来说,访问量增多时,服务访问也会达到负载均衡。
201201

202202
```java
203203
/** 服务器列表 */
@@ -236,7 +236,7 @@ IP:192.168.1.4,次数:20133
236236

237237
## 5. IP-Hash
238238

239-
上面的几种方式要么使用随机数,要么使用轮训,最终都达到了请求的负载均衡。但是也有一个很明显的缺点,就是同一个用户的多次请求很有可能不是同一个服务进行处理的,这时问题来了,如果你的服务依赖于 session ,那么因为服务不同, session 也会丢失,不是我们想要的,所以出现了一种根据请求端的 ip 进行哈希计算来决定请求到哪一台服务器的方式。这种方式可以保证同一个用户的请求落在同一个服务上。
239+
上面的几种方式要么使用随机数,要么使用轮询,最终都达到了请求的负载均衡。但是也有一个很明显的缺点,就是同一个用户的多次请求很有可能不是同一个服务进行处理的,这时问题来了,如果你的服务依赖于 session ,那么因为服务不同, session 也会丢失,不是我们想要的,所以出现了一种根据请求端的 ip 进行哈希计算来决定请求到哪一台服务器的方式。这种方式可以保证同一个用户的请求落在同一个服务上。
240240

241241
```java
242242
private static List<String> serverList = new ArrayList<>();

docs/jvm/jvm-hotput.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ categories:
7777

7878
1. 实现自己的类加载器。
7979
2. 从自己的类加载器中加载要热加载的类。
80-
3. 不断轮训要热加载的类 class 文件是否有更新。
80+
3. 不断轮询要热加载的类 class 文件是否有更新。
8181
4. 如果有更新,重新加载。
8282

8383
## 4.2 自定义类加载器
@@ -249,7 +249,7 @@ public class LoadInfo {
249249

250250
## 4.4 热加载获取类信息
251251

252-
在实现思路里,我们知道轮训检查 class 文件是不是被更新过,所以每次调用要热加载的类时,我们都要进行检查类是否被更新然后决定要不要重新加载。为了方便这步的获取操作,可以使用一个简单的工厂模式进行封装。
252+
在实现思路里,我们知道轮询检查 class 文件是不是被更新过,所以每次调用要热加载的类时,我们都要进行检查类是否被更新然后决定要不要重新加载。为了方便这步的获取操作,可以使用一个简单的工厂模式进行封装。
253253

254254
要注意是加载 class 文件需要指定完整的路径,所以类中定义了 CLASS_PATH 常量。
255255

docs/mq/io-bon-blocking.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ categories:
3333
```
3434
### Java同步非阻塞模式
3535

36-
如上所述,Java的Socket是阻塞模式的典型应用。在发起`accpet()``read()`请求之后会持续阻塞,但是Java中提供了`setSoTimeout()`方法设置超时时间,在固定时间内没有得到结果,就会结束本次阻塞,等待进行下一次的阻塞轮训。这是,也就实现了应用层面的非阻塞。
36+
如上所述,Java的Socket是阻塞模式的典型应用。在发起`accpet()``read()`请求之后会持续阻塞,但是Java中提供了`setSoTimeout()`方法设置超时时间,在固定时间内没有得到结果,就会结束本次阻塞,等待进行下一次的阻塞轮询。这是,也就实现了应用层面的非阻塞。
3737

3838
Java中Socket中的`setSoTimeout()`方法:
3939
```java

docs/mq/io-nio-selector.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能
136136
3. OP_CONNECT 已经连接
137137
4. OP_ACCEPT 可以接受
138138

139-
值得注意的是,在程序中都是通过不断的轮训已经注册的Channel,根据检查注册时的感兴趣事件是否已经就绪来决定是否可以进行后续操作。同时`Selector`也有几个经常使用的方法。
139+
值得注意的是,在程序中都是通过不断的轮询已经注册的Channel,根据检查注册时的感兴趣事件是否已经就绪来决定是否可以进行后续操作。同时`Selector`也有几个经常使用的方法。
140140

141141
1. select() 阻塞到至少有一个通道在你注册的事件上就绪了。
142142

docs/springboot/springboot-04-log.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ categories:
1212
---
1313

1414
> 文章已经收录在 [Github.com/niumoo/JavaNotes](https://github.com/niumoo/JavaNotes) ,更有 Java 程序员所需要掌握的核心知识,欢迎Star和指教。
15-
> 欢迎关注我的[公众号](https://github.com/niumoo/JavaNotes#%E5%85%AC%E4%BC%97%E5%8F%B7),文章每周更新。
15+
> 欢迎关注我的[公众号](https://github.com/niumoo/JavaNotes#%E5%85%AC%E4%BC%97%E5%8F%B7),文章每周更新。
1616
1717
> 注意:本 Spring Boot 系列文章基于 Spring Boot 版本 **v2.1.1.RELEASE** 进行学习分析,版本不同可能会有细微差别。
1818

docs/tool/tool-curl.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
5---
1+
---
22
title: 可以Postman也可以cURL.进来领略下cURL的独门绝技
33
date: 2020-06-01 08:00:00
44
url: tool/curl
55
categories:
6-
- 工具
7-
- Linux
6+
- 工具
7+
- Linux
88
tags:
9-
- curl
9+
- curl
1010
---
1111

1212
> 文章已经收录在 [Github.com/niumoo/JavaNotes](https://github.com/niumoo/JavaNotes) ,更有 Java 程序员所需要掌握的核心知识,欢迎Star和指教。

0 commit comments

Comments
 (0)