Archive for the ‘技术’ Category

HINSTANCE HMODULE

这两者现在表示的是同样的意思,但在以前它们的含义是非常不同的。这个区别主要是来自于16位Windows。

在过去,模块(module)表示一个已被加载到内存的磁盘文件,并且模块句柄指向的是一个描述文件信息的数据结构,这个数据结构所包含的信息是:这些文件来自什么地方,以及被加载到内存的什么位置。而实例(instance)表示的则是一组变量。

我们可以使用一个很形象的比喻:模块就像一个C++类,它描述了如何构造一个对象,以及实现一些方法,并且描述了由这个类创建出来的对象的行为。而实例就像是一个用这个类创建出来的C++对象,它描述的是某个特定对象的状态,而状态也就相当于这个对象中成员的值。

在16位Windows中,所有的程序都是在同一个地址空间中运行的,即时有五个程序使用同一个DLL,这个DLL也只会被加载到内存中一次,并且DLL的数据段也只有一个副本(在C++/C#术语中,DLL就好像是一个单件(singleton)类)。

这是正确的,DLL应该是属于系统范围的,而不是属于进程范围的。对于每个使用DLL的程序,DLL不会单独创建一个独立的数据副本。不过,如果在DLL中需要知道每个程序的一些信息,你必须自己来记录这些信息。

我们用实例句柄来表示一个程序,而不是模块句柄,因为在打开的两个记事本程序中有着相同的模块句柄(因为在每个实例中运行的是相同的代码)。这样,把这两个记事本程序区分开来的东西就是在每个实例中都包含了自己的变量。

这就是为什么在WinExec函数和ShellExecute函数中返回的是HINSTANCE:这是从16位Windows中沿用过来的方式,其中HINSTANCE正式用来标识程序的方法。

在Win32中程序是运行在独立的地址空间中,因此程序的实例句柄无法跨越进程边界。因此设计者们只需要使用唯一一个信息:模块的基地址。在Win32中HINSTANCE和HMODULE都用来表示模块的基地址。

WPARAM LPARAM

Windows早期是16位的。在每个消息中可以携带两个参数,分别是WPARAM和LPARAM。其中,第一个参数是16位的值(word),因此在这个参数的名字中使用了W,而第二个参数是32位的值(long),因此在这个参数的名字中使用了L。通常,W参数是用来传递句柄和整数之类的东西,而L参数则是用来传递指针。

当Windows过渡到32位时,WPARAM参数也随之变成了32位的值。因此虽然W表示word的意思,但现在已经不再是一个word了(而在64位Windows中,这两个参数都将是64位的值)。

VMware配置XP网络连接

NAT
宿主机器上VMnet8无需配置,自动获取。
虚拟机上本地连接无需配置,自动获取。
需要开启虚拟机的DHCP和NAT服务。
在虚拟机的虚拟网络设置中可查看DHCP的IP范围及NAT的默认网关。
可能出现能ping通网址(说明DNS正常),却打不开网站的问题。可以使用QQ。

桥接
在虚拟机的虚拟网络设置中设置Host Virtual Network Mapping VMnet0为宿主机器网卡。
设置宿主机器宽带连接的共享为宿主机器网卡(本地连接)。

VMWare虚拟系统上网设置及VMWare虚拟机三种工作模式详解

OBSERVER(观察者)——对象行为型模式

这两天做MVC,其中有OBSERVER模式的应用,简单实现了下接口。

Subject.h

#ifndef _SUBJECT_H
#define _SUBJECT_H

#include "Observer.h"
#define MAX_OBSERVER_NUM 10

class Subject
{
      public:
             virtual ~Subject();
             virtual void Attach(Observer *pObserver);
             virtual void Detach(Observer *pObserver);      // 未实现
             virtual void Notify();
      protected:
                Subject(int m = MAX_OBSERVER_NUM);
      private:
              Observer **ppObserver;
              int max;
              int size;
};

#endif

Read more

URI URL URN

URI:Universal Resource Identifier,通用资源标识符。
URI组成:
访问资源的命名机制;存放资源的主机名;资源的名称,由路径表示。
URL:Uniform Resource Location,统一资源定位符。
URL组成:
协议;存放资源的主机名(IP地址,有时也包括端口号);资源的名称,由路径表示。
URN:Uniform Resource Name,统一资源名称。
其中,URL、URN是URI的子集。

URI强调的是对资源的命名;URL强调的是对资源的定位,即如何找到资源。

无觅相关文章插件,快速提升流量