C/C++学习方向:就业领域与未来前景

 

所以,如果你希望把工作当成事业、深入了解软件编程的主心骨,那么C/C++这一类底层语言,是你一定要学习和掌握的。

 

特别是C++,作为C语言的延伸和强化,它一直是大公司大厂钦点的开发语言。

 

 

 

如今自学成风,C++也不乏大佬自学。但是,在初期找不到感觉和项目练手写代码的话,学习效率非常低。这里给大家找到了一个全面的、众多初学者认可的C/C++学习计划。

 

每一部分计划的最后,还有学习资料可以领取。让你少走些弯路,一直是我们的愿景。

一、嵌入式

(一)嵌入式就业领域

 

 

1、就业领域:

物联网、智能家居、智能医疗、智能汽车电子、智能硬件产品开发等

 

2、具体职位:

嵌入式软件工程师、嵌入式硬件工程师、嵌入式系统工程师、嵌入式应用/驱动/内核/移植工程师等

 

(二)嵌入式知识架构体系

1、懂硬件

懂硬件的一些原理,至少能看懂原理图,会设计原理图加分;

PCB设计软件Altium Designer,PADS等;

会结构设计,会焊板,交付专业制板公司制板

 

2、C/C++语言数据结构以及简单算法

基本C/C++语法、数据类型、数组、指针、结构体、链表、类、模板、文件操作、队列、栈等

 

3、Linux操作系统基础

Linux操作系统的概念、安装方法;

详细了解Linux下的目录结构、基本命令、编辑器VI、编译器GCC、调试器GDB和Make 项目管理工具;

Makefile Shell脚本编写等知识;

嵌入式开发环境的搭建;

SDK做二次开发

 

4、Linux网络编程

TCP/IP协议、socket编程、TCP/UDP网络编程、HTTP;

走物联网方向,一定要熟悉一些云存储相关的网络接口,比如亚马逊、阿里云等

 

5、外设协议射频

简单通信接口:UART、I2C、SPI、CAN、USB、GPIO、WiFi、SDIO芯片;

网络通信接口:以太网;

其它输入接口:键盘、鼠标、AD器件、LCD、433、2.4G等无线通信模块;

走物联网方向,一定要熟悉MQTT协议

 

6、了解嵌入式平台系统原理

系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备;

Linux平台包括:内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader制作与原理分析、根文件系统制作,以及向内核中添加自己的模块,完整的移动软件

 

7、驱动开发

熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作;

熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识;

熟悉处理器各资源、掌握Linux设备驱动原理框架;

熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发;

在工作中能独立胜任底层驱动开发,做好配置

 

三)嵌入式公司推荐

一线:华为海思、中兴通讯、C/C++

二线:米尔科技、周立功、联发科

 

(四)项目推荐(附源码)

某智能锁厂锁后板源码

 

 

二、桌面应用程序开发(MFC/QT)

(一)桌面应用就业方向

传统工业公司、工控、数字图像软件、图形渲染引擎、上位机、逆向、UI、视频会议等

 

(二)桌面应用知识架构体系

1、C/C++语言常用数据结构以及常用设计模式

基本C/C++语法;

数据类型、数组、指针、结构体、链表、文件操作、队列、栈、二叉树、单例;

工厂模式、策略模式等设计模式

 

2、控件和组件应用

VC++控件,组件、MFC文档类;

Menu、Windows消息;

sendmsg函数、动态链接库;

Qt Core、Qt GUI、Qt Multimedia、Qt Multimedia Widgets、Qt Network、Qt QML、Qt Quick、Qt SQL、Qt Test、Qt Widgets等Qt基本模块(Qt Essentials);

应用QPainter绘图系统、QSS样式表,实现各种自绘窗口

 

3、操作系统原理和IDE

Windows核心编程、多线程、多进程、线程同步以及进程间的通信;

字符解析协议,如XML和Json;

熟悉VS和QT环境

 

4、网络编程

TCP/IP协议、socket编程、HTTP;

重点学习网络编程相关API;

了解HTTP协议及其实现方法;

熟悉UDP广播、多播的原理及编程方法;

掌握混合C/S架构网络通信系统设计;

QTCP、QHttp等实现网络编程;

异步非阻塞框架IOCP等

 

5、调试技术

IDA+windbg高级调试Windows;

产生dump文件进行代码调试;

使用DebugView工具调试

 

6、数据库设计

掌握SQL语言的实用技巧;

SQLite与Oracle、MySQL的使用方式及区别

 

7、良好的框架设计

 

(三)桌面应用公司推荐

道通科技、深信服、今日头条、迅雷、百度、360、酷狗

 

四)项目推荐(附源码)

超级任务管理器:processhacker

 

 

三、 图像处理与音视频开发

(一)图像处理与音视频就业方向

流媒体、大学里的研究所、今日头条 (抖音)、优酷 /B站

 

(二)图像处理与音视频知识架构体系

1、C/C++语言和设计模式

基本C/C++语法、数据类型、数组、指针、类、模板等;

常用的设计模式

 

2、OpenCV/OpenGL知识体系和各种图像格式和视频格式

OpenCV的环境配置,数字图像处理相关知识;

图像滤波,图像识别,膨胀,腐蚀,直方分布图,二值化,灰度,目标识别、检测、定位等图像处理相关技术;

模式识别相关算法如二值化,SIFT特征,边缘轮廓检测等;

计算机图形学/计算机视觉/相机标定;

