原创 泛型類

泛型:指的就是在類定義的時候並不會設置類中的屬性或方法中的參數的具體類型,而是在類使用時再進行定義。 如下,就是一個泛型類; class 類名< T>{ } 尖括號<>中的T被稱作類型參數,可以是任何類型,當然也可以用E、S等符號

原创 在Iterator迭代器中使用iterator的remove方法和集合本身的remove方法刪除集合中某個數據的區別

在迭代循環遍歷時刪除某個數據,發現以下兩種現象:使用集合本身的remove方法會報錯,而使用iterator迭代器的remove方法不會出錯; 使用集合本身的remove方法: public class MyList {

原创 刪除有序鏈表中重複的結點

比如:將鏈表1,2,2,3,4,4,5,6,7,7,7中重複的結點刪除,則結果變爲:1,3,5,6 方法爲:從鏈表的頭結點開始,用兩個引用p1,p2來代表相比較的前後兩個結點; 如果p1的值不等於p2的值,則p1與p2都往後移動一

原创 冒泡排序、插入排序、選擇排序

以下所說排序都是從小到大的排序。 冒泡排序:從第一個數開始,每相鄰兩個數進行比較,將大的數放在後面;經過一次遍歷比較,就會發現最大的數在整個數組中的最後面;然後再將剩下的數(不包括最後位置最大的那個數)再進行一次這樣的遍歷比較,從

原创 Comparable、Comparator接口區別

在Java中,若想實現自定義類的比較,提供了以下兩個接口: 1、 java.lang.Comparable接口(內部比較器): 若一個類實現了Comparable接口,就意味着該類支持排序; 並且存放該類的Collection或數

原创 MyBatis逆向生成工具

generatorConfig.xml文件 <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE generatorConfiguration PUBLIC "-//my

原创 建堆

建堆:從最後一個非葉子節點開始,對其進行堆化,再向前一個結點進行堆化,以此循環,直到堆化的結點的下標爲0。 而堆化、建堆的前提都是該二叉樹是完全二叉樹。 //建堆 就是從最後一個非葉子結點開始,一步一步的進行堆化 //建

原创 靜態代理、動態代理

靜態代理:基於接口,一個靜態代理只能代理一個類 interface ISubject {//真實業務 void eat(); } class RealSubject implements ISubject {//真實對象

原创 堆排序

排序 結果從小到大排序 堆排序: 首先你要先將一個數組 array建立成一個大堆,然後每次將最大的數換到最後一個數的位置,就是array[0]位置的數與最後一個數互換位置;接着再將(不包括那個最大數的)剩下的數進行堆化,使其再次成

原创 Servlet文件的創建以及Tomcat的配置

1.打開IDEA,創建項目 (1) File->New->Project->Maven->Next (2)填寫GroupId和ArtifactId,GroupId將相當於一個包的名字,ArtifactId就相當於一個文件名,然

原创 鏈表的頭插、尾插、頭刪、尾刪

頭插:將一個結點頭插到一個鏈表中,比如:原來鏈表中元素爲:b ->c->d,要將結點a頭插到原來鏈表中,則要讓a的下一個結點(next)爲b,即a.next=b,在鏈表中b就爲頭結點head,所以a.next=head;然後再使a

原创 用隊列實現棧,用棧實現隊列

用兩個棧實現隊列: 思想:比如 棧stack1,棧stack2, 向stack1中push元素:1、2、3、4、5、6 將stack1中的元素都出棧pop,然後push進stack2中:6、5、4、3、2、1; 這樣stack1中

原创 ArrayList、Vector的區別

不同點: 1、出現版本不同 ArrayList 是JDK1.2版本開始出現的 源碼中: * @author Josh Bloch * @author Neal Gafter * @see Collection *

原创 單例模式

單例模式分爲兩種:餓漢式單例模式、懶漢式單例模式 單例模式就是指類只有一個實例化對象; 且要注意的是:單例模式的構造方法是私有的,這樣的其他處的代碼就無法通過調用該類的構造方法來實例化該類的對象,只有通過該類提供的靜態方法來得到該

原创 AOP

AOP:Aspect Oriented Program ,面向切面編程; AOP是基於動態代理實現的,不是基於動態代理; 在AOP中有幾個關鍵術語: 橫切關注點:方法,我認爲就是那個靜動態代理中代理對象新添加的那個業務, Asp