昨天晚上看了關于“都市信息網”項目開發視頻,給人總體感覺差強人意,學到了一些知識,記錄如下:
1、頁面結構:
在頁面結構的定義上,將頁面分成多部分,例如頁頭,頁尾,左側欄和右主欄。在每個欄中導入需要的JSP文件。
2、關于controller:
要讓controller實現RequestAware和ResponseAware。然后使用繼承。
3、關于DAO層的設計
遺憾的是都市信息在DAO層的設計上,是一個敗筆。在controller里面使用sql語句。不利于各個層次的獨立。
4、關于TreeMap
在該項目中,使用map多使用TreeMap,查一下TreeMap是什么東西吧:
A Red-Black tree based NavigableMap
implementation. The map is sorted according to the natural ordering of its keys, or by aComparator
provided at map creation time, depending on which constructor is used.
哦,是一個基于紅黑樹的Map。
什么是紅黑樹。
紅黑樹(Red-Black Tree)是二叉搜索樹(Binary Search Tree)的一種改進。我們知道二叉搜索樹在最壞的情況下可能會變成一個鏈表(當所有節點按從小到大的順序依次插入后)。而紅黑樹在每一次插入或刪除節點之后都會花O(log N)的時間來對樹的結構作修改,以保持樹的平衡。也就是說,紅黑樹的查找方法與二叉搜索樹完全一樣;插入和刪除節點的的方法前半部分節與二叉搜索樹完全一樣,而后半部分添加了一些修改樹的結構的操作。
紅黑樹的每個節點上的屬性除了有一個key、3個指針:parent、lchild、rchild以外,還多了一個屬性:color。它只能是兩種顏色:紅或黑。而紅黑樹除了具有二叉搜索樹的所有性質之外,還具有以下4點性質:
1. 根節點是黑色的。
2. 空節點是黑色的(紅黑樹中,根節點的parent以及所有葉節點lchild、rchild都不指向NULL,而是指向一個定義好的空節點)。
3. 紅色節點的父、左子、右子節點都是黑色。
4. 在任何一棵子樹中,每一條從根節點向下走到空節點的路徑上包含的黑色節點數量都相同。
有了這幾條規則,就可以保證整棵樹的平衡,也就等于保證了搜索的時間為O(log N)。
但是在插入、刪除節點后,就有可能破壞了紅黑樹的性質。所以我們要做一些操作來把整棵樹修補好。下面我就來介紹一下。