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

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

教材學習內容總結

  • 基礎java

    - URL類:java.net包中的URL類是對統一資源定位符的抽象,使用URL建立對象的應用程序稱做客戶端程序,客戶端程序的URL對象調用InputStream openStream() 方法能夠返回一個輸入流,該輸入流指向URL對象所包含的資源,經過該輸入流能夠將服務器上的資源信息讀入到客戶端。
     - InetAddress類
  • 重點(實用):套接字git

    - 網絡套接字是基於TCP協議的有鏈接通訊
     - 套接字鏈接就是客戶端的套接字對象和服務器端的套接字對象經過輸入流、輸出流鏈接在一塊兒
     - 服務器創建ServerSocket對象,ServerSocket對象負責等待客戶端請求創建套接字鏈接,而客戶端創建Socket對象向服務器發出套接字鏈接請求。
  • 瞭解:UDP數據報,廣播數據報
  • 難點:Java遠程調用(RMI)編程

    - RMI是一種分佈式技術,使用RMI可讓一個虛擬機上的應用程序請求調用位於網絡上另外一處虛擬機上的對象方法。

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

  • 問題1:教材396頁中,在URL的構造方法那部分,地址爲何寫對了也可能發生異常?
  • 問題1解決方案:經過微課老師講解可知,因爲網絡不通,地址不合理,格式不正確等多種緣由可致使發生異常。
  • 問題2:從套接字鏈接中讀取數據與從文件中讀取數據有何不一樣?
  • 問題2解決方案:經過教材中的講解可知,儘管兩者都是都是輸入流,但從文件中讀取數據時,全部數據都已經在文件中了;而使用套接字鏈接時,可能在另外一端數據發送以前,就已經開始讀取了,這時,就會堵塞本線程,直到該讀取方法成功讀取到信息,本線程才繼續執行後續的操做。

代碼調試中的問題和解決過程

  • 問題1:在運行教材的代碼一開始出現了以下圖所示的問題?

  • 問題1解決方案:這是因爲沒有設置output的路徑。解決過程以下:

一、在Modules設置裏勾選Inherit project compile path服務器

二、設置Project中的Project compiler output,選擇「Project的路徑」+」\out」
這樣就能夠解決這個問題。網絡

  • 問題2:教材402頁例子3中,爲何在運行服務器時,沒有顯示問題的答案就直接跳出「客戶已斷開」的提示呢?
  • 問題2解決方案:因爲客戶端須要在服務器運行以前就開始運行。客戶端運行後,會在第一個問題出來後被阻塞,服務器運行後收到回答便能正常運行直到結束。

代碼託管

上週考試錯題總結

  • 錯題1:進程的基本狀態有:新建、運行、阻塞、死亡。

緣由:教材中講解的進程的四個狀態是:新建、運行、中斷、死亡。我查找網絡上則是5個狀態:建立、就緒、執行、阻塞、終止。因此有些混淆。分佈式

理解狀況:阻塞與中斷應該是相似的狀態。學習

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

本週學習內容中13章的內容,自我感受Java網絡編程這部分知識仍是比較難掌握的。在看微課時,就會引出許多問題,好比「從套接字鏈接中讀取數據與從文件中讀取數據有何不一樣?」,或者是明白ServerSocket對象與服務器鏈接的原理與示意圖,可是很難寫出對應的代碼,有些無從下手,這些方法與異常處理又出現多種狀況,細節不少,在作課下測試題時也感受比較吃力,還得多敲代碼進行相應的練習才能慢慢理解代碼編寫的過程。測試

相關文章
相關標籤/搜索