自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(26)
  • 收藏
  • 关注

转载 将使用 GetProcAddress 的代码从 C 导向 C++ 时收到 C2564 错误或 C2197 错误(转载)

概要loadTOCNode(1, summary);将使用 GetProcAddress() 的代码从 C 导向 C++ 时,MS-DOS 的 C++ 编译器可能会返回以下错误信息:error C2564:formal/actual parameters mismatch in call through pointer to function 32 位编译器返回的错误信息是

2007-01-24 16:18:00 659

转载 DOS网络命令解析(转载)

DOS网络命令解析Arp     显示和修改“地址解析协议”(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表。该命令只有在安装了 TCP/IP 协议之后才可用。     arp -a [inet_addr] [-N [if_addr]     arp -d inet_addr [if_addr]     arp -s inet_addr ether_addr [if_addr]    

2007-01-24 14:37:00 477

原创 链接警告:warning LNK4070 :/OUT...

dllD.exp : warning LNK4070: /OUT:dll.dll directive in .EXP differs from output filename "Debug/dllD.dll"; ignoring directive        我在DLL项目中遇到了,因为要对Debug版和Release版分别指定不同的输出文件名。对Debug版,我指定输出文件为dllD.d

2007-01-24 10:22:00 2357 1

原创 Windows的4种主要的同步对象(原)

同步对象Windows共设置了4种主要的同步对象,分别是临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)和事件(Event)。MFC封装了它们,分别是类CCriticalSection、CMutex、CSemaphore和CEvent,它们都以CSyncObject为基类。1、临界区(1)创建:CCriticalSection myCritical

2007-01-23 14:33:00 786

转载 virtual的Vtable和VPTR

 在C++中,多态性是通过虚函数来实现的,如下:#include using namespace std;class Base{    int a;    public:    virtual void func1(){cout    virtual void func2(){cout    virtual void func3(){cout};virtual关键字,可以引发晚捆绑。它对每个包

2007-01-18 16:16:00 653

原创 pthread_cond_wait会在等待的同时解锁的(原创)

看了好几天的多线程编程,和锁的机制,才明白了。原来我写的程序,总会出现好几个线程同时对一个mutex加锁的情况,就是打印出好几个“lock ok”。我还纳闷呢,不可能的啊。后来才发现,那些线程都是采用下面的结构:pthread_mutex_lock(&mutex);printf("lock ok!");while(false) pthread_cond_wait(&cond);pthread_

2007-01-18 14:09:00 979

转载 编写Linux/Unix守护进程(转载)

作者 liubin守护进程在Linux/Unix系统中有着广泛的应用。有时,开发人员也想把自己的程序变成守护进程。在创建一个守护进程的时候,要接触到子进程、进程组、会晤期、信号机制、文件、目录和控制终端等多个概念。因此守护进程还是比较复杂的,在这里详细地讨论Linux/Unix的守护进程的编写,总结出八条经验,并给出应用范例。  编程要点     1.屏蔽一些有关控制终端操作的信号。防止在守护

2007-01-17 08:51:00 413

转载 Linux下通用线程池的创建与使用(转载)

本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。 为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等

2007-01-16 09:27:00 994 1

转载 异步IO、APC、IO完成端口、线程池与高性能服务器(转载)

原作者姓名 Fang(fangguicheng@21cn.com)异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断    早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。    随着CPU性能的迅速提高,这种效率低下的工作方式浪费

2007-01-16 08:58:00 483

转载 完成端口与高性能服务器程序开发(转载)

完成端口与高性能服务器程序开发Email:kruglinski_at_gmail_dot_comBlog:kruglinski.blogchina.com早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间见到这种技术被过分炒作,过分的神秘化,就想写一篇解释它如何工作的文章.想告诉大家它没有传说中的那么高深难懂!有什么错误的地方还请高人指正.转载

2007-01-15 09:56:00 575

转载 完成端口示例(转载)

一个完成端口其实就是一个通知队列,由操作系统把已经完成的重叠I/O请求的通知 放入其中。当某项I/O操作一旦完成,某个可以对该操作结果进行处理的工作者线程 就会收到一则通知。而套接字在被创建后,可以在任何时候与某个完成端口进行关 联。  步骤: 1、创建一个空的完成端口; 2、得到本地机器的CPU个数; 3、开启CPU*2个工作线程(又名线程池),全部都在等待完成端口的完成包; 4、创建TCP的监

2007-01-15 09:43:00 642

转载 多线程服务器通讯模型(转载)

通用的 socket 服务器处理端,也就是进程所在的主线程每次接收一个连接后,处理完毕后,在接收一个连接,周而复始,完成和客户端的通讯过程。缺点是显而意见的,特别是处理客户端的长连接的时候,服务器和客户端的通讯一直没有结束,不能再处理已经在排队的连接请求。一般会导致客户端长时间的等待。这就是单进程的服务器通讯模式。对应与单线程模型,我们发现一个连接(accept)效率太低,我们要是建立多个Ac

2007-01-14 21:54:00 527

转载 类似于QQ游戏百万人同时在线的服务器架构实现(转载)

QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。 那么,在技术上,QQ游戏到底是如何实现百万人同时在线并

2007-01-14 21:51:00 435

转载 从kernel源代码的角度分析signal的错误用法和注意事项(转载)

!声明:按照Linux的习惯, 我的这篇文档也遵循GPL 协议: 你可以随意应用并修改本文档,必须发布你的修改,使其他人可以获得一份Copy,尤其是给我一份Copy! 我的mail :bob_zhang2004@163.com | zhanglinbao@gmail.com 均可。欢迎论坛转载! 目前有些内容已经在 www.linuxforum.net中进行过讨论,可以前往:http://www.

2007-01-11 19:29:00 638

转载 C语言中几种输出调试信息的方法(转载)

转载于http://blog.csdn.net/thinkerABC/archive/2006/03/04/615378.aspx在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法: 方法一:直接使用屏幕打印函数printf。 该方法直接在需要输出调试信息的位置使用函数printf输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数fact来

2007-01-08 21:39:00 457

转载 C++代码和调试(转载)

转载于http://blog.csdn.net/xjbob/archive/2005/04/23/359700.aspxC++代码和调试                                                                                                                                  

2007-01-08 21:35:00 506

转载 关于调试时输出的字符串信息(转载vckbase)

当我们要在程序中输出调试信息时,常常以字符串的形式来输出,例如: printf("Some debug information here!/n");这段代码在Debug和Release版下都输出调试信息,这不是我们所要的,一般地大家都会添加预编译指令,如下所示: #if _DEBUG printf("Some debug information h

2007-01-08 21:31:00 414

原创 写文件的缓存

在调试接口的过程中,要写Debug信息,因此自己定义了一个TRACE函数。因为要实时跟踪程序的动作,所以每隔几步将类似“到此一游”的信息写到一个文件里。为了避免每次写文件都要打开文件带来的开销,因此程序一启动就打开Debug文件,虽然不知道linux是不是有限制一个文件的打开时间:)同时也定义了Debug的级别,可以有输出到终端和文件两种。在实时输出调试信息到文件的过程中,发现了一个现象,数据

