盘点适合入门学习的C/C++开源项目

基础

Google开源代码规范

在这里插入图片描述
https://github.com/zh-google-styleguide/zh-google-styleguide
评价:还没有学

CPlusPlusThings

项目名称: CPlusPlusThings

项目简介: CPlusPlusThings 是国人开源一个 C++ 学习项目。它系统地将 C++ 学习分为了【基础进阶】、【实战系列】、【C++2.0 新特性】、【设计模式】和【STL 源码剖析】、【并发编程】、【C++ 惯用法】、【学习课程】、【工具】、【拓展】。作为一个全面系统的 C++ 学习项目,CPlusPlusThings 是优秀的,它合理地安排了 10 Days 的实战部分,在实战中了解语法和函数用法

对于我们的作用: 可以帮助我们系统地学习 C++ 相关知识

项目源码地址: https://github.com/Light-City/CPlusPlusThings
评级: 8.9 K⭐
评价:一般(有空可能会看)

现代 C++:modern-cpp-tutorial

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

项目源码地址:https://github.com/changkun/modern-cpp-tutorial

评级:11.8 K⭐
评价:推荐(待学)

CppTemplateTutorial

评级:4.4k
评价:主要内容C++模板元编程,实际编程中用得很少,闲的没事干可以学学

算法与设计模式

因为我不是专业搞算法的,这个只能放最后去学了,暂时记下来链接

C-Plus-Plus

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

项目地址: https://github.com/TheAlgorithms/C-Plus-Plus
评级: 9.7K ⭐
评价:代码风格不错(待学)

C

项目名称: C

项目简介: 是的,你没有看错,这个项目的名字就是单个字母C。C是一个宝藏项目,可以说是学习数据结构和刷算法题的利器,因为里面包含了几乎各种基础算法、数据结构、以及LeetCode算法题的C语言实现。具体包括:

客户端/服务器问题
统计方法问题
进制转换问题
各种数据结构:数组、链表、字典、二叉树、堆、栈、队列、哈希、图等等
搜索/查找问题
排序问题
LeetCode习题
其他杂项问题
注意,下图中只是截取了一部分数据结构和算法题的具体实现:
在这里插入图片描述
对于我们的作用: 可以帮助我们更好的学习数据结构、以及刷算法题

项目源码地址: https://github.com/TheAlgorithms/C

design-patterns-cpp

项目名称: design-patterns-cpp

项目简介: 从项目名称就能够猜出来,这是一个C++语言版的设计模式实现,里面包含了常见设计模式的C++ 语言实现。
在这里插入图片描述

对于我们的作用: 帮助我们理解和实践设计模式相关知识

项目源码地址: https://github.com/JakubVojvoda/design-patterns-cpp

网络与环境编程

cpp-httplib[推荐]

一个header-only的跨平台HTTP/HTTPS服务器和客户端C 库

项目源码地址: https://github.com/yhirose/cpp-httplib
星星:4.6K
评价:就一个头文件,看完应该不太难吧! 推荐

libhv(新手不友好)

项目名称: libhv

项目简介:libhv类似于libevent、libev和libuv,是一个跨平台的具有非阻塞I/O和计时器的异步事件驱动库,但libhv提供了更加简单易用的API接口并支持更加丰富的网络协议,基于它可以快速驱动HTTP服务端和客户端,从而提供高性能的http服务。

主要技术点或特性: 跨平台、事件循环、非阻塞I/O、支持IPv6、使用OpenSSL、支持多种网络协议

对于我们的作用: 可以帮助我们理解和实践操作系统的相关知识

项目源码地址:https://github.com/ithewei/libhv
评级:1.7K ⭐
评价:这个项目我看了, 作者代码风格不好,而且实例非常少,新手不建议入

Drogon

Drogon是基于C ++ 14/17的HTTP应用程序框架。Drogon可用于使用C ++轻松构建各种类型的Web应用程序服务器程序。德罗贡(Drogon)是我非常喜欢的美国电视连续剧《权力的游戏》(Game of Thrones)中一条龙的名字。

