- 博客(101)
- 收藏
- 关注
原创 ping和traceroute
看了看ping和traceroute的源码,对比了一下这两个基于ip层协议的应用小程序。虽然实现原理都比较简单,却是十分有用的检测工具。ping就像是潜水艇发射的雷达声波,发出一个icmp回显请求,等待接收icmp回显应答。打印出的信息包括icmp保温序列号(发出/接收的第几对icmp报文),ttl(从255开始递减),应答和请求报文时间差。一台主机可以开启多个ping进程
2013-07-21 14:49:07 2240
原创 perl和python
最近总在perl和python间切换作业,两者语法大不相同,机制也有些差别,忍不住吐槽一下。语言之间优劣的比较是毫无意义的,因为各有所长:perl内建了正则python内建复数型别perl擅长文字处理,python擅长数值处理.python的内置类型有标量,list,tuple,dictperl的内置类型有标量$,数组@,哈希%python的模块
2013-06-21 16:43:49 2802
原创 slab伙伴系统
slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将
2013-06-21 16:11:49 1864
原创 HTTP报文解析器
1. 首先main函数里给全局接收参数的变量赋值2. socket连接,监听通过该服务器的报文3. 由于client是一个FILE *类型,即一个文件缓冲区,可以把buffer还原成为一个request结构体里。4. 发出request报文,截获response。看起来很简单是不,其实最核心的是后续的parse部分,现在只是可以show出里面的内容了。D
2013-02-05 23:03:13 3190
原创 ubuntu下vim的配置和改造
如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份),若只对当前用户则增加~/.vimrc这个文件。我的简单配置如下: 1 set nocompatible 2 set number 3 set ruler 4 set hlsearch 5 set smartindent 6 set showmatch 7 set display=last
2012-02-01 21:44:47 1473
原创 leach和leach-c协议仿真
1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名。并且手动建立相应的文件夹。很多教程说只修改文件名,没提到修改文件夹,如果同时运行两个协议会覆盖一部分实验结果的,而且是并行的就更难分解出是哪个协议的实验数据了。所以还是分开较好。2.添加到test文件最后,后台运行的,需要等待。3.写脚本分析实验数据。#计算不同时间剩余节点的数
2012-01-25 20:04:59 11670 5
转载 让source insight支持tcl/tk
转自:http://www.51testing.com/?uid-6165-action-viewspace-itemid-82509先去下面的地址下载所有的tcl.clf文件 http://www.sourceinsight.com/public/languages/NS的源码底层是C++,采用了C++/Tcl分裂对象模型,架构完善,堪称OOP编程的典范。但是NS源码体系
2012-01-19 23:22:17 4434 1
原创 GNUPLOT画图工具
不得不说这个工具实在是太强大了。1.首先命令简单,不会有那么多的语法问题。2.其次画图速度非常快,因为输入数据是文本格式,输出格式如果也是文本就是眨眼功夫感觉不到渲染,当然输出格式非常丰富。3.还有跨平台性能也很好,linux和windows+X11或windows版的支持的都非常好,工具小巧好用。4.而且和C可以无缝结合,适合运营和运维人员来统计数据生成图例。虽然很小
2012-01-19 22:09:13 2171 2
原创 Windows下安装ns2-2.29和leach各种方法和遇到的问题
两天内尝试了n种方法,分别在windows和ubuntu下安装了2.27 2.29 2.35ns2,之后又在各个版本ns2上安装了mit和mannaSim的leach,纯手工编译和修改历史遗留bug,真是生命不息折腾不止呀!刚开始同时安装这么多种方法是抱着侥幸心理希望在各个环境下安装各种版本,并行的安装,看哪种成功了就用哪种,最后造成的结果是全都有bug,make比较耗费时间,于是就边修A的b
2012-01-18 14:45:33 4202 3
原创 虚拟机virtualBox安装Ubuntu全过程详解|Ubuntu降低gcc版本
从ubuntu8.04开始就已经是4.2版的gcc了,而很多情况下,由于一些历史遗留源码,特别是学嵌入式的目前最高支持2.6版的内核,因而需要降低gcc版本来编译。正在更新源,闲来无事顺便把整个过程都细述一下好了:1.virtualbox安装ubuntu2.安装vm对虚拟机全屏和复制粘贴支持的工具:virtualbox工具栏device里找到安装guest工具,这时ubuntu的m
2012-01-18 13:27:56 2803
原创 在OMNET++上安装INET FRAMEWORK框架
之前提到了omnetpp只是提供一个平台,具体的协议支持需要框架的支持。下载了inet framework,安装过程中提示需要4.2版本以上的omnetpp,于是又下载了最新的omnetpp。(安装4.2版本过程中最好关掉杀软)./setenv./configuratemakeok!之后把inet解压到omnet文件夹下,单独放在一个目录。用omnet控制台进到目录里:
2011-12-20 10:55:16 7374 2
原创 统计一维数组中元素出现次数
之前ms面试题的算法设计被问了这个。也许这就是“挂面”的原因。反省自己的浮躁,还有更优的解法。最近看chord收到二分查找的启发,其实可以这样设计算法的:首先对数组排序,时间复杂度O(NlogN)。之后变成了abbc……这样有序形式,接着用变形的二分查找,定位同一个元素出现的范围。比如说第一个b的下标是1,那么二分范围是1~(len-1),每一次根据end是否是b来划分区间(若
2011-12-19 19:28:03 3873 2
原创 OMNET++工具的使用(2)
首先解决一些概念上的问题:1. 在omnetpp.org中提到的仿真模型和框架与OMNet++是什么关系?OMNet++提供了基本的工具和机制来编写仿真代码,但它本身并不提供任何特定用于计算机网络仿真,系统架构仿真和任意其它领域的组件;具体的仿真是由一些仿真模型和框架如Mobility Framework或INET Framework来支持,这些模型独立于OMNet++开发,并有自己的发布
2011-12-19 18:54:33 8940 4
原创 通过后缀数组求字符串中最长重复字串
#include #include #include using namespace std;#define MAXLEN 100int print(char **a,const int len){ for(int i=0;i<len;i++) cout<<*(a+i)<<endl; return 0;}int comlen(char *a
2011-11-18 15:42:35 661
原创 一个计算GPA的工具
#include #include using namespace std;static void getscore(unsigned int *allp,unsigned int *allc,unsigned int opt,unsigned int score,unsigned int credit){ unsigned int s_score; switch(op
2011-11-18 15:16:35 869
原创 倒水问题通用解法
无穷多的水,A和B升容器,想要得到C升得水。判断:有解条件为C%gcd(A,B)==0时。方法:min(A,B)一直往max(A,B)倒水,当B满时则倒出。 相当于一个n长度循环链表,每次步长为m去遍历这个链表,一定可以到达gcd(n,m)位置。
2011-11-12 22:05:18 1911
原创 n阶方格的走法
问题描述:有一个n*n的方格,从左上角走到右下角有多少种最短路径的走法? 分析:若不加最短路径则n^(n-1)种走法。加上了最短路径就是说横向的距离为n-1,纵向的距离为n-1.总共的距离是2(n-1)步走到。解法:c(n-1,2(n-1))。组合问题。 分析:画图。a0'''''''1''''''11'''''''2''''''31''''''3'''''''
2011-11-10 15:03:20 5289
原创 虚假排名
好久没认认真真的写技术博客了。原因有三:1.实习期间忙。2.找工作期间忙。。3.找完工作更忙。。。自己知道这是个借口,有时候总感觉自己忙,殊不知盲目的跟着队伍奔跑还不如仔细观察地形之后选择一条捷径。让生活慢下来,并不是一件坏事,但是最近整日游手好闲的,觉得是对自己纵容过度了,需要好好检讨一下。 整理好要看的书目和要做的事情,开始坐定整理博客。由于之前写的一些博文
2011-11-07 12:36:29 1426
转载 挨踢生涯
本文所指的开发工程师,仅指程序开发人员和以数字电路开发为主的电子工程师。当你选择计算机或者电子、自控等专业进入大学时,你本来还是有机会从事其它行业的,可你毕业时执迷不悟,仍然选择了开发做为你的职业,真是自做孽不可活。不过,欢迎你和我一样加入这个被其它人认为是风光无限的“白领”吧。如果你不是特别的与人世隔绝,我想你一定看过金老先生的名著《笑傲江湖》吧,里面有一门十分奇特的武功叫做"辟邪剑法",你看这
2011-11-06 15:40:46 961
转载 前/中/后缀表达式的转换
自然表达式转换为前/中/后缀表达式,其实是很简单的。首先将自然表达式按照优先级顺序,构造出与表达式相对应的二叉树,然后对二叉树进行前/中/后缀遍历,即得到前/中/后缀表达式。 举例说明将自然表达式转换成二叉树: a×(b+c)-d ① 根据表达式的优先级顺序,首先计算(b+c),形成二叉树 ②然后是a×(b+c),在写时注
2011-11-04 22:06:20 876
转载 WEB服务器性能瓶颈分析
本文先介绍一下各种WEB服务器平台,然后对影响WEB服务器性能的各方面做了分析,最后解析了目前使用最普遍的Apache服务器在服务请求高峰时的响应延迟现象 在上周的一篇文章里,我们介绍了搭建WEB服务器的方法,但这只是建立WEB服务器的第一步,在实际的站点运行中,也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法。本文先介绍一下各种WEB服务器平台,然后对影
2011-11-04 20:50:14 12825
原创 char *c和char c[]区别
问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码运行结果2293628 4199056 abc2293624 2293624 abc2293620 4199056 abc #include using name
2011-10-10 11:11:34 52438 2
转载 new和malloc的区别
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4、new 和
2011-10-10 10:37:52 580
原创 STL容器
初学者学用法可以参见:http://www.cplusplus.com/reference/stl/要了解各个容器的特点才能选择适合的容器哦。一、vectorVectors are good at:Accessing individual elements by their position index (constant time).Iterating over th
2011-09-30 12:11:29 557
原创 cpp的一些冷语法
一些不常用的语法还是需要介绍一下的,不然自以为正确的会在上面耗时很久,虽然这些知识比较冷,但是设计出来还是有用武之地的。脑子里留个印象比较好。一、一些内置类型的大小wchar_t这个内置类型,没有char那么常见,不过如果是实际场景中表示中文和日文等就需要用到了。float一般大小为一个字的大小,即32位机器是4字节,double顾名思义是双字8字节了。
2011-09-30 09:58:46 844
原创 static的作用
1.屏蔽同名冲突,限定变量或函数只在本文件中可见。2.存储在静态存储区,保持数据持久性。3.结果是:123结果也是:123这说明变量不再受局部的限制了,因为全局存储区是不受限制的。3.面向对象的静态成员变量。对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序
2011-09-28 12:05:01 557
原创 静态成员函数和静态成员变量
都是破坏类的封装性的用法。看例子:静态成员函数可以直接被外面调用。前提是public权限的。和普通函数一样了。感觉是把any设成了这个函数的友元。。。静态成员变量可以被外界定义并调用。当然也可以被自身的成员函数访问。If you have any questions or ideas ,please feel free to contac
2011-09-26 12:19:38 515
原创 海量数据处理的几种方法总结
上篇文章罗嗦的讲解了为何要处理海量数据。除了用数据库和调整硬件和os,软件这里可以做的工作也很多,而且也更加灵活。其实海量数据处理不外乎以下这思想:划分->处理->归并(聚集)当然有的时候根据最终目的不同,有可能处理过程中就可以扔掉很多冗余的数据了,那么经过多层处理也很快。并行处理也是一种方法,如果划分子集中没有特定的顺序要求,可以并行处理各个子文件,之后再聚集在一起去。思
2011-09-25 17:49:19 8280
转载 http长连接与短连接
一、长连接与短连接:长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于P2P通信。短连接:Client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S通信。二、长连接与短连接的操作过程:短连接的操作步骤是:建立连接—
2011-09-25 15:50:10 6784
转载 mysql知识积累(四)foreign key
用mysql的同志们可能知道在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 3.外键关系的两个表的列必须是数据
2011-09-25 12:09:42 699
原创 虚函数
虚函数是cpp中多态的核心思想。先看两个函数:执行结果是:箭头以上的是用对象来调用的函数;箭头以下的是用指针来调用的;结果有不同呢,虚函数是子类自动覆盖了父类,而非虚函数则还是调用了父类中的函数,这是为啥呢?因为classA *ptrB =
2011-09-25 12:04:20 499
原创 制作epub格式电子书|用电脑看epub格式电子书的方法!
首先在这里下载阅读器。原来adobe也有epub的制作和阅读工具呀!http://www.adobe.com/products/digitaleditions/#fp下载之后,去威锋bbs或者其他图书资源的地方下载电子书。直接把电子书拖动进这个阅读器即
2011-09-13 15:12:14 1963
原创 session和cache的区别
session和cache的区别是什么?session是针对单个连接(会话)来使用的,主要存储和连接相关的上下文信息,比如登录信息等等。cache是应用程序级的,主要用来缓存计算或查询结果,减轻服务器负担,并加快响应速度。设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。(题目还给出了一系列的数据,比如:站点数总共为5000
2011-09-06 14:59:41 1784
原创 wordpress的搭建和配置
建站真是件麻烦的事情,还是选择先采用守,之后再破,什么时候能离就不知道了。wordpress开源博客系统已经流行了很久了,据说只需要5分钟即可安装,就先玩玩吧。1.下载可在http://cn.wordpress.org/上下载中文版的。或者wget http://wordpress.org/latest.tar.gz 从官方下载最新版的,英文版。之后据说可以通过svn来同步
2011-09-01 12:58:40 1493
转载 python知识积累(五)——编写模块
python中的Module是比较重要的概念。常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import。这样的做法,对于少数文件是可行的,但
2011-08-14 19:45:10 898
原创 python知识积累(四)——文件操作
按行读取文件里的内容:try: f = file('test.txt','r')except: print "cannot find 'test.txt' " sys.exit(1)else: while True: line = f.readline()
2011-08-14 19:21:05 610
原创 mysql知识积累(三)常用
#查询日期select * from mmcgi_rawpack_tb where date(time)>2011-07-06;select * from mmcgi_rawpack_tb where date(time)>'%Y-%m-%d';#时间-秒select t
2011-08-05 19:49:06 511
原创 python知识积累(三)字符串处理
用base64加/解密import base64a = "this is a test"b = base64.encodestring(a) # 对字符串编码print bprint base64.decodestring(b) # 对字符串解码分割和合并
2011-07-26 23:49:23 573
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人