- 博客(56)
- 收藏
- 关注
原创 知识地图:打造专业品牌与丰富人文沟通
知识系统化——看清世界,认清自己1、软件(开发)工程 从需求分析到产品交付的全过程;由需求说明书如何实现软件产品。 需求分析-->需求说明书->面向对象的开发过程: (1) 面向对象分析 (2) 架构设计 (3) 面向对象设计 (4) 编码 (5) 测试 设计技术: 设计模式
2013-06-27 16:35:21 801
原创 面向对象开发过程简介
一、需求分析1、确定项目的目标和范围2、根据项目的目标和范围分析出所有的项目干系人3、提取所有的非功能性需求4、分析所有的功能性需求,一般通过用例分析的方法进行5、撰写项目的《需求说明书》 二、面向对象开发过程1、面向对象分析2、架构分析3、面向对象设计4、编码5、测试
2013-06-23 23:04:43 3804
翻译 Composite模式
Design Pattern: Composite 模式 来源:riabook.cn 如何在一个统一的类图中同时表达继承和包含这两种逻辑关系饿?Comosite模式 1 设计意图 当一个系统中的对象需要组合成树形结构,以表示整体和部分的层次关系时,就可以使用Composite模式;Comp
2013-07-20 22:39:23 1323
翻译 程序的前世今生
程序的前世今生——一段高级源代码通过编译器或解释器的处理,才能得以运行。 一、编译编译器(Compiler),是一种电脑程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。它主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。编译器将原始程序(Source p
2013-06-16 16:10:48 1472
转载 十二生肖中解释出的“新睡眠观”
《黄帝内经》告诉人们,人体是一个最无为和最自足的系统。一定要“因天之序”。如何通过饮食和生活方式的调整,使身体始终保持在健康状态,达到“无为而治”的境界?本书作者认为,平和的心态、均衡的营养、适量的运动、充足的睡眠,比戒烟限酒更重要…… 中国有十二生肖之说,我们每个人一出生都有属于自己的属相。十二生肖大家都知道,但是,如果我问您知道十二生肖和每个时辰之间有什么关系,您知道吗? 人类最佳
2010-01-19 22:41:00 2091
转载 C++学习之路
首先,关于入门书方面,我觉得到现在我都没有看到一部适合初学者的 C++ 入门书。经典的书都是高手们写的,但根本不适合初学者看。这大概 是 C++ 族群增长的一大瓶颈。 我个人觉得最适合入门的一本书是「从 C 到 C++ 物件导向革命」,当然光看书名大家就猜到这是台湾的书了。它是 1990 年的书,作者陈建维先生是当时 C++ 标准委员会的一员。这本书我觉得相当不错,用不是很大的篇幅,从软
2009-06-28 23:37:00 2389 1
转载 二进制,八进制,十进制,十六进制互相转化的C语言源代码
#include#include#includevoid D_B(int);void D_O(int);void D_X(int);void B_D(int);void B_O(int);void B_X(int);void O_B(int);void O_D(int);void O_X(int);void X_B(char r[],int k);void X_D(char r[],int k);
2007-10-18 21:21:00 12097 3
原创 二叉排序树
1.二叉排序树的概念: 二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树, 或者是一棵具有如下性质的二叉树: ⑴ 若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上所有结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树。二叉排序树的性质: 按中序遍历二叉排序树,所得到的中序遍历序列是一
2007-10-16 20:37:00 19685 9
原创 Array Sort
#include //说明:下面的所有排序,数组arr[n]按照默认:arr[0],arr[1],...,arr[n-1]存放数据,//不存在arr[0]不使用的情况。void bubble_sort(int arr[],int n){ int temp,i,j; for(j=0;j for(i=n-1;i>j;i--) { if(arr[i] { temp=arr[i];
2007-09-29 12:58:00 1547
原创 Stack Operator
Simple Stack Template Stack Operator::#include class IStack{ enum {ssize =10}; int s[ssize]; int top;public: IStack():top(0){s[top]=0;} bool Isempty(){ if (top ==0)return true; else return false
2007-09-29 12:38:00 1066
原创 Queue Operator
Simple Queue Operator#include #include #include typedef struct student{ int data; struct student *next;}SNode;typedef struct linkqueue{ struct student *front,*rear;}LQueue;bool InitLQueue(LQueue &LQ
2007-09-29 12:31:00 828
原创 串操作
#include #include #include #include//测串长int StrLength(const char *str) { assert(str); const char*p = str; while(*p++); return p-str-1; } //比较两个串的大小.若str1>str2返回>0,str1==str2返回=0,st1int StrCom
2007-09-29 12:19:00 1079
转载 TCP连接的3次握手原理
TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程并且TCP在建立连接时又分三步走:第一步是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,
2007-09-23 17:06:00 1346
转载 交换机和路由器各自实现的原理
1.什么是交换机 交换机也叫交换式集线器,它通过对信息进行重新生成,并经过内部处理后转发至指定端口,具备自动寻址能力和交换作用,由于交换机根据所传递信息包的目的地址,将每一信息包独立地从源端口送至目的端口,避免了和其他端口发生碰撞。广义的交换机就是一种在通信系统中完成信息交换功能的设备。 2.交换机的工作原理 在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。集线器是采用共享工作模式的代
2007-09-22 17:25:00 2564
转载 Linux常用命令
1. 文件管理命令●名称:ls功能:列出当前目录下的文件和目录 ls(list)是一个最常用的命令,用于显示当前目录下的文件和于目录。第一、显示当前目录的内容 [root@yanghsia root]#Is (# 显示当前目录下的内容) install.log install.log.syslog Linux约
2007-09-22 16:27:00 921
转载 Linux目录结构简析
Linux继承了unix操作系统结构清晰的特点。在linux下的文件结构非常有条理。但是,上述的优点只有在对linux相当熟悉时,才能体会到。现在,就把linux下的目录结构简单介绍一下。/vmlinuz 我们已经知道,每一个linux都有一个内核(vmlinuz),我们在这个内核上添加上可以完成各种特定功能的模块,每个模块就体现在 linux中各种不同的目录上。当然,各种不同的发行套件,其
2007-09-22 16:25:00 886
原创 判断一个链表是否为循环链表
方法:设两个指针同时指向头节点,一个指针的移动步长为1,另一个指针的移动步长为2,若两个指针能再次相遇,说明该链表为循环链表.说明:若某单链表L只包含头节点head,则head->next==NULL; 若某个循环链表只包含头节点,则head->next=head;bool IsLoopList(LinkNode *L){ LinkNode *p1=L,*p2=L; if(L->
2007-09-09 16:12:00 2478 1
原创 双向循环链表的基本操作
#include #include //以下双向循环链表均带有头节点;头节点不存放数据,只起到带头作用。typedef struct DLLNode{ int data; struct DLLNode *prior; struct DLLNode *next;}DLLinkNode;//双向循环链表的建立(正插入法)DLLinkNode * CreatDLList(DLLinkNode *DLL,
2007-09-09 16:03:00 4886
原创 双向链表基本操作
#include #include //以下双向链表均带有头节点;头节点不存放数据,只起到带头作用。typedef struct DLNode{ int data; struct DLNode *prior; struct DLNode *next;}DLinkNode;//双向链表的建立(正插入法)DLinkNode * CreatDList(DLinkNode *DL,int n){ DL=(
2007-09-09 15:01:00 1987
原创 关于单链表的基本操作
#include #include //以下链表均带有头节点;头节点不存放数据,只起到带头作用。typedef struct LNode{ int data; struct LNode *next;}LinkNode;//单链表的建立(倒插入法)LinkNode * CreatList(LinkNode *L,int n){ L=(LinkNode*)malloc(sizeof(LinkNode)
2007-09-08 21:40:00 1381
原创 C++对象创建(二)
当一个C++对象被创建时,有两件事会发生:(1)为对象分配内存.(2)调用构造函数来初始化那个内存.到目前为止,我们应该确保步骤 2)一定发生。C++强迫这样做是因为未初始化的对象是程序出错的主要原因。不用关心对象在哪里创建和如何创建的—-构造函数总是被调用。然而,步骤1)可以以几种方式或在可选择的时间内发生:1) 静态存储区域,存储空间在程序开始之前就可以分配。这个存储空间在程序的整
2007-09-05 16:10:00 2178 1
原创 C++对象的创建(一)
C++中假如创建类A的对象a。可以这样做:(1): A a;(2): A *p=new A;这两种方法的异同:A a; 这样的对象的内存分配在栈上,超出作用域(比如在函数fun中创建的a对象,在函数结束后,就超出了作用域) 就调用析构函数将对象销毁。A *p=new A;这种的内存是分配在堆上的,分配之后到程序结束前一直存在,除非你用delete p;这样才会调用析构函数将
2007-09-05 10:59:00 1639
转载 公有继承,私有继承,和保护继承
1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。 3. 保护继承(protected) 保护继承的
2007-09-04 16:50:00 2905
原创 main主函数执行完后,可以利用atexit再执行一段代码
#include#includeint atexit(void(*function)(void));void fun1(void),fun2(void),fun3(void);int main(){ printf("begin/n"); atexit(fun1); atexit(fun2); atexit(fun3); printf("over/n"); return 0;}voi
2007-09-04 16:22:00 1159
原创 空指针和迷途指针的区别
解释代码:#include int main(){ int *pInt = new int; *pInt=10; cout delete pInt; pInt=0; *pInt=20; // oh no, this was deleled. cout return 0;}//Compile this program successfully,but when running it,
2007-09-04 16:09:00 2778
翻译 C++中有了malloc/free,为什么还需要new/delete?
malloc与free是C/C++语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于ma
2007-09-04 15:57:00 1089
翻译 句柄和指针的区别与联系
句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理存储,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象及其物理地址了。
2007-09-04 15:52:00 1077
原创 函数的指针与指针函数
(1) Long (*fun)(int) fun是一个函数指针,这个指针返回值是long,所带的参数是int. (2) Long *fun(int) 指针函数,是一个带有整数参量并返回一个长整型变量的指针的函数.(3) Int (*(*F)(int,int))(int) F是一个函数的指针, 指向的函数的类型是有两个int参数并且返回一个函数
2007-09-04 11:21:00 781
原创 const与const指针
一.C/C++中的const C中的const是"一个不能被改变的普通变量",在C中,它总是占内存的,而且它的名字是全局符,默认是外部连接.C编译器不能把const看成一个编译期的常量.在C中: const bufsize =100; char buf[bufsize]; 是错误的. C++中的const默认是内部连接,也就是说,cons
2007-09-04 10:03:00 765
原创 剖析类的this指针
this指针是在实例化一个对象后产生的,并且指向对象本身.类的this指针有如下特点:(1) this只能在成员函数中使用. 全局函数,静态函数都不能使用this. 实际上,成员函数默认第一个参数为T* const this 如: class A{public: int func(int p){]}; 其中,func的原型在编译器
2007-09-03 22:41:00 879
原创 深入理解sizeof与strlen的区别
Sizeof与Strlen的区别与联系(转) 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。 sizeof还可以用函数做参数,比如: shor
2007-09-03 18:52:00 875
转载 C++ 的构造/析构/赋值/拷贝函数比较
构造函数、析构函数与赋值函数是每个类最基本的函数。每个类只有一个析构函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)和 多个赋值函数(除了同类的赋值以外,还有其他的赋值方法)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数,如A(void); // 缺省的无参数构造函数A(const A &a);
2007-09-03 16:57:00 1086
原创 指针与引用的区别
一.定义C++是一种强类型语言,不能把不是同类型的指针相互赋值,如过发生,必须强制类型转换.C++中的引用(&)象一个自动能被编译器逆向引用的常量指针.for ex:int x=0;int &a=x;a++; 这里增加a事实上就是增加x.二 区别(1)初始化区别. 当引用被创建时,它必须被初始化,指针可以在任何时候被初始化.(2)NULL区别
2007-09-03 11:23:00 803
转载 堆与栈的区别
堆和栈的区别2007-04-18 20:51 一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) —
2007-09-02 22:46:00 700
转载 友元
在说明什么是友元之前,我们先说明一下为什么需要友元与友元的缺点: 通常对于普通函数来说,要访问类的保护成员是不可能的,如果想这么做那么必须把类的成员都生命成为public(共用的),然而这做带来的问题遍是任何外部函数都可以毫无约束的访问它操作它,c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作,避免把类成员全部设置成public,最大限度的保护数据成员的安全。 友元
2007-09-02 16:53:00 633
转载 State 模式学习笔记
State 模式转:板桥里人 http://www.jdon.com 2002/4/6/State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为.何时使用?State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.
2007-05-06 22:41:00 1010
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人