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

盘点适合入门学习的C/C++开源项目C项目名称:C项目简介:是的,你没有看错,这个项目的名字就是单个字母C。C是一个宝藏项目,可以说是学习数据结构和刷算法题的利器,因为里面包含了几乎各种基础算法、数据结构、以及LeetCode算法题的C语言实现。具体包括:客户端/服务器问题统计方法问题进制转换问题各种数据结构:数组、链表、字典、二叉树、堆、栈、队列、哈希、图等等搜索/查找问题排序问题LeetCode习题其他杂项问题注意,下图中只是截取了一部分数据结构和算法题的具体实现:对于我们的作用:可以帮助我们更好的学习数据

基础

microsoft C++

评价:

  • 入门级教程
  • 这是我在看C++标准库的时候发现的,C++标准库写的太学术了,这个比较接地气,对于理解一些基本性的概念非常有帮助,我是把它和C++标准库对照着看的

现代 C++:modern-cpp-tutorial

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

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

评级:12.9 K⭐
评价:

  • 高屋建瓴俯瞰非入门式,不建议无基础的人看,请至少学过C++11。
  • 只有82页,作者做到了通俗易懂,浓缩就是精华
  • 十分推荐(看完啦,如果闲的没事再看以下吧,有两张感觉没什么用就跳过了)

CppTemplateTutorial

项目简介:

  • CppTemplateTutorial 为中文的 C++ Template 的教学指南。与知名书籍 C++ Templates 不同,该系列教程将 C++ Templates 作为一门图灵完备的语言来讲授,以求帮助读者对 Meta-Programming 融会贯通。

  • 本项目写作初衷,就是通过 “编程语言” 的视角,介绍一个简单、清晰的 “模板语言”。我会尽可能地将模板的诸多要素连串起来,用一些简单的例子帮助读者学习这门 “语言”,让读者在编写、阅读模板代码的时候,能像 if(exp) { dosomething(); } 一样的信手拈来,让 “模板元编程” 技术成为读者牢固掌握、可举一反三的有用技能。

  • 适合熟悉 C++ 的基本语法、使用过 STL、熟悉一些常用的算法,以及递归等程序设计方法的 C++ 学习者阅读

  • 从知识结构上,我建议大家可以先读本文,再阅读《C++ Templates》获取更丰富的语法与实现细节,以更进一步;《Modern C++ Design》除了元编程之外,还有很多的泛型编程示例,原则上泛型编程的部分与我所述的内容交叉不大,读者在读完1-3章了解模板的基本规则之后便可阅读《MCD》的相应章节;元编程部分(如Typelist)建议在阅读完本文之后再行阅读,或许会更易理解。

项目地址:

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++核心准则

算法与设计模式

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

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

网络与环境编程

acl[顶尖]

代码风格级佳

在这里插入图片描述

leveldb[推荐]

在知乎问答《你读过的最好的 C++ 开源代码是什么?》推荐超多

LevelDb是谷歌两位大神级别的工程师发起的开源项目,简而言之,LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。
链接:github.com/google/leveldb

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

Cpp11WebServer

SWINGS是用C++11实现的高性能Web服务器,可处理静态资源请求,支持HTTP长连接及超时断开
在这里插入图片描述

技术要点

  • 并发模型为Reactor
  • 使用Epoll水平触发+EPOLLONESHOT,非阻塞IO
  • 为充分利用多核CPU的性能,以多线程的形式实现服务器,并实现线程池避免线程频繁创建销毁造成的系统开销
  • 实现基于小根堆的定时器,用于断开超时连接
  • 实现可以自动增长的缓冲区,作为HTTP连接的输入和输出缓冲区

项目地址“ https://github.com/zhangwenxiao/Cpp11WebServer

其他

任天堂红白机模拟器

在这里插入图片描述

在这里插入图片描述

https://github.com/amhndu/SimpleNES

linux内核源码下载地址

https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/

其他资源

awesome-cpp

这就不用说了吧

https://github.com/fffaraz/awesome-cpp#standard-libraries

GitHub-Chinese-Top-Charts

在这里插入图片描述

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

知乎问答

