自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天河水

规格严格,功夫到家

  • 博客(71)
  • 收藏
  • 关注

原创 文嘉声明:给每一位读者的话

作者文章均为原创或者翻译。有一部分引用转载或者拼接。引用本人文章请注明出处。作者名字:李海波 哈尔滨工程大学计算机学院 邮箱:liwenjia1981@163.com文嘉QQ:956270284   请验明技术身份 文嘉对于数据结构、计算机算法艺术、搜索引擎技术、云计算、数据挖掘、linux 具有一定造诣。  

2010-03-06 17:25:00 905

转载 回调函数

一个c回调函数的例子2009年06月18日 星期四 上午 10:57#include// 方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)typedef int (*CallBackFun)(cha

2011-08-09 16:20:58 721

原创 设计和实现高水平分布式网络爬虫

<br />本人翻译,原创,转载务必注明:哈尔滨工程大学李海波<br />   <br /> 设计和实现高水平分布式网络爬虫<br />摘要:纵观网络搜索引擎和其他特殊的搜索工具一样,依赖网络蜘蛛区获得大规模的网页进行索引和分析。这样的网络爬虫会与数以百万计的主机在一定时期或者一周内进行交互。因此随之产生的健壮性、灵活性和可管理性等问题。另外,I/O性能、网络资源和操作系统的限制也会在设计高性能爬虫的时候进行合理的考虑。<br />    本论文描述和设计了分布式网络爬虫运行在工作站上。网络爬虫的能够在一秒

2011-04-06 14:38:00 8474 5

原创 memset清空一个结构类型的变量或数组

<br />将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。<br />需要的头文件<br /><memory.h> or <string.h> <br />函数原型  void *memset(void *s, int ch, unsigned n); <br />程序例  #include <string.h> <br />  #include <stdio.h> <br />  #i

2011-04-06 14:15:00 11973

转载 linux下ifconfig, DNS以及route配置

<br /><br />原文:http://www.cnitblog.com/201/archive/2009/08/20/60887.html<br />熟悉使用ifconfig 会非常方便。 <br /> ifconfig eth0 新ip<br />  然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip<br />  一、修改IP地址<br />  [aeolus@db1 network-scripts]$ vi ifcfg-eth0<br />  D

2011-03-07 10:34:00 1242

原创 socket 的select 服务器/客户机程序

<br />//////////////////////////client.h////////////////////////////////////////<br />#ifndef __TENSERVER_H<br />#define __TENSERVER_H<br />#include<iostream><br />#include<string><br />#ifdef __cplusplus<br />extern "C" { <br />#include<unistd.h><br />#in

2010-07-27 11:13:00 748

转载 计算字符串相似度

<br /><br />编程之美3.3<br />看完题后,毫无头绪<br />书上的解题思路很好,首先两个字符串的距离肯定是个可知数,必须小于两字符串之和。<br />可以通过删除操作将两个串都变成空串。<br />书上所示的递归方法,代码敲出来了,有点点不同<br /> view plaincopy to clipboardprint?#include <stdlib.h>  #include <stdio.h>  #include <string.h>    void calDistance(char

2010-07-13 10:27:00 2353 1

原创 求A+B=C

<br />#include<stdio.h><br />int a[5]={1,2,3,5,11};<br />int *p;<br />int *q;<br />int maxij(int **i,int **j,int flag)<br />{<br /> int u,v;<br /> <br /> printf("----%d/n",a[flag]);<br /> for( u=0,v=4;u<v;)<br /> {<br />  if(a[u]+a[v]==a[flag])<br />  {<br

2010-07-12 19:56:00 1206

原创 前序,中序,后续非递归遍历树的标准算法

<br />前序,中序,后续非递归遍历树的标准算法<br /> 在中国源码网上发现了这三个算法,据说是标准算法,算法的整体思想就是(以中序为例):<br />1、先设一个栈s和一个指向树根的指针p,用p指指向结点的lchild并顺其而下直到p==NULL跳出循环,在这一过程中把从根节点到最左节点过程中经过的每个结点(包括最左结点)入栈,则此时的p指向的是树的最左结点。             <br />2、栈顶元素出栈以访问最左结点<br />3、访问最左结点的根结点。<br />4、由于将右子树理解为一

2010-07-12 14:39:00 7677

