自定义博客皮肤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

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

转载 gcc生成静态库和动态库

一、库文件简介简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态库文件的扩展名是.a,共享库文件的扩展名是.so(在CYGWIN环境下,分别叫做.o和.dll)。共享库现在常常被叫做动态库,是由于很多人借用了MS Wind

2012-05-27 14:51:23 960

原创 Dijkstra求单源最短路径(图论基础算法)

Dijkstra算法:最短路Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11669    Accepted Submission(s): 4968Problem

2012-05-05 20:06:03 824

原创 无向图求连通部件,和节点访问时刻和离开时刻

#include #include #include #include #include using namespace std; char ch[12];bool gmap[12][12];bool flag[12];queue myqueue;struct Time { int s; int e;}mytime[12];int cnt = 1;void dfs(i

2012-05-04 19:26:00 520

原创 模板编译模型

非模板模型:包括普通函数,普通类;在调用普通函数时,编译器只需要看到函数的声明。在定义类对象时,编译器只需要看到类的定义,成员函数的定义不是必须存在的。所以:将类的定义和函数的申明放在头文件中,类成员函数的定义,普通函数的定义放在源文件中。模板模型:包括模板函数,模板类;在调用模板函数或类的模板成员函数时,编译器需要知道函数的定义,然而这些代码通常放在源文件中。

2012-05-03 09:13:34 481

原创 fedora9下使用QT连接数据库(QSqlDatabase: QODBC driver not loaded)

开源版的QT没有提供Mysql的驱动,导致使用数据库的时候提示如下错误:QSqlDatabase: QODBC driver not loadedQSqlDatabase: available drivers: QSQLITE解决方法:重新编译QT ./configure -qt-sql-mysql -qt-sql-sqlite -plugin-sql-mysql -plugi

2012-05-02 20:51:40 1359 1

转载 HASH_MAP

条条大路通罗马,为什么你不随便选一条?0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦

2012-04-30 14:18:37 492

转载 数划分

