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

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

教材學習內容總結

第十四章NIO與NIO2

  • NIO
  • NIO使用頻道來銜接數據節點,在處理數據時,NIO可讓你設定緩衝區容量,在緩衝區中對感興趣的數據區塊進行標記。對於區塊標記,提供了clear()、rewind()、flip()、compact()等高級操做。
  • Buffer繼承架構
  • Buffer的直接子類們都有個allocate()靜態方法,可讓你指定Buffer容量(Capacity),若是想取得Buffer內部的陣列,可使用array()方法,若是有個數組想要轉爲某個Buffer子類實例,每一個Buffer子類實例都有wrap()靜態方法能夠提供操做。
  • Buffer是容器,填裝的數據不會超過它的容量,容量大小可使用capacity()方法取得,實際可讀取或寫入的數據界限(Limit)索引值能夠由limit()方法得知或設定,下一個可讀取數據的位置(Position)索引值,可使用position()方法得知或設定。
  • NIO2
  • NIO2文件系統API提供一組標準接口與類,應用程序開發者只要基於這些標準接口與類進行文件系統操做,底層事蹟如何進行文件系統操做,是由文件系統提供者負責。

通用API

  • 日誌API簡介
  • 使用日誌的起點是Logger類,要取得Logger類,必須使用Logger的靜態方法getLogger(),Logger.log()方法能夠用來輸出信息。 默認的Logger還會記錄時間、類、方法等信息,Logger是記錄信息的起點,還會通過一些過濾纔會輸出信息,輸出信息其實是由Handler負責。
  • Logger有層級關係,每一個Logger處理完本身的日誌動做後,回想父Logger傳播,讓父Logger也能夠處理日誌Logger與Handler預設都會先依Level過濾信息,若是沒有作任何修改,取得的Logger實例之父Logger組態,就是Logger.GLOBAL_LOGGER_NAME名稱空間Logger實例的組態,這個實例的Level設定爲INFO,可經過Logger實例的getParent()取得父Logger實例,可經過getLevel()取得設定的Level實例。
  • 在通過Logger過濾以後,還得再通過Handler的過濾,一個Logger能夠擁有多個Handler,可經過Logger的addHandler()新增Handler實例。

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

  • 問題1:怎麼正確表示貪婪正則表達式
  • 問題1解決方案:貪婪、非貪婪、獨佔量詞:{n}是貪婪量詞表示法的一種,表示前面的項目出現n次。在貪婪量詞表示法後加上?,將會成爲逐步量詞(懶惰量詞、非貪婪量詞)
public class SplitDemo2 {
public static void main(String[] args) {
for(String str : "Justin dog Monica doggie Irene".split("\\bdog\\b")) {
    System.out.println(str.trim());
}
}
}

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

  • 問題1:在運行DateFormatDemo中,提示它是公共的,應該在該文件的.java中聲明,代碼中定義的原本就爲public class,DateFormatDemohtml

  • 問題1解決方案:去除public以後就能成功運行了java

代碼託管


上週考試錯題總結

  • JDK8 中新時間API中,用於度量時間的類有(BC)
    • A .Instant
    • B .Duration
    • C .Period
    • D .LocalDateTime
  • A ________________ diagram helps us visualize the contents of and relationships among the classes of a program(___有助於咱們查看程序中類的內容和它們之間的關係).(B)
    • A .class and object(類和對象)
    • B .UML(UML類圖)
    • C .object-oriented(面向對象)
    • D .public
    • E .private
  • 解析
    • UML圖有助於咱們想象的內容和程序的類之間的關係。 其餘選擇不指任何類型的圖。

結對及互評

  • 與155227辜彥霖結對
  • 我的感受她的博客排版很好看,很值得借鑑,代碼量和提交次數都挺多,這種態度值得學習,但有點,所解決問題不夠個性化。

評分標準

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

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

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分

點評過的同窗博客和代碼

點評過的同窗博客和代碼

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

  • 前幾章大量的敲代碼工做讓同窗們的學習都留於形式,只想着完成做業而對代碼的理解少之又少,感受學好java的方法不是「敲」代碼,而是「修改」代碼,敲好代碼之後若是不理解代碼的能,能夠經過修改代碼來具體體會其真正含義。
  • 進步來源於發現問題和解決問題,若是你們不去主動思考,簡單機械的完成做業,那學習便失去了意義。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 48/48 1/1 20/20
第二週 98/146 1/2 30/50 學習java的基礎語法
第三週 302/448 1/3 27/77 學習java對象及封裝
第四周 1032/1480 1/4 36/113 學習了繼承與多態的關係,以及接口的多態操做
第五週 609/2025 1/5 30/143 學習了異常處理和Map
第六週 672/2697 1/6 30/173 學習了IO和線程
第七週 532/3229 1/7 27/200 對Lambda和Date的學習
第八週 359/3588 1/8 20/220 學習了NIO和通用API

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

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

  • 計劃學習時間:35小時架構

  • 實際學習時間:30小時學習

  • 改進狀況:.net

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

參考資料

相關文章
相關標籤/搜索