Time of Update: 2018-12-08
c++中的來源程式:複製代碼 代碼如下:class X {private: int i;};int main() { X x;}上面的類X沒有定義建構函式,僅僅有一個int i。下面為其組譯工具:複製代碼 代碼如下:; 7 : int main() { push ebp;ebp為一個寄存器,總是指向一個函數呼叫堆疊的棧底,作為基址,用位移量來訪問該調用棧上的變數,但這裡沒有任何變數要訪問,因此不起作用 mov ebp,
Time of Update: 2018-12-08
複製代碼 代碼如下:#region 解壓 檔案 zip 格式 rar 格式 /// <summary> ///解壓檔案 /// </summary> /// <param name="fileFromUnZip">解壓前的檔案路徑(絕對路徑)</param> /// <param name="fileToUnZip">解壓後的檔案目錄(絕對路徑)</param&
Time of Update: 2018-12-08
在進行memcpy操作時,雖然是記憶體操作,但是仍然是耗一點點CPU的,今天測試了一下單線程中執行memcpy的效率,這個結果對於配置TCP epoll中的work thread數量有指導意義。如下基於8K的記憶體快執行memcpy, 1個線程大約1S能夠拷貝500M,如果伺服器頻寬或網卡到上限是1G,那麼網路io的work thread 開2個即可,考慮到訊息的解析損耗,3個線程足以抗住硬體的最高負載。在我到測試機器上到測試結果是:Intel(R) Xeon(R) CPU
Time of Update: 2018-12-08
有了之前的基礎,此文只是把一些以前沒有注意到的和值得學習的知識做一個記錄。第一章 作者認為使用#if 0 .... #endif比用/*和*/好,因為後者不能嵌套。但是對於//並沒有說明。第二章 三字母詞,用兩個問號加一個符號表示另一個符號,比較類似於逸出字元。查閱了一些資料,它的使用與編譯器有關,瞭解即可,防止字串常量被錯誤的解釋。複製代碼 代碼如下:??( ==> [ ??< ==> { ??= ==> # ??) ==> ]
Time of Update: 2018-12-08
1、複製代碼 代碼如下:const char *str = "test測試test";while(*str){//這裡只需要判斷第一個位元組大於0x80就行了,前提是輸入的是合法的GBK字串//原因在於,如果第一個位元組大於0x80,那麼它必然和後面一個位元組一起組成一個漢字//所以就沒有必要再去判斷後面一個位元組了//再強調一下,前提條件是輸入合法的GBK字串if(*str > 0x80){// 漢字,計數器++str += 2;//是漢字自然就該直接+2了}else{str++;}}2
Time of Update: 2018-12-08
有了上一節中得到的Regex,那麼就可以用來構造 NFA 了。NFA 可以很容易的從Regex轉換而來,也有助於理解Regex表示的模式。一、NFA 的表示方法 在這裡,一個 NFA 至少具有兩個狀態:首狀態和尾狀態, 1 所示,Regex $t$ 對應的 NFA 是 N(t),它的首狀態是 $H$,尾狀態是 $T$。圖中僅僅畫出了首尾兩個狀態,其它的狀態和狀態間的轉移都沒有表示出來,這是因為在下面介紹的遞迴演算法中,僅需要知道 NFA 的首尾狀態,其它的資訊並不需要關心。圖 1 NFA
Time of Update: 2018-12-08
通常C#使用基於XML的設定檔,不過如果有需要的話,比如要兼顧較老的系統,可能還是要用到INI檔案。但C#本身並不具備讀寫INI檔案的API,只有通過調用Unmanaged 程式碼的方式,即系統自身的API才能達到所需的目的。對應讀寫的方法分別為GetPrivateProfileString和WritePrivateProfileString。GetPrivateProfileString中的各參數:lpAppName —— section的名稱lpKeyName ——
Time of Update: 2018-12-08
整數轉換為字串:char *itoa( int value, char *string,int radix);小數轉換為字串:sprintf(串, 格式控制符列, 資料);字串轉小數:double atof(const char *nptr);字串轉整數:int atoi(const char *nptr);測試代碼:複製代碼 代碼如下:#include<stdio.h> #include<stdlib.h> int main() { int a=2013420
Time of Update: 2018-12-08
複製代碼 代碼如下: private void button2_Click(object sender, EventArgs e) { // Create a request for the URL. WebRequest request = WebRequest.Create("http://www.baidu.com/"); // If required by the
Time of Update: 2018-12-08
複製代碼 代碼如下:[ThreadStatic] static char[] mTempChars; protected static char[] GetTempData() { if (mTempChars == null) mTempChars = new char[1024 * 64]; return mTempChars; } public
Time of Update: 2018-12-08
一直對搜尋、過濾很好奇,覺得他們很有技術含量,只有非常NB的人才能做。很想知道他們的原理,實現這樣的功能,設計是不是必須得非常NB非常奇特,代碼是不是要寫得非常好,效能非常高。總之這一切都不是我這樣層級的人能做的。直到我看了《編程珠璣(第二版)》中的這麼一段文字:“假定我們可以在執行搜尋之前對常值內容進行預先處理,那麼我們可以建立一個撒列表(或者搜尋樹),為文檔中的每個不同的單詞建立索引,並為每個單詞的每次出現儲存一個鏈表,這樣的逆向索引使得程式可以很快的找到給定的單詞,為了尋找短語,我們可以對
Time of Update: 2018-12-08
泛型可以用於類,也可以用於函數。如泛型類:複製代碼 代碼如下:public class MyClass<T> { public T MyElement { get; set; } }泛型函數:複製代碼 代碼如下:public T ReturnElement<T>() { throw new NotImplementedException(); }但是當需要對MyElement進行執行個體化的時候,卻不能使用new(),只要添加如下代碼即可進行執行個體化了:
Time of Update: 2018-12-08
1. C#實現.NET組件與COM組件的互操作[DllImport("kernel32.dll")]這叫引入kernel32.dll這個動態串連庫。這個動態串連庫裡麵包含了很多WindowsAPI函數,如果你想使用這面的函數,就需要這麼引入。舉個例子:[DllImport("kernel32.dll")]private static extern void
Time of Update: 2018-12-08
背景隨著富用戶端架構的盛行,以及眾多優秀的前端js架構,很多情況我們會遇到跨域的問題,而js的ajax請求是不允許直接跨域訪問的,當然你會說可以用JSONP等,但是由於代碼潔癖,不想在前端和後台添加callback,而且很多情況你是無法控制的,需要牽連考慮太多的情況。所以我直接繞過了,每個前端應用,內建一個通用後端服務代理,該服務解決跨域問題,自動代理幫前台擷取跨域的資料。
Time of Update: 2018-12-08
儘管這個概念已經讓人說濫了 ,還是想簡單記錄一下, 以備以後查詢。複製代碼 代碼如下:#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <crtdbg.h>#ifdef _DEBUG#define new
Time of Update: 2018-12-08
複製代碼 代碼如下://調用API [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetForegroundWindow(); //獲得本表單的控制代碼
Time of Update: 2018-12-08
Sitemaps是Google的一個和網站管理員相關的工具,有點象BLOG的RSS功能,是一個方便自己的服務,如果大家都採用了這種方式提交自己的更新的話,Google就再也不用派出那麼多爬蟲辛辛苦苦的到處亂竄了,任何一個網站,只要有更新,便會自動“通知”Google,方便Google進行索引。好像最近BAIDU也開始支援XML格式的sitemap的網站地圖了。目前網路上有很多免費的產生sitemap網站地圖的工具,使用起來也比較方便。其原理就是抓取你指定的頁面,擷取頁面上所有的連結,根據這些連結
Time of Update: 2018-12-08
1、抓取一般內容需要三個類:WebRequest、WebResponse、StreamReader所需命名空間:System.Net、System.IO核心代碼:view plaincopy to clipboardprint?複製代碼 代碼如下:WebRequest request = WebRequest.Create("http://www.jb51.net/"); WebResponse response = request.GetResponse();
Time of Update: 2018-12-08
const 的概念就是一個包含不能修改的值的變數。常數運算式是在編譯時間可被完全計算的運算式。因此不能從一個變數中提取的值來初始化常量。如果 const int a = b+1;b是一個變數,顯然不能再編譯時間就計算出結果,所以常量是不可以用變數來初始化的。readonly 允許把一個欄位設定成常量,但可以執行一些運算,可以確定它的初始值。因為 readonly 是在計算時執行的,當然它可以用某些變數初始化。readonly
Time of Update: 2018-12-08
複製代碼 代碼如下:public void PrintPercentage(int FinishedCount, int TotalCount) { decimal finishedPercentage = Convert.ToDecimal(FinishedCount) / Convert.ToDecimal(TotalCount); Console.SetCursorPosition(0, Console.CursorTop - 1);