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

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

教材學習內容總結

NIO與NIO2

- NIO使用頻道(channel)來銜接數據節點
- read()將ReadableByteChannel中的數據讀至ByteBuffer
- write()將ByteBuffer的數據寫至WritableByteChannel

- Buffer的直接子類的allocate()方法可指定buffer容量(Capacity)
- capacity大小可用capacity()取得

- array()取得buffer內部的數組
- wrap()將數組轉爲buffer子類實例

- 當一個緩衝區剛被配置或調用clear()後,limit()等於capacity(),possible爲0

- mark()在目前position標記
- reset()將position設回mark標記位置
- remaining()得知還有多少長度
- hasRemaining()得知是否剩餘可存取數據

- 取得java.nio.file.FileSystem操做對象,可經過FileSystem.getDefault()

- 取得Path實例可以使用Path.get()

通用API

15.1.1日誌API簡介html

  • java.util.logging包提供了日誌功能相關類與接口,沒必要額外配置日誌組件,就能夠在標準java平臺使用是其好處。
  • Logger類的構造函數標示爲protected,不是java.util.logging同包的類不能直接以new建立,要取得Logger實例,必須使用Logger的靜態方法getLogger()
  • Logger logger = Logger.getLogger("cc.openhome.Main")
    調用getLogger()時,必須指定Logger實例所屬名稱空間,名稱空間以「·」做爲層級區分,名稱空間層級相同的Logger,其父Logger組態相同。
  • 取得Logger實例後,可使用log()方法輸出信息,輸出信息時可使用Level靜態成員指定信息層級。
    15.1.2指定日誌層級java

  • Logger與Handler默認都會先依據Level過濾信息,若是沒有作任何修改,取得的Logger實例之父Logger組態就是Logger.GLOBAL_LOGGER_NAME空間名稱Logger實例的組態,這個實例的Level設定爲INFO。
  • 在沒有任何組態設定的狀況下,默認取得的Logger實例,層級必須大於或等於Logger.GLOBAL_LOGGER_NAME名稱空間Logger實例設定的Level.INFO,纔可能輸出信息。
  • 在通過Logger過濾以後,還得在通過Handler的過濾,一個Logger能夠擁有多個Handler,可經過Logger的addHandler()新增Handler實例。
  • Handler可經過setLevel()設定信息,一個信息要通過Logger與Handler才能夠輸出。
  • 若要顯示INFO如下顯示的信息不只要將Logger的層級設定爲Level.INFO,也要將Handler的層級設定爲Level.INFO。
    15.1.3使用Handler與Formattergit

  • MemoryHandler不會格式化日誌信息,信息會暫存於內存緩衝區,直至超過大小纔將信息輸出至指定的目標Handler。
  • StreamHandler可自行指定信息輸出時使用的OutputStream實例,它與子類都會使用指定的Formatter格式化信息。
  • ConsoleHandler建立時,會自動指定OutputStream爲System.err,因此日誌信息會顯示在控制檯。
  • FileHandler建立時會創建日誌輸出時使用的FileOutputStream,文檔位置與名稱可使用模式字符串指定。
  • SocketHandler建立時能夠指定主機位置與端口,內部將自動創建網絡聯機,將日誌信息傳送至指定的主機。
  • Logger可使用addHandler()新增Handler實例,使用removeHandler()移除Handler。
  • 將目前Logger與新建的FileHandler層級設定Level.CONFIG,並使用addHandler()設定至Logger實例。
    15.1.4自定義Handler、Formatter與Filterapi

  • 若是java.util.logging包中提供的Handler成果都不符合需求,能夠繼承Handler類,操做抽象方法publish()、flush()與close()方法來自定義Handler,建議操做時考慮信息過濾與格式化。
  • Handler是負責輸出,格式化交由Formatter,信息過濾是交由Filter。
  • 自定義Formatter,能夠繼承Formatter後操做抽象方法format(),這個方法會傳入LogRecord,儲存全部日誌信息。
  • 將ConsoleHandler的Formatter設定爲自定義的Formatter。
    15.1.5使用logging.Filter數組

  • 能夠經過logging.properties來設定Logger組態,啓動JVM時,指定java.util.logging.config.file系統屬性爲.propertiles名稱。
    15.2國際化基礎網絡

15.2.1使用ResourceBundle函數

  • ResourceBundle的靜態getBundle()方法會取得一個ResourceBundle的實例,所給定的自變量名稱是信息文檔的主文件名,getBundle()會自動找到對應的.properties文檔,取得ResourceBundle實例後,可使用getString()指定鍵來取得文檔中對應的值。
    15.2.2使用Locale學習

  • 國際化的三個標準是地區(Locale)信息、資源包(Resource bundle)與基礎名稱(Base name)。
    15.3規則表示式.net

15.3.1規則表示式簡介設計

1.字面意義字符
字母和數字在規則表示式中,都是按字面意義比較,有些字符前加上\以後,會被當作元字符。

2.字符類
規則表示式中,多個字符能夠分歸在一塊兒,成爲一個字符類。
歸類字符的方式之一是將字符放於[]中。

3.貪婪、逐步、獨吐量詞
{n}是貪婪量詞表示法的一種,表示前面的項目出現n次。
在貪婪量詞表示法後加上?,將會成爲逐步量詞(懶惰量詞、非貪婪量詞)

15.4 JDK8 API加強功能

15.4.1 StringJoiner、Arrays新增API

1.String.join()、StringJoiner
String新增join()靜態方法能夠指定每一個字符串間以逗號分隔進行鏈接。

2.Arrays
Arrays上新增parallelPrefix()、parallelSetAll()與parallelSort()方法,parallelSort()方法,能夠將指定的數組分爲子數組並以平行化方式分別排序,而後再進行合併排序。指定的數組之元素必須操做`Comparable。

15.4.2Stream相關API

Files上有lines()、list()、walk()等方法。
Stream、InStream、DoubleStream等都有of()靜態方法,可使用可變長度自變量方式指定元素。

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

  • 問題1:P451代碼出現下面問題

  • 問題1解決方案:未解決

代碼託管


上週考試錯題總結

  • JDK8.0中心事檢API中,用於度量時間的類有
    B Duration D LocalDateTime

  • 如今國際上通用的標準時間是
    B UTC

  • UML類圖有助於咱們查看程序中類的內容和他們之間的關係。

    結對及互評

    結對同窗:曹翔

評分標準

  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分

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20155334
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...

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

越日後面學習發現以後的內容有不少前面的代碼等,每次學習時須要往前翻看,好使效率也不高,以後須要好好總結一下前面學習的內容!

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 300/500 2/4 18/38
第三週 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

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

  • 計劃學習時間:15小時

  • 實際學習時間:18小時

相關文章
相關標籤/搜索