diff --git a/README.md b/README.md index 9d95af829c4..1e42cb48db7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ 👍推荐: [我花了半个月写的 2021 最新版 Java学习路线!](https://www.zhihu.com/question/56110328/answer/869069586) +👍推荐: [程序员简历应该怎么写?](https://www.zhihu.com/question/25002833/answer/1869131751) + 👍推荐 [在线阅读](https://snailclimb.gitee.io/javaguide) (Github 访问速度比较慢可能会导致部分图片无法刷新出来) 👍推荐[2021最新实战项目源码下载](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=100018862&idx=1&sn=858e00b60c6097e3ba061e79be472280&chksm=4ea1856579d60c73224e4d852af6b0188c3ab905069fc28f4b293963fd1ee55d2069fb229848#rd) diff --git a/docs/database/MySQL.md b/docs/database/MySQL.md index 0bf562e8e3d..afac23963b3 100644 --- a/docs/database/MySQL.md +++ b/docs/database/MySQL.md @@ -130,9 +130,9 @@ MVCC 可以看作是行级锁的一个升级,可以有效减少加锁操作, **InnoDB 存储引擎的锁的算法有三种:** -- Record lock:单个行记录上的锁 +- Record lock:记录锁,单个行记录上的锁 - Gap lock:间隙锁,锁定一个范围,不包括记录本身 -- Next-key lock:record+gap 锁定一个范围,包含记录本身 +- Next-key lock:record+gap临键锁,锁定一个范围,包含记录本身 ## 查询缓存 @@ -281,4 +281,4 @@ InnoDB 存储引擎在 **分布式事务** 的情况下一般会用到 **SERIALI - 《高性能 MySQL》 -- https://www.omnisci.com/technical-glossary/relational-database \ No newline at end of file +- https://www.omnisci.com/technical-glossary/relational-database diff --git "a/docs/java/basis/IO\346\250\241\345\236\213.md" "b/docs/java/basis/IO\346\250\241\345\236\213.md" index 70a0d8078f3..243fdc00107 100644 --- "a/docs/java/basis/IO\346\250\241\345\236\213.md" +++ "b/docs/java/basis/IO\346\250\241\345\236\213.md" @@ -1,4 +1,4 @@ -IO 模型这块确实挺难理解的,需要太多计算机底层知识。写这篇文章用了挺久,就非常希望能把我所知道的讲出来吧!希望朋友们能有收货!为了写这篇文章,还翻看了一下《UNIX 网络编程》这本书,太难了,我滴乖乖!心痛~ +IO 模型这块确实挺难理解的,需要太多计算机底层知识。写这篇文章用了挺久,就非常希望能把我所知道的讲出来吧!希望朋友们能有收获!为了写这篇文章,还翻看了一下《UNIX 网络编程》这本书,太难了,我滴乖乖!心痛~ _个人能力有限。如果文章有任何需要补充/完善/修改的地方,欢迎在评论区指出,共同进步!_ @@ -119,4 +119,4 @@ AIO 也就是 NIO 2。Java 7 中引入了 NIO 的改进版 NIO 2,它是异步 IO - 程序员应该这样理解 IO:[https://www.jianshu.com/p/fa7bdc4f3de7](https://www.jianshu.com/p/fa7bdc4f3de7) - 10 分钟看懂, Java NIO 底层原理:https://www.cnblogs.com/crazymakercircle/p/10225159.html - IO 模型知多少 | 理论篇:https://www.cnblogs.com/sheng-jie/p/how-much-you-know-about-io-models.html -- 《UNIX 网络编程 卷 1;套接字联网 API 》6.2 节 IO 模型 \ No newline at end of file +- 《UNIX 网络编程 卷 1;套接字联网 API 》6.2 节 IO 模型 diff --git "a/docs/java/collection/Java\351\233\206\345\220\210\346\241\206\346\236\266\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" "b/docs/java/collection/Java\351\233\206\345\220\210\346\241\206\346\236\266\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" index 2dc5a04d8d7..9cc5b54f057 100644 --- "a/docs/java/collection/Java\351\233\206\345\220\210\346\241\206\346\236\266\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" +++ "b/docs/java/collection/Java\351\233\206\345\220\210\346\241\206\346\236\266\345\270\270\350\247\201\351\235\242\350\257\225\351\242\230.md" @@ -116,7 +116,7 @@ 2. **底层数据结构:** `Arraylist` 底层使用的是 **`Object` 数组**;`LinkedList` 底层使用的是 **双向链表** 数据结构(JDK1.6 之前为循环链表,JDK1.7 取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!) 3. **插入和删除是否受元素位置的影响:** - `ArrayList` 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行`add(E e)`方法的时候, `ArrayList` 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是 O(1)。但是如果要在指定位置 i 插入和删除元素的话(`add(int index, E element)`)时间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。 - - `LinkedList` 采用链表存储,所以对于`add(E e)`方法的插入,删除元素时间复杂度不受元素位置的影响,近似 O(1),如果是要在指定位置 `i` 插入和删除元素的话(`(add(int index, E element)`) 时间复杂度近似为 O(n) ,因为需要先移动到指定位置再插入。 + - `LinkedList` 采用链表存储,所以,如果是在头尾插入或者删除元素不受元素位置的影响(`add(E e)`、`addFirst(E e)`、`addLast(E e)`、`removeFirst()` 、 `removeLast()`),近似 O(1),如果是要在指定位置 `i` 插入和删除元素的话(`add(int index, E element)`,`remove(Object o)`) 时间复杂度近似为 O(n) ,因为需要先移动到指定位置再插入。 4. **是否支持快速随机访问:** `LinkedList` 不支持高效的随机元素访问,而 `ArrayList` 支持。快速随机访问就是通过元素的序号快速获取元素对象(对应于`get(int index)`方法)。 5. **内存空间占用:** ArrayList 的空 间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而 LinkedList 的空间花费则体现在它的每一个元素都需要消耗比 ArrayList 更多的空间(因为要存放直接后继和直接前驱以及数据)。