原创 数组中最长递增子序列

<br />这道题还有优化的解法:保留一个动态规划优化矩阵,里面保留每次最长子序列的终点。<br />#include<iostream><br />#include<vector><br />using namespace std;<br />int Max(int *a, int n)<br />{<br />     int max = a[0];<br />     for(int i = 1; i < n; i++)<br />         if(max < a[i])<br />      

2010-07-12 10:49:00 821

原创 sigsuspend函数

<br /><br />手册:<br />       #include <signal.h><br /><br />       int sigsuspend(const sigset_t *sigmask);<br /><br />The   sigsuspend()   function   shall replace the current signal mask of the calling thread with the set of signals pointed to by sigmask

2010-07-11 21:32:00 1076

原创 sigpromask 应用

<br />C/C++ code【sigprocmask系统调用】功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。用法:#include <signal.h>int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);参数:how:用于指定信号修改的方式,可能选择有三种SIG_BLOCK //加入信号到进程屏蔽。SIG_UNBLOCK //从进程屏蔽里将信号删除。SIG_SE

2010-07-11 18:54:00 1727

转载 0-1背包问题

<br />http://blog.csdn.net/livelylittlefish/archive/2008/03/16/2186206.aspx<br /> <br />本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!                                              0/1背包问题                                     

2010-07-11 14:46:00 6348 1

原创 研究生必会算法

<br />1。广义表转换二叉树<br />2。用后续遍历计算树高度和节点个数

2010-07-11 10:55:00 1325 1

原创 广义表建立二叉树

<br />//#ifndef __BITREE_H<br />//#define __BITREE_H<br />#include<iostream><br />#include<string><br />#include<stack><br />#include<assert.h><br />#include<stdlib.h><br />using namespace std;<br />class BiTree;<br />class TreeNode<br />{<br /> public:<br

2010-07-11 10:31:00 1665

转载 0-1背包算法

<br /><br />动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。<br />比如01背包问题。<br />/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,<br />它们的重量分别是W1,W2,...,Wn,<br />它们的价值分别为P1,P2,...,Pn.<br />若每种物品只有一件求旅行者能获得最大总价值。<br />输入格式:<br />M,N<br />W1,P1<br />W2,P2<br />......<br />输

2010-07-10 16:48:00 4261

原创 洗牌算法

<br />洗牌即产生指定数据的随机序列。在网上找了半天大体有两种做法1、 思路:将54个数依次放到随机的位置。关键是每次找一个随机的位置。下面是找这个随机位置的算法:1、用一个Bool型数组记录各个位置是否已经放置了数,如果放置则置true,没有则为false。在算法开始时数组初始化为false。2、每次产生一个0~53的随机数,看这个位置是否已经放置了数,如果已经放置了,则继续用同样的方法找一个随机位置判断;如果这个位置还未放置,则设置此位置,并标记其已经放置。3、反复执行(2)直到所有的位置都放置了数

2010-07-10 16:30:00 754 1

原创 fork和exec

<br />fork和exec<br />许多朋友对fork和exec调用概念比较模糊,下面我简单描述下这方面的知识。<br />学过C语言的都知道,Unix下某个进程的内存分成三部分:代码段,堆栈段,数据段。代码段用来存放程序运行的代码,堆栈段用来存放子程序的局部变量,数据段用来存放全局变量。这在perl里也是一样的。<br />perl的fork调用,跟C的一样,当发生fork调用时,实际上发生如下事:<br />父进程将代码段,堆栈段,数据段完全复制一份给子进程。也就是说,在子进程运行之初,它拥有父进

2010-07-09 16:51:00 769

原创 fork与vfork,exit与—exit

<br /> 在fork之后,子进程和父进程都会继续执行fork调用之后的指令。子进程是父进程的副本。它将获得父进程的数据空间,堆和栈的副本,这些都是副本,父子进程并不共享这部分的内存。也就是说,子进程对父进程中的同名变量进行修改并不会影响其在父进程中的值。但是父子进程又共享一些东西,简单说来就是程序的正文段。正文段存放着由cpu执行的机器指令,通常是read-only的。<br /><br />  由于在fork之后我们常常都是跟个exec在后面,所以为了提高效率,很多的实现并不完全复制数据段和堆、栈,而

2010-07-09 16:11:00 1754

