20155324 2016-2017-2 《Java程序設計》第8周學習總結

20155324 2016-2017-2 《Java程序設計》第8周學習總結

教材學習內容總結

通用API

-** 日誌API**html

1.~java.util.logging~包提供了日誌功能相關類與接口,使用日誌的起點是logger類,Logger類的構造函數標示爲protected,不是java.util.logging同包的類不能直接以new建立,必許使用Logger的靜態方法,如:Logger logger = Logger.getLogger("cc.openhome.Main")java

2.取得~Logger~的方式:Logger logger = Logger.getLogger("Main.class.getName")git

3.名稱空間層級相同的~Logger~,父~Logger~組態會相同,每一個~Logger~處理完本身的日誌動做後,會向父~Logger~傳播,讓父~Logger~也能夠處理日誌。api

  • 指定日誌層級

1.~Logger~與~Handler~默認都會先依據~Level~過濾信息,若是沒有作任何修改,取得的~Logger~實例之父~Logger~組態,就是~Logger.GLOBAL-LOGGER-NAME~空間名稱~Logger~實例的組態。數組

2.在沒有任何組態設定的狀況下,默認取得的Logger實例,層級必須大於或等於Logger.GLOBAL-LOGGER-NAME名稱空間logger實例設定的Level.INFO,纔可能輸出信息。能夠經過setLevel()指定Level實例,能夠用Level內組建的幾個靜態成員來指定:函數

  • 指定日誌層級

1.Logger與Handler默認都會先依據Level過濾信息,若是沒有作任何修改,取得的Logger實例之父Logger組態,就是Logger.GLOBAL-LOGGER-NAME空間名稱Logger實例的組態。學習

2.在沒有任何組態設定的狀況下,默認取得的Logger實例,層級必須大於或等於Logger.GLOBAL-LOGGER-NAME名稱空間logger實例設定的Level.INFO,纔可能輸出信息。能夠經過setLevel()指定Level實例,能夠用Level內組建的幾個靜態成員來指定:編碼

·Level.OFF(Integer.MAX_VALUE)
·Level.SEVERE(1000)
·Level.WARNING(900)
·Level.INFO(800)
·Level.CONFIG(700)
·Level.FINE(500)
·Level.FINER(400)
·Level.FINEST(300)
·Level.ALL(Integer.MIN_VALUE)

3.Handler可經過setLevel()設定信息, 如下顯示的信息不只要將Logger的層級設定爲Level.INFO,也要講Handler的層級設定爲Level.INFO。.net

  • Handler、Formatter與Filter

1.Handler負責日誌輸出,標準API提供了幾個操做類:線程

·MemoryHandler不會格式化日誌信息,信息會暫存於內存緩衝區,直至超過大小纔將信息輸出至指定的目標Handler。
·StreamHandler可自行指定信息輸出時使用的OutputStream。
·ConsoleHandler建立時,會自動指定OutputStream爲System.err。
·SocketHandler建立時能夠指定主機位置與端口。

2.~Logger~可使用addHandler()新增Handler實例,使用removeHandler()移除~Handler~。

3.在創建~FileHandler~指定模式字符串時,可使用「%h」來表示用戶的根目錄,還可使用「%t」取得系統暫存目錄,或者使用「%g」自動爲文檔編號。

4.~Handler~是負責輸出,~Formatter~負責格式化,而信息過濾是交由~Filter~。

5.~Logger~與~Handler~默認只會根據層級過濾信息。

  • 使用logging.properties

1.能夠改變Logger組態能夠經過logging.properties。

國際化基礎

  • 國際化

1.在不修改應用程序狀況下,根據不一樣用戶直接採用不一樣語言、日期格式等,這樣的設計考慮稱爲國際化,簡稱i18n。

  • 使用ResourceBundle

1.對於往後可能變更的文字信息,能夠考慮將信息移至程序以外,使用ResourceBundle來作信息綁定。

2.~.properties~文檔必須放置在~CLASSPATH~的路徑設定下,文檔中撰寫的是鍵/值配對,以後在程序中可使用鍵來取得配對。

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

  • 使用Locale

