docs: 链接修正

This commit is contained in:
Guide 2025-08-07 16:13:02 +08:00
parent c366ac16ea
commit 0bcf17fdc3
4 changed files with 14 additions and 22 deletions

View File

@ -285,11 +285,11 @@ Linux 中的打包文件一般是以 `.tar` 结尾的,压缩的命令一般是
需要注意的是:**超级用户可以无视普通用户的权限,即使文件目录权限是 000依旧可以访问。**
**在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。**
**在 Linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。**
- **所有者(u)**:一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用 `ls ahl` 命令可以看到文件的所有者 也可以使用 chown 用户名 文件名来修改文件的所有者 。
- **文件所在组(g)**:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组用 `ls ahl`命令可以看到文件的所有组也可以使用 chgrp 组名 文件名来修改文件所在的组。
- **其它组(o)**:除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
- **所有者(u)** :一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用 `ls ahl` 命令可以看到文件的所有者 也可以使用 chown 用户名 文件名来修改文件的所有者 。
- **文件所在组(g)** :当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组用 `ls ahl`命令可以看到文件的所有组也可以使用 chgrp 组名 文件名来修改文件所在的组。
- **其它组(o)** :除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
> 我们再来看看如何修改文件/目录的权限。

View File

@ -160,8 +160,6 @@ Java 线程状态变迁图(图源:[挑错 |《Java 并发编程的艺术》中
- 当线程进入 `synchronized` 方法/块或者调用 `wait` 后(被 `notify`)重新进入 `synchronized` 方法/块,但是锁被其它线程占有,这个时候线程就会进入 **BLOCKED阻塞** 状态。
- 线程在执行完了 `run()`方法之后将会进入到 **TERMINATED终止** 状态。
相关阅读:[线程的几种状态你真的了解么?](https://mp.weixin.qq.com/s/R5MrTsWvk9McFSQ7bS0W2w) 。
### 什么是线程上下文切换?
线程在执行过程中会有自己的运行条件和状态(也称上下文),比如上文所说到过的程序计数器,栈信息等。当出现如下情况的时候,线程会从占用 CPU 状态中退出。
@ -405,14 +403,4 @@ Process finished with exit code 0
线程 1 首先获得到 resource1 的监视器锁,这时候线程 2 就获取不到了。然后线程 1 再去获取 resource2 的监视器锁,可以获取到。然后线程 1 释放了对 resource1、resource2 的监视器锁的占用,线程 2 获取到就可以执行了。这样就破坏了循环等待条件,因此避免了死锁。
## 虚拟线程
虚拟线程在 Java 21 正式发布,这是一项重量级的更新。我写了一篇文章来总结虚拟线程常见的问题:[虚拟线程常见问题总结](./virtual-thread.md),包含下面这些问题:
1. 什么是虚拟线程?
2. 虚拟线程和平台线程有什么关系?
3. 虚拟线程有什么优点和缺点?
4. 如何创建虚拟线程?
5. 虚拟线程的底层原理是什么?
<!-- @include: @article-footer.snippet.md -->

View File

@ -16,7 +16,7 @@ head:
## ⭐JMM(Java 内存模型)
JMMJava 内存模型)相关的问题比较多,也比较重要,于是我单独抽了一篇文章来总结 JMM 相关的知识点和问题:[JMMJava 内存模型)详解](./jmm.md) 。
JMMJava 内存模型)相关的问题比较多,也比较重要,于是我单独抽了一篇文章来总结 JMM 相关的知识点和问题:[JMMJava 内存模型)详解](https://javaguide.cn/java/concurrent/jmm.html) 。
## ⭐volatile 关键字

View File

@ -773,7 +773,7 @@ CPU 密集型简单理解就是利用 CPU 计算能力的任务比如你在内
![动态配置线程池参数最终效果](https://oss.javaguide.cn/github/javaguide/java/concurrent/meituan-dynamically-configuring-thread-pool-parameters.png)
还没看够?我在[《后端面试高频系统设计&场景题》](https://javaguide.cn/zhuanlan/back-end-interview-high-frequency-system-design-and-scenario-questions.html#%E4%BB%8B%E7%BB%8D)中详细介绍了如何设计一个动态线程池,这也是面试中常问的一道系统设计题。
还没看够?我在[《后端面试高频系统设计&场景题》](https://javaguide.cn/zhuanlan/back-end-interview-high-frequency-system-design-and-scenario-questions.html)中详细介绍了如何设计一个动态线程池,这也是面试中常问的一道系统设计题。
![《后端面试高频系统设计&场景题》](https://oss.javaguide.cn/xingqiu/back-end-interview-high-frequency-system-design-and-scenario-questions-fengmian.png)
@ -815,7 +815,7 @@ CPU 密集型简单理解就是利用 CPU 计算能力的任务比如你在内
重点是要掌握 `CompletableFuture` 的使用以及常见面试题。
除了下面的面试题之外,还推荐你看看我写的这篇文章: [CompletableFuture 详解](./completablefuture-intro.md)。
除了下面的面试题之外,还推荐你看看我写的这篇文章: [CompletableFuture 详解](https://javaguide.cn/java/concurrent/completablefuture-intro.html)。
### Future 类有什么用?
@ -975,7 +975,7 @@ CompletableFuture.runAsync(() -> {
## AQS
关于 AQS 源码的详细分析,可以看看这一篇文章:[AQS 详解](./aqs.md)。
关于 AQS 源码的详细分析,可以看看这一篇文章:[AQS 详解](https://javaguide.cn/java/concurrent/aqs.html)。
### AQS 是什么?
@ -1349,9 +1349,13 @@ public int await() throws InterruptedException, BrokenBarrierException {
## 虚拟线程
虚拟线程在 Java 21 正式发布,这是一项重量级的更新。
虚拟线程在 Java 21 正式发布,这是一项重量级的更新。虽然目前面试中问的不多,但还是建议大家去简单了解一下。我写了一篇文章来总结虚拟线程常见的问题:[虚拟线程常见问题总结](https://javaguide.cn/java/concurrent/virtual-thread.html),包含下面这些问题:
虽然目前面试中问的不多,但还是建议大家去简单了解一下,具体可以阅读这篇文章:[虚拟线程极简入门](./virtual-thread.md) 。重点搞清楚虚拟线程和平台线程的关系以及虚拟线程的优势即可。
1. 什么是虚拟线程?
2. 虚拟线程和平台线程有什么关系?
3. 虚拟线程有什么优点和缺点?
4. 如何创建虚拟线程?
5. 虚拟线程的底层原理是什么?
## 参考