目录
在 C++ 的世界里,有着丰富多样的岗位方向,每个方向都有其独特的技能要求和发展前景。本文将详细介绍 C++ 后台服务器开发、云原生、音视频流媒体、虚拟化和网络安全这五个主要岗位方向。
一、C++ 后台服务器开发
1. C++ 后台所需要具备的技能
- 软件基础:
- 数据结构与算法:掌握常见的数据结构(如链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够在实际开发中选择合适的数据结构和算法解决问题。
- 设计模式:熟悉常见的设计模式(如单例模式、工厂模式、观察者模式等),提高代码的可维护性和可扩展性。
- C++ 新特性:了解 C++ 的新特性,如智能指针、lambda 表达式、模板元编程等,提升开发效率和代码质量。
- Linux 工程管理:熟悉 Linux 下的开发环境,掌握 Makefile、CMake 等工程管理工具的使用。
- 高性能网络:
- 网络编程:掌握 socket 编程,了解 TCP/IP 协议栈,能够实现高性能的网络通信。
- 网络原理:深入理解网络协议、网络拓扑、路由等网络原理,为网络编程提供理论支持。
- 协程:了解协程的概念和使用方法,提高网络服务的并发性能。
- 用户态协议栈:掌握用户态协议栈的实现原理和使用方法,优化网络性能。
- 基础组件:
- 池式组件:实现连接池、线程池等池式组件,提高资源利用率和系统性能。
- 高性能组件:开发高性能的网络库、数据库连接库等组件,满足高并发场景的需求。
- 开源组件:熟悉常用的开源组件,如 Boost、POCO 等,能够在项目中合理应用。
- 中间件:
- MySQL:掌握 MySQL 数据库的安装、配置、优化,熟悉 SQL 语言,能够进行数据库设计和开发。
- Redis:了解 Redis 的数据结构、使用场景和性能优化,能够在项目中使用 Redis 进行缓存和数据存储。
- Nginx:熟悉 Nginx 的配置和使用,能够进行反向代理、负载均衡等操作。
- MongoDB:掌握 MongoDB 的安装、配置和使用,了解 NoSQL 数据库的特点和优势。
- Elasticsearch:熟悉 Elasticsearch 的安装、配置和使用,能够进行全文搜索和数据分析。
- 开源框架:
- Skynet:了解 Skynet 框架的架构和使用方法,能够开发高性能的分布式游戏服务器。
- DPDK:掌握 DPDK 的安装、配置和使用,能够进行高性能的网络数据包处理。
- TARS:熟悉 TARS 框架的架构和使用方法,能够开发高性能的分布式服务。
- Rust:
- Rust 特性:了解 Rust 语言的特点和优势,如内存安全、并发安全等。
- 网卡速度监控:掌握使用 Rust 进行网卡速度监控的方法。
- OAuth2 第三方登陆:了解 OAuth2 协议,能够使用 Rust 实现第三方登陆功能。
- tokio:熟悉 tokio 异步编程框架的使用方法,能够开发高性能的异步网络服务。
- Warp:了解 Warp 网络框架的使用方法,能够进行高性能的网络编程。
- hyper:掌握 hyper 网络库的使用方法,能够进行 HTTP 协议的开发。
- 性能分析:
- 测试框架 gtest 以及内存泄漏检测:熟悉使用 gtest 进行单元测试,掌握内存泄漏检测的方法和工具。
- 火焰图的生成原理与构建方式:了解火焰图的生成原理,能够使用工具生成火焰图进行性能分析。
- 分布式架构:
- 分布式消息:了解分布式消息队列的原理和使用方法,如 Kafka、RabbitMQ 等。
- 分布式服务:掌握分布式服务框架的架构和使用方法,如 Dubbo、Spring Cloud 等。
- 分布式 API 网关:熟悉分布式 API 网关的功能和使用方法,如 Zuul、Kong 等。
- 分布式存储:了解分布式存储系统的原理和使用方法,如 HDFS、Ceph 等。
- 微服务:
- IM 消息服务器 / 文件传输服务器:掌握开发 IM 消息服务器和文件传输服务器的方法和技术。
- 消息服务器 / 路由服务器:了解消息服务器和路由服务器的功能和架构,能够进行开发和优化。
- 数据库代理服务器设计:掌握数据库代理服务器的设计和实现方法,提高数据库的性能和安全性。
- 文件服务器和 docker 部署:熟悉文件服务器的开发和 docker 部署方法,实现容器化部署。
二、云原生
2. 云原生的四要素
- 微服务:
- 依据康威定律进行服务切分,使服务解耦、内聚更强、变更更易。可依据 DDD(领域驱动设计)进行服务划分。
- 容器化:
- Docker 是应用广泛的容器引擎,基于 LXC 技术,为微服务提供实施保障,起到应用隔离作用。
- K8S(Kubernetes)是容器编排系统,用于容器管理、容器间的负载均衡。
- DevOps:
- DevOps 是开发和运维的组合,是一种敏捷思维、沟通文化和组织形式,为云原生提供持续交付能力。
- 持续交付:
- 持续交付是不误时开发、不停机更新,采用小步快跑的方式,反传统瀑布式开发模型。要求开发版本和稳定版本并存,需要很多流程和工具支撑。
三、音视频流媒体
3. 音视频流媒体所需要具备的技能
- 音视频基础:
- FFMPEG 环境搭建:掌握 FFMPEG 的安装和配置方法。
- 音视频基础:了解音视频的基本概念、编码格式、封装格式等。
- FFMPEG 编程:
- FFMPEG 命令:熟悉 FFMPEG 的各种命令,能够进行音视频的转码、剪辑等操作。
- 音视频渲染:掌握音视频渲染的方法和技术,实现高质量的音视频播放。
- FFmpeg API:了解 FFMPEG 的 API 接口,能够进行二次开发。
- 音视频编码:熟悉音视频编码的原理和方法,如 H.264、AAC 等。
- 音视频封装格式:了解常见的音视频封装格式,如 MP4、FLV 等。
- 音视频过滤器:掌握使用音视频过滤器进行特效处理的方法。
- 播放器开发:开发音视频播放器,实现音视频的播放功能。
- ffplay 播放器:了解 ffplay 播放器的使用方法和原理。
- ffmpeg 录制转码:掌握使用 ffmpeg 进行录制和转码的方法。
- 流媒体:
- rtmp 流媒体:了解 RTMP 协议,能够实现 RTMP 流媒体服务器和客户端的开发。
- hls 流媒体:熟悉 HLS 协议,开发 HLS 流媒体服务器和客户端。
- http-flv 流媒体:掌握 HTTP-FLV 协议,实现 HTTP-FLV 流媒体服务器和客户端。
- RTMP/HLS/HTTP-FLV 流媒体服务器:开发支持多种流媒体协议的服务器。
- RTSP 流媒体:了解 RTSP 协议,能够进行 RTSP 流媒体服务器和客户端的开发。
- WEBRTC:
- WebRTC 中级开发:掌握 WebRTC 的基本原理和开发方法,实现音视频通话功能。
- WebRTC 高级开发:深入了解 WebRTC 的技术细节,进行高级功能的开发。
- Janus 服务器源码:了解 Janus 服务器的源码结构,能够进行二次开发。
4. 音视频流媒体薪资情况
音视频流媒体领域的薪资相对较高,具体薪资水平取决于个人的技能水平、经验和所在地区等因素。一般来说,有一定经验的音视频开发工程师的薪资在行业中处于较高水平。
5. 音视频流媒体应用场景
- 视频点播:如在线视频平台、影视网站等。
- 视频会议:实现远程视频会议功能。
- 远程教育:提供在线教育的视频直播和互动功能。
- 远程医疗:支持远程医疗会诊和手术指导等。
- 短视频:短视频平台的核心技术之一。
- 在线直播系统:如游戏直播、电商直播等。
6. 主流的流媒体协议
主流的流媒体协议主要有 RTMP、HLS、RTSP 等。
7. 音视频流媒体学习资料
音视频开发 - c/c++ 程序员的黄金方向(ffmpeg、webrtc、rtmp、rtsp、srs 流媒体服务器...)。
四、虚拟化
8. 虚拟化所需要具备的技能
- 两种架构、三个知识点:
- 两种架构:
- 共享存储的传统架构:了解传统架构的特点和应用场景。
- SAN 的 “超融合” 架构:掌握 “超融合” 架构的优势和实现方法。
- 三个知识点:
- 计算:了解常用服务器的基础配置、最高配置(CPU、内存、硬盘接口与数量、单个硬盘支持的最大容量、网卡接口、速度,底层管理等),能够为项目选择合适的服务器。
- 存储:了解常用存储的接口(iSCSI、SAS 或 FC)、配置(硬盘类型、数量)、支持的 RAID、可扩充性、报价等。
- 网络:了解常用网络交换机、光纤存储交换机的品牌、型号,了解网络交换机的速度、接口数量、可扩充性等。
- 两种架构:
- 虚拟化系统集成:
- 去企业机房,了解总体情况,包括机柜数量、每个机柜中的设备、空闲机位和网络剩余接头等。
- 了解企业现有服务器与存储数量、配置、接口等。
- 掌握网络拓扑、出口带宽、网络设备(路由器、交换机等)。
- 硬件知识:
- 熟悉交换机、存储、服务器等硬件设备的特点和使用方法。
- 网络与软件知识:
- 了解 TCP/IP 协议、IP 地址的分类、子网划分等内容。
- 掌握华为交换机的基本配置(划分 VLAN、配置 LACP 等)。
- 掌握 Windows 的 Active Directory 的知识,掌握 Windows Server 中 DHCP、DNS、Active Directory、证书、KMS 的知识。
- 熟悉 vSphere 产品安装、配置、故障排除:
- vSphere 5.5 系列:掌握 vCenter Server 安装、ESXi 安装、配置,创建虚拟机等。熟悉虚拟机备份、恢复。
- vSphere 6.0 系列:了解 vCenter Server 安装、ESXi 安装、VSAN、配置等。
- vSphere 6.5 系列:熟悉 vCenter Server、ESXi、vCenter HA、VSAN。
- Horizon View 桌面系列:了解 Horizon View 7.0、6.0。
- 熟悉 VMware P2V 工具、VMware VDP、vCops 等。
- 熟悉或精通 VMware Workstation。
五、网络安全
9. 网络安全所需要具备的技能
- 如果想做逆向,那么要掌握汇编。
- 如果想做数据库注入,那么要学 SQL。
- 如果想做 XSS,那么要学 JavaScript。
- 如果想找驱动和内核的漏洞,那么要熟悉内核。
10. 网络安全薪资情况
网络安全领域的薪资水平较高,随着对网络安全的重视程度不断提高,薪资还有进一步上升的趋势。
11. 网络安全应用场景
- 园区门禁(网络隔离):工业防火墙、工业网闸。
- 楼宇门禁(区域隔离):工业防火墙。
- 办公室门禁(具体职能单元 / 主机安全):工业主机安全卫士。
- 摄像头安防系统(网络监测与告警):工业安全审计监测、网络入侵检测。
- 中控室控制大厅(安全管理、安全运维、安全审计):安管平台、日志审计、堡垒机。
- 车联网安全。
- 城市安全。
- 社区安全。
- 家庭安全。
- 移动应用安全。
12. 网络安全前景价值
网络安全为数字未来创造了巨大的价值。在智能制造时代,工业大数据作为制造企业的核心资产之一,其重要性不言而喻。随着新兴技术在工业生产领域的深度渗透,带来了新的网络安全挑战。制造业企业已成为网络犯罪分子、勒索软件和国家黑客的首要目标。由于工业信息安全事件频发和政策标准的落地,单纯的工业信息安全防护产品已无法满足工业企业用户需求,安全体系设计和规划服务需求应运而生。
总之,C++ 在不同的岗位方向上都有着广泛的应用和发展前景。根据自己的兴趣和技能,选择适合自己的岗位方向,不断学习和提升自己的能力,才能在 C++ 的世界里取得成功