- https://blog.csdn.net/aitaozi11/article/details/79652943 (學習Java的9張思維導圖)
文章目錄
針對技術棧學習
1. java基礎
1.1 算法
0贊, 時間復雜度均為O(n^2)
- 冒泡排序, 需要空間n + 1,; 時間復雜度比較比較需要(n + 1) * n/2; 交換最少為0, 最大為(n + 1) * n/2;
- 選擇排序, 需要空間n + 1; 比較次數: 太難算了, 是count這個數
public static void main(String[] args) {
int count = 0;
int n = 1;
for (int i = 0; i < n; i++ ){
for(int j = n; j > i; j--){
count++;
}
}
System.out.println(count);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
交換次數: n - 1
3. 直接插入排序: 比較最多: (n + 1) * n/2;
交換最多: (n + 1) * n/2;
- 106贊 (圖解算法—希爾排序)
希爾排序: 希爾排序是插入排序的變種, 邏輯間隔分組排序, 時間復雜度比較難算, 有一種分組(1, 5, 19, 41,
…)的時間復雜度為O(n^1.3); 大大的有進步, 了不起
9贊 , 直接選擇排序: 比選擇排序還是要好一點的, 是在未排序的數組中比較, 但是時間復雜度仍然是O(n^2)
講的不好, 看不懂
1贊, 圖看懂一些
46贊 , 還是上一篇1贊的寫的好一些
快速排序: 時間復雜度為O(n * log(n)), 取基准數來不斷分割數組的一種排序(分治法的思想)
20贊, 堆排序利用完全二叉樹的數據結構來排序, 分為大頂堆和小頂堆; 時間復雜度為O(n * log(n))
42贊, 歸並排序; 時間復雜度O(n * log(n)), 空間復雜度: O(n); 為穩定的排序法
2贊, 基數排序, 把數拆分成個位, 十位, 百位… 從個位到頂級位依次比較, 是一種穩定的排序算法, 時間復雜度為: O (nlog®m),其中r為所采取的基數,而m為堆數; 這里對基數和堆數的定義不明, 先放着
32贊, 比較好懂; 二叉查找樹: 根節點比左葉子要大, 比右葉子要小; 查詢的時間復雜度: O(log(n)), 極端不平衡的狀態下時間復雜度為O(n); 中序遍歷: 不懂
191贊, 中序遍歷: 左節點 -> 根節點-> 右節點的遍歷
- 紅黑樹特性:
1.1. 根節點為黑色
1.2. 節點有兩種可能顏色, 黑色; 紅色;
1.3. 一個紅黑樹中, 任意根節點到葉子節點的路徑上黑節點的數量相等
1.4. 根節點為nil時為黑色
1.5. 紅色節點的兩個子節點必然為黑色- 應用場景: TreeSet,TreeMap
- 時間復雜度: O(log(n))
1.2 基本
2贊, 沒用, 實在是他娘的看不懂
106贊
1.3 設計模式
- 單例模式: 餓漢模式天生線程安全; 2. 在多線程中懶漢模式需要點操作來保證線程安全; 3. 使用場景: 對有限資源的使用, 比如打印機
1.4 正則表達式
1.5 java內存模型以及垃圾回收算法
65贊, 有點復雜, java虛擬機分為
111贊, 太長了, 吃不消看; 前面部分講的跟樓上是一樣的
2. web方面
2.1 SpringMVC的架構設計
3贊, 太復雜, 看不懂
5贊, 1. 純servlet -> 2. 純jsp -> 3. jsp + javaBean -> 4. jsp + javaBean + servlet (也就是MVC模式);
2.2 SpringAOP源碼
2.3 Spring事務體系源碼以及分布式事務Jotm Atomikos源碼實現
2.4 數據庫隔離級別
2.5 數據庫
2.6 ORM框架: mybatis、Hibernate
2.7 SpringSecurity、shiro、SSO(單點登錄)
2.8 日志
log4j, log4j2, jul, logback 都是日志的具體實現, 而common-logging(動態)和slf4j(靜態)則是作為門面來使用
16年的文章, 日志可記錄在控制台, 文件, 數據庫, 也可配置日志記錄級別, 定時記錄日志.
2.9 datasource
3贊, 每次請求連接數據庫耗時大約為140ms, 而使用連接池耗時大約10-20ms
2.10 HTTPS的實現原理
拜阮一峰大神, 用於加密通訊;
1.針對問題 = > 解決方法:
__1.1. 竊聽 => 加密傳播
__1.2. 篡改 => 校驗機制
__1.3. 冒充 => 身份證書
2. 握手增加到4次
3. 分布式、java中間件、web服務器等方面
3.1 ZooKeeper源碼
3.2 序列化和反序列化框架
3.9 web服務器tomcat、ngnix的設計原理
17贊, 看不懂, 沒用
0贊, tomcat7默認使用bio, 默認並發150個線程; tomcat8之后默認使用nio, 基於緩沖區的io;
當並發超過250個時應考慮集群; apr是異步非阻塞, nio是同步非阻塞, bio是同步阻塞
2贊, 看不懂
對上文一坨文字的解釋, 做了一個圖來表示, servlet作為最內層被包裝的對象; 其他沒看懂, 估計是做了層層處理
