diff --git a/docs/basic-grammar/type-cast.md b/docs/basic-grammar/type-cast.md index 54dce72410c7fff3d6a4089636e1048354be671f..3283bffb2b4152650b7f0a04b257c119f5031548 100644 --- a/docs/basic-grammar/type-cast.md +++ b/docs/basic-grammar/type-cast.md @@ -24,9 +24,9 @@ head: 自动类型转换(自动类型提升)是 Java 编译器在不需要显式转换的情况下,将一种基本数据类型自动转换为另一种基本数据类型的过程。这种转换通常发生在表达式求值期间,当不同类型的数据需要相互兼容时。自动类型转换遵循以下规则: -- 如果任何操作数是 double 类型,其他操作数将被转换为 double 类型。 -- 否则,如果任何操作数是 float 类型,其他操作数将被转换为 float 类型。 -- 否则,如果任何操作数是 long 类型,其他操作数将被转换为 long 类型。 +- 如果任一操作数是 double 类型,其他操作数将被转换为 double 类型。 +- 否则,如果任一操作数是 float 类型,其他操作数将被转换为 float 类型。 +- 否则,如果任一操作数是 long 类型,其他操作数将被转换为 long 类型。 - 否则,所有操作数将被转换为 int 类型。 需要注意的是,自动类型转换只发生在兼容类型之间。例如,从较小的数据类型(如 int)到较大的数据类型(如 long 或 double)的转换是安全的,因为较大的数据类型可以容纳较小数据类型的所有可能值。 diff --git a/docs/nice-article/itmind/shangwang.md b/docs/nice-article/itmind/shangwang.md index 2d7248664530b2dc2fc894bc0174a8d041e14c4d..02d2d8da62d4326d8f7ade5bd970dc80edde3f41 100644 --- a/docs/nice-article/itmind/shangwang.md +++ b/docs/nice-article/itmind/shangwang.md @@ -20,7 +20,7 @@ Google>Bing>微信搜索>百度搜索 我个人一般是这样的一个排序规则,没有歧视啊(注意,真的没有「认真脸」)。 -那要想使用 Google,就必须得学会咳血上网。有些互联网公司的 VPN 会自带咳血上网的功能,有些大学也会,如果公司/大学没有提供 VPN,可以参照这篇。 +那要想使用 Google,就必须得学会内网穿透。有些互联网公司的 VPN 会自带咳血上网的功能,有些大学也会,如果公司/大学没有提供 VPN,可以参照这篇。 ## 下载安装 Clash @@ -39,17 +39,13 @@ macOS 直接双击打开 dmg 文件进行安装。 ## 购买服务 -我选用的都是付费版本,这样觉得踏实稳定一些。 +我选用的都是付费版本,这样觉得踏实稳定一些,另外下面这些地址仅供学习使用,请勿传播,也不保证长期有效,地址也会不定期变更(你懂的) ->PS:地址会不定期变更(你懂的) +### 服务 1:wgetcloud -### 服务 1:饿饭 cc 云服务 - -你可以通过以下地址购买饿饭 cc 云服务: - -[https://api.efanapi.com/aff.php?aff=2849](https://api.efanapi.com/aff.php?aff=2849) +有个读者推荐我用这个,说比较稳定,GPT 不会封号,最近用了俩月,就是有点贵,一个月五六十,没有前面几个便宜,但好像确实是稳定一些。 -我采购的是 B 计划 20G流量 每月,三年价格 330RMB。 +[https://invite.wgetcloud.ltd/auth/register?code=c3Y0](https://invite.wgetcloud.ltd/auth/register?code=c3Y0) ### 服务 2:树洞 @@ -69,11 +65,6 @@ macOS 直接双击打开 dmg 文件进行安装。 自己按需购买即可。 -### 服务 4:wgetcloud - -有个读者推荐我用这个,说比较稳定,GPT 不会封号,最近用了俩月,就是有点贵,一个月五六十,没有前面几个便宜,但好像确实是稳定一些。 - -[https://invite.wgetcloud.ltd/auth/register?code=c3Y0](https://invite.wgetcloud.ltd/auth/register?code=c3Y0) ## 配置服务 diff --git a/docs/thread/condition.md b/docs/thread/condition.md index 342ad900aa8bc65bd895e450f30099b466d3f7d2..c54857704750d2981d866bfde3426cbc8df49d1c 100644 --- a/docs/thread/condition.md +++ b/docs/thread/condition.md @@ -68,7 +68,9 @@ public class ReentrantLock implements Lock, java.io.Serializable { } ``` -在锁机制的实现上,AQS 内部维护了一个同步队列,如果是独占式锁的话,所有获取锁失败的线程的尾插入到**同步队列**,同样的,condition 内部也是使用同样的方式,内部维护了一个 **等待队列**,所有调用 condition.await 方法的线程会加入到等待队列中,并且线程状态转换为等待状态。另外注意到 ConditionObject 中有两个成员变量: +AQS 内部维护了一个同步队列,如果是独占式锁的话,所有获取锁失败的线程会尾插入到**同步队列**,同样的,Condition 内部也使用了同样的方式,内部维护了一个 **等待队列**,所有调用 await 方法的线程会加入到等待队列中,并且线程状态转换为等待状态。 + +注意,ConditionObject 中有两个成员变量: ```java /** First node of condition queue. */ @@ -77,7 +79,7 @@ private transient Node firstWaiter; private transient Node lastWaiter; ``` -这样我们就可以看出来 ConditionObject 通过持有等待队列的头尾指针来管理等待队列。Node 类有这样一个属性: +可以看的出来,ConditionObject 是通过持有等待队列的头尾指针来管理等待队列的。Node 类中有这样一个属性: ```java //后继节点