0. 前言
0.1 维度与层次
C语言技术雷达图从能力角度分为以下三个维度:
针对这三个维度中众多的技术点,有偏重地推荐为两个层次:
- 关键知识技能:表格中标蓝加粗字体为关键的知识技能与技术点;
- 扩展知识技能:未标蓝加粗的内容为推荐的扩展内容,在掌握了关键知识技能的基础上,根据业务的不同可以有选择性地挑选学习。
0.2 雷达图的应用建议
专家团针对每个知识技能给出了掌握程度的评分标准:
- 知道(1分):能说清楚是什么,解决什么问题,了解技术对应的社区的使用情况和学习路径。
- 会用(2分):实现过对应技术的"QuickStart",知道技术的适用场景,能照猫画虎实现需求。
- 熟练(3分):能够在业务场景中用最佳实践解决问题,形成自己的方法论和套路。
- 精通(4分):熟悉技术背后原理,研究过源码,能够解决疑难问题(故障、性能优化以及扩展)。
- 贯通(5分):对该技术的不足比较深入的洞见,能够提出创新性的解决方案,拓展该技术。
使用雷达图的个人或团队可以在初期对自身能力做一次评估,并选择合适的技术方向学习。之后在合适的时间点再次评估,审视是否有进步。
辅助评分的参考工具:excel工具
知识技能雷达excel工具示意图:
1. 通用领域
此章节的内容多为通用技术、知识,可应用于各个业务领域的软件开发活动中。
1.1 设计
1.2 重构
知识技能 | 技术点 | 学习参考 |
---|---|---|
# 重构 | ||
- 重构&坏味道 | 《refactoring》 | |
《嵌入式软件重构方法与实践0.2》 | ||
《重构与模式》 | ||
- 设计模式 | 《计算机程序的构造和解释》 | |
《嵌入式C语言设计模式》 design-patterns-in-c |
1.3 编码
知识技能 | 技术点 | 学习参考 |
---|---|---|
# C 语言 | ||
- 语言特性: 数组 指针 结构体 函数 | 《The C programming Language》 《C现代编程》 | |
- posix api: 文件&目录&I/O 进程&线程 内存 信号 时间 网络 | 《UNIX环境高级编程》 《UNIX编程艺术》 《Linux系统编程》 | |
- 通用及安全编码规范 | 《华为C语言编程规范》 | |
- 内存安全 | 《C陷阱与缺陷》 | |
# 算法与数据结构 | ||
- 基本数据结构: 数组、链表、栈、队列、二叉树、图 | 慕课网课程 | |
- 基本算法: 查找、排序、分治递归、动态规划、贪婪、一致性哈希 | 慕课网课程 | |
# 系统支撑 | ||
- 编译: 编译 链接 加载 执行 | 《程序员的自我修养--链接、装载与库》 | |
- 网络: TCP UDP IP ARP | 《TCP/IP详解卷》 | |
- 计算机组成: 内存 cache cpu | 《深入理解计算机系统》 | |
- 内嵌汇编 | How to Use Inline Assembly Language in C Code | |
- 网络工具 | 《wireshark网络分析就这么简单》 《wireshark网络分析的艺术》 tcpdump |
1.4 测试与调试
知识技能 | 技术点 | 学习参考 |
---|---|---|
# 开发者测试 | ||
- 测试分层: Unit testing Integration testing System testing Operational acceptance testing | 《单元测试之道》 《测试驱动的嵌入式C语言开发》 | |
- 开发者测试框架: gtest DTCenter | gtest | |
# 调试 | ||
- 单步调试: debuger breakpoints threading condition breakpoint watch | gdb |
2. 业务领域
此章节的内容多为某个业务领域的特定技术、知识,同时也是业界经典范例,强烈推荐学习参考。
知识技能 | 技术点 | 学习参考 |
---|---|---|
# 硬件管理 | ||
- 设备驱动开发 | 《Linux设备驱动开发详解》 | |
# 调度 | ||
- 网络调度 | Nginx 《深入理解Nginx模块开发与架构解析》 | |
libuv | ||
libevent | ||
- 存储 | redis | |
# 高性能计算/中间件 | ||
- 高性能RPC | gRPC | |
- 消息队列 | zeromq |
3. IT基础
此章节的内容多为软件开发活动中一些推荐掌握的技能、知识,熟练掌握和运用这些技能对软件开发的效率、质量都有较好的帮助。
知识技能 | 技术点 | 学习参考 |
---|---|---|
# Linux工具链 | ||
- 脚本语言:shell,python | 《UNIX Power Tools》 | |
- perf 工具 | ||
- 基础命令、SSH、SNMP、SFTP等 | ||
- readelf、objdump、nm | ||
# 版本管理(VCS) | ||
- Git、Gitlab、Github | Git官网 Git实践练习 | |
- svn | ||
# IDE/TOOLS | ||
NextCode | VSCode Refactoring | |
Eclipse-CDT | Eclipse Refactor Actions | |
CLion | CLion Refactor Help | |
# CI/构建 | ||
CMake | 《CMake CookBook》中文 | |
Makefile | 《跟我一起写makefile》 | |
代码静态检查 | ||
Pclint | ||
coverity | ||
fortify | ||
valgrind | ||
ASAN |