2011年3月1日
摘要: 以前的我总给自己安排一大堆无法完成的任务,结果效果很差,现在精简下。2011年的学习计划是:(1)TCP/IP协议,(2)nigix源码分析,(3)STL源码分析,(4)算法需要实现的项目: (1)linux下飞鸽实现,(2)linux下入侵检测系统,(3)linux下高性能web服务器实现.有时间再学习下分布式系统。需要学习与复习的书籍:算法导论,unix三卷书,c++编程思想,深入理解计算机系统,c专家编程,c缺陷与陷阱.哈哈,争取顺利毕业,找一份自己喜欢的工作。 阅读全文
posted @ 2011-03-01 00:36 tankzhouqiang 阅读(210) 评论(0) 推荐(0) 编辑
  2011年2月28日
摘要: epoll学习笔记 epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题:首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用的都是ET模式,而且接收缓冲区是5字节的,也就是每次只接收5字节的数据:#include<iostream>#include<sys/socket.h>#include&l 阅读全文
posted @ 2011-02-28 14:58 tankzhouqiang 阅读(1941) 评论(0) 推荐(1) 编辑
摘要: epoll精髓 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1. 阅读全文
posted @ 2011-02-28 14:27 tankzhouqiang 阅读(493) 评论(0) 推荐(0) 编辑
  2011年2月23日
摘要: #include<stdio.h>#include<stdlib.h>#include<string.h>/*naive string-matching algorithm,T为原始字符串,P为需要匹配的字符串*/void naiveMatch(char *T,char *P){ int lenT,lenP,i,j; lenT=strlen(T); lenP=strlen(P); if(lenT<lenP)/*需要匹配的字符串比原始字符串还要长出错*/ { perror("input error"); return ; } for( 阅读全文
posted @ 2011-02-23 16:43 tankzhouqiang 阅读(2219) 评论(4) 推荐(0) 编辑
  2010年5月17日
摘要: 1.本章思维导图: Example1: char *strcpy(char *target, const char *source) { char *t = target; // Copy the contents of source into target. while(*source) *target++ = *source++; // Null-terminate the target. *target = '\0'; // Return pointer to the start of target. return t; } Example2: void *memmove 阅读全文
posted @ 2010-05-17 14:25 tankzhouqiang 阅读(437) 评论(0) 推荐(0) 编辑
  2010年4月22日
摘要: 怎样使用(处理)packet指针变量呢?一个packet指针所指的结构包含了很多属性,它并不是一个真正的字符串,而是多个结构组成的集合(比如:一个TCP/IP数据包包括以太网头、IP包头、TCP头和数据包中有效的数据负载)。首先需要定义这些结构: /* Ethernet header */ struct sniff_ethernet { u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */ u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */ u 阅读全文
posted @ 2010-04-22 16:44 tankzhouqiang 阅读(859) 评论(0) 推荐(0) 编辑
  2010年3月11日
摘要: 轻轻松松产生Makefile在Unix上写程序的人大概都碰过Makefile,尤其是用C来开发程序的人。用make来开发和编译程序的确很方便,可是要写出一个Makefile就不简单了。偏偏介绍Makefile的文件不多,GNUMake那份印出来要几百页的文件,光看完Overview就快阵亡了,难怪许多人闻Unix色变。本文将介绍如何利用GNUAutoconf及Automake这两套软体来协助我们『自动』产生Makefile档,并且让开发出来的软体可以像Apache,MySQL和常见的GNU软体一样,只要会``./configure'',``make'',``ma 阅读全文
posted @ 2010-03-11 19:41 tankzhouqiang 阅读(386) 评论(0) 推荐(0) 编辑
  2010年3月7日
摘要: Makefile的编写 假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"); mytool2_print("hello"); } /* mytool1.h */ #ifndef _MYTOOL_1_H #define _MYTOOL_1_H void mytool1_print(char *print_s 阅读全文
posted @ 2010-03-07 20:46 tankzhouqiang 阅读(1015) 评论(0) 推荐(0) 编辑
  2009年12月11日
摘要: 问题: 入问题,问题答案立即呈现在您眼前! 寻找gzip 获取一个网页数据返回的编码类型是gzip,我该怎么解压缩 HTTP头获取? 如何用vb获取网络上的xml文件,并解析内容 关于GZIP的解码 怎样解gzip的压缩 请问Wininet是否可以进行Gzip的http传输,尤其是post的时候!如果可以如何实现? 关于GZIP格式解压缩HTTP数据包的问题,我使用ZLIB为什么必须先保存文件,内存解压缩出错 无法获取$_SERVER["HTTP_REFERER"] 关于GZIP的问题,高分求解!! ..... 等都是关于gzip解压的 问题: 提取http的gzip内容, 阅读全文
posted @ 2009-12-11 00:42 tankzhouqiang 阅读(3061) 评论(0) 推荐(0) 编辑
摘要: gzip原理与实现时间:2009-10-21 22:32:17来源:网络 作者:未知 点击:57次 gzip 使用deflate算法进行压缩。zlib,以及图形格式png,使用的压缩算法也是deflate算法。从gzip的源码中,我们了解到了defalte算法的原理和实现。我阅读的gzip版本为 gzip-1.2.4。下面我们将要对deflate算法做一个分析 gzip 使用deflate算法进行压缩。zlib,以及图形格式png,使用的压缩算法也是deflate算法。从gzip的源码中,我们了解到了defalte算法的原理和实现。我阅读的gzip版本为 gzip-1.2.4。下面我们将要对d 阅读全文
posted @ 2009-12-11 00:36 tankzhouqiang 阅读(1341) 评论(0) 推荐(2) 编辑