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

Compare commits

..

8 Commits

Author SHA1 Message Date
Guide
0ce0cb559a
Merge pull request #1830 from SiQuan77/patch-1
希尔排序的空间复杂度有误
2022-09-23 20:53:51 +08:00
Guide
694093da06
Merge pull request #1829 from willseeyou/patch-2
修改错别字
2022-09-23 20:11:44 +08:00
Guide
ac944b9247
Merge pull request #1828 from willseeyou/patch-1
删除重复字“开发发者“
2022-09-23 20:11:14 +08:00
Guide
bcf643ef21
Merge pull request #1827 from ImCa0/patch-1
fix: typo
2022-09-23 20:10:54 +08:00
chensiquan
e68cb18e35
希尔排序的空间复杂度有误
希尔排序的空间复杂度应该是O(1)吧,并没有用到额外的空间,都是在原数组上进行操作。
2022-09-22 15:40:30 +08:00
Amos Chu
41f539f83d
修改错别字 2022-09-22 14:00:03 +08:00
Amos Chu
20d4644d23
删除重复字“开发发者“ 2022-09-22 08:36:40 +08:00
ImCaO
88e0948404
Update mysql-questions-01.md 2022-09-21 21:10:01 +08:00
4 changed files with 5 additions and 5 deletions

View File

@ -259,7 +259,7 @@ public static int[] shellSort(int[] arr) {
- **稳定性**:稳定
- **时间复杂度** 最佳O(nlogn) 最差O(n2) 平均O(nlogn)
- **空间复杂度** `O(n)`
- **空间复杂度** `O(1)`
## 归并排序 (Merge Sort)

View File

@ -381,7 +381,7 @@ SELECT ... FOR UPDATE;
意向锁是表级锁,共有两种:
- **意向共享锁Intention Shared LockIS 锁)**事务有意向对表中的某些加共享锁S 锁),加共享锁前必须先取得该表的 IS 锁。
- **意向共享锁Intention Shared LockIS 锁)**:事务有意向对表中的某些记录加共享锁S 锁),加共享锁前必须先取得该表的 IS 锁。
- **意向排他锁Intention Exclusive LockIX 锁)**事务有意向对表中的某些记录加排他锁X 锁),加排他锁之前必须先取得该表的 IX 锁。
意向锁是有数据引擎自己维护的,用户无法手动操作意向锁,在为数据行加共享 / 排他锁之前InooDB 会先获取该数据行所在在数据表的对应意向锁。

View File

@ -104,7 +104,7 @@ AOT 可以提前编译节省启动时间,那为什么不全部使用这种编
1. Oracle JDK 大概每 6 个月发一次主要版本(从 2014 年 3 月 JDK 8 LTS 发布到 2017 年 9 月 JDK 9 发布经历了长达 3 年多的时间,所以并不总是 6 个月),而 OpenJDK 版本大概每三个月发布一次。但这不是固定的,我觉得了解这个没啥用处。详情参见:[https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence](https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence) 。
2. OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是 OpenJDK 的一个实现并不是完全开源的个人观点众所周知JDK 原来是 SUN 公司开发的,后来 SUN 公司又卖给了 Oracle 公司Oracle 公司以 Oracle 数据库而著名,而 Oracle 数据库又是闭源的,这个时候 Oracle 公司就不想完全开源了,但是原来的 SUN 公司又把 JDK 给开源了,如果这个时候 Oracle 收购回来之后就把他给闭源,必然会引很多 Java 开发者的不满,导致大家对 Java 失去信心,那 Oracle 公司收购回来不就把 Java 烂在手里了吗然后Oracle 公司就想了个骚操作,这样吧,我把一部分核心代码开源出来给你们玩,并且我要和你们自己搞的 JDK 区分下,你们叫 OpenJDK我叫 Oracle JDK我发布我的你们继续玩你们的要是你们搞出来什么好玩的东西我后续发布 Oracle JDK 也会拿来用一下一举两得OpenJDK 开源项目:[https://github.com/openjdk/jdk](https://github.com/openjdk/jdk)
2. OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是 OpenJDK 的一个实现并不是完全开源的个人观点众所周知JDK 原来是 SUN 公司开发的,后来 SUN 公司又卖给了 Oracle 公司Oracle 公司以 Oracle 数据库而著名,而 Oracle 数据库又是闭源的,这个时候 Oracle 公司就不想完全开源了,但是原来的 SUN 公司又把 JDK 给开源了,如果这个时候 Oracle 收购回来之后就把他给闭源,必然会引很多 Java 开发者的不满,导致大家对 Java 失去信心,那 Oracle 公司收购回来不就把 Java 烂在手里了吗然后Oracle 公司就想了个骚操作,这样吧,我把一部分核心代码开源出来给你们玩,并且我要和你们自己搞的 JDK 区分下,你们叫 OpenJDK我叫 Oracle JDK我发布我的你们继续玩你们的要是你们搞出来什么好玩的东西我后续发布 Oracle JDK 也会拿来用一下一举两得OpenJDK 开源项目:[https://github.com/openjdk/jdk](https://github.com/openjdk/jdk)
3. Oracle JDK 比 OpenJDK 更稳定肯定啦Oracle JDK 由 Oracle 内部团队进行单独研发的,而且发布时间比 OpenJDK 更长质量更有保障。OpenJDK 和 Oracle JDK 的代码几乎相同OpenJDK 的代码是从 Oracle JDK 代码派生出来的,可以理解为在 Oracle JDK 分支上拉了一条新的分支叫 OpenJDK所以大部分代码相同但 Oracle JDK 有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择 Oracle JDK因为它经过了彻底的测试和稳定。某些情况下有些人提到在使用 OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到 Oracle JDK 就可以解决问题;

View File

@ -71,7 +71,7 @@ Java 是最早尝试提供内存模型的编程语言。由于早期内存模型
**为什么要遵守这些并发相关的原则和规范呢?** 这是因为并发编程下,像 CPU 多级缓存和指令重排这类设计可能会导致程序运行出现一些问题。就比如说我们上面提到的指令重排序就可能会让多线程程序的执行出现问题为此JMM 抽象了 happens-before 原则(后文会详细介绍到)来解决这个指令重排序问题。
JMM 说白了就是定义了一些规范来解决这些问题,开发者可以利用这些规范更方便地开发多线程程序。对于 Java 开发者说,你不需要了解底层原理,直接使用并发相关的一些关键字和类(比如 `volatile``synchronized`、各种 `Lock`)即可开发出并发安全的程序。
JMM 说白了就是定义了一些规范来解决这些问题,开发者可以利用这些规范更方便地开发多线程程序。对于 Java 开发者说,你不需要了解底层原理,直接使用并发相关的一些关键字和类(比如 `volatile``synchronized`、各种 `Lock`)即可开发出并发安全的程序。
### JMM 是如何抽象线程和主内存之间的关系?