自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

郁郁

所有开源代码均可在我的github上同步更新到:https://github.com/chenyu2202863/

  • 博客(101)
  • 资源 (12)
  • 收藏
  • 关注

原创 重要提醒

各位朋友,我所开源的所有代码均可在我的github上同步更新,谢谢大家的支持

2013-07-21 19:24:19 1423

原创 数据库粘合层--基于protobuffer

背景:最近在工作中,受到大量数据库操作的折磨。由于采用拼接字符串的方式来进行数据库操作,带来了每个数据库操作业务都需要提供一个接口,导致同一张表的操作需要一堆堆接口。比如表person_t有3个字段(age、name、sex),如果对age和sex做update,需要一个接口,如果对age的update那又需要一个接口,对name的update还需要一个字段。这种接口会根据业务不断衍生出来

2013-03-05 14:14:03 6467 9

原创 发布一套IOCP框架

更新:2010/08/211. 提供MemoryPool支持(详情请查看猛击这里)2. 模仿asio中io_service服务,把dispatcher接口公开出来,可以post任意回调3. 增强网络服务端demo2010/09/071. 提供AsyncResult的保存,减少内存申请复制2. 提供Timer组件,利用WaitableTimer,通过Dispa

2010-08-17 17:40:00 22267 82

原创 网络库的设计与实现

前言距离第一次发布iocpframework已经三年多了,这期间这款基于windows的网络库经过多次的修改,已经和第一版有非常大的区别了,但是整体思想架构并没有改变,这得益于当初对下载调度器的认识--模块应该是可替换的,这也是后话了。 在阅读本文的时候,希望你能有以下的基础:熟悉C++11 ,auto、decltype、lambda、type_traits、move等

2013-09-28 14:23:53 8470 10

原创 Object Pool(C++11)

这是一个简单易用的对象池,很多系统对资源的访问快捷性及可预测性有严格要求,列入包括网络连接、对象实例、线程和内存。而且还要求解决方案可扩展,能应付存在大量资源的情形。object pool针对特定类型的对象循环利用,这些对象要么创建开销巨大,要么可创建的数量有限。而且在pool中的对象需要做到无状态。 如何使用utility::object_pool_tint> pool1

2013-09-19 13:43:55 4276

原创 又一个lua与C++粘合层框架

背景:这是之前那篇烂文章的一个扩展吧!在游戏领域,特别多的使用到lua,作为C++的补充,当然会用到lua与C++的交互。lua提供了与C++交互的API,但是这些API各种坑爹、各种坑,各种繁琐,有的API操作了lua栈,有的却没有。为了解决lua原生API的问题,就出现了一些框架、库来改善,比如lua++,luabind…,窃以为,luabind是史上最强大的lua与C++粘合层,无出

2013-09-19 11:51:19 6558 2

原创 C++接口导出到lua组件

玩过lua的朋友肯定知道,C++要导出接口道lua里其实挺费事儿的,需要考虑lua调用C++后,栈如何弹出相应类型的参数,如何把C++的返回值压入lua栈。最麻烦,不省心且容易出错的就是导出一个接口就需要写一堆破代码。lua++?luabind?好吧,就当你们没用过!看看下面的接口,也就是你需要写的代码,如果觉得还行,下载下来一起讨论吧,你觉得呢? 这是注册时用的,st

2013-05-28 16:47:02 2364

原创 当std::ref遇到前置声明

当std::ref遇到前置声明话说,起因是这样的:有一个前置声明的类型然后又一个回调函数使用了一个session_t的引用(注意,在下面这段代码能编译通过)在这里,handler_(session,…)可以看成是一个std::function的对象,而handler的原型是[](network::session_t &, …){};在这里handler_只需要把sess

2013-05-14 09:32:12 2754

原创 C++11各种资源及个人见解

