自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 My C++ Wrapper for FreeTDS

This artical introduce you my C++ wrapper for FreeTDS MSSqlServer interface.With this wrapper you can easily connect/disconnect sqlserver database, and execute insert/delete/update/select/create table commands.This wrapper is not thread-safe and not fully

2011-05-25 14:38:00 2769

原创 linux connect mssqlserver

let the linux programm connect to mssqlserver, install the third library - freetds.here are the steps to make it work, don't ask why, just have a try.1,setup unixODBC./configure --prefix=/user/local/unixODBCmakemake install2,setup freetds./configure --pref

2011-05-17 18:46:00 1592

原创 POCO实现的reactor模式

曾经维护维护过一个服务器项目有用到ACE,也是第一次从中学习到reactor和proactor两种并发模式,但仅限于用,而且linux上只用reactor,据说是linux系统本身对异步I/O支持程度等各种因素影响了proactor,关于windows上的ACE应用还得承认孤陋寡闻没见过,好像大家都宁愿用IOCP自己封装一套(本质跟proactor差不多了)。由于ACE源码可读性较差,项目没出现大问题也就懒得去细读其源码了。现在终于发现了一个可读性不错的网络库poco,作者面向对象的功底很深厚,值得细读。我

2011-05-13 17:29:00 6739

原创 临时对象的隐蔽性与野指针不崩之谜

C++危险众所周知,项目中写代码写得天昏地暗的时候就容易踩陷阱。不是我故意耍小聪明,是进度的紧迫性和头脑的疲惫程度导致我写了这样的代码(代码经过简单处理,隐去复杂性以及不涉密。^_^):char* tmpS=const_cast(string("hello").c_str());cout输出什么?"hello"。多悲剧的回答,答案是仅有一个换行符而已。因为临时对象string在调用流的时候析构掉了!(这个结论最后有代码验证。)所以这种情况就正常了:cout(string("hello").c_str())疑

2011-05-13 12:46:00 1296 1

原创 从一串由指定分割符分隔的串中查找子串

用strtok之前以为用strstr不用循环,结果经测试还是需要有循环,根据80-20原则,所以两种方法的性能未经测试对比,就选了strtok可读性较强的方法,strstr的方法抛之可惜,放到此处保留一下。bool FindToken(char* token,char* blacklist,char delimiter){ int tokenLen=strlen(token); int blacklistLen=strlen(blacklist); char* idx=strstr(bl

2011-05-13 11:16:00 623

原创 wstring与string互转

参考:http://www.velocityreviews.com/forums/t503692-i-need-help-for-std-codecvt.htmlstatic string to_string(const wstring& str, const locale& loc = std::locale("")){ typedef codecvt codecvt_t; const codecvt_t& cc = use_facet(loc); mbstate_t state = mbstate_t(

2011-04-13 00:06:00 987

原创 linux下转换charset

linux下转charset,由于不知道utf8一个字符有多长,所以不知道转换后的串有多长,开大缓冲是一个办法,但是如果输入太大并且并发较高的话有占用内存太大的问题。方案暂时折中为对文件采用命令转换,消息采用大缓冲方式iconv()来转换。不敢全部用命令,开销大。//utf8文件转为gb2312文件int utf8_to_gb2312_file(char* szUtf8FileName,char* szGb2312FileName){ if(szUtf8FileName==NULL || szG

2011-04-07 16:29:00 986

原创 POCO中的Socket分析

GoF的书描述bridge模式为很多人诟病,指其描述太抽象难懂,POCO库中的socket wrapper就对bridge模式进行了完美的使用展示,上图。

2011-03-31 17:43:00 3494

原创 POCO的Application分析

上图。

2011-03-31 15:22:00 1610

原创 POCO中的Task

<br />

2011-03-31 12:04:00 1602

原创 POCO中Notification分析

典型观察者模式的应用。

2011-03-31 12:03:00 1414

原创 POCO中的Thread类分析

<br />

2011-03-30 13:50:00 1270

原创 POCO中Event同步对象的POSIX实现

POCO1.4.1p1中Event同步对象的POSIX实现不够严谨,WIN32实现直接采用windows提供的event对象,而POSIX下采用条件变量模拟事件,但是没有考虑到cancellation point的问题,可能导致程序行为异常,下面代码注释的pthread_cleanup_push和pthread_cleanup_pop是我加上的,项目中放开这两个注释后暂时未重现异常问题。void EventImpl::waitImpl(){ //pthread_cleanup_push(pthrea

2011-03-29 18:22:00 1820

原创 POCO中的TCPServer分析

工作中要维护一个用POCO写的服务器,出现了问题,翻江倒海没找到出错的地方,于是只好看看POCO的源码了。幸好POCO的源码很清晰易懂,比ACE清爽多了。以下是我在阅读过程中为TCPServer画的类图。

2011-03-29 18:12:00 3529

原创 ACE的Service Configurator使用心得

ACE的Service Configurator优雅地实现了各种服务/daemon的统一配置。原理其实就是实现了一套插件系统。感觉配置文件的格式比较过时,没有采用xml方式。动态服务的初始化配置:dynamic service_name type_of_service * location_of_lib:name_of_object "parameters"1.service_name自己定义。2.type_of_service一般是Service_Object,估计是服务继承自ACE_Service_Ob

2011-03-17 11:41:00 1012

原创 qt工程加入libnids

LIBS += F:/MyProjects/qt_libnids/lib/libpcap.lib /        F:/MyProjects/qt_libnids/lib/libnids.lib /        F:/MyProjects/qt_libnids/lib/WS2_32.Lib /        F:/MyProjects/qt_libnids/lib/wpcap.lib /        F:/MyProjects/qt_libnids/lib/bufferoverflowu.lib

2010-08-14 11:29:00 1128

原创 qtcreator项目如何使用winpcap

因为项目需要,需要用到Qt+Winpcap。IDE用Qt Creator。1、下载winpcap安装程序,运行基于winpcap的程序需要其支持。2、下载winpcap的开发包,用于开发。3、把winpcap开发包中的Include目录下的所有内容拷贝到qt的mingw/include目录下。4、把winpcap开发包中的Lib目录下的Packet.lib和wpcap.lib拷贝到工程目录下。5、工程pro文件中添加一行"LIBS+=Packet.lib wpcap.lib"。

2010-06-15 01:13:00 6827 2

原创 MBCS和UNICODE

char ipport[50]={0};//inet_ntoa返回内部数组,多次调用会被覆盖sprintf(ipport,"%s:%d",inet_ntoa(addrClient.sin_addr),ntohs(addrClient.sin_port));wchar_t w_ipport[50]={0};mbstowcs(w_ipport,ipport,50);//#include

2010-05-26 00:23:00 673

原创 ado操作store procedure的wrapper

随手写写,有待加强。 YTAdo.h//****************************************************************************************************************************************************************// 文件: YTAdo

2010-05-24 09:15:00 1015 1

空空如也

空空如也

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

TA关注的人

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