自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (5)
  • 收藏
  • 关注

原创 SQLDescribeCol和SQLGetData

<br />这几天做一个东西,要用到ODBC API的一些东西,遇到几个问题,说出来,大家一起注意一下<br />1,SQLDescribeCol与smalldatetime<br />     SQLDescribeCol函数返回列的信息,其中包括列的大小,我在项目中,对于常用的类型,都用相应的数据类型来取数据,对于非常用的类型,就根据这个函数返回的列的大小,来申请一这个大小的空间,然后绑定接收数据,这个方法对于许多类型都是可以用的,但对于smalldatatime却出了意外。<br />    smal

2011-05-25 16:24:00 6036

原创 前营中间件(6) - 组件的接口

<br />      我们在编写组件时,需要利用中间件的一些资源,而我们把操作这些资源的接口全部集中到ZContextAPI中,在我们编写组件中,每个组件的响应函数中,都会传进此指针.所以这个接口对我们来说是非常重要的.对此接口中的许多函数我们前面都有所讲过,我们此文先讨论一下与多播和广播相关的函数.<br />      广播,在我们的中间件中,发送广播的功能是由组件中实现的,而对应的函数就是PostBroadCastPack,它有两种形式, 一个是以缓存区为源数据,一个是以指令为源数据,我们在中间件的

2010-07-21 17:02:00 1076

原创 前营中间件(5) - 异步发包和客户端的操作函数