1.國際化的三個標準是地區(Locale)信息、資源包(Resource bundle)與基礎名稱(Base name)。

2.地區信息表明了特定的地理、政治或文化區,由一個語言編碼(由兩個小寫字母表示)與可選的地區編碼(由兩個大寫字母表示)來指定。地區信息的對應類是Locale,如Locale locale=new Locale("zh","TW");。

3.資源包中包括了特定地區的相關信息。

4.表明同一組信息但不一樣地區的各個資源包會共享相同的基礎名稱。

規則表示式

1.規則表示式主要用於字符、字符串格式比較,包含字面意義字符與元字符。字面意義字符是指按照字面意義比較的字符,元字符是不按照字面意義比較,在不一樣情境有不一樣意義的字符。

2.若是你有一個字符串,可使用String的split()方法,他會返回切割後各個子字符串組成的String數組。

3.字面意義字符

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

(2)元字符在規則表示式中有特殊意義,比較標點時能夠在每一個符號前加上。

(3)「X或Y」能夠用X|Y表示,「X或Y或Z」能夠用[XYZ]表示。

4.字符類

(1)規則表示式中,多個字符能夠分歸在一塊兒,成爲一個字符類,會比較文字中是否有任一個字符符合字符類中某個字符。字符類中能夠再有字符類。

(2)歸類字符的方式之一是將字符放於[]中。「1到5任意數字出現」表示爲[1-5]。

(3)字符類中可使用^做爲字符類元字符,[^]則爲反字符類。「a、b、c之外的字符」表示爲[^abc]。

5.貪婪、逐步、獨吐量詞

(1){n}是貪婪量詞表示法的一種,表示前面的量詞出現n次,會盡量找出長度最長的符合文字。

(2)在貪婪量詞表示法後加上?,將會成爲逐步量詞,會盡量找出長度最短的符合文字。

(3)在貪婪量詞表示法後加上+,將會成爲獨吐量詞,沒有任何文字符合。

6.邊界比較

7.分組與參考

(1)使用{}來將規則表示式分組,除了做爲子規則表示式以外,還能夠搭配量詞使用。

(2)分組回頭參考時,是在\後加上分組計數。

  • Pattern與Matcher

1.在程序中使用表示式,必須先針對規則表示式作剖析、驗證等動做,肯定規則表示式語法無誤,對字符串進行比較。

2.java.util.regex.Pattern實例是規則表示式在JVM中的表明對象,Pattern的構造函數被標示爲private,必須經過Pattern的靜態方法compile()來取得。

JDK8 API加強功能

  • StringJoiner、Arrays新增API

1.String,join()、StringJoiner

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

2.Arrays

(1)Arrays上新增parallelPrefix()、parallelSetAll()與parallelSort()方法。
·parallelPrefix()方法,能夠指定xxxBinaryOperator實例,執行相似Stream的reduce()過程。
·parallelSetAll()方法,用來對數組進行初始化或全面重設每一個索引元素。
·parallelSort()方法,能夠將指定的數組分爲子數組並以平行化方式分別排序,而後再進行合併排序。
-** Stream相關API**

1.Files上有lines()、list()、walk()等方法。

代碼託管

上週考試錯題總結

  • 下面代碼中共有()個線程?
public class ThreadTest {
    public static void main(String args[]){
        MyThread myThread =new MyThread();
        Thread t1=new Thread(myThread);
        Thread t2=new Thread(myThread);
        t1.start();
        t2.start();
    }
}
class MyThread extends Thread {
    ...
}

共有3個線程,主線程算其中一個。

結對及互評

評分標準

  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

  • 參考示例

點評過的同窗博客和代碼

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

java學習是一個過程 , 須要不懈努力

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 10/10 1/1 10/10
第二週 110/200 1/2 10/20
第三週 150/350 1/3 10/30
第四周 400/750 1/4 15/45
第五週 430/1200 1/5 20/65
第六週 700/2000 1/6 20/85
第七週 700/2700 3/9 30/115
第八週 300/3000 1/7 40/135

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

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

  • 計劃學習時間:XX小時

  • 實際學習時間:XX小時

  • 改進狀況:

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

參考資料

相關文章
相關標籤/搜索