CAP 与 BASE 理论
分布式系统中必知的两个基础理论
move函数的本质
move 只是把左值强制转换为右值引用,进而触发待移动对象的移动语义。如果待移动对象没有实现移动语义,就会走拷贝语义。可见 move 并不会窃取资源,实际要看待移动对象的自身情况
C++杂谈(一)
杂谈系列是对 C++ 语法的回顾与补充
timefd介绍
使用 timerfd 创建出的定时器是基于文件描述符进行管理的,在达到超时时间时,描述符将置为可读,并可以从中读取到超时次数
TCP网络编程的本质
消息发送对于低流量的服务,倒也不必关心半事件。对于高流量的服务就不可以,因为流量太大会导致内核缓冲区满,那么用户层需要将剩余的消息暂时保存到用户自己的缓冲区中,等到文件描述符变得可写,再继续往里面写入消息。通常要我们自己设计一个 Buffer 来解决这个问题
面向对象和基于对象两种编程风格的区别
面向对象的编程风格会暴露抽象类,基于对象的编程风格不是暴露抽象类
流水线、乱序执行和缓存
为了提高指令执行的效率,指令之间没有数据依赖的话,可以乱序执行
左值、右值、亡值,纯右值,左值引用,右值引用
准确的来说,所有的引用,无论是左值引用还是右值引用,都是左值表达式。这是因为右值引用延长了右值的生命周期,我们可以去取右值引用的地址,因此它是个左值
CMake 和 GTest 结合
CMake 和 GTest 的结合使用,这东西还是得多实践,写单测是很重要的技能,让你更少的去调试。可以说调试是不得已才用的手段,尽量避免
火焰图
说实话,没怎么看出东西,以后肯定可以遇到更好的性能测试工具,慢慢探索
123417