摘要: 細想一下這個基本的東西確實不好寫, 實際上我是上面只是考慮了10進制和16進制, 沒有考慮其他進制,也沒有考慮小數,非法的字符串或是溢出等情況, 而真正工業級的庫要考慮所有的情況, 另外還要考慮轉換效率等問題。
閱讀全文
posted @
2013-09-23 22:39 Richard Wei 閱讀(2749) |
評論 (0) |
編輯 收藏
摘要: 我們知道Windows的窗口消息處理函數是C方式, 面向過程的, 所以窗口框架的基本任務就是將它轉成面向對象的方式, 確切的說如何將消息處理函數第一參數HWND轉成對象指針。
閱讀全文
posted @
2013-09-08 14:47 Richard Wei 閱讀(4393) |
評論 (11) |
編輯 收藏
摘要: 最近工作 中有個需求是抓取桌面截圖, 這里的桌面是指點了“顯示桌面”之后看到的桌面, 截圖內容包括桌面背景和圖標以及任務欄
閱讀全文
posted @
2013-08-30 20:30 Richard Wei 閱讀(7985) |
評論 (2) |
編輯 收藏
摘要: google test, 最好的單元測試框架
閱讀全文
posted @
2013-08-29 16:26 Richard Wei 閱讀(2778) |
評論 (0) |
編輯 收藏
摘要: 記錄一些Windows 安全相關的概念, 分享自己對Windows安全機制的一些理解。
閱讀全文
posted @
2013-08-25 07:58 Richard Wei 閱讀(10975) |
評論 (3) |
編輯 收藏
摘要: 簡單總結下, 語言不在多,在精。經常使用你覺得有價值的語言。深入掌握一門腳本。
閱讀全文
posted @
2013-08-17 19:32 Richard Wei 閱讀(4278) |
評論 (2) |
編輯 收藏
摘要: 很多人說COM過時了, 也許”純正的標準COM“確實是使用的人越來越少了, 但是COM的思想卻一直在后續的程序中被使用和發揚, 可以說COM技術是微軟技術框架的“根”。
閱讀全文
posted @
2013-07-20 16:59 Richard Wei 閱讀(4671) |
評論 (6) |
編輯 收藏
摘要: 很多人說跟著微軟跑真累,確實如此。 但是回頭來想想, 那是因為你一直落后, 你一直在追趕, 你一直是被趕著走的, 所以你會覺得累。如果你一直是與微軟起頭并進, 甚至領先與微軟(微軟新加的東西是你意料到的), 你就不會有累的感覺,有新東西出來, 研究下原理, 寫些測試代碼,就大概知道怎么回事了。
閱讀全文
posted @
2013-07-18 00:05 Richard Wei 閱讀(3131) |
評論 (8) |
編輯 收藏
摘要: 越抽象的東西離底層機器就越遙遠, C++隔著復雜的編譯器, Java/C#隔著虛擬機, 腳本語言隔著解釋器, 這就是高級語言的代價。
閱讀全文
posted @
2013-06-20 22:38 Richard Wei 閱讀(3327) |
評論 (3) |
編輯 收藏
摘要: 28個在64位平臺上使用C/C++開發的注意事項
閱讀全文
posted @
2013-06-05 23:14 Richard Wei 閱讀(1811) |
評論 (0) |
編輯 收藏
摘要: FirstNext, IEnum, IEnumerator, Iterator, foreach
閱讀全文
posted @
2013-05-15 22:01 Richard Wei 閱讀(3868) |
評論 (0) |
編輯 收藏
摘要: 在cppblog從2012年5月份開通博客到現在正好一周年, 看了下文章數量,還是挺有收獲,其中原創50多篇, 轉載10多篇。
雖然文章質量不高, 但起碼都是自己一些真實感悟和總結, 回頭再看這些文章,一年的技術經歷還是挺清晰的,感覺自己還是有挺大提高。
閱讀全文
posted @
2013-04-30 23:46 Richard Wei 閱讀(2357) |
評論 (4) |
編輯 收藏
摘要: 最近有機會看號稱是公司最核心的代碼, 因為這個代碼以前一直是美國那邊保密的, 這么重要的代碼會是啥樣子?
真正拿到手大致看了一下后卻挺失望的,因為該代碼風格基本上是我剛畢業時的C++風格----帶類的C,單從代碼上看寫的挺濫,里面沒啥設計模式, 也沒有用模板, 代碼里面甚至一個函數可以寫上近千行。
這么重要的代碼, 竟然是這種風格, 由此思考好的C++程序應該是什么風格?
閱讀全文
posted @
2013-04-27 23:28 Richard Wei 閱讀(4792) |
評論 (11) |
編輯 收藏
摘要: 博大精深的C++, 各類庫, 總結的比較全
閱讀全文
posted @
2013-04-16 21:03 Richard Wei 閱讀(1074) |
評論 (0) |
編輯 收藏
摘要: 講解C++11右值引用最詳細的文章
閱讀全文
posted @
2013-04-12 17:09 Richard Wei 閱讀(1325) |
評論 (0) |
編輯 收藏
摘要: google的開源項目值得我們一用的,這些項目很有意義,甚至可以直接用在我們自己的工作上!學習編程的的一個比較好的方式就是閱讀優秀項目的源代碼,從而能夠了解作者的方法、思路、技巧
閱讀全文
posted @
2013-04-09 21:20 Richard Wei 閱讀(1261) |
評論 (1) |
編輯 收藏
摘要: 總結下常見的C++內存池,以備以后查詢。
應該說沒有一個內存池適合所有的情況, 根據不同的需求選擇正確的內存池才是正道.
閱讀全文
posted @
2013-04-08 20:53 Richard Wei 閱讀(17161) |
評論 (0) |
編輯 收藏
摘要: Windows的API封裝了太多細節, 盡管大部分時候我們只要知道如何使用它們,而不用關心它們的內部如何實現。 但是當你寫一些相對底層的東西,比如開發自己的DirectUI界面庫時, 還是需要真正理解某些API的內部實現原理,才能繼續深入下去
閱讀全文
posted @
2013-04-07 22:19 Richard Wei 閱讀(5188) |
評論 (10) |
編輯 收藏
摘要: 個人嘗試山寨了下STL, 對STL的6大組件(containers, algorithms, iterators, functors, adaptors, allocators)都有涉及。 當然山寨STL不是為了重復造輪子,而是為了更好的理解和擴展STL。
閱讀全文
posted @
2013-04-03 16:54 Richard Wei 閱讀(2529) |
評論 (2) |
編輯 收藏
摘要: 關于宏的一些技巧,總結得挺好,寫庫的時候比較有用。
閱讀全文
posted @
2013-03-25 17:31 Richard Wei 閱讀(1848) |
評論 (0) |
編輯 收藏
摘要: 對系統原理和程序運行過程的理解,會熟練使用調試器是一個層次,能單獨開發調試器又是另外一個層次。
下面是一個不錯的系列,告訴你如何自己開發一款微型調試器
閱讀全文
posted @
2013-03-12 10:28 Richard Wei 閱讀(1972) |
評論 (0) |
編輯 收藏
摘要: 理解成員函數指針的最佳資料
閱讀全文
posted @
2013-03-02 18:43 Richard Wei 閱讀(1401) |
評論 (1) |
編輯 收藏
摘要: 通過WinDbg結合AppVerifier, 我們可以詳細的跟蹤堆中new出來的每一塊內存。 很多時候在沒有源代碼的Release版本中,在程序運行一段時間后,如果我們發現有大內存或是大量同樣大小的小內存一直沒有釋放, 我們就可以用上面的方法進行分析和快速的定位問題。
閱讀全文
posted @
2013-02-27 14:35 Richard Wei 閱讀(18891) |
評論 (10) |
編輯 收藏
摘要: 盡管這個概念已經讓人說濫了 ,還是想簡單記錄一下, 以備以后查詢。
閱讀全文
posted @
2013-02-25 22:13 Richard Wei 閱讀(7720) |
評論 (2) |
編輯 收藏
摘要: 從編譯時到運行時,從面向對象到普通范型編程再到模板元編程,C++復雜得讓人無語, 也強大得讓人無語, 而且C++語言本身是在不斷發展的(C++11), 同一問題在C++中往往有多種解決方案,這些解決方案有的簡單,有的復雜,有的高效, 也有的低效, 而我們的目標就是利用C++這把利器尋找簡單而高效的解決方案。
閱讀全文
posted @
2013-02-14 20:31 Richard Wei 閱讀(5379) |
評論 (10) |
編輯 收藏
摘要: 第一種實現和接口混合繼承的方法最簡單,也最容易理解, 缺點是沒法完全基于接口編程; 第二種基于模板的方法比較難理解,實現上也比較簡單, 缺點是代碼膨脹; 第三種多重繼承的方法也比較容易理解, 缺點是我們要多做一些工作。
閱讀全文
posted @
2013-02-08 19:40 Richard Wei 閱讀(2548) |
評論 (5) |
編輯 收藏
摘要: 在31年前(1979年),一名剛獲得博士學位的研究員,為了開發一個軟件項目發明了一門新編程語言,該研究員名為Bjarne Stroustrup,該門語言則命名為——C with classes,四年后改稱為C++。C++是一門通用編程語言,支持多種編程范式,包括過程式、面向對象(object-oriented programming, OP)、泛型(generic programming, GP),后來為泛型而設計的模版,被發現及證明是圖靈完備的,因此使C++亦可支持模版元編程范式(template metaprogramming, TMP)。C++繼承了C的特色,既為高級語言,又含低級語言功能,可同時作為系統和應用編程語言。
閱讀全文
posted @
2013-02-02 20:25 Richard Wei 閱讀(1335) |
評論 (0) |
編輯 收藏
摘要: 在上文 在C++中實現事件(委托) 中我們實現的C#里委托方式的事件處理, 雖然使用很方便,但是似乎少了一點C#的味道, 下面我們嘗試把它改成真正的C#版。
其實要改成真正的C#版,我們主要要做2件事, 一是吧CEventHandler放到外面,可以讓外部直接構造, 二是實現operator +=和operator -=
閱讀全文
posted @
2013-01-31 15:39 Richard Wei 閱讀(3426) |
評論 (1) |
編輯 收藏
摘要: 在C++中實現回調機制的幾種方式一文中,我們提到了實現回調的三種方式(C風格的回調函數, Sink方式和Delegate方式)。在面向對象開發中,delegate的方式是最靈活和方便的,因此很早就有人用復雜的模板去模擬, 實現起來很復雜。但是現在借助C++11的function和bind, 我們可以很方便的去實現。
閱讀全文
posted @
2013-01-31 14:16 Richard Wei 閱讀(10359) |
評論 (8) |
編輯 收藏
摘要: 軟件系統的分析和設計的基本任務是:確立系統中的基本元素(完成系統的功能所必不可少的成分);確定這些元素之間相互作用的方式(這就是系統的體系結構)。
閱讀全文
posted @
2013-01-27 21:15 Richard Wei 閱讀(3217) |
評論 (1) |
編輯 收藏
摘要: 總之, 一開始我們會覺得WinRT很好奇, 但是后來我們逐步發現它其實并沒有那么神秘, 它是很多微軟現有技術的合成體。 微軟的技術更新很多時候讓人眼花潦蘭,但是底層本質的東西(比如COM,D3D,Win32)其實一直很少改變。
閱讀全文
posted @
2013-01-13 16:31 Richard Wei 閱讀(8368) |
評論 (6) |
編輯 收藏
摘要: 微軟在Intel處理器上開發Windows操作系統, 我們在Windows操作系統上開發應用程序,無非是一層層的封裝, 其實具體到細節, 每層都沒有太多神秘的東西。我們當然不可能掌握每層的細節, 只能理解每層的概念, 以幫助我們在應用層更好的開發。
閱讀全文
posted @
2013-01-13 13:26 Richard Wei 閱讀(3580) |
評論 (0) |
編輯 收藏
摘要: “SSDT”(System Service Descriptor Table,系統服務描述符表) Inline Hook FSD”(File System Driver,文件系統驅動)
閱讀全文
posted @
2013-01-12 22:32 Richard Wei 閱讀(1462) |
評論 (0) |
編輯 收藏
摘要: windows程序運行分為內核模式和用戶模式,內核模式可以訪問所有的內存地址空間, 并且可以訪問所有的CPU指令。一般程序運行在用戶模式, 通過系統調用切換到內核模式執行系統功能,Windows系統通過這種方式來確保系統的安全和穩定。
閱讀全文
posted @
2013-01-12 22:03 Richard Wei 閱讀(8602) |
評論 (0) |
編輯 收藏
摘要: 異步編程是個好東西,但是不該被濫用和誤用。下文轉自: http://msdn.microsoft.com/zh-cn/magazine/hh456402.aspx異步編程長時間以來一直都是那些技能高超、喜歡挑戰自我的開發人員涉足的領域 — 這些人愿意花費時間,充滿熱情并擁有心理承受能力,能夠在非線性的控制流程中不斷地琢磨回調,之后再回調。 隨著 Microsoft ...
閱讀全文
posted @
2012-12-16 21:15 Richard Wei 閱讀(1689) |
評論 (0) |
編輯 收藏
摘要: 現在小米2手機都已經4核了,更別說PC機了 。 多核,并發 ,異步編程是不可阻擋的趨勢, 各種語言也都逐漸加入了對異步編程的支持。異步編程的本質是將主線程某些任務委托給某個線程處理,主線程繼續無阻塞運行, 等另外一個線程處理完了再將結果通知主線程(在主線程中調用某個主線程的結果處理方法)。本來很好理解的概念,但是因為匿名函數(Lambda)導致的閉包和多線程以及編譯器在背后做了很多事情,導致我們很...
閱讀全文
posted @
2012-12-16 20:28 Richard Wei 閱讀(2650) |
評論 (0) |
編輯 收藏
摘要: 有些人說GP的抽象能力高于OO,這個觀點我并不認同,我感覺只是他們的抽象方式不一樣,OO是基于接口, 而GP是基于concept。OO的基于接口的抽象,在源代碼和最終運行時都能體現,源代碼中是接口,運行時是虛表,所以他們是一致的, 符合普通人的思維習慣。GP基于concept的抽象, 主要體現在源代碼中 ,只是你用來告訴編譯器你的思維方式, 在運行時他可能是一個完全不同的世界,所以比較難理解。
閱讀全文
posted @
2012-11-10 14:25 Richard Wei 閱讀(3257) |
評論 (7) |
編輯 收藏
摘要: 通過上面的分析 ,相信我們知道了為什么ATL/WTL大量使用模板,但是生成的exe還是這么小的原因 :
不是模板不會使代碼膨脹,而是ATL/WTL在設計時就關注了這個問題 ,它避免了在可能生成很多模板實例的模板類中編寫大量代碼(有些拗口,不知道你有沒有讀懂^_^)
總結下 ,如果你想用模板,但是又不想 讓自己最終的可執行文件變的很大, 有2種方式:
(1)你的模板類不會生成很多模板實例,這樣寫成模板類還有意義嗎?
(2)你的模板類的代碼量或是函數個數很少,你可以仿照ATL的方式把模板無關的東西逐層剝離。
閱讀全文
posted @
2012-11-08 22:37 Richard Wei 閱讀(4047) |
評論 (2) |
編輯 收藏
摘要: 以我個人的經驗,一些東西剛開始看不太懂就放一放,先去看一些基本的東西,比如不懂COM,先去學下C++ 中的虛函數;不懂C++模板,先去學下STL;不懂Thunk,先去看一下匯編,等有了一定的積累,回頭再看,一切就覺得沒這么難了。
閱讀全文
posted @
2012-10-23 00:23 Richard Wei 閱讀(3278) |
評論 (0) |
編輯 收藏
摘要: 在實際的應用中,SQLite作為目前最為流行的開源嵌入式關系型數據庫,在系統的架構設計中正在扮演著越來越為重要的角色。和很多其它嵌入式NoSQL數據庫不同的是,SQLite支持很多關系型數據庫的基本特征,這在數據移植、程序演示等應用中有著不可替代的優勢。從官方文檔中我們可以獲悉到,SQLite支持的數據量和運行效率都是非常驕人的,因此在海量數據的解決方案中,SQLite可以作為數據預計算的橋頭堡,從而顯著減少存儲在關系型數據庫服務器中的數據數量,最終提高系統的查詢效率和運行期效率,同時也可以顯著的降低數據備份的磁盤開銷。
閱讀全文
posted @
2012-10-16 10:12 Richard Wei 閱讀(5207) |
評論 (0) |
編輯 收藏