软件技术雷达 c++

JAVA

https://www.pdai.tech/

ThoughtWorks 

Tech Radar 网页地址是 https://www.thoughtworks.com/radar 

c++

0. 前言

0.1 维度与层次

C++语言技术雷达图从能力角度分为以下三个维度:

针对这三个维度中众多的技术点,有偏重地推荐为两个层次:

  • 关键知识技能:表格中标蓝加粗字体为关键的知识技能与技术点;
  • 扩展知识技能:未标蓝加粗的内容为推荐的扩展内容,在掌握了关键知识技能的基础上,根据业务的不同可以有选择性地挑选学习。

0.2 雷达图的应用建议

专家团针对每个知识技能给出了掌握程度的评分标准:

  • 知道(1分):能说清楚是什么,解决什么问题,了解技术对应的社区的使用情况和学习路径。
  • 会用(2分):实现过对应技术的"QuickStart",知道技术的适用场景,能照猫画虎实现需求。
  • 熟练(3分):能够在业务场景中用最佳实践解决问题,形成自己的方法论和套路。
  • 精通(4分):熟悉技术背后原理,研究过源码,能够解决疑难问题(故障、性能优化以及扩展)。
  • 贯通(5分):对该技术的不足比较深入的洞见,能够提出创新性的解决方案,拓展该技术。

使用雷达图的个人或团队可以在初期对自身能力做一次评估,并选择合适的技术方向学习。之后在合适的时间点再次评估,审视是否有进步。

辅助评分的参考工具:excel工具

知识技能雷达excel工具示意图:

1. 通用领域

此章节的内容多为通用技术、知识,可应用于各个业务领域的软件开发活动中。

1.1 设计

知识技能技术点学习参考
# 架构设计  
 - 面向对象设计《面向对象是怎么工作的》
  Introduction to Object-Oriented Programming
 - 领域驱动设计《领域驱动设计:软件核心复杂性应对之道》
  《实现领域驱动设计》
  martinfowler domain_driven_design
 - 架构模式《面向模式的软件架构》卷一
《面向模式的软件架构》卷二
《面向模式的软件架构》卷三
《面向模式的软件架构》卷四
《面向模式的软件架构》卷五
  《企业应用架构模式》
 - 演进式架构《浮现式设计》
  《演进式架构》
  《Building Evolutionary Architectures》
  evolutionaryarchitecture.com
  Evolutionary_Architecture_Keynote_by_Neal_Ford
  martinfowler evo_arch_forward
  is design dead - Martin Fowler
  《软件演进式设计与领域建模》(公司优秀MOOC课程)
 - 4+1视图运用RUP 4+1视图方法进行软件架构设计
公司软件教练组系列视频:
架构设计4+1视图实践分享
# 安全设计  
 - 威胁建模华为网络安全技术社区:威胁分析
 - 安全设计模式公司安全设计模式
# 设计原则 & 设计模式  
 - 设计原则SOLID 设计原则Robert C. Martin论文合集
  Solid-Relevance(uncle-bob)
  迪米特法则LKP
 - 设计模式《设计模式:可复用面向对象软件的基础》
  《Head First Design Patterns: A Brain-Friendly Guide》
  《微服务架构设计模式》

1.2 重构

知识技能技术点学习参考
# 重构  
 - 重构&坏味道(重构方法论及手段)《refactoring》
  《重构与模式》
  《嵌入式软件重构方法与实践0.2》

1.3 编码

知识技能技术点学习参考
# C ++语言  
 - 语言特性(C++17版本)语言学习:
《C++语言导学》
《C++ Primer 中文版(第 5 版)》: 针对C++11版本
《C++ Concurrency in Action, 2nd》(建议读原版)
《现代 C++ 教程:高速上手 C++11/14/17/20》
  语言参考:
C++ 参考网站
ISO C++官方网站
 - 标准库&三方库:
STL
《C++标准库自学教程与参考》
C++ 参考网站
 - BoostBoost:通用C++库集合
 - 进阶指南&优秀案例推荐基础进阶学习:
《Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14》
《Effective Modern C++ 中文版》
《C++ Coding Standards:101 Rules, Guidelines, and Best Practices》
《C++编程规范:101条规则、准则与和最佳实践》
现代C++实战30讲
  推荐高手学习:
《Modern C++ Design: Generic Programming and Design Patterns Applied》
《C++ 设计新思维》
C++ 函数式编程
如何优雅的实现 C++ 编译期静态反射
What is the copy-and-swap idiom?
Inheritance is the base class of evil
constexpr function parameters
 - 通用及安全编码规范《华为C++语言编程规范》
# 算法与数据结构  
 - 基本数据结构:
数组、链表、栈、队列、二叉树、图
慕课网课程
 - 基本算法:
查找、排序、分治递归、动态规划、贪婪、一致性哈希
慕课网课程
# 系统支撑  
 - 编译:
编译
链接
加载
执行
《程序员的自我修养--链接、装载与库》
 - 网络:
TCP
UDP
IP
ARP
HTTP
《TCP/IP详解卷》
网络协议原文参考
 - 计算机组成:
