Time of Update: 2017-02-06
小知識(二)位元運算符: 與:& 二進位位均為1時,結果為1,否則0。 二元運算,位元壓縮。 或:| 二進位位均為0時,結果為0,否則1。 二元運算,位元壓縮。 異或:^ 二進位位相同時,結果為0,否則1。 二元運算,位元壓縮。 反:~ 二進位0時,結果為1,否則0。 一元運算,位元壓縮。 左位移:<< 相當於乘2的n次冪。 二元運算。
Time of Update: 2017-02-06
小知識(一)var:初始化必須有賦值,var i;(錯的)。var類型的對象運行過程中不允許再更改類型。(如:var i=1; i="hello!" 會出錯)var只聲明局部變數。dynamic:初始化時可以不賦值。dynamic類型的對象運行過程中可以給該類型。(如:dynamic i=1; i="hello!" 不出錯)可聲明為全域變數。VAR和DYNAMIC:一般當不確定變數類型時使用。decimal:
Time of Update: 2017-02-06
本例是對WinForm中使用百度地圖的簡要介紹。百度地圖目前支援Android開發,IOS開發,Web開發,服務介面,具體可以參照'百度地圖開放平台'。【動態載入百度地圖】涉及到的知識點:WebBrowser控制項,此控制項是VS內建的控制項,使使用者可以在WinForm表單中導航網頁。主要用到Navigate函數,此函數將指定的統一資源定位器 (URL) 處的文檔載入到瀏覽器新視窗或 System.Windows.Forms.WebBrowser
Time of Update: 2017-02-06
3. Excel匯出3.1 匯出流程3.2 NPOI作業碼說明:把List<T>轉換為Excel步驟:①建立一個活頁簿(Workbook);②在活頁簿上建立一個工作表(Sheet);③在工作表上建立第一行(row),第一行為列頭,依次寫入cellHeard的值(做為列名)。④迴圈遍曆List<T>集合,每迴圈一遍建立一個行(row),然後根據cellHeard的鍵(屬性名稱)依次從List<T>中的實體物件取值存放到儲存格內。代碼:///
Time of Update: 2017-02-06
一、序列化的含義序列化是將對象處理為位元組流以儲存物件或傳輸到記憶體、資料庫或檔案。其主要目的是儲存對象的狀態,以便可以在需要時重新建立對象。相反的過程稱為還原序列化。1.1 序列化的工作方式此圖顯示序列化的整個過程。對象被序列化為流。流傳遞的不僅是資料,還包括有關物件類型的資訊,如對象的版本、地區性和程式集名稱。通過該流,可以將Object Storage Service在資料庫、檔案或記憶體中。 1.2
Time of Update: 2017-02-06
之前由於項目需要,中間需要一個漢字轉拼音和首拼的功能來做查詢,感覺這種功能基本已經成熟化了,於是尋找了相關的代碼,首先引入眼帘的是下面兩篇文章C#
Time of Update: 2017-02-06
本篇主要介紹C#的Excel匯入、匯出。1. 介紹1.1 第三方類庫:NPOI說明:NPOI是POI項目的.NET 版本,可用於Excel、Word的讀寫操作。優點:不用裝Office環境。下載地址:http://npoi.codeplex.com/releases1.2 Excel結構介紹活頁簿(Workbook):每個Excel檔案可理解為一個活頁簿。工作表(Sheet):一個活頁簿(Workbook)可以包含多個工作表。行(row):一個工作表(Sheet)可以包含多個行。2.
Time of Update: 2017-02-06
LINQ 簡介Language-integrated Query (LINQ) (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中引入的一項創新功能。傳統上,針對資料的查詢都是以簡單的字串表示,而沒有編譯時間類型檢查或 IntelliSense 支援。此外,您還必須針對以下各種資料來源學習一種不同的查詢語言:SQL 資料庫、XML 文檔、各種 Web 服務等等。 通過LINQ,
Time of Update: 2017-02-06
C# 介面(Interface)介面定義了所有類繼承介面時應遵循的文法合約。介面定義了文法合約 "是什麼" 部分,衍生類別定義了文法合約 "怎麼做" 部分。介面定義了屬性、方法和事件,這些都是介面的成員。介面只包含了成員的聲明。成員的定義是衍生類別的責任。介面提供了衍生類別應遵循的標準結構。抽象類別在某種程度上與介面類似,但是,它們大多隻是用在當只有少數方法由基類聲明由衍生類別實現時。聲明介面介面使用 interface
Time of Update: 2017-02-06
您可以重定義或重載 C# 中內建的運算子。因此,程式員也可以使用使用者自訂類型的運算子。重載運算子是具有特殊名稱的函數,是通過關鍵字 operator 後跟運算子的符號來定義的。與其他函數一樣,重載運算子有傳回型別和參數列表。例如,請看下面的函數:public static Box operator+ (Box b, Box c){ Box box = new Box(); box.length = b.length + c.length; box.breadth =
Time of Update: 2017-02-06
異常是使用.NET時必然會遇到的問題,但是,有太多的開發人員沒有從API設計的角度考慮這個問題。在大部分工作中,他們自始至終都知道需要捕獲什麼異常以及哪些異常需要寫入全域日誌。如果你設計了可以讓你正確使用異常的API,則可以顯著減少修複缺陷的時間。誰的錯?異常設計背後的基本理論始於這樣一個問題,“誰的錯?”為了方便本文的討論,這個問題的答案將總是以下三者之一:庫應用程式環境當我們說“庫”有問題,我們是指當前執行的某個方法有內部缺陷。在這種情況下,“應用程式”是調用庫方法的代碼(這有點混雜難分,因
Time of Update: 2017-02-06
本文介紹下應用遷移的一個過程。把一個運行在某個作業系統和硬體結構上的軟體,在另一個作業系統和硬體結構上重新編譯(包括一些必要的修改),以便在新的平台上運行,這一過程叫做應用程式移植。有些情況下,把應用程式從一個平台移植到另一個平台非常簡單直接,僅需要重新編譯並進行一些驗證測試即可。但是有些情況下,移植程式並不是那麼容易。本章是在應用程式移植方面對當前專案管理的一個補充,關於如何使用正規化的需求管理過程、如何更好的與軟體開發人員交流,以及如何進行專案管理,今天的專案經理們都已經非常熟悉了,但是,軟
Time of Update: 2017-02-06
在項目開發中,對於系統和代碼的穩定性和容錯性都是有對應的要求。實際開發項目中的代碼與範例代碼的區別,更多的是在代碼的啟動並執行穩定性、容錯性、擴充性的比較。因為對於實現一個功能來說,實現功能的核心代碼是一樣的,可能只是在寫法上最佳化而已,但是在實現某一個操作上使用的類來說,這一點是絕大多數時候是一樣的。這樣看來,我們在實際開發的過程中,需要考慮的問題比較多,已經不僅僅局限於某一具體的功能實現,更多的是代碼的穩定性和擴充性考慮。以上是在實際開發中需要面對的問題,筆者在最近的博文中,也在考慮這個異常
Time of Update: 2017-02-06
public override bool TryGetMember(GetMemberBinder binder, out object result){ if (!_dictionary.TryGetValue(binder.Name, out result)) { result = null; return true; } var
Time of Update: 2017-02-06
需求:是這樣的,要開發一個簡訊發送的模板,不同客戶可能會使用不同的模板,而不同的客戶使用的變數參數也是不同的。之前為了應急,線上已經完成了一個簡訊模板傳送簡訊的功能,簡訊模板表也建立了,而且在表中已經新增了一條記錄。我只需要做一個簡訊模板的增刪改查介面就可以了,看上去我的工作挺簡單的,老司機應該知道,接了個爛攤子。所示是原來已經建立好了的表SQL建立指令碼如下:在這之前是已經開發了一個傳送簡訊的API介面供客戶調用了的,也就是說調用方(客戶),不會修改代碼,只能我這邊來修改。雖然極不情願接做了一
Time of Update: 2017-02-06
前言近日項目中做到一個功能,需要上傳附件後能夠線上預覽。之前也沒做過這類似的,於是乎就尋找了相關資料,.net實現Office檔案預覽大概有這幾種方式:使用Microsoft的Office組件將檔案直接轉換為html檔案(優點:代碼實現最簡單,工作強度最小。缺點:效果極差)使用Microsoft的Office組件將檔案轉換為PDF格式檔案,然後再使用pdf2swf轉換為swf檔案,也就是flash檔案在使用FlexPaper展示出來(優點:預覽效果能接受,缺點:代碼量大)使用Office
Time of Update: 2017-02-06
並發集合1 為什麼使用並發集合?原因主要有以下幾點:System.Collections和System.Collections.Generic名稱空間中所提供的經典列表、集合和數組都不是安全執行緒的,若無同步機制,他們不適合於接受並發的指令來添加和刪除元素。在並發代碼中使用上述經典集合需要複雜的同步管理,使用起來很不方便。使用複雜的同步機制會大大降低效能。NET Framework 4所提供的新的集合儘可能地減少需要使用鎖的次數。這些新的集合通過使用比較並交換(compare-and-swap,
Time of Update: 2017-02-06
簡介在公司的服務多了以後,為了調用上的方便,同時為了以後的服務治理,一般都會使用一些服務架構,這裡主要介紹我知道的幾個服務架構,簡析一下這些服務架構的基本概念。可投入生產環境使用的以下兩個服務架構,我已經見過有公司投入到生產環境,所以對於穩定性,應該不需要有太大的擔心。 ServiceStack https://github.com/ServiceStack/ServiceStack
Time of Update: 2017-02-06
本文通過對.NET4.5的ThreadPool源碼的分析講解揭示.NET線程池的內幕,並總結ThreadPool設計的好與不足。線程池的作用線程池,顧名思義,線程對象池。Task和TPL都有用到線程池,所以瞭解線程池的內幕有助於你寫出更好的程式。由於篇幅有限,在這裡我只講解以下核心概念:線程池的大小如何調用線程池新增工作線程池如何執行任務Threadpool也支援操控IOCP的線程,但在這裡我們不研究它,涉及到task和TPL的會在其各自的部落格中做詳解。線程池的大小不管什麼池,總有尺寸,Thr
Time of Update: 2017-02-06
最近幾周,C++委員會在奧盧(Oulu)召開會議,C++17的最終特性得以確定,並且它即將成為一個國際標準。在傑克遜維爾(Jacksonville)召開的最後那次會議之後,我對於C++17能給人帶來大驚喜未抱太大的希望,但是奧盧會議卻努力地為C++17新標準增加一些重要而且有趣的特性。Reddit頁面提供了一個很好的C++17特性總覽,並且,Herb Sutter在最近的CppCast網站上(還有他的行程報道) 也給出了有關C++17特性的很好的見解。另外,Michael