自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 COM 技术内幕学习之九 (简化程序编写)

1、使用智能指针2、使用包装类 

2008-03-13 16:39:00 770

原创 COM 技术内幕学习之八(包容和聚合)

一、实现继承1、COM支持的是接口继承,它继承的是抽象基类的接口COM为什么不用实现继承?(基类组件的改动引起派生类组件的改动)2、一般的继承是派生类继承基类的实现3、用组件包容来模拟实现继承在C++中对类的改造是通过包容和继承来实现,对组件的改造是通过包容和聚合来实现二、包容和聚合1、包容和聚合实际上是一个组件使用另外一个组件的一种技术2、包容----->外部组件

2008-03-11 15:25:00 1636

原创 COM 技术内幕学习之七 (类厂)

一、类上下文1、进程内服务器 (DLL)2、进程中处理器 (只实现了一个组件中的一部分的进程中组件)3、本地服务器 (EXE)4、远程服务器 (要DCOM支持) 二、为什么需要类厂1、CoCreateInstance函数的不灵活性不能控制组件建立的过程,如控制内存装载位置和对客户进行权限验证。三、类厂1、唯一功能是创建其他的组件2、某个特定的类厂只创建同某个

2008-03-11 11:49:00 1504

原创 COM 技术内幕学习之六 (HRESULT,GUID)

一、HRESULT 1、32位 (高16位表示设备代码,低16位表示返回代码)2、用SUCCEED和FAILED函数来判断调用是否成功3、MAKE_HRESULT宏来生成自己的HRESULT二、GUID (Globally Unique Identifier)1、IID和CLSID都是GUID 2、128位 (16字节)3、可以通过CoCreateGuid函数生成GUI

2008-03-11 11:15:00 1006

原创 COM 技术内幕学习之五 (动态链接)

一、进程内服务器 

2008-03-10 16:48:00 735

原创 COM 组件技术内幕之四 (引用计数)

 一、引用计数是一种内存管理计数,是一种能让组件自己删除自己的最简单且最有效率的方法。二、正确使用引用计数的三个规则1、对返回接口指针的函数,返回之前调用AddRef (CreateInstance和QueryInterface)2、使用完接口后,调用Release3、赋值之后要调用AddRef三、为每个接口维护一个引用计数的好处1、便于调试程序2、有利于资源的按需

2008-03-10 15:48:00 1020

原创 COM 技术内幕学习之二 (接口)

一、接口1、C++接口 (导出函数)2、DLL接口 (成员函数集)3、COM接口 (包含一个函数指针数组的内存结构,用抽象基类表示)二、优点1、可复用的软件架构 (只要接口不变,应用程序不需进行任何改变)2、隐藏实现细节三、特性1、必须继承IUnkown抽象基类 (本身也是抽象类)2、一个组件可以包含多个接口 (用多重继承实现)3、函数声明约定使用标准调

2008-03-08 11:12:00 893

原创 VC 中ASSERT宏和VERIFY宏的区别

上学的时候经常看到一些VC编程方面的书上说,在用VC开发程序的时候,最好用VERIFY宏代替ASSERT,当时不知道是其中的原因,今天看了两个宏的定义,终于明白了。1、在DEBUG模式下,两个宏的功能是一样的2、在RELEASE模式下,ASSERT不会对参数里的表达式进行计算,VERIFY会计算里面的表达式(如果是函数,将会调用该函数)。 部分定义如下:#ifdef _DEBU

2008-02-29 17:46:00 3354 1

原创 关于windows错误信息(1407:找不到窗口类别)的原因

今天,我偶然发现我做的一个软件的执行程序竟然有3M多,细想一下,原来是资源中有很多的BMP图片,于是我就想将资源文件独立出来,写入一个DLL中去,同时把主程序的资源全部删除。我先将原有的资源文件(.rc,.h)备份好,完成资源DLL,删除主程序的资源,在主程序的InitInstance()函数中加入LoadLibrary和AfxSetResourceHandle。当我运行主程序的时候,

2008-02-03 14:18:00 6255 1

转载 server-u的详细设置

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一

2008-01-25 15:28:00 6146 41

转载 FTP主动模式(PORT)与被动模式(Passive)

原文:http://slacksite.com/other/ftp.html CU链接:http://bbs.chinaunix.net/forum/viewtopic.php?t=574966 感谢CU网友pidan和missing-cn翻译,整理由wolfg完成。主动FTP与被动FTP-权威解释目录 开场白 基础 主动FTP

2008-01-25 14:42:00 2340

