很佩服作者的耐性和毅力 也很喜歡作者的話:耐得住寂寞, 守得了空房,夢想就在不遠的地方!
看了代碼實現,使用引用計數和unordered_set,這會造成每個桶內都可能存在對某相同連接的entry對象,以致空間占用較大,但換來了時間上的效率,如果保存臨時tail,則是常數時間。如果不用這種方法,而采用連接從所在桶內移到tail桶內,則至少是對數級的時間。
強烈支持陳兄,你已經在為祖國作貢獻了,可惜我專科畢業,沒學過編譯原理,但在修煉計劃中,倒是網絡方面學得較深,啊哈哈。
re: 非理性擁護C++[未登錄] 春秋十二月 2012-11-22 09:35
你的文筆有魯迅之風
re: 【原】到底怎么樣才叫看書?[未登錄] 春秋十二月 2012-10-11 00:31
讀書不在數量 而在質量 重在真正吸收消化了多少
re: 軟件設計的一些感想[未登錄] 春秋十二月 2012-10-11 00:26
工程師和科學家根本就不是一個檔次,定義也是不一樣的。
1) CAutoReleasePtr的一些成員函數的參數少了ReleasePolicy,例如下:
template<typename TSrc>
CAutoReleasePtr(CAutoReleasePtr<TSrc,ReleasePolicy>& p)throw()
{
m_p = p.Detach(); // Transfer ownership
}
CAutoReleasePtr( CAutoReleasePtr<T,ReleasePolicy>& p ) throw()
{
m_p = p.Detach(); // Transfer ownership
}
2) 可以定義一個公共方法的宏來減少代碼重復,但缺點是不利于調試。例如下:
template<T>
class CSimplePtr
{
COMMON_MEMBER_METHOD(T)
void Free() { delete m_p; }
private:
T* m_p;
}
template<T>
class CArrayPtr
{
COMMON_MEMBER_METHOD(T)
void Free() { delete []m_p; }
private:
T* m_p;
}
template<T>
class CStatckPtr
{
COMMON_MEMBER_METHOD(T)
void Free() { _freea m_p; }
private:
T* m_p;
}
3)模板和宏的共同點是都能避免重復代碼,但模板更優越,這也是C++相對C進步的表現。
4)c++11新標準支持帶模板參數的typedef,又是一個進步。
re: 理解程序內存 春秋十二月 2012-09-20 17:08
windows高級調試一書,應該有講解吧
有點意思,你好像有較多時間來發明一些輪子,精神可嘉
re: 論epoll的使用[未登錄] 春秋十二月 2012-08-31 01:04
唐工的方法,和我實踐中基本是一樣的,但沒有加標記,而是直接發,如果碰到EAGAIN,則入隊;如果發了一部分,則剩下的部分入隊,留在下次寫事件中發。
簡言之,ET模式的讀寫,需要不斷讀或寫直到遇到EAGAIN或出錯,也就是達到邊緣狀態(空間空或滿),如果后來空間非空或非滿(原因是網絡收到數據或寫出數據),則讀或寫事件,就被觸發一次了。
re: 論epoll的使用[未登錄] 春秋十二月 2012-08-27 16:36
@peakflys
fd寫事件被觸發,是因為sock底層緩沖區有大于某個閾值的空閑空間,和應用層有無數據待寫沒有關系吧
re: 論epoll的使用[未登錄] 春秋十二月 2012-08-27 10:33
LT模式下,只要空間可寫,則寫事件不斷被觸發,CPU占用較高,如果不轉為ET模式,怎么解決這一問題?
樓主,是個有心人。
1)發原始包,用戶模式做不到嗎,raw socket可行,當然這個局限在IP層
2)網絡開發的內容也很多的,如防火墻,流量控制,行為管理等等
3)深入的話,可以看看網絡內核
4)分層是設計的考慮,每層的功能和職責各不相同,下層為上層提供服務
re: 關于c++的內聯函數[未登錄] 春秋十二月 2012-08-11 22:02
內聯函數是指那些定義在類體內的成員函數,局限了吧,自由函數也可以是內聯的。
re: C++ 枚舉類型的思考[未登錄] 春秋十二月 2012-08-07 19:01
不錯,但從整型到枚舉的轉換,需注意是否越界
你的網絡庫和博文值得做服務器開發的同仁們學習和借鑒,好樣的
re: 簡易定時器設計[未登錄] 春秋十二月 2012-07-01 01:00
ace,boost,linux kernel都有實現源碼,可以研究下。
re: 簡易定時器設計[未登錄] 春秋十二月 2012-06-30 18:16
乍一看標題還以為是講定里器的原理、設計及實現,以前寫過應用層的定里器,底層的數據結構可以是數組、堆、哈希、鏈表,性能各不一樣,可據需求選擇。
re: 落伍的感覺[未登錄] 春秋十二月 2012-06-23 21:05
基礎很重要,萬變不離其宗,不可過分追求新興的技術
re: 關于編程的胡扯 春秋十二月 2012-06-23 09:29
做研究當科學家曾是我兒時的夢想,雖然年少曾經輝煌而后又曲折坎坷,盡管國內大環境不好,但我從沒有放棄努力,而是愈戰愈勇,因為你不僅是我的榜樣,也應該是所有有理想有志向做技術的一批人的榜樣。如果大多做技術的人都能像你這樣,中國軟件何愁沒核心,何愁不強大?!
boost中也有tls的實現,早期的時候,我一直也想自己弄個tls,但至今沒動手,引用計數一是生命周期,二是共享資源。
re: 難以割舍的二段構造 春秋十二月 2012-06-14 18:35
你說的對,糾正一下,查看了反匯編,不是重新定義,子類調用的還是基類的函數
其實這不叫改變了基類的訪問權限,而是在子類中又重新定義并覆蓋了基類中的同名函數
內存分配存儲方式可作為一種策略,作為字符串的模板參數,形如std::allocator。不必弄子類定制。
re: 用排序數組代替平衡樹實現關聯容器 春秋十二月 2012-06-07 22:49
定性分析,這個主要優勢在于查找快和占用內存小,我以前考慮過這個實現,但覺得通用性不強,優勢不占居大的地位,放棄了。
re: tcp要點學習-數據發送一[未登錄] 春秋十二月 2012-06-06 16:42
交互式程序如telnet和rlogin是關閉nagle算法的典型應用
re: 一個中國窮人在美國的生活[未登錄] 春秋十二月 2012-06-05 11:01
劍兄,現在還是做技術嗎?
template<typename F , typename A>
struct Apply
{
typedef typename F::Apply<typename A::Type>::Type Type;
};
Apply是個嵌套的類模板 F后面怎么沒有template呢?即F::template Apply<...>
re: 類設計一則,GDI對象選入器 春秋十二月 2012-06-01 21:08
不用某個方法,不等于不存在這個需求和必要性。隨著時間推移,當改進完善你的類時,就會作出變化的。
re: 類設計一則,GDI對象選入器 春秋十二月 2012-06-01 21:06
呵呵,你的類接口是句柄就行,在win32中一樣可用,反正我覺得你的選擇類創建GDI對象,那是不明智的做法。
re: 類設計一則,GDI對象選入器[未登錄] 春秋十二月 2012-06-01 18:35
GDI對象有對應的MFC類,選擇器選擇新的對象,增加一個方法reset,功能是選回老對象,以在任何時機可以調用,而在析構函數實現中調用reset即可。