當前位置:編程學習大全網 - 編程語言 - 急急急,簡述win32的編程基本思想

急急急,簡述win32的編程基本思想

高手成長的六個階段

第壹階段

此階段主要是能熟練地使用某種語言。這就相當於練武中的套路和架式這些表面的東西。

第二階段

此階段能精通基於某種平臺的接口(例如我們現在常用的Win32的API函數)以及對應語言的自身的庫函數。到達這個階段後,也就相當於可以進行真實散打對練了,可以真正地在初中中做些應用。

第三階段

此階段能深入地了解某個平臺系統的底層,已經具有了初級的內功的能力,也就是“手中有劍,心中無劍”。

第四階段

此階段能直接在平臺上進行比較深層次的開發。基本上,能達到這個層次就可以說是進入了高層次。這時進入了高級內功的修煉。比如能進行VxD或操作系統的內核的修改。

這時已經不周有語言的束縛,語言只是壹種工具,即使要用自己不會的語言進行開發,也只是簡單地熟悉壹下,就手到擒來,完全不像是第壹階段的時候學習語言的那種情況。壹般來說,從第三階段過渡到第四階段是比較困難的。為什麽會難呢?這就是很多人的思想轉變不過來。

第五階段

此階段就已經不再局限於簡單的技術上的問題了,而是能從全局上把握和設計壹個比較大的系統體系結構,從內核到外層界面。可以說是“手中無劍,心中有劍”。到了這個階段以後,能對上的任何軟件進行剖析,並能按自己的要求進行設計,就算是MS Word這樣的大型軟件,只要有充足的時間,也壹定會出來。

第六階段

此階段也是最高的境界,達到“無招勝有招”。這時候,任何問題就純粹變成了壹個思路的問題,不是用什麽代碼就能表示的。也就是在旁看壹下少林拳的對戰,就能把此拳拿來就用。這就是真正的大師級的人物。這時,Win 32或Linux在妳眼裏是沒有什麽差別的。

--------------------------------------------------

第壹個階段再向上發展時都要按壹定的方法。第壹、第二個階段通過自學就可以完成,只要多用心去研究,耐心地支學習。

要想從第二個階段過渡到第三個階段,就要有壹個好的學習環境。例如有壹個高手帶領或公司裏有壹個好的練手環境。經過二、三年的積累就能達到第三個階段。

--------------------------------------------------

在Debug的模式下,編譯系統被插入很多的代碼,例如堆檢查、初始化變量等,而在Release下是沒有的。所以在Debug環境下的代碼就會有依賴性,也就是依賴於編譯系統自動生成的壹大堆的代碼。這樣,當轉入Release模式後,就沒有那些代碼。這樣就可能導致出錯。

--------------------------------------------------

通用軟件系統就不能簡單地按照軟件工程的方法來進行設計,因為完全按照軟件工程的方法,可能就會實現不了。

做軟件有壹條原則最重要,那就是減少問題的累積。

而按照傳統軟件工程的方法,即壹開始就可以把所有的問題都找到,但是,通常像不可能預測到程序在開發過程中會遇到的所有的問題的。退壹步說,即使妳把所有的框框條條都設計好,也可能當突然遇到問題的時候,壹時找不到正確的解決方法,而後妳又試圖去解決它,這樣就可能需要花很長的時間去解決這個問題。當妳發現這個問題是很難解決或不能解決時,整個工程都會“流產”。

做接口最好的方法,就是直接用Console程序先實現程序的主體,然後從中提煉出接口來。這樣做提煉會簡單明了。如果用可視界面先實現了程序的功能後再去提煉,就會比較困難,因為這樣就會把界面和實現混在壹起,很難區分。

--------------------------------------------------

動態的分配增加了編程量,所以在允許的情況下盡量使用靜態內存,註意使用後的釋放工作。

先寫函數體再寫函數頭和註釋。

如果沒有的功能塊,就可以以函數在程序中調用的順序進行排序。

--------------------------------------------------

重載在實際中用處不大,但在教科書介紹地很多。

代碼應該分塊閱讀。

--------------------------------------------------

MS-DOS Stub 128bytes

在非Windows環境中執行,顯示“This program cannot be run in DOS mode”

PE Signature 4bytes

\"PE signature found

File Type:EXECUTABLE IMAGE\"

COFF Header 20bytes

文件信息

PE Header 224bytes

第六個字段是程序進入點(entry point),必須加上第九字段的值才是內在地址。

第九個字段是Image Base 的位置,也就是這個文件被加載內存的位置。

第十九字段是subsystem,指示這是Console(文字)模式還是GUI模式。

Section Headers ?

有n個。Name/PhysicalAddress/VirtualSize/SizeOfRawData……

Sections ?

--------------------------------------------------

編程邏輯基礎教程

在開發算法的時候,走查就是正式評審,壹般是2小時。

嵌套模式比順序模式效率要高,因為它減少了判斷的次數,只要條件中任意壹個得到滿足,就立即退出,順序語句往往要對第個條件進行測試。

抽象類?在抽象類中沒有定義的方法,子類中必須定義或者定義抽象類中沒有的方法。否則,新子類也變成了壹個抽象類,從而也就不能它的對象。

關於內部類

當壹個類只有在封裝類的內部環境中才能發揮作用,或者依賴封裝類才能實現相應時,就要使用到內部類。例如,文本光標(跟蹤文本當前的編輯位置)只在特定的文件或文本組件中才有意義。

--------------------------------------------------

軟件知識!

實際工程計劃的事件結點網絡應該是無環的,且存在唯壹的入度為0的開始和唯壹的出度為0的完成結點。事件結點網絡的邊可以帶權,表示完成壹項活動需要的時間。

散列法的基本思想是:由結點的關鍵碼值決定結點的存儲地址。

shell排序法所需的關鍵碼比較和記錄移動個數均為n(1/3)左右,這種排序是不穩定的。

對n個記錄的文件進行快速排序,在最壞的情況下執行時間為O(n(2)),與起泡排序相當。然而快速排序的平均執行時間為O(nlog2 n),顯然優於起泡排序和前面介紹的直接插入排序、直接選擇排序方法。但快速排序需要O(log2 n)的附加存儲開銷,這是因為快速排序算法的實現過程中需要用到大小為O(log2 n)棧空間。

  • 上一篇:朱自清的作品有哪些?
  • 下一篇:不讓IP地址沖突幹擾局域網
  • copyright 2024編程學習大全網