原创 LinkedList部分源碼分析(雙鏈表)

LinkedList就是雙鏈表的數據結構,所以主要複習下雙鏈表的插入、刪除和查找 1、結點類 結點類是LinkedList類的靜態內部類,包括指向上一個結點的prev引用、指向下一個結點的next引用和數據域item。構造函數也是初始化這

原创 FutureTask源碼簡單解析

首先說一下任務與線程。併發編程使我們將程序劃分成多個分離的、獨立運行的任務,而線程可以驅動任務。一般情況下任務通常就是實現了Runnable或Callable接口的類。 FutureTask在jdk11中的定義是一個可取消的異步計算。也就

原创 springmvc如何攔截根目錄的請求

轉載自:https://blog.csdn.net/qq_20545159/article/details/48598757 一個東西快弄完了,就剩下一個問題,應該是個小問題。就是mvc項目的歡迎頁,怎麼給改下呢。 這個項

原创 堆排序&優先隊列

一、堆排序 1、堆   (二叉)堆是一個數組,它可以被近似看成是一顆完全二叉樹。樹上的每一個結點都對應數組的一個元素。除了最底層,該樹是完全充滿的,該樹在數組中是從左向右填充的。表示堆的數組A通常包括兩個屬性:數組長度A.length

原创 快速排序&歸併排序

1、快速排序 快速排序利用分治的思想,首先選取一個哨兵,將數組中大於哨兵的元素放到一邊,小於數組的元素放到另一邊,然後對兩邊也進行相同的操作。 public void quickSort(List<Integer> t){ quic

原创 希爾排序&冒泡排序

1、希爾排序 將數組中每間隔爲d的元素劃分爲同一組,然後對每一組使用插入排序。d有多個值,但要求最後一個值爲1,即最後一次要進行插入排序。例如數組:2 9 1 3 6 3,如果d爲2,那麼2、1、6爲一組;9、3、3爲一組;1、6爲一

原创 紅黑樹

一、定義 1、結點類   樹中每個結點包括五個屬性:key,color,left,right和p。如果一個結點沒有子結點或父結點,則其left,right 或 p 指向NIL結點。可以把NIL視爲紅黑樹的葉結點。結點類代碼如下: pr

原创 二叉排序樹(二叉查找樹)

一、定義 二叉排序樹或者是一顆空樹,或者是具有以下性質的二叉樹: (1)若它的左子樹不爲空,則其左子樹上所有結點的值均小於它的根結點的值 (2)若它的右子樹不爲空,則其右子樹上所有結點的值均大於它的根結點的值 (3)它的左、右子樹均爲二叉

原创 二叉線索樹

package trees; //線索二叉樹 public class BiThrTree { static final class ThrNode{ Integer data; ThrNode left; //左孩子 T

原创 哈夫曼樹及哈夫曼編碼

一、基本概念 1、路徑:從樹的一個結點到另一個結點之間的分支構成這兩個結點之間的路徑 2、路徑長度:路徑上的分支的數目 3、樹的路徑長度:從樹根到每一個結點的路徑長度之和 4、結點的帶權路徑長度:從該結點到樹根之間的路徑長度與結點上權值的

原创 二分查找

package search; import java.util.*; public class BinarySearch { //這種是在[l,h]閉合區間查找 public int bSearch1(int l,int h,

原创 二叉樹的創建和遍歷

  一、結點類的定義 這裏只是進行了簡單的定義,結點類包括結點數據域和左右孩子引用,結點類是靜態內部類。 static final class Node{ Integer data = null; Node right;//左子

原创 只求自己能看懂的KMP算法

      KMP算法:假設i是指向主串的指針,KMP算法利用已經得到的“部分匹配”的結果將模式串向右“滑動”儘可能遠的一段距離後,進行比較,而不需要回溯指針i。 一個簡單的例子,反映了KMP算法的匹配過程:     假設主串爲S=s1

原创 FutureTask源碼簡單解析(jdk11)

首先說一下任務與線程。併發編程使我們將程序劃分成多個分離的、獨立運行的任務,而線程可以驅動任務。一般情況下任務通常就是實現了Runnable或Callable接口的類。 FutureTask在jdk11中的定義是一個可取消的異步計算。也就

原创 使用泛型的一些問題

1、任何基本類型不能作爲類型參數 2、 一個類不能實現同一個泛型接口的兩種變體,因爲擦除會使這兩個接口相同 3、使用帶有泛型類型參數的轉型或instanceof不會有效果,原因也是擦除。 class FixedSizeStack<T>{