Time of Update: 2018-12-05
Linux中包含有一個很有用的調試工具--gdb(GNU Debuger),它可以用來調試C和C++程式,功能不亞於Windows下的許多圖形介面的調試工具。和所有常用的調試工具一樣,gdb提供了以下功能: # 監視程式中變數的值 # 在程式中設定斷點 # 程式的逐步執行在使用gdb前,必須先載入可執行檔,因為要進行調試,檔案中就必須包含調試資訊,所以在用gcc或cc編譯時間就需要用-g參數來開啟程式的調試選項。調試開始時,必須先載入要進行調試的程式,可以用以下兩種方式: *
Time of Update: 2018-12-05
一 英文名稱 堆和棧是C/C++編程中經常遇到的兩個基本概念。先看一下它們的英文表示: 堆――heap 棧――stack二 從資料結構和系統兩個層次理解 在具體的C/C++編程架構中,這兩個概念並不是並行的。深入到彙編級進行研究就會發現,棧是機器系統提供的資料結構,而堆是由C/C++函數庫提供的。這兩個概念可以從資料結構和系統兩個層次去理解:
Time of Update: 2018-12-05
我們要談貫徹執行和提供執行力首先要要考慮紀律,在《專業主義》裡面提到過,要想成為專家,有一個重點就是具有永不厭倦的好奇心和進取心,嚴格遵守紀律。曆史上偉大和卓越的企業都有一個共同的特徵就是嚴格遵守紀律和強大的執行力。無論如何完善教育制度,如何增加報酬和改善福利,也不會產生大批的專家。只有紀律——或許稱之為價值觀更準確些,才能培養出專家。在郝明義的《工作DNA》裡面也曾經談到過,人在職場的基本功即是掌握情緒,重視承諾,鍛煉紀律,實踐誠實。在敏捷式軟體開發 (Agile Software
Time of Update: 2018-12-05
沒有任何技術或管理上的進展,能夠獨立地確保十年內使生產率、可靠性或簡潔性獲得數量級上的進步。-沒有銀彈一個相互牽制關聯的概念結構,是軟體實體必不可少的部分,它包括:資料集合、資料條目之間的關係、演算法、功能調用等等。這些要素本身是抽象的,體現在相同的概念構架中,可以存在不同的表現形式。儘管如此,它仍然是內容豐富和高度精確的。我認為軟體開發中困難的部分是規格化、設計和測試這些概念上的結構,而不是對概念進行表達和對實現逼真程度進行驗證。當然,我們還是會犯一些語法錯誤,但是和絕大多數系統中的概念錯誤相
Time of Update: 2018-12-05
據《創世紀》記載,巴比倫塔是人類繼諾亞方舟之後的第二大工程壯舉,但巴比倫塔同時也是第一個徹底失敗的工程。為何擁有了清晰的目標,充足的人力和物力資源的項目最後仍然失敗,巴比倫塔給我們的管理教訓就是它們缺乏溝通和交流,以及交流的結果-組織。他們無法相互交談,從而無法合作。當合作無法進行時,工作陷入了停頓。通過史書的字裡行間,我們推測交流的缺乏導致了爭辯、沮喪和群體猜忌。很快,部落開始分裂——大家選擇了孤立,而不是互相爭吵。溝通是整個項目團隊的核心要素,關於項目的共同願景,目標,進度任務,問題,風險,
Time of Update: 2018-12-05
岸上的船兒,如何海上的燈塔,無法移動。 -
Time of Update: 2018-12-05
實踐是最好的老師,但是,如果不能從中學習,再多的實踐也沒有用。這個章區段標頭是胸有成竹,而要做到胸有成竹就必須在專案計劃階段我們對項目的預測和估算都需要很準確。因此整個章節的內容就是在講估算,而估算就涉及到預測和估算模型,估算要做到準確必須通過前期多個曆史項目和版本的積累,同時通過曆史版本和資料的積累來發現預測指標Y和相應的估算因子X之間的關係。這樣建立出來的估算模型就可以提供我們的估算準確性。最早用的估算方法是建立需求->設計->編碼->測試各個階段工作量之間的比例關係,然後
Time of Update: 2018-12-05
1. 線程限制 在應用伺服器中打流量,發現存在命令逾時問題 分析:線程已經被喚醒,但是得不到調度。 作業系統是Linux-2.6.17,核心被設定為非搶佔式核心,因此一旦一個核心線程得到調度,且該線程總是獲得資源而沒有阻塞,那麼該線程將一直運行下去,其它線程得不到調度。 逾時問題解決的核心是清除線程長期霸佔CPU的情況。由於每個使用者串連對應多個核心線程,也需要消除一個陣列霸佔CPU的情況,從而避免其他陣列線程得不到調度。 2.
Time of Update: 2018-12-05
削足適履-關注程式的空間規模和空間控制技能削足適履這個章節在講什嗎?我們很多時候在開發程式的時候都是考慮程式的已耗用時間和效率,而很少考慮到程式的Runspace問題。現在的儲存空間是越來越廉價,我們很少去考慮這些問題。經典的DOS版本的仙劍奇俠傳還不到20M,而現在的一個大遊戲卻是2,3G甚至更大。由於電腦的不斷更新換代和效能的提升,我們不是特別去強調空間問題,而對於一些作業系統的底層程式我們仍然會強調空間的問題。在開始講的時候首先講了軟體產品的規模控制,這個規模則是指的空間儲存,軟體產品的規
Time of Update: 2018-12-05
記憶體可以說是C和C++語言學習的關鍵點。這裡說一點我的理解,一家之言,歡迎拍磚哈。記憶體要想理解透徹,首先要理解記憶體編址。即不同的記憶體條,記憶體模組,插到機器上,具體對應的記憶體位址是多少。最開始的PC機,IBM PC
Time of Update: 2018-12-05
區別:從DESCRIPTION看來,兩者的功能基本相同,唯一不同的是,當 dest 和 src 有重疊的時候選用不同的函數可能會造成不同的結果。不妨寫個小程式來測一下:0 #i nclude <string.h>1 #i nclude <stdio.h>23 int main()4 {5 int i = 0;6 int a[10];7 8 for(i; i < 10; i++)9 {10 a[i] = i;11
Time of Update: 2018-12-05
向進度落後的項目中增加人手,只會使進度更加落後。
Time of Update: 2018-12-05
在開發小組中,最好和最查人員生產率比在10:1,在運行效率和空間上5:1驚人差距。如果一個200人的項目中,有25個最能乾和最有開發經驗的專案經理,那麼開除剩下的175名程式員,讓專案經理來編程開發。對於一個軟體項目,適合的項目團隊規模在20人左右,這是一個專職的IT專案經理可以管理的最大值。那由於項目進度壓力需要增加團隊規模到100人的時候,讓專案經理來開發實際操作是很困難的方式,在這裡推薦的方式是將系統按照高內聚,松耦合分解為5個子系統。這樣則可以將100個分解為5個項目,由5個專案經理來管
Time of Update: 2018-12-05
1. Segment fault時core檔案產生設定1.1. 修改/etc/profile/etc/profile 中ulimit那一行修改成:ulimit -S -c unlimited 然後sh /etc/profile , 就可以生效,如有進程segment fault ,可以用gdb core 檔案看死在哪裡了。 1.2 確保後台進程也產生coredump的方法:1).建立一個存放core檔案的目錄: mkdir
Time of Update: 2018-12-05
1.未雨綢繆不變只是願望,變化才是永恒。- SWIFT 普遍的做法是,選擇一種方法,試試看;如果失敗了,沒關係,再試試別的。不管怎麼樣,重要的是先去嘗試。 - 富蘭克林 D. 羅斯福 為之於未有,始之於未然。 -《道德經》
Time of Update: 2018-12-05
這章開頭以教堂來說明概念完整性,所以先學習下法國蘭斯大教堂:這是一座從公元13世紀便動手修建的教堂。在其3段式構造的教堂正面,高高矗立著2座左右對稱的尖塔。每當夕陽西下時,整座教堂便沐浴在金黃色的光輝之中。遍布教堂外牆的花紋及雕像也非常美麗動人。特別是正面中央大門右側的四尊立像,更是歌德建築鼎盛時期的傑作。此外,仍然是正面部分的作品《微笑的天使》、《瑪麗亞的侍從》、《聖約瑟夫》等,也全都是優秀作品。由於建築的平面圖是經過嚴格計算過的,所以,達到了近乎完美無瑕的左右對稱。奧古斯特·羅丹面對蘭斯大教
Time of Update: 2018-12-05
1.整體部分(部分如何高品質的整合為一個整體)根據英文內容這裡最好應該翻譯為整體和部分。為了得到整體的可運行和高品質的軟體,我們需要在哪些方面進行改進和下功夫。這章主要從消除Bug的設計,構件單元測試和系統整合調試三個方面來談。之所以談消除Bug的設計,就讓我們更加意識到品質是設計出來的,而不是測試出來的。V.A.Vyssotsky
Time of Update: 2018-12-05
畫蛇添足就過分設計,而書中很明確的指出了過分設計往往出現在設計和開發第二個系統的時候,對於第一個系統他們小心謹慎,傾向於精鍊和簡潔,但是到了第二個系統他們太想去追求完美,又加上盲目的自信,再加上沒有太多的成本和進度等意識,導致了畫蛇添足和過分設計。結構師如何避免畫蛇添足——開發第二個系統所引起的後果(second-system effect)?是的,他無法跳過二次系統。但他可以有意識關注那些系統的特殊危險,運用特別的自我約束準則,來避免那些功能上的修飾;根據系統基本理念及目的變更,捨棄一些功能。
Time of Update: 2018-12-05
在預設對齊下,且結構體中只有基本類型時【1】結構體變數的首地址能夠被其最寬基本類型成員的大小所整除【2】結構體每個成員相對於結構體首地址的位移量是成員大小的整數倍【3】結構體的總大小為結構體最寬基本類型成員大小的整數倍當有嵌套複合成員時,【2】改為:複合成員相對於結構體首地址位移量是複合成員最寬基本類型大小的整數倍說明一下對齊的概念。結構體成員的對齊是指成員相對於結構體首地址的位移量(offset)應該被2^n整除,n通常取0、1、2、3、4,稱此時的對齊為2^n-byte對齊。例如2-byte
Time of Update: 2018-12-05
GNU autotools工具介紹Linux下,工程管理器 Make 可用於自動編譯、連結程式的工具 + 生產力。我們要做的是寫一個makefile 檔案,然後用make命令來編譯、連結程式。Makefile的作用就是讓編譯器知道要編譯一個檔案需要依賴其他的哪些檔案。這裡我們就是要用GNU Autotools來收集系統配置資訊並自動產生Makefile檔案。GNU