開始改bug,在改bug中,有4點感受:
1、一個類不宜寫得太大,很難想象一個有四五十個成員函數(shù)的類能具有很好的可讀性和可維護性。在著重考慮可讀性和可維護性,將效率次之的情況下,可以有比較多的辦法來實現(xiàn)。
2、與程序行為無關(guān)的全局變量,特別是一些數(shù)據(jù)和表格,比如我們的缺省配置,報警配置等等,應(yīng)該引入機制,放到程序外面,這樣,無形中程序就小了(因為這些變量都將放到程序的.data段),也便于統(tǒng)一處理。
3、基類企圖統(tǒng)一共有操作,但職責(zé)不明確。我的觀點是,不管用什么辦法,能統(tǒng)一處理的,就統(tǒng)一處理,不讓別人插手;存在差異性,不好統(tǒng)一處理的,決不處理。欲言又止的事情還是少一點。
4、在包含頭文件時,還是盡量避免 include all 的情況,這樣每次頭文件改動,基本上需要重新編譯一遍。還是用哪個包含哪個比較好。
對于生產(chǎn)者和消費者在僅搶占式任務(wù)調(diào)度的OS中優(yōu)先級的設(shè)定問題。對于兩個線程,假如同操作一個隊列,誰優(yōu)先級高誰執(zhí)行的次數(shù)多是毋庸置疑的,但這執(zhí)行不一定是有效的。假如消費者優(yōu)先級高,那么對它而言,大多數(shù)情況下隊列為空,它不斷的被掛起,喚醒。假如生產(chǎn)者優(yōu)先級高,那么對它而言,大多數(shù)情況下隊列為滿,它同樣的不斷被掛起,喚醒。這樣,兩種辦法實際上都不是有效的。那么兩個線程一定要sleep,至少高優(yōu)先級的一定要sleep,可sleep多長時間呢。對于消費者和生產(chǎn)者X,Y,假如消費者消費速率為x,sleep時間為xt,生產(chǎn)者生產(chǎn)速率為y,sleep時間為yt,隊列長度為L,那么何時總消費速率 M 最大呢?此時xt和yt分別為多少?顯然是一個規(guī)劃問題(不一定是線性的)。那么當(dāng)線程個數(shù)是3,而且互相制約呢,比如有兩個Q1,Q2,對于Q1,X,Y分別是消費者和生產(chǎn)者,對于Q2,Y,Z分別是消費者和生產(chǎn)者,那么此時的最佳情況又如何呢?(一定不是平面上的線性規(guī)劃問題,三個變量嘛。)如果為 n 呢?看起來就很復(fù)雜了,有空再研究。
最近在網(wǎng)上看了些文章,說這個相貌俊朗的人大多內(nèi)心善良,而模樣丑惡的一般都不干什么好事。如果是你天生丑陋,善事做的多了,自然也眉清目秀了,而若你本身雖美貌俊秀,虧心事干久了,相貌中便也透出一股陰氣,冷颼颼讓人寒顫。想想雖無法解釋,但也確有道理,放眼看看各位看官,自然都是正人君子,故齊刷刷一片帥哥美女,偶爾有幾個慘點的,但神態(tài)中彰顯高貴,一副氣宇軒昂的樣子,那相貌中的不足也全然忽略了。
古人云:相由心生。觀相之術(shù)流傳至今必然有一定的道理。也許相貌不能決定你的命運,但它必然記錄你的歷史,就像年輪一樣。
昨與莫君閑談代碼之美感,均覺得代碼寫的好不好,不宜細(xì)看,可以遠(yuǎn)觀。若錯落有致,此起彼伏,時而悠長,時而短促,大多是寫的比較好的。反而雜亂無章,參差不齊,格式潦草,一般都是寫的差的。雖然代碼的排版格式,命名注釋的風(fēng)格與代碼本身的質(zhì)量無關(guān)。就像美貌和智慧本無必然聯(lián)系,但一般而言,長得漂亮的水果大都好吃,那些七扭八歪的常常發(fā)育不良。
故云,貌美者未必智慧,然美貌與智慧常兼?zhèn)洹?br>
---------------------------------------------------------------
有一定道理,代碼首先是給人讀的,就算設(shè)計上還不是很合理,但是排版和注釋能起到一定的抵消作用.
白居易寫詩首先給老婦人讀,如果老婦人聽明白了,他就認(rèn)為詩寫的完美了.簡單是詩的第一個臺階.
代碼一樣,首先需有吸引人閱讀的魅力,讓別人看進去,別人才能進一步和你交流設(shè)計上的正邪,流程上的優(yōu)劣.如果一大堆陌生的邏輯,沒有任何注釋,對別人就是一種心里上的傷害.如果這種傷害太多,談什么協(xié)作,團隊,統(tǒng)統(tǒng)是扯淡.
--------------------------------------------------
張進
這個成語大致是指那些第一個干壞事的人,然而始作俑者未必曉得自己做了件壞事,無心做了件錯事,背了幾千年罵名,是不是很冤枉呢?其實一點都不。
做軟件和其它的行業(yè)有些不同,就是維護的成本很大,維護基本上是軟件的主要工作,一錘子買賣的很少,加功能,更改,移植,兼容等等等等,無一不對軟件的可維護性提出更高的要求,而這一切往往在開始就決定了。置身事外的人往往理解不了這些,改個這東西,有什么難的,我們的xxx都用了這么久了,肯定沒問題,等等。
千載尤行秦制度,祖宗之法已從公元前220年沿襲兩千余年,卻仍轟然而毀。對這個制度,兩千年來不斷的變化,修正,彌補,如果計算成本的話,不知道是多么大的一個天文數(shù)字。而結(jié)果只不過是比歐洲落后了幾百年,喪失了工業(yè)革命的機會。
對于生孩子這件事情,男人們其實只要努一點點力就好了,女人卻要承受280天的重負(fù)以及隨之的巨大痛楚,而這一切并沒有結(jié)束,女人們要放棄自己的生活,相夫教子,而男人只要甩一點奶粉錢就不管了,男人怎么能明白其中的艱辛呢。
以前有很多博彩類型的街機,象什么“電子基盤”、“龍虎斗”,“老虎機”、“熊貓機”,還有一些推硬幣的,撥香煙的。我有一個朋友比較熱衷這些,總希望從里面賺取一點收益。大家可想而知,玩這些必定是虧本的,因為老板是要賺錢的。但我這位朋友最終竟然從中賺了不少,原因是在不斷的嘗試中,他找到了這些東西的bug。
不知道大家以前有沒有盜打過電話,當(dāng)時我們對電話通訊還是研究了很久,包括電信(以前叫郵局)的業(yè)務(wù)也進行了研究,找到漏洞。之后有好幾年打電話都不花錢,然后就認(rèn)識了很多女孩子。
在單機時代,有些游戲很難,我們總想著投機取巧。為什么它能把游戲進度存下來?存檔文件里面有什么?經(jīng)過幾次嘗試,我們終于用dos下的debug程序,把自己改成等級999,擁有所有裝備和物品。
但是不管怎么說,破解是困難的。如果你妄想破解一個256位密鑰的DES加密,基本死幾遍也不可能。那怎么辦呢?答案是“社會工程學(xué)”。
談到黑客,不能不說凱文•米特尼克,在若干年后,我看到了他的《The Art of Deception》這本書,不覺驚呼,英雄所見略同。當(dāng)我給sina的郵箱管理員寫了一封誠懇的Email,得到了某人的密碼時,我就深深的領(lǐng)悟了這點。
一個系統(tǒng)的安全取決于人,而不是技術(shù)。