有什么高质量c++练手项目推荐嘛?

老有一些同学和我说学习了 C++ 以后,想要做些项目锻炼自己,让我从「简单到难」都推荐一些。

那有啥说的,必须推荐!毕竟 C++ 的优质项目我见过太多了!

下面我就按照「从易到难」的梯度,依次来推荐,总共 9 个,不多不少,刚好。

一,简单难度

简单难度的 C++ 项目在适合 C++ 初学者的前提下,要有实际的应用场景,具体表现在:

  1. 逐步增长的难度

  2. 可以适当复用和模块化

  3. 清晰的文档和示例代码

基于这些特点,推荐以下 3 个项目。

1、TinyWebServer(14.5k+ star)

对于计算机的学生来说,网络编程的技能是必不可少的,本项目是 Linux 下 C++ 轻量级 Web 服务器,助力初学者快速实践网络编程,搭建属于自己的服务器!

创送门:https://github.com/qinguoyi/TinyWebServer

2、sudoku(840+ star)

用 C++ 实现的命令行数独游戏,命令行操作易上手,600多行代码,对于初学者来说也是毫无压力。

可惜的是这个项目的 star 有点少,还不到 1000,大家可以多关注一下,可以通过pull request的方式来添加功能或修复缺陷。

传送门:https://github.com/mayerui/sudoku

3、calculator(28.7k+ star)

大家的 Windows 系统上应该都有这个计算器,微软把它们系统预装的计算器工具开源了!

计算器提供标准、科学、程序员计算器的功能,以及各种度量单位和货币之间的转换功能。

它实现语言为 C++ 代码,大家没想到吧,这个计算器的实现并不复杂,但是大家可以从中学习下微软工程师是如何写代码的。

传送门:https://github.com/microsoft/calculator

C++项目视频+代码()C++项目实战合集C++项目视频+代码()icon-default.png?t=N7T8https://docs.qq.com/doc/DYXBFaHJnQXpRRExs

二,中等难度

中等难度这里我主要推荐的是适合个人练手的中等规模的 C++ 项目。

这样的项目具有一定的复杂性和功能性,能够在设计、实现和调试的过程中锻炼自己的 C++ 编程能力。

基于这些特点,推荐以下 3 个项目。

1、30dayMakeCppServer(4.6k+ star)

一切后台开发的基础,都是面向 Linux 的 C/C++ 服务器开发。

本项目 30 天自制 C++ 服务器,包含图文教程和源码,教你在 30 天内入门 Linux 服务器开发,讲解了 Socket、epoll、线程池、CMake 等知识点。

学习一门技术、一门编程语言固然重要,同样你也要了解底层的基础原理。比如一个 HTTP 请求的过程,为什么可实现高并发、如何控制 TCP 链接等等。

传送门:https://github.com/yuesong-feng/30dayMakeCppServer

2、How-to-Make-a-Computer-Operating-System(20.9k+ star)

如何用 C++ 制作一个计算机操作系统,这个项目就告诉你。

与其说这是一个项目,倒不如说是一本教大家如何从头开始用 C/C++ 编写计算机操作系统的在线书籍,如果能搞下来,对你的帮助会很大。

传送门:https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

3、btop(15.6k+ star)

如果不借助别的工具,我们如何来知道自己电脑的处理器、内存、磁盘这些硬件的使用情况,如何知道网络和进程的统计信息?

btop 这个项目就是做这个的,通过这个项目学会如何去做一个界面炫酷的命令行资源监视器。

传送门:GitHub - aristocratos/btop: A monitor of resources

C++项目视频+代码icon-default.png?t=N7T8https://docs.qq.com/doc/DYXBFaHJnQXpRRExs

三,困难难度

困难难度的这些当然就是凭个人所不能及的,但用来学习却是极好的。

这里主要给大家推荐 3 个国内外大厂开源的优质 C++ 项目,保证高质量!

1、async_simple (1.4k+ star)

async_simple 是阿里开源的轻量级 C++ 异步框架。

该项目提供了基于 C++20 无栈协程(Lazy)、有栈协程(Uthread) 以及 Future/Promise 等异步组件,能够轻松完成 C++ 异步的开发。

目前这个项目广泛应用于阿里的图计算引擎、时序数据库、搜索引擎等系统。

#include <async_simple/coro/ConditionVariable.h>

SpinLock mtx;
ConditionVariable<SpinLock> cond;
int value = 0;

Lazy<> producer() {
  co_await mtx.coLock();
  value++;
  cond.notify();
  mtx.unlock();
  co_return;
}

Lazy<> consumer() {
  co_await mtx.coLock();
  co_await cond.wait(mtx, [&] { return value > 0; });
  mtx.unlock();
  assert(value > 0);
  co_return;
}

传送门:https://github.com/alibaba/async_simple

2、workflow(12.2k+ star)

workflow 是搜狗开源的 C++ 服务器引擎。

这个项目有点东西,支撑搜狗几乎所有后端 C++ 在线服务:

  • 搜索服务

  • 云输入法

  • 广告

  • ...

每日处理大概超过百亿的请求。

