随笔分类 -  C++

boost c++
2018年中国C++大会详细日程+报名
摘要:http://purecpp.org/detail?id=2050 阅读全文

posted @ 2018-11-13 10:29 qicosmos(江南) 阅读(1518) 评论(1) 推荐(2) 编辑

从一个例子看现代C++的威力
摘要:引子 最近准备重构一下我的kapok库,让meta函数可以返回元素为kv的tuple,例如: 类似这个META的实现我在msgpack的库里看到了,在这里: msgpack中仅仅是宏元的代码就数百行了,看起来非常复杂,msgpack之所以用这么复杂的方式去实现恐怕是为了支持c++98/03标准。本来 阅读全文

posted @ 2016-03-14 20:24 qicosmos(江南) 阅读(11391) 评论(3) 推荐(1) 编辑

C++11实现一个自动注册的工厂
摘要:实现动机 工厂方法是最简单地创建派生类对象的方法,也是很常用的,工厂方法内部使用switch-case根据不同的key去创建不同的派生类对象,下面是一个伪代码。Message* create(int type){ switch (type) { case MSG_PGSTATS:... 阅读全文

posted @ 2015-12-30 21:51 qicosmos(江南) 阅读(15333) 评论(10) 推荐(6) 编辑

REST RPC架构思想
摘要:1.REST RPC是什么? REST RPC是一个改进版的RPC架构,它是为了解决传统的RPC和REST方案的一些不足之处而生的,它结合了REST API和RPC的优点,同时又克服了REST API和RPC的缺点。我们先来看看传统的RPC和REST API方案的优点和一些不足之处。1.1RPC的... 阅读全文

posted @ 2015-12-04 15:04 qicosmos(江南) 阅读(6772) 评论(1) 推荐(0) 编辑

thinking in object pool
摘要:1.背景对象池为了避免频繁创建耗时或耗资源的大对象,事先在对象池中创建好一定数量的大对象,然后尽量复用对象池中的对象,用户用完大对象之后放回对象池。2.问题目前纵观主流语言的实现方式无外乎3个步骤:初始创建一定数量的对象池(也允许从外面添加对象)。从对象池中取对象来使用。用完之后返回对象池。一般情况... 阅读全文

posted @ 2015-11-25 17:05 qicosmos(江南) 阅读(3459) 评论(6) 推荐(0) 编辑

worksteal thread pool
摘要:worksteal的场景 对于一个线程池,每个线程有一个队列,想象这种场景,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,现象就是有的线程处于饥饿状态,而有的线程处于消化不良的状态,这时就需要一种方法来解决这个问题。需要worksteal,顾名思义就是任务窃取,当一个线程处于饥... 阅读全文

posted @ 2015-11-18 18:10 qicosmos(江南) 阅读(5022) 评论(0) 推荐(2) 编辑

check member function
摘要:templatestruct has_member_foo11{private: template static auto check(int) -> decltype(std::declval().foo(), std::true_type()); template static st... 阅读全文

posted @ 2015-11-02 13:58 qicosmos(江南) 阅读(1368) 评论(0) 推荐(0) 编辑

CHECK MEMBER TYPE
摘要:检查类里是否存在某种类型的几种方法,以检查xxx类型为例:方法1:templateclass has_member_type_Type{ struct big { char a[2]; }; template static big probe(typename C::xxx*); //... 阅读全文

posted @ 2015-11-02 10:14 qicosmos(江南) 阅读(1503) 评论(1) 推荐(0) 编辑

C++14 make code cleaner
摘要:在C++11中我们如果要写一个通过tuple实现函数调用的函数要这样写: template struct IndexTuple{}; template struct MakeIndexes : MakeIndexes {}; template struct ... 阅读全文

posted @ 2015-10-28 09:47 qicosmos(江南) 阅读(1244) 评论(0) 推荐(1) 编辑

根据元素类型获取tuple中的元素
摘要:最近做cinatra遇到这样的需求,根据一个type来获取对应的第一个元素,需要注意的一个问题是,如果没有这个类型的时候,通过编译期断言提醒使用者,实现代码如下:1.C++14实现template struct indexOf;template struct indexOf{ static c... 阅读全文

posted @ 2015-10-21 13:42 qicosmos(江南) 阅读(3470) 评论(0) 推荐(0) 编辑

c++11 输出时间
摘要:C++11中输出当前时间最直接的方法: 这种方法可以输出年月日时分秒,不过却不能输出毫秒,如果要输出毫秒需要用下面的方法: 将绝对时间转换为标准时间字符串的方法: 阅读全文

posted @ 2015-09-09 18:50 qicosmos(江南) 阅读(8735) 评论(2) 推荐(1) 编辑

我的开源项目和部分技术文章索引
摘要:我的书《深入应用C++11--代码优化与工程级应用》 我在github上的开源项目 高性能易用的http server cinara 高性能易用的c++ web开发框架feather 高性能易用的RPC框架REST_RPC 基于编译期反射的序列化引擎 基于编译期反射的ORM引擎高性能易用的http 阅读全文

posted @ 2015-08-31 10:46 qicosmos(江南) 阅读(7996) 评论(3) 推荐(4) 编辑

C++11实现一个轻量级的AOP框架
摘要:AOP介绍 AOP(Aspect-Oriented Programming,面向方面编程),可以解决面向对象编程中的一些问题,是OOP的一种有益补充。面向对象编程中的继承是一种从上而下的关系,不适合定义从左到右的横向关系,如果继承体系中的很多无关联的对象都有一些公共行为,这些公共行为可能分散在不同... 阅读全文

posted @ 2015-08-31 10:13 qicosmos(江南) 阅读(11799) 评论(10) 推荐(5) 编辑

C++11模版元编程的应用
摘要:1.概述 关于C++11模板元的基本用法和常用技巧,我在程序员2015年2月B《C++11模版元编程》一文(后称前文)中已经做了详细地介绍,那么C++11模版元编程用来解决什么实际问题呢,在实际工程中又该如何应用呢?本文将侧重介绍C++11模板的一些具体应用,向读者展示模版元编程的具体应用。 我... 阅读全文

posted @ 2015-08-31 09:54 qicosmos(江南) 阅读(8850) 评论(0) 推荐(0) 编辑

CINATRA发布第一个版本
摘要:cinatra是什么?cinatra是C++开源社区–purecpp发起的一个开源项目,现在正式发布第一个版本cinatra0.9.0,cinatra是一个现代C++写的webframework,它的目的是给用户提供一个易用、灵活和高性能的web框架,让用户能完全专注于核心逻辑而无需关注http细节... 阅读全文

posted @ 2015-08-06 14:38 qicosmos(江南) 阅读(4498) 评论(1) 推荐(1) 编辑

专访图书作者祁宇:C++11让程序更简洁、更现代、更强大
摘要:日前CSDN采访了祁宇,请他解读C++11的新标准、C++的现状以及未来的发展前景。CSDN:怎么会想到编写《深入应用C++11:代码优化与工程级应用》这本书的?有没有什么故事可以分享下?祁宇:我作为比较早使用C++11的开发者,在项目中应用C++11的时候,可以查阅的资料还很有限,主要是通过ISO... 阅读全文

posted @ 2015-08-06 14:32 qicosmos(江南) 阅读(3551) 评论(0) 推荐(0) 编辑

《深入应用C++11:代码优化与工程级应用》勘误表
摘要:《深入应用C++11:代码优化与工程级应用》勘误表,会不断更新,欢迎读者留言或发邮件(cpp11book@163.com)给我提出宝贵意见。 1.第7.3节目录final和override关键字应该改为标识符; 这个问题由园友“李奥霍克”和“Cu2S”指出, 在此表示感谢。 2.page 156,  阅读全文

posted @ 2015-06-08 22:43 qicosmos(江南) 阅读(7255) 评论(36) 推荐(3) 编辑

新书《深入应用C++11:代码优化与工程级应用》出版,感谢支持
摘要:经过一年的编写,这本书终于和大家见面了, 已经由机械工业出版社出版,希望本书能给学习C++尤其是C++11的朋友们更多的帮助。关于C++11 在StackOverflow的最近一次世界性调查中,C++11在所有的编程语言中排名第二, C++11受到程序员的追捧是毫不意外的,因为它就像C++之父... 阅读全文

posted @ 2015-06-04 13:06 qicosmos(江南) 阅读(8615) 评论(60) 推荐(9) 编辑

c++11实现一个简单的lexical_cast
摘要:boost中有一个lexical_cast可以用统一的方式来做基本类型之间的转换,比如字符串到数字,数字到字符串,bool和字符串及数字之间的相互转换。boost::lexical_cast的用法比较简单:#include #include #include #define ERROR_LEX... 阅读全文

posted @ 2015-05-28 21:48 qicosmos(江南) 阅读(4850) 评论(0) 推荐(0) 编辑

应该用bind+function取代虚函数吗?
摘要:用bind+function取代虚函数在好几年前就有人提出了,曾引起广泛的讨论,有支持的有反对的,可能赞成的人占大多数。这个话题挺有趣,本来是作为技术沙龙的开放性话题来讨论的,由于时间关系并没有讨论。今天就来具体探讨一下这个问题,我将做两个实验来验证一下这两种做法,具体是实现两个模式:策略模式和责任... 阅读全文

posted @ 2015-05-25 14:36 qicosmos(江南) 阅读(5961) 评论(3) 推荐(4) 编辑

导航