本文是专门针对C++新特性的见解,融合自己学习使用过程中的各种曲折。当然,如果你是反C++联盟或者各种逆反党人士均可以跳过 。其中,肯定有许多不恰当的地方,有很多偏见,但还望各位看官秉持该打就打,该喷就喷的原则,看不惯就就拍吧!首先,我力图以一种分类形式展现,把语言特性、库和各种最佳实践、Idiom方法介绍给大家。这里是关于C++11的一个资源清单,如果大家

2013-01-31 09:47:48 1884

原创 数据结果集的一种透传解决方法

一、背景很多同学都经历过这样一个应用环境:服务器把客户机的数据请求通过查询数据库得到了结果集,再把结果集返还给客户端。在这里,为了让服务器对客户端数据请求具有更方便的扩展或者收缩,需要让服务器不知道客户端每次返回的数据结果集格式。那如何才能让服务器在不知道客户端请求数据集格式的情况下还能扩展呢,也就是透明的二进制格式呢?想想,就是让查询的结果数据集进行序列化为一种通用格式,然后

2012-12-16 14:05:27 1992

原创 从operator<<谈函数重载决议

一. 背景项目中需要对数据库查询访问的业务,在写数据库sql语句代码时,由于没有特别复杂的格式化需求,决定采用C++标准库中的stream来进行sql语句的格式化。有两点好处:1). 类型安全2). 使用方便比如 std::ostringstream os;std::uint32_t id = 10;os "select * from user_t where id

2012-12-10 10:32:48 1995

原创 博客搬家

hi all:鉴于CSDN博客对LiveWriter支持太烂,而且人气越来越低,本博客已经搬家到博客园,欢迎大家来指点一二!

2012-11-26 12:50:49 1296

原创 自己玩垂直搜索

前言由于业余爱好,想折腾一个垂直搜索引擎来玩玩,一方面想搞明白这里的水有多深(确实很深),另一方面满足自己的需要,去博客园,CSDN怕一些好文章来把玩把玩。从断断续续的玩了一个月的情况来看,有些成果,但是技术难点还在后见面。我也会不间断的补充完善,估计至少还需要1年的时间吧。如果你也希望能和我一起探索,请锁定本系列。但是你也无可避免的会和我一起走许多弯路(哈哈,被坑了吧),但是我所走的捷径

2012-06-27 13:53:05 1720

原创 共享Windows下C++库之异步http组件

简介最近在做一个crawler,为了更好的发挥抓取web的能力,需要用到异步http。其中DNS解析、下载都需要异步。 本组件基于WinHTTP实现,如果以后有需要再从头构造轮子吧(基于iocp的异步框架)。对于WinHTTP的思想,MSDN很多介绍,这里,这里说明该组件使用十分简单,只需要完成几种回调接口即可1. 完成HTTP HEADER2. 完成HTTP 整个

2012-06-05 11:11:35 5625 7

原创 数据库异步访问解决方案

基于前段时间研究数据库客户端的异步访问,发现1)  ADO的异步回调通知并不能正常工作,相见这里,2)  ODBC在3.8版本之前都不支持异步回调,详见这里3)  OCI(ORACLE)也并不提供异步回调,只支持non-blocking模式,详见这里靠,这是什麽世界啊,大家都不用异步访问吗?大家对异步回调通知都实现的这么弱,让我情何以堪~ 对于中间件服务器访问数据库来讲,由

2012-05-10 17:54:26 7294

原创 公司培训记

公司培训后的一些感想,随便扯,想到哪儿写到哪儿来公司一月后,公司组织了为期两天的培训会。从公司背景到行业背景,从公司制度到项目管理,还有礼仪~。我也来普及一个常识性问题:脉搏 != 心率,人在运动后心率会快于脉搏,正常情况可以约等于脉搏。人怕三长两短,看病怕三长一短三长两短指的是未盖上盖儿的棺材,因为棺材正好由三块长木板、两块短木板构成一个匣子,以棺材来形容性命不保

2012-05-03 17:59:49 1844 1

