原创 JDBC知識點筆記

雙親委派模型,加載DriverManger時需要掃描所有Driver實現類,會找不到Driver實現類, 此時基於SPI原理會從線程上下中拿到AppClassloader, 然後從appclassloader中獲取driver

原创 JVM線程模型與操作系統廠商的關係

jvm線程仍然可以自行控制調度算法(hotspot在非solaris放棄了這種騷操作,直接讓一個jvm線程對應一個os線程,成爲1vs1模型)。 也就說,有些jvm廠商自己實現線程調度算法,在os線程的基礎上又做了一層封裝。從而實現多個

原创 【操作系統】CSAPP學習筆記

CSAPP學習筆記 前言 在閱讀本書前,最好先了解一下書本的結構,然後根據結構,網上查查網評。最好能找到一些最佳閱讀技巧。可以給自己定一個大一點的目標,比如,期望讀完這本書,可以自己設計一個操作系統。而不是僅僅學會給代碼調優(這個

原创 講解KMP算法的核心【套娃】思想

引用一段別人的答案 KMP 算法(Knuth–Morris–Pratt algorithm)的基本思想 閱讀本文之前,您最好能夠了解 KMP 算法解決的是什麼問題,最好能用暴力方式(Brute Force)解決一下該問題。 KM

原创 非單調性解空間的二分查找

非單調性解空間的二分查找 前言 我們在判斷一個問題的答案是否可以通過二分搜索快速獲得的兩個重要判斷是: 1.能否確定問題的解空間範圍。 2.解空間的分佈是否具備單調性。 判定1.通常是顯然成立的,因爲大部分解空間有範圍的前提下,我

原创 樹與圖在索引上的區別

樹與圖在索引上的區別 以下內容來源於,利用並查集求解圖是否有環,這道算法題的理解。 聲明:樹是圖的一個子概念,因此,這裏聲明下文的圖是指非樹的圖,就是特指不是樹的圖。 樹與圖在節點與路徑上的區別。 樹和圖的區別體現在節點特徵上,

原创 關於排序算法的隨手記

遞歸實現排序算法還是棧實現排序算法都存在空間複雜度問題。 另外就是插入排序對於原本已經有序的數組排序效率接近n,對於亂序的排序則反而接近n^2.希爾排序(步長排序)就是先通過步長將原數組分爲很多小組先調整出順序性,然後再最

原创 防禦性編程的兩種手段之一篡改用戶輸入

非防禦性編程:不做邊界判斷,不假設用戶輸入會出現極端情況。說白一點就是寫代碼沒有考慮邊界。 防禦性編程:考慮代碼有極端情況,以及有邊界存在。 防禦性有兩種手段: 1.一個是利用if語句將外部用戶輸入進行檢查,或者實時對用戶變量進行

原创 【極小化極大的應用】如何求解象棋遊戲最快贏法

寫在前面 本文爲個人手記,是對設計各種【極小化極大算法類型博弈遊戲】的設計思路的一個白話總結。 開始自言自語 由於象棋的步數比較多,走法也比較多,所以無法把所有走法都枚舉。 只能在給定的棋局裏面,遍歷可能的走法,遍歷的深度會受限於

原创 利用二叉樹前序和後序遍歷序列的相似性質巧妙實現後序遍歷迭代算法

前序遍歷是後序遍歷的準鏡像算法。無論是從遞歸的角度看,還是迭代的角度看。都是!我們怎麼定義準鏡像算法?就是通過微調原來前序遍歷的定義後,再進行鏡像操作。 //看一下如下代碼框架: //遞歸前後序遍歷 // 遞歸前序遍歷 re

原创 鏈表的角度看待二叉樹

鏈表的角度看待二叉樹 鏈表節點的本質就是一種帶“一個同類指針”的對象。 二叉樹節點的本質就是一種帶“兩個同類指針”的對象。 爲了不干擾我們對核心問題的研究。不考慮“不允許環形指向”這個約束。 我們很少爲鏈表建立棧實

原创 從什麼是althashing開始解讀java的HashMap

從什麼是althashing開始解讀java的HashMap 本文不包含一行代碼,你可以讀完,回頭再去看代碼,或者你一邊看着源碼,一邊品味也可以。建議看完再重看一邊源代碼。 寫在前面 本文的目的是搞懂Map的設計思想,Hash

原创 觀李永樂老師《雙蛋問題》解題後感

觀李永樂老師《雙蛋問題》解題後感 題目開始前,隨便說幾句。 隨便說幾句,就是隨隨便便說的,看不懂沒關係。隨便說,可能會表達得不好,當作閱讀前的熱身 。 李永樂老師雙蛋問題,大概就是講,給你兩個鈦合金雞蛋,在100層樓中去測試

原创 589. N叉樹的前序遍歷-用寫CPU指令執行器的方式寫遞歸遍歷

做題目前隨便說點 樹是一種抽象數據類型,一種具有樹結構形式的數據集合。 節點個數確定,有層次關係。 有根節點。 除了根,每個節點有且只有一個父節點。 沒有環路。 所有數據結構都可以用鏈表表示或者用數組表示,

原创 68 - II. 二叉樹的最近公共祖先-利用後續遍歷的回溯法查找3個節點。

做題目前隨便說點 樹是一種抽象數據類型,一種具有樹結構形式的數據集合。 節點個數確定,有層次關係。 有根節點。 除了根,每個節點有且只有一個父節點。 沒有環路。 所有數據結構都可以用鏈表表示或者用數組表示,