1. 程式人生 > >oo第二次總結

oo第二次總結

復習 0ms ron 掃描 功能 同步 由於 拼接 並不是

 第五次作業--多線程電梯的總結與分析

  1、策咯分析

   由於上兩次的電梯經驗,這次雖然加大了難度,但是自己寫的時候還好是比較有信心的,由於這次是多線程電梯在跑,為了模擬實際的運行情況,這次我舍棄了上兩次隊列思想,采用了模擬時間的方法,具體有三個電梯線程,一個總的調度線程,還有一個輸入線程。由於多線程在同時運行,且輸入線程與調度線程共用一個請求托盤。每個電梯和調度共享自己正在執行的指令序列。所以將總的指令序列和每個電梯的自己的運行序列作為鎖,分別鎖註可能產生沖突的代碼塊以實現線程同步。

   2、類圖總覽

     技術分享圖片

   3、度量化分析

   技術分享圖片

   4、BUG分析

   

這次程序出現的bug真的是把自己都蠢哭了,DOWN拼寫成了DOWM,輸出無效指令的時候,忘記輸出時間。在輸出每個電梯的運行時間的時候,莫名其妙的一個輸出位置多加了一個換行。這些錯誤都令人窒息,也十分感謝同學幫我找出這些小問題,程序思路設計好,核心寫完,並不是真正的寫完,能夠按照給定的標準輸出也是必不可少的。

 第六次作業--文件系統

  1、策略分析   

   看到這次題目的時候還很是挺開心的,因為終於不用寫電梯了,跟室友討論了一個晚上這次作業,發現這次作業還是非常簡單的相對於上次的電梯,只需要每隔500ms掃描一下自己監控的文件目錄,兩個for循環,兩個數組,新掃描的文件數組,和上次掃描的文件數組,按照指導書的壓球比對這兩次的信息,來判斷有無觸發,因為程序本身都是掃描,只有讀取的操作,所以是線程安全的,又加上這次和室友一起學習了一些String 類的format 方法和字符串拼接,也不會出現線程運行時輸出穿插的現象。所以這次的程序是線程安全的,所以寫起來比較容易,運行效果自己的測試也比較正確。  

  2、類圖總覽

   技術分享圖片

  3、度量化分析

   技術分享圖片

   看來C語言對我的影響還是存在,一個函數總是想讓他有更多的功能,導致不均衡。以後努力改正。

  4、bug分析

  由於莫名奇妙的原因,這次作業被無效了,我表示十分遺憾,不知道自己有沒有更多的bug,但是我自己知道自己存在一個bug,因為我設計的時候,是一個請求一個線程,所以當一個文件被同時監控大小,名字,路徑,觸發時,分別有恢復,寫入summary,寫入detail時,會由於線程的問題,導致結果的不可預測,但都是可以合理解釋的。其他的自己暫未發現。

 第七次作業--出租車問題_1

  1、策略分析

   看到這次的作業,我第一反應就是一百個電梯???(被電梯毒害太深的孩子),不過自己仔細思考發現這次的作業跟電梯也確實有幾分相似的地方,於是設計思路就立刻有了,請求線程,出租車線程,輸入線程。請求線程一開始,就睡3000ms,讓出租車去搶單,搶單搶到的出租車在3000ms後被請求篩選。由於出租車需要掃描請求隊列,輸入需要添加請求,所以就把請求隊列把出租車的掃描與輸入線程的讀入鎖起來。由於請求選中出租車時需要改變出租車的狀態,所以選中哪個出租車就以哪個出租車為鎖,鎖住修改狀態的部分。以便於實現線程的同步,保證線程的安全性。

  2、類圖總覽

  技術分享圖片

·  3、度量化分析

   技術分享圖片

  4、bug分析

  這次沒有被找到bug我還是比較意外的,因為上周要OS期中考試,所以為了復習這次自己的程序寫的的確是有些倉促,不過基本的指令都還是可以跑的,每個出租車的運行軌跡我都單獨輸出一個文件裏,雖說有一百多個文件,但是看起來還是十分清晰的。

心得與體會

  通過這三次作業的編寫與測試,自己也越來越看淡這門課的成績了,只單純的想從這門課訓練下自己的技能。成績並不能絕對的反映出自己這門課學的好壞,只要自己學到自己想學到的東西就好了。

oo第二次總結