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

Compare commits

...

5 Commits

Author SHA1 Message Date
guide
4451347695 [docs fix]url error 2022-08-24 11:42:30 +08:00
guide
bc5a014ef7 Merge branch 'main' of github.com:Snailclimb/JavaGuide 2022-08-24 11:39:41 +08:00
guide
b8247a3e2d Update hashmap-source-code.md 2022-08-24 11:39:12 +08:00
Guide
6bb0d809dd
Merge pull request #1805 from kuluqi163/patch-1
Update mysql-questions-01.md
2022-08-24 11:18:30 +08:00
kuluqi163
81878f36f1
Update mysql-questions-01.md
个人认为433行“非一致性锁定读”应该是笔误,应改为“一致性非锁定读”
435、436行“非一致性读”,应该改为“一致性非锁定读”或“非锁定读”
2022-08-23 11:46:55 +08:00
4 changed files with 13 additions and 16 deletions

View File

@ -56,7 +56,7 @@
- [为什么 Java 中只有值传递?](./docs/java/basis/why-there-only-value-passing-in-java.md) - [为什么 Java 中只有值传递?](./docs/java/basis/why-there-only-value-passing-in-java.md)
- [Java 序列化详解](./docs/java/basis/serialization.md) - [Java 序列化详解](./docs/java/basis/serialization.md)
- [泛型&序列化详解](./docs/java/basis/generics-and-wildcards.md) - [泛型&通配符详解](./docs/java/basis/generics-and-wildcards.md)
- [Java 反射机制详解](./docs/java/basis/reflection.md) - [Java 反射机制详解](./docs/java/basis/reflection.md)
- [Java 代理模式详解](./docs/java/basis/proxy.md) - [Java 代理模式详解](./docs/java/basis/proxy.md)
- [BigDecimal 详解](./docs/java/basis/bigdecimal.md) - [BigDecimal 详解](./docs/java/basis/bigdecimal.md)
@ -112,7 +112,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- **[类加载过程](./docs/java/jvm/class-loading-process.md)** - **[类加载过程](./docs/java/jvm/class-loading-process.md)**
- [类加载器](./docs/java/jvm/classloader.md) - [类加载器](./docs/java/jvm/classloader.md)
- [【待完成】最重要的 JVM 参数总结(翻译完善了一半)](./docs/java/jvm/jvm-parameters-intro.md) - [【待完成】最重要的 JVM 参数总结(翻译完善了一半)](./docs/java/jvm/jvm-parameters-intro.md)
- [【加餐】大白话带你认识 JVM](./docs/java/jvm/jvm-intro.md)** - [【加餐】大白话带你认识 JVM](./docs/java/jvm/jvm-intro.md)
- [JDK 监控和故障处理工具](./docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md) - [JDK 监控和故障处理工具](./docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md)
### 新特性 ### 新特性
@ -278,7 +278,6 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [JWT 优缺点分析以及常见问题解决方案](./docs/system-design/security/advantages&disadvantages-of-jwt.md) - [JWT 优缺点分析以及常见问题解决方案](./docs/system-design/security/advantages&disadvantages-of-jwt.md)
- [SSO 单点登录详解](./docs/system-design/security/sso-intro.md) - [SSO 单点登录详解](./docs/system-design/security/sso-intro.md)
- [权限系统设计详解](./docs/system-design/security/design-of-authority-system.md) - [权限系统设计详解](./docs/system-design/security/design-of-authority-system.md)
- [敏感词过滤方案总结](./docs/system-design/security/sentive-words-filter.md)
#### 数据脱敏 #### 数据脱敏
@ -287,7 +286,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
#### 敏感词过滤 #### 敏感词过滤
[敏感词过滤](./docs/system-design/security/sentive-words-filter.md) [敏感词过滤方案总结](./docs/system-design/security/sentive-words-filter.md)
### 定时任务 ### 定时任务

View File

@ -430,10 +430,10 @@ SELECT ... LOCK IN SHARE MODE
快照读的情况下,如果读取的记录正在执行 UPDATE/DELETE 操作,读取操作不会因此去等待记录上 X 锁的释放,而是会去读取行的一个快照。 快照读的情况下,如果读取的记录正在执行 UPDATE/DELETE 操作,读取操作不会因此去等待记录上 X 锁的释放,而是会去读取行的一个快照。
只有在事务隔离级别 RC(读取已提交) 和 RR可重读InnoDB 才会使用一致性锁定读: 只有在事务隔离级别 RC(读取已提交) 和 RR可重读InnoDB 才会使用一致性锁定读:
- 在 RC 级别下,对于快照数据,一致性读总是读取被锁定行的最新一份快照数据。 - 在 RC 级别下,对于快照数据,一致性非锁定读总是读取被锁定行的最新一份快照数据。
- 在 RR 级别下,对于快照数据,一致性读总是读取本事务开始时的行数据版本。 - 在 RR 级别下,对于快照数据,一致性非锁定读总是读取本事务开始时的行数据版本。
快照读比较适合对于数据一致性要求不是特别高且追求极致性能的业务场景。 快照读比较适合对于数据一致性要求不是特别高且追求极致性能的业务场景。

