1. 程式人生 > >20165209 2017-2018-2 《Java程序設計》第9周學習總結

20165209 2017-2018-2 《Java程序設計》第9周學習總結

ble 發送 main 二周 成長 所有 eth 在線 一個

20165209 2017-2018-2 《Java程序設計》第9周學習總結

教材學習內容總結

URL類

  • ULR對象通常包含最基本的三部分信息:協議、地址、資源。
  • 構造方法:public URL(String spec) throws MalformedURLException
  • 讀取資源:調用InputStream openStream()方法可以返回一個輸入流。

InetAddress 類

  • 地址表示:域名、IP地址
  • 獲取Internet上主機地址:使用InterAddress類的靜態方法getByName(String s),返回對象含有主機地址的域名和IP地址。
  • public String getHostName()
    獲取對象所含域名,public String getHostAddress()獲取對象所含IP地址。
  • 獲取本機地址:使用InterAddress類的靜態方法getLocalHost(),返回對象含有本地機器的域名和IP地址。

套接字

  • 使用Socket類建立套接字對象並連接在一起(端口號與IP地址的組合得出一個網絡套接字),使兩個程序完成通信。

  • 客戶端套接字:使用getOutputStream()獲得輸出流。

    //建立連接到服務器的套接字對象
    try { Socket clientSocket = new Socket("http://192.168.0.78",2010);
    }  //(IP,端口號)
    catch(IOException e) {}
  • ServerSocket對象與服務器端套接字

    //建立ServerSocket對象
    try{ ServerSocket serverForClient = new ServerSocket(2010);
    }//(端口號)
    catch(IOException e) {}
    
    
    //使用accept()方法將客戶端和服務器端套接字連接起來
    try{ Socket sc = serverForClient.accept();
    }
    catch(IOException e) {}
  • 調用getInetAddress()方法,服務器端獲得客戶端的IP地址和域名,客戶端獲得服務器端的IP地址和域名。

UDP數據報

  • 發送數據報

  • 接收數據報

廣播數據報

JAVA遠程調用

  • 遠程對象及其代理
  • RMI設計細節
    1.擴展Remote接口
    2.遠程對象
    3.存根與代理
    4.啟動註冊
    5.啟動遠程服務對象
    6.運行客戶端程序

教材學習中的問題和解決過程

  • 問題1:為什麽套接字一定要有端口號?

  • 問題1解決方案:端口號為了方便程序間通信,確定要執行的內容。

代碼托管

技術分享圖片

上周考試錯題總結

  • 錯題1:下列說法正確的是 A B D
    A . Java語言的一大特性就是內置對多線程的支持。
    B . main方法返回時,JVM就會結束Java應用程序。
    C . Java應用程序中第一個線程結束後,JVM結束Java應用程序。
    D . Java語言使用Thread類及其子類對象來表示線程
  • 解析:C.所有的線程結束後,JVM才結束Java應用程序。

  • 錯題2:下列關於線程狀態與生命周期的說法,錯誤的是 B C
    A . 在線程沒有結束run()方法之前,不要讓線程再調用start()方法,否則將發生IllegalThreadStateException異常。
    B . run()方法負責通知JVM有新的線程等候切換。
    C . 執行sleep()結束後,該線程進入運行狀態,得到CPU的使用權。
    D . 進入阻塞狀態時,線程不能進入排隊隊列。
  • 解析:
    B:應為start()方法。
    C:執行sleep結束後,線程重新進到線程隊列中排隊等待CPU資源。

  • 錯題3:下列關於線程常用的方法的敘述,錯誤的是 C D
    A . 讓run方法執行完畢,線程就變成死亡狀態。
    B . 如果線程在休眠時被打斷,JVM會拋出InterruptedException異常。
    C . 一個已運行的線程沒有進入死亡狀態時,如果再給線程分配實體,則先前的實體會被垃圾收集器收集掉。
    D . 當線程進入死亡狀態後,線程就不能夠調用isAlive()方法了。
  • 解析:
    C:先前的實體會成為“垃圾”,並且不會被垃圾收集器收集。
    D:當線程進入死亡狀態後,線程就還可以調用isAlive()方法,並且返回值為false

其他(感悟、思考等,可選)

由於本章是Java中的網絡編程部分,綜合了線程和窗口的知識,更加具有綜合性。設計的思想更全面,體會到基礎知識的重要,而且課上的測試,課下的實驗也更加有難度。希望能夠堅持學習,並且能夠定期鞏固前面的知識,提高自己的Java編程能力。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 37/37 1/1 20/20
第二周 654/691 3/4 18/38
第三周 477/1131 3/7 22/60
第四周 657/1730 2/9 30/90
第五周 1260/2515 1/10 30/120
第六周 1022/3319 2/12 20/140
第七周 1213/3803 1/13 20/160
第八周 993/4796 4/17 30/190
第九周 1584/5808 1/18 22/212

參考資料

  • Java2實用教程(第5版)

20165209 2017-2018-2 《Java程序設計》第9周學習總結