1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-14 05:21:42 +08:00

Compare commits

...

7 Commits

Author SHA1 Message Date
Guide
7f9a642709
Merge pull request #1854 from liubobo1996/main
Update osi&tcp-ip-model.md
2022-10-27 22:06:33 +08:00
Guide
317c3ee7d5
Merge pull request #1853 from Blackcat308/patch-1
Update jmm.md
2022-10-27 22:03:26 +08:00
Guide
8c55d667c9
Merge pull request #1852 from hyl1995/patch-1
Update java-thread-pool-summary.md
2022-10-27 22:02:56 +08:00
liubobo
4f498512cc
Update tcp-connection-and-disconnection.md 2022-10-27 21:18:16 +08:00
liubobo
85ed706567
Update osi&tcp-ip-model.md 2022-10-27 17:41:18 +08:00
LaoCat
b177fd8457
Update jmm.md
修改语病。
2022-10-27 13:50:01 +08:00
hyl1995
c33082d55a
Update java-thread-pool-summary.md
修正部分错误文字说明
2022-10-27 11:44:04 +08:00
4 changed files with 7 additions and 7 deletions

View File

@ -80,7 +80,7 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
这里强调指出,网络层中的“网络”二字已经不是我们通常谈到的具体网络,而是指计算机网络体系结构模型中第三层的名称。
互联网是由大量的异构heterogeneous网络通过路由器router相互连接起来的。互联网使用的网络层协议是无连接的网际协议Intert Prococol和许多路由选择协议因此互联网的网络层也叫做 **网际层****IP 层**
互联网是由大量的异构heterogeneous网络通过路由器router相互连接起来的。互联网使用的网络层协议是无连接的网际协议Internet Prococol和许多路由选择协议因此互联网的网络层也叫做 **网际层****IP 层**
![网络层重要协议](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/cs-basics/network/nerwork-layer-protocol.png)

View File

@ -28,7 +28,7 @@ tag:
2. **第二次握手** Client 确认了自己发送、接收正常对方发送、接收正常Server 确认了:对方发送正常,自己接收正常
3. **第三次握手** Client 确认了自己发送、接收正常对方发送、接收正常Server 确认了:自己发送、接收正常,对方发送、接收正常
三次握手就能确认双收发功能都正常,缺一不可。
三次握手就能确认双收发功能都正常,缺一不可。
更详细的解答可以看这个:[TCP 为什么是三次握手,而不是两次或四次? - 车小胖的回答 - 知乎](https://www.zhihu.com/question/24853633/answer/115173386) 。
@ -88,4 +88,4 @@ TCP是全双工通信可以双向传输数据。任何一方都可以在数
- TCP and UDP Tutorialhttps://www.9tut.com/tcp-and-udp-tutorial

View File

@ -325,14 +325,14 @@ pool-1-thread-2 End. Time = Sun Apr 12 11:14:47 CST 2020
int c = ctl.get();
// 下面会涉及到 3 步 操作
// 1.首先判断当前线程池中行的任务数量是否小于 corePoolSize
// 1.首先判断当前线程池中行的任务数量是否小于 corePoolSize
// 如果小于的话通过addWorker(command, true)新建一个线程,并将任务(command)添加到该线程中;然后,启动该线程从而执行任务。
if (workerCountOf(c) < corePoolSize) {
if (addWorker(command, true))
return;
c = ctl.get();
}
// 2.如果当前行的任务数量大于等于 corePoolSize 的时候就会走到这里
// 2.如果当前行的任务数量大于等于 corePoolSize 的时候就会走到这里
// 通过 isRunning 方法判断线程池状态,线程池处于 RUNNING 状态并且队列可以加入任务,该任务才会被加入进去
if (isRunning(c) && workQueue.offer(command)) {
int recheck = ctl.get();
@ -394,7 +394,7 @@ pool-1-thread-2 End. Time = Sun Apr 12 11:14:47 CST 2020
for (;;) {
//获取线程池中工作的线程的数量
int wc = workerCountOf(c);
// core参数为true的话表明队列也满了线程池大小变为 maximumPoolSize
// core参数为false的话表明队列也满了线程池大小变为 maximumPoolSize
if (wc >= CAPACITY ||
wc >= (core ? corePoolSize : maximumPoolSize))
return false;

View File

@ -18,7 +18,7 @@ head:
**为什么要弄一个 CPU 高速缓存呢?** 类比我们开发网站后台系统使用的缓存(比如 Redis是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。 **CPU 缓存则是为了解决 CPU 处理速度和内存处理速度不对等的问题。**
我们甚至可以把 **内存可以看作外存的高速缓存**,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。
我们甚至可以把 **内存看作外存的高速缓存**,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。
总结:**CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。**