re: 2011學習計劃 zuhd 2012-01-05 14:47
@卞壯
留下郵箱吧 一句話說不清楚 互勉
和樓主分享一下:
一般遇到這種需要下內存斷點的調試,我可能會先檢查代碼,應該會有90%的概率是越界造成的,確定該內存是在堆還是棧,然后排查該變量上下的兩個變量,基本都能找到,呵呵。請問樓主是UESTC的嗎?
re: 打發寒假計劃 zuhd 2011-12-30 15:34
@笨笨
要不切磋一下,哈哈
@春秋十二月
15K 是刀還是RMB 說清楚啊 我要 求壓力啊 @——@
我來說點實際的,借姚明一句話:你怎樣對待你的身體,
身體就怎樣對待你。老話:身體第一。堅持多鍛煉身體,養成習慣。
學會照顧自己,哪些要吃,哪些不能吃,人生不就是吃喝拉撒嗎?
人生不只是寫程序,卡馬克還喜歡法拉利呢,給自己找個樂子。彈彈吉他,
寫寫毛筆字,還是要堅持。至于程序方面,不多言了,堅持。
BTW: 2 zhou8p
不要拿自己已經很努力了去毒化自己,有時候南轅北轍的努力
還不如懶惰。這句話我喜歡,小伙,我要加你
大神,看著你的總結,我知道,又要過年了。。。
今年,我收獲了啥??
re: redis如何刪除過期數據 zuhd 2011-11-30 09:25
關注下 redis這么火 打算研究下
支持下 加油 acm小伙
做題是一種享受 上班也許找不到這種感覺 珍惜
re: 服務器多線程方案的選擇 zuhd 2011-11-23 09:13
send是要加鎖的,session是邏輯層的session,從網絡庫繼承出去的,能被網絡回調的,至于是哪種設計模式我也記不住那名
re: 服務器多線程方案的選擇 zuhd 2011-11-22 09:45
正如你說的多線程對于管理網絡包的順序很麻煩,IO線程+邏輯線程做起來比較清晰,估計大家都傾向于此吧,至于粘包和切包這個就是對IO數據流的重新整理分類,自己肯定要做個包長度吧。
a.在while中檢查是否有完整包,有完整包,就調用下層session的邏輯,也能清晰分層做到的。
b.即使100的前一個用戶斷開,新的用戶來了,也不會有麻煩,底層的網絡庫根本不會關心這個socket是誰的,照常處理IO就是,只是邏輯層的session要自己處理了
c.Send我是傾向于第一種實時的方案,也沒有一堆的鎖,一個連接一個而已,總算很清晰是吧,也值了
總結:1個IO+1個邏輯+1個session池
re: 最近真的被打擊了,要發奮了 zuhd 2011-11-03 09:32
樓主的獨白 也讓我有所觸動 這不就是大學時的我嗎
我記得當時就處在浮躁 總結的惡性循環中
后來談了個對象 嘿 你別說還真的好使了
心態也好了 代碼量也上去了 題目也不停的被AC了
re: mysql字符串轉義函數 zuhd 2011-10-19 09:07
不用mysql的逃脫函數?
re: 詳盡的Mysql安裝過程 講解 zuhd 2011-10-09 13:38
sudo apt-get install mysql-
re: 一個母親一生的8個謊言(轉) zuhd 2011-09-08 09:26
母愛最大
re: Qt那點事兒(一) zuhd 2011-08-29 09:45
哥 你的文筆太有愛了 不懂qt
我是來看小說的
re: 一道簡單的面食題來自CSDN zuhd 2011-08-22 11:20
注意:對無符號數,右移時左邊高位移入0;對于有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決于所用的計算機系統。有的系統移入0,有的系統移入1。
re: spy++和游戲修改器 zuhd 2011-08-10 10:05
改變100為150,然后再鏈表中搜索等于150的。
這樣啊,牛!
記得云風當時的意思是把AOI單獨弄出來做一個服務器進程。樓主這個demo做的很有意思
re: 談一談網絡編程學習經驗 zuhd 2011-06-07 09:55
我主張,在具備基礎之后,學習任何新東西,都要抓住主線,突出重點。對于關鍵理論的學習,要集中精力,速戰速決。而旁枝末節和非本質性的知識內容,完全可以留給實踐去零敲碎打。
這點我要好好學習下
re: 我也來個俄羅斯方塊 zuhd 2011-06-01 09:35
8086我一般用emu 盡管傻瓜了點 但是方便啊
re: 開源一個BT客戶端:BitWave zuhd 2011-05-30 09:21
這么巧?我學習學習
template <typename T>
ByteBuffer& operator>>(ByteBuffer& b, std::vector<T>& v)
{
uint32 vsize;
b >> vsize;
v.clear();
while (vsize--)
{
T t;
b >> t;
v.push_back(t);
}
return b;
}
======================================
小伙子,怎么支持vector<vector<int> >的數據類型啊?
re: 碩士之花隕落在普華永道 zuhd 2011-04-19 09:34
嗯 寫的很好 嘗試下
想問下 你寫這樣一篇博客是如何排版的?用了哪些工具?大概需要多長時間?謝謝
re: 取反操作的細節問題 zuhd 2011-04-08 14:46
@myjfm
嗯 我理解的補碼的設計就是為了方便算術運算
re: 取反操作的細節問題 zuhd 2011-04-08 13:57
我們可以按照 mod 128來理解,即
-129 與 -1的補碼是相同的
-130 與-2的補碼也是相同的
那么
-128與-0或是0的補碼應該也是相同的
那為什么不說
11111111是-129的補碼呢,
卻說是-1的補碼呢?
這8個bit完全能勝任-129的所有的存儲信息
所以我堅持認為10000000b是-128的補碼是個約定,請指教
re: 取反操作的細節問題 zuhd 2011-04-08 10:47
在8bit下存儲-129,也不是不能存儲,但只是高位會被截取而已,所以存儲的數據可能就不是-129了,如果非得說10000000b是-128,
我頂多理解它是一個約定,因為128用除去最高位之后剩余的7bit根本無法存儲,存儲的也是截取后的低7位,7個0。
re: 取反操作的細節問題 zuhd 2011-04-08 08:57
@myjfm
我去 我一直以為10000000B是-0
難道-0就是-128嗎?從理論上講不對啊,但是它加上1后確實等于-127
--!
re: 取反操作的細節問題 zuhd 2011-04-07 16:23
嚴格的講
對于8bit的0x80也不能說是十進制-128的補碼吧,最多說是10000000B的補碼,當然進行邏輯運算的結果不會有錯,如果補齊后最后截取低8bit的數據是
1000000B的話,我可能會說它是0,不知道理解有錯沒?
re: 取反操作的細節問題 zuhd 2011-04-07 16:10
基本明白你要表達的意思了,不過我覺得你表達的不清楚,可以這樣理解不:
不夠32bit的數據類型,高位自動補齊,至于高位補的是0還是1,有以下的判斷:
1,無符號數補0
2,有符號數看最高位標記,標記為0,存儲正數,則補0,標記為1,則補1,理由是它存儲的是一個負數的補碼。
re: 取反操作的細節問題 zuhd 2011-04-07 09:40
只有把這個內存變量放到寄存器的時候才這么做嗎?
還有,
char a = 0x80;
變成了a--->0xffffff80
這兩個值也不相等啊,這么算出來的結果有啥意義呢?
re: 被delete難倒了 zuhd 2011-04-01 09:44
@flyinghearts
那個拷貝構造函數確實有點問題,以前拷貝構造函數調用=寫順手了,沒發現有內存操作的這么寫有這個陷阱,改了一下:
stReplayData(const stReplayData& src)
{
if (this == &src)
{
return;
}
nDelay = src.nDelay;
nLen = src.nLen;
pData = new char[nLen];
if (pData != NULL)
{
memcpy(pData, src.pData, nLen);
}
}
stReplayData& operator = (const stReplayData& src)
{
if (this == &src)
{
return *this;
}
nDelay = src.nDelay;
nLen = src.nLen;
if (pData != NULL)
{
delete[] pData;
pData = NULL;
}
pData = new char[nLen];
if (pData != NULL)
{
memcpy(pData, src.pData, nLen);
}
return *this;
}
至于你說的:
另外,要先分配新內存,再釋放舊內存,保證 異常安全。
好像我一直都是先delete 再new ,可能一直懶得用個臨時的指針來保存pData吧,不過你這么說的道理是??
re: 被delete難倒了 zuhd 2011-03-31 11:56
@dizhu
在exe中new,不能在dll中delete的?
exe和dll用的是同一個堆棧空間的,
re: 被delete難倒了 zuhd 2011-03-31 11:41
void CReplayManager::ClearData()
{
VECREPLAY::iterator it = m_vecReplay.begin();
for (; it != m_vecReplay.end(); it++)
{
SAFE_DELETE((*it));
}
m_vecReplay.clear();
}
re: 被delete難倒了 zuhd 2011-03-31 11:22
@dizhu
看了頭文件基本就能猜到代碼了吧 中規中矩的容器操作代碼而已
另:我在gcc中的頭文件大量的使用了自定義的類,貌似沒發現過什么問題,怎么用vc上來就碰到這個,是巧合還是必然?腫么辦?有沒有,有沒有?
re: 被delete難倒了 zuhd 2011-03-31 11:13
問題我找到了,是我以前遇到的老問題
virtual bool PushData(stReplayData* pData);
這個接口設計有問題,dll的接口應該用標準的c++類型,我只知道其然,不知道所以然,了解詳情的說下
re: 被delete難倒了 zuhd 2011-03-31 10:13
我更新了帖子 貼了更多的代碼 想嘗試的朋友 可以自己簡單修改下即可
re: 被delete難倒了 zuhd 2011-03-31 09:14
@Mensch88
1. 就這段代碼本身來說,有一個錯誤:拷貝構造函數 stReplayData(const stReplayData& src) 里的指針pData沒有初始化!
拷貝構造函數是調用operator =來著
re: 如何書寫權威的程序庫頭文件 zuhd 2011-03-18 09:27
#define BEGIN_CORE_NAMESPACE namespace {
#define END_CORE_NAMGESPACE }
對于這樣的宏 我實在是不敢茍同啊 和宏的初衷有點背離不是嗎?
至少閱讀代碼時我要跟蹤下definition 裝B成分太多
喜歡樓主這種寫作風格,深入淺出,感覺像是以前高中時做證明題一樣,很清晰
re: 程序員的3種美德 zuhd 2011-02-15 11:43
不敢恭維
re: 我的游戲編程之路(二) zuhd 2011-02-13 09:36
游戲開發-->網管-->破解-->外包-->flash
人生的大起大落
頂你