1. 程式人生 > >20175212童皓楨 《Java程序設計》第11周學習總結

20175212童皓楨 《Java程序設計》第11周學習總結

例子 第六周 主機 style 小時 servers packet .com 方案

20175212童皓楨 《Java程序設計》第11周學習總結

教材學習內容總結

一、URL類

1.一個URL對象通常包含最基本的三部分信息:協議、地址、資源

2.構造方法:

public URL(String spec) throws MalformedURLException

public URL(String protocol, String host,String file) throws MalformedURLException

3.URL對象調用

InputStream openStream()方法可以返回一個輸入流,該輸入流指向URL對象所包含的資源。通過該輸入流可以將服務器上的資源讀入到客戶端

二、 InetAdress類

1.獲取Internet上主機的地址

使用InetAddress類的靜態方法getByName(String s);獲得一個InetAddress對象,該對象含有主機地址的域名和IP地址。

2.獲取本地機的地址

使用InetAddress類的靜態方法getLocalHost()獲得一個InetAddress對象,該對象含有本地機的域名和IP地址。

三、 套接字

當兩個程序需要通信時,它們可以通過使用Socket類建立套接字對象並連接在一起(端口號與IP地址的組合得出一個網絡套接字。

1.客戶端套接字

建立連接到服務器的套接字對象:

try{  Socket mysocket=new Socket(“http://192.168.0.78”,1880);
     }
    catch(IOException e)
    {  }

mysocket相關的方法

  • getInputStream()獲得一個輸入流
  • getOutputStream()獲得一個輸出流
  • getInputStream()得到的輸入流接到另一個DataInputStream數據流上
  • getOutputStream()得到的輸出流接到另一個DataOutputStream數據流上
  1. ServerSocket對象與服務器端套接字

建立ServerSocket對象:

try{  ServerSocket  serverForClient =new ServerSocket(2010);
      }
      catch(IOException e){}

使用方法accept()將客戶的套接字和服務器端的套接字連接起來,代碼如下所示:

try{  Socket sc= serverForClient .accept();
        }
       catch(IOException e){} 

四、 UDF數據報

基於UDP通信的基本模式是:

1.將數據打包,稱為數據包(好比將信件裝入信封一樣),然後將數據包發往目的地。

2.接受別人發來的數據包(好比接收信封一樣),然後查看數據包中的內容。

發送數據包:

DatagramPacket類將數據打包,即用DatagramPacket類創建一個對象,稱為數據包。用DatagramPacket的以下兩個構造方法創建待發送的數據包:

DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)

DatagramSocket類的不帶參數的構造方法:DatagramSocket()創建一個對象,該對象負責發送數據包。例如:

DatagramSocket  mail_out=new DatagramSocket();
mail_out.send(data_pack);

接受數據包

首先用DatagramSocket的另一個構造方法DatagramSocket(int port) 創建一個對象,其中的參數必須和待接收的數據包的端口號相同。例如,如果發送方發送的數據包的端口是5666,那麽如下創建DatagramSocket對象:

DatagramSocket mail_in=new DatagramSocket(5666);

然後對象mail_in使用方法receive(DatagramPacket pack)接受數據包。

DatagramPack類的另外一個構造方法: DatagramPack(byte data[],int length)創建一個數據包,用於接收數據包,例如:

byte data[]=new byte[100];
     int length=90;
           DatagramPacket pack=new DatagramPacket(data,length);
     mail_in.receive(pack);

該數據包pack將接收長度是length字節的數據放入data

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

  • 問題1:運行Java遠程調用的例子時,提示找不到RemoteSubject類
    技術分享圖片

  • 問題1解決方案:根據IDEA提示,將ClientApplication類也放入sever包中即可正常運行。

代碼托管

倉庫又被我搞炸了。。

技術分享圖片

結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺少“教材學習中的問題和解決過程”的不加分
    • 缺少“代碼調試中的問題和解決過程”的不加分
    • 代碼托管不能打開的不加分
    • 缺少“結對及互評”的不能打開的不加分
    • 缺少“上周考試錯題總結”的不能加分
    • 缺少“進度條”的不能加分
    • 缺少“參考資料”的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本周有效代碼超過300分行的(加2分)
    • 一周提交次數少於20次的不加分
  6. 其他加分:
    • 周五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進情況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深入的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習情況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼作弊的扣至0分
    • 遲交作業的扣至0分

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 基於評分標準,我給本博客打分:XX分。得分情況如下:xxx

  • 參考示例

點評過的同學博客和代碼

  • 本周結對學習情況
    • 結對同學學號1
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...
  • 上周博客互評情況(只要鏈接,具體點評放相應博客下)

    • 學號1
    • 學號2
    • 學號3
    • 學號4
    • ...

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

xxx
xxx

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 6/6 1/1 20/20
第二周 245/251 1/2 18/38
第三周 633/884 1/3 22/60
第四周 305/1189 1/4 30/90
第五周 410/1599 3/7 30/120
第六周 1135/2734 3/10 30/150
第七周 781/3515 3/13 30/180
第八周 710/4225 3/16 30/210
第九周 775/5000 2/18 30/240
第十周 933/5933 1/19 30/270
第十一周 691/6624 2/21 30/300

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計為什麽這麽難,軟件工程 估計方法

  • 計劃學習時間:XX小時

  • 實際學習時間:XX小時

  • 改進情況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)

參考資料

  • Java學習筆記(第8版)

  • 《Java學習筆記(第8版)》學習指導
  • ...

20175212童皓楨 《Java程序設計》第11周學習總結