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

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

教材學習內容總結

認識NIO

Java NIO 由如下幾個核心部分組成:
Channels
Buffers
Selectors
Channles包括:
ReadableByteChannel
WritableByteChannel
Buffers包括:
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
Selector容許單線程處理多個 Channel。若是應用打開了多個鏈接(通道),但每一個鏈接的流量都很低,使用Selector就會很方便。html

NIO2文件系統

java.nio.file.Files 與 java.nio.file.FileVisitor 使得您能夠在文件系統中漫步,在特定目錄深度查詢文件或者目錄,並可對每一個查詢結果執行用戶實現的回調方法。 
java.nio.file.Path 與 java.nio.file.WatchService 容許 「 註冊 」 來監視特定目錄。若是在目錄中發生了文件建立、修改或者刪除操做,監視目錄的應用程序將收到通知。 
java.nio.attribute.AttributeView 容許查看此前對於 Java 用戶隱藏的文件和目錄屬性。這些屬性包括文件全部者及組權限,訪問控制列表(ACL),以及擴展文件屬性。
NIO.2 提供了 FileVisitor 的實現接口:java.nio.file.SimpleFileVisitor。該類以基礎方式獲取:對於
Failed() 方法,它只是從新引起該異常,而且對於其餘方法,它會繼續下去而根本不作任何事!它的做用在於,可使用匿名類來替代您所但願替代的方法;剩下的方法會按默認方式實現。FileVisitor 的實現,應當爲其訪問的每一個目錄和文件打印消息,並給出從其 BasicFileAttributes 中獲取的文件大小。
DecimalFormat類
DecimalFormat類 包含一個模式 和一組符號
符號含義:
0 一個數字
一個數字,不包括 0
. 小數的分隔符的佔位符
, 分組分隔符的佔位符
; 分隔格式。java

  • 缺省負數前綴。
    % 乘以 100 和做爲百分比顯示
    ? 乘以 1000 和做爲千進制貨幣符顯示;用貨幣符號代替;若是雙寫,用
    國際貨幣符號代替。若是出如今一個模式中,用貨幣十進制分隔符代
    替十進制分隔符。
    X 前綴或後綴中使用的任何其它字符,用來引用前綴或後綴中的特殊字符。
    FileStore類
    java.nio.file 中的FileSystem和FileSystems類,加強了訪問文件系統的能力,使用這些類能夠很容易地訪問文件系統。實際上,使用FileSystems 類定義的newFileSystem()方法,甚至能夠獲取新的文件系統。FileStore類封裝了文件存儲系統。

使用日誌API和國際化

一、日誌工具類(logger):一般,大部分的日誌框架都會定義一個主要的日誌輸出的工具類,開發者只須要聲明該類,便可實現大部分的日誌輸出操做
二、日誌輸出級別(Level):日誌輸出的級別,意味着該日誌的重要程度,大部分的日誌框架的級別會分爲:Debug(調試模式),Info,warn,error,fatal,其中,根據級別的大小排序,debug>info>warn>error>fatal。級別的大小,將會影響日誌的輸出,將級別設置的越高,輸出的信息將會越多
三、日誌輸出格式(format):日誌輸出的格式,一般能夠進行自定義,經過自定義的格式,輸出的詳細效果將不一樣
四、日誌輸出的方式:即將日誌輸出到哪?常見的輸出方式包括如:控制檯,文本文件,數據庫等
五、日誌分割:日誌文件若以文件的方式進行輸出的話,會存在文件大小問題,因此須要對日誌進行分割,分割的方式能夠分爲按大小,按日期等。
Handler:輸出介質
MemoryHandler不會格式化日誌信息,信息會暫存於內存緩衝區,直到超過緩衝區大小,纔將信息輸出至指定的目標Handler。
StreamHandler可自行指定信息輸出時使用的Outputstream實例,它與子類都會使用指定的Formatter格式化信息。
ConsoleHandler建立時,會自動指定Outputstream爲System。err,因此日誌信息會顯示在控制檯。
FileHandler建立時會創建日誌輸出時使用的FileOutputStream,文檔位置與名稱可使用模式字符串指定。
SocketHandler建立時能夠指定主機位置與端口,內部將自動創建網絡聯機,將日誌信息傳送至指定的主機。
addHandler()新增Hnadler實例。
removeHandler()移除Handler實例。
Handler是負責輸出,格式化是交由Formatter,而信息過濾是交由Filter。Handler有默認的isLoggable()操做,會先依據Level過濾的信息,再使用指定的Filter過濾信息。git

