原创 設計模式:Template Method

Template Method 在程序的開發過程中可以將開發者分爲類庫開發人員和應用程序開發人員。 一般情況下,由類庫開發人員實現基本功能函數,再有應用程序開發人員使用類庫實現邏輯組裝,考慮如下例子。 //程序庫開發人員 clas

原创 設計模式:Decorator

Decorator-裝飾模式 裝飾模式用於處理,軟件組件設計中的責任劃分不清晰,導致子類通過繼承得到大量的冗餘重複代碼,代碼的急劇膨脹問題。裝飾模式關鍵在於劃清責任。 考慮設計一個IO庫、相關流操作。其中有文件流,網絡流、內存流等

原创 設計模式:Factory Method

工廠方法-Factory Method 動機-Motivation 在軟件系統中,經常面臨創建對象的工作,由於需求的變化,需要創建的對象的具體類型也經常變化。 例子 文件分割器 代碼 class ISplitter{ public

原创 設計模式:Observer/Event

Observer/Event-觀察者模式 在軟件構建過程中,我們可能需要爲某些對象建立通知依賴關係,當一個對象的狀態發生改變,所有的依賴對象(觀察者)都將得到通知。 如下例子,考慮實現一個文件分割器,需要將文件分割進度通過某種控件

原创 設計模式:Strategy

Strategy-策略模式 稅務計算 根據不同國家的稅率進行不同算法計算 enum TaxBase { CN_Tax, US_Tax, DE_Tax, FR_Tax //更改 }; class SalesOr

原创 設計模式:Bridge

Bridge-橋模式 由於某些類型的固有實現邏輯,使得類型具有多個變化維度。 考慮這個例子,需要實現通信設計。 設置有Message類型,有Login、SendMessage、SendPicture,以及PlaySound、Dra

原创 數據結構:單鏈表

#include<iostream> #include<random> #define ERROR 0 #define OK 1 using namespace std; //節點定義 typedef int ElemTyp

原创 數據結構:線性表

#include<iostream> using namespace std; #define MAXSIZE 5 #define OK 1 #define TRUE 1 #define FALSE 0

原创 讀書筆記:Windows核心編程 字符和字符串處理

字符編碼 一、單字節 ANSI 二、雙字節 DBCS 三、windows平臺下字符編碼 windows Vista使用Unicode-16 雙字節編碼,支持使用代理擴展至32位4個字節,描述少數使用16位不夠的字符。在簡化代碼與節

原创 讀書筆記-Windows核心編程:錯誤處理

常見的Windows函數返回值數據類型 當windwos 檢測到錯誤時,會使用一種叫線程本地存儲區的機制。 其作用是將錯誤代碼與"主調線程’"關聯。 是不同線程間互不干擾對方錯誤代碼,使得各個線程獨立運行。 當錯誤產生時,win

原创 算法:歐幾里得法求最大公約數

算法實現 int gcd(int p,int q){ if(q==0)return p; int r=p%q; return gcd(q,r); } 測試

原创 算法:插入排序

原创 Qt QRegxp與C++STLRe雙引號轉義匹配區別

接到個需求解析CAN協議描述文件(DBC文件) 客戶是新能源汽車公司 要對DBC文件內(Message)報文信息,(Signal)屬於報文信號量和其他關鍵信息做解析並自動生成代碼(從通信層到應用層數據的映射C代碼) 發現以前有寫過

原创 C++STL std::swap

有如下兩個類 當前需要交換兩個Widget對象 class WidgetImpl{ public: private: int a,b,c; std::vector<double>v; }; class Widget{ publi

原创 C++ pure virtual,impure virtual,non-virtual函數關於繼承的實際意義

區分接口繼承和實現繼承 本篇主要討論pure virtual函數(純虛函數),impure virtual函數(虛函數),以及non-virtual函數(非虛函數)繼承中的實際意義. 概念上通過public繼承,實際上可以分爲函數