View File

@ -60,7 +60,7 @@ title: JavaGuideJava学习&&面试指南)
- [为什么 Java 中只有值传递?](./java/basis/why-there-only-value-passing-in-java.md) - [为什么 Java 中只有值传递?](./java/basis/why-there-only-value-passing-in-java.md)
- [Java 序列化详解](./java/basis/serialization.md) - [Java 序列化详解](./java/basis/serialization.md)
- [泛型&序列化详解](./java/basis/generics-and-wildcards.md) - [泛型&通配符详解](./java/basis/generics-and-wildcards.md)
- [Java 反射机制详解](./java/basis/reflection.md) - [Java 反射机制详解](./java/basis/reflection.md)
- [Java 代理模式详解](./java/basis/proxy.md) - [Java 代理模式详解](./java/basis/proxy.md)
- [BigDecimal 详解](./java/basis/bigdecimal.md) - [BigDecimal 详解](./java/basis/bigdecimal.md)
@ -116,7 +116,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- **[类加载过程](./java/jvm/class-loading-process.md)** - **[类加载过程](./java/jvm/class-loading-process.md)**
- [类加载器](./java/jvm/classloader.md) - [类加载器](./java/jvm/classloader.md)
- [【待完成】最重要的 JVM 参数总结(翻译完善了一半)](./java/jvm/jvm-parameters-intro.md) - [【待完成】最重要的 JVM 参数总结(翻译完善了一半)](./java/jvm/jvm-parameters-intro.md)
- [【加餐】大白话带你认识 JVM](./java/jvm/jvm-intro.md)** - [【加餐】大白话带你认识 JVM](./java/jvm/jvm-intro.md)
- [JDK 监控和故障处理工具](./java/jvm/jdk-monitoring-and-troubleshooting-tools.md) - [JDK 监控和故障处理工具](./java/jvm/jdk-monitoring-and-troubleshooting-tools.md)
### 新特性 ### 新特性
@ -282,7 +282,6 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
- [JWT 优缺点分析以及常见问题解决方案](./system-design/security/advantages&disadvantages-of-jwt.md) - [JWT 优缺点分析以及常见问题解决方案](./system-design/security/advantages&disadvantages-of-jwt.md)
- [SSO 单点登录详解](./system-design/security/sso-intro.md) - [SSO 单点登录详解](./system-design/security/sso-intro.md)
- [权限系统设计详解](./system-design/security/design-of-authority-system.md) - [权限系统设计详解](./system-design/security/design-of-authority-system.md)
- [敏感词过滤方案总结](./system-design/security/sentive-words-filter.md)
#### 数据脱敏 #### 数据脱敏
@ -290,7 +289,7 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle
#### 敏感词过滤 #### 敏感词过滤
[《敏感词过滤》](./system-design/security/sentive-words-filter.md) [敏感词过滤方案总结](./system-design/security/sentive-words-filter.md)
### 定时任务 ### 定时任务

View File

@ -274,19 +274,18 @@ final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
// (n - 1) & hash 确定元素存放在哪个桶中,桶为空,新生成结点放入桶中(此时,这个结点是放在数组中) // (n - 1) & hash 确定元素存放在哪个桶中,桶为空,新生成结点放入桶中(此时,这个结点是放在数组中)
if ((p = tab[i = (n - 1) & hash]) == null) if ((p = tab[i = (n - 1) & hash]) == null)
tab[i] = newNode(hash, key, value, null); tab[i] = newNode(hash, key, value, null);
// 桶中已经存在元素 // 桶中已经存在元素处理hash冲突
else { else {
Node<K,V> e; K k; Node<K,V> e; K k;
// 比较桶中第一个元素(数组中的结点)的hash值相等key相等 // 判断table[i]中的元素是否与插入的key一样若相同那就直接使用插入的值p替换掉旧的值e。
if (p.hash == hash && if (p.hash == hash &&
((k = p.key) == key || (key != null && key.equals(k)))) ((k = p.key) == key || (key != null && key.equals(k))))
// 将第一个元素赋值给e用e来记录
e = p; e = p;
// hash值不相等即key不相等为红黑树结 // 判断插入的是否是红黑树节
else if (p instanceof TreeNode) else if (p instanceof TreeNode)
// 放入树中 // 放入树中
e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value); e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
// 为链表结点 // 不是红黑树节点则说明为链表结点
else { else {
// 在链表最末插入结点 // 在链表最末插入结点
for (int binCount = 0; ; ++binCount) { for (int binCount = 0; ; ++binCount) {