- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 结构体对齐
#pragma pack(4) class TestB { public: int aa; char a; short b; char c; }; int nSize = sizeof(TestB); 这里nSize结果为12,在预料之中。 现在去掉第一个成员变量为如下代码: #pragma pack(4) class TestC { pu
2009-02-18 21:35:00 970
转载 const、volatile、mutable的用法
const修饰普通变量和指针const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如: const int nValue; //nValu
2009-02-17 13:53:00 1528
转载 Flyweight模式
Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。比如有这样一个场景:一个停车场中有1000辆汽车,我们所定义的汽车对象占用内存0.3M,那么要实例化1000辆就是300M。由此可见,在这种情况下采用一般的面向对象方式出现了大量细粒度的对象会很快充斥在系统中,从而带来很高的运行是代价(这里指的代价是内存
2009-02-06 16:01:00 4474
转载 强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(o
2009-02-05 16:25:00 2575
转载 STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种
2009-02-05 16:15:00 252804 25
原创 用VB把多个excel文件的数据顺序拷到一个excel中
是给朋友整理实验数据用的,两个小需求:一、要第一列是数据序号,且多个文件数据拷到目的文件的时候数据序号要按顺序排列;二、每个文件可能有多个worksheet,都要拷贝到目标文件里面。 对于office2003以前的excel,是支持Application.FileSearch的,实现代码如下:Sub Test()Dim i As Integer, iRow As Integ
2009-02-05 15:16:00 6419
原创 从c++到java 之六 (堆和栈)
栈:只能存储知道确切大小和生命周期的数据,因为编译器需要生成相应的代码以准确的移动栈指针。也因此,java对象不会放在栈上。分配内存和释放内存是通过上下移动栈指针完成的,这种方法的效率仅仅次于寄存器。没有办法可以在栈上面创建非主类型的对象,这是和c++不同的。 堆:在堆上为数据分配空间很灵活,因为不需要数据的确切大小以及生命期,但是效率较栈分配要低,方法和c++是一样的
2008-12-05 15:28:00 1260
原创 从c++到java 之五(主类型)
(7) 与C++类似,Java含有一系列“主类型”(Primitive type),以实现更有效率的访问。在Java中,这些类型包括boolean,char,byte,short,int,long,float以及double。所有主类型的大小都是固有的,且与具体的机器无关(考虑到移植的问题)。这肯定会对性能造成一定的影响,具体取决于不同的机器。对类型的检查和要求在Java里变得更苛刻。例如:■条件
2008-12-05 14:39:00 1114
原创 从c++到java 之四(类定义+import)
(5) 在Java中,类定义采取几乎和C++一样的形式。但没有标志结束的分号。没有class foo这种形式的类声明,只有类定义。public class aClass{ int i; float f; boolean b; public static void main(String[] args) { //方法主体 aClass d = new aClass(); d
2008-12-05 13:17:00 1503
原创 从c++到java 之三(inline)
(4) 所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何(嵌入的问题在后面讲述)。(30) Java不存在“嵌入”(inline)方法。Java编译器也许会自行决定嵌入一个方法,但我们对此没有更多的控制权力。在Java中,可为一个方法使用final关键字,从而“建议”进行嵌入操作。然而,嵌入函数对于C++的编译器来说也只是一种建议。java的成员函数,无
2008-12-05 12:44:00 7673 3
原创 从c++到java 之二(static)
(3) 所有东西都必须置入一个类。不存在全局函数或者全局数据。如果想获得与全局函数等价的功能,可考虑将static方法和static数据置入一个类里。注意没有象结构、枚举或者联合这一类的东西,一切只有“类”(Class)!——与c++不同,java不存在静态存储区,因此说不存在全局函数和全局数据。java中的“静态”意味着RAM中固定的位置,在程序运行时一直存在,同样用static关键字来
2008-12-05 12:23:00 1582
转载 从c++到Java 之一(47个差异)
从今天开始,偶要开始学习Java了。现在偶对java的了解在原点,哈哈,目标是尽可能快的搞懂java。看到一篇贴,关于c++和java的区别,偶打算从此入手,从这些差异入手开始学习java。先把它贴在这里,后面的学习会逐条加上我的详细理解。 (1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。写作本书的时候,刚刚出现了一
2008-12-05 12:11:00 1793
转载 Bridge模式
//AbstractionImp.h#ifndef _ABSTRACTIONIMP_H#define _ABSTRACTIONIMP_Hclass AbstractionImp{public: virtual ~AbstractionImp(); virtual void Operation();protected:
2008-12-03 10:47:00 754
转载 Prototype模式
//Prototype.h#ifndef _PROTOTYPE_H#define _PROTOTYPE_H class Prototype{public: virtual Prototype * clone() const = 0; virtual ~Prototype();protected: Prot
2008-12-02 19:44:00 737
转载 Builder模式
//Product.h#ifndef _PRODUCT_H#define _PRODUCT_Hclass Product{public: Product(); ~Product(); void ProducePart();};#endif //Product.cpp#include "Produ
2008-12-02 17:13:00 681
转载 Singleton模式
//Singleton.h#ifndef _SINGLETON_H#define _SINGLETON_H class Singleton{public: static Singleton * Instance();protected: Singleton();private: static Singl
2008-12-02 15:43:00 649
转载 AbstractFactory模式
//Product.h#ifndef _PRODUCT_H#define _PRODUCT_H class AbstractProductA{public: ~AbstractProductA();protected: AbstractProductA();}; class AbstractProductB{
2008-12-02 12:29:00 610
转载 Factory模式
//Product.h#ifndef _PRODUCT_H #define _PRODUCT_H class Product { public: virtual ~Product() = 0; protected: Product(); private: ... ... }; cl
2008-12-01 22:53:00 770
原创 UML描述对象和类之间的相互关系
UML中描述对象和类之间相互关系的方式包括:依赖(Dependency)关联(Association)聚合(Aggregation)组合(Composition)泛化(Generalization)实现(Realization)等。 依赖 (Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在
2008-12-01 16:09:00 3511
原创 static关键字
先从内存说起,最精简的嵌入式系统也要划分出以下这些section:代码段全局数据段堆栈 再说c++里面的static关键字,分五个部分:1. 静态全局变量2. 静态局部变量3. 静态数据成员4. 静态非成员函数5. 静态成员函数 1. 静态全局变量static关键字放在全局变量前面,这个全局变量就是静态全局变量了。static int A
2008-11-28 21:40:00 714
原创 继续说初始化列表
在一些情况下,初始化列表可以做到构造函数做不到的事情:1. 类里面有const类型的成员,它是不能被赋值的,所以需要在初始化列表里面初始化它;2. 引用类型的成员(也就是名字成员,它作为一个现有名字的别名),也是需要在初始化列表里面初始化的,目的是为了生成了一个其名字成员在类外可以被修改而在内部是只读的对象;3. 需要调用基类的构造函数,且此基类构造函数是有参数的;4. 类里面有其
2008-11-28 17:35:00 853
原创 初始化列表+init()
对象的初始化,可以通过初始化列表给数据成员赋值,还可以在构造函数里面写代码给成员赋值。相比之下,推荐使用初始化列表的方法,除非类里面包含好多个数据成员,这会显得纷繁凌乱,维护起来不好看,做LTD的代码里面,凡遇此种情况,就在类里面多加一个init()函数,来对这众多的数据成员复制,构造函数和拷贝构造函数里面加上这么一行init()就ok了。myClass::myClass(const &
2008-11-28 16:05:00 852
原创 有指针成员变量,要注意莫要MLK了
Class myString{ public: myString(const char *value); ~myString();private: char *data;} ;最简单的类myString,但是值得注意的是它里面有个指针成员char * data。先来写清楚这个构造函数——my
2008-11-28 14:58:00 733
原创 开篇贴
发现CSDN的版式和文字比例很适合技术文档的记述和阅读,以后就在这里写下自己感兴趣的技术方面的东东。好像一本网络版电子笔记吧,也敦促自己一下,争取每天都有新东西学到。如果博客疏于更新,那就是我的生命又遭浪费了,呵呵
2008-11-28 13:50:00 455
软件测试专业术语表.pdf
2008-12-05
Effective Software Testing-50 Specific Ways to Improve Your Testing.pdf
2008-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人