原创 紅黑樹

why ? what ? when ? how ? 爲什麼要用紅黑樹? 紅黑樹放棄了追求完全平衡,追求大致平衡,任何不平衡都會在3次旋轉之內解決,平衡二叉樹不行。 Red Black Tree 是一種自平衡的二叉查找樹。需要滿足下面

原创 平衡二叉樹

平衡二叉樹 why? what? when? how? 最近幾天看了某個大佬寫的學習總結,覺得這個方式不錯就引進了。 why 爲什麼要用平衡二叉樹? 二叉搜索樹 二叉搜索樹的查找效率和 BST 建立的時候節點輸入順序相關。 1.

原创 B樹、B+樹

when ? why ? how ? what ? 平衡二叉樹其查找的時間複雜度是 O(log2N)與樹的深度相關,那麼降低樹的深度自然會提高查找效率。 如果我們要操作的數據集非常大,大到內存已經沒法處理了怎麼辦呢?如數據庫中的上

原创 虛擬機類加載機制

why ? when ? how ? what ? 什麼是虛擬機類加載機制 ? 虛擬機把描述類的數據從 Class 文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用 Java 類型。 類加載的時機 類從

原创 JVM內存結構

JVM內存結構 what ? when ? why ? how ? what JVM內存結構指的是哪一塊區域? JVM內存劃分的各個區域都存儲什麼信息? 每個劃分的區域有什麼特點? when 劃分的區域有沒有隨着jdk的變動有所改動?

原创 散列查找

散列查找 when ? what ? why ? how ? why 爲什麼要用散列查找? what 什麼是散列查找? 解決衝突有哪些方法? how 如何評估查找? 散列函數如何設計? 爲什麼要用散列查找? 順序查找 時間複雜度 O

原创 排序

排序 when ? why ? how ? what? how 怎麼衡量一個排序算法好壞? 穩定性、時間複雜度、空間複雜度。 what 什麼叫穩定性? 如有有兩個數 A,B 它們的值相等且 A 在 B 之前,如果經過某個排序算法排序後

原创 集合:Iterator

why ? when ? how ? what ? 爲什麼需要集合呢? 在數據結構中鏈表、樹、堆等一些操作都是由我們自己寫的,這些操作是不是可以提取出來,以後要用就直接拿來用就好,這樣非常方便。 Java 集合框架圖 由上圖我們可以

原创 哈夫曼樹

哈夫曼樹 when? what? why? how? why 爲什麼會出現哈夫曼樹? what 哈夫曼樹有什麼用? 什麼是哈夫曼樹? 哈夫曼樹的特點是啥? how 如何創建哈夫曼樹? 爲什麼會出現哈夫曼樹? 效率!!! 比如一所高中

原创 反射

why ? when ? what? how ? 什麼是反射? 反射允許程序在運行時進行自我檢查,同時也允許對齊內部成員進行操作。通俗講反射可以在運行時根據指定的類獲取類的信息。 爲什麼要使用反射? 先明確兩個概念,靜態編譯和動態編譯

原创 事務隔離級別

why ? what ? when ? how ? 爲什麼需要事務隔離級別? 爲了保證併發操作數據的正確性及一致性。 隔離性:當多個線程都開啓事務來操作數據庫中的數據時,數據庫系統要進行隔離操作,以保證各個線程獲取數據的準確性。 不考

原创

堆 what ? why ? when ? how ? why 爲什麼要用堆? what 什麼是堆? 堆有什麼特點? how 如何操作堆(建立、插入、刪除、查找)? when 什麼是堆? 堆是特殊的“隊列”,從堆中取出元素是按照元素

原创 並查集

並查集 when ? how ? what ? why? what 什麼是並查集? how 並查集問題中集合存儲如何實現? 並查集的操作 什麼是並查集? 集合的合併、查詢某元素屬於什麼集合。 並查集問題中集合存儲如何實現? 可以用樹

原创 二叉搜索樹

二叉搜索樹 欠的賬總是要還的嘻嘻 定義 非空左子樹的所有鍵值小於其根結點的鍵值 非空右子樹的所有鍵值大於其根結點的鍵值 左、右子樹都是二叉搜索樹 特點 最小值在二叉搜索樹的最左邊 最大值在二叉搜索樹的最右邊 結點定義 clas