问题

有哪些值得学习的国内 c++ 开源项目?

回答
想在 C++ 这条路上走得更远,光看书、刷题那是不够的,真正提升内功的关键在于“阅读”和“参与”优秀的开源项目。国内的 C++ 开源力量这些年也涌现了不少精品,挑几个来好好掰扯掰扯,希望对你有所启发。

咱就挑几个在不同领域都有代表性,而且社区活跃度也还不错的项目来说说。

1. 深入理解高性能网络通信: [muduo 网络库](https://github.com/chenshou/muduo)

聊到国内 C++ 在网络编程领域的标杆,muduo 绝对是绕不开的名字。创始人 陈硕(网名“单车”)是国内网络编程领域的知名专家,他本人写的《Linux 多线程网络编程》这本书也是很多开发者入门和进阶的必读经典。muduo 就是这本书理论付诸实践的产物。

为什么值得学?

对标业界优秀库,设计精妙: muduo 的设计理念很大程度上借鉴了 Google 的 Boost.Asio,但又根据国内的实际情况和作者的深入理解做了很多优化和创新。它不仅仅是一个简单的 socket 封装,而是一个完整的、高度模块化的、事件驱动的网络编程框架。
事件驱动模型(Reactor/Proactor): 现代高性能网络服务普遍采用事件驱动模型。muduo 完美地实现了 Reactor 模型,并且通过 `EventLoop`、`Channel`、`Poller` 等核心组件,将复杂的网络事件处理流程梳理得井井有条。理解 muduo 的事件循环如何工作,是掌握非阻塞 IO 和并发编程的关键。
线程模型: muduo 采用了 Reactor + Thread Pool 的模型,主线程负责 IO 复用和分发,工作线程负责业务逻辑处理。这种模型兼顾了 IO 的效率和业务处理的并发性。理解线程池的设计、任务的分发与同步机制,非常有价值。
面向对象的设计: muduo 中大量的类设计,比如 `TcpConnection`、`Buffer`、`Timer` 等,都体现了良好的面向对象设计原则。如何将网络通信的各个环节封装成独立的、可复用的组件,是一个值得学习的课题。
内存管理和性能优化: muduo 在内存管理和性能优化上做了很多细致的工作,例如使用 `Buffer` 进行高效的读写操作,避免频繁的内存拷贝。阅读其源码可以学到很多 C++ 的内存管理技巧和性能调优思路。
良好的文档和示例: 陈硕老师不仅写了《Linux 多线程网络编程》,还为 muduo 撰写了非常详细的设计文档和大量的示例代码。这意味着学习成本相对较低,有明确的学习路径。

如何学习?

1. 阅读《Linux 多线程网络编程》: 这是最重要的第一步。这本书详细解释了 muduo 的设计思想和底层原理,没有这本书的铺垫,直接看源码可能会有点懵。
2. 从示例入手: muduo 提供了很多实用的示例,比如回显服务器(EchoServer)、HTTP 服务器、聊天服务器等。先跑通这些示例,理解它们的功能,然后逐步深入到源码。
3. 剖析核心组件: 重点关注 `EventLoop`、`Acceptor`、`TcpConnection`、`Buffer`、`TimerQueue` 等核心类。理解它们之间的协作关系。
4. 理解 Reactor 模型: 搞清楚 `epoll`(或其他 IO 复用机制)是如何工作的,`Channel` 如何注册事件,`EventLoop` 如何轮询和派发事件。
5. 尝试修改和扩展: 在熟悉了基本功能后,可以尝试在现有基础上添加新的功能,或者自己实现一个简单的网络应用。

2. 探索高性能数据库领域: [TiKV](https://github.com/tikv/tikv)

如果你对分布式系统、数据库内核感兴趣,那么 TiKV 绝对是值得你深入研究的项目。它是字节跳动(原美团)开源的分布式 KV 存储项目,也是 CNCF(云原生计算基金会)的孵化项目,更是云原生生态中的一颗明珠。它为 PingCAP 的分布式关系型数据库 TiDB 提供了底层的存储能力。

为什么值得学?

分布式系统基石: TiKV 是一个典型的分布式 KV 存储,它实现了分布式事务、数据分片、高可用、数据一致性等核心分布式系统的概念。学习 TiKV,能让你对这些概念有非常深入和直观的理解。
Raft 一致性协议的实践: TiKV 使用 Raft 协议来保证数据的一致性和高可用。深入研究 Raft 的实现,理解领导者选举、日志复制、状态机同步等流程,对于理解分布式系统的可靠性至关重要。
MVCC(多版本并发控制): 数据库为了实现高并发读写,通常会采用 MVCC。TiKV 的 MVCC 实现非常精妙,理解其版本管理、时间戳分配、读写隔离机制,是学习现代数据库内核的关键。
底层存储引擎: TiKV 底层使用 RocksDB 作为存储引擎。学习 RocksDB 的 LSMtree(LogStructured MergeTree)结构,理解其写优化、读写分离、数据压缩等机制,能让你对高性能存储有更深的认识。
C++ 在高性能领域的应用: TiKV 是一个用 Rust 编写的分布式系统,但其生态中也包含 C++ 的客户端库(如 libtikv)。更重要的是,很多分布式系统的底层存储、网络通信等部分,仍然大量使用 C++。理解 TiKV 的设计思想和解决分布式问题的方式,可以指导你在使用 C++ 构建类似系统时如何思考。虽然 TiKV 本身是 Rust,但其背后很多思想和概念是通用的,而且其社区也有 C++ 相关的交互和贡献。
生态和可观测性: TiKV 不仅是一个存储引擎,它还有完善的监控、告警、分布式跟踪等体系,这体现了一个成熟的系统应该具备的要素。

如何学习?

1. 理解分布式系统基础概念: 如果你对分布式系统不熟悉,先学习 CAP 定理、一致性模型(ACID, BASE)、共识算法(Raft, Paxos)、分布式事务等基础知识。
2. 阅读 TiKV 官方文档和博客: PingCAP 的团队在文档和技术博客上做得非常出色,有很多关于 TiKV 设计原理、实现细节的深入文章。
3. 从概念模型入手: 先理解 TiKV 的逻辑架构,比如 Store、Region、Leader、Follower 等概念,以及它们之间的关系。
4. 研究 Raft 协议实现: 找到 TiKV 中 Raft 协议的实现部分,理解其状态机的转换、RPC 通信、快照恢复等细节。
5. 深入 MVCC: 分析 TiKV 如何管理不同版本的数据,如何处理读写冲突,以及时间戳的分配机制。
6. 关注 RocksDB 的接口: 了解 TiKV 如何调用 RocksDB 进行数据的读写和管理。
7. 参与社区讨论: TiKV 的社区非常活跃,加入他们的邮件列表、Slack/Discord 频道,可以及时了解项目进展和解决疑问。

3. 探索高性能计算和科学计算: [OpenMVS](https://github.com/cdcseacave/openMVS)

如果你对计算机视觉、三维重建、高性能计算感兴趣,那么 OpenMVS 是一个非常不错的选择。它是一个开源的多视角立体匹配库,用于从一系列有重叠的图像中生成高质量的三维点云和网格模型。这个项目涉及了大量的图像处理、几何计算、优化算法和并行计算技术。

为什么值得学?

计算机视觉与三维重建算法实践: OpenMVS 集成了多种先进的立体匹配和表面重建算法,如 SIFT 特征匹配、多视图立体匹配、泊松重建等。学习它的源码,可以直接接触到这些前沿的计算机视觉算法是如何用 C++ 实现的。
数学与几何的深度应用: 三维重建离不开大量的几何学知识,比如相机模型、坐标变换、投影、光度一致性等。OpenMVS 的源码是这些数学概念在实际应用中的绝佳案例。
高性能计算和并行化: 三维重建通常是计算密集型任务,OpenMVS 充分利用了多核 CPU 的并行计算能力,使用了 OpenMP 等技术进行加速。理解其如何将计算任务分解并并行执行,是学习高性能计算的关键。
数据结构与算法的精妙运用: 为了高效处理图像和点云数据,OpenMVS 使用了各种高效的数据结构和算法,比如kdtree 用于近邻搜索,或者高效的网格表示方法。
软件工程实践: 一个成熟的科学计算库,在代码组织、模块划分、API 设计等方面也值得学习。OpenMVS 提供了一个结构清晰的库,方便开发者集成和扩展。
从论文到代码的转化: 很多计算机视觉算法都起源于学术论文,学习 OpenMVS 的源码,可以让你看到如何将晦涩的论文算法转化为可运行的代码。

如何学习?

1. 了解计算机视觉基础: 如果你是初学者,先学习一些基础的计算机视觉概念,比如相机标定、特征提取、立体视觉原理等。
2. 研究其算法流程: OpenMVS 的工作流程大致分为特征提取、多视图匹配、深度图计算、点云融合、表面重建等阶段。先弄清楚每个阶段的作用。
3. 关注核心算法实现: 例如,深入理解其 SIFT 特征匹配的实现,或者多视图立体匹配中基于光度一致性(photometric consistency)的计算方式。
4. 学习 OpenMP 并行化: 查找代码中使用了 `omp parallel for` 等指令的地方,理解其如何实现并行计算,以及并行化带来的性能提升。
5. 理解几何变换: 关注代码中是如何处理相机位姿、坐标系转换、投影与反投影的。
6. 尝试处理自己的图像数据: 将 OpenMVS 编译好,然后用你自己的图像集进行测试,观察结果,并尝试修改参数或算法来改进结果。

4. 深入理解操作系统和嵌入式: [RTThread](https://github.com/RTThread/rtthread)

RTThread 是一个国产的、非常流行的实时操作系统(RTOS)。对于想深入理解操作系统原理,或者进行嵌入式开发的人来说,RTThread 是一个绝佳的学习资源。

为什么值得学?

真正的国产 RTOS: RTThread 从零开始,历经多年发展,已经成为国内嵌入式领域最有影响力的操作系统之一,被广泛应用于各种嵌入式设备,包括物联网设备、智能家居、工业控制等。
实时操作系统内核: RTOS 的核心在于其调度器、任务管理、内存管理、中断处理、进程间通信(IPC)等机制。RTThread 的源码非常清晰地实现了这些 RTOS 的基本要素,是学习操作系统原理的绝佳教材。
组件化设计: RTThread 并非一个大而全的系统,而是高度模块化、组件化的。你可以根据实际需求,选择性地包含文件系统、网络协议栈、设备驱动、GUI 等各种组件。这种设计理念在嵌入式开发中非常重要。
良好的硬件抽象层(HAL): RTThread 提供了一套统一的硬件抽象层,使得应用程序可以更容易地移植到不同的硬件平台。学习 HAL 的设计,可以让你理解如何编写跨平台的驱动程序。
丰富的生态系统: 除了内核本身,RTThread 还提供了大量的软件包(Package),涵盖了从传感器驱动到网络应用,再到 AI 边缘计算等方方面面。这展示了一个成熟的开源项目是如何构建生态的。
C 语言编程典范: 虽然是操作系统,但 RTThread 的核心代码主要用 C 语言编写,非常适合 C 语言开发者学习。其代码风格严谨,对内存管理和底层硬件操作的细节处理得非常到位。
活跃的社区和完善的文档: RTThread 的社区非常活跃,用户众多,文档也相当完善,有官方的文档中心、论坛、技术交流群等,遇到问题很容易找到解决方案。

如何学习?

1. 从嵌入式基础学起: 如果你是嵌入式领域的新手,建议先了解一下嵌入式系统的基本概念、微控制器(MCU)的工作原理、常见的开发工具(如 GCC, GDB, JLink)等。
2. 阅读 RTThread 官方文档: 这是最重要的起点。官方文档详细介绍了 RTThread 的架构、核心概念、开发流程和各种组件的使用方法。
3. 选择一个开发板和示例: 入门最好的方式是购买一块支持 RTThread 的开发板(如 STM32 系列),然后从官方提供的示例代码入手,比如最简单的 "Hello World" 或者 LED 闪烁。
4. 理解内核基本组件: 重点学习任务(Thread)的创建与调度、信号量(Semaphore)、互斥锁(Mutex)、消息队列(Message Queue)、事件集(Event)等 IPC 机制的实现。
5. 掌握设备驱动模型: 学习 RTThread 的设备驱动框架,理解如何注册设备、如何编写串口、SPI、I2C 等驱动程序。
6. 熟悉软件包的使用: 了解如何配置和使用 RTThread 的软件包,例如网络(lwIP)或者文件系统(FATFS)。
7. 参与社区讨论和贡献: 如果你在学习过程中遇到问题,可以到官方论坛提问。当你对项目有更深入的了解后,也可以尝试修复 Bug 或贡献新的功能。

总结一下学习开源项目的几个关键点:

明确目标: 你想学什么?是网络编程?分布式系统?还是嵌入式开发?根据自己的目标选择项目。
循序渐进: 不要一开始就想啃下整个项目。先从理解项目的功能和整体架构入手,再深入到具体模块和核心算法。
动手实践: 理论结合实践,这是学习开源项目最有效的方式。下载源码,编译运行,修改代码,实现自己的想法。
阅读官方文档和社区讨论: 官方文档是最好的入门资料,社区是解决问题和获取最新信息的重要渠道。
持续学习和贡献: 开源项目是不断发展的,保持学习的热情,有能力的话,尝试为项目贡献一份力量,这是最好的学习方式。

国内优秀的 C++ 开源项目还有很多,这里只是列举了几个在不同领域有代表性的。希望这些信息能帮助你找到适合自己的学习方向,在 C++ 的道路上越走越远!

网友意见

user avatar

截止目前开源中国收录了 49334 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,而 C 和 C++ 语言作为最基础的语言,在各类编程语言排行榜中高居不下。

因此本文整理了 C/C++ 语言中评分最高并且收藏量超过 200 的13 款项目,以供开发者选择和交流,排名如下:

1、高性能网络通信框架 HP-Socket

评分:9.8,收藏:2239

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。

HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。

更多信息高性能网络通信框架 HP-Socket

2、基于 C++/Python 的开源量化交易研究框架 Hikyuu

评分:8.3,收藏:376

Hikyuu Quant Framework是一款基于C++/Python的开源量化交易研究框架,用于策略分析及回测。其核心思想基于当前成熟的系统化交易方法,将整个系统化交易抽象为由市场环境判断策略、系统有效条件、信号指示器、止损/止盈策略、资金管理策略、盈利目标策略、移滑价差算法七大组件

你可以分别构建这些组件的策略资产库,在实际研究中对它们自由组合来观察系统的有效性、稳定性以及单一种类策略的效果。

例如::

       #创建模拟交易账户进行回测,初始资金30万 my_tm = crtTM(initCash = 300000)  #创建信号指示器(以5日EMA为快线,5日EMA自身的10日EMA最为慢线,快线向上穿越慢线时买入,反之卖出) my_sg = SG_Flex(OP(EMA(n=5)), slow_n=10)  #固定每次买入1000股 my_mm = MM_FixedCount(1000)  #创建交易系统并运行 sys = SYS_Simple(tm = my_tm, sg = my_sg, mm = my_mm) sys.run(sm['sz000001'], Query(-150))     

Hikyuu 优势:

  • 组合灵活,分类构建策略资产库
  • 性能保障,打造自己的专属应用
  • 多范式支持,探索更便捷、自由
  • 安全、自由、隐私,搭建自己的专属云量化平台
  • 数据存储方式可扩展

更多信息:基于 C++/Python 的开源量化交易研究框架 Hikyuu

3、开源自动驾驶平台 ApolloAuto

评分:8.1,收藏:319

Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。

Apollo 是百度重点打造的 AI 开放平台之一,计划主要包含 4 个技术模块:定位/感知模块、车辆规划与运营(AI+大数据,精准控制车辆,适合不同路况)、软件运营框架(支持英特尔、英伟达等多种芯片)。

Start Apollo

       # start Human Machine Interface(HMI) bash scripts/hmi.sh     

Access HMI

打开浏览器,跳转至 localhost:8887,单击 Dreamview 开始。

单击右上角的 Dreamview 按钮

加载 Dreamview UI

Replay demo rosbag

       # in a different terminal inside docker rosbag play -l ./docs/demo_guide/demo.bag     

Dreamview 将显示运行的车辆与轨迹

更多信息:开源自动驾驶平台 ApolloAuto

4、分布式图片实时动态压缩 ngx-fastdfs

评分:8.1,收藏:278

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

install

       进入docker目录 docker build -t  fastdfs:dev .     

使用

       docker -idt -p 80:80 fastdfs:dev /bin/bash 进入容器执行 /etc/rc.local     

测试

       进入容器执行test目录下的./test.sh或者直接执行下面脚本 fdfs_test /etc/fdfs/client.conf upload /home/steven/01.jpg ... group_name=group1, ip_addr=192.168.1.181, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580.jpg ... example file url: http://192.168.1.181/group1/M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580.jpg storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580_big.jpg ... example file url: http://192.168.1.181/group1/M00/00/00/wKgdhFTV0ZmAP3AZAPk-Io7D4w8580_big.jpg     

使用效果

自动压缩

           自动压缩采用减少图片质量来达到减小图片体积的效果     使用方法是把nginx里的nginxauto.conf替换原有的或者自己按着该文件修改     把lua里的thumbnailauto.lua文件替换原有的或者自己按着该文件修改     注意:fastdfs的storage的配置/etc/fdfs/storage.conf中run_by_group和run_by_user,最好跟nginx的用户组配置一样     

更多信息:分布式图片实时动态压缩 ngx-fastdfs

5、高性能 RPC 开发框架 Tars

评分:8.0,收藏:422

Tars 是基于名字服务使用 Tars 协议的高性能 RPC 开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。它是将腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目。

目前该框架在腾讯内部,有 100 多个业务(如手机浏览器、应用宝、手机管家、手机QQ、手机游戏等)、1.6 多万台服务器上运行使用。


技术架构:

更多信息:高性能 RPC 开发框架 Tars

6、Go语言开发工具 LiteIDE

评分:7.9,收藏:426

LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。

主要特点

核心功能

* 系统环境管理
* MIME类型管理
* 可配置编译命令
* 支持文件搜索替换和恢复
* 快速打开文件、符号和命令
* 插件系统

高级代码编辑器
* 代码编辑支持 Go语言、Markdown 和 Golang Present
* 快速代码导航工具
* 语法高亮和配色方案
* 代码完成
* 代码折叠
* 显示保存修订
* 重读文件使用代码差异方式

更多信息:Go语言开发工具 LiteIDE

7、分布式TCP压力测试工具 tcpcopy

评分:7.9,收藏:460

tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,目前已经应用于国内各大互联网公司。总体说来,tcpcopy主要有如下功能:

  • 分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
  • 普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
  • 对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
  • 利用多种手段,构造无限在线压力,满足中小网站压力测试要求
  • 实战演习(架构师必备)

tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源这几年以来,功能上越来越完善。如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力无法预测,tcpcopy可以帮助你解决上述难题。

更多信息:分布式TCP压力测试工具 tcpcopy

8、中文文本转语音引擎 Ekho

评分:7.9,收藏:453

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

更多信息:中文文本转语音引擎 Ekho

9、在 Linux 系统中运行 Android 应用 Anbox

评分:7.8,收藏:210

Anbox 可让你在任何 GNU/Linux 操作系统上运行 Android 应用程序。具有以下特性:

  • 没有限制:由于 Anbox 运行着整个 Android 系统,所以理论上任何应用都可以在其中运行
  • 安全:Anbox 将 Android APP 放进一个密封的盒子中,无需直接访问硬件或数据
  • 性能:无需虚拟化硬件而运行 Android,可以无缝桥接硬件加速功能
  • 集成:与主机操作系统紧密集成,以提供丰富的功能集

更多信息:在 Linux 系统中运行 Android 应用 Anbox

10、机器学习系统 TensorFlow

评分:7.8,收藏:860

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

TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分 化(auto-differentiation)。

通过灵活的Python接口,要在TensorFlow中表达想法也会很容易。TensorFlow 对于实际的产品也是很有意义的。将思路从桌面GPU训练无缝搬迁到手机中运行。

更多信息:机器学习系统 TensorFlow

11、MySQL衍生版 Percona Server

评分:7.8,收藏:449

Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。

Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进。Percona Server 使用了一些google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。

更多信息:MySQL衍生版 Percona Server

12、数据中间层项目 ProxySQL

评分:7.8,收藏:202

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

高效的工作负载管理

ProxySQL 可帮助您从 MySQL 集群中挤出最后一滴性能,而无需控制生成查询的应用程序。

支持

  • 查询缓存
  • 查询路由
  • 故障转移

更多信息:数据中间层项目 ProxySQL

13、开源网盘云存储 Seafile

评分:7.8,收藏:1889

Seafile 是一款安全、高性能的开源网盘(云存储)软件。Seafile 提供了主流网盘(云盘)产品所具有的功能,包括文件同步、文件共享等。在此基础上,Seafile 还提供了高级的安全保护功能以及群组协作功能。

由于 Seafile 是开源的,你可以把它部署在私有云的环境中,作为私有的企业网盘。Seafile 支持 Mac、Linux、Windows 三个桌面平台,支持 Android 和 iOS 两个移动平台。

Seafile 是由国内团队开发的国际型项目,目前已有50万左右的用户,以欧洲用户为多。自发布以来,Seafile 一直保持开放、国际化、高质量的宗旨,受到国内外大型机构的信赖。

目前主要的大型客户包括卡巴斯基、中国平安,以及欧美多家知名大学和科研机构。你可以把它想象成是面向团队的开源Dropbox。

更多信息:开源网盘云存储 Seafile

.........................................

原创不容易,看到的帅哥美女们点个赞呀!笔芯❤️❤️❤️

我的主页:@OSCHINA为开发者服务!!

如果你也想了解 PHP 的开源项目?

github上有哪些值得学习的优秀的php开源项目?

如果你也想了解Go 语言的项目?

有哪些值得学习的 Go 语言开源项目?

如果你也想了解 Python 的开源项目?

值得看的Python的开源项目有哪些?

如果你也想了解Java的项目?

Github 上有没有优秀的Java 项目推荐?

user avatar

给大家分享一些优秀的开源项目:

一、基础

1.1 一个项目入门 C++ 足以:CPlusPlusThings

CPlusPlusThings 是国人开源一个 C++ 学习项目。它系统地将 C++ 学习分为了【基础进阶】、【实战系列】、【C++2.0 新特性】、【设计模式】和【STL 源码剖析】、【并发编程】、【C++ 惯用法】、【学习课程】、【工具】、【拓展】。

作为一个全面系统的 C++ 学习项目,CPlusPlusThings 是优秀的,它合理地安排了 10 Days 的实战部分,在实战中了解语法和函数用法,唯一不足的是,在注释部分有些不尽人意,对部分新手程序员并不是很友好。【基础进阶】部分内容:

  • const 那些事
  • static 那些事
  • decltype 那些事
  • 引用与指针那些事
  • 宏那些事
GitHub 地址→github.com/Light-City/C

1.2 基础部分之算法:C-Plus-Plus

C-Plus-Plus 是收录用 C++ 实现的各种算法的集合,并按照 MIT 许可协议进行授权。这些算法涵盖了计算机科学、数学和统计学、数据科学、机器学习、工程等各种主题。除外,你可能会发现针对同一目标的多个实现使用不同的算法策略和优化。

GitHub 地址→github.com/TheAlgorithm

二、进阶

2.1 现代 C++:modern-cpp-tutorial

modern-cpp-tutorial 是现代 C++ 教程,它的目的是提供关于现代 C++(2020 年前)的相关特性的全面介绍。除了介绍了代码之外,它还尽可能简单地介绍了其技术需求的历史背景,这对理解为什么会出现这些特性提供了很大的帮助。

GitHub 地址→github.com/changkun/mod

2.2 进阶指南:CppTemplateTutorial

CppTemplateTutorial 为中文的 C++ Template 的教学指南。与知名书籍 C++ Templates 不同,该系列教程将 C++ Templates 作为一门图灵完备的语言来讲授,以求帮助读者对 Meta-Programming 融会贯通。本项目写作初衷,就是通过 “编程语言” 的视角,介绍一个简单、清晰的 “模板语言”。我会尽可能地将模板的诸多要素连串起来,用一些简单的例子帮助读者学习这门 “语言”,让读者在编写、阅读模板代码的时候,能像 if(exp) { dosomething(); } 一样的信手拈来,让 “模板元编程” 技术成为读者牢固掌握、可举一反三的有用技能。

适合熟悉 C++ 的基本语法、使用过 STL、熟悉一些常用的算法,以及递归等程序设计方法的 C++ 学习者阅读。虽然项目章节文章写的深入浅出,不过唯一的遗憾是尚未完成所有章节内容。进度如下:

  • 0.前言
  • 1.Template 的基本语法
  • 2.模板元编程基础
  • 3.深入理解特化与偏特化
  • 4.元编程下的数据结构与算法 (尚未开始)
  • 5.模板的进阶技巧(尚未开始)
  • 6.模板的威力:从 foreach, transform 到 Linq(尚未开始)
  • 7.结语:讨论有益,争端无用(尚未开始)
GitHub 地址→github.com/wuye9036/Cpp

三、动手实战

3.1 来实践一下:MyTinySTL

当你学习完 C++ 的“书本”知识后,是不是有些手痒了呢?MyTinySTL 这个注释详细、实践夯实基础的项目便是你 C++ 学习之旅的下一站。作为新手练习用途,MyTinySTL 的作者 Alinshans 用 C++11 重新复写了一个小型 STL(容器库+算法库)。代码结构清晰规范、包含中文文档与注释,并且自带一个简单的测试框架,适合 C++ 新手来实践一番。

GitHub 地址→github.com/Alinshans/My

3.2 重温同年俄罗斯方块:Tinytetris

Tinytetris 是一个用 C++ 编写的终端版俄罗斯方块游戏。它提供了两个版本的源码,分为注释版和库版,注释较多易于理解和学习。

GitHub 地址→github.com/taylorconor/

3.3 学习下大佬们的代码:calculator

微软开源的 Windows 系统预装的计算器工具。该工具提供标准、科学、程序员计算器的功能,以及各种度量单位和货币之间的转换功能。快来看看微软工程师编写的代码吧!学习大厂的编码规范、项目结构之类的,提高阅读源码的能力。英文的项目且没有讲解部分,需要通过阅读源码学习,难度较高。

GitHub 地址→github.com/microsoft/ca

最后

更多有趣,入门级的开源项目,可关注 HelloGitHub 获取

我们每月28号会准时发布 HelloGitHub 月刊,感兴趣可以关注一下哦

附最新一期月刊:

HelloGitHub 想让更多人爱上编程、开源,所以一直在尝试、摸索如何可以帮助到更多的人。目前HelloGitHub 交流群已全面开放,添加:HelloGitHub001 为好友入群,可同前端、Java、Go 等各界大佬谈笑风生、切磋技术~


HelloGitHub : 分享GitHub上有趣,入门级的开源项目。

类似的话题

  • 回答
    想在 C++ 这条路上走得更远,光看书、刷题那是不够的,真正提升内功的关键在于“阅读”和“参与”优秀的开源项目。国内的 C++ 开源力量这些年也涌现了不少精品,挑几个来好好掰扯掰扯,希望对你有所启发。咱就挑几个在不同领域都有代表性,而且社区活跃度也还不错的项目来说说。 1. 深入理解高性能网络通信:.............
  • 回答
    暗黑破坏神III国服在某个时期取得了令人瞩目的销量成绩,比如曾经传闻的百万级别,这背后确实有很多值得我们深入剖析和借鉴的地方。与其简单地说“销量很高”,不如我们来聊聊它究竟是如何做到的,以及这些做法对国内游戏行业有哪些启示。一、 品牌效应的深耕与延续:从“信仰”到“情怀”的转化首先,暗黑破坏神系列本.............
  • 回答
    朝鲜这个国家,一提起名字,相信很多人脑海中都会浮现出一些固有的印象,比如军事阅兵、领导人画像、主体思想等等。但如果撇开这些标签,深入地去了解,会发现这个国家在某些领域确实有着值得我们思考和借鉴的地方,也有不少鲜为人知的正面事迹。在某些领域值得学习的地方:首先,不得不提的是朝鲜在集体主义精神和社会凝聚.............
  • 回答
    好的,这里有一些我认为非常值得学习的 Go 语言开源项目,我会尽量详细地介绍它们的特点、为什么值得学习,以及在学习过程中可能遇到的侧重点,希望能让你感受到它们在实际应用中的深度和魅力,而不是一篇冰冷的AI总结。 1. Docker: 容器化技术的基石,理解分布式系统的利器项目地址: [https:/.............
  • 回答
    唐纳德·特朗普无疑是一位极具争议性的人物,但从他的人生轨迹和从政经历中,确实可以提炼出一些值得我们学习和思考的特质,即使你不认同他的政治立场或行事风格。以下是一些可以深入探讨的方面:1. 强大的个人品牌塑造和营销能力:特朗普在成为总统之前,就已经是一个家喻户晓的名字,这很大程度上归功于他非凡的个人品.............
  • 回答
    安杰这个角色,在《父母爱情》里,实在是个极具魅力的人物。她不像农村里那些朴实得有些许“粗糙”的女性,她的身上有着一股与众不同的精致和对生活的热爱。提起她身上那些值得我们学习的地方,我脑子里立马会浮现出好几点,而且越想越觉得,这些特质在如今这个快节奏的社会里,反而显得格外珍贵。首先,安杰身上最打动我的.............
  • 回答
    《生活大爆炸》里谢尔顿·库珀这个角色,虽然古怪到令人抓狂,但细究起来,他身上确实有那么几个闪闪发光的好习惯,值得我们借鉴。我尽量不把它写得像机器人报告,而是像我作为一个普通观众,看到他身上那些有点意思的地方。首先,他对知识的极致追求和孜孜不倦的学习态度,这点我真是打心底佩服。你看他,明明已经是个天才.............
  • 回答
    咱们国家这套法律体系,说实话,里面有不少东西挺有意思,也确实有值得其他国家借鉴的地方。我尝试从几个角度给您掰扯掰扯,尽量说得细致点,也就不整那些虚头巴脑的词了,咱们就聊聊咱自己家门口的事儿。一、 坚持和发展中国特色社会主义法律体系:这是最根本的亮点这话说起来可能有点大,但这是咱们这套法律体系的基石,.............
  • 回答
    提到Angelababy(杨颖),可以说是当下娱乐圈里一个绕不开的名字。她的出现,就像一颗色彩鲜艳的星星,在很长一段时间里都牢牢地吸引着大众的目光。要评价她,其实是个挺复杂的事,毕竟公众人物,身上的标签太多了。但如果我们剥开那些围绕她的争议和光环,仔细看看她的经历和特质,还是能找到不少值得我们去解读.............
  • 回答
    一位53岁的农妇,放下手中的农具,时隔三十载,再次燃起了她深藏的武侠梦。这本身就是一个令人动容的画面,也让我们不禁思考,这位平凡的女性身上,究竟有哪些值得我们学习的闪光点?首先,最显而易见的,便是她身上那股 “初心不改,敢于追梦” 的韧劲。三十年,对于一个女人来说,意味着什么?是成家立业,是含辛茹苦.............
  • 回答
    “北大保安,现已是职校校长”——这个头衔在网络上传开,迅速点燃了许多人的好奇心和敬意。对于很多人来说,这就像一个现实版的“麻雀变凤凰”故事,充满了励志色彩。但刨开那些戏剧性的标签,我们更应该关注的是这个人背后那段真实而艰难的奋斗历程,以及其中蕴含的值得我们深思和学习的品质。这个故事的魅力,首先在于它.............
  • 回答
    朋友,很高兴能跟你聊聊这个话题。关于学习和生活,我一直觉得,这就像是一场永无止境的探索,而书籍,就是我们最好的向导和伙伴。与其说推荐书单,我更愿意跟你分享一些我在阅读和学习过程中的体会,以及由此触动我、让我觉得值得深挖的宝藏。关于“学习”这件事,我想先跟你分享一些我自己的感受。我们通常说的“学习”,.............
  • 回答
    知乎上卧虎藏龙,那些被称为“大牛”的用户,确实是我们学习和借鉴的宝贵财富。他们的优秀之处绝非偶然,而是长期积累和内在修炼的结果。抛开那些AI味十足的标签,咱们就聊聊那些真正让人拍案叫绝、心悦诚服的优点,以及我们该如何去品味和吸收。首先,最直观的,就是知识的深度与广度兼备。 深度: 你会发现,在大.............
  • 回答
    乔治·索罗斯,一个响彻金融市场、让无数交易者又爱又恨的名字。他的职业交易生涯,与其说是“职业”,不如说是他思想和行动的淋漓尽致的展现。要评价索罗斯,我们得从他独特的哲学、惊人的市场洞察力以及对风险的极致运用几个方面来剖析。索罗斯的交易生涯:一部波澜壮阔的史诗索罗斯的交易生涯并非一帆风顺,他早年也经历.............
  • 回答
    《大航海时代 4》:一款承载着冒险、探索与时代浪漫的经典在电子游戏的浩瀚星河中,《大航海时代 4》(Uncharted Waters: New Horizons)无疑是一颗璀璨而独特的星辰。它并非以眼花缭乱的3D特效或复杂到令人望而却步的操作著称,却以其深邃的战略性、浓厚的历史氛围以及自由度极高的游.............
  • 回答
    好的,很高兴能和你分享一下我本科学习拓扑的一些心得体会。拓扑这门课,说实话,刚开始接触的时候,确实会让人有点摸不着头脑。它不像高数那样有直观的图像和运算,很多概念都建立在非常抽象的基础上。但一旦你真正沉浸进去,你会发现它拥有独特的魅力,它在“不变性”的研究上有着极其深刻的洞察力。1. 理解“不变性”.............
  • 回答
    基于深度学习的自然语言处理在 2016 年:值得期待的重大进展与深入探索2016 年是深度学习在自然语言处理(NLP)领域继续爆炸式发展的关键一年。在前几年的 Transformer 模型(虽然在 2017 年才正式提出并引起广泛关注)和各种循环神经网络(RNN)及其变种(LSTM、GRU)的铺垫下.............
  • 回答
    Facebook 的工程师文化,如果让我这个在互联网摸爬滚打过的人来聊,那可真是说不完道不尽。咱们国内互联网创业者,想当年模仿硅谷,现在也在摸索自己的路子,Facebook 这棵大树,确实有很多值得我们好好挖一挖。我总结了一下,有这么几点,觉得尤其戳人,也特别实在:1. “Move Fast and.............
  • 回答
    铁血网,作为国内老牌的军事和爱国主义论坛,确实有一些值得兔吧等新兴爱国网站借鉴和学习的地方。要说它的优点,咱们得从几个层面来掰扯掰扯。首先,深厚的历史积淀和用户粘性。铁血网不是一夜之间冒出来的,它已经运营了很多年。这种长期的存在,意味着它积累了一大批忠实的用户群体。这些人很多是伴随着铁血网成长起来的.............
  • 回答
    中国和日本,两个地理位置相近、文化渊源深厚的国家,在各自发展的道路上,既有相似之处,也有显著的差异。细究之下,日本在不少方面确实有值得中国学习借鉴的地方,这些经验或许能为中国在高质量发展、社会治理和国民素养提升等方面提供有益的启示。一、精益求精的工匠精神与产品品质谈及日本,人们脑海中常常浮现的是“m.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有