本文首發於cartoon的博客
轉載請註明出處:https://cartoonyu.github.io/c...java
數據結構
-
B+樹的特色git
- B+樹全部數據都在葉子結點,非葉子結點只存儲數據的索引
- 葉子結點間造成鏈表,範圍查詢相對於B樹減小了檢索的次數
- 全部非葉子結點都同時存在與子節點,都是子節點的端口元素
-
跳錶的瞭解github
- 採用以空間換時間的思路實現查詢速度的提升
- 應用在Redis的有序集合上
-
操做算法
-
查詢sql
- 應用多級索引進行值的比對以及層數的下沉,進而減小了遍歷節點的次數
-
插入數據庫
- 拋硬幣得出插入元素插入索引的層數
- 將插入元素按順序插入到最底層的鏈表中
-
刪除元素編程
- 刪除各層包括刪除元素的結點
-
時間複雜度設計模式
- O(log n)
數據庫
-
Mysql索引的瞭解網絡
-
目的數據結構
- 爲了加快等值查詢以及範圍查詢的速度
-
分類
- 主鍵索引
- 普通索引
- 惟一索引
- 全文索引
- 多列索引
- 組合索引
-
實現
- B+樹
- B樹
- Hash樹
-
Mysql查詢條件帶索引的查詢語句的執行流程
-
MySQL5.6以前
- 最左前綴查找符合條件的第一個索引列值
- 回表到主鍵索引樹查找符合條件的結果集合
-
MySQL5.6以後
- 最左前綴查找符合條件的第一個索引列值
- 索引下推查找符合條件的下一索引值
- 回表到主鍵索引樹查找符合條件的結果集合
網絡
-
混合加密的原理以及使用場景
- 使用非對稱加密利用隨機數產生的公鑰
- 公鑰傳輸完成並解密後傳輸的雙方採用對稱加密的方式傳輸數據
-
解決問題
- 對稱加密中公鑰的傳輸問題
- 減小傳輸中使用非對稱加密中加解密的時間
java
-
靜態代理與動態代理的區別
- 靜態代理與動態代理都是代理模式的一種實現
-
區別
-
確立對象方面
- 靜態代理在編譯時已經確立好代理對象的類型
- 動態代理在運行時採用反射機制動態建立對象
-
特色
- 靜態代理編碼相對簡單,並且實際運行速度會比動態代理快
- 動態代碼能夠有效解決多對象代理編碼重複性的問題
Spring
-
AOP的概念瞭解
- AOP是Spring Framework的一個重要模塊,基於Core模塊進行實現
- AOP緩解了原來OOP編程的不一樣功能之間的代碼耦合問題,將原來順序化執行的程序看做一個個切面
-
底層實現
- 在字節碼層面上進行代理的實現
-
使用JDK動態代理或者cglib代理
- JDK動態代理中代理類必須實現接口
- cglib代理不須要接口,更靈活
-
Spring MVC的運行流程
-
Spring MVC組件
-
視圖解析組件
- ThemeResolver
- LocaleResolver
- ViewResolver
-
處理類組件
- HandlerAdapter
- HandlerExceptionResolver
- RequestToViewNameResolver
- MuitipartResolver
-
管理類
- HandlerMapping
- FlashResolver
-
步驟
- 請求到達DispatchServlet
-
DispatchServlet調用HandlerMapping查找處理的Controller
- 若查找的url修飾的方法不符合Spring的要求,則調用HandlerAdapter進行請求的轉換
- 若分發過程出錯,調用HandlerExceptionResolver進行異常處理
- Controller調用Service進行業務邏輯的處理,Service返回結果,Controller利用RequestToViewNameResolver進行結果的包裝,並返回ModelAndView對象到DispatchServlet
- DispatchServlet分發ModelAndView到視圖渲染器
-
視圖渲染器根據ModelAndView調用ViewResolver進行視圖的渲染以及數據的填充
- 若請求帶有對國際化的處理,調用LocaleResolver進行渲染
- 若請求帶有不一樣主題的切換,調用ThemeResolver進行渲染
- 視圖渲染返回頁面到DispatchServlet,DispatchServlet返回頁面到請求方
操做系統
- I/O的控制方式
- 程序直接控制
- 中斷控制
- 直接內存存取方式
- 通道控制方式
設計模式
- 單例模式的四種實現
- 餓漢式
- 類加載時已經初始化對象
- 懶漢式
- 調用newInstance方法時初始化對象
- DCL式
- 雙重加鎖檢查對象
- 靜態內部類
算法
- 530. 二叉搜索樹的最小絕對差