原创 ADO Recordset数据集序列化

由于工作需要,使用ADO查询数据库,然后后把查询记录序列化到内存病通过网络传输到另外机器以便反序列化为Recordset。起先,使用MS提供的方式,需要IpersistStream、IStream、OleSaveToStream、OleLoadFromStream详情请看这里。嗯,很好,MS给出的例子很完美的测试通过~天有不测风云人有旦夕祸福,由于业务需要,必须在查询语句使用绑定变

2012-04-10 10:05:37 2957 1

原创 C++二进制兼容性

学习、工作中总结的条款,不喜勿扰~由于标准委员会一直没有统一标准的C++ ABI,导致各个厂商都有自己的一套体系,为了不出意外,循规蹈矩也有一定的必要,但可以斟酌,三思而后行。能:1. 可以添加非virtual函数2. 可以添加enum到class3. 可以追加enum值到已存在enum中4. 可以去掉private限制符没有被inline函数调用或者被使用的且

2012-02-29 09:53:14 2430

原创 共享Windows下C++库之序列化组件

简介:什么是序列化?简单来说,序列化就是将对象实例的状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它根据流重构对象。这两个过程结合起来,可以轻松地存储和传输数据。对象序列化反序列化通常用于:1. 将对象存储于硬盘上2. 在网络上传送对象的字节序

2011-10-16 22:34:40 2462 1

原创 共享Windows下C++库之线程池篇二

惭愧,很久没有来写点或者共享点有用的代码了,一来是工作很忙,二来也是自己懒惰。借今天国庆放假最后一天在家,把自己前段时间积累的点滴放在这里,以飨大家,如有不合胃口,那就唾之~。在上一篇中,我介绍了一种线程池实现方式(利用系统提供的线程池API)。在这里,我介绍一个自己实现的线

2011-10-07 16:21:22 3308

原创 共享Windows下C++库之内存池篇

目录结构 内存池简介 介绍分析内存池改进及所使用技术 如何配合STL容器 性能测试 如何使用  

2010-08-17 17:42:00 11669 16

原创 Boost Asio在Windows下设计及实现解析

  研究了许久ASIO,很不错!好话就不多讲,但是我认为作者为了跨平台,把代码弄得很拐弯抹角,但这也是不得已而为之。而这次的分析,只考虑Windows平台上的实现。我会陆陆续续的把整个设计思想和实现的关键代码给做出解析,然后判断其优劣,把认为可以去掉的就去掉,简化设计与实现!--因为我们只考虑Windows平台上的实现。   (还是先把图贴出来,最近都没时间写文章了)   设计类图   服务类图   socket相关类图

2010-08-17 17:41:00 5213 2

原创 偶的技术书

                                  摄于2010/07/10,以此留作纪念

2010-08-16 12:21:00 2790 15

原创 共享Windows下C++库之线程池篇

  上一篇我把创建单个线程的源码给出来了,当然,线程池的也不能拉下~  

2010-06-14 13:53:00 5771

原创 共享Windows下C++库之线程篇

今天把平时积累的一些比较常用的库给共享出来,一来“展现”下自己的开源精神,二来也可以发表下自己的看法。(假设你熟悉C++ tr1的组件) 共享顺序 1.线程库(线程篇、线程池篇、线程同步与本地线程存储篇) 2.内存库(待续…) 3.网络库(待续…)  

2010-06-07 21:59:00 2867 1

原创 一天一个CRT函数 strstr