C++书单


  • 《C++ Primer Plus》

    • 看来几章,但是对于对我来讲,太过基础了,没有什么编程知识的人适合看这个
    • 不太可能继续看
  • 《深入实践C++模板编程》

    • 模板元编程的入门书籍,推荐
    • 正在看,我想我会看它第二遍
  • 《深入理解C++11》

    • 推荐:⭐⭐⭐⭐
    • 当前进度:正在看
  • 《C++语言的设计和演化》

    • 推荐:
    • 评价:
    • 当前进度:
  • 《C++程序设计语言》

    • 推荐:⭐⭐⭐⭐⭐
    • 评价:
      • C++之父写的,看一遍是绝对不够的!!!!!!
      • 这绝对不是什么入门书籍!!!有一定基础的人再来看效果可能更好
    • 当前进度:第16、17章看完了。 暂停
  • 《深入探索C++对象模型》

    • 推荐:⭐⭐⭐⭐⭐
    • 评价:这书真的写的很好,虽然中文翻译不怎么样,如果不是内容太好,我真的撑不下去,会看第二遍
    • 当前进度:看完了
  • 《Effective C++ 》

    • 推荐:❤️❤️❤️❤️❤️
    • 评价:
      • 信息密度很高,推荐。
      • 这是我看过的写的最好的技术书籍之一
      • 第6章写的实在太好了,已买书收藏。
      • 会看第二遍
    • 当前进度:看完了,名不虚传, 我觉得是写C++必读的书籍,就算你不打算全部看完,至少也要看完第六章
  • 《More Effective C++ 》

    • 推荐:⭐⭐⭐
    • 评价:
      • 感觉我的时间被浪费了
      • 这跟《Effective C++ 》真的是一个作者吗,质量相差太大了,我很失望。
      • 这是我近期读过的技术书中最难看的一本。准确评分应该是三星半。
    • 当前进度:看完了大部分【近期不打算再看了,冷藏】
  • 《C++ Boost程序库完全开发指南》

    • 推荐:⭐⭐⭐⭐⭐
    • 评价:
      • 豆瓣评分居然这么多差评,至于吗,(豆瓣)对国产作者也苛刻了吧,为此加一星。
      • 当然,学习boost最好的资料是官方文档,但是谁让我有这本📕呢,我一定会看完它的!
    • 当前进度:正在看(暂停)
  • 《Effective STL》

    • 当前进度:看到第3节,暂停
  • 《Exceptional C++ 》

  • 《STL源码剖析》


  • 2021/5.20: C++语法特性暂停,我觉得我已经学的差不多了,需要一点实践,实践完了之后再回头看。接下来打算看网络编程的书籍

  • 《HTTP权威指南》

    • 推荐:💚💚💚
    • 评价:对HTTP协议感兴趣的可以看看,还是挺有用的
    • 当前进度:走马观花的看完了,还是挺有用的
  • 《Linux-UNIX系统编程手册》

    • 推荐:❤️❤️❤️❤️💚
    • 评价:孤篇横绝,竟为大家
    • 当前进度:看到第58章,暂停
  • 《TCP-IP高效编程:改善网络程序的44个技巧》

    • 推荐:💚💚💚💚
    • 评价:谁翻译的?译者语文不好吗?还不如机器翻译呢!!!内容ok,翻译烂
    • 当前进度:正在看
  • 《TCP/IP详解:卷二》

    • 4.4BSD-Lite源码的下载地址: http://ftp.icm.edu.pl/packages/4.4BSD-Lite/ https://pub.allbsd.org/bsd-sources/
  • 《用TCP_IP进行网际互联:设计、实现与内核 (卷2)》

    • 推荐:
    • 评价:
      • 信息密度很高,读来有种原来如此的感觉,将买书收藏,常看常新
      • 被安利了操作系统课程,以及对Xinu的源码感兴趣了
      • 感觉网友说的“比TCP/IP详解”更好是有道理的
      • 这书的源码网上没有找到。
    • 当前进度:正在看
  • 《用TCP_IP进行网际互联:客户-服务器编程与应用(Linux版) (卷3)》

    • 推荐:❤️❤️❤️💚💚
    • 评价:
      • 这书我想买下来收藏,适合有一定基础的人看
      • 第1到17章质量很高,后面的就比较拉胯了
    • 当前进度:看到第26章,暂停
  • 《TCP/IP详解卷1:协议》

    • 推荐:
    • 评价:
    • 当前进度:
      • 正在看(2021/06/07)
      • 暂停,因为我觉得它不说人话(2021/06/08)
  • 《TCP/IP网络编程》

    • 推荐:
    • 评价:
  • 《Unix/Linux编程实践教程》

    • 推荐:
    • 评价:
    • 当前进度:
  • 《一本书读懂TCP_IP》

    • 推荐:🌒
    • 评价: 不推荐,为什么这样的书也能出版
    • 当前进度: 已看完

  • Linux高性能服务器编程
  • Linux多线程服务器端编程(选看)
  • UNIX 环境高级编程
  • UNIX网络编程卷1(必看,五星推荐)

零.手册类:

  • 《C++程序设计语言(The C++ Programming Language)》
  • 《C++标准程序库(C++ Standard Library Tutorial and Reference) 》
  • 《The C++ IO Streams and Locales》
  • 《The C++ Standard (INCITS/ISO/IEC 14882-2011)》
  • 《Overview of the New C++ (C++11/14) 》
  • 《The Standard C Library》

一.初级入门系列:

  • 《C++ Primer》

  • 《Accelerated C++》

  • 《C++编程思想(Thinking in C++) 》

  • 《C++程序设计原理与实践(Programming: Principles and Practice Using C++ )》

  • 《C++初学者指南》

  • 《Visual.C++.2008入门经典》

  • 《面向对象程序设计—C++语言描述》

  • 《数据结构(C++语言版)第三版_邓俊辉》

二.实用系列:

  • 《深入浅出设计模式》
  • 《设计模式:可复用面向对象软件的基础》
  • 《HeadFirst设计模式》
  • 《大话设计模式》

三.中级进阶系列:

  • 《C++ templates》 +
  • 《C++ 模板完全指南(C++ Templates: The Complete Guide)》
  • 《Beyond the C++ Standard Library(Boost)》
  • 《C和C++安全编码》+

四.高级成神系列:

  • 《C++设计新思维-泛型编程与设计模式之应+用(Modern C++ Design ) 》
  • 《C++模板元编程(C++ Template Metaprogramming)》
  • 《C++ Concurrency In Action》
  • 《Advanced c++ Programming Styles and Idioms 》
  • 《Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming》
  • 《Advanced_Metaprogramming_in_Classic_C 》

书单是抄这里的
https://www.cs.purdue.edu/homes/comer/netbooks.html
+
https://isocpp.org/get-started
http://www.cppstdlib.com/
设计模式

那些年我买过的课程

我的技术路线:学过 C、C++、Java、Rust、Go、Python,看过一点点前端,开发过桌面软件。
决心以后专注 后台开发, 语言主攻C++

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/39132.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注