原创 完全二叉堆及典型應用
一、關於最大值數據結構的比較 獲取最大值的平均時間複雜度 刪除最大值的平均時間複雜度 尾部添加元素的平均時間複雜度 動態數組 O(N) O(N) O(1) 雙向鏈表 O(N) O(N) O(1) 平衡的二叉搜索樹
原创 重寫PriorityQueue
PriorityQueue其實就是優先隊列。 一、優先隊列簡介 普通的隊列就是FIFO(先進先出),而優先級隊列是按照優先級的高低依次出隊的,而且每次出隊的時候會將優先級最高的元素作爲隊頭優先出隊。
原创 字典樹---Trie
一、字典樹簡介 Trie也叫做字典樹、前綴樹、單詞查找樹。 Trie搜索字符串的效率主要跟字符串的長度有關。 前綴搜索的時候,用Trie就是典型的空間換時間,差不多一個字符需要一個結
原创 哈夫曼樹(HuffmanTree)
一、哈夫曼樹簡介 1、構建哈夫曼樹 計算每個字符出現的概率,將這個概率做爲權值之比。 利用這些帶權值的字符構建出哈夫曼樹。 具體構建步驟: ① 首先以每個帶權
原创 重寫HashMap和LinkedHashMap
一、TreeMap和HashMap比較 TreeMap HashMap 增加的平均時間複雜度 O(log N) O(1) 刪除的平均時間複雜度 O(log N) O(1) 查詢的平均時間複雜度 O(log N)
原创 重寫TreeSet和TreeMap
又寫了一遍紅黑樹,寫了兩遍其實感覺也不是很複雜,旋轉的代碼寫完了並且寫正確了之後,手寫紅黑樹還不是信手拈來。 一、設計思路 1、設計結構圖 2、接口代碼 public interface Set<E> {
原创 深度解析紅黑樹
工慾善其事必先利其器,要想搞懂紅黑樹,還要先學習B樹。紅黑樹和四階B樹是完全對應的。 一、B樹 1、簡述及特點 B樹其實就是多路的搜索樹,常用於文件系統,數據庫實現(一般是好幾百階),Linux進程調
原创 二叉搜索樹(BST)
一、二叉搜索樹簡介 二叉搜索樹也叫二叉排序樹、二叉查找樹。Binary Search Tree滿足下面三個條件: 1、任意一個結點的值都大於其左子樹所有結點的值 ;
原创 重寫ArrayList與LinkedList
一、設計思路 1、設計結構圖 2、接口代碼 public interface List<E> { public static final int ELEMENT_NOT_FOUND = -1; //接口裏面默認的
原创 萬向節死鎖的理解與CS攝像機規避死鎖的簡單實現
實現CS攝像機儘量規避萬向節死鎖 本文使用glfw庫! 效果先擺圖 一、Unity中的歐拉角 歐拉角有如下兩種解釋: 1、維基百科上的歐拉角。當認爲順序是YXZ(Yaw->Pitch->Roll)時,是傳統的歐拉變換,每次變換都
原创 java實現簡單的網絡爬蟲+郵件推送
網絡爬蟲的流程梳理 URL放在隊列裏面,如果被訪問過就設置個標記,直到遍歷完所有的URL。 搭建maven環境 I eclipse搭建maven環境(更快捷的管理jar包) 1、網上下載maven 下載地址:http://m
原创 SpringMVC---異常處理源碼學習
一、源碼分析 processDispatchResult(…, (Exception)dispatchException):之前目標方法執行出現的異常也會作爲參數傳入這個方法。 private void proce
原创 從JSP開始談模板引擎
JSP即Java Server Page,本質是Servlet。要講JSP還是要先說Servlet,要說Servlet則離不開Tomcat,要談Tomcat還是要從HTTP協議說起。 一、HTTP協議 1、簡述與特點
原创 SpringBoot學習---HelloWorld
一、簡介微服務 傳統部署方式都是All in one,所有應用服務都放在一臺服務器上面,需要擴展的時候複製多份war包到多個服務器上即可。這種方式有致命缺點,當你需要修改一小部分功能的時候,需要停掉整個服務,修改完後
原创 MyBatis---環境搭建及簡單的SQL映射
數據庫表結構: 一、環境搭建 1、導入jar包。 2、編寫兩個配置文件。一個是全局的mybatis配置文件,用來指定連接哪個數據庫的。另一個是相當於接口的實現類,第二個配置文件需要在第一個中註冊。