如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。
我会以一个回应反射式服务器(与《Windows网络编程》第八章一样)来介绍这五种I/O模型。我们假设客户端的代码如下(为代码直观,省去所有...
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/C-Extensions.html#C-Extensions是GCC的51项扩充的说明,若有时间,不妨一阅。
http://en.wikipedia.org/wiki/ISO_C它给出了C语言的定义。
typedef struct{ UINT32 sourceip; //源IP地址 UINT32 destip; //目的IP地址 UINT8 mbz; //置空(0) UINT8 ptcl; //协议类型 UINT16 plen; //TCP/UDP数据包的长度}Tcp_Psd_Header,Udp_Psd_Header;
typedef union { struct ip{ UINT32 sourceip; //源IP地址 UINT32 destip; //目的...
ICMP报文的格式和种类rague | 13 九月, 2007 16:41
--------------------------------格式------------------------------------- 各种ICMP报文的前32bits都是三个长度固定的字段:type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)
8bits类型和8bits代码字段:一起决定了ICMP报文的类型。常见的有: 类型8、代码0:回射请求。 类型0、代码0:回射应答。 类型11、代码0:超时。 16bits校验和字段:...
双端队列(JAVA)双端队列就是一个两端都是结尾的队列。队列的每一瑞都可以插入数据项和移除数据项。这些方法可以叫作insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和队列一样了。双端队列与栈或队列相比,是一种多用途的数据结构,在容器类库中有时会用双端队列来提供栈和队列两种功能。
【Catalan数——卡特兰数】
一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n) = C(2n-2,n-1)/n,n=1,2,3,...(其中C(2n-2,n-1)表示2n-2个中取n-1个的组合数)
二.Catalan数公式推导截图:
三.Catalan数的典型应用:
1.括号化问题。矩阵链乘: P=A1×A2×A3×……×An,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案? ...
http://www.programfan.com/club/post-271278.html 、
由于种种需要直接进行读取Excel文件数据,然而在网上Search多次也没有找到好的方法,一般就通过ODBC或OLE方式进行读取,但这两种方法都具有局限性...(我相信大家都很清楚)。怎么办呢?没办法了,只好选择最艰难的路了--分析Excel文件格式。 介绍 MS Excel是众所周知的电子表格处理软件。Excel文件格式是特定的BIFF(Binary Interchange File Format),BIFF里存储了很多记录,第条记录包括记录头和记录体。记录头是4byte,前两位指定...