原创 使用Epoll服務器連接MySQL、Redis+Sentinel並實現VIP主從切換

一、在進入實踐之前我先介紹一下基本的需求和配置情況: 計劃配置7臺Centos虛擬機,1個服務端程序,2個client程序,保持長連接 192.168.141.128 服務端 192.168.141.121 客戶端1 192.168.14

原创 編程如禪——工廠模式的智能化實現(c++)(2)消滅switch/case語句以及由名字創建對象

由名字創建對象其實的有挺強的背景,那就是軟件工程學中的對象持久性問題。本文討論的方法也是持久性的一個可能實現。廢話少說,看看C++是怎麼做的。   動態創建當然要用指針。我們不希望在程序中出現硬編碼:   Shape * pShape =

原创 gcc和g++的區別

gcc和g++的區別 我們在編譯c/c++代碼的時候,有人用gcc,有人用g++,於是各種說法都來了,譬如c代碼用gcc,而c++代碼用g++,或者說編譯用 gcc,鏈接用g++,一時也不知哪個說法正確,如果再遇上個extern

原创 宏實現根據對象名創建對象

1. 問題提出: C++ RTTI缺乏一些運行時信息,無法根據對象名直接創建對象。所以MFC爲了實現序列化,從頭構造了自己的RTTI信息,並定義了一整套宏。具體可以參考MFC源代中一下類和宏的實現:CRuntimeClass, CObje

原创 實現觀察者與被觀察者設計模式在事件處理上的應用

VC++, C#, JAVA甚至C++builder的框架對於事件響應和處理都有相似的地方,那就是使用了觀察者和被觀察者的設計模式。 實現觀察者與被觀察者設計模式在事件處理上面的應用使得UI和數據的同步得以實現, 在程序裏面數據是被觀察者