本週主要進行第十四章和第十五章的學習。html
NIO使用頻道(channel)來銜接數據節點,對數據區的標記提供了clear(),rewind(),flip(),compact()等高級操做。java
想要取得channel的操做對象,可使用channels類。數組
現今世界上存在着各式各樣的文件系統,不一樣的文件系統會提供不一樣的存取方式,文件屬性,權限控制等操做。在JDK7出現之前,常須要對特定的文件撰寫特定的程序,不只撰寫方式沒有標準,針對特定功能撰寫的程序也會增長應用程序開發者的負擔。函數
能夠繼承Handler類,操做抽象方法publish()、flush()與close()方法來定義Handler。Handler負者輸出,Formatter負者格式化,Filter負者信息過濾。學習
能夠經過logging.properties來設定Logger組態,這樣就能夠不用使用程序對組態進行修改。編碼
java.util.loggging包提供了日誌功能相關類與接口。設計
Logger與Handler默認都會先依據Level過濾信息,若是沒有作任何修改,取得的Logger實例之父Logger組態就是Logger.GLOBAL-LOGGER-NAME空間名稱Logger實例的組態。日誌
Logger是起點,必須先經過Logger的Level與Filter過濾,再經過Handler的Level與Filter過濾,格式化信息的動做交給Formatter,輸出信息的動做其實是Handler負者。orm
標準API提供了幾個操做類:其中MemoryHandler不會格式化日誌信息,信息會暫存於內存緩衝區,直至超過大小纔將信息輸出至指定的目標Handler。StreamHandler可自行指定信息輸出時使用的OutputStream。ConsoleHandler建立時,會自動指定OutputStream爲System.err。SocketHandler建立時能夠指定主機位置與端口。htm
若是java.util.logging包中提供的Handler成果都不符合需求,能夠繼承Handler類,操做抽象方法publish()、flush()與close()方法來自定義Handler。
在職責分配上,Handler是負責輸出,格式化是交由Formatter,而信息過濾是交由Filter。Handler有默認的isLoggable()操做,會先依據Level過濾信息,再使用指定的Filter過濾信息。format()方法會傳入LogRecord,存儲全部日誌信息。
在創建FileHandler指定模式字符串時,可使用「%h」來表示用戶的根目錄,還可使用「%t」取得系統暫存目錄,或者使用「%g」自動爲文檔編號。
自定義Handler、Formatter與Filter
在職責分配上,Handler是負責輸出,Formatter負責格式化,而信息過濾是交由Filter。
自定義Formatter,能夠繼承Formatter後操做抽象方法format(),這個方法會傳入LogRecord,儲存全部日誌信息。
使用ResourceBundle
ResourceBundle的靜態getBundle()方法會取得一個ResourceBundle的實例,所給定的自變量名稱是信息文檔的主文件名,getBundle()會自動找到對應的.properties文檔,取得ResourceBundle實例後,可使用getString()指定鍵來取得。
國際化的三個重要概念是地區信息,資源包和基礎名稱。
地區信息:由語言編碼和地區編碼組成
資源包:包括特定地區相關信息
表明同一組信息但不一樣地區的各個資源包會共享相同的繼承名稱。
字面意義字符是指按照字面意義比較的字符。
元字符時不按照字面比較,在不一樣情境有不一樣意義的字符。
java.util.regex.Pattern實例是規則表達式在JVM中的表明對象,Pattern的構造函數被標示爲private,經過Pattern的靜態方法compile()來取得。Pattern.compole()方法的另外一版本,能夠指定旗標(Flag)。
在取得Pattern實例後,可以使用方法:
split()方法:將指定字符串依規則表達式切割
matcher()方法:指定要比較的字符串
find()方法:看看是否是有下一個符合字符串
lookingAt():看看字符串開頭是否符合規則表達式
group():能夠返回符合的字符串。
在取得Matcher實例後,可以使用方法:
replaceAll()能夠將符合規則表達式的部分以指定的字符串取代
replaceFirst()取代首個組合規則表達式的部分
replaceEnd()取代最後符合規則表達式的部分
start()方法能夠取得符合字符串的初始索引
end()方法能夠取得符合字符串最後一個字符後的索引
在JDK8中,String新增了join()靜態方法能夠直接指定每一個字符串間以逗號分隔進行鏈接。
JDK8中,針對大型數組的平行化操做,在Arrays上新增了parallelPrefix()、parallelSetAll()與parallelSort()方法,parallelSort()方法。
parallelPrefix()方法,能夠指定×××BinaryOperator實例。
parallelSetAll()方法,能夠用來對數組進行初始化或者全面重設每一個索引元素。
parallelSort()方法,能夠將指定的數組分爲子數組並以平行化方式分別排序,而後再進行合併排序。
Stream是JDK8中重要的新特性之一。Files上有幾個靜態方法,例如lines()、list()、walk()等方法,對於這類返回Stream實例的API,主要可適用於須要管線化、惰性操做的場合。
若是想對數組進行管線化操做,方法之一市是使用Arrays的asList()方法返回List,然後調用stream()方法取得Stream實例,另外一個方法是使用Arrays的stream()方法,它能夠指定數組後返回Stream實例。
本週學習內容不少,java這本書快學完了,但感受還有不少沒有學懂學會,之後多努力吧。
代碼託管截圖:
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 100/100 | 2/2 | 10/10 | 初步認識java |
第二週 | 150/250 | 1/3 | 12/22 | 掌握Java基礎語法 |
第三週 | 537/787 | 2/4 | 20/42 | 認識對象,對象封裝 |
第四周 | 500/1287 | 1/5 | 20/62 | 繼承與多態,接口與多態 |
第五週 | 300/1587 | 1/6 | 20/82 | |
第六週 | 300/1887 | 2/8 | 20/102 | |
第六週 | 200/2087 | 2/10 | 20/122 | |
第六週 | 210/2300 | 2/12 | 20/142 |