写这篇文章,是因为今天看到这样一个值得思考的问题,先给大家分享一下。
就是你读过的最好的 C++ 开源代码是什么?
对于这个问题,我觉得从不同的认知层面会给出不一样的答案。换句话来说就是,随着你学习的深入、学习的知识不断变多,工作的经验不断加深,在技术能力上慢慢提高的时候,你对于这个问题的答案也会随之改变。
比如我,在一开始学习C++的时候,我觉得我读过最好的开源代码就是STL源码。我觉得C++ STL源码它融入了数据结构的思想,而且它里面的迭代器的维护、类与类之间层层封装、复用的关系,是真的吸引我去研究和深思。
那么给大家推荐一个链接,这个是SGI STL版本。它包含了容器(如vector、list、map)、迭代器、算法和分配器等组件。这个版本的设计理念强调泛型编程和复用性,为后续的STL实现奠定了基础。现在虽然很多编译器不是直接用的这个版本,但是许多实现都是基于或受SGI STL的影响,例如GNU C++标准库(libstdc++)就是在SGI STL的基础上进行了改进和发展。
https://sgistl.github.io/download.html
那么后来,随着学习知识的不断深入,尤其是当学习了服务器等相关知识的时候,看了一些关于服务器相关的源码。那这个时候实际上对于代码的要求能力就很高了。但是当时也是兴趣驱动使然,看下来并且做下来了。
我当时看的是一个B站Up主的视频,它把它的源码的思路也都讲解了出来。
这个项目主要是从零开始开源出一套C++高性能服务器框架。他用自己的名字为这个项目命了名。他有5年的时间,从事游戏后台服务器开发,5年电商服务器后台开发经验(推荐系统,abtest,搜索系统,监控,效果分析等)。总而言之,看完之后,还是让我有很大收获的。
所谓很大收获,就是指在这中途遇到了许许多多的我不知道如何解决的困难,甚至我以前都不知道这些东西的存在,但是在实际落地、部署的时候又是非常重要的。可以说,是经历了一场蜕变。
而且它是从0开发的,所以对于像我当时那样的新手也比较的友好。
源码链接:https://github.com/sylar-yin/sylar
视频讲解链接:https://www.bilibili.com/video/av53602631
那么这是我有了一定语言基础之后,认为“最好的源码”。
那这一两年,又看了一些源码,个人觉得,谷歌的LevelDb和Facebook Folly这两个开源项目也非常地好。也是我现阶段认为非常好的C++开源代码。
那LevelDb是一个高性能的键值存储系统,专门设计用于存储大量的键值对数据,并确保这些数据能够被高效地读取和写入,是指谷歌两位顶级工程师发起的一个开源项目,它是一个能够处理大规模Key-Value型数据持久性存储的C++程序库。
这里把链接也分享给大家:
https://github.com/google/leveldb
那另外一个Facebook Folly项目,Folly 是 Facebook 推出的一个开源 C++ 库。这个库真的很不错,据说在脸书内部很流行。里面有不少实用的小工具,设计得既简洁又高效。Folly 不是为了取代 C++ 标准库,而是给它加点料,尤其是在处理大量数据的时候,能帮助提高程序的速度。
比如说,有一次我写程序需要一个线程安全的哈希表,但是 C++ 标准库里面没有现成的。结果我在 Folly 里找到了一个,不仅支持多线程访问,速度还特别快。另外,Folly 对字符串处理也做了优化,比标准库里的实现要快很多。
Facebook自己的话说:“在大规模应用环境中保持优秀的性能是贯穿 Folly 设计的核心主题。”
链接:https://github.com/facebook/folly
那关于这个问题,大家可能自己心中自己也有一定的答案哈哈。欢迎一起交流讨论~~~
end
CppPlayer
关注,回复【电子书】珍藏CPP电子书资料赠送
精彩文章合集
专题推荐
往期推荐:
面试题:C++标准、C++标准库、STL库这三者之间的关系是什么?