推荐值得学习的优秀C/C++开源项目

请注意,本文编写于 701 天前,最后修改于 172 天前,其中某些信息可能已经过时。

开源是一种文化,开源是一种精神,开源是一种态度.

概述

早前的行业圈子里一直流传着这样一段话:

To follow the path:(沿着这样一条道路:)

look to the master,(寻找大师,)

follow the master,(跟随大师,)

walk with the master,(与大师通行,)

see through the master,(洞察大师,)

become the master.(成为大师。)

开源软件极大的促进了世界IT领域的趋势和发展,这种情况随处可得,比如开源服务器系统Linux,数据库Redis,Web开发PHP,高性能服务器Nginx,移动操作系统Android,虚拟容器技术Docker,人工智能TensorFlow等......
开源是一种文化,开源是一种精神,开源是一种态度.

在开源世界中有许多优秀的开源项目,这里给出来自全球知名的开源项目、热度较高推荐口碑较好的资源,选取其中十八个最优秀的、轻/重量级的C/C++开源项目(排名不分前后),希望可以为C/C++开发人员提供参考及学习。

Tinyhttpd

项目地址:https://github.com/LippiOuYang/Tinyhttpd

tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。


cJSON

项目地址:https://sourceforge.net/projects/cjson/

cJSON是一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。


TensorFlow

项目地址:https://github.com/tensorflow/tensorflow

TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。


CMockery

项目地址:https://code.google.com/p/cmockery/downloads/list

cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。


Webbench

项目地址:https://github.com/LippiOuYang/WebBenchl

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。


Redis

项目地址:https://redis.io/

Redis 是一个使用 C 语言写成的,开源的 key-value 数据库。Redis支持的操作和数据类型比Memcached要多,现在主要用于缓存,支持主从同步机制.


Memcched

项目地址:http://memcached.org/

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。


Libevent

项目地址:https://github.com/libevent/libevent

libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。


UNIX v6

项目地址:https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6

一般市面上商用的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万行。就算不是初学者,想完全理解全部代码基本上也是不可能的。UNIX V6 的内核源代码包括设备驱动程序在内 约有1 万行,这个数量的源代码,初学者是能够充分理解的。有一种说法是一个人所能理解的代码量上限为1 万行,UNIX V6的内核源代码从数量上看正好在这个范围之内。


SGI

项目地址:https://www.sgi.com/tech/stl/download.html

SGI STL是STL代码的经典实现版本,虽然很多编译器不直接使用这个版本,但是很多却在此基础之上进行改进的。比如GNU C++的标准库就是在此基础之上改进的。这份代码还有一个好处是有注释,代码书写非常规范,只要花些时间读懂它并非难事。


Muduo

项目地址:https://github.com/chenshuo/muduo

muduo 是一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。


Hikyuu

项目地址:https://github.com/fasiondog/hikyuu

Hikyuu Quant Framework是一款基于C++/Python的开源量化交易研究框架,用于策略分析及回测。其核心思想基于当前成熟的系统化交易方法,将整个系统化交易抽象为由市场环境判断策略、系统有效条件、信号指示器、止损/止盈策略、资金管理策略、盈利目标策略、移滑价差算法七大组件,你可以分别构建这些组件的策略资产库,在实际研究中对它们自由组合来观察系统的有效性、稳定性以及单一种类策略的效果。


HP-Socket

项目地址:https://www.oschina.net/p/hp-socket

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。


ApolloAuto

项目地址:https://github.com/ApolloAuto/apollo

Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。Apollo 是百度重点打造的 AI 开放平台之一,计划主要包含 4 个技术模块:定位/感知模块、车辆规划与运营(AI+大数据,精准控制车辆,适合不同路况)、软件运营框架(支持英特尔、英伟达等多种芯片)。


ProxySQL

项目地址:https://github.com/sysown/proxysql

ProxySQL 是一个高性能,高可用性,的数据中间层项目。它具有先进的多核架构。 它从根本上构建,支持数十万个并发连接,复用到可能数百个后端服务器。 最大的 ProxySQL 部署跨越了几百个代理。


Ekho

项目地址:https://github.com/hgneng/ekho

Ekho(余音)是一个把文字转换成声音的软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。支持Linux、Windows、Android.


Seafile

项目地址:https://github.com/haiwen/seafile

Seafile 是一款安全、高性能的开源网盘(云存储)软件。Seafile 提供了主流网盘(云盘)产品所具有的功能,包括文件同步、文件共享等。在此基础上,Seafile 还提供了高级的安全保护功能以及群组协作功能。由于 Seafile 是开源的,你可以把它部署在私有云的环境中,作为私有的企业网盘。Seafile 支持 Mac、Linux、Windows 三个桌面平台,支持 Android 和 iOS 两个移动平台。


ngx-fastdfs

项目地址:https://gitee.com/qieangel2013/ngx-fastdfs

分布式图片实时动态压缩.ngx-fastdfs 是 nginx + lua +fastdfs 实现分布式图片实时动态压缩。

感谢你的阅读!转载请注明出处!

Comments

添加新评论