自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (16)
  • 收藏
  • 关注

转载 Tomcat Server的组成

1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton) 1.2 - Service A

2011-09-23 13:48:35 768

转载 软件架构设计

软件架构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。而架构问题包括总体组织和全局控制、通信协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。 一、软件架构建模:1、结构模型:以架构的构件、连接件和其他概念来刻画结构2、框架模型:比结构模式更侧重整体3、动态模型:对结构模式和框架模型的补充,研究系统“大

2011-06-28 20:59:00 906

原创 MVC框架

    MVC (Model View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。      MVC强制性的使应用程序的输入、处理和输出分开

2011-06-28 20:00:00 631

原创 MFC框架中对最近文件列表的支持

MFC建立的标准框架程序中有记录最近操作文件的能力,这些最近文件的路径被记录到注册表,在程序运行时,又将添加到文件菜单中。   在CWinApp中有个   CRecentFileList*   m_pRecentFileList;指针管理这些信息。   以下对此过程进行分析,采用类似的方法,可以保存其他一些固定条数的最近数据。   1.CRecentFileList对象的建立,记录读入

2011-06-24 22:43:00 841

转载 GDI+编程基础(一)GDI+ Vs GDI

一、GDI  GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理。GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行。例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作。它把windows系统中的图形

2011-06-24 20:29:00 929

原创 ON_COMMAND_EX ON_COMMAND

ON_COMMAND  命令消息普通映射宏ON_COMMAND_EX  命令消息扩展映射宏扩展映射宏和对应的普通映射宏的参数个数相同,含义一样。但是扩展映射宏的消息处理函数的原型和对应的普通映射宏相比,有两个不同之处:一是多了一个UINT类型的参数,另外就是有返回值(返回BOOL类型)。回顾4.4.2章节,范围映射宏ON_COMMAND_RANGE的消息处理函数也有一个这样的参

2011-06-24 16:06:00 2066

转载 OnBarCheck ON_COMMAND_EX

  CFrameWnd提供了OnBarCheck来响应与ID_VIEW_STATUS_BAR、ID_VIEW_TOOLBAR菜单项对应的命令。 消息映射: ON_COMMAND_EX(ID_VIEW_STATUS_BAR,   OnBarCheck) ON_COMMAND_EX(ID_VIEW_TOOLBAR,   OnBarCheck) 这里,使用了扩展命令消息映射宏把ID_VIEW

2011-06-24 15:49:00 1808

原创 windows内核对象

有哪些内核对象?如下:存取符号对象、事件对象、文件对象、文件映射对象、I / O 完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。这些对象都是通过调用函数来创建的。 什么是内核对象?内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用

2011-06-23 23:34:00 913

转载 WM_CHAR、WM_KEYDOWN和WM_SYSKEYDOWN消息

 WM_KEYDOWN和WM_CHAR都是键盘消息。TranslateMessage函数已经将按键消息转换成字符消息了,那么WndProc函数中需要对事件进行选择。如:键入“D”键,就应该选择WM_CHAR,因为WM_CHAR 只是字母,不包含特殊字符如Ctrl等。如果键盘键入的是“Ctrl+D”,则应该选择WM_KEYDOWN,因为WM_KEYDOWN既包含字母也包含特殊字符。       WM

2011-06-23 21:05:00 1818

转载 线程与消息队列

当一个线程第一次被创建时,系统假定线程不会用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦该线程调用一个与图形用户界面有关的函数 ( 如检查它的消息队列或建立一个窗口 ),系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配了一个THREADINFO结构,并将这个数据结构与线程联系起来。 THREADINFO结构体如下: 1.将消息发送到线

2011-06-23 20:56:00 4172

原创 CView

文档负责了数据真正在永久介质中的存储和读取工作,视图呈现只是将文档中的数据以某种形式向用户呈现,因此一个文档可对应多个视图。 Invalidate(TRUE)将整个窗口设置为需要重绘的无效区域,它会产生WM_PAINT消息,这样OnDraw将被调用。 void CView::OnPaint() {   // CPaintDC类维护显示设备   CPaintDC dc(this)

2011-06-23 20:38:00 1355

原创 MFC中的消息处理/AfxWndProc/WM_COMMAND路由

窗口消息概述:     所有的窗口消息的基本形式都是一样的,有3个部分:(1).一个无符号整数,包含消息的实际内容.(2)WPARAM,一个4字节整数.(3)LPARAM,一个4字节参数.无符号数是实际消息.     含MFC在内的任何WINDOWS程序的核心都是消息泵.消息泵是一个循环,它取出消息并将消息送给恰当的窗口消息处理函数.下面是个消息泵的示例:     while(GetMessage

2011-06-22 16:32:00 5975

原创 关于FD_WRITE、FD_READ

只有在三种条件下,才会发出FD_WRITE通知:■ 使用connect或WSAConnect,一个套接字首次建立了连接。■ 使用accept或WSAAccept,套接字被接受以后。■ 若send、WSASend、sendto或WSASendTo操作失败,返回了WSAEWOULDBLOCK错误,而且缓冲区的空间变得可用因此,作为一个应用程序,自收到首条FD_WRITE消息开始,便应认为自己必然能

2011-06-21 20:58:00 12589 2

原创 WPF学习摘要09.09.03

学习课程摘自 MSDN/.net开发中的 WindowsPresentationFoundation===1、概述===WPF 的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势。WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括 可扩展应用程序标记语言 (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。WPF 包

2009-09-03 18:12:00 1559 1

原创 Effective C++摘要《第7章:杂项 真正认识C++》20090210

===条款45: 弄清C++在幕后为你所写、所调用的函数===一个空类什么时候不是空类? ---- 当C++编译器通过它的时候。如果你没有声明下列函数,体贴的编译器会声明它自己的版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的。换句话说,如果你这么写:class Empty{}

2009-02-10 16:32:00 765

原创 Effective C++摘要《第6章:继承和面向对象设计》20090210

===条款35: 使公有继承体现 "是一个" 的含义===当写下类D("Derived" )从类B("Base")公有继承时,你实际上是在告诉编译器(以及读这段代码的人):类型D的每一个对象也是类型B的一个对象,但反之不成立;class Student: public Person { ... };在C++世界中,任何一个其参数为Person类型的函数(或指针或引用)可以实际取一个Student对

2009-02-10 01:46:00 765

转载 体验C++中接口与实现分离的技术

在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。  下面用一个最简单的例子来说明。  类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下:   lxTest.h文件内容:

2009-02-09 21:11:00 629

原创 Effective C++摘要《第5章:类和函数:实现》20090209

===条款29: 避免返回内部数据的句柄===假设b是一个const string对象:class string {public:  string(const char *value);        // 具体实现参见条款11  ~string();                        // 构造函数的注解参见条款m5  operator char *() const;        

2009-02-09 19:14:00 759

原创 Effective C++摘要《第4章:类和函数:设计与声明》20090209

===条款18: 争取使类的接口完整并且最小======条款19: 分清成员函数,非成员函数和友元函数===结论:假设f是想正确声明的函数,c是和它相关的类·虚函数必须是成员函数。如果f必须是虚函数,就让它成为c的成员函数。·operator>>和operator>或operator·只有非成员函数对最左边的参数进行类型转换。如果f需要对最左边的参数进行类型转换,让f成为非成员函数。如果f还需要访

2009-02-09 13:38:00 611

原创 Effective C++摘要《第3章:构造函数、析构函数、赋值操作符》20090207

===条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符===对于有些类,当实现拷贝构造函数和赋值操作符非常麻烦的时候,特别是可以确信程序中不会做拷贝和赋值操作的时候,去实现它们就会相对来说有点得不偿失。这种情况下,很简单,照本条款的建议去做:可以只声明这些函数(声明为private成员)而不去定义(实现)它们这就防止了会有人去调用它们,也防止了编译器去生成它们===条款12:

2009-02-07 21:49:00 645

原创 Effective C++摘要《1、2章:从c转向c++、内存管理》20090206

===条款1:尽量用const和inline而不用#define===这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分有了const和inline,你对预处理的需要减少了,但也不能完全没有它。抛弃#include的日子还很远,#ifdef/#ifndef在控制编译的过程中还扮演重要角色。===条款2:尽量用而不用===iostream库的类和函数

2009-02-06 21:07:00 963

转载 static、extern、volatile的用法

static的用法: 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在

2009-02-06 17:22:00 3808

原创 C++ primer 摘要《RTTI、异常与继承、继承与重载》20090203

===19.1.1 dynamic_cast 操作符===dynamic_cast 操作符可以用来把一个类类型对象的指针转换成同一类层次结构中的其他类的指针同时,也可以用它把一个类类型对象的左值转换成同一类层次结构中其他类的引用如果针对指针类型的dynamic_cast失败则dynamic_cast 的结果是0 void company::payroll( employee *pe ){   

2009-02-03 23:04:00 808

原创 C++ primer 摘要《多继承、虚拟继承》20090203

===18.2 多继承===基类构造函数被调用的顺序以类派生表中声明的顺序为准private继承的话,原来父类的public ,protected成员继承到子类中,并成为private类型成员; protected继承的话,原来父类的public ,protected成员继承到子类中,并成为protected类型成员; public继承的话,原来父类的public ,protected成员继承到子

2009-02-03 18:10:00 883

原创 C++ primer 摘要《类继承、基类派生类、虚拟函数》20090202

===17.1 定义一个类层次结构===在派生表中指定的类必须首先被定义好,方可被指定为基类// 错误: Query 必须已经被定义class Query;class NameQuery : public Query { ... };===17.3 基类成员访问===1、类域、可视性class Diffident {public:    void turn_aside();    // ...};

2009-02-02 18:28:00 1270

原创 C++ primer 摘要《操作符重载、用户定义转换、重载解析》20090201

===15.1.1 类成员与非成员===1、怎样决定是把一个操作符声明为类成员还是名字空间成员a、如果一个重载操作符是类成员那么只有当跟它一起被使用的左操作数是该类的对象时,它才会被调用,如果该操作符的左操作数必须是其他的类型,那么重载操作符必须是名字空间成员b.C++要求赋值= 下标[] 调用() 和成员访问箭头-> 操作符必须被定义为类成员操作符,任何把这些操作符定义为名字空间成员的定义都会被

2009-02-01 21:57:00 1102

转载 operator new 和 operator delete

operator new 和 operator delete 让我们回过头去看看这样一个基本问题:为什么有必要写自己的operator new和operator delete?答案通常是:为了效率。缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程

2009-02-01 18:27:00 976

转载 C++标准库智能指针(std::auto_ptr)

 智能指针两大特性:1.构造栈对象的生命期控制堆上构造的对象的生命期2.通过release来保证auto_ptr对对象的独权.另必须使用显示构造 文章结构:一、剖析C++标准库智能指针(std::auto_ptr)    1.Do you Smart Pointer?    2.std::auto_ptr的设计原理    3.std::auto_ptr高级使用指南    4.你是否觉得st

2009-02-01 16:34:00 1401

原创 C++ primer 摘要《类构造函数、析构函数、初始化》20090130

===14.2 类的构造函数===1.为构造函数指定实参有三种等价形式// 一般等价的形式Account acct1( "Anna Press" );Account acct2 = Account( "Anna Press" );Account acct3 = "Anna Press";acct3 的形式只能被用于指定单个实参的情形,对于两个以上的实参只能使用acct1 和acct2 的形式2

2009-01-30 14:56:00 1398

原创 C++ primer 摘要《局部类、嵌套类、类域》20090127

===13.6.2 使用指向类成员的指针===int (Screen::*pmfi)() = &Screen::height;Screen& (Screen::*pmfS)( const Screen& ) = &Screen::copy;Screen myScreen, *bufScreen;// 直接调用成员函数if ( myScreen.height() == bufScreen->heig

2009-01-27 16:45:00 1039

原创 C++ primer 摘要《类成员》20090126

===13.3.5 const 和volatile 成员函数===const成员函数1.只有被声明为const 的成员函数才能被一个const 类对象调用const类对象不能调用非const成员函数(除构造函数析构函数外)2.对于在类体之外定义的const 成员函数,我们必须在它的定义和声明中同时指定关键字constclass Screen {public:    bool isEqual( ch

2009-01-26 21:02:00 624

原创 C++ primer 摘要《异常处理》20090122

 ===11.1 抛出异常===异常是个对象,throw 表达式后要跟一个对象    throw popOnEmpty(); //popOnEmpty是个类,这里使用了构造函数构造对象虽然异常往往是class 类型的对象,但是throw 表达式也可以抛出任何类型的对象    enum EHstate { noErr, zeroOp, negativeOp, severeError };    in

2009-01-22 16:41:00 758

原创 引用初始化、左值右值、函数数组参数

l-value 与 r-value 区别左值是引用某个对象的表达式,就是可以放在赋值左边的东西,如:*(p+1)=7, 没有名字的变量(*(p+1)表达式一定是一个类型的对象)被赋值了,但左值并不一定能被赋值,因为左值可以引用某个常量。 所有的引用都是左值。 右值是表达式的值(不是引用),可以放在赋值右面。 所有的左值都可以是右值,反之不成立   int i, j, *p;   i = 7;   

2009-01-21 11:09:00 2129

原创 C++ primer 摘要《函数模板》20090120

===10.1 函数模板定义===模板参数可以是一个模板类型参数,它代表了一种类型也可以是一个模板非类型参数,它代表了一个常量表达式template //当函数模板min()被实例化时size 的值会被一个编译时刻已知的常量值代替Type min( Type (&arr) [size] ); // size 指定数组参数的大小并初始化一个 const int 值template Type

2009-01-20 17:15:00 1002

原创 C++ primer 摘要《函数重载》20090120

===9.1.1 为什么要重载一个函数名===我们可能希望定义一组函数它们执行同样的一般性动作,但是应用在***不同的参数类型***上(注意是参数)===9.1.2 怎样重载一个函数名===1、如果两个函数的参数表中参数的个数或类型不同,则认为这两个函数是重载的2、当一个参数类型是const 或volatile 时,在识别函数声明是否相同时,并不考虑const 和volatile 修饰符// 声明

2009-01-20 16:50:00 680

原创 C++ primer 摘要《extern、变量函数声明与定义、头文件、动态分配与释放》20090119

===***8.2全局对象与函数***======8.2.1声明和定义===在全局域中定义的对象,如果没有指定显式的初始值,则该存储区被初始化为0extern 声明不会引起内存被分配,它可以在同一文件中或同一程序的不同文件中出现多次.extern const double pi; //声明既指定了关键字extern 又指定了一个显式初始值的全局对象声明,将被视为该对象的定义编译器将会为

2009-01-19 17:01:00 3646

转载 堆 栈 程序 内存分配 详解

堆和栈的区别一、预备知识—程序的内存分配    一个由c/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。    2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。    3、

2009-01-19 14:38:00 977

原创 c++ extern "C" 目的 原理 使用方法

C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。要点:1、与

2009-01-19 12:08:00 1012

原创 函数的参数传递

函数的参数传递所有的函数都使用在程序运行栈run-time stack 中分配的存储区,该存储区一直保持与该函数相关联,直到函数结束为止那时存储区将自动释放以便重新使用,该函数的整个存储区被称为活动记录activation record系统在函数的活动记录中为函数的每个参数都提供了存储区。参数的存储长度由它的类型来决定。参数传递是指用函数调用的实参值来初始化函数参数存储区的过程。C++中参数传

2009-01-16 16:34:00 639

原创 顺序容器list vector

一、结构vector 表示一段连续的内存区域每个元素被顺序存储在这段内存中对vector 的随机访问(比如先访问元素5 然后访问15 然后再访问7 等等)效率很高因为每次访问离vector起始处的位移都是固定的但是在任意位置而不是在vector 末尾插人元素则效率很低因为它需要把待插入元素右边的每个元素都拷贝一遍类似地删除任意一个而不是vector的最后一个元素效率同样很低因为待删除元素右边的

2009-01-16 10:45:00 734

银江数据行情接口规范

银江行情接口规范,银江行情接口规范,银江行情接口规范

2011-06-14

stkdrv(分析家通视规范).txt

分析家通视规范,分析家通视规范,分析家通视规范

2011-06-14

23种设计模式(含代码示例).doc

23种设计模式(含代码示例).doc 内容摘自《设计模式可复用面向对象软件的基础》,相当于是学习笔记,可用于复习

2011-05-29

Winsock 2网络编程实用教程.pdf

Winsock 2网络编程实用教程.pdf

2011-05-02

OIS Object Oriented Input System OGRE例子中用的输入系统

Object Oriented Input System (OIS) is meant to be a cross platform, simple solution for using all kinds of Input Devices (KeyBoards, Mice, Joysticks, etc) and feedback devices (e.g. forcefeedback). Written in C++ using Object Oriented Design patterns http://sourceforge.net/projects/wgois

2008-12-29

23种设计模式介绍 分类、目的、图

23种设计模式 摘自《设计模式可复用面向对象软件的基础》http://blog.csdn.net/geeeeeeee/category/497296.aspx

2008-12-24

Dynamsoft SourceAnywhere for VSS 5.3.2 Professional Client+配置手册.rar

Dynamsoft SourceAnywhere for VSS 5.3.2 Professional Client+配置手册.rar

2008-12-19

Dynamsoft+SourceAnywhere+for+VSS+5.2+Professional+Server+KeyGen工具

Dynamsoft+SourceAnywhere+for+VSS+5.2+Professional+Server 含KeyGen工具

2008-12-19

Dynamsoft+SourceAnywhere+for+VSS+5.2+Professional+Cache+Server.rar

SourceAnywhere Cache Server用于SAW Internet网访问加速,配置参见client中的配置手册

2008-12-19

3D渲染引擎OGRE源码分析

OGRE源码分析 对引擎中的主要类进行分析

2008-12-18

3DGame程序设计入门.pdf

3D游戏入门读物,应该仔细研读,理解和开发3D的基础

2008-12-18

GameEngineInsight游戏引擎剖析.doc

GameEngineInsight游戏引擎剖析 值得一看

2008-12-18

天龙八部技术分析报告.pdf

网游 天龙八部 多角度技术分析,你值得一看

2008-12-18

C#程序员参考手册.part2.rar

C#程序员参考手册.part2.rar

2008-06-13

C#程序员参考手册.part1.rar

C#程序员参考手册.pdf

2008-06-13

firefox3.1

firefox-3.1a1pre.en-US.win32.installer.exe

2008-06-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除