<br />上次,我们介绍了同步发送接收模式,现在我们介绍一下异步模式,下面是异步发送函数:<br />/**<br />     * 函数名称:异步发送消息<br />     * 函数功能:将数据发送出去,系统会自动打个发送标志,并把对应的序号写入消息中并返回,应答<br />     *         序号写为。<br />     * 参数列表:<br />     *         @uiSessionID      : 会话ID<br />     *         @uiFuncNo  

2010-07-13 15:31:00 1076

原创 前营中间件(4) - 客户端的实现

我们已经介绍了组件的写法,下面就介绍一个客户的写法,客户端的所有操作都在ZClientAPI.dll进行了实现,此文件只有一个导出函数LPCLIENTAPI __stdcall GetClientAPI(),此函数取得一个接口指针LPCLIENTAPI,这个接口指针的声明可以在”ZClientAPI.h”中找到,它提供了大量的函数,但我们此处不打算全部进行讲解,只讲解我们实现上次提到的那个功能所需要的函数.我们需要哪些功能呢?让我们先想一想:我们上次提到要计算一个数的平方,组件已经写好了,中间件已经启动.那

2010-07-13 13:54:00 1020

原创 前营中间件(3) - 组件的开发

<br />下面,我们通过一个简单的例子来介绍此系统的使用.<br />我们实现一个简单功能,在前台输入一个整数,后台对此进行平方操作后返回.下面我们先从服务端的组件开发进行介绍,同时会介绍相应的配置的修改和系统的测试.<br />组件开发:<br />一个组件需要开发成什么样子?我们首先想象一样,如果我们想要提供一个功能,需要知道什么?我们首先要知道给什么请求提供?怎么处理这个请求?处理这个请求是否还需要什么样的资源?我们把这几个问题解决掉了,还需要把这些信息告诉中间件,让中间件能够正确根据请求包的信息,

2010-07-13 12:44:00 968

原创 前营中间件(2) - 配置

<br />     前营中间件的配置文件采用XML格式,下面是一份完成的配置文件,我将以此文件进行讲解:<br /><?xml version="1.0" encoding="gb2312"?><br /><Qianyin ver="0.1"><br /> <WorkThread used="1"><br />  <MessageList Discard="0" MaxCount="3096"/><br /> </WorkThread><br /> <Servers><br />  <Server Seq

2010-07-08 16:42:00 1050

原创 读写锁管理器的实现

/** * 利用LOCK汇编指令实现了多CPU情况下的,多线程同步问题, **/    typedef struct ZRWLock{ enum {  MAX_WAIT_OBJECTS_COUNT = 0xff,  // 写锁上最大等待数量  INIT_VAR_VALUE = -1,    // 变量初始值  VAR_ENTER_VALUE = 0,    // 获到锁

2010-02-08 16:13:00 1018

原创 临界区

WINDOWS下临界区的实现思路很简单,就是如果只有一个线程进入临界区的时候,只记录此线程的ID,让线程继续运行,如果此线程还没有离开临界区时又有另一个线程要进入临界区时,就生成一个内核对象,然后在此内核变量上进行等待,当线程退出时,把内核变量设置成受信状态,唤醒等待的线程。实现方法可以分成两部分,一部分是进入线程的控制,在CRITICAL_SECTION结构中有一个变量表示进入线程循环进入的

2010-01-09 16:48:00 8491

原创 windows下轻量级互斥锁

typedef class mutex_lock{public: mutex_lock()  : LockCount(-1)  , hEvent(0) { } ~mutex_lock() {  if(NULL != this->hEvent)  {   CloseHandle(this->hEvent);  }  this->hEvent = NULL;  this->LockCount = -1

2010-01-06 16:47:00 3805

原创 IOCP线程数量

     对于IOCP的线程大部分书上介绍是为CPU数量的两倍,这应该是经验数字,但是我们也不能完全照搬这个数字,比如说,如果我们在线程上处理了大量的数据库操作,线程同步操作,就会使线程处理等待状态,这样线程就有可能不够用了。因此,我们最好能动态创建线程的数量,我们在系统中保留一个正在等待线程的数量,当每个线程唤醒时,先检查此数字是否为0,为0时则创建一个新的线程,当然,在创建创建的同时要注意加锁

2009-12-25 08:39:00 2785

原创 IOCP网络包重组问题

     目前,IOCP已经广泛用于网络程序设计了,由于IOCP基本多线程对网络数据进行接收,因为数据包的重组往往成功程序员处理IOCP最难做的事情, 近来在做相交的项目,也颇费了一番心思,现把我的处理方法写下来。     由于TCP连接传输数据会把数据包是流的方式进行,因为,我们在客户端接收数据时,每次recv函数结束得到的并不一定是我们以前每次调用send函数所发送的完整数据,但TCP传输

2009-12-24 10:56:00 2699

原创 全局钩子

安装WH_JOURNALPLAYBACK, WH_JOURNALRECORD,WH_KEYBOARD_LL,WH_MOUSE_LL之类的全局钩子时,系统不能处理堵塞模式.因为,实行挂钩内容的线程为挂钩线程,如果此线程堵塞住的话,那么函数就会超时退出.

2009-01-22 12:58:00 837

原创 spy++ 消息钩子漫谈

spy++ 消息钩子漫谈我们经常使用SPY++来查看应用程序所处理的消息情况,但经常在网上看到许多人在问,SPY++是如何把应用程序所处理的消息展现出来的呢?许多人提出了很好的建议,但是资料都太零散,查找起来比较费力,我在此整理出来供大家分享。在讲具体问题之前,我们先讲一些题外话,这样对我们下面的讲解会有帮助,一 消息队列在WINDOWS操作系统中,我们比较了解的消息队列有两种:一

2009-01-21 21:03:00 4094 1

原创 DELPHI线程类挂起的问题

  DELPHI线程类挂起的问题                                                                                           ——赵海杰对于用过Delphi的TThread类的兄弟应该很了解,在Tthread中有个Suspended属性,如果Suspended属性为True时,则表示线程是挂起状

2007-07-02 09:41:00 7568 1

前营中间件测试程序及配置

前营中间件测试程序及配置,详细请见http://blog.csdn.net/chaohaijie

2010-07-26

前营中间件测试实例程序

前营中间件的测试实例,详情请参见http://blog.csdn.net/chaohaijie

2010-07-26

MFC MDI框架的实现

用MFC实现动态加载界面的功能,可以在多种项目中重复应用

2010-02-21

WINDOWS读写锁实现

参考CRITICAL_SECTION的实现机制,利用CPU的LOCK指令实现读写锁的功能,同时用C++类进行了封装

2010-02-10

端口映射小程序-用完成端口-vs2005

用完成端口实现端口映射,工作线程数量自调整。

2009-08-19

空空如也

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

TA关注的人

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