内存
cache
cpu
《深入理解计算机系统》
 - x86/ARM/RISC-V调用规范Procedure Call Standard for the
ARM 64-bit Architecture

System V Application Binary Interface
AMD64 Architecture Processor Supplement(3.2章节)

RISC-V-Calling
 - 网络工具《wireshark网络分析就这么简单》
《wireshark网络分析的艺术》
tcpdump

1.4 测试、调试与性能调优

知识技能技术点学习参考
# 开发者测试  
 - 测试分层:
Unit testing
Integration testing
System testing
Operational acceptance testing
《单元测试之道》
《测试驱动的嵌入式C语言开发》
 - 开发者测试框架:
gtest
DTCenter
gtest/gmock入门
google/benchmark
DTCenter
# 调试  
 - 单步调试:
debuger
breakpoints
threading
condition breakpoint
watch
gdb
《软件调试 第2版》
# 性能调优  
 - 体系架构cache & profiling方法Software optimization resources
C++性能调优纵横谈
《C++性能优化指南》

公司软件教练组系列文章:
丁兆杰 数据Cache预取技术系列
丁兆杰 利用Cachegrind帮助优化D-Cache命中率
左春伟 性能之巅:定位和优化程序CPU、内存、IO瓶颈
左春伟 软件教练说:性能优化与性能设计
左春伟 高质量C/C++程序设计
左春伟 软件架构-解构高并发
金晶 高性能并行计算纵横谈
白玉刚 内存优化经验分享
Mike Guangxuan Liu 性能优化之算法优化
丁兆杰 使用Valgrind工具集进行Cache性能调优
丁兆杰 L2中的位运算

2. 业务领域

此章节的内容多为某个业务领域的特定技术、知识,同时也是业界经典范例,强烈推荐学习参考。

知识技能技术点学习参考
# 多媒体处理  
 - 多媒体处理
音视频编解码
流媒体协议
网络协议
图像算法
音视频算法库
ffmpeg
opencv
RTP: A Transport Protocol for Real-Time Applications
Real Time Streaming Protocol (RTSP)
RTP Control Protocol (RTCP)
Real-Time Streaming Protocol (RTSP)
HTTP Live Streaming
# AI  
 - AI框架:
Caffe
Caffe Tutorial
Caffe Documentation & Examples
Caffe source code
 pytorch莫烦pytorch动态神经网络
pytorch官方文档
《动手学深度学习(pytorch版)》
 tensorflow机器学习速成课程
tensorflow编程人员指南
理论机器学习和高级机器学习
《tensorflow深度学习》
 mindsporemindspore官方教程
《深度学习与MindSpore实践》
 - 机器学习库:
xgboost
xgboost官方指南
《深入理解XGBoost:高效机器学习算法与进阶》
 scikitlearnscikit-learn用户指南
《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》
# 高性能计算/中间件  
 - 高性能RPCgRPC
 - 消息队列zeromq
# 网络编程  
 网络编程/序列化ACE :C++面向对象网络编程工具包
libjson :轻量级的JSON库
 网络调度Libev:开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施
Thrift:高效的跨语言IPC/RPC
# 存储/分布式Cache  
 存储/分布式CacheSQLite:一个完全嵌入式的,功能齐全的关系数据库
Memcached:高性能的分布式内存对象缓存系统
ClickHouse
# 高性能计算  
 高性能计算库Armadillo - C++ library for linear algebra & scientific computing
OpenBLAS - An optimized BLAS library
Intel Math Kernel Library
GNU Octave
# 加解密  
 OpenSSLOpenSSL

3. IT基础

此章节的内容多为软件开发活动中一些推荐掌握的技能、知识,熟练掌握和运用这些技能对软件开发的效率、质量都有较好的帮助。

知识技能技术点学习参考
# Linux工具链  
 - 脚本语言:shell,python《UNIX Power Tools》
《鸟哥的Linux私房菜》
《Linux与Unix Shell编程指南》
《Linux Shell核心编程指南》
 - 性能分析工具:
perf 工具
gperftool(google)
火焰图
Linux kernel profiling with perf
Perf -- Linux下的系统性能调优工具-Part 1
Perf -- Linux下的系统性能调优工具-Part 2
perf Examples
gperftool
火焰图
 - 编译工具链:
GCC
LLVM/Clang
GCC官网
《编译原理》(龙书)
LLVM入门
Clang 编译器用户手册
# 版本管理(VCS)  
 - Git、Gitlab、GithubGit官网
Git实践练习
 - gerrit 
# IDE/TOOLS  
 NextCodeVSCode Refactoring
 wecodewecode
 CLionCLion Refactor Help
 Eclipse-CDTEclipse Refactor Actions
 Sublime-textSublime-text
 Typora(markdown编辑器) 
# CI/构建  
 CMake《CMake CookBook》中文
 Makefile《跟我一起写makefile》
# 代码静态检查  
 Pclint 
 coverity 
 fortify 
 clang-tidy 
 ASAN 
 valgrind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值