三维建模;

各种图像格式的基本概念;

rgb yuv jpg;FFmpeg常见编解码格式用法;

写MP4容器

3、操作系统原理和网络编程以及相关协议

Linux/windows操作系统核心原理、线程/进程;

tcp/udp协议 rtmp rtp RTSP;

 

4、良好的算法能力

掌握深度学习算法原理和基本模型;

熟练使用深度学习开源框架(如TensorFlow,Keras,Caffe等);

人群、手势、人脸识别

 

5、良好的数学知识

熟悉matlab的使用、矩阵论;

具备阅读SCI论文等能力

 

6、开源代码

音视频:Live555;webrtc;

图像处理:OpenCV源码

 

(三)图像处理与音视频公司推荐

今日头条、优酷、三星、索尼、清华同方、腾讯研究院、部分外企

 

四)项目推荐(附源码)

跨平台流媒体解决方案:live555项目

 

备注“计划”

即可领取免费资料

 

 

 

 

 

 

四、Linux后台服务开发

(一)Linux后台服务就业方向

企业级分布式服务器、智慧城市、智慧交通等场景AI后台系统;

游戏后台服务开发;

云计算、银行系统、企业web服务器等

 

(二)Linux后台服务知识架构体系

1、C/C++语言和设计模式

基本C/C++语法、数据类型、数组、指针、结构体、链表、文件操作、队列、栈等

 

2、操作系统基础

Linux操作系统的概念、安装方法,线程、进程;

详细了解Linux下的目录结构、基本命令、编辑器VI、编译器GCC、调试器GDB和Make项目管理工具;

Makefile Shell脚本编写等知识

 

3、Linux系统编程与linux操作系统

重点学习标准I/O库,Linux多任务编程中的多进程和多线程;

进程间通信(pipe、FIFO、消息队列、信号量、共享内存、信号)同步与互斥,对共享资源访问控制等重要知识;

提升对Linux应用开发的理解和代码调试的能力;

Linux文件系统

 

4、网络原理与网络编程

TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、HTTP;

重点学习网络编程相关API;

熟悉HTTP协议及其实现方法;

对比网络框架,做源码分析,如ACE/ICE/ZMQ/Libevent/Muduo等

 

5、数据库、中间件

Mysql、redis nginx mongdb等中间件

 

6、集群与分布式架构

7、高性能组件 造轮子的能力 高并发IO

 

(三)Linux后台服务公司推荐

腾讯、华为云、网易游戏、小米云平台、虎牙直播、快手后台等

 

四)项目推荐(附源码)

分布式版本控制系统:git 源码

 

 

 

 

 

五、 逆向与反外挂

(一)逆向与反外挂就业方向

防火墙、入侵检测/入侵防御、Web应用防火墙、上网行为管理、VPN、、抗DDoS、数据库安全、数据防泄漏、漏洞扫描

 

(二)逆向与反外挂知识架构体系

1、 C/C++语言的逆向表现与X86汇编语言

C语言/C++逆向语法表现,内存分布,X86汇编语言、数组和指针的逆向表现、函数的逆向表现;

 

【PS:

搞逆向不掌握一些汇编,基本就是盲人摸象,能出成果就只能靠运气;

随着64位机器的普及,32位程序会越来越少,这块的学习难点在于64位CPU和32位CPU差异明显,甚至可以说是巨大】

 

2、 操作系统与windowsPE

操作系统进程/线程概念,互斥量、信号量、事件等;

PE头,导入/导出表;

重定位/资源/延迟加载导入表

 

3、 游戏反外挂/HOOK/注入

基于注入的反外挂攻防;

基于HOOK的反外挂攻防;

基于CALL的反外挂攻防;

基于窗口的外挂检测;

游戏多开的逆向分析

 

4、 加密/编码算法

基础的,比如异或、url编码等;

base64(出镜率极高)crc校验算法md5;

学习tea和aes des

 

【PS:

可以先学习正向开发的部分算法。用不同的算法处理过的数据,会有一些特征;

见得多了,很多时候可以在你研究逆向时给予很大帮助。】

5、 工具类

OD、CE、Windbg等调试工具;

wireshark、x64dbg、frida、visual studio,其中有一些是开发工具,比如visual studio;

虽然这些工具是开发工具,但是其中包含很多小工具,比如spy++、depends等

6、 框架

逆向框架比较多,比如Cydia、xposed、substrate、ghidra等;

每个框架所适用平台和条件也略有差异,例如:

Cydia是在苹果下做逆向;

xposed是Android下逆向;

substrate是一种拦截方案;

ghidra是一个集成环境等

 

7、 其他

【PS:

逆向与反外挂这一部分比较特别,它们的知识点没有尽头。

 

除了网络协议(Http、Https、ftp、ssh)、CPU架构(arm架构、x86架构、64位架构、机器码)、操作系统(Windows、Linux、android、iOS)、驱动开发中断原理、动态库的加载和卸载,还有文件格式也需要掌握。

 

文件格式这块的内容也较为庞杂,简单的包括wav、bmp、apk文件格式,有一定了解后,可以尝试去解析pe、elf文件格式;然后还可以尝试png、jpeg、jar、dex文件格式,当然,还有一些没有详细文档的文件格式,比如luac、ocx也值得去了解和探索。】

 

(三)逆向与反外挂公司推荐

奇安信集团、奇虎360、深信服、启明星辰、绿盟科技、金山

 

(四)项目效果

 

 

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空