學號 2016-2017-2 《Java程序設計》第X周學習總結
教材學習內容總結
- 想要取得channel的操作對象,可以使用channels類,它定義了靜態方法newChannel()。
- Buffer的直接子類們都有一個alloocate()方法,可以讓你指定Buffer容量。
- 1.java.util.logging包提供了日志功能相關類與接口,使用日志的起點是logger類,Logger類的構造函數標示為protected,不是java.util.logging同包的類不能直接以new創建,必許使用Logger的靜態方法,如:Logger logger = Logger.getLogger("cc.openhome.Main")。
- 取得Logger的方式:Logger logger = Logger.getLogger("Main.class.getName")。
- 名稱空間層級相同的Logger,父Logger組態會相同,每個Logger處理完自己的日志動作后,會向父Logger傳播,讓父Logger也可以處理日志。
- 在沒有任何組態設定的情況下,默認取得的Logger實例,層級必須大于或等于Logger.GLOBAL-LOGGER-NAME名稱空間logger實例設定的Level.INFO,才可能輸出信息。
- Handler可通過setLevel()設定信息, 以下顯示的信息不僅要將Logger的層級設定為Level.INFO,也要講Handler的層級設定為Level.INFO。
- MemoryHandler不會格式化日志信息,信息會暫存于內存緩沖區,直至超過大小才將信息輸出至指定的目標Handler。 在建立FileHandler指定模式字符串時,可以使用“%h”來表示用戶的根目錄,還可以使用“%t”取得系統暫存目錄,或者使用“%g”自動為文檔編號。
- 對于日后可能變動的文字信息,可以考慮將信息移至程序之外,使用ResourceBundle來做信息綁定。 .properties文檔必須放置在CLASSPATH的路徑設定下,文檔中撰寫的是鍵/值配對,之后在程序中可以使用鍵來取得配對。 ResourceBundle的靜態getBundle()方法會取得一個ResourceBundle的實例,所給定的自變量名稱是信息文檔的主文件名,getBundle()會自動找到對應的.properties文檔,取得ResourceBundle實例后,可以使用getString()指定鍵來取得。
- java.util.regex.Pattern實例是規則表示式在JVM中的代表對象,Pattern的構造函數被標示為private,必須通過Pattern的靜態方法compile()來取得。 在取得Pattern的實例后,可以使用split()方法將指定字符串依規則表示式切割。
教材學習中的問題和解決過程
- 問題1:對比NIO和IO
- 解決方法:這篇文章從側面給出了答案Java NIO怎么理解通道和非阻塞
- 問題2:javaNIO非堵塞技術使我們不必開多個線程死等,我有點無法理解。一般如果做普通IO通信,比方說Socket,那么我們會給每個Socket開啟一個線程,這個線程的目的是讓socket做Read()時不阻塞主線程對不對?那么NIO是否是不執行這個Read()操作,或者說,是讓專門一個線程,定時對所有連接做一個Read()操作,然后馬上關閉Read(),執行下一個?(此問題摘自關于NIO的一些疑問)
- 解決方法:傳統阻塞式的連接方式是每個連接一個線程,當連接數較多的時候(如上千并發),線程的創建和切換所帶來的開銷就非常大了。 一種的解決方案就是無阻塞式的reactor模型(linux中的epoll):將所有連接放在一個線程中輪詢,有讀寫事件的時候再執行相應的回調處理。這個主要是用在服務器端減少線程數的。 而對于客戶端來說,如果socket連接不多的話,每個連接直接單獨啟動一個線程處理socket也是可行的。
代碼調試中的問題和解決過程
代碼托管
上周考試錯題總結
- JDK8中的Lambda表達式有以下好處:
A .
消除重復性
B .
提高性能
C .
提高安全性
D .
改善可讀性
正確答案:BD - JDK8 中新時間API中,用于度量時間的類有()
A .
Instant
B .
Duration
C .
Period
D .LocalDateTime
正確答案:BC - Java 8之前,對日期進行運算,使用()類。
A .
Date
B .
DateFormat
C .
Calendar
D .
SimpleDateFormat
正確答案:C new Date(System.currentTimeMillis( ))等價于new Date()
正確結對及互評
評分標準
- 正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 模板中的要素齊全(加1分)
- 缺少“教材學習中的問題和解決過程”的不加分
- 缺少“代碼調試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結”的不能加分
- 缺少“進度條”的不能加分
- 缺少“參考資料”的不能加分
教材學習中的問題和解決過程, 一個問題加1分
代碼調試中的問題和解決過程, 一個問題加1分
- 本周有效代碼超過300分行的(加2分)
- 一周提交次數少于20次的不加分
- 其他加分:
- 周五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗證的加1分
- 代碼Commit Message規范的加1分
- 錯題學習深入的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習情況真實可信的加1分
- 扣分:
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業的扣至0分
點評模板:
- 博客中值得學習的或問題:
- xxx
- xxx
- ...
- 代碼中值得學習的或問題:
- xxx
- xxx
- ...
基于評分標準,我給本博客打分:XX分。得分情況如下:xxx
參考示例
點評過的同學博客和代碼
- 本周結對學習情況
- 20155203
- 上周博客互評情況
- 20155117王震宇
- 20155229付穎卓
- 20155201李卓雯
- 20155327李百乾
- 20155224聶小益
其他(感悟、思考等,可選)
這周的學習任務也相較原來有所減少,不過對于第15章感覺對編程沒有太大的用處,就花在上面的時間不多。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 33/33 | 1/1 | 18/18 | |
第二周 | 124/157 | 2/2 | 16/34 | |
第三周 | 531/689 | 3/3 | 20/54 | |
第四周 | 550/1239 | 4/4 | 22/76 | |
第五周 | 847/2086 | 5/5 | 18/94 | |
第六周 | 1300/3386 | 6/6 | 20/114 | |
第七周 | 655/4041 | 7/7 | 16/130 | |
第八周 | 250/4291 | 8/8 | 15/145 | |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
參考:軟件工程軟件的估計為什么這么難,軟件工程 估計方法
計劃學習時間:16小時
實際學習時間:15小時
改進情況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)
參考資料
Java學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
- Java NIO怎么理解通道和非阻塞
關于NIO的一些疑問