原创 程序調試總結 04-18

1.現象:程序中調用DLL中的某個函數f,但是斷點跟蹤,卻調用了函數g而不是f 經調試,在call eax這條彙編語句中,查出函數地址就是g的地址;而f和g的地址只差4個字節; 於是檢查DLL頭文件,找出了原因:dll和h文件不匹配  

原创 ascent的網絡模塊簡析

本文是解讀ASIO之前的一碟小菜。。。 ascent 2010的網絡模塊代碼採用了IOCP,代碼量很小。 帶着以下問題溜了一遍:   1.IOCP的亂序問題 如果同時對一個socket投遞多個recv或者send請求,那麼應用層會將TCP

原创 第1二分查找

其實是傳統二分查找的一點變形: 需要找到數組中出現的第一個元素。 比如數組元素是 1  2  2  2   3  4   5 查找2的話,返回數組下標爲1,而不是2或者3   # include <stdio.h> int FirstBi

原创 gch文件之淺談GCC預編譯頭技術 收藏

其 實剛開始編程的時候,我是絲毫不重視編譯速度之類的問題的,原因很簡單,因爲那時我用BASICA。後來一直用到C++ Builder,儘管Borland的廣告無時無刻不在吹噓其編譯速度,我卻從沒有對這個問題上心過,因爲心裏根本沒有“編譯速

原创 爲什麼不應該使用“volatile”類型

C programmers have often taken volatile to mean that the variable could bechanged outside of the current thread of exec

原创 LUA在網遊任務中的應用

LUA生來是與遊戲相關的;自從魔獸將它發揚光大之後,越來越多的遊戲公司使用它。 遊戲邏輯中與其密切相關的是訪問NPC部分,彈出一個交易框、打造框、任務對話框等等,這些基本都是由LUA實現; 本文我想就自己最近的一點兒體會,寫下關於遊戲任務

原创 避免窗口閃爍 (雙緩衝等等)

如果一個程序出現閃爍現象,會讓人覺得程序編寫人員很馬虎,缺乏對細節的足夠重視。Windows程序的任何部分都沒有任何理由出現閃爍現象。這篇文章的目的是告訴讀者如何使用相關的技術防止窗口出現閃爍效果。 什麼是閃爍 閃爍可以這樣定義:當後面

原创 一種在編譯期保證模板類參數T必須實現某函數的方法

我們平時寫一個模板類,聲明大概如下 template <typename T> class TaskManager { vector<T> tasks; void ParseEveryTask() { vector<T>:

原创 C++ const變量機制

#include <cstdio> int main() { const int a = 10; int * p = (int *)&a; unsigned long addr = (unsigned long )&a; *p =

原创 安裝mysql

因爲馬上要做一個mysql的C api封裝。 以前裝mysql都是用yast搞定 這次下載了源碼,一頓configure,make,make install 啓動mysqld-safe時總是出現一些錯誤,大多是權限不夠,加個選項--use

原创 最大子序列

要求: 一個整數數組,可能有負數; 求它的最大子序列和;如果都是負數,那麼最大子序列和定義爲最大的那個元素值;   1.很容易想到這個平方算法: int MaxSequence(int a[], int n) // n * n { in

原创 快速選擇——尋找第k小的數

據KNUTH證明,此方法是線性的。。。不理解。。。 #include <stdio.h> #include <time.h> #include <stdlib.h> #include <assert.h> #define N 10 v

原创 優先級隊列 (小根堆)

#include <iostream> #include <cstdlib> #include <ctime> using namespace std; // 小根堆 template < typename T, int N = 10 >

原创 IOCP相關的一些總結

1:在IOCP中投遞WSASend返回WSA_IO_PENDING的時候,表示異步投遞已經成功,但是稍後發送纔會完成。這其中涉及到了三個緩衝區。 網卡緩衝區,TCP/IP層緩衝區,程序緩衝區。情況一:調用WSASend發送正確的時候(即立

原创 客戶端網絡消息在assert時重複解析的問題

在wndproc調用之中進行網絡消息的處理,如果這個過程中又有新網絡報到來,新的窗口消息通知會延遲到wndproc調用完;這正常。 但是如果winproc處理網絡消息時準備彈個assert窗,且此時卻是有新網絡報到來,那新窗口消息就立即來