1. 程式人生 > >Java進階總結

Java進階總結

一、多執行緒:

1.多執行緒

基本方法:同步,死鎖
實現手段:Runnable介面,Thread類
其中:1.Thread類定義於java.lang

          2.一個類extends Thread後覆蓋本類中run()方法,就可實現多執行緒

二、JNDI(Java Naming and Directory Interface,Java命名和目錄介面)是一組在Java應用中訪問命名和目錄服務的API。命名服務將名稱和物件聯絡起來,使得我們可以用名稱訪問物件。目錄服務是一種命名服務,在這種服務裡,物件不但有名稱,還有屬性。

常用的JNDI操作

void bind(String sName,Object object);――繫結:把名稱同對象關聯的過程  

void rebind(String sName,Object object);――重新繫結:用來把物件同一個已經存在的名稱重新繫結  

void unbind(String sName);――釋放:用來把物件從目錄中釋放出來  

Object lookup(String sName);――查詢:返回目錄中的一個物件  

void rename(String sOldName,String sNewName);――重新命名:用來修改物件名稱繫結的名稱  

NamingEnumeration listBinding(String sName);――清單:返回繫結在特定上下文中物件的清單列表  

NamingEnumeration list(String sName);  

程式碼示例:重新得到了名稱、類名和繫結物件。  

NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");

三、常用函式

Calendar.add(Calendar.DAY_OF_MONTH, 1);  //當前所在天數+1,即是次日

四、inputstreamreader 和 fileinputstream區別:

inputstreamreader的特點:

建構函式帶兩個引數,一是關聯到的檔案,二是字元解碼方式. 所以實際上通過inputstreamreader例項讀出來的東西已經不是磁碟上原始的位元組資料了,而是根據你指定的解碼方式(如果你沒有指定,則使用系統預設的,win2000下是gbk/gb2312)把位元組流轉換成了字元流,注意位元組流和字元流的區別,一個位元組就是8位元位(32位機器上),而一個字元含多少位元組則與不同的編碼/解碼方式有關了,如gbk是一位元組,utf-8是1-3的變長位元組,utf-16是2個定長位元組。

fileinputstream的特點:

它的建構函式就一個,即關聯到的檔案,既然沒有指定解碼方式,那它所做的就是隻以位元組流的方式讀出檔案而不做任何處理, 你應該用一個位元組陣列來接受它,對該陣列你以後還可以做任何想做的操作.

五、異常就是方法非正常情況下的返回值

六、建立Junit單元測試框架(具體檢視個人收藏夾,可以參考:http://www.ibm.com/developerworks/cn/java/j-lo-test-multithread/index.html)

1.新增junit的jar 包

2.建立JUnit Test Case

3.選擇需要單元測試的類方法

4.在新生成的xxxTest類中編寫測試用例

5.測試:執行run as a Junit Test

(已完成初級,中級篇,高階為完成)

六、記憶體洩露總結

1、儘早釋放無用物件的引用。特別是大物件和集合物件,通過置為NULL,暗示垃圾收集器來收集該物件,防止發生記憶體洩露。

2、程式中如果出現大量使用字串處理,避免使用 String ,應使用 StringBuffer。

  1. for(Int i=0;i<100;i++)  
  2.    {  
  3.  String s1="";  
  4.  s1=s1+"abc";//不要這樣寫
  5.    }

3、儘量少用靜態變數,因為靜態變數是全域性的, GC 不會回收的;

4、檢查List、MAP等集合物件是否有使用完後,未清除的問題。List、MAP等集合物件會始終存有對物件的引用,使得這些物件不能被GC回收。

總結:

1.敢於重構程式碼,創新學習

2.設計模式真的很簡單,比如好多都是繼承+多型(或著說一個介面/抽象類加上幾個實現類)就成為模式了(比如模版方法、策略模式等)

3.幾行優雅的程式碼是靠幾萬行白話一般的程式碼積累出來的

4.拿自己做過的專案多總結,多重構,要是再結合設計模式的概念一起思想一下,自然而然的就會設計模式了,這也是噁心過去噁心過來所得到的

5.寫的程式碼比較多了,可以自己抽象出來很多可複用的類。有意識的運用一些模式,注重對程式碼的重構,對程式的可擴充套件性有很實在的好處