随笔分类 -  C++11工程实践

c++11实战
(原创)发布一个C++版本的ORM库SmartDB(一)
摘要:先简单说说ORM的优点:提高开发效率,减少重复劳动,只和业务实体打交道,由业务实体自动生成sql语句,不用手写sql语句。简单易用, 可维护性好。隔离数据源,使得我们更换数据源时不用修改代码。SmartDB基础库 java和c#中有很多ORM框架,如c#中的entity framework、Linq to Sql、NHibernate等,java中有Hibernate、Mybatis等等,其它各种开源的ORM库多如牛毛。这应该得益于托管语言在这方面的优势。然而,c++的世界中,却鲜有ORM框架,c++中比较知名的ORM库应该是ODB了,但是ODB的使用比较麻烦,需要三个库,写的ORM代码还需. 阅读全文

posted @ 2013-09-27 01:17 qicosmos(江南) 阅读(6878) 评论(13) 推荐(3) 编辑

(原创)C++半同步半异步线程池
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。线程池可以高效的处理任务,线程池中开启多个线程,等待同步队列中的任务到来,任务到来多个线程会抢着执行任务,当到来的任务太多,达到上限时需要等待片刻,任务上限保证内存不会溢出。线程池的效率和cpu核数相关,多核的话效率更高,线程... 阅读全文

posted @ 2013-05-30 13:35 qicosmos(江南) 阅读(4587) 评论(0) 推荐(0) 编辑

(原创)C++ 同步队列
摘要:同步队列作为一个线程安全的数据共享区,经常用于线程之间数据读取,比如半同步半异步线程池的同步队列。其实做起来比较简单,要用到list、锁和条件变量,条件变量的作用是在队列满了或者空了的时候等待通知。先看一个简单的同步队列:#include #include #include #include #in... 阅读全文

posted @ 2013-05-30 13:24 qicosmos(江南) 阅读(3843) 评论(2) 推荐(1) 编辑

(原创) 一个通用的C++ 消息总线框架
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。应用开发过程中经常会处理对象间通信的问题,一般都是对象或接口的依赖和引用去实现对象间的通信,这在一般情况下是没问题的,但是如果相互通信的对象很多,可能会造成对象间的引用关系像蜘蛛网一样,这样会导致对象关系很复杂,难以维护的问题,解决这个问题的一个好方法是通过消息总线去解耦对象间大量相互引用的紧耦合的关系。设计思路:被通信对象向消息总线发布一个主题,这个主题包含消息主题、消息类型和消息处理函数,消息主题标示某个特定的主题,消息类型用来区分标示这个主题会响应某个特定的消息,消息处理函数用来响应该主题的某种消息类型。通信对象向 阅读全文

posted @ 2013-04-28 11:35 qicosmos(江南) 阅读(9266) 评论(2) 推荐(3) 编辑

(原创)C++ IOC框架
摘要:C++里面缺少一些有用的框架比如说AOP和IOC等,AOP框架的实现在前面的博文中已介绍了,现在介绍IOC框架。IOC即控制反转,它的思想是由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配置文件进行应用程序组件间相... 阅读全文

posted @ 2013-04-22 10:50 qicosmos(江南) 阅读(8153) 评论(7) 推荐(1) 编辑

(原创)一个log4cpp帮助类
摘要:引用log4cpp头文件和lib文件后,通过一个帮助类来输出日志,帮助类中定义了一些静态方法,实现日志的输出,使用起来很简单。代码如下:#include #include #include #include using namespace log4cpp;#include #include boost::once_flag g_call_once=BOOST_ONCE_INIT;class Logger : boost::noncopyable{private: Logger(void){} static void Init() { #if _DEBUG ... 阅读全文

posted @ 2013-04-15 14:03 qicosmos(江南) 阅读(1469) 评论(1) 推荐(0) 编辑

(原创) C++ 轻量级AOP框架
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。c++中开源的AOP框架AspectC++需要单独编译才能将切面的代码织入到核心逻辑代码中,感觉使用起来不方便,不能满足快速开发要求。我希望只要实现方法拦截即可,能织入before()和after()操作就行,不追求动态织入。思路是这样的,通过一个包装类,里面定义before()和after()方法,和->运算符重载方法,在重载操作函数中实现before()和after()操作。具体代码如下:BaseAspect 1 #include 2 3 template 4 class BaseAspect 5 { 6 pr 阅读全文

posted @ 2013-04-07 10:17 qicosmos(江南) 阅读(8138) 评论(5) 推荐(1) 编辑

导航