上一页 1 ··· 4 5 6 7 8 9 下一页

2010年12月30日

gprof---Linux程序性能分析工具

摘要: 性能分析经常会用到,自己用计时器自己统计或者用工具。gprof是Linux上常用的性能分析工具。用法:1. 编译时,加-pg, g++ -pg main.cpp;2. 执行一下程序, ./a.out,生成gmon.out;3. gprof a.out,分析结果就出来了。 阅读全文

posted @ 2010-12-30 17:11 daemonh 阅读(189) 评论(0) 推荐(0) 编辑

2010年12月26日

putty登录到shell.sourceforge.net方法

摘要: 1. Session host name: shell.sourceforge.net port: 22 ssh2. Connection->Data Login detail Auto-login username: user, project-name3. Connection->SSH Remote command: create 阅读全文

posted @ 2010-12-26 14:08 daemonh 阅读(158) 评论(0) 推荐(0) 编辑

2010年12月13日

在一个IP:Port建立多个连接和启动监听

摘要: 1. Socket Handle和地址对 一个socket handle对应srcIP:srcPort&destIP:destPort 在同一个地址上建立多个连接,像下面的实例: ip1:port1 --> ip5:port5 ip1:port1 --> ip6:port6 接着在这个地址上创建监听socket, ip1:port1 --> *:* 对应所有的ip&port。2. Herm的实现代码 在同一个地址上创建多个socket handles,关键在于SO_REUSEADDR这个Socket层级别的选项,通过setsocketopt将这个选项打开,就可 阅读全文

posted @ 2010-12-13 17:07 daemonh 阅读(372) 评论(0) 推荐(0) 编辑

2010年12月4日

服务器实现心跳机制的两种策略

摘要: 大部分CS的应用需要心跳机制。心跳机制一般在Server和Client都要实现,两者实现原理基本一样。Client不关心性能,怎么做都行。如果应用是基于TCP的,可以简单地通过SO_KEEPALIVE实现心跳。TCP在设置的KeepAlive定时器到达时向对端发一个检测TCP segment,如果没收到ACK或RST,尝试几次后,就认为对端已经不存在,最后通知应用程序。这里有个缺点是,Server主动发出检测包,对性能有点影响。应用自己实现 Client启动一个定时器,不断发心跳; Server收到心跳后,给个回应; Server启动一个定时器,判断Client是否存在,判断方法这里列两种:时 阅读全文

posted @ 2010-12-04 10:48 daemonh 阅读(521) 评论(0) 推荐(0) 编辑

对端进程和主机非法崩溃对本地的tcp连接的不同影响

摘要: 1. 对端进程崩溃 对端协议栈将发出FIN;本地进程如果在recv或select/epoll,能感知到对端关闭。2. 对端主机崩溃 这个相当于拔网线或者中间路由器故障,崩溃端不做任何事情;本地进程只能通过SO_KEEPALIVE或应用的KEEPALIVE去检测对端挂了。 阅读全文

posted @ 2010-12-04 09:54 daemonh 阅读(235) 评论(0) 推荐(0) 编辑

2010年12月1日

使用 kqueue 在 FreeBSD 上开发高性能应用服务器

摘要: 本文出处:http://www.ibm.com/developerworks/cn/aix/library/1105_huangrg_kqueue/ Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 概述kqueue是FreeBSD上的一种的多路复用机制。它是针对传统的select/poll处理大量的文件描述符性能较低效而开发出来的。注册一堆描述符到kqueue以后,当其中的描述符状态发生变化时,... 阅读全文

posted @ 2010-12-01 10:13 daemonh 阅读(472) 评论(0) 推荐(0) 编辑

2010年11月18日

和TCP三次握手有关的面试题

摘要: 在面试的过程中,TCP三次握手是一个出现频率比较多的话题。三次过程如下图所示: Client Server |------------SYN1----------->| | | |<------SYN2+ACK1---------| | | |--------- ACK2------------->|下面列一些常见的几个问题。1. Q:向一个不存在但合法的公网IP任意端口发送SYN包会出现什么情况? A:返回ICMP主机不可达。2. Q:向一个存在的IP但未绑定的端口发送SYN包会出现什么情况? A:返回TCP RST segment。3. Q: 第一个SYN包丢失了,客户主 阅读全文

posted @ 2010-11-18 21:07 daemonh 阅读(1204) 评论(0) 推荐(0) 编辑

2010年11月14日

TCP三次握手过程与对应的Berkeley Socket APIs的简单介绍

摘要: 1. TCP三次握手 搜索到的一张三次握手过程的图片: 简单说明 (1)主动连接的一方(称为客户端C),发送SYN_C。 (2)被动打开连接的一方(称为服务器S),收到C的SYN_C后,会发送一个SYN_S;同时会对SYN_C作确认,返回一个ACK_S。SYN_S&ACK_S可以同时放到一个TCP segment中。 (3)C收到SYN_S+ACK_S,发送一个ACK_C,这个ACK_C对应SYN_S。 连接建立的过程,来回总共是3个TCP Segment。说点题外话,为什么是3个Segment呢?因为,其中一个SYN与ACK合到一个Segment中了。TCP两端同时打开的时候,就是来 阅读全文

posted @ 2010-11-14 14:12 daemonh 阅读(295) 评论(0) 推荐(0) 编辑

2010年11月12日

kqueue&epoll控制事件的注意点

摘要: kqueue&epoll都有READ, WRITE,ERROR事件等。在使用两者的过程中,发现kqueue对事件的控制很合理,而epoll有的地方要认真看文档加实践才能知道是怎么回事。1. 激活(Enable)1个事件 epoll通过EPOLL_CTL_MOD激活某个事件,这里有个注意点,epoll里本来有一个READ事件,MOD时只传WRITE事件,这个是时候,epoll里只有WRITE事件,READ事件没有了。 kqueue通过EV_ENABLE就能让某个事件激活,而不影响已注册的事件。 2. 禁掉(Disable)1个事件 epoll想禁掉某个事件,我的做法是: 重新EPOLL_ 阅读全文

posted @ 2010-11-12 21:07 daemonh 阅读(287) 评论(0) 推荐(0) 编辑

2010年11月1日

【Herm程序员开发指导】第2章 Herm Framework和网络通信组件

摘要: http://blog.csdn.net/herm_lib daemon.huang # gmail # com2.1 概述本章从网络通信组件的结构开始,简单地介绍一种较常用的通信组件结构。接着结合通信组件的结构来说明Framework的实现,描述Framework的对象模型,Network、Peer和Session。最后,分析Framework实现的时候采用了哪些措施保证性能,以及哪些地方还可以继续提高性能。最后给出安全措施。2.2 网络通信组件一个网络应用程序很多情况下简单地分成两层:逻辑层和网络层,其关系如下: +---------------+ | 逻辑层 | ------------ 阅读全文

posted @ 2010-11-01 22:52 daemonh 阅读(380) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 下一页

导航