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

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

教材學習內容總結

第十四章:NIO與NIO2

NIO的定義:
  • InputStream、OutputStream的輸入輸出,基本上是以字節爲單位進行低層次處理,雖然須要直接面對數組,但實際上多半是對字節數組中整個區塊進行處理。dump()方法是整塊數據讀入後又整塊數據寫出。
NIO2的定義:
  • 現今世界上存在着各式各樣的文件系統,不一樣的文件系統會提供不一樣的存取方式,文件屬性,權限控制等操做。在JDK7出現之前,常須要對特定的文件撰寫特定的程序,不只撰寫方式沒有標準,針對特定功能撰寫的程序也會增長應用程序開發者的負擔。
  • NIO2文件系統API提供一組標準類接口與類,應用程序開發者只要基於這些標準接口與類進行文件系統操做,底層實際如何進行文件系統的操做,是由文件系統提供者負責。

第十五章:通用API

15.1.1日誌API簡介
  • 使用日誌的起點是logger類,logger實例的建立有許多要處理的要素,必須使用logger的靜態方法getLogger().
  • 一般在哪一個類上取得的logger,名稱空間就會命名爲哪一個類的全名,使用getName()就能夠取得類全名,輸出信息時可使用靜態成員指定信息層級。
  • Logger是起點,必須先經過Logger的Level與Filter過濾,再經過Handler的Level與Filter過濾,格式化信息的動做交給Formatter,輸出信息的動做其實是Handler負者。
  • Logger處理完本身的日誌動做後,會向父Logger傳播。
15.1.2指定日誌層級
  • log時指定的Level實例內含的int值小於Logger設定的Level實例內含的int值,Logger就不會記錄信息。
  • 若要顯示INFO之後的信息,不只要將Logger的層級設定爲Level.INOF,也得將Handler的層級設定爲 Level.INFO.
15.1.3使用Handler與Formatter
  • MemoryHandler不會格式化信息,信息會儲存在內存緩衝區,直到超過緩衝區大小,纔將信息輸出至指定目標Handler
  • streamHandle可自行制定信息輸出時使用的outputStream,它與子類都會使用指定的Formatter格式信息。
  • 可使用addHandler()新增Handler實例,使用removeHandler()移除Handler。
  • 創建FileHandler指定模式字符串時,可使用%h來指定用戶的根目錄,%g自動爲文檔編號,config()是個簡便方法,能夠直接以Level。CONFIG層級輸出信息。
  • 能夠繼承Handler類,操做抽象方法publish() flush()close()方法來定義Handler
  • Handler負者輸出,Formatter負者格式化,Filter負者信息過濾。
  • 加入額外過濾條件,能夠操做Filter接口。
  • 能夠經過logging.properties來設定Logger組態
15.2國際化基礎
  • 在不修改應用程序的基礎上,根據不一樣用戶採用不一樣語言。
  • 可使用ResourceBundle來作信息綁定,將信息移至程序外。
  • 國際化的三個重要概念是地區信息,資源包和基礎名稱。
  • 地區信息:由語言編碼和地區編碼組成
  • 資源包:包括特定地區相關信息
  • 表明同一組信息但不一樣地區的各個資源包會共享相同的繼承名稱。
  • 使用指定的Local對象取得信息文檔。
  • 使用Locale。getDefault()取得的對象取得信息文檔。
  • 使用繼承名稱取得信息文檔。
15.3規則表示式
  • 切割字符串可使用split()方法
  • 字面意義的字符
  • 規則表達式是規則表達式,要寫在中還要另外考慮。
JDK8 API加強功能

StringJoiner、Arrays新增APIhtml

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

  2. Arraysgit

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

  3. Stream相關APIapi

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

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

  • 問題1:對規則表示式的貪婪、逐步、獨吞不是徹底理解
  • 問題1解決方案:須要偉大的婁嘉鵬老教授講解,然而這是不可能的,緣由嘛······你懂得,我估計這位偉大婁嘉鵬都不帶看我博客的。剽悍的那啥是不會管你的。
  • 問題2:對書上495頁Arrays新增的ParallelPrefix()方法不是很理解,不明白運行結果爲何是{1,3,6,10,15}
  • 問題2解決方案:編譯運行書上的例子,其實以爲「xfooxxxx」那個例子不是很直觀,在經過本身的思考,所謂的{1,3,6,10,15}是把傳入前一個參數,並相加獲得的結果

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

  • 問題1:在運行DateFormatDemo中,提示它是公共的,代碼中定義的原本就爲public class,DateFormatDemo
  • 問題1解決方案:去除public以後就能成功運行了

代碼託管

上週考試錯題總結

  1. An object can be thought of as a blueprint for a set of classes(對象被認爲是類集合的藍圖).(B)
    A .true
    B .false
    緣由:一個類能夠被認爲是一個藍圖一組對象,而不是相反。
  2. When an object is passed to a method, the actual and formal parameters become aliases(當把對象傳遞給方法時,實參和形參互爲別名).(A)
    A .true
    B .false
    緣由:實際參數的數據發送到該方法。正式的方法定義中使用的參數。當對象被髮送到一個方法,這兩個值是引用,成爲彼此的別名。
  3. Which of the following objects could contain the information 「eastern standard time」?(下面哪些類的對象會包含「東部標準時間」的信息)(E)
    (Choose all that apply.)
    A .Instant
    B .LocalDate
    C .LocalDateTime
    D .LocalTime
    E .ZonedDateTime
    緣由:LocalXXXX明確排除了時區。即時表明一個時間點,可是是使用格林尼治時間而不是指望的時區。
  4. Given the following, which answers can correctly fill in the blank? (Choose all that apply.)針對下面的代碼,()中應填入哪一個選項?(F)app

    LocalDate date = LocalDate.now();
    LocalTime time = LocalTime.now();
    LocalDateTime dateTime = LocalDateTime.now();
    ZoneId zoneId = ZoneId.systemDefault();
    ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, zoneId);
    long epochSeconds = 0;
    Instant instant = (              );

    A .Instant.now()
    B .Instant.ofEpochSecond(epochSeconds)
    C .date.toInstant()
    D .dateTime.toInstant()
    E .time.toInstant()
    F .zonedDateTime.toInstant()
    緣由: 1. 選擇當前即時正確建立。2. 選項B正確轉換秒瞬間。3. F選項也是一個適當的轉換。4. 選擇C,D,E不正確的,由於源對象並不表明一個時間點。5. 沒有一個時區,Java不知道即時的時刻使用。學習

結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20155319
    • 結對學習內容:相互查看對方代碼,並對學習中遇到的疑問進行交流,合做解決編程過程當中遇到的問題。
  • 上週博客互評狀況

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

Java學習是一個長期的過程,不能一蹴而就,只能按部就班,一步一步來,此外須要老師的細心講解 (然而這事兒可能嗎?偉大的婁老師的理論,學生佩服,無fuck說)
在學習的道路上沒有平坦的捷徑,惟有鍥而不捨的認真刻苦纔可以學有所成。編碼

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 5/5 1/1 10/10
第二週 90/95 1/2 15/25
第三週 131/234 1/3 20/45
第四周 289/523 1/4 21/66
第五週 446/969 1/5 25/91
第六週 720/1689 1/6 25/116
第七週 431/2120 1/7 30/146
第八週 381/2501 2/9 35/181

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

  • 計劃學習時間:40小時

  • 實際學習時間:35小時

  • 改進狀況:

參考資料

世界上最有用的,最好消磨時間的評分模板:

評分標準

  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
  • 基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx
相關文章
相關標籤/搜索