摘要: which:在PATH变量指定的路径中查找是否存在相应的可执行程序,如which ls,通过添加-a选项可查找PATH变量中的所有包含指定程序的路径;whereis:不单列出程序所在的路径,还列出可执行程序的文档对应的路径;find:不局限于搜索的是可执行程序,任何文件均可搜索。locate:由于find要搜索指定目录下的所有路径,所以执行时间较长。locate可以通过查找由updatedb周期性建立的数据库加速查找过程,locate不单搜索文件名本身,它会搜索路径字符串中的所有和指定字符串匹配的对象。如:$ locate bin/ls/var/ftp/bin/ls/bin/ls/sbin/l 阅读全文
posted @ 2011-12-15 00:16 摇风清影 阅读(2051) 评论(0) 推荐(0) 编辑
摘要: 通配符与正则表达式很容易混淆,首先要明白二者是不同的,个人感觉通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。通配符[a-z]或[12]:匹配方括号中指定范围内的单个字符或方括号列出的其中一个字符。[!9]:不匹配方括号中所列字符或指定范围内的单个字符。*:匹配0个字符或多个字符。?:匹配任何单个字符,且不能为空字符。 由于shell会将字符?[ ] * 区别对待,因此在命令参数时如果需要用到这几个特殊... 阅读全文
posted @ 2011-12-14 23:50 摇风清影 阅读(15586) 评论(0) 推荐(2) 编辑
摘要: inode 在讨论Linux系统的链接之前,不得不先说下inode。Linux文件系统中的每一个对象都有唯一的inode索引,每一个inode号和文件系统的一个对象一一对应,要查看文件或目录的inode号可在ls命令中使用-i选项,每个目录下的.(当前目录)和..(上级目录)都是硬链接。如下面例子:root@vrlab726-desktop:~/Desktop# pwd/root/Desktoproot@vrlab726-desktop:~/Desktop# ls -ialtotal 86726447440 drwxr-xr-x 9 root root 4096 20... 阅读全文
posted @ 2011-12-14 20:46 摇风清影 阅读(3604) 评论(1) 推荐(1) 编辑
摘要: 虚拟载波监听 vs 物理载波监听 无线通信节点常采用电池供电模式,为减少节点功耗引入了虚拟载波监听。虚拟载波监听是对物理载波监听的一种逻辑抽象,节点在发送数据包时设置时常域(duration field)以表明无线信道在此段时间内都将被用来发送此数据包,其余节点收到此数据包后更新它们的NAV向量,也即当前节点如果需要发送数据,需要延迟NAV时间段后才能开始发送。因此虚拟载波监听能够避免不必要的发送尝试,但当NAV到期后,节点在发送数据前要进行物理载波监听以确认确实无节点正在发送数据。 物理载波监听也即频谱感知,具体有基于能量的感知和基于信号特征的感知。载波监听冲突避免(CSMA/CA) vs 阅读全文
posted @ 2011-08-09 16:33 摇风清影 阅读(4015) 评论(0) 推荐(0) 编辑
摘要: 进程进程是系统中独立存在的实体,它可以拥有自己独立的资源,比如文件和设备描述符等。在没有经过进程本身允许的情况下,其它进程不能访问到这些资源。这一点上和线程有很大的不同。进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,这些概念在程序中都是不具备的。若干个进程可以在单处理机状态上并发执行。进程运行的环境称为进程上下文(context),进程的上下文由进程控制块PCB(process control block)、正文段(text segment)、数据段(data segment)以及用户堆 阅读全文
posted @ 2011-08-02 15:58 摇风清影 阅读(3093) 评论(1) 推荐(1) 编辑
摘要: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号, 阅读全文
posted @ 2011-06-19 09:10 摇风清影 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条 阅读全文
posted @ 2011-06-19 09:06 摇风清影 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 我的情况是这样的:操作系统Win7和Ubuntu10.04,其中Ubuntu10.04是通过Wubi安装的,正常情况下两个操作系统可以在机器启动后任意选择。在Ubuntu下通过更新然后重装了grub,再重新启动后无法进入任何一个系统,也无法输入任何命令,只是显示:error:no such device:(一个长字符串)grub rescue>经过很长时间的搜索和尝试,在http://www.ehow.com/how_4836283_repair-mbr-windows.html下找到了解决方案:在光驱里插入Win7系统光盘,更改BIOS从光驱启动。在选择过语言后,进入安装第二步里选择修 阅读全文
posted @ 2011-06-19 09:00 摇风清影 阅读(1329) 评论(0) 推荐(0) 编辑
摘要: 问题:给定一棵二叉树(非二叉检索树),求二叉树中距离最远的两个叶子节点间的距离?其中两个叶子间的距离定义为:F(X,Y) = 从节点X到根节点路径上所有节点数据之和 +从节点Y到根节点路径上所有节点数据之和 - 从X和Y的第一个祖先节点到根节点路径上所有节点数据之和。该题的主要思路:1.求出二叉树的所有叶子节点。2.求任意两个叶子节点的第一个祖先节点。3.计算具有祖先-子孙关系的两个节点之间的路径,并计算路径上节点数据之和。#include <iostream>#include <vector>using namespace std;struct Node{ Node( 阅读全文
posted @ 2011-06-17 17:17 摇风清影 阅读(5716) 评论(0) 推荐(1) 编辑
摘要: 问题:给定字符串S,生成该字符串的全排列。方法1:依次从字符串中取出一个字符作为最终排列的第一个字符,对剩余字符组成的字符串生成全排列,最终结果为取出的字符和剩余子串全排列的组合。#include <iostream>#include <string>using namespace std;void permute1(string prefix, string str){ if(str.length() == 0) cout << prefix << endl; else { for(int i = 0; i < str.length(); 阅读全文
posted @ 2011-06-16 16:34 摇风清影 阅读(6743) 评论(3) 推荐(0) 编辑
摘要: Fast sensing is done at the rate of 1ms/Channel, and the sensing results are used to decide if a subsequent fine sensing is needed. Fine sensing is performed on-demand, which allows CR networks to meet the strict QoS requirement by decreasing the rate of false alarms. 阅读全文
posted @ 2011-06-13 10:44 摇风清影 阅读(304) 评论(0) 推荐(0) 编辑
摘要: TDM vs. TDMA:TDM stands for Time Division Multiplexing while TDMA stands for Time Division Multiple Access .The main difference between them is as follows :For both systems ,the user is given a certain time slot through which his data is to be transmitted then the user waits for the next frame to tr 阅读全文
posted @ 2011-06-13 10:43 摇风清影 阅读(1071) 评论(0) 推荐(0) 编辑
摘要: 原理:要计算n位的CRC值,将待CRC的数据左移n位(即在其最右端添加n个0),如果待CRC数据的最高位为0,不进行任何操作,否则将其与事先设定好的除数(divisor)进行异或操作,然后将除数右移一位。重复上述两个操作直到除数到达待CRC数据的右端。举例如下:11010011101100 000 <--- input left shifted by 3 bits1011 <--- divisor01100011101100 000 <--- result 1011 <--- divisor ...00111011101100 000 10110001011110110 阅读全文
posted @ 2011-05-19 21:52 摇风清影 阅读(3005) 评论(0) 推荐(1) 编辑
摘要: #include <iostream>#include <vector>#include <time.h>using namespace std;void printVector(vector<int> v){ for(int i = 0; i < v.size(); i++) cout << v[i] << " "; cout << endl;}void swapElements(vector<int> &v, int i, int j){ int tmp; if 阅读全文
posted @ 2011-05-13 22:59 摇风清影 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 发包数据包流程:上层对象(如:数据队列)调用recv();recv()调用send();send()通过调用sendDATA(p)封装数据包并将p赋给pktTx_;由于在发送数据包之前需要发送RTS报文,所以send()还要通过调用sendRTS()为数据包p生成一个RTS报文,并将生成的RTS报文赋给pktRTS_。在回退定时器到期且信道空闲情况下,为防止和其它节点产生冲突,还要设置一个延迟定时器,延迟时常为DIFS+(0 ~ 拥塞窗口大小间的随机值)*每一时隙的长度。如果信道不空闲,需要启动新的回退定时器;延迟定时器到期后会调用deferHandler(),该函数调用check_pktRT 阅读全文
posted @ 2011-05-13 21:15 摇风清影 阅读(3254) 评论(0) 推荐(0) 编辑
摘要: at命令:在指定时刻执行指定的命令序列格式:at [-V] [-q x] [-f file] [-m] timeatq [-V] [-q x]atrm [-V] [-q x] job…batch [-V] [-f file] [-m]bg命令:使一个被挂起的进程在后台执行格式:bg 该命令无参数。先使用组合键"Ctrl+Z"。然后使用bg命令。如果想直接把这个命令放在后台执行,可以在命令后使用"&"符号:#du -a / | sort -rn > /tmp/du.sorted &fg命令:使一个被挂起的进程在前台执行格式:fg -[ 阅读全文
posted @ 2011-05-12 15:24 摇风清影 阅读(4075) 评论(0) 推荐(1) 编辑
摘要: 大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户,Linux中切换用户的命令是su或su -,下面就su命令和su -命令最大的本质区别给大家详解一下:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和 阅读全文
posted @ 2011-05-12 15:13 摇风清影 阅读(2666) 评论(0) 推荐(1) 编辑
摘要: 主要有下面几个步骤:1. 创建新的动态链接库项目,并在其中添加类的声明和定义文件;尤其需要注意的是在类成员函数的声明中需要使用declspec(dllexport)修饰符,该修饰符能够使此DLL中的方法被导出以供其他应用程序使用。2. 创建引用动态链接库的应用程序;若要使用在动态链接库中创建的成员函数,则必须引用该动态链接库。选中调用DLL的项目,从“项目”菜单中选择“引用”,找到动态链接库对应的工程目录。若要引用动态链接库的头文件,必须修改包含目录路径。在“附加包含目录中”找到DLL头文件所在的路径。可执行文件仅在运行时加载动态链接库。必须告诉系统在哪里查找DLL,通过PATH变量指出.dl 阅读全文
posted @ 2011-05-12 15:10 摇风清影 阅读(4040) 评论(0) 推荐(0) 编辑
摘要: 1. new的执行过程:(1)通过operator new申请内存(2)使用placement new调用构造函数(简单类型忽略此步)(3)返回内存指针2. new和malloc的比较:(1)new失败时会调用new_handler处理函数,malloc不会,失败时返回NULL(2)new能通过placement new自动调用对象的构造函数,malloc不会(3)new出来的东西是带类型的,malloc是void*,需要强制转换(4)new是C++运算符,malloc是C标准库函数3. delete的执行过程:(1)调用析构函数(简单类型忽略此步)(2)释放内存4.delete和free的比 阅读全文
posted @ 2011-05-12 15:07 摇风清影 阅读(5524) 评论(0) 推荐(1) 编辑
摘要: 我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用 gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的,例如:#include <stdi 阅读全文
posted @ 2011-05-12 15:03 摇风清影 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 首先介绍几个版本控制软件相互比较的重要依据,更详细的比较请参考文中链接:* 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式。在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本(working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改。而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他们的工作副本外,还拥有本地版本库的历史信息。* 并发模式(Concurrency model):描述了当同时对同一工作副本/文 阅读全文
posted @ 2011-05-12 15:00 摇风清影 阅读(23742) 评论(2) 推荐(0) 编辑
摘要: 派生类的继承方式总结:继承方式说明public基类的public和protected的成员被派生类继承后,保持原来的状态private基类的public和protected的成员被派生类继承后,变成派生类的private成员protected基类的public和protected的成员被派生类继承后,变成派生类的protected成员注:无论何种继承方式,基类的private成员都不能被派生类访问。从上面的表中可以看出,声明为public的方法和属性可以被随意访问;声明为protected的方法和属性只能被类本身和其子类访问;而声明为private的方法和属性只能被当前类的对象访问。1. 友元 阅读全文
posted @ 2011-05-12 14:50 摇风清影 阅读(30782) 评论(1) 推荐(6) 编辑
摘要: static_cast,dynamic_cast,reinterpret_cast,const_caststatic_cast 用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: 用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。 用于基本数据类型之间的转换,如把int转换成char,把in 阅读全文
posted @ 2011-05-12 14:44 摇风清影 阅读(668) 评论(0) 推荐(0) 编辑
摘要: Active Scanning VS. Passive ScanningActive scanning occurs when the client changes its IEEE 802.11 radio to the channel being scanned, broadcasts a probe request, and then waits to hear any probe responses (or periodic beacons) from APs on that channel (with a matching SSID). The IEEE 802.11 standar 阅读全文
posted @ 2011-05-12 14:35 摇风清影 阅读(4854) 评论(0) 推荐(1) 编辑
摘要: SIFSShort Interframe Space(SIFS):在802.11系列无线局域网中SIFS是固定值,SIFS是最小的帧间间隔,因此采用SIFS的节点具有访问无线链路的最高优先级。它等于节点从发送状态切换到接收状态并能正确解码所需要的时间,或者从接收状态转为发送状态所需要的时间,在SIFS过期后可能发送的数据包包括ACK、CTS帧,不同标准中规定的SIFS值不同。StandardSIFS(μs)IEEE 802.11b10IEEE 802.11a16IEEE 802.11g10DIFSDCF Interframe Space(DIFS):在DCF协议中,节点在开始发送数据之前需要监 阅读全文
posted @ 2011-05-12 14:28 摇风清影 阅读(61723) 评论(1) 推荐(0) 编辑