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


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

教材學習內容總結

輸入輸出

  1. 數據從來源取出:輸入串流 java.io.InputStream
  2. 寫入目的的:輸出串流 java.io.OutputStream
  3. 不使用inputstream和outputstream時候要使用close()關閉串流。
  4. FileInputStream指定文件名創建實例,用,讀取數據,FileOutputStream寫出數據,二者不要時用close()關閉文檔
  5. ByteArrayInputStream指定byte數組創建實例,將byte數組當數據源進行讀取,ByteArrayOutputStream將byte數組當目的地寫出數據
  6. 打包器為輸入輸出數據加工處理:分類有 具備緩沖區作用的 BufferedInputStream,BufferedOutputStream. 數據轉換處理作用的 DataInputStream和DataOutputStream . 和對象串行化能力的ObjectInputStream.ObjectOutputStream
  7. 處理字符輸入輸出的父類是Reader和Writer兩個,FileReader,FileWriter對文檔讀取和寫入。

線程與並行API

  1. 讓目前流程暫停指定時間,用java.long.thread的靜態sleep()方法。
  2. main外獨立設計流程,寫java.long.Runnable接口,從main開始主線程執行,創建Thread實例執行run方法,啟動指定流程,調用Thread實例的start()方法。好處:有彈性
  3. 撰寫多線程程序的方式是:繼承Thread類。調用Thread實例的start方法后3個基本狀態:可執行,被阻斷,執行中。
  4. 線程中有優先權,srtPriority()方法設定優先權,數字越大優先權越高。優先權相同,則輸流執行。
  5. 一個進入Blocked的線程,可由另一個線程調用該線程的interrupt方法離開blocked狀態。
  6. 進入Dead的方法的線程不可以再次調用start()方法。
  7. 標示為Deprecated的API標示出問題的方法,不建議再用
  8. 線程的暫停,重啟,停止都要視需求而做。
  9. 每個線程都屬於某個線程群組,線程一旦歸入某個群組,無法更換群組
  10. 方法上標synchronize提供可重入同步,執行方法必須取得該實例的鎖定。執行synchronize范圍代碼期間。若調用鎖定對象的wait()方法,線程會釋放對象鎖定。
  11. 調用notify()時候,從對象等待集合中隨機通知一個線程加排班,notifyAll(),所有等待集合都會被通知參與排班,這些線程會與其他線程共同競爭對象鎖定。

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

  • 問題1:操作什么接口可以建立執行流程?
  • 問題1解決方案:java.lang.Runnable接口。
  • 問題2:撰寫多線程程序的方式有哪些?
  • 問題2解決方案:操作Runnable接口,或者繼承Thread類。
  • 問題3:進程中線程之間的關系?

解決問題
線程不像進程,一個進程中的線程之間是沒有父子之分的,都是平級關系。即線程都是一樣的, 退出了一個不會影響另外一個。

但是所謂的"主線程"main,其入口代碼是類似這樣的方式調用main的:exit(main(...))。

main執行完之后, 會調用exit()。

exit() 會讓整個進程over終止,那所有線程自然都會退出。

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

  • 問題1:

  • 解決方案:之前的東西沒有寫,類沒有調用,導致系統無法識別變量。

代碼托管

(statistics.sh腳本的運行結果截圖)

上周考試錯題總結

  1. 填空:使用JDB進行調試時單步執行命令有step和next,我們優先使用(next)。
  2. 填空:使用JDB進行調試時查看源代碼的命令是(list)。
  3. 填空 :10&9 的結果是(8)
  4. 填空:”Hello”.charAt(1) 的值是(‘e’)
  5. 填空:System.out.println( “HELLO”.( toLowerCase() ) ) 會輸出“hello”..
  6. 填空:”Hello”.substring( 0,2 )的值是“He”
  7. CH06填空:Java中繼承要使用(extends)關鍵字
  8. CH06填空:父類和子類要有(ISA 或“是一種”)關系
  9. CH06判斷:可以用父類聲明對象引用,用子類生成對象,但需要強制類型轉換。(X)
  10. CH06填空:寫出編譯P165 RPG.java的命令(javac –d . *.java)
  11. CH06填空:Java中通過(繼承)和接口實現多態。
  12. CH06判斷:父類中有個public void fight(),子類中有個public void fight( Weapon w),這兩個方法的關系是Override.(X)
  13. CH06填空:標注(@Override)可以從語法上保證方法的Override.
  14. CH06 判斷:抽象類的子類可以是抽象類也可以不是。(OK)
  15. CH06 判斷:被聲明為protected的方法,只能中繼承后的子類中訪問。(X)
  16. CH06 判斷:父類的protected方法,在子類中可以override為public的方法。(OK)
  17. CH06 判斷:Math中的abs()方法可以Override.(X)
  18. CH06填空:在構造方法中調用本類的構造方法,要使用(this)關鍵字
  19. CH06填空:在構造方法中調用父類的構造方法,要使用(super)關鍵字
  20. CH06 判斷:final可以用在類,方法,變量前。(OK)
  21. CH06 判斷:XX是一個引用型變量,System.out.println(XX)等價於System.out.println(XX.toString()). (OK)
  22. CH06 判斷:Java中所有的對象都有equals()方法。(OK)
  23. CH06填空:實現一個類中的equals()方法時,一定要同時實現(hashCode())方法
  24. CH07 填空:實現接口表示(擁有行為),但不是ISA關系。
  25. CH07 填空:Java中類可以實現兩個以上的(接口),也就是擁有多種行為。
  26. CH07 判斷:接口中 int STOP等價於public static final int STOP. (ok)
  27. CH07 判斷:Java中一個類可以繼承多個類。(X)
  28. CH07 判斷:Java中一個接口可以繼承多個接口。(OK)
  29. CH07 填空:用enum定義一個Season的類型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
  30. CH07 填空:面向對象中,設計經驗可以用(設計模式)表達

結對及互評

  • 博客比較用功,個別細節還是要注意。
    

基於評分標准,我給本博客打分:7。得分情況如下:
1.教材學習中的問題和解決過程, 一個問題加1分
2.代碼調試中的問題和解決過程, 一個問題加1分
3.進度條中記錄學習時間與改進情況的加1分
4.有動手寫新代碼的加1分

博客鏈接

評分標准

  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

  • 參考示例

點評過的同學博客和代碼

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

課上時間老師講課很重要

學習進度條

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

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

參考:軟件工程軟件的估計為什么這么難軟件工程 估計方法

  • 計划學習時間:10小時

  • 實際學習時間:12小時

  • 改進情況:

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

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM