原创 讀Head First設計模式 - 1

一個公司有一款遊戲,鴨子(有很多種類的鴨子)可以有不同的外觀(display函數表示),也可以游泳(swim函數表示),有些鴨子可以飛(fly函數表示)。 方法一:基類Duck定義display,swim,fly三個函數,所有鴨子繼承Du

原创 讀Windows核心編程 - 10 ~ 12

     這三章分別介紹了線程同步工具包、線程池的使用、纖程。線程同步工具包主要以代碼的方式完成了個性化的線程同步工具包。不詳細介紹了,具體內容參看核心編程page229. 這裏簡單介紹一下線程池的使用及纖程的概念。 線程池的使用:   

原创 zz bat文件的寫法

BAT文件寫法 BAT文件寫法擴展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批處理文件。 ==== 注 ======================================= .bat是dos下

原创 讀Windows核心編程 - 5

        Windows2000 提供了一個新的作業內核對象,使你能夠將進程組合在一起,並且創建一個"沙框",以便限制進程能夠進程的操作,最好將作業對象視爲一個進程的容器。與其他所有內核對象相似,創建作業對象需要調用Handle C

原创 讀Windows核心編程 - 9

    上一章我們介紹了用戶方式的線程同步,它的優點是速度非常快。但是它也有其侷限性,比如互鎖函數只能在單值上運行,根本無法使線程進入等待狀態。使用關鍵代碼段可以使線程進入等待狀態,但是隻能用這些代碼段對單個進行中的線程進行同步。另外,使

原创 zz 理解I/O Completion Port(完成端口)

From:http://www.cnblogs.com/flying_bat/archive/2006/09/29/517987.html            歡迎閱讀此篇IOCP教程。我將先給出IOCP的定義然後給出它的實現方法,最後

原创 VC下多進程的調試方法

         比如:A函數調用了CreateProcess創建了另外一個相同的進程,然後這個新進程調用了函數B,我們直接把斷點設在函數B中肯定是不可行的。這裏有兩種方法可以解決這個問題:         1. 在B函數入口調用AfxM

原创 讀Windows核心編程 - 2

Microsoft對Unicode的支持: Windows 98 :只支持ANSI Windows 2000: 即支持Unicode也支持ANSI,但是用Unicode會更快,因爲會有一個內部的轉化過程,比如調用CreateWindowE

原创 讀Windows核心編程 - 1

        當調用一個Windows函數失敗,可以用DWORD GetLastError(); 返回該線程的32位錯誤代碼。WinError.h頭文件中包含了Microsoft公司定義的錯誤代碼列表。每一個錯誤代碼包含消息ID(ERR

原创 讀Windows核心編程 - 6

        線程由兩部分構成:線程堆棧+線程內核對象。通常情況下,一個應用程序擁有一個用戶界面線程,用於創建所有窗口,並且有一個GetMessage循環。進程中的所有其他線程都是工作線程,它們與計算機或者I/O相關聯,但是這些線程從不

原创 字符編碼筆記:ASCII,Unicode和UTF-8

  文章出處:http://blog.163.com/gjm_ku/blog/static/30335502200822534134970/   字符編碼筆記:ASCII,Unicode和UTF-8 今天中午,我突然想搞清楚Unic

原创 zz C++ 虛函數表解析

From:http://www.cppblog.com/mzty/archive/2008/02/18/42877.html C++ 虛函數表解析   前言  C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型

原创 讀Windows核心編程 - 3

        什麼是內核對象?比如:事件對象,文件對象,文件映射對象,互斥對象,進程對象,作業對象,線程對象等等都是內核對象。每個內核對象只是內核分配的一個內存塊,並且只能 由內核訪問。該內存塊是一個數據結構,它的成員負責維護該對象的各

原创 讀Windows核心編程 - 4

        進程分爲兩部分,一個是操作系統用來管理進程的內核對象,一個是地址空間。進程是不活潑的,活潑的是線程,每個線程都有它自己的一組CPU寄存器和它自己的堆棧。         Windows支持兩種應用程序,一種是GUI(基於圖

原创 讀Windows核心編程 - 7

         windows是搶佔式的,我們無法保證線程在某個事件的某個時間段內開始運行。系統只調度可以調度的線程,但實際情況是,系統中的大多數線程是不可調度的。除了暫停的線程外,還有其他許多線程也是不可調度的,因爲它們正在等待某些事