正則表達式

字符與元字符
字符類
貪婪、非貪婪、獨佔量詞
邊界比較
錨點
分組與反向引用正則表達式

認識JDK8 API加強功能

logger類
經過Logger類的靜態方法Logger.getRootLogger獲得RootLogger。全部其餘的loggers是經過靜態方法Logger.getLogger來實例化並獲取的。數據庫

private static Logger logger = Logger.getLogger(Test.class.getName()); 
 
Logger logger = Logger.getRootLogger();

logger.debug("This is debug message."); 
    // 記錄info級別的信息 
    logger.info("This is info message."); 
    // 記錄error級別的信息 
    logger.error("This is error message.");

Level類
編程

ResourceBundle類
getBundle(String)
獲取恰當的資源束子類。
getBundle(String, Locale)
獲取恰當的資源束子類。
getKeys()
返回鍵的枚舉。
getObject(String)
從資源束獲取一個對象。
getString(String)
從資源束獲取一個對象。
getStringArray(String)
從資源束獲取一個對象。
handleGetObject(String)
從資源束獲取一個對象。
setParent(ResourceBundle)
設置該束的父類束。api

Pattern類和Matcher類
il.regex是一個用正則表達式所訂製的模式來對字符串進行匹配工做的類庫包。它包括兩個類:Pattern和Matcher Pattern 一個Pattern是一個正則表達式經編譯後的表現模式。 Matcher 一個Matcher對象是一個狀態機器,它依據Pattern對象作爲匹配模式對字符串展開匹配檢查。 首先一個Pattern實例訂製了一個所用語法與PERL的相似的正則表達式經編譯後的模式,而後一個Matcher實例在這個給定的Pattern實例的模式控制下進行字符串的匹配工做。網絡

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

  • 問題1:
    對於正則表達式的細則不夠了解架構

  • 問題1解決方案:
    詳細可參考:正則表達式語法規則框架

  • 問題2:
    對於國際化基礎概念不夠清晰

  • 問題2解決方案:
    同計算機編程有關的國際化是設計和編寫應用程序以即可以在全球或多國環境中使用的過程。國際化程序可以支持不一樣的語言以及不一樣格式的日期、時間、貨幣和其它值,而無須軟件修改。這一般涉及「軟編碼」或將文本組件同程序代碼分離而且可能涉及可插入代碼模塊。

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

  • 問題1:

  • 問題1解決方案:
    for語句成分不完整,添加完整後運行成功

  • 問題2:

  • 問題2解決方案:
    運行過程出現問題,還沒有解決

代碼託管

上週考試錯題總結

  • 錯題1及緣由,理解狀況
    vi中哪條命令是不保存強制退出?
    q!

  • 錯題2及緣由,理解狀況
    JDK8中定義的通用函數接口,從行爲上分爲()類型:

A .
Consumer
B .
Function
C .
Predicate
D .
Supplier
答案爲ABCD

  • 錯題3及緣由,理解狀況
    JDK8 中新時間API中,用於度量時間的類爲Duration和Period

  • 錯題4及緣由,理解狀況
    須要人類能理解的時間,建議使用Date類的toString(). 說法是錯誤的。

  • 錯題5及緣由,理解狀況
    下面哪些類的對象會包含「東部標準時間」的信息
    ZonedDateTime

  • 錯題6及緣由,理解狀況
    當應用到實例變量時,____可見性修飾符強制執行封裝
    private

結對及互評

評分標準

  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分

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx

  • 參考示例

點評過的同窗博客和代碼

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

  • 一、瞭解了API日誌對於編寫應用程序的重要性。
  • 二、經過對正則表達式的學習,瞭解了更多程序中字符的應用。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 6/6 1/4 20/20
第二週 334/340 1/5 18/38
第三週 570/900 1/6 22/60
第四周 544/1358 1/7 30/90
第五週 731/2089 1/8 30/90 瞭解了java中的架構,排序,以及異常處理
第七週 541/3558 2/10 30/90 瞭解了JDK8新的時間日期API
第八週 430/3877 1/11 30/90 學習了NIO、NIO2與通用API

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

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

  • 計劃學習時間:25小時

  • 實際學習時間:20小時

  • 改進狀況:

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

參考資料

相關文章
相關標籤/搜索