自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

多线程fork多进程

I love programe.I love algorithm.I love accept

  • 博客(17)
  • 资源 (14)
  • 收藏
  • 关注

翻译 bloom filter

一、什么是 Bloom filter  Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,这种检测只会对在集合内的数据错判,而不会对不是集合内的数据进行错判,这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filte

2012-03-31 10:39:34 456

原创 校验和总结

1:IP校验和只校验20字节的IP报头,并不会计算数据部分的校验和。因为IP也是不可靠,尽最大努力投递。2:ICMP校验和覆盖整个报文(ICMP报头+ICMP数据);3:UDP和TCP校验和不仅覆盖整个报文(头部+数据),而且还有12字节的IP伪首部,其中包括源IP地址(4字节)、目的IP地址(4字节)、协议(2字节,第一字节补0)和TCP/UDP包长(2字节)。另外UDP、TCP数据报的

2012-03-31 09:08:36 578

原创 简易ping程序

当我把icmp的检验和设置成0时,ping百度是可以有echo返回。但是ping其他主机是没有返回响应。手动添加检验和后正常。原因:可能是baidu服务器并没有检测校验和就返回一个echo,这样可以减少服务器的负担。而其他一些站点都会校验。注意点:IPV4的icmp,在原始套接字收到后,收到的是包含IP头在内的完整数据报IPV6的icmp,则是去除所有ip头和扩展头部的

2012-03-31 08:40:23 482

原创 双向链表实现线程池 用于TCP并发连接

简述:自我感觉对C指针了解的还是比较透彻,能够运用自如,一方面练习一下多线程编程,另一方面练习一下数据结构链表。但是完成的过程中,各种问题还是扑面而来,共花了2个小时完成了此线程池来实现TCP并发连接,创建固定数目的线程时间仓促,可能有某些指针未释放,或者还没完善的地方,希望能共同讨论。双向链表提高扫描速度,信号等待用while保护,防止惊群,在任务提取和加入过程动态维护链表,防止链表

2012-03-28 19:16:44 1571

原创 简单进程池实现多TCP客户服务

根据预定义进程数创建进程池。父子进程通信使用的IPC方式为:UNIX域套接字父进程listen,aeecpt,并将连接套接字发送到子进程,交由子进程处理该连接。子进程处理完毕,与父进程通信,实现资源回收,并在下一连接到来交由该完毕的子进程。#include "unp.h"#include #define IDLE 0#define BUSY 1#define END

2012-03-28 09:31:40 1366

转载 链路层访问修改