转载 volatile的例子

<br />讲讲volatile的作用64推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br />    1). 并行设备的硬件寄存器(如:状态寄存器) <br />    2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) <br />    3).

2010-07-09 11:12:00 994

转载 C++模板中的分离编译与包含贬义

<br />http://ju-kevin.spaces.live.com/blog/cns!907BD90CD611C0C7!224.entry

2010-07-08 21:14:00 1260

原创 一个小小硕士的实习路

 转载必须注明出处:哈尔滨工程大学计算机学院李海波 QQ:393699949   一个小小硕士,读了这么多年的书,学而优则仕,目的就是为了找一家可以托付的好公司。今年的火热的实习生招聘,虽然结果还未可知,作为经历丰富的经验,也是值得大书一番的。   1。百度   百度我投的最早,3月份就投了简历。5:30日终于盼来了笔试,传说中的百度笔试极其的BT,而相比之下,其他公司的就相对简单一些。那天的笔试,我做的还不错,有一道题,由于马虎,稍微除了点小错误,当时想改,不知道为什么就忘了改了,可能是由于时间紧张的缘故

2010-07-08 20:31:00 1459 2

原创 求逆序对

#includeusing namespace std;static int nums=0;bool Merge(int *list,int left,int mid,int right){ int i=left; int j=mid+1; int k=0; int *num=new int[right-left+1]; if(!num) return false; while((i

2010-07-03 11:11:00 441

原创 1。排列算法 2。大整数划分

<br />#include<iostream><br />using namespace std;<br />int partion(int n,int m)<br />{<br /> if((n<1)||(m<1))<br />  return 0;<br />  if((n==1)||(m==1))<br />   return 1;<br />  if(n<m)<br />   return partion(n,n);<br />  if(n==m)<br />   return 1+partion

2010-07-02 10:46:00 490

原创 二叉排序树的C代码

<br />#include <stdio.h><br />#include <stdlib.h><br />typedef struct BiNode{<br />  int data;<br />  BiNode *lchild, *rchild;  <br />};<br />bool searchBST(BiNode *T, int key, BiNode **it) {<br />    if(!T) {<br />        //(*it) = NULL;<br />        retu

2010-07-01 10:11:00 644

原创 二叉排序树代码

<br />#include<iostream><br />#include<string><br />using namespace std;<br />const int MAX=9999;<br />class BNode<br />{<br /> public:<br />  BNode(){}<br />  BNode(int i):value(i),left(NULL),right(NULL){}<br />   ~BNode(){}<br />   <br />   BNode *left;<

2010-07-01 09:24:00 490

转载 每对顶点间最短路径----Floyd算法 收藏

<br />每对顶点间最短路径----Floyd算法 收藏<br /> 对于一个各边权值均大于零的有向图,对每一对顶点,求出vi与vj之间的最短路径和最短路径长度。<br />以下代码包含有向图的建立,Floyd算法的实现以及输出最短路径和最短路径长度,具体过程请看【动画演示Floyd算法】。<br />代码说明几点:<br />1、A[][]数组初始化为各顶点间的原本距离,最后存储各顶点间的最短距离。<br />2、path[][]数组保存最短路径,与当前迭代的次数有关。初始化都为-1,表示没有中间顶点。

2010-06-27 21:12:00 2198

原创 基于邻接表的图的广度优先遍历算法

<br />C++写程序确实比C方便的多。<br />#include<iostream><br />#include<queue><br />using namespace std;<br />class ArcNode;<br />class VexNode<br />{<br /> public:<br /> //private:<br />   VexNode()<br />   {<br />    vertix=0;<br />    //data=0;<br />    next=NULL;<

2010-06-22 19:21:00 1694

原创 广度优先遍历BFS的图算法

<br />#include<iostream><br />#include<queue><br />using namespace std;<br /><br />class graph<br />{<br /> public:<br />  graph(){}<br />  graph(int v)<br />  {<br />   CreateGraph(v);<br />  }<br />  bool CreateGraph(int v)<br />  {<br />   if(v<=0)<br /

2010-06-22 16:02:00 548

原创 合并排序算法 C代码

<br />#include<stdio.h><br />#include<unistd.h><br /> <br />void Merge(int *a,int low,int mid,int high)<br />{<br /> int *clone=new int[high-low+1];<br /> if(!clone) return ;<br />  <br /> int l=low;<br /> int s=mid+1;<br /> int i=0;<br /> while((l<=mid)&&

