- 博客(56)
- 资源 (9)
- 收藏
- 关注
转载 NS2 trace
无线Trace的格式1.老版本的Trace格式目前,无线模拟的Trace支持使用cmu-trace对象,该对象有三种类型,分别为:CMUTrace/Drop、CMUTrace/Recv和CMUTrace/Send。在无线模拟时,分别用来记录代理、路由器、MAC层或接口队列产生的丢失、接收和发送分组的事件信息。每条记录有20栏。1 2
2013-01-04 16:08:03
2095
原创 Ubuntu下安装google中文输入法
SourceDependencies: cmake build-essential opencc mercurialTo install the dependencies, you can run:sudo apt-get install cmake build-essential opencc mercurial ibuslibgooglepinyinThe
2012-12-27 16:10:05
1885
转载 小端模式 大端模式
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址0x40000x4001存放内容0x340x12而在Big-e
2012-06-17 15:49:11
1145
转载 内存对齐
在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。 我们还是先来看一段简单的程序: 程序一 1 #include iostream> 2 using namespace std; 3 4 struct X1
2012-06-17 10:13:26
675
原创 二十三、访问者模式
访问者模式(Visitor)表示一个作用于某对象结构中的各元素的操作。它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作。//visitor.h#ifndef _VISITOR_H_#define _VISITOR_H_class Element;class Vistitor{public: virtual void VisitConcreteElementA(Ele
2012-06-04 16:17:52
352
原创 二十二、享元模式
享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。//Flyweight.h#ifndef _FLYWEIGHT_H_#define _FLYWEIGHT_H_#include #include using namespace std;class FlyWeight{public: virtual void Operation(const string&
2012-06-01 10:02:09
627
原创 二十一、中介者模式
中介者模式(Mediator)用一个中介对象来封装一系列的对象交互。中介者使个对象不需要现实的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。//Colleague.h#ifndef _COLLEAGUE_H_#define _COLLEAGUE_H_#include using namespace std;class Mediator;class Colleague
2012-05-31 18:40:03
349
原创 二十、职责链模式
职责链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。//Handler.h#ifndef _HANDLER_H_#define _HANDLER_H_#include using namespace std;class Handl
2012-05-31 09:39:34
873
原创 十九、命令模式
命令模式(Command) 将一个请求封装为一个对象,从而是你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。//Command.h/*Command类用来声明执行操作的接口*/#ifndef _COMMAND_H_#define _COMMAND_H_#include "Receiver.h"class Command{protected:
2012-05-30 16:09:31
353
原创 十八、桥接模式
桥接模式(Bridge)将抽象部分与它的实现部分分离,使他们都可以独立的变化。//Implementor.h#ifndef _IMPLEMENTOT_H_#define _IMPLEMENTOT_H_#include using namespace std;class Implementor{public: virtual void OperationImp()=0;};
2012-05-30 10:24:11
2228
原创 十七、单例模式
单例模式(Singleton) 保证一个类仅有一个实例,并提供一个访问它的全局访问点。//Singleton.h#ifndef _SINGLETON_H_#define _SINGLETON_H_class Singleton{private: Singleton(){}; static Singleton* _instance;public: static Single
2012-05-29 18:20:06
428
原创 十五、组合模式
组合模式(Composite)将对象组合成树形结构以表示“部分--整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。//Composite.h#ifndef _COMPOSITE_H_#define _COMPOSITE_H_#include #include #include using namespace std;class Component{pr
2012-05-29 16:25:48
317
原创 十四、备忘录模式
备忘录(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。//Originator.h/*Originator(发起人)负责创建一个备忘录Memento,用以记录当前时刻他的内部状态并可以使用备忘录恢复内部状态。*/#ifndef _ORTIGINATOR_H_#define _ORTIGINATO
2012-05-29 09:48:15
319
原创 十三、适配器模式
适配器模式(Adapter)将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。//Adapter.h#ifndef _ADAPTER_H_#define _ADAPTER_H_#include using namespace std;class Adaptee;class Tatget{public: vi
2012-05-28 19:49:08
353
原创 十二、状态模式
状态模式(State) 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。//state.h#ifndef _STATE_H_#define _STATE_H_class Context;class State{public: virtual void Handle(Context* context)=0;};class ConcreteStat
2012-05-28 19:19:26
367
原创 十一、抽象工厂模式
抽象工厂模式(Abstract Factory)提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。AbstractFactory模式是为了创建一组(有多类)相关或依赖的对象提供创建接口,二Factory模式是为了一类对象提供创建接口或延迟对象的创建刀子类中实现。//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_u
2012-05-27 19:20:07
789
原创 十、观察者模式
观察者模式(Observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主题对象在状态发生变化时,会通知所有观察着对象,使他们能够自动更新自己。//Subject.h#ifndef _SUBJECT_H_#define _SUBJECT_H_#include #include #include "Observer.h"class Subject{p
2012-05-23 16:56:17
337
原创 九、建造者模式
建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_#include #include #include using namespace std;class CProduct{public: // 添加产品部件
2012-05-23 09:47:26
415
原创 八、外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。//Facade.h#ifndef _FACADE_H#define _FACADE_Hclass SubSystemOne{public: void Operation();};class SubSystemTwo{public: void
2012-05-22 16:46:11
338
原创 七、模版方法模式
模版方式模式(Template Method mode)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法似的子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。换句话说,就是当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们可以通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变形为的纠缠。//Templ
2012-05-22 15:45:14
352
原创 六、原型模式
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。//Prototype.h#ifndef _PROTOTYPE_H#define _PROTOTYPE_Hclass Prototype{public: virtual ~Prototype(); virtual Prototype* Clone() const = 0; Proto
2012-05-22 10:20:19
433
原创 五、工厂模式
工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。//Operation.h#ifndef _OPERATION_H_#define _OPERATION_H_class Operation{public: virtual double GetResult()=0;public: double
2012-05-21 20:43:06
388
原创 四、代理模式
代理模式(Proxy),为其他对象提供一种代理一控制对这个对象的访问。//Proxy.h#ifndef _PROXY_H#define _PROXY_H/*Subject定义了ReadSubject和Proxy的公用接口这也就在任何使用RealSubject的地方都可以使用Proxy*/class Subject{public: Subject(); virtual ~S
2012-05-18 15:54:27
254
原创 三、装饰模式
装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。//Decorator.h#ifndef _DECORATOR_H#define _DECORATOR_H#include /*Component 类定义一个对象接口,可以给这些对象动态的添加指责*/class Component{public: Comp
2012-05-18 11:02:31
256
原创 二、策略模式
//Strategy.h#ifndef _STRATEGY_H#define _STRATEGY_Hclass Strategy{public: Strategy(); virtual ~Strategy(); virtual void AlgorithmInterface()=0;};class ConcreteStrategyA :public Strategy{pub
2012-05-16 16:40:43
268
原创 一、简单工厂模式
//Operation.h#ifndef _OPERATION_H_#define _OPERATION_H_class Operation{public: double _numberA; double _numberB; Operation(); virtual ~Operation(); virtual double GetResult()=0;};class Ope
2012-05-16 15:47:38
785
转载 三、事件选择模型(WSAEventSelect)
█ 事件选择(WSAEventSelect)模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递到一个窗口例程。█ 事件通知模型要求我们的应用程序针对使用的每一个套接字,首先创建一个事件对象。创建方法是调用 WSA
2012-04-20 19:17:52
1499
转载 二、异步选择模型(WSAAsyncSelect)
█ 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型。利用这个模型,应用程序可在一个套接字上,接收以 Windows 消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型的核心即是WSAAsyncSelect函数。█ 要想使用 WSAAsyncSelect 模型,在应用程序中,首先必须用CreateWi
2012-04-20 10:44:56
2658
转载 一、选择模型(select)
█ 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模式中时,产生WSAEWOU
2012-04-16 10:24:43
921
转载 ATL布幔之下的秘密(2)
作者:Zeeshan Amjad译者:李马 (home.nuc.edu.cn/~titilima)原文出处: http://www.codeproject.com/atl/atl_underthehood_2.asp 介绍 在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所使用的技术,这是本系列的第二篇文章。 现在让我们来探究一些虚函数背后更加有趣的
2012-03-28 18:28:37
319
转载 ATL布幔之下的秘密(1)
作者:Zeeshan Amjad译者:李马 原文出处: http://www.codeproject.com/atl/atl_underthehood_.asp 介绍 在本系列的教程中,我要讨论一些ATL的内部工作方式以及它所使用的技术。 在讨论的开始,让我们先看看一个程序的内存分布。首先,编写一个简单的程序,它没有任何的数据成员,你可以看看它的内存结构。
2012-03-28 18:26:27
292
原创 ch01 C++类模板的使用
#include using namespace std;class CBase{public: CBase(){}; ~CBase(){}; void BaseMethod() { cout<<"BaseMethod in Base"<<endl; }};class CMath:public CBase{public: CMath(){}; ~CMath(
2012-03-27 16:35:57
271
原创 CString
MFC使用CString类提供了对字符串的支持。CString类可以单独应用于MFC框架的其他部分,因为他不是由CObject类派生的,但与大多数MFC对象一样,CString对象可以序列化。CString对象具有如下特性。可以使用CString对象任意替换Const char* 和LPCTSTR类型的函数参数。CString对象遵循“值语义”,应将Cstring看做是一个真实的字符串
2012-03-15 10:21:34
578
原创 NS2安装篇
安装环境:Ubuntu 10.04 + ns-allinone-2.33注:建议执行的步骤为 1,2,3,7,4,5,6 可以免去重复安装的过程(经验之谈)。1、将ns2的压缩包ns-allinone-2.33.tar.gz拷贝到桌面,右键解压到桌面,将解压后的文件夹剪切到你想安装的位置,例如在我的文件夹home/liu(liu是我的登录用户名)下新建文件夹Program,将ns2的文件夹
2012-03-05 10:49:53
9615
1
原创 1.Unicode之_T宏
如果定义了_UNICODE标识符,那么一个称作__T的宏就定义如下:#define __T(x) L##x那一对井号称为“粘帖符号”(token paste),它将字母L添加到宏参数上。因此如果宏参数是“Hello!”,则L##x就是L"Hello!"。如果没有定义_UNICODE标识符,则__T宏只简单的定义如下:#define __T(x) x此外,还有两个宏与__T定义
2012-02-23 16:17:49
547
转载 static 用法
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include v
2012-02-17 11:02:25
334
原创 六、C++函数的高级特性
对比于C语言的函数,C++增加了重载(overloaded)、内联(inline)、const和virtual四种新机制。其中重载和内联机制既可用于全局函数也可用于类的成员函数,const与virtual机制仅用于类的成员函数。C++语言采用重载机制的另一个理由是:类的构造函数需要重载机制。因为C++规定构造函数与类同名(请参见第9章),构造函数只能有一个名字。如果想用几种不同的方法创建对
2012-02-15 20:07:28
406
原创 五、内存管理
内存分配方式内存分配方式有三种:(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配,亦称动态内存分配
2012-02-15 12:08:54
271
原创 四、函数设计
函数接口的两个要素是参数和返回值。C语言中,函数的参数和返回值的传递方式有两种:值传递(pass by value)和指针传递(pass by pointer)。C++ 语言中多了引用传递(pass by reference)。由于引用传递的性质象指针传递,而使用方式却象值传递。参数的规则【规则6-1-3】如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被
2012-02-15 10:16:50
364
各类软件开发学习资料下载地址(精)
2009-08-02
各类软件开发学习资料下载地址(精)
2009-08-02
出租车计费系统 数字逻辑与数字电路
2009-08-02
数据结构之表达式求值
2009-07-17
c++ 学籍管理系统
2009-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人