首先例子中, udpcksum.h包含了两个头文件 ip_var.h/udp_var.h,我是centos5.5的,系统中并无这些头文件。如果自己隐掉,编译时明显就会报struct udpiphdr结构不存在。可在udpcksum.h中增加以下代码:struct ipvolg{    u_char  ih_x1 [9];  //9 bit    u_char  ih_pr;

2012-03-22 20:50:41 554

原创 源路径选项

1. V4,V6头部差异IP源路径选项:对于IPV4,由于IP头部长度字段为4位,最大可以表示15,那么限制了IPV4的头部总长度为15*4 = 60字节。前10字节为固定的头部部分,所以最多有40个字节用来填充选项字段。对于IPV6,固定长度的40字节的IPV6头部和传输层头部之间可以有扩展头部。2. V4,6头部选项字段填充和获取使用setsockopt和getsockopt,传入参数

2012-03-19 19:39:20 1093

原创 原始套接口基础知识

原始套接口输出:       1如果已经连接,则可以使用write,writev,send       2.未连接,则使用sendto,sendmsg       3.开启IP_HDRINCL:进程需要自填充IP,进程调用输出函数时的字节数包括IP头部。              IPV4的标识字段可以设置成0,由内核填充该值;              IPV4的头部校验和字

2012-03-19 14:30:40 618

原创 C语言中static相关

1.      对于全局static变量,初始化:首先是全局变量,被初始化为0,其次是static也被初始化为0;存放位置:存放于内存的静态区。作用域:开始于定义位置,终止于文件的结尾。 本文件之内在没有定义此static全局变量之前,想使用的话需要加extern声明。(最好在文件开始处就定义,避免使用extern)特殊性:static还有隐藏的作用,本文件定义了static全局变

2012-03-19 10:59:26 1864

原创 寻找第K小元素O(N)算法

快速排序时间复杂度:O(n*lgn)但是没必要完整排序后再O(1)选出第k元素。思想:利用快排分区思想,分界点为q,左边的数小于等于q,右边的数大于q这个规则。如果k小于左边区间个数则以左区间递归,否则在右区间递归。#include #define MAX 100000void swap(int *a, int *b){/*交换*/ int temp; temp = *

2012-03-16 21:22:56 869

原创 异步信号驱动IO实现回射服务器

#include "unp.h"#include /*server */#define QSIZE 10struct DG{ void *data; size_t datalen; struct sockaddr_in addr; socklen_t addrlen;};struct DG client[QSIZE]; /*循环队列*/int nqueue, nin,

2012-03-16 18:51:38 436

原创 利用Unix域套接字实现IPC

写完后,至少调试了30分钟时间。错误1:snprintf(argsockfd, sizeof(argsockfd), "%d", sockfd[1]);snprintf(argmode, sizeof(argmode), "%d", mode);写作:snprintf(argsockfd, sizeof(argsockfd), "%s", sockfd[1]);snprintf(arg

2012-03-14 21:39:16 590

原创 UDP 超时重传机制

问题来源:老式方法:UDP传输设定超时未N秒,发送一个请求后等待N秒钟,若超时都没有收到确认,则重发请求,重发一定次数后便丢弃。老式方法不合理的原因:由于网络上影响因素的不同,可能RTT差别较大,设定一个固定的超时时间使资源不能得到合理应用。较好的方法:根据实测的RTT及其他因素考虑在内来估计超时时间。术语RTO:重传超时Srtt:平滑化的RTT估算因子Reevar:平滑化平均偏差估

2012-03-14 14:43:13 13001 1

原创 关于sigsetjmp,siglongjmp注意点 (UDP超时重传应用)

问题来源:UDP编程中,应用程序实现的超时重传机制,在计算每个分组的RTO时。在发送请求和接受应答之间要运用超时重传机制,来提高UDP传输的可靠性。题外话:【Jacobson算法:每次测得一个RTT后就计算RTO以及重传时如何增加RTO。一般当定时器满,实行RTO指数回退。Karn算法:只有收到不是重传的请求时,才更新RTT并重新计算RTO。】使用alarm作为定时器,在对SIGALRM

2012-03-14 10:04:18 1742

原创 关于visio出现只有黑白色的情况

可能是:控制面板”-“辅助功能选项”-“显示”-“高对比度”这里,勾选了“使用高对比度”。

2012-03-13 21:33:50 5623

原创 对于非阻塞connect的一点认识

一般如下:connect();select();由于是非阻塞,很自然connect立即返回,而不同于阻塞条件下的成功或者失败才返回。对于TCP来说,非阻塞的connect会立即返回一个错误EINPROGRESS,而且完成3路握手。对于UDP来说,个人觉得,由于内核只是检查是否存在立即可知的错误,并记录对方的IP和端口号,没必要使用非阻塞的connect。正常情况:

2012-03-13 21:20:51 625

原创 关于C语言中函数值传递的巩固,指向指针的指针 【网络编程获取借口列表时,使用了指针的指针的思考】

问题来源:单链表的建立时,定义List *header,为什么创建链表的时候用void creat_list(List **mylist)呢?而不是void creat_list(List *mylist)呢?当然不止这一种方法建立单链表,比如List* creat_list()来建立,但是我想利用值-结果参数来实现。#include #include typedef struct Lis

2012-03-13 20:52:25 567

串口调试助手高级版V0.1(升级版)

串口助手高级版有哪些新功能? 1.自动换行 2.随机发送帧 3.设计一个可变帧发送 4.按组接收 5.在收到的N多字节中,检索完整的数据帧 6.囊括其他版本的所有功能

2012-11-15

二分查找几本应用

二分查找,查找不大于某个数的数 有着很高的效率

2012-04-28

单链表逆转操作

单链表逆转操作,在笔试中经常可见 1实现整体逆转 2.实现相邻元素逆转

2012-04-28

数据结构 堆

数组下标从1开始。 如果当前节点为pos,则父亲节点为pos/2;左子节点为pos*2 ,右子节点为pos*2+1.

2012-04-08

XP右键菜单优化,还你一个干净的系统

XP右键菜单优化,还你一个干净的系统 删除多于的右键菜单

2010-07-21

acm课件搜索(杭电)(HDU)

ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下

2009-06-29

acm课件二分匹配(杭电)(HDU)

ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下

2009-06-29

acm课件动态规划题(杭电)(HDU)

ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下

2009-06-29

acm课件母函数的运用(杭电)(HDU)

ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下

2009-06-29

acm课件简单数学题(杭电)(HDU)

ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下

2009-06-29

ACM 题解报告,详细代码解释

ACM 算法 杭电 北大 数据结构 TSL C语言 c C++

2009-05-15

南开100题+网络技术

适合参加全国计算机等级考试的人,含南开100题和三级课件

2009-03-10

计算机等级考试公共基础

计算机2级公共基础120题,对计算机等级考试的各位兄弟姐妹很适用的

2009-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除