Time of Update: 2018-12-07
裝箱(boxing)機制是一個值得單獨拿出來討論的話題,因為忽略它,我們會在不知不覺間犯下很大的錯誤。 先說說裝箱的過程:會先在堆中分配好記憶體,該記憶體大小為實值型別所有欄位和添加的類型對象指標以及同步塊索引所需的位元組,然後將實值型別欄位複製到這塊新分配的記憶體中,接著返回對象的地址值,即該對象的引用。 拆箱並不是裝箱的逆操作:拆箱只是擷取一個引用,該引用指向實值型別的欄位,它並不要求複製欄位,複製欄位實際上拆箱之後的動作,但這個動作是一定會發生。
Time of Update: 2018-12-07
轉自http://dotnet.chinaitlab.com/CSharp/838298.html由於曆史的原因,我國的上交所和深交所使用的還是dbf檔案來進行行情資料的分發,關於衛星報盤系統,可以參考:http://maltig.itpub.net/post/12165/195151 這個部落格中關於證券公司資訊化的文章寫的還是相當不錯的。上交所使用的是show2003.dbf檔案,而深交所使用的是SJSHQ.DBF,這種檔案可以使用Visual
Time of Update: 2018-12-07
首先在方法聲明上,由於在32位Windows上GetWindowLongPtr和SetWindowLongPtr僅僅是宏定義,不是具體函數,所以只能去使用GetWindowLong和SetWindowLongPtr函數。因此我們需要定義兩份這樣的函數。其次是參數在不同環境下的變化。比如GetWindowLang的函數原型:LONG WINAPI GetWindowLong( __in HWND hWnd, __in int
Time of Update: 2018-12-07
注意:所有效能時間值和“硬體條件”和“作業系統的當前進程數”有很大的關係,所有效能測試時間長度僅代表我的電腦的資料,但是從這些值的比例關係你可以看出他們的效能差別的。測試電腦的資訊:軟體:Windows 7,測試時均運行67個進程,.NET Framework 4.0 Client Profile。硬體:CPU: Intel Core i5 M480,記憶體: 2GB。 目錄22.3359171秒:使用WMI的效能計數器資料 03.5501914秒:使用效能計數器的ID Process 02.1
Time of Update: 2018-12-07
在社區很多人不看好的微軟.NET開源實現Mono發布了Mono 2.8,這是一個重要的版本更新,有著顯著的改善,Mono 2.8包括C#4.0的支援(也是現在的預設配置),新一代的記憶體回收行程,新的架構,LLVM的支援,目前被認為是穩定的,2.0版本的embedding API ,對OpenBSD的支援,移除了對GLib的依賴,並有.NET 2.0的線程池的異常行為。 新的微軟的開源協議的架構套件括ASP.NET
Time of Update: 2018-12-07
Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
淺談C/C++記憶體流失及其偵查工具2006-04-03 09:00 作者: 出處:溫馨小屋 對於一個c/c++程式員來說,記憶體流失是一個常見的也是令人頭疼的問題。已經有許多技術被研究出來以應對這個問題,比如Smart Pointer,Garbage Collection等。Smart Pointer技術比較成熟,STL中已經包含支援Smart Pointer的class,但是它的使用似乎並不廣泛,而且它也不能解決所有的問題;Garbage Collection技術在Java中已經比較成熟,
Time of Update: 2018-12-07
這兩天偶爾翻看一本C++的書籍時,看到一個繼承的知識點竟有點陌生的感覺。也許是之前恰好沒接觸過,也許是太久沒接觸罷了,現在究竟是忘記了。應該記下來,以作備忘,順便羅嗦一下繼承的概念,嗯嗯。 那就是C++中的訪問聲明。
Time of Update: 2018-12-07
建構函式提供了一種機制,通過它有機會完成必要的初始化工作,從而使對象成為有意義的存在物,而不僅僅只是一塊原始的空間。但是,我們逐漸瞭解到,建構函式具有的地位,不僅對於使用者(程式員),對於編譯器履行職責也極為重要。通過這個機制,它讓C++的一些基本的特性,如繼承、多態得到了正確的貫徹和表現。首先不難理解的一點是在建構函式中,要確保基類對象的正確構造,如果是從基類繼承的話。因為繼承類對象至少可以被“低”看為一個基類對象,具有後者的所有行為和表現,所以基類的建構函式首先被調用。如果所謂的基類也是從其
Time of Update: 2018-12-07
[C#][SAMPLE]動態載入控制項[PlaceHolder控制項]PlaceHolder在MSDN中就是:ASP.NET PlaceHolder Web
Time of Update: 2018-12-07
演算法如下:基姆拉爾森計算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意:在公式中有個與其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。代碼如下: //y-年,m-月,d-日期 string CaculateWeekDay(int y,int m, int d) { if(m==1) m=
Time of Update: 2018-12-07
1:枚舉裡面的值是常量; 例如 enum color {red,orange,yellow};2:枚舉列表中的常量預設為0,1,2等等 例如 enum color {red,orange,yellow}; 常量值預設為0,1,23: 枚舉列表常量值是可以指定的,且指定值後的枚舉值將遞增 例如enum color {red,orange=10,yellow}; yellow=114: 在C語言中枚舉可以遞增
Time of Update: 2018-12-07
注意:C/C++的輸出可能在不同編譯器下會有不同結果。如果你的編譯器和我的不一樣,建議複製C/C++代碼並在自己的編譯器上運行下看結果。 下面所有C#代碼由Visual C# 2010 Express編譯運行下面所有C/C++代碼由Visual C++ 2010 Express編譯運行 C++的浮點輸出:預設保留6位有效數字代碼:double arr[4] = { 123.4567, 12345670, 12.34567, 0.001234567 }; for(int i = 0; i <
Time of Update: 2018-12-07
C程式的執行是從main函數開始的,如果在main函數中調用其他函數,在調用後流程返回到main函數,在main函數中結束整個程式的運行。 這段有些莫名其妙的文字即使從漢語文法的角度來說也成問題。成問題的地方在於“在調用後流程返回到main函數”不清楚是前面“如果”的一個結果還是對前面“如果”的一個補充。 拋開這種語文方面的缺點不談,這段文字給人的印象就是“C程式從main函數開始執行,在main函數結束”。然而事實真的如此嗎? C程式的運行離不開一定的環境(Environment)
Time of Update: 2018-12-07
List<T>.Contains效能問題產生的背景:需要向List中Add 10萬個值,Add前需要判斷一下,不添加重複值,在做if(List.Contains(item))判斷時,會消耗大量的時間,當資料量在1萬以內時,還感覺不到效能問題;當資料量到5萬時,就無法忍受了。隨著資料量增加,尋找的時間就會越長。於是可以改用Dictionary<string,
Time of Update: 2018-12-07
Item45 -- 清楚知道C++編譯器默默為我們完成和調用哪些函數建構函式、拷貝構造、析構、賦值、取地址Item46 -- 寧願編譯和串連時出錯,也不要執行時才錯舉了個把月份抽象成類,通過類的機制使得在編譯和串連的時候能夠發現錯誤。這個有點太高深了,一般用不到。忽略。Item47 -- 使用non-local static objects之前先確定它已有初值可以使用單鍵模式解決,在使用的函式宣告一個static變數,第一次使用則初始化,以後則直接擷取了。Item48 --
Time of Update: 2018-12-07
下面的是學C++時要注意的。絕對經典。!! 1.把C++當成一門新的語言學習(和C沒啥關係!真的。); 2.看《Thinking In C++》,不要看《C++變成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看; 4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是整合式開發環境,而我們要學的是一門語言;
Time of Update: 2018-12-07
逆波蘭式也叫尾碼運算式(將運算子寫在運算元之後) 如:我們平時寫a+b,這是中綴運算式,寫成尾碼運算式就是:ab+ 先說明一下裡面用到的基礎1.atof()
Time of Update: 2018-12-07
下載 ILmerge 工具 開啟CMD控制台,進入ILmerge.EXE所在的檔案夾在這裡可以將幾個DLL檔案合并成一個DLL檔案,或者將DLL合并到EXE檔案中1、合并DLL將 AppD1.dll、AppD2.dll、AppD3.dll 三個DLL檔案合并為 AppD.dll,並儲存到F盤根目錄執行命令:ILmerge /ndebug /target:dll /out:F:\AppD.dll /log F:\DemoApp\AppD1.dll
Time of Update: 2018-12-07
適配,即在不改變原有實現的基礎上,將不相容的介面轉換為相容的介面。 將一個類的介面轉換成客戶程式希望的另一個介面;Adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 兩種結構“對象適配器”和“類適配器”interface IStack//客戶期望的介面{ void Push(object item); object Pop(); Object Peek();}1、對象適配器(推薦) class Adapter : IStack//適配對象{