20155320 2016-2017-2《Java程序設計》第十週學習總結

20155320 2016-2017-2《Java程序設計》第十週學習總結

教材學習內容總結

本週學習目標

  • 瞭解計算機網絡基礎
  • 掌握Java Socket編程
  • 理解混合密碼系統
  • 掌握Java 密碼技術相關API的使用

計算機網絡概述

  • 計算機網絡體系結構的通訊協議劃分爲七層,自下而上依次爲:物理層(Physics Layer)、數據鏈路層(Data Link Layer)、網絡層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成數據傳送服務,上面三層面向用戶。
  • 兩臺計算機用於通訊的語言叫作「協議」。咱們只需關心應用層中的協議,而沒必要關心其餘層的協議。Java中提供了類來封裝應用層協議,使你無需瞭解協議就能向協議的服務器發送信息。
  • 一個IP地址能夠對應多個域名,一個域名只能對應一個IP地址。html

    超文本傳輸協議(HTTP)

  • 一次http請求包含三部分:方法—統一資源標識符——協議/版本、請求頭、請求實體
  • 一次http響應包含三部分:協議-狀態碼-說明、響應頭、響應實體:響應自身的HTML內容。java

    java.net.URL

  • URL是互聯網資源的惟一的地址,HTTP是URL中最常使用的協議但並非惟一的。
  • 在java中,一個URL經過一個java.net.URL對象來表示
  • 能夠使用URL類的OpenStream方法來讀取一個Web資源。
  • 能夠使用URL類的openStream方法來讀取一個Web資源git

public final java.io.InputStream openStream()
throws java.io.IOException

java.net.URLConnection

  • URLConnection 實例時沒法使用new創造的,要獲取URLConnection實例能夠在URL對象上調用openConnection
  • URLConnection類有兩個布爾類型的字段:doInput和doOput,他們分別表示URLConnection是讀仍是寫
  • 能夠使用setDoInput和setDoOutput方法來設置doInput和doOput的值算法

    java.net.Socket

  • 套接字是一個網絡連接的端點。套接字使得應用程序可以從網絡讀取或者向網絡寫入信息。
  • 一旦成功建立了Socket類的一個實例,就能夠使用它發送或接收字節流。
  • 能夠調用Socket類的getOutputStream方法獲取一個java.io.OutputStream對象,用來發送字節流;從返回的OutputStream對象構建一個java.io.PrintWriter對象,向遠程應用程序發送文本。數據庫

    java.net.ServerSocket

  • SeverSocket和Socket不一樣,服務器套接字的角色是,等待來自客戶端鏈接的請求。編程

    JAVA與密碼學

  • 咱們遇到的安全問題能夠歸結爲安全的三個屬性(CIA金三角):安全

機密性(Confidentiality):確保數據僅能被合法的用戶訪問, 即數據不能被未受權的第三方使用。服務器

完整性(Integrity):主要確保數據只能由受權方或以受權的方式進行修改,即數據在傳輸過程當中不能被未受權方修改。網絡

可用性(Availability):主要確保全部數據僅在適當的時候能夠由受權方訪問。socket

  • 密碼學包含密碼編碼學( Cryptography) 和密碼分析學(Cryptanalyst) 兩個分支

  • 密碼學並非孤立存在的, 它須要有一個環境——保密通訊模型。

Java與密碼學

  • Java安全體系結構總共分爲四個部分:JCA,JCE,JSSE,JAAS.
  • Java對稱加密-DES算法

對稱密鑰的生成和保存

編程思路:(1) 獲取密鑰生成器,(2) 初始化密鑰生成器,(3) 生成密鑰,(4) 經過對象序列化方式將密鑰保存在文件中。

  • Java非對稱加密-RSA算法

(1) 建立密鑰對生成器

(2) 初始化密鑰生成器

(3) 生成密鑰對

(4) 獲取公鑰和私鑰

  • Java摘要算法- MD5

(1) 生成MessageDigest對象

(2) 傳入須要計算的字符串

(3) 計算消息摘要

(4) 處理計算結果

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

  • 問題1:SeverSocket和Socket的不一樣具體有哪些
  • 問題1解決方案:查了許多,說啥的都有,總結起來就是Socket表示一個「客戶端」套接字,而ServerSocket是服務器套接字的一個實現。

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

代碼託管

上週考試錯題總結

  • 錯題1及緣由,理解狀況
  • 錯題2及緣由,理解狀況
  • ...

結對及互評

  • 20155326
  • 博客中值得學習的或問題: 教材內容總結的很認真。

代碼中值得學習的或問題:代碼問題提的很好,看得出來很認真。

基於評分標準,我給本博客打分:11分。得分狀況以下:

  • 正確使用Markdown語法(加1分):
  • 模板中的要素齊全(加1分)
  • 教材學習中的問題和解決過程, (加1分)
  • 代碼調試中的問題和解決過程, (加1分)
  • 本週有效代碼超過300分行的(加2分)
  • 其餘加分:
    感想,體會不假大空的加1分

  • 排版精美的加1分
  • 進度條中記錄學習時間與改進狀況的加1分
  • 代碼Commit Message規範的加1分
  • 結對學習狀況真實可信的加1分

點評過的同窗博客和代碼

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

因爲上週數據庫相關內容沒有學好,本週又重溫了相關內容,在網上看了老師要求的書22章的PDF版本而且在讀婁老師寫的博客過程當中,終於領會到了java與密碼學相結合,雖然第一次實驗中本身編了凱撒密碼相關內容,可是看了老師的博客感受受益不淺,感受課程之間真的須要融會貫通呀。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 15篇 400小時
第一週 20/20 1/4 20/20 安裝了JDK及IDEA
第二週 144/164 1/5 18/38 學習了java語言的基本語法
第三週 447/567 1/6 20/ 58 掌握了一些有關對象和封裝的內容
第四周 875/ 1442 1/7 23/81 學習瞭解了繼承、接口和多態的相關問題
第五週 775/2250 1/8 25/106 學習了異常處理以及Collection與Map相關的內容
第六週 487/ 2706 1/9 22/128 學習了輸入輸出
第七週 529/3127 2/11 20/148 學習了時間與日期
第八週 417/ 3491 1/12 20/168 學習了NIO與NIO2和通用API
第九周 975/4548 2/13 22/190 主要學習了整合數據庫
第十週 320/5393 1/14 18/208 主要學習了22章與密碼學內容

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

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:15小時

  • 實際學習時間:18小時

  • 改進狀況:多花了一些時間學上週落下的數據庫內容

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

參考資料

相關文章
相關標籤/搜索