大中型开源C++项目推荐,大厂出品,必属精品
大中型开源C++项目推荐,大厂出品,必属精品
之前推荐的开源项目都是比较小型的,适合新手学习和快速套用,而且因为我目前从事于Qt开发,所以很多项目又是和Qt相关的。今天,我准备推荐一些大中型的项目,这些项目大多都是大厂出品,包括google、facebook、百度等。代码质量非常高,当然,难度也会更大,不是一下子就可以完全吃透的,大家可以先收藏,后面慢慢消化。
Folly
https://github.com/facebook/folly
Folly是Facebook open source library的缩写,是 Facebook 的一个开源 C++11 组件库,提供了类似 Boost 和 std 库的功能。包括散列、字符串、向量、内存分配、位处理等,满足大规模高性能的需求。
Folly对大规模高性能有很多支持,可谓这方面的基础库标杆。虽然STL BOOST性能已经上乘,但能有Folly这样对large-scale 的软件 performance近乎变态的追求的,还是比较少见,而且显然是industry-level的。在这方面是对STL与BOOST的有效补充。
另外,不得不提一下,领导Folly库的核心人物是C++社群的大神Andrei Alexandrescu,玩过C++的朋友,应该都知道Andrei的鼎鼎大名。《Modern C++ Design》,和Jolt大奖图书《C++ Coding Standards》的作者。开创了Modern C++ 代码风格的鼻祖。也是D语言之父。
LevelDb
https://github.com/google/leveldb
Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。
- Google出品,遵循Google C++编码规范。
- 作者是Jeff Dean大神,他的主要作品有MapReduce、BigTable等。
- 涉及查找、缓存、文件读写、多线程、跨平台等诸多常见问题。
- 最新版本1.15.0代码量也不到2万行。
- 基础的key-value数据库,广泛用于Google内部和许多开源项目。
LLVM
https://releases.llvm.org/
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。
LLVM计划启动于2000年,最初由美国UIUC大学的Chris Lattner博士主持开展。2006年Chris Lattner加盟Apple Inc.并致力于LLVM在Apple开发体系中的应用。Apple也是LLVM计划的主要资助者。
目前LLVM已经被Apple、Microsoft、Google、Facebook等各大公司采用。
BRPC
https://github.com/apache/incubator-brpc
百度内最常使用的工业级RPC框架,有1,000,000+个实例(不包含client)和上千种多种服务,在百度内叫做"baidu-rpc"。
你可以使用它:
- 搭建能在一个端口支持多协议的服务, 或访问各种服务restful http/https, h2/gRPC。使用brpc的http实现比libcurl方便多了。从其他语言通过HTTP/h2+json访问基于protobuf的协议.redis和memcached, 线程安全,比官方client更方便。rtmp/flv/hls, 可用于搭建流媒体服务.hadoop_rpc(可能开源)支持rdma(即将开源)支持thrift , 线程安全,比官方client更方便各种百度内使用的协议: baidu_std, streaming_rpc, hulu_pbrpc, sofa_pbrpc, nova_pbrpc, public_pbrpc, ubrpc和使用nshead的各种协议.基于工业级的RAFT算法实现搭建高可用分布式系统,已在braft开源。
- Server能同步或异步处理请求。
- Client支持同步、异步、半同步,或使用组合channels简化复杂的分库或并发访问。
- 通过http界面调试服务, 使用cpu, heap, contention profilers.
- 获得更好的延时和吞吐.
- 把你组织中使用的协议快速地加入brpc,或定制各类组件, 包括命名服务 (dns, zk, etcd), 负载均衡 (rr, random, consistent hashing)
SGI STL
http://labmaster.mi.infn.it/Laboratorio2/serale/www.sgi.com/tech/stl/download.html
STL的sgi(Silicon Graphics Computer System,Inc) 版本,同时也是声名最盛的一个STL版本,该版本被纳为GNU C++标准程序库。
Unreal Engine
https://www.unrealengine.com/zh-CN/ue4-on-github
大名鼎鼎的虚幻引擎也开源了,不过小编我是不打算去看的,那么大规模的软件项目,实在是自己 能力有限,驾驭不了,大佬们可以试一试。
SQLite
https://www.sqlite.org/index.html
是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2020年已经有20个年头,SQLite 3已经发布。
Redis
http://www.redis.cn/
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
Redis 是一个内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
MongoDB
https://github.com/mongodb/mongo/
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Node.js
https://github.com/nodejs/node
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。
Node.js是使用C++语言开发编写的,Node.js底层是C++(V8也是C++写的)。