数的划分问题描述将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的:1,1,5;1,5,1;5,1,1。问有多少种不同的分法。输入:n,k(6输出:一个整数,即不同的分法。输入输出样例输入:7 3输出:4问题分析:这是一道整数剖分的问题。这类问题的数学性很强,方法也很多。

2012-04-26 18:58:59 397

原创 C++多态

多态分编译时多态和运行时多态:编译时多态就是指函数重载,运算符重载,泛型编程。这个很好理解运行多态是指使用虚函数来实现使用基类的对象的引用或指针来访问派生类成员,即使调用派生类中由基类申明的虚函数。这个也好理解,但是要和非虚函数覆盖区别开来class Base {private: int a;public: Base(int i=100):a(i){} void

2012-04-23 19:20:40 535

原创 常见动态规划(DP)

1最大子数组和输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。#include #include #include using namespace std;void DP(int a[], int n) { int dp[100]; int i, j, max

2012-04-20 16:32:16 1041

原创 设计包含min函数的栈O(1)时间复杂度(笔试)

设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。在入栈的时候就用一个数组dp对当前栈内的元素最小值保存#include #include #include using namespace std;class STACK {private: int size; int c

2012-04-20 15:09:36 454

原创 二叉查找树转双向链表(笔试)

输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整指针的指向                    10                 / \               6   14              / \   / \           4    8 12 16    转换后成双向链表481012141

2012-04-20 14:34:38 479

原创 使用STL求第K大数

项目上需要使用C++,抽空正好把C++熟悉一下。期待接下来的这个项目能给我的C++编程能力带来提升。先来个set版本的。#include #include #include #include #include #include #include #include using namespace std;int main( ) { int a, n, k, s

2012-04-10 19:36:30 2488

原创 几个关于多线程笔试题

先来个简单的,缓解下尴尬的气氛。子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。#include #include #include #include pthread_attr_t attr;pthread_mutex_t mutex;pthread_cond_

2012-04-08 20:56:12 1308 1

原创

在求前K大数中可以用堆来维护,但是很久没碰堆这个东西了,BS下自己。重新复习一下吧。插入堆的时候,将元素放在数组尾,破坏堆的规则,使此节点上浮。删除堆顶元素的时候,首先返回堆顶元素,然后将数组尾元素置于堆顶,破坏规则,使此节点下沉。规则;数组下标从1开始。  如果当前节点为pos,则父亲节点为pos/2;左子节点为pos*2  ,右子节点为pos*2+1. 小根堆的堆顶元素最小

2012-04-08 15:29:10 521

原创 N个数求最大的k个数

计划之中,每周日,做点算法题。希望能有所进步。看了一个在N个数中求k个数,我的第一感觉应该是用堆来解决。确实堆是可行的,这里给出一个快排思想的求法,时间复杂度为O(N*log2^k)。然后再弄个堆维护的例子。以前搞ACM的时候,有点浮躁,但愿能够在静下来的时候多多考虑算法。#include #include void swap(int *a, int *b) { int

2012-04-08 10:45:28 639

原创 2012腾讯实习招聘笔试附加题1

一个数组a[n],求构造出一个b[n],使得b[i]=a[0]*a[1]*...a[n-1]/a[i];不能用除法和除了循环变量外的额外变量 ,要求(1)的空间复杂度,O(n)的时间复杂度。在网上看见这个题目,感觉很有意思。我的解法如下,不知道有没更好点的。#include #include void change_a2b(int a[], int len, int b[]) {

2012-04-08 09:22:32 495

原创 用TCP/IP进行网际互联第三卷 源代码编译修改

用TCP/IP进行网际互联源代码编译修改1./usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in TCPecho.o/lib/libc.so.6: could not read symbols: Bad value删除源文件中的 extern

2012-04-06 21:09:25 1636 1

原创 C语言中变长形参的实现

#include "unp.h"#include /*void func(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stdout, fmt, args); va_end(args); exit(1);}int main( ) { int a = 1; int b = 2;

2012-04-06 20:09:26 561

原创 xp下使用telnet 或者vnc连接linux

telnet还是挺方便的,不过属于文本界面vnc也挺方便,提供更强大的图形界面。1. 查询linux是否安装了telnet-serverrpm -qa  telnet-server2. yum install telnet-server  附带安装了xinetd并置 /etc/xinetd.d/telnet 下的disable 为no或者注释。,因为telnet是由xi

2012-04-06 16:18:54 494

原创 基于线程池实现linux下守护进程运行web目录服务器

LInux先建立线程池,主函数监听套机字,accept后,将连接套接字投入线程池处理。自己搞的这个线程池,暂时没有发现问题,运行效果还行。虽然free是线程安全,不可重入的。但是我们并没使用静态变量,所以不会存在问题下为main函数,运行参数为  ./web  n  k     ;n为想线程池初始化的线程数,k为0为终端运行,k为1则转为守护进程。运行如图支持文

2012-04-05 08:21:47 1066

转载 交换两个数组使两个数组和的差最小

交换两个数组使两个数组和的差最小 /*    有两个数组a,b,大小都为n,数组元素的值任意整形数,无序;    要求:通过交换a,b中的元素,使[数组a元素的和]与[数组b元素的和]之间的差最小。*//*    求解思路:    当前数组a和数组b的和之差为    A = sum(a) - sum(b)    a的第i个元素和b的第

2012-04-03 15:26:20 496

原创 形参定义成指定大小的数组

今天在百度知道上看见一个问题。类似char *func( char str[10]) {       printf(“len= %d\n”, sizeof(str));}int main() {       charstr[100] = “there is a problem”;func(str);} 首先对func函数了解,形参为char str[10],

2012-04-03 10:34:24 1809

转载 B 树、 B- 树、 B+ 树、 B* 树都是什么

http://blog.csdn.net/w174504744/article/details/7419017B树      即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;      3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;      如:

2012-04-02 08:53:37 366

原创 快速幂运算

普通的求幂时间复杂度为O(n);但是可以有更好的算法,实际上循环log(2,n),n^k = n^(k1*2^0  + k2*2^1 + k3*2^3 ....) k1,k2...k(log2,n)取0,1,为k的二进制中每一个bit位展开便可得。n^(k1*2^0)  *  n^(k2*2^1) * n^(k3*2^2).......至此,一个较优的算法出现了#include

2012-04-02 08:47:07 488

转载 两个指针之美

无意中看见了这篇帖子。感觉写的还不错。尤其是求链表中倒数第K个节点,其他技巧都是一些比较常见的思路了,不过也能带给我更多的思考。源:http://blog.csdn.net/dlengong/article/details/7418420使用两个指针可以轻松的解决许多算法问题,归纳出如下几种1、  判断链表是否带环带环链表的判断是链表中经常考察的内容。一个循环链表可以无休止地遍历下

2012-04-02 08:20:41 495

翻译 糊涂窗口综合症

什么是糊涂窗口综合症当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。 极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象就叫糊涂窗口综合症发送端引起的糊涂窗口综合症如果发送端为产生数据很慢的应用程序服务(典型的有telnet应

2012-04-01 10:28:17 342

原创 学习笔记:对Tcp拥塞,超时重传的一些理解

仅供个人笔记,不能保证正确#include "unp.h"extern int c_window, allow_window;extern int RTO;extern int *point1, *point2, *point3;extern int record_conges;void mult_dec( ) { /*乘法减小*/ int *tmp

2012-04-01 09:52:48 362

翻译 bloom filter

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

2012-03-31 10:39:34 443

原创 校验和总结

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 539

原创 简易ping程序

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

2012-03-31 08:40:23 466

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

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

2012-03-28 19:16:44 1556

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

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

2012-03-28 09:31:40 1344

转载 链路层访问修改

首先例子中, 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 534

原创 源路径选项

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 1067

原创 原始套接口基础知识

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

2012-03-19 14:30:40 598

原创 C语言中static相关

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

2012-03-19 10:59:26 1854

原创 寻找第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 828

原创 异步信号驱动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 424

原创 利用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 578

原创 UDP 超时重传机制

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

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

超越C++标准库.pdf

超越C++标准库,是关于boost方面不错的书籍!

2012-12-10

串口调试助手高级版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关注的人

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