这是一个很棒的企业级程序引擎,可以满足大多数 C++ 后端开发需求。

比如快速搭建 http 服务器:

#include <stdio.h>
#include "workflow/WFHttpServer.h"

int main()
{
    WFHttpServer server([](WFHttpTask *task) {
        task->get_resp()->append_output_body("<html>Hello World!</html>");
    });

    if (server.start(8888) == 0) {  // start server on port 8888
        getchar(); // press "Enter" to end.
        server.stop();
    }

    return 0;
}

传送门:GitHub - sogou/workflow: C++ Parallel Computing and Asynchronous Networking Framework

3、folly(26.9k+ star)

folly 是 Facebook 开源的 C++ 工具库。

这个项目包含一系列高性能的 C++ 组件库,十分的方便且高效,而且是在 Facebook 内部被广泛应用。

该项目不仅代码规范测试用例充足,而且源码中包含丰富的注释。同样功能的函数为什么别人写的这么好,终于可以光明正大的偷师学艺了!

传送门:https://github.com/facebook/folly

就先推荐这几个,应该也足够你看了。

C++项目视频+代码icon-default.png?t=N7T8https://docs.qq.com/doc/DYXBFaHJnQXpRRExs

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是几个 C 语言开源项目推荐: 1. Linux 内核:Linux 内核是一个开源的操作系统内核,是许多 Linux 发行版的基础。它的代码库是用 C 语言写的,非常庞大和复杂,同时也是学习操作系统内核的绝佳资源。 2. OpenSSL:OpenSSL 是一个开源的加密库,提供了许多安全协议和加密算法,比如 SSL/TLS 和 AES。它的代码库是用 C 语言写的,非常成熟和稳定。 3. SQLite:SQLite 是一个轻量级的嵌入式数据库,非常适合嵌入到各种应用程序中。它的代码库也是用 C 语言写的,非常简单易懂,同时也是学习数据库开发的好材料。 4. nginx:nginx 是一个高性能的 Web 服务器和反向代理服务器,它的代码库也是用 C 语言写的。nginx 的设计和实现非常优秀,非常值得学习。 5. Git:Git 是一个分布式版本控制系统,用于管理源代码和文本文件的变更。它的代码库也是用 C 语言写的,非常复杂但也非常值得学习,尤其是对于想要深入了解版本控制系统的人来说。 以上这些 C 语言开源项目都是非常优秀的,它们的代码库也是非常庞大而复杂,适合学习 C 语言和系统编程。 ### 回答2: 以下是我推荐的几个C语言开源项目: 1. Linux内核:Linux是一个基于UNIX的操作系统,其内核完全由C语言编写。Linux内核是一个庞大而强大的开源项目,由世界各地的开发者贡献代码和功能。 2. GNU工具集:GNU工具集是一组基于C语言的命令行工具,如GNU C编译器(GCC),GNU调试器(GDB),GNU Make等。这些工具广泛用于开发和编译C语言程序。 3. SQLite:SQLite是一个轻量级的嵌入式关系型数据库引擎,被广泛用于各种应用程序的存储和管理数据。SQLite完全由C语言编写,具有高性能、稳定性和可靠性。 4. FFmpeg:FFmpeg是一个强大的多媒体处理工具,可以处理音频和视频文件的编解码、转码、流媒体等。它是一个跨平台的开源项目,使用C语言编写。 5. Redis:Redis是一个高性能的键值存储数据库,被广泛应用于缓存、消息队列、实时统计等场景。Redis的服务器端是用C语言编写的,具有非常高的性能和可扩展性。 这些项目都是C语言开源项目中的重要代表,通过参与这些项目开发和使用,可以提高对C语言的掌握和理解,并且了解开源社区的协作和经验分享。 ### 回答3: 以下是几个推荐的C语言开源项目: 1. Linux内核:Linux内核是一个开源的操作系统内核,由Linus Torvalds开发。它是许多Linux发行版的基础,包括Ubuntu和Debian。该项目提供了一个完整的操作系统系统,包括进程管理、文件系统、设备驱动、网络协议栈等。 2. SQLite:SQLite是一个轻量级的嵌入式数据库引擎,功能强大且易于使用。它支持所有常见的SQL语法,适用于移动应用、网站和桌面应用的数据存储需求。SQLite的源代码非常简洁,易于理解和修改。 3. FFmpeg:FFmpeg是一个跨平台的多媒体处理框架,可以用于录制、转码、流媒体播放和编辑等多种多媒体操作。它支持多种音频和视频格式,并具有高度定制化的功能。 4. Redis:Redis是一个内存数据结构存储系统,可以用作数据库、缓存和消息队列。它具有高性能和低延迟的特点,并支持多种数据结构,如键值对、列表、哈希表等。 5. Git:Git是一个分布式版本控制系统,由Linus Torvalds开发,广泛用于软件开发项目。它具有强大的分支管理和合并功能,并且支持非线性开发工作流程。 这些项目都是C语言开发的,具有广泛的应用领域,并且具有活跃的开发和维护社区,可以为开发者提供很好的学习和参与的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值