re: 我的2009 那誰 2010-01-18 21:26
@王李李
感謝指點,很有建設性.
@code
汗,你這個回復也太快了吧.
呵呵,周四去面試.
@阿福
巧了,我也去過你blog看過,說起來,還是國內研究TC的人,或者說閱讀TC代碼的人太少了點兒。
@cui
1)父進程不用通知子進程,因為子進程是繼承了從父進程里創建的監聽socket
2)沒有事件的時候子進程將會阻塞在select/poll操作上。
@zuhd
可能我的意思表達不清楚,我補充了一個示意圖,你可以再看看.
BTW:那個不是二維數組,而是存放的元素類型都是char*的數組,本質還是一維數組,說到這個點又是"指針與數組的區別"了,呵呵.
re: 人不奮斗枉青年[未登錄] 那誰 2009-10-31 13:26
麻煩,這種與技術無關的帖子以后能不能不要放到首頁來.
re: epoll學習筆記 那誰 2009-10-13 21:04
@lxjeanse
LZ,你用ET寫的server在關閉客戶端的時候才收到的后面幾個數據吧?那是因為客戶端關閉的時候,server也會收到io消息,這時就會去接收剩下的數據了.
re: 二分查找學習札記 那誰 2009-10-08 16:35
綜上,我想這篇文章還需要做一些說明.稍后我會補充上,謝謝幾位.
re: 二分查找學習札記 那誰 2009-10-08 16:30
@OwnWaterloo
是的,你這么分析有道理.所以最后的那個算法"精確"(都找到相同元素的第一個)的代價就是在一些情況下不如3-way高效.
re: 二分查找學習札記 那誰 2009-10-08 15:51
@飯中淹
我這邊測試的結果是我的稍好一些的,測試的數據是這樣的:
#define LEN 400000
int main()
{
int array[LEN];
int i;
for (i = 0; i < LEN; ++i)
{
array[i] = i;
}
xbinary_search<int, int> search;
for (i = 0; i < LEN / 1000; ++i)
{
search.search_value(array, LEN, i * 10);
}
printf("done123\n");
return 0;
}
這個測試數據, 你的表現是0.176s,我的是0.047.
另外,你的代碼在我的cygwin上面的g++上不能直接編譯過去,我稍作了一些修改.
re: 二分查找學習札記 那誰 2009-10-08 10:09
@飯中淹
可以把你的算法貼出來嗎?
re: 二分查找學習札記 那誰 2009-10-07 10:59
@飯中淹
哦?怎么測試的?
re: 協議設計之一 基本類型的編碼 那誰 2009-09-25 15:55
@sd
贊同你的觀點.
兩位,似乎還有一個問題,考慮一個極端情況,假如一個序列中都是同樣值的元素,而所需查找的就是這個元素,很顯然,第一次查找就會找到了,但是找到的卻是序列的中間元素.
汗,你們倆晚上都不睡覺的嗎,怎么回復時間都在凌晨....
@OwnWaterloo
看了你給的帖子,感覺我的算法還有問題,就是在存在多個相同元素的時候沒有返回第一個元素.回頭再研究一下了,目前至少算法是"正確的",只是不夠"精確",哈哈.
@OwnWaterloo
編程珠璣里面確實有一章講解算法正確性的,是以二分查找算法來講解的.
@阿福
你可能沒有仔細看我對問題的描述,事實上,如果使用這里所用的二分查找算法,都不用遍歷一次,O(log(n))的時間復雜度就搞定問題了.
re: 同步/異步與阻塞/非阻塞的區別 那誰 2009-05-14 23:54
@嘯天豬
我看了一下你的評論,我想我們之間觀點最大的分歧點在于:
我的觀點是同步/異步僅是消息通知的機制,至于消息到來時如何處理與這兩個概念無關.
而你的觀點則認為,同步/異步不僅僅包括消息通知,還包括了對消息的處理,所以select之類的通知消息的觸發機制你歸類為"同步",而AIO這種俘獲了消息也對消息進行了處理(比如你說的將數據從內核copy到用戶態)的機制才是真正的異步.
也就是說,你上面回復的這句話:
異步: 交代要做的事情,然后忙其他的事情;'別人'(內核)會充當你的跑腿,在條件就緒后將這事辦成,然后通知你(callback);
事實上是我們之間對這個概念認知的最大分歧,你認為異步就是不止通知了消息,還要加上將這件事情辦妥.而我認為,異步僅在于通知這個消息發生了,而具體如何處理該消息不在它關注的范圍之內.
我在寫上上面這段評論的時候也在思考對這個概念的理解,我還是認為我的觀點是正確的,今天太晚了,改天找來UNP詳細看看.
re: 同步/異步與阻塞/非阻塞的區別 那誰 2009-05-14 13:09
@ttplay
排隊等待是處理消息者自己等待,取小紙條是由別人通知你.
re: epoll學習筆記 那誰 2009-05-11 18:36
@qq957863054
實際上同一個socket上是可以既recv又send的,因為這是全雙工的服務,只不過這樣的情況在邏輯上錯誤.比如你可以想象兩個人對話,一個人一邊說話一邊聽別人說話嗎?
re: epoll學習筆記 那誰 2009-05-06 11:07
@qq957863054
寫的處理跟讀應該差不多吧,我想你只要理解了ET模式的要點就可以理解了--ET僅在所關注的事件狀態發生變化,也就是從無到有或者從有到無的時候才會有通知,而從多到少或者從少到多不會有通知.
@Tim
你的blog在我google reader里面,時不時也會去看看,以后請多指教了.
re: 項目失敗的經驗 那誰 2009-04-29 18:01
收到.
@candy
你的編譯命令是??
我這邊直接gcc就行了
@bruin
如果不轉換為char,而是別的類型,那么就會根據該類型的長度進行加減.
這個也是C語言的基礎知識了.
re: 自己實現的memcpy[未登錄] 那誰 2009-04-19 09:29
@ClassyK
你說的有道理.
@小名阿鐵
我看的英文版電子書,中文版紙書在看不懂的情況下拿來參考(目前還沒有參考到).這個是我最新發布的隨筆,以前沒發布過.
re: Pascal簡化版[未登錄] 那誰 2009-04-10 14:30
mark
@xiaoxiao
是的,當時的考慮是如果是運行的時候做這個判斷,那么就會多一些運行時的判斷,所以做成了編譯時可配置的情況.
re: 另類的鏈表數據結構以及算法 那誰 2009-03-27 19:03
感謝指出錯誤,已經做了修改了.
re: 自己設想的一個IM服務器的架構 那誰 2009-01-14 13:49