關於這次計算機設計大賽


  忙活了一個月的計算機設計大賽終於結束了,這次的話,收獲確實不少。除了獎項,還見到了很多優秀的人。

  以前看到過一個視頻,大概就是在講985,211的學生比普通本科生強在哪里,印象最深的一句話就是:"當你還在學校里為各種比賽頭疼的時候,人家已經有了自己的公司,又或者已經在某某期刊上發表了自己的文章了"。

  結合這次的比賽,我覺得我和他們的區別就是,我似乎有些封閉,眼界依舊不夠開放。這個和學校的教育方式也有關系,我看過清華大學講操作系統的課,老師在講課的時候還會穿插一些相關知識前沿的東西,比如說可以在那個網站找到最新的相關知識,可以在那個社區與全球的人交流什么的。而講道理我們學校確實永遠的根據教案講課,幾乎一本教案能講幾年也不曾變過。

  不過也確實和學生本人有關系,因為現在網絡很發達了,學校的圍牆並不是圍困學生眼界的根本因素。

  師傅一直強調我得關注行業相關的動向,還有一些消息什么的,但是我確實是沒有關注的太多。我的生活太過於簡單了,並不是那么多姿多彩。

  所以,這次見到了一些優秀的大學的作品(實際上很多和計算機行業不相關),我就能感覺到,他們在學校平台的加持下,早早的就超出了學校的框架。而即使是沒有學校的平台,一個該會發光的人,也應該能發光。

 

  接下來談談這次比賽。

  這次比賽我們的團隊是做了一個筆記本電腦防盜的程序,名字就是筆記本電腦防盜系統(這個名氣起完了之后感覺有說不出來的尬。。。。)

  是C/S結構的,服務端由隊友用Java開發完成,客戶端由我使用Qt完成。

  在做客戶端的時候,遇到了不少問題,就比如說對Qt相關的知識掌握的並不牢固,導致遇到了很多的問題以及Bug 出現了好幾次的野指針,導致程序崩潰,或者莫名其妙的卡住。。。參看我的其他博文,,,

  而這些問題的根本原因就是我對Qt並不熟練,我甚至沒有系統的,完整的學完Qt, 在看了Qt的基本操作之后,就直接拿來用了,然后在開發的過程中,基本就是邊學邊做,導致重寫了足足4次之多。

  代碼長度總共是2500行,但是實際上在此之外大概是寫了至少3000行的廢代碼。

  Qt的特點就是里面的信號槽機制,在寫程序的過程中,發現Qt的這個機制僅僅是使用了一個線程來完成工作的,感覺有些震驚,這就是使用一個線程完成了多個進程才能完成的事情。就比如說,正常開發一個CS結構的程序,服務端或者客戶端至少需要開啟兩個線程,一個用來接收用戶輸入,另一個負責接收。但是Qt實現了一個線程來做這個事情,把本來等待接收的那個線程的等待時間拿來做其他事情了,我覺得這個設計是真的很厲害。然而,為了保持和java服務端的同步,我基本上在網絡傳輸文件哪個部分都是使得程序阻塞執行的。。。 簡直是有罪。。。

  另外,就是對Qt得實現原理如果了解得話,應該就能更加順利得找到bug 就比如說 在編寫代碼得時候,會遇到moc文件不生成得問題,如果當時就知道moc文件在Qt里面得作用以及生成原理的話,就能更快得解決問題。所以,這應該就是一個優秀得java工程師必須了解Jvm什么得原因吧,畢竟,當高度達到一定程度得時候,最開始解決問題的至高手段----百度谷歌,也會失效,明白了原理就能從原理上開始思考問題的根本原因。

  還有就是我覺得我需要去研究一些優秀的代碼。

  因為,我在寫客戶端代碼的時候經常會出現一些問題,就比如說,我使用Qt對某個域名發送了post請求,並且,下一行代碼就要用到結果,而Qt並不是阻塞運行。這里的話,如果是正常的代碼執行順序,請求完畢之后,才會從請求函數返回,並且帶回結果。但是Qt就會發生,我請求完畢之后,直接就返回了,這時候結果還沒有返回,所以下面的代碼肯定會出錯。當時第一個想到的解決方案就是使用一個while循環去等待結果返回,問題在於,直接出現了死循環,至此,我明白了Qt是單線程的。不過后面也找到了解決方案,就是使用QEventLoop,所以我在網絡傳輸部分用了大量的eventloop進行非阻塞延時,感覺這樣算是違背了Qt設計的初衷,Qt的設計者完成了從二維到三維的轉變,但是在我這里又給他進行了降維打擊。。。這里應該是使用信號槽的機制來完成調度的,不過當時已經只剩下最后一個星期了,沒有重寫的機會了,,,就只能先這樣做了。。。

  研究優秀代碼的事情,實際上早就在准備了,,,, 結果一直在阻塞,,,,,

  還有就是服務端的事情,,, 這次服務端就是直接的套接字傳輸json數據格式,C和S分別解析json數據完成傳輸. 使用了雙套接字的方法,倒是避免了很多問題。

  但是下次的服務端絕對用Spring什么的框架做。。。。 簡直,,, 太笨了,用Spring的話,很方便就能完成網站的開發,只需要給我的客戶端提供接口就OK啦。,。。 真是得到教訓了。。。

  還有就是團隊協作的事情了,首先就是要選好隊友,,, 有的隊友太坑了,從頭到尾不動彈,,,下次得注意。

  再者,就是協作開發最重要的就是開發文檔,接口的問題了。因為之前沒有做過相應的東西,所以,這次直接用的json文件來作為描述了。效果不太好,還會有歧義的問題。


免責聲明!

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



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