1. 程式人生 > >OO第5到7次作業總結

OO第5到7次作業總結

不用 不能 strong 總結 理由 就會 自己 第六次作業 debug

  這個學期,我發現了一個有趣的現象,那就是時間過得變快了,每周都在不知不覺中度過,一轉眼已經到周三了,再一轉眼就是周末了,可能是OO太充實,

讓我產生了錯覺了吧,hhh.

OO第五次作業總結

  第五次作業是要求我們設計一個多線程電梯的調度系統。在此之前,我對多線程可以說是一無所知。現在回憶起來,只記得清明過得很痛苦!這次作業中,線程安全是

一個很關鍵的點,而清明前的那一周OO課,老師主要解釋了多線程的原理和基礎知識,並沒有太多的涉及線程安全,所以我清明寫了整整四天,然而卻還是沒有完成。

於是,整個人都蔫了,感覺到了生活的惡意,感覺到了OO的惡意,但是,我沒有投降,兩個通宵後,終於在DDL前完成了作業,交作業的那一刻,我感覺我寫出來作業就已經算很大

的勝利了!

度量和類圖

技術分享圖片

技術分享圖片

根據度量,我有幾個方法好胖,這還是我這幾次作業的通病,不過和上次作業比起來算是進步了,上一階段是幾個類比較胖

技術分享圖片

第五次作業我的BUG主要出現在以下幾個地方:

1.指導書中的時間沒有滿足要求,在獲取系統時間戳轉換成秒時,我因為類型強制轉換導致所有的時間都只精確到秒,所以最後出現了BUG

2.線程安全問題,由於才學多線程,同步問題做的不夠好,雖然用了volatile來保證可見性,卻沒有保證原子性,所以出了些奇奇怪怪的BUG

3.最後debug時時間緊張,沒有全面考慮,導致出現改了一個BUG ,出現兩個BUG的悲慘結局

QWQ

第六次OO作業總結

  第六次作業是文件監控系統,我感覺這次作業的難點就是如何理解指導書。其實這次作業代碼並不難,難的是理解需求,可以說,這次作業的指導書可迷了!

我看了一個周末和周一半天,竟然沒搞懂到底要做啥,最終還是issure拯救了我,通過看同學們對需求的討論,才理解了到底要做啥!!!總體來說,這次作業比多線程電梯好點!

度量和類圖

技術分享圖片技術分享圖片

類圖:

技術分享圖片

本次BUG分析:

  這次作業比電梯好多了,BUG 也少了點,首先我的邏輯上出了點小問題,比如兩個除名字外都一模一樣的文件,一個重命名,一個刪除,我會認為刪除的那個也進行了重命名,因為我是獲取

兩個切片,比較前後變化,卻忽略了這種情況。還有一個BUG比較迷,就是有時候recover不能成功,這個BUG我改了快一天,終於改好了!發現與自己的掃描周期控制有關!在解決BUG 的那一瞬間,心裏

超級超級開心!!!

第七次OO作業分析

  第七次作業是一個出租車調度系統,我感覺應該難度和開始寫傻瓜電梯時的感覺一樣。不過,我知道,後面的難度肯定會變得可怕!早有耳聞了,出租車系列作業!

這次作業我遇到的一個麻煩就是路徑計算,按照作業中已經給出的bfs算法,計算一次最短路徑需要200多ms,這時小車早該行動了,於是,我感覺邊走邊算是一個比較棘手的問題,我采用了一開始把地圖中

所有點距離算好存起來,最後要用的時候查一下就可以了,這樣就解決了這個問題,其他方面都寫的比較順利。

度量和類圖

技術分享圖片技術分享圖片

從度量上看,我的run方法寫的比較胖,的確,這次知道錯了,也受到教訓,被報了一個incomplete BUG.的確服氣,因為我只註意類之間的分工,卻忘了方法之間的分工了。

類圖:

技術分享圖片

本次作業BUG:

  由於在計算距離時沒有考慮距離為0,因此導致接單時正好在請求發出地時會無法響應。當然,還得感謝幫我測試的同學,這個BUG 復現不容易,他測了20多條才測出來。不過我發現了一個較好的復現方法,就是把所有車的位置初始都設置為(0,0)這一個點,這樣出現這個BUG的概率就會大大增大,基本每次都能復現這個BUG。

三次作業發現別人BUG 的策略:

首先閱讀readme,看看有沒有與指導書沖突的或者有邏輯錯誤的

然後測試線程同步問題

最後測試邊界問題

一般在線程同步部分就能發現對方的一些BUG了!如果對方同步做的非常好,hhh那一定是個大佬,對於大佬,感覺第三步就不用測啦,反而更應該去測一些細節問題,是人都會犯錯的嘛,hhhh

總結:

  過去的那一個月,真的累!這三次作業,的確非常有含量,我感覺,我能堅持下來已經盡了很大很大的力氣!有時候,堅持就是勝利,希望我能一直堅持下去!既然度過了最艱難的時刻,那更沒有理由去放棄啦!

OO第5到7次作業總結