仿sylar: C++高性能分布式服务器框架的基于C++17实现的高性能服务器框架。
参考资料:
- C++高性能服务器框架 – SYLAR – 02日志模块 – sylar的博客
- C++_古猜..的博客-CSDN博客
- 日志模块 - 类库与框架 - 程序员的自我修养 (midlane.top)
- sylar C++高性能服务器框架——日志模块 - 掘金 (juejin.cn)
本项目编译生成静态库 libconet.a
,测试代码在tests下面。
- 日志模块
LogEvent
:封装后的日志消息(即日志的元数据)LogFormatter
:日志格式化器LogAppender
:日志输出器StdoutLogAppender
:标准输出日志输出器FileLogAppender
:文件日志输出器
Logger
:日志器,组合使用上述组件LogConfig
:日志器配置信息类LogAppenderConfig
:日志输出器的配置信息类LogEventWrapper
:日志的RAII风格打印(析构时打印日志)
- 配置模块
1.方法论
1.1如何阅读这个大型项目
(1)先建好环境,让程序能运行,玩一遍
当你拿到一个程序后,即使你不看代码,你也应该知道它是干什么的吧!干啥都不知道,不用看了。
(2)看想办法掌握程序的结构
作者微博、Google、百度、PDSN、等找到程序的体系结构,完整的文档
(3)先体系再细节;先平面再线点。
先整体再局部,先平面再线点。"大胆猜测,小心求证"。在阅读程序的过程中,我们往往对某一处或几处逻辑不肯定,可能是这样,也可能是那样。
(4)断点调试、日志调试。
(5)忽略细节,先前不要关注分支
Main开始一字一句的解读,遇到一个问题,直到他认为这个问题已经处理不再是个问题的时候,才进行下一步。
这是一个做事方法问题:这样无疑会导致整个进度的延缓。若我们一开始只关注整体结构(一个宏观的大概的流程),而忽略掉那些细支末节,则很有利。
那些可以忽略呢?
如有些函数一看函数名便知道是干什么的,没有要一开始便深入。
有些系统中的分支(如某此特殊场景下才执行的逻辑)、不重要的功能,则一扫而过
(6)其它
善用搜索引擎
先整体再局部,先宏观再微观,先流程再细节。
1.2.如何阅读大型项目的C++代码
章节0:了解文档
要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白。
其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是什么玩意,至少要把代码的整体结构搞清楚:整体架构如何,有几个模块,模块间通信方式,运行环境,构建工具等等。如果只关注一部分,重点关注将会属于你的模块,其他代码了解下即可
章节1:熟悉语法
熟悉C++语法与新特性
熟悉命名规范(变量 函数 类等) ->快速了解作用及含义, 有时通过名字可以看出设计模式等 不用深入探索源码也能知道含义 有文档说明最好 没有也可以靠时间与经验发掘.
章节2:摸清架构(需要拆细)
自上而下,了解全貌而非细节, 了解整个系统架构, 重点关注属于你的模块.
章节3:熟悉工具
熟悉相应的生成/测试工具 编译脚本等, 方便熟悉程序整体功能/流程.
章节4:细看模块(接口 算法需要拆细)
找到程序入口,自上而下抽丝剥茧.
章节5:输出产物
有目的性的阅读可以提高干劲,提前讨论好需要输出/补充的内容,按要求补充/输出成果物.
2.sylar项目的运行:
https://www.midlane.top/wiki/pages/viewpage.action?pageId=16416843
按照这个老哥的配置先把这个老哥的项目跑起来(这个项目跟sylar老师讲的差不多)
注意Boost和yaml-cpp的安装,其他安装照上面老哥的来
ubuntu下Boost安装:https://blog.csdn.net/qq_36666115/article/details/131015894
ubuntu下yaml-cpp安装与使用:https://www.cnblogs.com/zwjason/p/17031701.html
3.项目的流程或者结构理解:
作者主页:http://www.sylar.top
参考2:https://www.midlane.top/wiki/pages/viewpage.action?pageId=16416843
参考3:流程的理解,感觉这个会好一点:https://juejin.cn/post/7241821748211777593#heading-51
- [] 为什么用shared_ptr不用unique_ptr