原创 C#中的多態特性

C#中的多態特徵與C++類似也存在相同的隱藏與運行時多態,但在C#中,隱藏特徵需要通過關鍵字顯示指明。在C#中,多態關鍵字有三個: virtual: 如基類方法增加該關鍵字,則表明子類可重寫此方法,重寫分爲兩種:隱藏和多態。 new: 隱

原创 模板約束

與C++模板不同,C#模板增加了對於泛化類的約束問題,泛化類約束共計4中類型: 基類約束:要求泛化類必須繼承至某個基類。 接口約束:要求泛化類必須實現某個接口。 構造函數約束:要求泛化類必須提供默認的構造函數。 值/引用數據類型約束:要求

原创 Android 觸屏畫圖

Android系統中觸屏畫圖中主要需要解決以下問題: 1.      畫圖的視圖,在哪上面畫? 2.      怎麼畫? 3.      畫的位置? Android官方文檔描述畫圖需要自定義視圖(Custom View),通過重載OnDr

原创 COM學習筆記三--聚合

在開發過程中,當一個COM B需要調用另一個COM A時,這時有兩種方法來實現該操作:包含,聚合。前一種直接保存A的對象指針,所有的操作均在B中進行封裝,涉及到A操作方法,利用A對象指針完成調用;而聚合在初始化期間保存對象A的指針,在運行

原创 C++ 中[]操作符重載

在實際程序中遇到一操作符問題,記錄下來方便以後查詢。在寫HashTable數據結構中,遇到操作符[]重載問題,具體需求如下: 1.      a[x] = b; //如果a[x]爲空,則添加記錄 2.      b = a[x]; //如

原创 CC2530 事件輪詢流程

CC2530芯片中的操作系統抽象層(OSAL)是一個多任務操作系統,在開發時首先需要將任務靜態添加至系統進行編譯,當任務執行後會產生對應的事件,當系統初始化時,需要初始化新添加的任務: void osalInitTasks( void )

原创 C#判斷對象相等

C#語言中,由於內存爲系統自動管理,且重載Equals方法形參爲Object基類,加上C#建議實現GetHashCode方法來加快判斷,這樣在判斷相等方面就多了幾步: 1.       判斷兩個對象是否對象相等; 2.       判斷兩

原创 Sqlalchemy 亂碼解決方法

這幾天遇到一個問題:通過Sqlalchemy將數據存入mysql時出現了亂碼,結合網上的解決方案,彙總如下: 1. 設置引擎編碼方式爲utf8。 engine = create_engine("mysql+pymysql://root:1

原创 C#與IronScheme交互

IronScheme爲C#版本的Scheme編譯器,通過它可以實現scheme與C#之間的相互調用,scheme編寫爲庫,C#直接調用scheme庫函數,這樣就可以動態加載scheme代碼,完成調用。Scheme也可以調用C#中的庫函數或

原创 基於VC++的Solidworks 插件開發

Solidworks插件開發中,通過VC++自動生成所有的模板文件後,主要添加一些邏輯代碼及菜單,就可以進行直接的開發: 1.      添加符號表,處理函數 2. 添加工具欄代碼: title.LoadString(IDS_SWAT

原创 CC2530中斷處理方法

在CC2530手冊中2.5小節總結了中斷處理的一般步驟,其中涉及的名稱如下: 1.  清除中斷標誌位 2.  全局中斷標誌EA,用於開啓所有中斷 3.  設置特殊功能寄存器(SFR)中中斷標誌位 4.  設置IEN0、IEN1、

原创 協變(Covariance)與逆變(Contravariance)

協變與逆變是類型系統中一個常見的問題,基類與子類之間類型變換時的定義要求。 協變:模板參數實例化中的子類賦值給基類,保留類型的順序,從具體類型到抽象類型。 IEnumerable<Base> base =IEnumerable<Deriv

原创 Linq 延遲執行

使用Linq時,其中一個重要概念就是延遲執行,所有的謂詞求值需要等到觸發時纔會被調用。在聲明時,它們是不執行的,除非調用Lambda表達式,造成其中的代碼開始執行,否則不會被執行。如果Lambda表達式執行的代價比較高(如調用數據庫,密集

原创 線程消息通信

           線程間的消息通信主要採用PostThreadMessage函數來實現,主線程通過該函數來實現消息的發送,副線程則採用消息循環機制來驅動程序,當副線程無GUI時,就不能調用TranslateMessage,Dispat

原创 添加Linq支持

C#中添加Linq支持,只需添加一個迭代器就完成支持。迭代器模式是面嚮對象語言一個常見設計模式,C#中無需像C++那樣維護一個內部狀態,通過關鍵字yield模式來實現,編譯器通過自動生成一個內部類來維護迭代器中的狀態。測試程序如下: pu