2010-06-18 16:38:00 692

原创 子数组连续和最大值

<br />#include<stdio.h><br />#include<iostream><br />using namespace std;<br /><br />int max(int left,int right)<br />{<br /> return left>=right?left:right;<br />}<br />int  maxsum(int *x,int l,int u)<br />{<br /> if(l>u) return 0;<br />  <br /> if(l==u) r

2010-06-17 14:25:00 427

原创 合并算法求逆序对

<br />#include<stdio.h><br />#include<string.h><br />#include<iostream><br />#include<stdlib.h><br /> <br />using namespace std;<br /> <br />#define NUM 5<br />int number=0;<br /> <br />void MergeSort(int *a,int length);<br />void MergePart(int *a,int *b,i

2010-06-17 10:53:00 385

转载 UDT协议-基于UDP的可靠数据传输协议

作者:tingya http://blog.csdn.net/tingya/<br />1.   介绍<br />    随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additive increase multiplicative decrease)算法彻底减少了TCP拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在BDP增加到很高的时候比较容易受包损失攻击。<br />另外,继承自TCP拥塞控制的不公平的RTT也成为在分布式数据密集程序中的严重

2010-06-16 13:16:00 523

原创 LCS最长公共子序列算法

<br />#include<iostream><br />#include<string.h><br />#include<stdio.h><br />using namespace std;<br />char X[7]={'A','B','C','B','D','A','B'};<br />char Y[6]={'B','D','C','A','B','A'};<br />int LCS[8][7];<br />int LCI[8][7];<br />void  LCSLeng(char *a,cha

2010-06-16 11:26:00 449

原创 一道算法题

<br />两个烧杯,一个放糖一个放盐,用勺子舀一勺糖到盐,搅拌均匀,然后舀一勺混合 <br />物会放糖的烧杯,问你两个烧杯哪个杂质多?<br /> <br /> <br /><br />一样多吧 <br /><br />对的 <br /><br />为啥? <br /><br />是不是因为:糖和盐本来就是均匀的 <br /><br />因为,就算不搅拌均,你放一勺过去,那边放一勺不含杂质的过来,那么都是一勺杂之 <br /><br />如果搅拌均匀的话也是一样<br />小依 21:45:32<br

2010-06-15 09:57:00 1604

原创 socket 连接建立图

下面是socket建立时的连接转换图:

2010-06-11 21:09:00 858

转载 解谷歌的一道题

<br />这几天有一道Google的面试题在论坛炒得很火,题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”下面给出我的分析和解答。<br /> <br />为了得到两个棋子的最优策略,我们先简化问题,看看一个棋子的情况。如果手中只有一个棋子,为了得知临界层面,你只有一种选择:从2楼开始,一层一层地试,直到棋子被打碎,此时你站的楼层就是所求的临界层面。在最差的情况下,我们需要投掷99-

2010-06-11 21:06:00 639

原创 sector/sphere:设计和实现高水平数据云

<br />翻译:哈尔滨工程大学08硕士 李海波  邮箱:liwenjia1981@163.com。QQ:956270284。任何人转载必须声明出处。<br />Sector and Sphere:The Design and Implementation of a High Performance Data Cloud<br /><br /> SS:Sector/Sphere<br />   MapReduce:MR<br />   Sector storage cloud:云端存储<br />   Sp

2010-06-10 20:51:00 3464 1

原创 腾讯之星大赛作品展示活动

    昨天我们参加了腾讯之星作品展示活动,展示地点在哈工大的正心楼的105教室。那天天气出奇的热,我和同组的同学、一位研一师弟,三个人一起早早的去105教室等候。    我们是第一组展示的,首先,我演讲了ppt,ppt里面主要是作品截图、运行截图等。然后,就打开了系统的详细设计报告,开始讲解作品的设计理念,足足讲了多半个钟头。    虽然我们的作品还有很多缺陷,但是确实已经尽全力了,再做的同学对

2010-05-23 19:14:00 907

转载 pthread-join和detached

pthread_join使一个线程等待另一个线程结束。代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可

2010-05-18 08:42:00 5289

空空如也

空空如也

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

TA关注的人

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