开源一套正在建设的现代 C++ 教程!

开源一套正在建设的现代 C++ 教程!

🚀开源一套正在建设的现代 C++ 教程!

笔者吐槽:靠有点像卖课的,但真不是,笔者纯出于兴趣维护的。笔者想了想,有时候光看各种各样的文章。显得太零碎。亮出来代码示例吧,显得太冗余。那为什么不专门维护一个仓库好好做这个事情呢?

所以笔者决定,试试看利用Github仓库托管一下。

TL;DR

好的教程都有TL;DR,一句话——这边请:

GitHub Pages: 点击访问,获得更好更加流畅的阅读体验(嘶,Github静态网页有可能访问速度比较慢,如果有朋友有需求,可以尝试看看下面的仓库克隆下来本地预览)

啥,想看看原仓库,在这里:

👉:Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP: 现代 C++ 嵌入式(MCU/Linux)开发完整教程,深入讲解 C++11–C++23、零开销抽象、RAII 与性能优化!

现在正在想办法看看支持模拟机和真机实战确保代码可靠。(别喷别喷,方案真没想好,感兴趣的话朋友随意在评论区提意见,小的速速核时是否可行!)

所有的文章还会持续的在公众号,知乎和ZEEKLOG上进行同步!请各位放心(含泪干活中)


项目介绍

Tutorial_AwesomeModernCPP 是一套完整的、系统化的嵌入式现代 C++ 开发教程。不计划只停留在简单的语法介绍,因为那样,我们更应该去看CPPReference。而是尝试探讨如何在嵌入式系统中高效使用 C++,涵盖性能优化、内存管理、硬件交互等核心主题。

🌟 项目亮点

1️⃣ 系统化的知识体系

教程从零开始,循序渐进地构建知识体系:

Chapter 0: 前言与基础 ──────┐ Chapter 1: 构建工具链 │ Chapter 2: 零开销抽象 ├── 核心基础 Chapter 3: 内存与对象管理 │ Chapter 4: 编译期计算 ─┘ │ ├─→ Chapter 5: 内存管理策略 ├─→ Chapter 6: RAII 与智能指针 ├─→ Chapter 7: 容器与数据结构 ├─→ Chapter 8: 类型安全与工具类型 ├─→ Chapter 9: 函数式编程特性 └─→ Chapter 10: 并发与原子操作 
2️⃣ 完整的代码示例
  • 160+ 可独立编译的代码文件
  • 44 个 CMake 项目
  • 涵盖 STM32、Linux 等多种平台
  • 每个示例都有详细注释
// 示例:RAII 管理 GPIO 引脚classGPIOPin{public:GPIOPin(uint8_t pin, GPIODir dir)noexcept{hal_gpio_config(pin_, dir);}~GPIOPin()noexcept{// 自动恢复引脚状态hal_gpio_config(pin_, GPIODir::Input);}// 禁止拷贝,允许移动GPIOPin(const GPIOPin&)=delete;// ...};
3️⃣ 现代化的学习体验
  • 🏷️ 标签分类 - 按主题快速查找相关内容
  • 📊 难度分级 - beginner / intermediate / advanced
  • 🔍 智能导航 - 自动推荐相关文章
  • ⏱️ 阅读时间 - 帮助规划学习进度

核心内容预览

📚 零开销抽象

教你如何在嵌入式环境中安全使用 C++ 的抽象能力,而不产生额外的运行时开销。

🧠 RAII 与智能指针

资源自动管理是 C++ 的杀手锏。在嵌入式场景下,RAII 可以让你的外设管理更安全、更简洁。

📦 嵌入式友好的容器

std::arraystd::span、循环缓冲区…掌握这些工具,告别裸数组操作。

⚡ 编译期编程

constexprconsteval、模板元编程…把计算从运行时转移到编译时,零开销!

🔗 并发与原子

在多核 MCU 上编写安全的高效代码,掌握 std::atomic 和内存模型。


如何开始学习

🌐 在线阅读

教程已部署为静态网站,方便随时访问:

GitHub Pages: 点击访问

💻 本地运行

哈?你说想本地跑起来吗?

# 克隆仓库git clone https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP.git cd Tutorial_AwesomeModernCPP # 安装依赖并启动预览bash scripts/mkdoc_setup_local_dependency.sh bash scripts/local_preview.sh # 打开浏览器访问 http://127.0.0.1:8000

📖 学习建议

  1. 按顺序学习 - 教程设计循序渐进,建议从 Chapter 0 开始
  2. 动手实践 - 每个示例代码都可以独立编译运行
  3. 参考标签 - 遇到问题时,通过标签系统查找相关内容
  4. 循序渐进 - 根据难度等级选择适合的内容

适用人群