1.介绍char *strstr( const char *str, const char *strSearch );需找str字符串中出现strSearch字符串位置的指针。如果没找到,则返回NULL,如果strSearch为空,则返回str。2.实现inline tChar *tStrStr(tChar *pStr, tChar *pSubStr){ /* First

2010-04-16 17:26:00 1714 1

原创 一天一个CRT函数 strrev

换工作了,一直在忙~1.介绍char *strrev( char *str );用途:翻转字符串,返回翻转后的字符串 2.实现/**** char *_strrev(string) - reverse a string in place Purpose: Reverses the order of characters in the s

2010-04-01 09:18:00 997 2

原创 一天一个CRT函数 strpbrk

一晃就是2月底了,在上个星期里完成了辞职手续。然而气愤的是,距离职仅有两天的时间,项目组长居然给我布置任务!靠,我直接拒绝了!更令人感到惊讶的是,他告诉我这个任务是他们不愿意做,又做不了的一个棘手问题,让我来帮他们搞定!!我骂人了,懂不懂管理啊!废话不说了,看看strpbrk。1.介绍char*strpbrk( const char *string, const char *strCh

2010-02-28 14:59:00 1231 1

原创 一天一个CRT函数 _strlwr/_strupr

这是一组性格迥异的兄弟函数,_strlwr负责把字符串中所有字符转换为小写,_strupr把字符串的所有字符转换为大写。1.介绍_strlwr的原型为:char *_strlwr(char *str)_strupr的原型为:char *_strupr(char *str)长得都差不多,返回值也都是经过处理的字符串指针。 2.实现inline tChar *tStrL

2010-02-09 20:56:00 2237

原创 一天一个CRT函数 _strdup

快过年了,成都的天气不错,心情也很舒畅。我们接着来讲,_strdup是经常用来复制字符串的函数。1.介绍函数签名:char *_strdup(const char *strSrc)返回值:返回值向北复制的字符串的指针,所需空间由malloc分配并且必须手动free释放 2.实现inline tChar *tStrDup(const tChar *pString){

2010-02-08 23:14:00 1247 1

原创 一天一个CRT函数 strcspn

刚看到strcspn的实现时,很是惊诧!靠,这么优秀的算法,分析了老半天才搞明白。世界上为啥聪明的人这么多呢?1.介绍原型:size_t strcspn(const char *pstr, const char *strCharset)MSDN解释为:在字符串pstr中搜寻strCharsret中所出现的字符,返回strCharset中出现的第一个字符在pstr中的出现位置。简单的说,

2010-02-06 12:02:00 4054 4

原创 一天一个CRT函数 strchr

又过了好多天没有写这个系列了,哎,懒惰啊!今天太郁闷了,早上骑车上班时,被一辆小车突然打开的车门给绊倒了,还摔得不轻!strchr1.介绍MSDN上给出的解释是,找出字符串中指定的字符,返回第一个找到的字符位置的指针(即地址),如果没有找到则返回NULL。 1: /*** 2: char *strchr(string, chr) - search a str

2010-02-02 21:23:00 1554 2

原创 常见模板技术

这是在C++泛型编程(GP)时常常用到的技术,在工作学习中尽可以施展自己的才华。模板--一切皆有可能。1.隐藏参数细节模板代码和使用代码一般是这样: 1: templatetypename T> 2: class MyClass 3: { 4: private: 5: T m_val; 6:

2010-01-28 13:11:00 857

原创 整型映射和类型映射(节选自《Modern C++ Design》)

函数无法偏特化,但是却有重载。单从功能而言,重载是一个与偏特化相同的技术。 1: struct T1{}; 2: struct T2{}; 3: struct T3{}; 4:  5: void fun(T1 &fn); 6: void fun(T2 &fn); 7: void fun(T3 &fn);

2010-01-28 13:10:00 793

原创 一天一个CRT函数 _strdec

换操作系统了,Win7果然好用!而且对于每天12小时以上盯 着电脑的我来说,视觉感受也很重要!赞,一个字!来看看_strdec字符串函数吧,该函数比较两字符串,pStr1和pStr2必须指向同一source, 如果pStr2所指向pStr1的后面的字符,则返回pStr2前一个位置的字符地址,否则返回NULL。1.实现 1: /* 2: 比较两字符串,pS

2010-01-19 16:53:00 1558 2

原创 一天一个CRT函数 strcoll

来到重点介绍的章节了,String Manipulation。这个分类下的各函数都是处理以null-terminal结尾的字符串。来看看需要介绍的函数表strcoll按照指定locale设置比较两个字符串_strdec比较两字符串,返回指定字符串地址strcat把字符串加另一字符串strchr在字符串中寻找指定字符st

2010-01-15 14:38:00 1167

原创 一天一个CRT函数 __toascii tolower toupper

今天练习DataConversion剩余函数,涉及到abs、isascii、isspace、isdigit、isxdigit、iscntrl、isgraph、isprint、isalpha、isupper、islower、ispunct和toascii、tolower、toupper。厄,有点多,但是都很短小!也能从函数名知道该函数的作用(“顾名思义”)。1.实现 1: tem

2010-01-13 16:14:00 1147

原创 一天一个CRT函数 atoi

这一阵子真忙~年关将至,人也累死!前面已经说过,将字符串转换为数字其实就是做的字符串解析的工作,atoi也不例外。就是利用strtol函数来实现,若转换数字超过最大范围(LONG_MAX—LONG_MIN)则返回错误。原理如下:1)解析空格  tIsspace2)判断正负号  ‘-’or  ’+’3)strtol判断转换进制  16进制、8进制、10进制4)解析数字字符

2010-01-12 11:41:00 1483

原创 一天一个CRT函数 atof

很久没写这个系列了,干脆换个名字叫“N天一个系列”(0 二、Data Conversion 函数 作用 atof 把字符串转换为float型数字 atoi 把字符串转换为int型数字 atol 把字符串转换为lo

2010-01-12 09:57:00 2323

原创 WTL实践经验总结(不断更新)

学习WTL快半年了,但是实际工作中根本用不到。一是因为公司不允许,二是有效的资源还比较少。通常情况下,自娱自乐的时候我还是选择WTL来做界面。在这里,我把平时学习实践过程中的东西(思想)保留下来,供大家参考,也可以互相进步。 这篇文章可能会很长很长,但是划分了4个模块: 一.WTL的使用 二.WTL的结构 三.WTL的剖析 四.WTL的资源 五.WTL的项

2009-12-29 16:52:00 2195

异步HTTP组件

详情请见http://blog.csdn.net/chenyu2202863/article/details/7633610

2012-06-05

数据库访问异步检测

详情请见 http://blog.csdn.net/chenyu2202863/article/details/7554659

2012-05-10

ThreadPool

详情请看http://blog.csdn.net/chenyu2202863/article/details/6848806

2011-10-17

C++序列化组件

详情请看http://blog.csdn.net/chenyu2202863/article/details/6879013

2011-10-17

线程池实现二

Windows线程池实现,具体请看http://blog.csdn.net/chenyu2202863/

2011-10-07

MemoryPool

基于policy-based的内存池。 效率与boost pool略好,详情请见:http://blog.csdn.net/chenyu2202863/archive/2010/08/17/5818929.aspx

2010-08-21

Windows IOCP框架

这是一个IOCP框架,易扩展、易复用、易维护。 代码已有所变更,详情请看: http://blog.csdn.net/chenyu2202863/archive/2010/08/17/5818920.aspx

2010-08-17

RRDTool Windows

具体察看我的Blog: http://blog.csdn.net/chenyu2202863

2009-04-26

RRDTOOL_For_Windows

因为工作原因,彻底研究了下RRDTOOL,发现在Windows平台上应用并不广泛。于是自己借助C++封装了RRDTOOL的使用命令,这样就更能友好的在Windows上使用RRDTOOL了 请下载这个资源,里面有更多资料 http://download.csdn.net/source/1252213

2009-04-14

基于MFC的Mib文件解析

最近学习了SNMP的有关知识,整合了下已有的资源,借鉴了《开发基于SNMP的网络管理软件》一书中的MIB解析,利用职责链模式,对解析MIB的关键技术进行了封装,达到了较好的易复用,易维护、易扩展的需求。 提供的三个例子中前两个都是基于这套封装类的应用,后一个例子是一个单独的MIB解析类,具有参考价值~

2009-03-21

TaskManager

利用业余时间,写了个貌似windows自带的任务管理器(私下认为其功能更甚windows自带的)。 封装了许多API接口成为类(一些源自网络,一些自己封装),方便C++使用。但是对整个代码的设计比较烂,打算在学完设计模式后改写其中的框架,达到易复用,易维护,易扩展! 开发日志: 版本: 46 作者: YU_YU 日期: 19:04:44, 2009年2月8日 信息: 1.增加系统关机功能 ---- 已修改 : /TaskManager/DlgApplication.cpp 已修改 : /TaskManager/DlgProcess.cpp 已修改 : /TaskManager/DlgService.cpp 已修改 : /TaskManager/EnumNtSrv.cpp 已修改 : /TaskManager/EnumNtSrv.h 已修改 : /TaskManager/EnumProcess.cpp 已修改 : /TaskManager/EnumTaskWindow.cpp 已修改 : /TaskManager/EnumTaskWindow.h 已修改 : /TaskManager/TaskManager.cpp 已修改 : /TaskManager/TaskManager.h 已修改 : /TaskManager/TaskManager.rc 已修改 : /TaskManager/TaskManager.vcproj 已修改 : /TaskManager/resource.h 已增加 : /TaskManager/ExitWindows.cpp 已增加 : /TaskManager/ExitWindows.h 版本: 45 作者: YU_YU 日期: 23:20:13, 2009年2月6日 信息: ---- 已删除 : /TaskManager/Image/Disk_DVD1.png 已删除 : /TaskManager/Image/Disk_Hard1.png 已删除 : /TaskManager/Image/Disk_Network1.png 已删除 : /TaskManager/Image/Disk_Remove1.png 版本: 44 作者: YU_YU 日期: 23:18:55, 2009年2月6日 信息: ---- 已删除 : /TaskManager/res/XPStyle.manifest 版本: 43 作者: YU_YU 日期: 23:13:00, 2009年2月6日 信息: ---- 已修改 : /TaskManager/DlgService.h 已修改 : /TaskManager/EnumModule.cpp 已修改 : /TaskManager/EnumModule.h 已修改 : /TaskManager/EnumNtSrv.cpp 已修改 : /TaskManager/EnumNtSrv.h 版本: 42 作者: YU_YU 日期: 15:36:02, 2009年2月3日 信息: 1.增加服务的状态和类型控制 ---- 已修改 : /TaskManager/DlgService.cpp 已修改 : /TaskManager/DlgService.h 已修改 : /TaskManager/EnumNtSrv.cpp 已修改 : /TaskManager/TaskManager.rc 已修改 : /TaskManager/TaskManager.vcproj 已修改 : /TaskManager/resource.h 已增加 : /TaskManager/ico 已增加 : /TaskManager/ico/SERV.ico 版本: 41 作者: YU_YU 日期: 16:29:02, 2009年1月20日 信息: 1.修复移动不更新子控件bug ---- 已修改 : /TaskManager/XTabCtrl.cpp 版本: 40 作者: YU_YU 日期: 15:59:10, 2009年1月20日 信息: ---- 已增加 : /TaskManager/Image 已增加 : /TaskManager/Image/Disk_DVD1.png 已增加 : /TaskManager/Image/Disk_Hard1.png 已增加 : /TaskManager/Image/Disk_Network1.png 已增加 : /TaskManager/Image/Disk_Remove1.png 已增加 : /TaskManager/Image/Diak_Main.png 已增加 : /TaskManager/Image/Disk 已增加 : /TaskManager/Image/

2009-02-10

FlashThumb

类似于Flash浏览图片的一个控件,基于GDI+,派生自CStatic类,可以浏览硬盘里的图片目录

2008-11-25

空空如也

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

TA关注的人

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