TCP网络编程的本质
消息发送对于低流量的服务,倒也不必关心半事件。对于高流量的服务就不可以,因为流量太大会导致内核缓冲区满,那么用户层需要将剩余的消息暂时保存到用户自己的缓冲区中,等到文件描述符变得可写,再继续往里面写入消息。通常要我们自己设计一个 Buffer 来解决这个问题
面向对象和基于对象两种编程风格的区别
面向对象的编程风格会暴露抽象类,基于对象的编程风格不是暴露抽象类
流水线、乱序执行和缓存
为了提高指令执行的效率,指令之间没有数据依赖的话,可以乱序执行
左值、右值、亡值,纯右值,左值引用,右值引用
准确的来说,所有的引用,无论是左值引用还是右值引用,都是左值表达式。这是因为右值引用延长了右值的生命周期,我们可以去取右值引用的地址,因此它是个左值
CMake 和 GTest 结合
CMake 和 GTest 的结合使用,这东西还是得多实践,写单测是很重要的技能,让你更少的去调试。可以说调试是不得已才用的手段,尽量避免
火焰图
说实话,没怎么看出东西,以后肯定可以遇到更好的性能测试工具,慢慢探索
C++中的多态
我选择放弃弄清楚带虚函数的菱形继承——虚拟继承方式(多继承),希望没机会碰到它
代理模式
代理最好的体现是 Nginx 的反向代理功能,将客户端本该直接发给服务器 Server 的请求数据由自己接受之后转发给服务器 Server ,再把服务器 Server 本该直接返回给客户端的响应数据由自己接受之后转发给客户端
UML绘制工具:Visual Paradigm
反正,我觉得比 StartUML 好用,而且这是免费且支持中文
UML类图绘制
这对于学习 设计模式很有帮助,包括阅读代码时也有助益
1234518