在C++中实现“属性 (Property)”
摘要:摘要:本文介绍了在C++中实现“属性 (Property)”的方法,“属性”是我们在C#(或其它一些语言)中常常能用到的一种特性。这里介绍的实现方法使用的是标准的C++,没有用任何其它的语言扩展。而大部分的库或是编译器为了实现“属性”,往往对C++作一些扩展,就像我们在托管的C++或是C++ Builder中看到的那样,也有的...
阅读全文
posted @
2010-06-01 22:12
carekee
阅读(1747)
推荐(0) 编辑
生死疆界--- 在new与delete之间
摘要:问题源自一段简单的代码:在以上代码中,如果你输入:abcd,那么如你所望,你会看到"正确"的输出"c"。但是会有错误提示出现: Debug Error!Program: test.exeDAMAGE: after Normal block(#64) at 0x003429f8更离奇的是,如果将代码改为如下的代码: 如果只输入一个字符a,那么依然报错。是不是奇怪,分配了一个字符,输入了一个字符,那么...
阅读全文
posted @
2010-06-01 22:06
carekee
阅读(388)
推荐(1) 编辑
内存的理解
摘要:内存可以说是C和C++语言学习的关键点。这里说一点我的理解,一家之言,欢迎拍砖哈。内存要想理解透彻,首先要理解内存编址。即不同的内存条,内存模块,插到机器上,具体对应的内存地址是多少。最开始的PC机,IBM PC XT,只有640k内存。IBM是这么规划的,最低的128k,是BIOS的地址,毕竟BIOS也是汇编语言,它也需要合法地址,才能被CPU正确运行。512k~640k,被定义为端口映射地址,...
阅读全文
posted @
2010-06-01 18:00
carekee
阅读(696)
推荐(1) 编辑
关于C语言字符串函数的思考
摘要:C语言并不是一种很方便的语言,它的字符串就是一例。按照C语言的定义,“字符串就是一段内存空间,里面包含ASCII字符,并且,以”\0”结尾,总共能存放n-1个字符。”按照这个描述,字符串处理确实很麻烦,还很容易出错。 为了方便用户,C语言标准库向用户提供了一些字符串函数,如字符串拷贝、构造、清空等函数,在一定程度上方便了用户的使用。但是,我无意中发现...
阅读全文
posted @
2010-06-01 17:58
carekee
阅读(653)
推荐(1) 编辑
使用sendfile()让数据传输得到最优化,TCP_CORK、TCP_DEFER_ACCEPT和TCP_QUICKACK优化网络
摘要:当今国互联网的飞速发展让人们获益匪浅,同时人们对于互联网的期望值也变得越来越高。这就形成了一个矛盾,虽然互联网的发展已经是相当迅猛的了,但是人们还是期望从服务器到客户终端的文件传输的速度能够比现在再快一些,这种要求(当然是合理的要求)好像从来也满足不了。在向人们询问“一种什么样的速度对于数据传输来说才是最理想的”问题时,几乎每一次你都会得到一种不同的答案:有的人认为数据传输...
阅读全文
posted @
2010-06-01 17:50
carekee
阅读(3451)
推荐(0) 编辑
完成端口与高性能服务器程序开发
摘要:早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载请注明出处及作者,谢谢!以一个文件传输服务端为例,在我的机器上它只起两个线程就可以为很多个个客户端同时提供文件下载服务,程序的性能会随机器内CPU个数的增加而线性...
阅读全文
posted @
2010-06-01 17:46
carekee
阅读(1871)
推荐(0) 编辑
巧用boost库实现字符串映射消息处理函数
摘要:Boost库实在是一个博大精深的库。经过实验,我发现巧用boost::bind和boost::function可以实现一些巧妙的设计。 编写过MFC程序的朋友都知道,通过资源编辑器编辑菜单项,设定菜单项ID,然后MFC内部通过该ID来映射菜单命令处理函数和菜单界面更新函数。我设想撇开MFC的资源编辑,在MFC程序中通过xml文件来进行界面配置,然后利用字符串来映射消息处理函数。借助boost库,...
阅读全文
posted @
2010-06-01 17:03
carekee
阅读(387)
推荐(0) 编辑
关于sizeof运算符的一些理解
摘要:CSDN上有网友提问:view plaincopy to clipboardprint?int *pArray_No1,*pArray_No2,a[]={1,2,3,4}; pArray_No1=new int[10]; pArray_No2=a; cout < <sizeof(pArray_No1) < <endl //结果为4 < <sizeof(pAr...
阅读全文
posted @
2010-06-01 17:02
carekee
阅读(488)
推荐(0) 编辑
使用动态数组结构的一个好处
摘要:请注意,这里我所说的动态数组不是指你自己new 出来的数组,而是指STL 中的std::vector 和MFC 中的CArray 之类的容器。开始以为使用std::vector 不过是免除动态内存之苦。免除自己手动开辟和释放内存是一方面,实际上在使用的过程中你会逐渐发现使用std::vector 的好处。今天我就发现了一个好处。今天我修改别人写的一个图像匹配算法,所谓图像匹配就是找出两幅图像中相同...
阅读全文
posted @
2010-06-01 17:01
carekee
阅读(985)
推荐(1) 编辑
Win32 DLL的一个调试心得
摘要:在MFC工程(包括单文档、多文档、基于对话框、MFC DLL等)调试程序时可以使用trace宏来输出相关变量的值,在Win 32工程(包括Win32 Application和Win 32DLL)只能使用OutputDebugString函数来输出相关变量值。但是我觉得OutputDebugString比起trace宏有很大的不足,OutputDebugString不能像trace宏一样格式化输出,...
阅读全文
posted @
2010-06-01 16:58
carekee
阅读(693)
推荐(0) 编辑
通用文件操作类的设计
摘要:Windows环境下读写文件一般有下列有下面几种方式:C语言的文件操作函数,如fopen函数等,C++的I/O流库,Win32 API的文件操作函数,如CreateFile()、WriteFile()、ReadFile(),MFC的文件操作类,如CFile和CStdioFile等等。但是在大型的数据文件,上面的文件处理方法是不太适合的。对于大文件的操作一般是以内存映射文件来加以处理的。为此本人以读...
阅读全文
posted @
2010-06-01 16:56
carekee
阅读(462)
推荐(0) 编辑
ifstream类使用心得一则
摘要:一个朋友向我请教一个程序,相关代码如下: string s; vector <string> vs; ifstream inFile("F:\\MyReceiveFiles\\FillCompo_KP.mod", ios::in); while (getline(inFile, s)) vs.push_back(s); cout<<vs.size()<<endl...
阅读全文
posted @
2010-06-01 16:55
carekee
阅读(2150)
推荐(1) 编辑
VC编程实现创建dbf文件
摘要:前言:dbf文件是一种著名的数据库文件,其特点是可以记录单个数据表的数据。Maozefa大侠曾经写过两篇文章论述如何操作dbf文件:《C++老代码 -- DBF数据文件操作类DBFile》(http://blog.csdn.net/maozefa/archive/2007/09/16/1787074.aspx)和C语言版的DBF本地数据库文件操作函数(http://blog.csdn.net/ma...
阅读全文
posted @
2010-06-01 16:41
carekee
阅读(1467)
推荐(0) 编辑
简单叙述钩子实现
摘要:要把自己的DLL注入到所有进程,在Win7和Vista下的环境使用远程线程,比较费力气因为数据执行保护(DEP)有防御最后选择消息钩子来实现。1.钩子中对HOOK消息的处理部分要在DLL中实现,然后导出这个函数比如HookProc2.HookProc中要使用CallNextHookEx(G_HHOOK, nCode, wParam, lParam);把消息向下传递3.在CallNextHookEx...
阅读全文
posted @
2010-06-01 13:49
carekee
阅读(272)
推荐(1) 编辑
模块编程中静态LIB的实现
摘要:程序做成模块的方式,层层调用是非常好的编程风格,做成模块一般分为动态调用的DLL模块,另一种是静态LIB模块。静态LIB编译后的程序不用附带DLL程序比较方便,编写LIB的方法是这样的以VS6为例子1.在VS6中创建一个静态LIB的项目2.添加一个头文件lib.h3.添加一个实现文件lib.cpp4.在lib.h中声明要导出的函数比如view plaincopy to clipboardprint...
阅读全文
posted @
2010-06-01 13:48
carekee
阅读(237)
推荐(0) 编辑
Retrieve HttpOnly Session Cookie in WebBrowser
摘要:Download demo source - 726.17 KB IntroductionIn order to help mitigate the risk of cross-site scripting, a new feature has been introduced in Microsoft Internet Explorer 6 SP1. This feature is a new ...
阅读全文
posted @
2010-06-01 11:44
carekee
阅读(1810)
推荐(0) 编辑
Semi-transparent and Shaped Dialogs with Standard Controls for Windows 2000 and Above
摘要:Download .NET demo (WinForms) - 280 KB Download .NET source code (WinForms) - 175 KB Download Native C++ demo (MFC VS2008) - 1.27 MB Download Native C++ source (MFC VS2008) - 299 KB Download Native C+...
阅读全文
posted @
2010-06-01 11:38
carekee
阅读(877)
推荐(0) 编辑
一个进程安全的日志类, Linux实现
摘要:项目中需要分类日志功能,且日志由多个进程产生,所以写了这个类。#ifndef CAPPLOG_H_#define CAPPLOG_H_#include "Generic.h"enum LOG_TYPE{ LOG_DEAGNOSTIC_MSG = 0x00000000, LOG_EVENT = 0x00000001, LOG_ACTIVITY = 0x00000002, LOG_ERROR = 0x...
阅读全文
posted @
2010-06-01 09:30
carekee
阅读(631)
推荐(0) 编辑
C++类功能扩展预留五招
摘要:第一招虚函数通过派生类来进行功能扩展是基本的面向对象的方式,这种方式大如下:class base{public: virtual ~base(){} virtual void fun() { cout << "基本功能" << endl; }};class derive:public base{public: void fun() { cout << "扩展功能...
阅读全文
posted @
2010-06-01 09:28
carekee
阅读(1283)
推荐(1) 编辑
一个多线程通过 HTTP 下载文件的类(Linux下的实现)
摘要:多线程下载文件这个话题已经是老汤了。在HTTP协议1.1中,允许通过增加一个HTTP Header“Range”来指定下载文件的区间。所以一般的做法都是:首先获取到文件大小(通过Content-Length)开一个线程池在进行分块下载。而在具体怎么实现的流程上,还是有差别的。1. 标准的做法是:首先用一个线程发送HTTP GET指令,服务器会返回Content-Length...
阅读全文
posted @
2010-06-01 09:26
carekee
阅读(1565)
推荐(0) 编辑