Drogon是一个跨平台框架,它支持Linux,macOS,FreeBSD,OpenBSD和Windows。其主要特点如下:

  • 使用基于epoll的非阻塞I / O网络库(macOS /FreeBSD下的kqueue)提供高并发,高性能的网络IO,请访问TFB测试结果以获取更多详细信息;
  • 提供完全异步的编程模式;
  • 支持Http1.0 / 1.1(服务器端和客户端);
  • 基于模板,实现了一种简单的反射机制,以完全解耦主程序框架,控制器和视图。
  • 支持cookie和内置会话;
  • 支持后端渲染,控制器将数据生成到视图以生成Html页面。视图由CSP模板文件描述,C
    ++代码通过CSP标记嵌入到HTML页面中。drogon命令行工具会自动生成C ++代码文件进行编译;
  • 支持视图页面动态加载(动态编译和运行时加载);
  • 提供从路径到控制器处理程序的便捷灵活的路由解决方案;
  • 支持过滤器链,以方便在处理HTTP请求之前执行统一的逻辑(例如登录验证,Http方法约束验证等);
  • 支持https(基于OpenSSL);
  • 支持WebSocket(服务器端和客户端);
  • 支持JSON格式的请求和响应,对Restful API应用程序开发非常友好;
  • 支持文件下载和上传; 支持gzip,brotli压缩传输;
  • 支持流水线;
  • 提供一个轻量级的命令行工具drogon_ctl,以简化Drogon中各种类的创建以及视图代码的生成; 支持基于非阻塞I /O的异步读写数据库(PostgreSQL和MySQL(MariaDB)数据库);
  • 支持基于线程池异步读写sqlite3数据库;
  • 支持ARM架构;
  • 提供方便的轻量级ORM实现,支持常规的对象到数据库双向映射;
  • 支持插件,可以在加载时由配置文件安装;
  • 通过内置连接点支持AOP。
  • 支持C ++协程

项目地址:https://github.com/an-tao/drogon
星星:5.1k
评价:例子不太丰富的样子

netdata(新手不友好)

项目名称: netdata

项目简介: netdata是一款开源免费的炫酷Linux系统实时性能和运行状况的系统监控工具。netdata通过使用可交互的仪表盘形式,来提供灵活易用的系统监控。除了支持常见系统平台的安装之外,它还可以非常方便地安装于Docker容器和集群之中并提供监控服务。

对于我们的作用: 既是一个高效的工具,研究其源码也可以帮助我们学习和理解Linux环境实战编程。

项目源码地址: https://github.com/netdata/netdata

评价:代码写的太乱太乱了,现在不看,新手不要乱入

json-tutorial

在这里插入图片描述

在这里插入图片描述

评级:4.2K ⭐

WebServer

在这里插入图片描述

在这里插入图片描述

项目地址: https://github.com/linyacool/WebServer
评级:2.6K ⭐

webbench

Webbench是Radim Kolar在1997年写的一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。非常适合用来学习网络编程,代码量也不大,适合初学者:

项目地址:https://github.com/EZLippi/WebBench
评级:1.8K ⭐
评价:还没有看

tmux

项目名称::tmux

项目简介: tmux一个开源免费的的终端复用软件。它的命令行界面非常炫酷易用,支持自由分割窗口,并且可以自由移动和调整,灵活且强大。一个非常强大的使用场景是:当远程连接到服务器使用时,只需要启动tmux,利用它就可以方便地进行后续操作,而无需打开多个ssh控制台窗口。

在这里插入图片描述
对于我们的作用: 既是一个高效的工具,研究源码也可以帮助我们学习和理解Linux环境实战编程。

项目源码地址: https://github.com/tmux/tmux

其他

任天堂红白机模拟器

在这里插入图片描述

在这里插入图片描述

https://github.com/amhndu/SimpleNES

其他资源

https://isocpp.org/get-started
http://www.cppstdlib.com/

GitHub-Chinese-Top-Charts

在这里插入图片描述

https://github.com/kon9chunkit/GitHub-Chinese-Top-Charts

知乎问答

C++书单

  • Effective C++
  • More Effective C++
  • Effective STL
  • STL源码剖析
  • 深度探索C++对象模型
  • C++ Primer
  • Linux高性能服务器编程
  • Linux多线程服务器端编程(选看)
  • UNIX 环境高级编程
  • UNIX网络编程卷1(必看,五星推荐)

我看过的

  • C++语言的设计与演化 : 这本书实在实在实在是看不下去,不知道是不是翻译问题

我的技术路线:学过 C、C++、Java、Rust、Go、Python,看过一点点前端,开发过桌面软件。
决心以后专注 后台开发, 语言还没有确定选择哪个

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/107056943
今日推荐