原创 通过网页链接打开应用程序客户端的两种实现方式

 近期公司要做一个项目,其中一个需求就是通过网页链接能够打开我们的IM软件,于是我对QQ和MSN、阿里旺旺进行了一番研究。发现主要是通过两种方式来实现的:第一种方式是修改注册表的方式,QQ和阿里旺旺就是通过这种方式实现的。基本方法就是在安装过程中或者是程序第一次启动时在注册表创建类似下面的键项和键值,QQ:Windows Registry Editor Version 5.00[HKEY_CL

2008-01-10 10:16:00 15167 1

转载 程序员高手是怎样练成的?

首先声明,偶不是高手,以免引起不必要的冷嘲热讽,呵呵。 估计很多的朋友在很小的时候就看过奥斯特洛夫斯基同学的《钢铁是怎样炼成的》,偶小时候在农村混,看的最多是各式各样的牛屎以及长得极象牛屎的山头,这些所谓的名著偶直到大学才有机会拜读,但说实话,偶是个俗人,还是更喜欢看一些痞子写的文字或带COLOR的BOOKS。偶之所以写这么个主题,主要是太多的朋友给偶发EMAIL或在VCHOME.NET提

2008-01-07 11:31:00 1114

原创 用boost验证整数、浮点数输入

 #include bool IsInteger(const std:string strInteger){ try {  int a = boost::lexical_cast(strInteger); } catch (exception e)  {  //转换失败会执行到这里  return false; }  return true;}bool IsDouble(const

2007-12-28 13:36:00 920

转载 面试必问的16个经典问题的回答思路

面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据。对应聘者而言,了解这些问题背后的“猫腻”至关重要。本文对面试中经常出现的一些典型问题进行了整理,并给出相应的回答思路和参考答案。读者无需过分关注分析的细节,关键是要从这些分析中“悟”出面试的规律及回答问题的思维方式,达到“活学活用”。   问题一:“请你自我介绍一下”  思路:  1、这是面试的必考题

2007-12-26 10:47:00 841

原创 boost应用-替换网页中的超链接

近期做的一个项目,需要对用户输入的HTML文本中的所有超链接替换成我们公司网站的链接,要用到正则表达式。我是做C++开发的,理所当然就选择了boost这个开源库。下面是我写的一个测试程序:它的功能是将HTML文本中的所有超链接(如http://www.sina.com.cn,不包含后面的部分),替换成我们的网址如http://www.abc.com#include #include "bo

2007-12-25 09:15:00 1019

转载 提高IOCP 效率的一些方法,技巧 (来自WINDOWS 网络编程第二版)

  1. AcceptEx: BOOLPASCAL FARAcceptEx (   IN SOCKET sListenSocket,   IN SOCKET sAcceptSocket,   IN PVOID lpOutputBuffer,   IN DWORD dwReceiveDataLength,   IN DWORD dwLocalAddressLength,   IN DWO

2007-12-07 16:00:00 1837

转载 二叉树的遍历

 转载自编程爱好者论坛,原帖地址http://www.programfan.com/club/showbbs.asp?id=96192二叉树的遍历有3种方式:         a        / /       /   /      b     e     / /     /    /   /     /   c     d     f(先序)先根遍历:(根左右)先访问根,再访问左子树,

2007-12-07 11:47:00 703

转载 百度笔试题

1 完成函数 size_t  foo(unsigned int *a1, size_t al1, unsigned int* a2, size_t al2) 其中a1和a2都为无符号数组,al1和al2为数组的长度,数组的长度为偶数。 无符号数组由一对数字区间组成。如下例: a1 为 0,1,3,6,10,20 a2 为 0,1,20,50,4,5 则 a1表示以下区间[0,1] [3,6] [1

2007-12-06 14:10:00 950

原创 谈谈 eMule 中的 内存管理器类 CMemPoolMgr

 1、内存管理器类CMemPoolMgr有一个成员m_MemoryUnitList,我们称作内存单元链表,每一个内存单元对象对应着一个正在下载的文件所使用的内存池(CMemPool)列表。当eMule客户端接收到其他客户端发来的文件数据时,内存管理器对象m_pMemoryPool,调用函数GetMemory()来分配内存。我们来看看GetMemory() TByte* CMemPoolMgr::G

2007-12-06 11:09:00 1289

原创 eMule中的 CAsyncSocketEx 类

 说说eMule中的大多数通信类的基类CAsyncSocketEx1、先看看静态链表m_spAsyncSocketExThreadDataList其数据成员定义如下: struct t_AsyncSocketExThreadData {  CAsyncSocketExHelperWindow *m_pHelperWindow; //线程中的socket事件接收窗口  int nInst

2007-12-05 17:17:00 1429

原创 第一次写BLOG

本Blog主要记录我在开发中的一些心得和体会,同时收藏一些好的文章,供自己学习和娱乐。

2007-10-16 17:10:00 522

Windows环境下32位汇编语言程序设计(第2版)

学习汇编不错的教材,罗云彬编著,PDF高清晰版本。

2009-01-05

空空如也

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

TA关注的人

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