分佈式計算學習筆記之一:Java進階 與 Scocket通訊

Java進階與Scocket通訊


1. RuntimeExceptionJAVA在處理異常時的一個類,繼承於Exception類,負責運行時拋出異常。常見的RuntimeExceptionNullPointerException,ClassCastException,IllegalArgumentException

用一個小程序捕獲異常。

void transfer(double amount) throws OutOfMoney {

if (blance < amount)

throw new OutOfMoney(“OutOfMoney!”);

blance -= amount;

}

try

{

transfer(amount);
} catch (OutOfMoney exc) {

exc.printStackTrace();
} finally {
}

2.



3.不申明語法上不會出現問題,但是去掉後會導致trycatch語句無法捕獲到這個異常。所以應該要申明。

 

4.客戶端會出錯。

Socket server = new Socket(args[0], Integer.parseInt(args[1]));出錯。

 

5.客戶端拋出一個異常。

 

7.不能支持兩個或以上客戶端。服務端程序不支持多線程。

 

8.進程是一種重量級任務,線程是一種輕量級任務。每一進程佔有獨立的地址空間,包括代碼、數據以及其他資源,而一個進程中的多個線程可以共享該進程的這些空間。進程之間的通訊開銷較大且受到很多限制,而線程可以通過共享的公共數據區進行通信,開銷小且更簡單。進程間切換開銷大,線程間切換開銷小。

 

9.使用Runnable創建線程可以節約JAVA程序中寶貴的單繼承指標,而使用繼承Thread類的方法創建線程可以更爲簡單地完成同樣的事情。

 

10.synchronizedJava中的關鍵字,是一種同步鎖。它修飾的對象有以下幾種:

修飾一個代碼塊,被修飾的代碼塊稱爲同步語句塊,其作用的範圍是大括號{}括起來的代碼,作用的對象是調用這個代碼塊的對象;

修飾一個方法,被修飾的方法稱爲同步方法,其作用的範圍是整個方法,作用的對象是調用這個方法的對象;

修改一個靜態的方法,其作用的範圍是整個靜態方法,作用的對象是這個類的所有對象;

修改一個類,其作用的範圍是synchronized後面括號括起來的部分,作用主的對象是這個類的所有對象。

 

11.不存在。不會序列化對象的transient的實例變量,也不會序列化靜態變量。

 

13.假如我們有兩個程序員,一個程序員在寫程序的時候,需要使用第二個程序員所寫的類,但第二個程序員並沒完成他所寫的類。那麼第一個程序員的代碼能否通過編譯呢?這是不能通過編譯的。利用Java反射的機制,就可以讓第一個程序員在沒有得到第二個程序員所寫的類的時候,來完成自身代碼的編譯。

 

14.



靜態代理類實現了AccountService,有個主機host,端口號port。其中實現了getAccount方法,裏面運用ConnectorRemoteCall

 

15.靜態代理在程序運行前,.class文件就已經存在。動態代理在程序運行時,.class文件運用反射機制創建。

 

 

 

 

 

 

個人學習小結:

 

熟悉了JAVA中關於Socket通訊的內容。

瞭解了反射機制,弄清反射存在的必要性。

對序列化與非序列化機制有個初步的認識。

熟悉了兩種代理模式,瞭解了兩者的異同。

uml圖的繪製以及案例的抽象有所瞭解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章