2007-01-08 19:07:00 497

转载 SQL的字符串函数(zz)

ASCII(str)  返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。 mysql> select ASCII(2);        -> 50mysql> select ASCII(2);        -> 50mysql> select ASCII(dx);        -> 100也可

2006-12-29 21:23:00 525

翻译 VC++调试---断言宏、跟踪宏、倾印

VC++调试宏1、断言宏断言宏是指一组用于检测程序运行状态的宏。譬如,程序正常运行时某个条件必定成立,否则,如果该条件不成立,则程序不能正常运行,这时就可以使用断言宏,当指定的条件不成立或者断言无效时,程序执行到断言宏处将弹出断言消息框。MFC提供如下几个断言宏:(1)ASSERT此宏有一个表达式(也包括指针值)参数,该宏对表达式求值,如果结果为0,则打印诊断信息并放弃程序执行,诊断信息格式如

2006-12-27 11:15:00 1249

原创 对话框程序生存期的函数流程探讨(原创)

对话框程序生存期的函数流程探讨例子是一个mfc的对话框,用vc调试器查看了一个程序从生成初始化到接受消息的流程。从产生到结束的基本流程是这样的:KERNEL32->WinMainCRTStartup()->_tWinMain(开始)->AfxWinMain(开始)->AfxGetThread()->AfxWinInit()->InitApplication()->InitInstance()-

2006-12-20 17:18:00 731

转载 深入探讨MFC消息循环和消息泵(转载)

首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送出去

2006-12-19 21:26:00 372

转载 用VC++编程控制计算机和光驱

 用VC++编程控制计算机和光驱通常有些程序在初次使用使用时,要进行一些象安装特定字体的设置,之后需要重新启动计算机使之生效;而在一些多媒体软件编程中会用到用程序操纵CD_ROM的开与关的情况。为了说明在VC中实现这两项功能的方法,我们创建一个基于对话框、名为Control的工程。对话框的外观如图1所示,其中四个按钮(Button)属性设置见下表,   ID              

2006-12-19 17:49:00 349

翻译 pragma:lib在实例之间共享数据

通常,一个进程的地址空间中的数据是私有的,对别的进程而言是不可见的,但是lib在程序的所有实例之间共享数据是毫无问题的 。例如,一个程序proc和一个lib,lib共享两个变量:一个字符数组和一个整数(记录已保存的串的个数)。lib将这两个变量保存在作为共享使用的一个特殊内存段中:#pragma data_seg ("shared")                            

2006-12-19 16:08:00 561

转载 #pragma 预处理指令详解(zz)

在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。      其格式一般为: #pragma  para      其中para为参数,下面来

2006-12-19 14:00:00 366

转载 #pragma data_seg介绍

#pragma data_seg介绍 应用一:单应用程序。    有的时候我们可能想让一个应用程序只启动一次,就像单件模式(singleton)一样,实现的方法可能有多种,这里说说用#pragma data_seg来实现的方法,很是简洁便利。应用程序的入口文件前面加上#pragma data_seg("flag_data")int app_count = 0;#pragma d

2006-12-19 13:51:00 1006

空空如也

空空如也

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

TA关注的人

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