随笔-150  评论-223  文章-30  trackbacks-0
共4页: 1 2 3 4 
长风破浪会有时 直挂云帆济沧海 加油
re: 纪念EverEdit 2.56[未登录] 春秋十二月 2013-01-11 09:45
很佩服作者的耐性和毅力 也很喜欢作者的话:耐得住寂寞, 守得了空房,梦想就在不远的地方!
看了代码实现,使用引用计数和unordered_set,这会造成每个桶内都可能存在对某相同连接的entry对象,以致空间占用较大,但换来了时间上的效率,如果保存临时tail,则是常数时间。如果不用这种方法,而采用连接从所在桶内移到tail桶内,则至少是对数级的时间。
不错 确实如此
强烈支持陈兄,你已经在为祖国作贡献了,可惜我专科毕业,没学过编译原理,但在修炼计划中,倒是网络方面学得较深,啊哈哈。
re: 非理性拥护C++[未登录] 春秋十二月 2012-11-22 09:35
你的文笔有鲁迅之风
我对此略有研究,但有所变化和改进,详见http://www.cppblog.com/qinqing1984/archive/2012/05/31/176784.html
读书不在数量 而在质量 重在真正吸收消化了多少
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: 山寨一下 ATL 的 COM_INTERFACE[未登录] 春秋十二月 2012-09-04 00:32
有点意思,你好像有较多时间来发明一些轮子,精神可嘉
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模式,怎么解决这一问题?
re: 双数组哈希unordered_xxx[未登录] 春秋十二月 2012-08-27 10:27
楼主,你在哪工作呢,做什么的呢
此类问题,我略有分析,详见http://www.cppblog.com/qinqing1984/archive/2011/10/21/158841.html
在文章后面。
楼主,是个有心人。
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
做研究当科学家曾是我儿时的梦想,虽然年少曾经辉煌而后又曲折坎坷,尽管国内大环境不好,但我从没有放弃努力,而是愈战愈勇,因为你不仅是我的榜样,也应该是所有有理想有志向做技术的一批人的榜样。如果大多做技术的人都能像你这样,中国软件何愁没核心,何愁不强大?!
re: richedit研究03 – 高效图片管理 春秋十二月 2012-06-17 10:44
boost中也有tls的实现,早期的时候,我一直也想自己弄个tls,但至今没动手,引用计数一是生命周期,二是共享资源。
因为追求卓越,完美表现,所以我佩服你,啊哈哈
re: richedit研究02 – 大纲[未登录] 春秋十二月 2012-06-15 10:18
好的技术,好的文章,好的排版,相得益彰嘛
re: richedit研究02 – 大纲[未登录] 春秋十二月 2012-06-14 23:35
很不错,支持原创!提个小建议,博文字体尽量大点吧
@Richard Wei
C或C++罩杯?
你说的对,纠正一下,查看了反汇编,不是重新定义,子类调用的还是基类的函数
好漂亮的MM呀
楼主的代码还欠火候了
其实这不叫改变了基类的访问权限,而是在子类中又重新定义并覆盖了基类中的同名函数
深有同感
内存分配存储方式可作为一种策略,作为字符串的模板参数,形如std::allocator。不必弄子类定制。
定性分析,这个主要优势在于查找快和占用内存小,我以前考虑过这个实现,但觉得通用性不强,优势不占居大的地位,放弃了。
re: tcp要点学习-数据发送一[未登录] 春秋十二月 2012-06-06 16:42
交互式程序如telnet和rlogin是关闭nagle算法的典型应用
剑兄,现在还是做技术吗?
轮子发明者呀,我挺支持并欣赏的
template<typename F , typename A>
struct Apply
{
typedef typename F::Apply<typename A::Type>::Type Type;
};

Apply是个嵌套的类模板 F后面怎么没有template呢?即F::template Apply<...>
re: 山寨STL实现之traits,construct&destruct 春秋十二月 2012-06-03 19:13
楼主是个有心人
re: 类设计一则,GDI对象选入器 春秋十二月 2012-06-01 21:08
不用某个方法,不等于不存在这个需求和必要性。随着时间推移,当改进完善你的类时,就会作出变化的。
re: 类设计一则,GDI对象选入器 春秋十二月 2012-06-01 21:06
呵呵,你的类接口是句柄就行,在win32中一样可用,反正我觉得你的选择类创建GDI对象,那是不明智的做法。
GDI对象有对应的MFC类,选择器选择新的对象,增加一个方法reset,功能是选回老对象,以在任何时机可以调用,而在析构函数实现中调用reset即可。
共4页: 1 2 3 4