前三次做業能夠說是入門編程,隨着課程的深刻,這三次多線程做業使咱們開始慢慢接觸工程性的編程任務。算法
對比起1-3次做業,5-7次做業明顯沒有那麼順利了,以前在互測環節每次最多就一個BUG或者沒有BUG,而且出現BUG時通常能夠比較容易的發現BUG的類型以及形成BUG的緣由,可是在這三次做業中,因爲多線程的部分不肯定性,不少問題難以在測試中準確發現,尤爲是本身進行測試時,因此這三次做業互測環節被發現的BUG較前三次有所上升,然而樂觀地說,互測中被發現的BUG越多在互測環節的收穫也越大(固然這是拋開分數的說辭),接下來對這三次做業作一個總結報告。編程
第五次做業:安全
該次做業爲多線程電梯做業,相比起以前的電梯做業,這一次的做業的捎帶算法和同質判斷並無太大的改變,改變主要體如今三部電梯的多線程機制,因爲是第一次接觸多線程,故大部分時間用於解決因爲線程同步控制作得不得當致使的線程安全問題,調試過程當中比較明顯的感覺是:多線程的機制決定了BUG不能老是簡單的從邏輯去分析(這也是咱們常說的玄學BUG),若有時直接運行出現的BUG單步調試BUG消失,根據經驗來看這種狀況都是同步控制的問題;另外一個比較明顯的區別是調試技巧,前幾回做業單步調試是一種比較搞笑的調試方法 ,然而在多線程中,輸出調試每每更能呈現出運行中的問題;多線程
做業測試狀況:
公測:無BUG;測試
互測:未被發現BUG;根據分支樹並對測試任務代碼進行閱讀理解,在此次測試中測試程序的漏洞較大,共計發現測試程序7個BUG(包括一個imcomplete) ;線程
第五次做業本人類圖及複雜度測試截圖:設計
第六次做業:調試
該次做業爲實現一個IFTTT文件監視系統;blog
比起第五次做業,這一次測試環節一共被扣了12分,能夠說是很是不順利了,可是這一次做業測試環節也發生了一段小插曲:因爲被測程序準確度較低,在測試中時常出現一些「詭異行爲」,花了兩個小時對這個程序進行了一波debug,這樣一段經歷也算是換一換互測的體驗哈哈;隊列
做業測試狀況:
公測:未被發現BUg;
互測:被發現6個BUG(包括一個imcomplete),五個ERROR中,有兩個是README與指導書的歧義問題,有兩個是由於同步控制不得當致使的偶然性BUG,有一個是因爲邏輯邏輯錯誤,已找到BUG具體緣由;
第六次做業本人類圖及複雜度測試截:
第七次做業:
該次做業爲實現一個出租車打車系統(系列做業,這是其中第一次做業);
通過上兩次多線程做業的鋪墊,你們對多線程有了更多的理解和經驗,這一次做業中,線程數明顯增多(實際上我認爲這一次做業的線程控制比第六次做業簡單一個量級),100輛出租車即100個線程,而對於請求處理,我進行了兩種實現,一種是每一個請求一個線程,請求調度結束該線程即結束,另外一種是設置一個請求隊列,對於該隊列的處理爲一個線程(這一種實現我並未徹底實現,故上交的代碼爲第一種實現),可是通過測試最終仍是發現每一個請求一個線程存在一部分難以解決的問題,故我決定在下一次做業中重構代碼改爲請求隊列的設計;於此同時這一次做業增長了不少設計原則須要在互測中進行評定,這也是對咱們編程習慣和代碼風格的要求。
做業測試狀況:
公測:未被發現BUG;
互測:被發現BUG4個(一個imcomplete);設計原則缺陷三個(雖然我的認爲其中的兩個設計缺陷報告中測試者的理由比較牽強,可是設計原則評定和測試者的嚴格程度有着很大的關係,同時本着虛心接受BUG的心態,本人並未作出申述);
第七次做業類圖及複雜度測試截圖:
感想總結:
在這三次做業尤爲是第七次做業中,課程對於代碼風格的要求已經變得更加嚴格具體,一開始以爲指導書中設計原則的評定帶有很大主觀性,可是實際上回顧幾回多線程做業,達成這些設計原則的好處是很是明顯的,若是隻顧着本身編程中一時的方便而忽略了這些重要的原則,咱們將可能付出更多的時間用於一些因爲設計風格不當致使的低級問題,而且調試的難度也更高,因此養成這些良好的設計風格是很是重要的。
到此OO課程幾乎已通過半,相比起個人收穫,半個學期的努力自是沒有白費,但願後半程再接再礪,佛主保佑全部同窗永無BUG!
emmm……還有……你們注意身體,修仙要適度!