代码改变世界

在window下编译google GYP

2012-04-22 16:46 by j.cheen, 2430 阅读, 0 推荐, 收藏, 编辑
摘要:gyp 是什么?google如是说:GYP can Generate Your Projects.比如说,你下载了google的开源项目,你需要用VC编译,问题是,你下载的源码包里没有VC的sln等项目文件,GYP就是做这事的,他类似于cmake等工具,能根据特定的配置文件,生成一些IDE需要的配置文件(即工程文件).下载python 2.x版本,我测试是用的2.73,并安装. 从google项目的svn签出源代码,假设保存到了D:\_open_source\google_gyp 在gyp项目根目录下运行 python.exe setup.py install gyp安装完成,相关文件和脚本会 阅读全文

检查类型是否为不完整(不完全)类型

2012-04-22 16:18 by j.cheen, 1258 阅读, 0 推荐, 收藏, 编辑
摘要:概念 incomplete types (types that describe objects but lack information needed to determine their sizes). 也就是这样一些对象:编译器知道对象的类型,但是缺乏另一些相关信息使其大小能够确定.列举一些举例,来自IBM的 langue reference (地址)比较简单,直接上原文了:The following are incomplete types:Type voidArray of unknown size Arrays of elements that are of incomplete 阅读全文

OCCI编程接口介绍

2012-01-09 15:43 by j.cheen, 5776 阅读, 1 推荐, 收藏, 编辑
摘要:OCCI简介Oracle® C++ Call Interface (OCCI) 是一套应用程序编程接口,它允许C++程序与一个或者多个Oracle数据库进行交互.OCCI给予你强大的数据库操作能力,比如说执行SQL,处理存储过程等.OCCI主要是提供给有以下需求的用户:希望借助系统内存和网络连接的合理使用,开发高性能的应用程序.开发可伸缩的应用程序,以满足数据库用户和请求的不断增长.支持访问数据库对象.简化用户认证和密码管理.支持多层认证模式两层C/S环境或者多层环境下,动态连接管理和事务管理的一致性接口.注: OCCI不支持Non-Blocking(非阻塞)模式.由于OCCI是以动 阅读全文

windows下的套接字IO模型

2012-01-03 14:37 by j.cheen, 1495 阅读, 2 推荐, 收藏, 编辑
摘要:一般情况下,IO操作的行为受两种因素的影响:IO操作对象的类型(阻塞还是非阻塞)获取IO操作结果的方式(同步还是异步).同步就是指操作的发起和操作结果的获取由调用者完成.异步指操作发起由调用方完成,操作结果由服务方主动告知.IO操作一般可以分为4种:同步阻塞IO :调用方调用IO函数,并阻塞在这个函数上面.同步非阻塞IO:调用方不断的调用IO函数,直到有”明确”的返回值.异步阻塞IO:调用方发起IO操作后,阻塞在接收IO通知的API上.异步非阻塞IO:调用方发起IO操作后继续其他工作,由内核负责回调或者发出IO通知信号.阻塞IO对象在调用期间会阻塞IO函数,函数返回的时候,操作结果是明确的,因 阅读全文

一个简单日志封装

2011-12-29 23:28 by j.cheen, 442 阅读, 0 推荐, 收藏, 编辑
摘要:似乎也没有什么好说明的,图个简单易用 :)直接上代码,声明:View Code 1 #ifndef log_warper_h__ 2 #define log_warper_h__ 3 4 #pragma once 5 #include <string> 6 #include <sstream> 7 #include <iomanip> 8 9 namespace loging10 {11 class loger;12 13 enum loging_level{14 ll_debug,15 ll_info,16 ll_warning,17 ll_... 阅读全文

半同步半异步(HSHA)模式的服务器模型

2011-12-05 05:47 by j.cheen, 2169 阅读, 0 推荐, 收藏, 编辑
摘要:半年前偶然看到一叫spserver的服务器框架,它将windows下IOCP移植到到libevent,并且以HSHA,LF两种模式实现了服务器框架.我做了点功课,写点心得.一般来说在设计一个服务器网络框架的时候,需要用到线程池,里面的线程负责执行服务端所有代码.这些代码总的来说可以分为两类:一类负责网络IO部分,也就是从网络读取和发送数据另一类负责处理各种业务逻辑.通常情况下他们是分离的,网络IO部分不需要管理业务逻辑具体做什么工作,而后者也不关心数据怎么得来,怎么送到网络上.两者就是一个生产者消费者关系.这里讨论的HSHA就是网络IO部分为异步模式,而业务逻辑部分为同步模式.即:网络IO请求 阅读全文

零字节WSASend,WSARecv

2011-11-22 02:07 by j.cheen, 1383 阅读, 1 推荐, 收藏, 编辑
摘要:以下是Windows平台下两个函数的声明:int WSASend( __in SOCKET s, __in LPWSABUF lpBuffers, __in DWORD dwBufferCount, __out LPDWORD lpNumberOfBytesSent, __in DWORD dwFlags, __in LPWSAOVERLAPPED lpOverlapped, __in LPWSAOVERLAPPED_COMPLETION_ROUTINE l... 阅读全文