自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

原创 GUI框架

<br />    既然我们上文中提到了当前最主流的交互方式就是图形化交互,我们就来看看图形用户界面的基本结构。现在普遍的系统上都会有一个应用程序框架,而这类框架都会提供一个GUI(Graphics User Interface),有了GUI,作为应用程序的普通开发者就不需要去关注如何去监听用户的事件,如何去调度各个程序之间的窗口(窗口直接的覆盖,隐藏,激活,调度等),窗口的绘制,图形的绘制,等等。<br />    一个典型的GUI框架要处理:<br />   1.事件的接收和分发;<br />   2.

2010-12-20 16:47:00 3190

原创 交互的本质思考

    交互是个很有意思的东西,当今主流的交互无非是字符交互和图形化交互。前者可能多出现在比较专业的地方,而后者则出现在人们日常的各种计算机系统中,因为毕竟图形化的东西比较直观,符合人类的认知习惯。    我们和计算机打交道有两种,一种是和OS交互,一种是和OS上的应用软件交互。举个例子,如果我们要删除一个文件,那么我们就是和OS交互,我们向OS请求,请求它删除我们指定的一个文件(当然这个功能应用软件也可以完成,但是归根结底还是OS来做这件事)。如果我们要用QQ向好友发出一条信息,那么显而易见,我们是和QQ

2010-12-15 17:06:00 910

原创 C++的一些复习

经常用C++,但是有些细节未必经常会用到。随便翻了翻书,随便拾起了几条细节回忆。1.构造函数里对成员对象的初始化尽量在初始化列表里,而不要在构造函数里赋值。因为,c++对象的构造分为两步:  1)数据成员的初始化  2)执行被调用构造函数体内的语句。  如上,数据成员初始化时也会调其构造函数,如果没有初始化列表,那么数据成员对象的默认构造函数会被调用一次。OK,这时到了第2步,还会再调用一次赋值操作。这样,对数据成员的初始化做了2此操作,一是缺省构造函数,二是赋值操作。其实如果写在初始化列表里,那么只需要一

2010-12-13 11:38:00 615

转载 操作系统的内核态和用户态

转自 http://blog.csdn.net/fatsandwich/archive/2008/02/29/2131707.aspx  略有补充。    linux的内核是一个有机的整体。每一个用户进程运行时都好像有一份内核的拷贝,每当用户进程使用系统调用时,都自动地将运行模式从用户级转为内核级,此时进程在内核的地址空间中运行。    当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执

2010-12-10 15:26:00 2087

原创 关于C++的重载(overload)

    C++里的重载包括了函数重载和运算符重载。        先明确一下重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。   再看看运算符重载:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。   实质上,运算符也可以看成是函数。运算符重载的实质也是函数重载。 

2010-12-09 17:42:00 1001

原创 事件机制

事件其实就是系统级别的消息。消息的概念更广一些,通常一个对象向另一个对象的请求(Request)就是一条消息。而事件往往是由系统发出来的,经由操作系统到达应用程序来处理,是“反向”的消息。我们和一个应用程序(应用服务或应用系统)交互,看上去我们是和应用直接交互,事实上我们是先和OS交互,我们要先和硬件交互(敲击键盘,点击鼠标,触屏,其他输入设备),而硬件发出中断给驱动程序,这个时候才到软件处理层(此时的硬件“中断”已经转化成了软件中定义的“事件”)。OS是最先接触到这些事件的软件(驱动可以认为是OS

2010-12-07 15:22:00 6531 2

原创 中断概念

CPU执行完一条指令后,下一条指令的逻辑地址存放在cs和eip这对寄存器中。在执行新指令前,控制单元会检查在执行前一条指令的过程中是否有中断或异常发生。如果有,控制单元就会抛下指令,进入下面的流程:1.       确定与中断或异常关联的向量i (0£i£255)2.       寻找向量对应的处理程序3.       保存当前的“工作现场”,执行中断或异常的处理程序4.       处理程序执行完毕后,把控制权交还给控制单元5.       控制单元恢复现场,返回继续执行原程序。让我们深入这个流程,看看都

2010-12-04 13:59:00 1430

原创 引用计数学习

to do...

2010-12-03 17:41:00 549

原创 一个smart point的实现

一个smart point的实现(摘自 More Effective C++)templateclass auto_ptr {public:  explicit auto_ptr(T *p = 0): pointee(p) {}  template  auto_ptr(auto_ptr& rhs): pointee(rhs.release()) {}  ~auto_ptr() { delete pointee; }  template  auto_ptr& operator=(auto_ptr& rhs) 

2010-12-03 17:33:00 1384 1

原创 进程间通信(IPC)

<br />    进程间通信IPC,也就是Inter-Process Communication的缩写。<br />    首先我们明白一个进程其实就是一个狭义上的程序。<br />    一个服务器也就是一个进程。比如客户端和服务器的连接就是两个进程在通信,只是这两个进程并不在同一台计算机上,它们进程间的通信方式就是我们非常熟悉的sockt接口,更下层一些可能就是TCP/IP协议。<br />    那么进程间为什么要通信呢?简单说来,单进程的程序已经远远不能满足我们的需要了,进程与进程间通信就组成了更

2010-12-03 17:07:00 28638

设计模式精解.pdf

设计模式精解,详细描述了gof的23种模式

2010-11-17

空空如也

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

TA关注的人

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