摘要: 1:插入排序:类似于扑克牌,为了将一张牌插入正确的位置,从右向左将它与已在手中的每张牌进行比较,这样,拿在手上的牌就总是排序好的。分析该算法的时间复杂度: 求和: 因此,最好运行时间为: 可以把运行时间表示为an+b。因此这是n的线性函数。 最差运行时间为: 把该最坏情况运行时间表示为an^2+bn 阅读全文
posted @ 2015-04-19 15:38 gqtc 阅读(186) 评论(0) 推荐(0)
摘要: 1:对于有些问题,目前还不知道是否存在有效的算法,这些问题的一个子集是NP完全问题,对于NP完全问题:a是否存在有效算法是未知的;b如果任何一个NP问题存在有效算法,那么所有的NP完全问题都存在有效算法;c有些NP完全问题类似于一些已经有有效算法的问题。 2:如果两个算法,比如插入排序和归并排序,插 阅读全文
posted @ 2015-04-19 15:28 gqtc 阅读(188) 评论(0) 推荐(0)
摘要: 一:客户端 本章总结的服务器程序设计范式,使用同一个客户端程序进行测试。客户端运行在和服务器处于同一个子网上的两个不同主机上。每个客户端同时派生5个子进程,每个子进程在与服务器依次建立500次连接,每次连接请求4000个字节的数据。因此,每个客户端将与服务端建立2500个连接。总共有... 阅读全文
posted @ 2015-04-06 09:49 gqtc 阅读(242) 评论(0) 推荐(0)
摘要: 一:概述 在简单的回射服务例子中,客户端和服务器的交互步骤如下:客户从标准输入中读入一行文本,并写给服务器;服务器从网络输入读入这行文本,并回射给客户;客户从网络输入读入这行回射文本,并显示在标准输出上。下图描述了整个过程: 二:多进程的str_cli 其中客户端的s... 阅读全文
posted @ 2015-04-05 11:49 gqtc 阅读(369) 评论(0) 推荐(0)
摘要: 一:广播1:概述 多播支持在ipv4中是可选的,在IPv6中却是必须的; IPv6不支持广播。使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新编写; 广播和多播要求用于UDP或原始IP,它们不能用于TCP。2:广播地址 ... 阅读全文
posted @ 2015-04-04 21:21 gqtc 阅读(492) 评论(0) 推荐(0)
摘要: 一:原始套接字 1:原始套接字作用 原始套接字提供普通的TCP和UDP套接字所不能提供的以下3种能力: 有了原始套接字,进程可以读写ICMP, IGMP等分组。比如ping程序就是使用原始套接字发送ICMP回射请求并接收ICMP回射应答。 ... 阅读全文
posted @ 2015-04-04 17:42 gqtc 阅读(691) 评论(0) 推荐(0)
摘要: Libevent提供了一些API用来进行DNS域名解析,并且提供了实现简单DNS服务器的能力。 本章首先描述域名解析的上层功能,然后介绍底层功能及服务器功能。 注意:Libevent的当前DNS客户端实现有一些限制,它不支持TCP查询,DNSSse... 阅读全文
posted @ 2015-02-28 09:28 gqtc 阅读(1296) 评论(0) 推荐(0)
摘要: evconnlistener机制提供了监听并接受TCP链接的方法。除非特别注明,本章的所有函数和类型都在event2/listener.h中声明。 一:创建或释放evconnlistenerstruct evconnlistener *evconnlistener_new(str... 阅读全文
posted @ 2015-02-13 20:59 gqtc 阅读(310) 评论(0) 推荐(0)
摘要: Libevent的evbuffer功能实现了一个字节队列,优化了在队列尾端增加数据,以及从队列前端删除数据的操作。 Evbuffer用来实现缓存网络IO中的缓存部分。它们不能用来在条件发生时调度IO或者触发IO:这是bufferevent做的事情。 本章介... 阅读全文
posted @ 2015-02-12 21:38 gqtc 阅读(1052) 评论(0) 推荐(0)
摘要: 很多时候,应用程序除了能响应事件之外,还希望能够处理一定量的数据缓存。比如,当写数据的时候,一般会经历下列步骤:l 决定向一个链接中写入一些数据;将数据放入缓冲区中;l 等待该链接变得可写;l 写入尽可能多的数据;l 记住写入的数据量,如果还有数据需要写入,则需要再次等待链... 阅读全文
posted @ 2015-02-01 20:31 gqtc 阅读(893) 评论(0) 推荐(0)