C++
客戶端UI層設計的思考
摘要: 貌似現在流行知乎live和微信公眾號, 博客已經有些過時了,但關鍵是你對技術的思考和總結, 采用什么方式其實不重要。
(1) 界面和邏輯的分離, view和controller可以由不同的人分別實現, 獨立變動
(2) 基于接口分層設計, 單向依賴且低耦合
(3) UI層數據類型的分類,共有共享的還是私有的
(4) 消息中心,同時支持同步/異步的消息廣播機制, Manager/Controller/Data Model可以各自訂閱自己感興趣的消息
閱讀全文
posted @
2018-05-19 19:50 Richard Wei 閱讀(3712) |
評論 (1) 編輯
關于字符集,編碼格式,大小端的簡單總結
摘要: Windows為什么不用UTF8,非要搞得和其他平臺不一樣?
閱讀全文
posted @
2015-07-25 01:11 Richard Wei 閱讀(4682) |
評論 (2) 編輯
Stack的三種含義(轉載)
摘要: stack: 數據結構, 代碼運行方式, 內存區域
閱讀全文
posted @
2013-12-07 11:41 Richard Wei 閱讀(1613) |
評論 (0) 編輯
字符串轉整數
摘要: 細想一下這個基本的東西確實不好寫, 實際上我是上面只是考慮了10進制和16進制, 沒有考慮其他進制,也沒有考慮小數,非法的字符串或是溢出等情況, 而真正工業級的庫要考慮所有的情況, 另外還要考慮轉換效率等問題。
閱讀全文
posted @
2013-09-23 22:39 Richard Wei 閱讀(2751) |
評論 (0) 編輯
64位平臺C/C++開發注意事項(轉載)
摘要: 28個在64位平臺上使用C/C++開發的注意事項
閱讀全文
posted @
2013-06-05 23:14 Richard Wei 閱讀(1812) |
評論 (0) 編輯
常見的數據枚舉遍歷方法
摘要: FirstNext, IEnum, IEnumerator, Iterator, foreach
閱讀全文
posted @
2013-05-15 22:01 Richard Wei 閱讀(3869) |
評論 (0) 編輯
C++程序風格的思考
摘要: 最近有機會看號稱是公司最核心的代碼, 因為這個代碼以前一直是美國那邊保密的, 這么重要的代碼會是啥樣子?
真正拿到手大致看了一下后卻挺失望的,因為該代碼風格基本上是我剛畢業時的C++風格----帶類的C,單從代碼上看寫的挺濫,里面沒啥設計模式, 也沒有用模板, 代碼里面甚至一個函數可以寫上近千行。
這么重要的代碼, 竟然是這種風格, 由此思考好的C++程序應該是什么風格?
閱讀全文
posted @
2013-04-27 23:28 Richard Wei 閱讀(4793) |
評論 (11) 編輯
常見C++內存池技術
摘要: 總結下常見的C++內存池,以備以后查詢。
應該說沒有一個內存池適合所有的情況, 根據不同的需求選擇正確的內存池才是正道.
閱讀全文
posted @
2013-04-08 20:53 Richard Wei 閱讀(17162) |
評論 (0) 編輯
代碼自動生成-宏帶來的奇技淫巧(轉載)
摘要: 關于宏的一些技巧,總結得挺好,寫庫的時候比較有用。
閱讀全文
posted @
2013-03-25 17:31 Richard Wei 閱讀(1850) |
評論 (0) 編輯
成員函數指針與高性能的C++委托(轉載)
摘要: 理解成員函數指針的最佳資料
閱讀全文
posted @
2013-03-02 18:43 Richard Wei 閱讀(1402) |
評論 (1) 編輯
C++中基于Crt的內存泄漏檢測
摘要: 盡管這個概念已經讓人說濫了 ,還是想簡單記錄一下, 以備以后查詢。
閱讀全文
posted @
2013-02-25 22:13 Richard Wei 閱讀(7720) |
評論 (2) 編輯
C++強大背后(轉載)
摘要: 在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#版。
其實要改成真正的C#版,我們主要要做2件事, 一是吧CEventHandler放到外面,可以讓外部直接構造, 二是實現operator +=和operator -=
閱讀全文
posted @
2013-01-31 15:39 Richard Wei 閱讀(3427) |
評論 (1) 編輯
在C++中實現事件(委托)
摘要: 在C++中實現回調機制的幾種方式一文中,我們提到了實現回調的三種方式(C風格的回調函數, Sink方式和Delegate方式)。在面向對象開發中,delegate的方式是最靈活和方便的,因此很早就有人用復雜的模板去模擬, 實現起來很復雜。但是現在借助C++11的function和bind, 我們可以很方便的去實現。
閱讀全文
posted @
2013-01-31 14:16 Richard Wei 閱讀(10359) |
評論 (8) 編輯
C++模板會使代碼膨脹嗎
摘要: 通過上面的分析 ,相信我們知道了為什么ATL/WTL大量使用模板,但是生成的exe還是這么小的原因 :
不是模板不會使代碼膨脹,而是ATL/WTL在設計時就關注了這個問題 ,它避免了在可能生成很多模板實例的模板類中編寫大量代碼(有些拗口,不知道你有沒有讀懂^_^)
總結下 ,如果你想用模板,但是又不想 讓自己最終的可執行文件變的很大, 有2種方式:
(1)你的模板類不會生成很多模板實例,這樣寫成模板類還有意義嗎?
(2)你的模板類的代碼量或是函數個數很少,你可以仿照ATL的方式把模板無關的東西逐層剝離。
閱讀全文
posted @
2012-11-08 22:37 Richard Wei 閱讀(4047) |
評論 (2) 編輯
理解C++中new背后的行為
摘要: operator new的一些原則:
a. 一般不要重寫全局的operator new, 具體可以參考 不要重載全局 ::operator new
b. 如果重載了operator new, 同時提供所有版本(plain new, nothrow new, placement new)
c. 成對的提供new和delete, 即如果重載了operator new, 同時重載operator delete
閱讀全文
posted @
2012-10-06 22:25 Richard Wei 閱讀(2761) |
評論 (0) 編輯
C++編程規范
摘要: C++編程規范...
閱讀全文
posted @
2012-10-06 20:05 Richard Wei 閱讀(879) |
評論 (0) 編輯
探索C++對象模型
摘要: 總之,拿著一把刀,庖丁解牛般的剖析語言背后的實現細節,看起來不是那么實用,但是它能讓你對語言的理解更深刻。實際上ATL中大量應用上面的技術,如果沒有對C++ 對象模型有比較深刻的理解,是很難深入下去的。
閱讀全文
posted @
2012-09-21 23:02 Richard Wei 閱讀(4156) |
評論 (2) 編輯
理解C++變量存儲模型
摘要: 通過上面的分析,我們驗證了平時C++書上關于各種類型變量存儲區域的假設,簡單來說就是全局變量和靜態變量會被編譯到可執行文件的數據節(分只讀和可讀寫)中, 非靜態的局部變量則分配在堆棧(stack)上,而new(malloc)出來的內存則分配在堆(heap)上。
閱讀全文
posted @
2012-09-20 21:57 Richard Wei 閱讀(2470) |
評論 (0) 編輯
C/C++中可變參數的原理
摘要: 從上面的例子我們可以看到,對于可變參數的函數,有2種東西需要確定,一是可變參數的數量, 二是可變參數的類型,上面的例子中,參數數量我們是在第一個參數指定的,參數類型我們是自己約定的。這種方式在實際使用中顯然是不方便,于是我們就有了_vsprintf, 我們根據一個格式化字符串的來表示可變參數的類型和數量,比如C教程中入門就要學習printf, sprintf等。
總的來說可變參數給我們提供了很高的靈活性和方便性,但是也給會造成不確定性,降低我們程序的安全性,很多時候可變參數數量或類型不匹配,就會造成一些不容察覺的問題,只有更好的理解它背后的原理,我們才能更好的駕馭它。
閱讀全文
posted @
2012-09-18 00:04 Richard Wei 閱讀(1978) |
評論 (0) 編輯
C++中模塊(Dll)對外暴露接口的幾種方式
摘要: 當然,上面幾種DLL對外暴露接口的方式本質上沒有區別,都是利用PE文件的導出節來導出數據和函數,但是根據它們使用方式的不同,對外部模塊來說還是有很大的區別,我們的推薦次序依次是:COM方式->導出API函數方式->導出類方式。
閱讀全文
posted @
2012-08-29 18:58 Richard Wei 閱讀(4276) |
評論 (0) 編輯
C++中實現回調機制的幾種方式
摘要: 最后簡單比較下上面3種實現回調的方法:
第一種Callback的方法是面向過程的,使用簡單而且靈活,正如C語言本身。
第二種Sink的方法是面向對象的,在C++里使用較多, 可以在一個Sink里封裝一組回調接口,適用于一系列比較固定的回調事件。
第三種Delegate的方法也是面向對象的,和Sink封裝一組接口不同,Delegate的封裝是以函數為單位,粒度比Sink更小更靈活。
閱讀全文
posted @
2012-08-28 12:36 Richard Wei 閱讀(5014) |
評論 (3) 編輯
C++11新特性不完全測試
摘要: Lambda, auto, 統一初始化,智能指針,Regex, Random,
function and bind, hash_map…
右值引用和Move語義, 并發(多線程庫)…發布
閱讀全文
posted @
2012-06-06 17:34 Richard Wei 閱讀(3540) |
評論 (4) 編輯
如何判斷一個C++對象是否在堆上
摘要: 在帖子 "如何判斷一個C++對象是否在堆棧上” 中, 又有人提出如何判斷一個C++對象是否在堆上。
閱讀全文
posted @
2012-05-12 14:30 Richard Wei 閱讀(5435) |
評論 (8) 編輯
如何判斷一個C++對象是否在堆棧上
摘要: 要解答這個問題,其實就是要知道的堆棧的起始地址, 而我們知道堆棧其實就是一段有相同屬性的內存頁面
閱讀全文
posted @
2012-05-12 10:57 Richard Wei 閱讀(5651) |
評論 (9) 編輯
一個高效的內存池實現
摘要: 在高效C++編程中看到一個不錯的內存池實現方案,這里共享下,大家看看有什么不足。
閱讀全文
posted @
2012-05-05 23:23 Richard Wei 閱讀(18376) |
評論 (12) 編輯
引用計數的智能指針的實現與思考
摘要: 引用計數在軟件開發中是一項非常重用的技術,它可以說是無處不,我們在不知不覺中都在和它打交道,比如 Windows上的COM和Handle, Mac上的ref句柄,腳本語言中的垃圾回收技術。
閱讀全文
posted @
2012-05-05 17:04 Richard Wei 閱讀(4990) |
評論 (4) 編輯