原创 CLR via C#:線程基礎

基礎知識:如下所示: 1.不同的應用程序會分配成不同的進程(一個虛擬地址空間)。一個進程中使用的代碼和數據無法被另一個進程訪問,從而確保應用程序的健壯性(可靠性)。 2.一個進程中可以分配多個線程,且不同進程的線程之間互相獨立。當

原创 CLR via C#:與WinRT組件互操作

基礎知識:如下所示: 1.WinRT組件使用由ECMA協會標準化的.NET元數據格式(ECMA-335)來描述其API,這些元數據會嵌入到擴展名爲.winmd的文件中。 2.RCW(運行時可調用包裝器)內部引用了WinRT組件。

原创 CLR via C#:運行時序列化

特殊聲明:如下所示: 1.本博客中的"特殊構造函數"指的是具有SerializationInfo和StreamingContext類型參數的構造函數。 基礎知識:如下所示: 1.對象圖是一個抽象的概念,代表的是對象系統在特定時間點

原创 CLR via C#:程序集加載和反射

程序集加載:具有以下特性: 1.Assembly.Load:在大多數動態可擴展應用程序中,該函數是將程序集加載到AppDomain的首選方式。 2.AssemblyName.GetAssemblyName:該函數打開指定的文件,找

原创 CLR via C#:CLR寄宿和AppDomain

CLR寄宿:流程如下所示: 1.調用MSCorEE.dll中的CLRCreateInstance函數來獲取一個ICLRMetaHost接口。 2.調用ICLRMetaHost接口的GetRuntime函數來指定宿主要創建的CLR版

原创 CLR via C#:生成,打包,部署和管理應用程序和類型

PE文件結構:PE文件也叫做可移植執行體文件,其結構如下所示: 1.PE文件由程序集組成。 2.程序集由託管模塊和資源文件以及元數據清單表組成。 3.託管模塊由PE32或者PE32+頭,CLR頭,元數據,IL組成。 4.PE32或

原创 PyQt5-Win安裝和使用

安裝PyQt5:安裝流程如下: 1.PyQt5下載界面中提供了win32,win64,linux,macos等系統的下載版本,這裏我選擇的是PyQt5-5.10.1-5.10.1-cp35.cp36.cp37.cp38-none-

原创 實踐篇:光的反射實現原理

前言:本篇博客只是一個簡單的瞭解光的反射實現原理的例子,主要是當做筆記使用。 核心要點:如下所示: 1.光的折射原理主要依賴於斯涅爾定義。如下所示: 2.光的反射原理主要依賴於菲涅爾定義。由於其過於複雜,一般使用菲涅爾近似值來表

原创 CLR via C#:託管堆和垃圾回收

託管堆:指的是進程初始化時,CLR開闢的一個地址空間區域。具有以下特性: 1.存儲大對象的託管堆稱爲大對象堆;存放小對象的託管堆稱爲小對象堆。 2.託管堆內部維護一個NextObjPtr指針來指向下一個對象的分配位置。 3.靜態字

原创 PyQt5-Mac安裝和使用

安裝PyQt5:安裝流程如下: 1.PyQt5下載界面中提供了win32,win64,linux,macos等系統的下載版本,這裏我選擇的是PyQt5-5.13.2-5.13.2-cp35.cp36.cp37.cp38-abi3-

原创 CLR via C#:異常和狀態管理

異常基礎:如下所示: 1.在visual studio的監視窗口中,可以添加特殊變量名稱$exception來查看當前拋出的異常實例。 2.C#將非Exception派生異常封裝在RuntimeWrappedException類的

原创 CLR via C#:字符,字符串和文本處理

語言文化:使用CultureInfo類型來表示一個"語言/國家"對。具有以下特性; 1.內部包含一個CompareInfo類型成員。該成員主要用來封裝語言文化的字符排序表信息。 2.Thread.CurrentUICulture屬

原创 實踐篇:簡單透明度

前言:本篇博客只是一個簡單的實現透明度功能的例子,主要是當做筆記使用。 核心要點:如下所示: 1.要使模型具有透明度效果,必須在Tags中將Queue指定爲Transparent,並且在pass裏面使用blend srcalpha

原创 CLR via C#:枚舉類型和位標誌

枚舉類型:具有以下特性: 1.C#中枚舉類型繼承自基礎類型(byte,sbyte,short,ushort,int(默認),uint,long,ulong) ,但是IL中枚舉類型繼承自System.Enum,並且內部定義了一組常量

原创 CLR via C#:委託

使用委託:使用流程如下所示: 1.使用delegate關鍵字來定義委託類型。編譯器會使該委託類型繼承自MulticastDelegate,並提供構造函數,同步調用回調函數Invoke,異步調用回調函數BeginInvoke和End