C++
文章平均质量分 70
hyman_yx
这个作者很懒,什么都没留下…
展开
-
C/C++时间获取及格式化输出汇总
时间的存储结构一般有四种,time_t、struct tm、struct timeval、struct timespec。原创 2015-07-26 23:19:48 · 12293 阅读 · 1 评论 -
C++ 虚函数表解析
原文:《C++虚函数表解析》前言 C++中的虚函数的作用主要是实现了多态的机制。 关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。转载 2016-08-30 19:37:12 · 1509 阅读 · 2 评论 -
协程(三) 腾讯libco源码分析
腾讯的libco使用了hook技术,做到了在遇到阻塞IO时自动切换协程,(由事件循环co_eventloop检测的)阻塞IO完成时恢复协程,简化异步回调为相对同步方式的功能。其没有使用显示的调度器来管理所有协程(保存协程的相关数据),在协程切换及恢复之间主要依靠epoll_event.data.ptr来传递恢复协程所需的数据原创 2016-08-30 15:47:23 · 8194 阅读 · 1 评论 -
协程(二) 云风coroutine源码分析
云风的coroutine代码量少、简洁,非常适合用来入门协程。从中我们可以学习到协程的设计思路,例如控制权的传递、调度器的设计、协程栈的使用等概念。原创 2016-08-29 17:54:19 · 4010 阅读 · 0 评论 -
协程(一)快速理解协程的定义和分类
协程的概念很早以前就被提出,很多语言也实现了协程,例如Erlang,Lua。不过我首次接触协程是在学习golang的过程中,当真正使用协程的时候就被它的优雅和高效所折服,这也埋下了自己对协程好奇的种子。随着接触许多C++协程库,例如云风的coroutine、腾讯的libco、魅族的libgo等,很多当时模糊的概念也逐渐清晰。原创 2016-08-19 15:22:18 · 8164 阅读 · 0 评论 -
初探ZeroMQ(三) 发布-订阅模式中套结字总结
为什么说套结字类型? 因为通过分析套结字的类型,套结字的行为,我们可以更好的了解发布-订阅模式(PUB-SUB pattern)套结字类型简介: PUB 多播套结字,只能发送消息给SUB/XSUB,不能接收消息 XPUB 多播套结字,既能发送消息给SUB/XSUB,也可以接收来自XSUB的消息 SUB 接收套结字,只能接收来自PUB/XPUB的消息,不能发送消息 XS原创 2015-04-14 13:55:10 · 1312 阅读 · 0 评论 -
初探ZeroMQ(四) 管道模式中套结字总结
Overall Goals of this PatternThe pattern is intended for task distribution, typically in a multi-stage pipeline where one or a few nodes push work to many workers, and they in turn push results to one原创 2015-04-14 14:08:08 · 2401 阅读 · 0 评论 -
初探ZeroMQ(一)认识ZeroMQ
学习zeromq已经有段时间了,看了英文原版的zeromq guide,也看了网上对zeromq guide的译作(说实话吧,翻译质量真心不怎么高),还看了很多人写的博客.确实看了许多,学了许多,也有许多东西想记录下来.什么是zeromq先贴上一段wiki中对zeromq的说明”ØMQ (also spelled ZeroMQ, 0MQ or ZMQ) is a high-performance a原创 2015-04-14 11:18:31 · 1300 阅读 · 0 评论 -
初探ZeroMQ(五) 请求-响应模式的各种可靠性设计
参考资料:ØMQ - The Guide(英文) 参考资料:ØMQ - The Guide(中文) 本文是对ØMQ - The Guide 第四章 Reliable Request-Reply Pattern的整理和总结,具体代码实现请查阅ØMQ - The Guide .本文只讨论Request-Reply Pattern中的可靠性模式.原创 2015-04-03 18:06:03 · 2827 阅读 · 0 评论 -
初探ZeroMQ(二) 请求-应答模式中套结字总结
ZMQREQREPDEALERROUTER原创 2015-04-03 15:13:04 · 1136 阅读 · 0 评论 -
TCP中的7种定时器详解
TCP中的7种定时器:建立连接定时器、重传定时器、延迟应答定时器、坚持定时器、FIN_WAIT_2定时器、TIME_WAIT定时器原创 2016-08-01 15:54:47 · 7261 阅读 · 1 评论 -
解决 multiple definition of 问题
gcc编译multiple definition of问题解决方法,多个文件包含同一个头文件且头文件.h没有加上条件编译。因为每个.h头文件被编译生成独立的标示符,编译器链接时就出现了重复定义的错误。原创 2016-07-21 16:20:07 · 6633 阅读 · 0 评论 -
C++ STL容器迭代器失效
迭代器是封装了指针、重载了 -> 、* 、++等操作符的类模板。迭代器失效,指迭代器指向错误的元素或无效的内存地址。理解迭代器失效,首先要了解容器的内部数据结构、以及该容器存储新元素和删除旧元素时的内存状态。原创 2016-07-21 15:57:01 · 2807 阅读 · 0 评论 -
TCP之拥塞处理详解
网络拥塞现象是指到达通信网络中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象。拥塞控制是处理网络拥塞现象的一种机制。拥塞控制是一种用来调整传输控制协议(TCP)连接上单次发送的分组数量的算法,通过增减单次发送量逐步调整,使之逼近当前网络的承载量。原创 2016-07-29 15:52:39 · 3611 阅读 · 0 评论 -
RVO V.S. std::move
RVO(Return value optimization)及其在std::move中的应用转载 2016-07-27 13:44:15 · 853 阅读 · 0 评论 -
C++11 左值、右值、右值引用详解
左值、右值在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。原创 2016-07-27 13:27:58 · 40301 阅读 · 7 评论 -
C++11内存模型详解
C++内存模型可以被看作是C++程序和计算机系统(包括编译器,多核CPU等可能对程序进行乱序优化的软硬件)之间的契约,它规定了多个线程访问同一个内存地址时的语义,以及某个线程对内存地址的更新何时能被其它线程看见.原创 2016-08-15 10:28:29 · 7088 阅读 · 0 评论