
muduo库
文章平均质量分 84
binary~
所有的努力最终都会绕个大圈回报给你。
展开
-
muduo库中实现Protbuf编码器与消息分发器
(因为很多场景下并不需要消息的长度和类型,所以protobuf序列化并没有包含这些,若在某些需要的场景下,可以在用户层自己实现就可以)根据规定好protobuf的传输格式,就可以进行书写了,过程十分简单,照着传输格式一步一步来就行。消息类型有很多种,服务器需要根据不同的消息类型去调用不同的回调处理函数,这就是消息分发器的用处。接收消息时,将Buffer根据自定义的protobuf传输格式,转化为message对象。因为一系列因素,protobuf的默认序列化格式是没有包含消息的长度和类型的。原创 2022-11-26 20:34:38 · 1170 阅读 · 0 评论 -
muduo库的高性能日志库(五)——AsyncLogging文件
这一部分就是muduo库之所以十分高效的原因,将前端与后端联系起来,实现了多生产者单消费者的异步网络日志库。在多线程服务器程序当中,是必须的,因为如果在网络IO线程或业务线程中直接往磁盘写数据的话,写操作偶尔可能阻塞长达数秒之久。这可能导致请求方超时,或耽误发送心跳消息,在分布式系统过更可能发生连锁效应。因此在正常的实现业务处理流程中应该彻底避免磁盘IO,这在模型的非阻塞服务端程序中尤为重要。原创 2022-11-21 08:25:26 · 507 阅读 · 0 评论 -
muduo库的高性能日志库(四)——LogFile文件
1. 在AppendFile类在构造时将文件的默认缓冲区设置为本地缓冲区 ```为什么要这样做?能带来什么样的性能优势?``` 2. AppendFile中写函数采用的是fwrite_unlock函数,非线程安全的写函数,在LogFile设计写的时候又设计成是否使用互斥锁,调用AppendFile中的append函数。 ```为什么不直接采用线程安全的fwite函数?这样的做的优势体现在哪?```原创 2022-11-19 22:24:08 · 1196 阅读 · 0 评论 -
muduo库的高性能日志库(三)——Logging文件
接下看一下Logging文件,该文件主要负责全局日志级别,输出目的地设置Logger内有两个内部类SourceFile,主要负责获取文件名Impl,实际用于日志消息的处理类。原创 2022-11-17 22:04:15 · 686 阅读 · 0 评论 -
muduo库的高性能日志库(二)——LogStream文件
该文件下有三个类如下图所示复杂的C/C++代码很可能会包含错误,并且在编写代码后尝试对其进行测试类似于在大海捞针。一种更审慎的方法是通过添加专门针对特定区域的小型(单元)测试来测试编写的各个代码段,例如,一些计算密集型C函数或某些C++类声称对某个数据结构进行建模,例如队列。然后,以此理念构建的回归套件将具有单元测试的集合以及运行测试并报告结果的测试驱动程序。原创 2022-11-17 11:46:17 · 1074 阅读 · 0 评论 -
muduo库的高性能日志库(一)
日志”即文本,供人阅读的日志,通常用于故障诊断和追踪,也用于性能分析服务端编程,日志必不可少,生产环境中应做到"Log Everything All The Time"。muduo日志库采用C++的stream原创 2022-11-16 19:48:07 · 700 阅读 · 1 评论