C++
客戶端UI層設(shè)計(jì)的思考
摘要: 貌似現(xiàn)在流行知乎live和微信公眾號, 博客已經(jīng)有些過時了,但關(guān)鍵是你對技術(shù)的思考和總結(jié), 采用什么方式其實(shí)不重要。
(1) 界面和邏輯的分離, view和controller可以由不同的人分別實(shí)現(xiàn), 獨(dú)立變動
(2) 基于接口分層設(shè)計(jì), 單向依賴且低耦合
(3) UI層數(shù)據(jù)類型的分類,共有共享的還是私有的
(4) 消息中心,同時支持同步/異步的消息廣播機(jī)制, Manager/Controller/Data Model可以各自訂閱自己感興趣的消息
閱讀全文
posted @
2018-05-19 19:50 Richard Wei 閱讀(3764) |
評論 (1) 編輯
關(guān)于字符集,編碼格式,大小端的簡單總結(jié)
摘要: Windows為什么不用UTF8,非要搞得和其他平臺不一樣?
閱讀全文
posted @
2015-07-25 01:11 Richard Wei 閱讀(4701) |
評論 (2) 編輯
Stack的三種含義(轉(zhuǎn)載)
摘要: stack: 數(shù)據(jù)結(jié)構(gòu), 代碼運(yùn)行方式, 內(nèi)存區(qū)域
閱讀全文
posted @
2013-12-07 11:41 Richard Wei 閱讀(1630) |
評論 (0) 編輯
字符串轉(zhuǎn)整數(shù)
摘要: 細(xì)想一下這個基本的東西確實(shí)不好寫, 實(shí)際上我是上面只是考慮了10進(jìn)制和16進(jìn)制, 沒有考慮其他進(jìn)制,也沒有考慮小數(shù),非法的字符串或是溢出等情況, 而真正工業(yè)級的庫要考慮所有的情況, 另外還要考慮轉(zhuǎn)換效率等問題。
閱讀全文
posted @
2013-09-23 22:39 Richard Wei 閱讀(2759) |
評論 (0) 編輯
64位平臺C/C++開發(fā)注意事項(xiàng)(轉(zhuǎn)載)
摘要: 28個在64位平臺上使用C/C++開發(fā)的注意事項(xiàng)
閱讀全文
posted @
2013-06-05 23:14 Richard Wei 閱讀(1828) |
評論 (0) 編輯
常見的數(shù)據(jù)枚舉遍歷方法
摘要: FirstNext, IEnum, IEnumerator, Iterator, foreach
閱讀全文
posted @
2013-05-15 22:01 Richard Wei 閱讀(3890) |
評論 (0) 編輯
C++程序風(fēng)格的思考
摘要: 最近有機(jī)會看號稱是公司最核心的代碼, 因?yàn)檫@個代碼以前一直是美國那邊保密的, 這么重要的代碼會是啥樣子?
真正拿到手大致看了一下后卻挺失望的,因?yàn)樵摯a風(fēng)格基本上是我剛畢業(yè)時的C++風(fēng)格----帶類的C,單從代碼上看寫的挺濫,里面沒啥設(shè)計(jì)模式, 也沒有用模板, 代碼里面甚至一個函數(shù)可以寫上近千行。
這么重要的代碼, 竟然是這種風(fēng)格, 由此思考好的C++程序應(yīng)該是什么風(fēng)格?
閱讀全文
posted @
2013-04-27 23:28 Richard Wei 閱讀(4826) |
評論 (11) 編輯
常見C++內(nèi)存池技術(shù)
摘要: 總結(jié)下常見的C++內(nèi)存池,以備以后查詢。
應(yīng)該說沒有一個內(nèi)存池適合所有的情況, 根據(jù)不同的需求選擇正確的內(nèi)存池才是正道.
閱讀全文
posted @
2013-04-08 20:53 Richard Wei 閱讀(17185) |
評論 (0) 編輯
代碼自動生成-宏帶來的奇技淫巧(轉(zhuǎn)載)
摘要: 關(guān)于宏的一些技巧,總結(jié)得挺好,寫庫的時候比較有用。
閱讀全文
posted @
2013-03-25 17:31 Richard Wei 閱讀(1863) |
評論 (0) 編輯
C++中基于Crt的內(nèi)存泄漏檢測
摘要: 盡管這個概念已經(jīng)讓人說濫了 ,還是想簡單記錄一下, 以備以后查詢。
閱讀全文
posted @
2013-02-25 22:13 Richard Wei 閱讀(7746) |
評論 (2) 編輯
C++強(qiáng)大背后(轉(zhuǎn)載)
摘要: 在31年前(1979年),一名剛獲得博士學(xué)位的研究員,為了開發(fā)一個軟件項(xiàng)目發(fā)明了一門新編程語言,該研究員名為Bjarne Stroustrup,該門語言則命名為——C with classes,四年后改稱為C++。C++是一門通用編程語言,支持多種編程范式,包括過程式、面向?qū)ο?object-oriented programming, OP)、泛型(generic programming, GP),后來為泛型而設(shè)計(jì)的模版,被發(fā)現(xiàn)及證明是圖靈完備的,因此使C++亦可支持模版元編程范式(template metaprogramming, TMP)。C++繼承了C的特色,既為高級語言,又含低級語言功能,可同時作為系統(tǒng)和應(yīng)用編程語言。
閱讀全文
posted @
2013-02-02 20:25 Richard Wei 閱讀(1342) |
評論 (0) 編輯
在C++中實(shí)現(xiàn)事件(委托)(續(xù))
摘要: 在上文 在C++中實(shí)現(xiàn)事件(委托) 中我們實(shí)現(xiàn)的C#里委托方式的事件處理, 雖然使用很方便,但是似乎少了一點(diǎn)C#的味道, 下面我們嘗試把它改成真正的C#版。
其實(shí)要改成真正的C#版,我們主要要做2件事, 一是吧CEventHandler放到外面,可以讓外部直接構(gòu)造, 二是實(shí)現(xiàn)operator +=和operator -=
閱讀全文
posted @
2013-01-31 15:39 Richard Wei 閱讀(3438) |
評論 (1) 編輯
在C++中實(shí)現(xiàn)事件(委托)
摘要: 在C++中實(shí)現(xiàn)回調(diào)機(jī)制的幾種方式一文中,我們提到了實(shí)現(xiàn)回調(diào)的三種方式(C風(fēng)格的回調(diào)函數(shù), Sink方式和Delegate方式)。在面向?qū)ο箝_發(fā)中,delegate的方式是最靈活和方便的,因此很早就有人用復(fù)雜的模板去模擬, 實(shí)現(xiàn)起來很復(fù)雜。但是現(xiàn)在借助C++11的function和bind, 我們可以很方便的去實(shí)現(xiàn)。
閱讀全文
posted @
2013-01-31 14:16 Richard Wei 閱讀(10391) |
評論 (8) 編輯
C++模板會使代碼膨脹嗎
摘要: 通過上面的分析 ,相信我們知道了為什么ATL/WTL大量使用模板,但是生成的exe還是這么小的原因 :
不是模板不會使代碼膨脹,而是ATL/WTL在設(shè)計(jì)時就關(guān)注了這個問題 ,它避免了在可能生成很多模板實(shí)例的模板類中編寫大量代碼(有些拗口,不知道你有沒有讀懂^_^)
總結(jié)下 ,如果你想用模板,但是又不想 讓自己最終的可執(zhí)行文件變的很大, 有2種方式:
(1)你的模板類不會生成很多模板實(shí)例,這樣寫成模板類還有意義嗎?
(2)你的模板類的代碼量或是函數(shù)個數(shù)很少,你可以仿照ATL的方式把模板無關(guān)的東西逐層剝離。
閱讀全文
posted @
2012-11-08 22:37 Richard Wei 閱讀(4062) |
評論 (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 閱讀(2770) |
評論 (0) 編輯
C++編程規(guī)范
摘要: C++編程規(guī)范...
閱讀全文
posted @
2012-10-06 20:05 Richard Wei 閱讀(890) |
評論 (0) 編輯
探索C++對象模型
摘要: 總之,拿著一把刀,庖丁解牛般的剖析語言背后的實(shí)現(xiàn)細(xì)節(jié),看起來不是那么實(shí)用,但是它能讓你對語言的理解更深刻。實(shí)際上ATL中大量應(yīng)用上面的技術(shù),如果沒有對C++ 對象模型有比較深刻的理解,是很難深入下去的。
閱讀全文
posted @
2012-09-21 23:02 Richard Wei 閱讀(4178) |
評論 (2) 編輯
理解C++變量存儲模型
摘要: 通過上面的分析,我們驗(yàn)證了平時C++書上關(guān)于各種類型變量存儲區(qū)域的假設(shè),簡單來說就是全局變量和靜態(tài)變量會被編譯到可執(zhí)行文件的數(shù)據(jù)節(jié)(分只讀和可讀寫)中, 非靜態(tài)的局部變量則分配在堆棧(stack)上,而new(malloc)出來的內(nèi)存則分配在堆(heap)上。
閱讀全文
posted @
2012-09-20 21:57 Richard Wei 閱讀(2482) |
評論 (0) 編輯
C/C++中可變參數(shù)的原理
摘要: 從上面的例子我們可以看到,對于可變參數(shù)的函數(shù),有2種東西需要確定,一是可變參數(shù)的數(shù)量, 二是可變參數(shù)的類型,上面的例子中,參數(shù)數(shù)量我們是在第一個參數(shù)指定的,參數(shù)類型我們是自己約定的。這種方式在實(shí)際使用中顯然是不方便,于是我們就有了_vsprintf, 我們根據(jù)一個格式化字符串的來表示可變參數(shù)的類型和數(shù)量,比如C教程中入門就要學(xué)習(xí)printf, sprintf等。
總的來說可變參數(shù)給我們提供了很高的靈活性和方便性,但是也給會造成不確定性,降低我們程序的安全性,很多時候可變參數(shù)數(shù)量或類型不匹配,就會造成一些不容察覺的問題,只有更好的理解它背后的原理,我們才能更好的駕馭它。
閱讀全文
posted @
2012-09-18 00:04 Richard Wei 閱讀(1986) |
評論 (0) 編輯
C++中模塊(Dll)對外暴露接口的幾種方式
摘要: 當(dāng)然,上面幾種DLL對外暴露接口的方式本質(zhì)上沒有區(qū)別,都是利用PE文件的導(dǎo)出節(jié)來導(dǎo)出數(shù)據(jù)和函數(shù),但是根據(jù)它們使用方式的不同,對外部模塊來說還是有很大的區(qū)別,我們的推薦次序依次是:COM方式->導(dǎo)出API函數(shù)方式->導(dǎo)出類方式。
閱讀全文
posted @
2012-08-29 18:58 Richard Wei 閱讀(4313) |
評論 (0) 編輯
C++中實(shí)現(xiàn)回調(diào)機(jī)制的幾種方式
摘要: 最后簡單比較下上面3種實(shí)現(xiàn)回調(diào)的方法:
第一種Callback的方法是面向過程的,使用簡單而且靈活,正如C語言本身。
第二種Sink的方法是面向?qū)ο蟮模贑++里使用較多, 可以在一個Sink里封裝一組回調(diào)接口,適用于一系列比較固定的回調(diào)事件。
第三種Delegate的方法也是面向?qū)ο蟮模蚐ink封裝一組接口不同,Delegate的封裝是以函數(shù)為單位,粒度比Sink更小更靈活。
閱讀全文
posted @
2012-08-28 12:36 Richard Wei 閱讀(5033) |
評論 (3) 編輯
C++11新特性不完全測試
摘要: Lambda, auto, 統(tǒng)一初始化,智能指針,Regex, Random,
function and bind, hash_map…
右值引用和Move語義, 并發(fā)(多線程庫)…發(fā)布
閱讀全文
posted @
2012-06-06 17:34 Richard Wei 閱讀(3575) |
評論 (4) 編輯
如何判斷一個C++對象是否在堆上
摘要: 在帖子 "如何判斷一個C++對象是否在堆棧上” 中, 又有人提出如何判斷一個C++對象是否在堆上。
閱讀全文
posted @
2012-05-12 14:30 Richard Wei 閱讀(5474) |
評論 (8) 編輯
如何判斷一個C++對象是否在堆棧上
摘要: 要解答這個問題,其實(shí)就是要知道的堆棧的起始地址, 而我們知道堆棧其實(shí)就是一段有相同屬性的內(nèi)存頁面
閱讀全文
posted @
2012-05-12 10:57 Richard Wei 閱讀(5692) |
評論 (9) 編輯
一個高效的內(nèi)存池實(shí)現(xiàn)
摘要: 在高效C++編程中看到一個不錯的內(nèi)存池實(shí)現(xiàn)方案,這里共享下,大家看看有什么不足。
閱讀全文
posted @
2012-05-05 23:23 Richard Wei 閱讀(18415) |
評論 (12) 編輯
引用計(jì)數(shù)的智能指針的實(shí)現(xiàn)與思考
摘要: 引用計(jì)數(shù)在軟件開發(fā)中是一項(xiàng)非常重用的技術(shù),它可以說是無處不,我們在不知不覺中都在和它打交道,比如 Windows上的COM和Handle, Mac上的ref句柄,腳本語言中的垃圾回收技術(shù)。
閱讀全文
posted @
2012-05-05 17:04 Richard Wei 閱讀(5017) |
評論 (4) 編輯