原创 軟件設計師算法之分治法--快速排序

                  快速排序也是通過分治法。它的思路是先確定第一個元素的位置,該位置之前的元素全部小於第一個元素,該位置之後的元素全部大於該元素。確定位置後,把數組分爲了前後2部分,對這2部分執行遞歸操作,直達遞歸到數組爲

原创 QT tabWidget控件插入對話框

    之前在WTL的tab界面下,通過創建不同的子對話框,實現不同的功能。     轉到Linux平臺下,果斷選擇QT,發現通過tab頁面插入各個不同的對話框也是類似的,代碼還更簡單。      Dialog1 *d1 = new

原创 二維數組旋轉90度、180度、270度

      圖像處理中,很多時候要使用到二維數組的旋轉。本質上二維數組的旋轉其實就是座標的變換,即旋轉後的座標(x,y)需要對應到原有二維數組的座標點上,取到正確的值即可完成正確的旋轉。       規則很好找。見如下的代碼中的3個轉換公

原创 WinDbg 小貼士 -- dt命令搜索查看符號

            使用WinDgb調試的時候,我們需要和各種結構體等符號打交道。包括系統的符號等等。          有時候符號太多了,我們根本記不住或者只有模糊的印象,比如只記得其中的2個字母,怎麼辦?這時候dt搜索就可以幫上忙

原创 軟件設計師算法之回溯法--全排列

      全排列大家都知道。這裏是通過最普遍的全排列,來理解回溯法的一個實現。最普通的全排列,比如A B C 三個字母,每個字母只能用一次,來進行排列,共有6種結果,比如ABC,ACD等。這個全排列結果和我們現實生活中N個人排隊的可能性

原创 UNIX v6源代碼分析調試之三:單步調試系統代碼 main函數之 kvmalloc

      kvmalloc();      // kernel page table     kvmalloc函數初始化內核的內存分頁頁表。關於虛擬內存,線性地址,內存分頁,內存分段等等在操作系統原理的書籍中都有詳細說明,我這裏就不囉嗦

原创 通過例子學設計模式之--外觀模式以及使用場景說明(C++實現)

         外觀模式,爲子系統中的一組接口提供一個一致的界面,定義一個高層接口,這個接口使得這一子系統更加容易使用。         由於子系統可能有多個,而且聯繫錯綜複雜,作爲系統的使用者,我們不想也不需要去了解這些子系統之間的聯

原创 UNIX v6源代碼分析調試之二:單步調試系統代碼 main函數之 kinit1

    環境搭建完成,該學習Main.c的main函數了。先貼上main函數的實現。int main(void) { kinit1(end, P2V(4*1024*1024)); // phys page allocator kv

原创 通過例子學設計模式之--簡單工廠模式以及使用場景說明(C++實現)

      這個模式應該說是非常簡單的。作用也很明顯,就是面向對象中,可能會創建大量的不同類別的對象,不可避免就會出現大量的new操作。爲了統一管理對象的創建和銷燬,我們可以添加一個類,這個類提供創建和銷燬的接口。       實際的項目

原创 GNU早期開源工具和源代碼下載鏈接地址(早期版本)

          鏈接地址爲: http://ftp.gnu.org/old-gnu/       記錄下,該鏈接可以下載到各種很早期版本的GNU工具,包括grep glibc等大量開源庫。分享出來

原创 QT增加鏈接庫和頭文件搜索目錄(相對目錄)

     QT開發的時候,需要增加鏈接的動態庫或者靜態庫,或者搜索的頭文件。正常情況下,使用相對目錄是最好的。下面是常用的方法:     1 增加庫依賴。如下,OUT_PWD表示QT編譯後的輸出目錄。比如Debug或者Release目錄。

原创 鄰接表實現--圖的深度優先遍歷DFS和廣度優先遍歷BFS

          圖論中一個基本的概念就是遍歷。就是訪問到圖的每一個頂點,同時每個頂點只訪問一次。           DFS和BFS的概念和思路網上說明的很詳細了。但是網上很多代碼實現有缺陷,基本都沒有考慮圖不連通的情況,比如某個

原创 通過例子學設計模式之--適配器模式以及使用場景說明(C++實現)

          適配器模式的定義:適配器模式將一個類的接口轉換成客戶期望的另一個接口,讓原本不兼容的接口可以合作無間。           該模式應該好理解。比如電源適配器(中國和歐洲分別是電源220V,110V)就是該模式的一種表現

原创 通過例子學設計模式之--原型模式以及使用場景說明(C++實現)

           想必很多人都玩過魔獸爭霸3。裏面有一個非常厲害的英雄叫做劍聖。這個英雄攻擊力算是最高的,而且有個聽起來很叼的魔法,“劍刃風暴”,這個魔法其實效果一般,不大實用。          

原创 鄰接表實現--圖的拓撲排序

     有向圖的拓撲排序是基礎算法,也是很重要的一個算法。      它的思路如下:       (1)統計所有頂點的入度,接着把入度爲0的全部入棧或者入隊列。       (2)取出棧頂元素,或者隊列的首個元素,標記該頂點爲"已訪問"