人群收益
嵌入式 C 开发者掌握现代 C++,提升代码质量
C++ 初学者了解 C++ 在嵌入式中的正确用法
嵌入式工程师学习资源受限环境下的最佳实践
计算机专业学生系统学习嵌入式 C++ 开发

开源贡献

本项目由 Awesome Embedded Learning Studio 维护,采用 MIT 协议开源。我们欢迎任何形式的贡献:

  • 📝 修正错别字和语法错误(别骂了别骂了,真是笔误)
  • 💡 提出改进建议(仓库有些CI流程,但是笔者不太熟悉CI,其他地方都可以随意Issue)
  • 🔧 提交代码改进(一些代码示例并不好,或者写法非常不规范,笔者也是C++刚学没太久,希望各位前辈批评!)
  • 📖 完善文档(有一些笔者必须指出是AI写,我审核修改的,肯定有不完美的地方,欢迎批评!)
  • 🐛 报告 Bug(Issue,请,速速修我)

仓库地址: https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP


结语

每一次写文章都要纠结一会结语。那就这样——

换一种更新的方式,理解现代C++。也让嵌入式开发更现代、更高效、更优雅!

私货时间

到这里就可以溜了各位,下面是笔者的真私货

Read more

OpenClaw Ubuntu 24.04.4 安装指南

OpenClaw部署(Ubuntu 24.04.4 ) 概述 系统要求 * Node.js 22+:安装脚本可自动检测并安装(下文补充手动安装方案); * Ubuntu 24.04.4(本文重点),也支持 macOS/Windows(Windows 推荐 WSL2); * pnpm:仅从源码构建时需要。 安装方法 方法一:推荐安装脚本(一键式) 脚本自动完成 Node.js 检测/安装、CLI 全局安装、启动引导向导,是最省心的方式。 标准安装(含引导) curl -fsSL https://openclaw.ai/install.sh | bash 如下图所示: 安装完后进入设置页面如下图所示:

By Ne0inhk

手把手教你部署Komari监控:轻量级服务器探针搭建全记录

前言 最近在整理手头的几台服务器,一直想找个趁手的监控工具。以前用过Zabbix,功能确实强,但配置起来总觉得有点重;哪吒监控也不错,不过有时候就想换个轻量点的试试。前两天逛GitHub的时候发现了Komari这个项目,一眼就被它的简洁风格吸引了。 Komari是一个用Go语言写的自托管监控工具,最大的特点就是轻量——官方说二进制文件本身只有十几兆,跑起来内存占用也很低。它的界面长得有点像现在流行的“探针”风格,可以直观地看到CPU、内存、磁盘、网络流量这些基础指标,还支持多台服务器统一管理。 我觉得它比较适合两类人:一是想自己掌控数据、不想用第三方监控服务的个人开发者,二是需要快速部署、不喜欢折腾复杂配置的小团队。数据都存在自己的服务器里,没有隐私方面的顾虑。 这篇教程没有任何“高大上”的理论,就是把我自己从零开始部署的步骤一步一步记下来。哪怕你之前没怎么用过Linux,只要会敲命令、能连上服务器,跟着做应该也能跑起来。我会尽量把每步在做什么说清楚,而不是简单地让你“复制粘贴”。 一、准备工作 在正式开始之前,需要先确认几样东西准备好了。 1. 准备一台具备公网IP的

By Ne0inhk
【Linux】Linux 系统的目录结构详解

【Linux】Linux 系统的目录结构详解

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Linux这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 【Linux】Linux 系统的目录结构详解 📁 * 1. Linux 目录结构概述 🌐 * 2. 根目录 (/) —— 系统的起点 🚩 * 3. /bin —— 基本命令的家 🛠️ * 4. /sbin —— 系统管理员的工具箱 🛠️ * 5. /lib 和 /lib64 —— 系统库的家园 📦 * 6. /etc —— 系统配置的中枢 📝 * 7. /home —— 用户的私人天地 🏠 * 8. /usr —— 用户程序的宝库 📚 * 9. /var —— 变化的数据中心 🔄 * 10. /dev —— 设备的入口 🖥️ * 11. /proc —— 进程的虚拟文件系统

By Ne0inhk
Ubuntu 环境安装 之 RabbitMQ 快速入手

Ubuntu 环境安装 之 RabbitMQ 快速入手

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。 Ubuntu 环境安装 * 前言 * 一、什么是MQ(消息队列) * MQ多用于分布式系统之间进行通信 * 二、MQ的作用 * 1、异步解耦 * 2、流量削峰 * 3、消息分发 * 4、延迟通知 * 三、为什么选择 RabbitMQ * 1、Kafka * 2、RocketMQ * 3、RabbitMQ * 四、RabbitMQ 快速上手 * 1、Ubuntu 环境安装 * 2、安装Erlang * 3、

By Ne0inhk