2023Linux C/C++全栈开发知识技术合集(基础入门到高级进阶)(下)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 2023Linux C/C++全栈开发知识技术合集(基础入门到高级进阶)

5、文件系统专题

(一)虚拟文件系统

  • 文件系统类型与文件模型研究
  • 磁盘文件系统(DF)
  • 网络文件系统(NF)
  • inode
  • 链接
  • API编程接口
  • VFS数据结构
  • 超级块(super_ block)
  • 挂载描述符 (mount结构体)
  • 索引结点(inode结构体)
  • 目录项缓存(dentry结构体)

(二)文件系统调用

  • 打开/关闭文件
  • 创建/删除文件
  • 读/写文件实现
  • 文件回写技术原理/接口实现

(三)挂载文件系统

  • 系统调用mount处理流程
  • 绑定挂载/挂载命名空间
  • 挂载/注册rootfs文件系统
  • 无持久文件系统
  • proc文件系统
  • proc数据结构
  • 初始化及装载proc
  • 管理proc数据项
  • 数据读写实现
  • 系统控制机制
  • sysfs文件系统
  • sysfs数据结构
  • 装载文件系统
  • 文件和目录操作
  • 向sysfs添加数据内容
  • 实战操作:procfs文件系统实现
  • 实战操作: sysfs文件系统实现

(四)磁盘文件系统

  • Ext2文件系统
  • Ext2物理结构
  • Ext2数据结构分析
  • Ext2文件系统操作
  • Ext4_ 日志JBD2
  • Ext4文件系统特性
  • Ext4文件系统数据结构
  • Ext4_日志JBD2

(五)数据同步

  • 内核定时器
  • 原子操作与屏障
  • 自旋锁机制
  • 自旋锁的实现与变体
  • spin_ lock()/raw_ spin_ lock() 函数分析
  • 互斥锁
  • mutex数据结构分析
  • 互斥锁的快速与慢速通道
  • 乐观自旋锁等待机制
  • mutex_ unlock() 函数分析
  • 读写锁与RCU
  • 实战操作:同步管理RCU实现

6、内核组件专题

(一)内核活动组件

  • 中断处理流程及IRQ
  • irq_ _desc数据结构分析
  • 开启_禁止中断
  • 软硬中断分析
  • 中断控制器及域详解
  • tasklet_等待队列工作队列
  • 审计规则及数据结构分析

(二)开源社区

  • 如何参与开源社区
  • 如何提交Linux内核补丁
  • 管理员Bugzilla参数配置及如何管理用户
  • 在Gitee创建一个开源项目

以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911领取专属大额优惠券。


7、要转向内核开发,嵌入式开发人员需要掌握以下知识

  • 1. C语言编程:C语言是内核开发的主要编程语言,需要熟练掌握其语法和编程技巧。
  • 2. 操作系统原理:需要了解操作系统的基本原理,包括进程管理、内存管理、文件系统等。
  • 3. Linux内核:需要深入了解Linux内核的架构、模块、驱动程序等。
  • 4. 设备驱动开发:需要掌握设备驱动的开发流程和技术,包括字符设备、块设备、网络设备等。
  • 5. 调试技能:需要掌握调试技能,包括使用调试工具、分析内核崩溃等。
  • 6. 硬件知识:需要了解硬件的基本原理和操作,包括处理器、内存、外设等。
  • 7. 开源社区:需要了解开源社区的文化和开发流程,以便更好地参与内核开发。

8、内核难点与学习方法

  • 1、知识点多,关系错综复杂。
  • 2、每一个知识点的难度都很难。
  • 3、代码量很大,内核有几百万行。
  • 4、操作系统相关的知识。
  • 5、程序结构上的很多规范要求

9、内核适宜的工程师人群

  • Linux 内核优化、内存管理 ,内核开发岗位、定制化自己OS
  • 深入系统内核研究、网络安全逆向分析
  • 提升自己能力,为了更好做应用层开发提供核心依据
  • 跳槽面试大厂(腾讯、华为、中兴、中微、中芯等等)
  • 从事业务开发多年,对底层原理理解不够深入的在职工程师
  • 从事嵌入式方向开发,想转入内核开发的在职工程师
  • 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
  • 从事非开发岗位(算法岗,运维岗,测试岗),想转内核开发岗位的在职工程师

至于学习效果怎么样?👇

音视频视频流媒体开发

而如今音视频的知识纷繁复杂,自己学习非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验;而音视频从业者基本上有两个层面:一个层面是搞音视频算法,这类人非常少,需要有深的数学能力和算法背景,这类人一般都会选择去大公司,薪水百万是最low的。

还不熟悉的朋友,这里可以先领取一份音视频开发新手学习资料包(入坑不亏)


什么是音视频开发

音视频开发是指涉及音频和视频处理、编解码、传输、存储等方面的软件开发领域。它包括了实时音视频通信、流媒体服务、多媒体应用程序等内容。

在音视频开发中,常见的任务包括音频采集与录制、音频编解码、音频处理与增强(如降噪、消除回声等)、视频采集与录制、视频编解码、图像处理与分析等。此外,还需要关注实时传输和流媒体协议(如RTP/RTCP, RTMP, HLS)的使用,以及存储和播放相关技术。

在这个领域中,开发者通常会使用各种语言和框架来实现不同功能,例如C/C++、Java、Python以及相关库和工具,如FFmpeg, GStreamer, WebRTC等。通过掌握相关技术和工具,可以开发出高质量的音视频应用程序或服务。

音视频开源项目

部分音视频开源项目发布时间,每个开源项目之所以能成功都是经过了开发者长期的时间投入。

  • 1.2001年FFmpeg多媒体视频处理开源项目
  • 2.2009年WebRTC开源项目发布
  • 3.2013年SRS流媒体服务器(Simple-RTMP-Server) 发布版本
  • 4.2013年ijkplayer手机播放器发布
  • 5.2014年OBS开源项目(支持WebRTC, 早期支持的是RTMP)(GitHub可查最 早时间)
  • 6.2015年Janus WebRTC流媒体服务器发布版本
  • 7.2015年QMPlay2 PC QT (调用FFmpeg的接口,硬解接口, OpenGL)播放器发布
  • 8.2017年ZLMediaKit流媒体服务器发布版本

音视频应用领域

各类活动场景都在不断加深线上开展业务的方式,有人的业务场景基本.上都需要音视频技术。

FFmpeg零基础入门:如何快速入门,需要哪些知识点?

  1. windows ffmpeg命令行环境搭建
  2. FFMPEG如何查询命令帮助文档
  3. ffmpeg音视频处理流程
  4. ffmpeg命令分类查询
  5. ffplay播放控制
  6. ffplay命令选项
  7. ffplay命令播放媒体
  8. ffplay简单过滤器
  9. ffmpeg命令参数说明
  10. ffmpeg命令提取音视频数据
  11. ffmpeg命令提取像素格式和PCM数据
  12. ffmpeg命令转封装
  13. fmpeg命令裁剪和合并视频
  14. fmpeg命令图片与视频互转
  15. ffmpeg命令视频录制
  16. ffmpeg命令直播
  17. ffmpeg过滤器-裁剪
  18. ffmpeg过滤器-文字水印
  19. ffmpeg过滤器-图片水印
  20. ffmpeg过滤器-画中画
  21. ffmpeg过滤器-多宫格


这里给大家推荐零声教育全网独家的【音视频流媒体高级开发】课程体系,通过原理技术+源码分析+案例分析+项目实战,全面解析音视频开发技术:

1、音视频基础

(一)音频基础知识

  • 如何采集声音-模数转换原理
  • 为什么高品质音频采样率>=44.1 Khz
  • 什么是PCM
  • 一个采样点用多少位表示
  • 采样值用整数还是浮点数表示
  • 音量大小和采样值大关系
  • 多少个采样点作为一-帧数据
  • 左右通道的采样数据如何排列
  • 什么是PCM (脉冲编码调制)
  • 音频编码原理

(二)视频基础知识

  • RGB彩色原理
  • 为什么需要YUV格式
  • 什么是像素
  • 分辨率、帧率、码率
  • YUV数据存储格式区别
  • YUV内存对齐问题
  • 为什么画面显示绿屏
  • H264编码原理
  • H264IPB帧的关系

注:具体H264编码格式见FFmpeg章节

(三)解复用基础知识

  • 什么是解复用,比如MP4格式
  • 为什么需要不同的复用格式
  • MP4/FLV/TS
  • 常见的复用格式MP4/FLV/TS

注:具体复用格式详解见FFmpeg章节

(四)FFmpeg开发环境搭建

  • Windows、Ubuntu、MAC3三大平台
  • QT安装
  • FFmpeg命令行环境
  • FFmpeg API环境
  • FFmpeg编译
  • vs2019安装(win平台)

(五)音视频开发常用工具

  • Medialnfo,分析视频文件
  • mp4box,分析mp4
  • VLC播放器,播放测试
  • audacity,分析音频PCM
  • EasyICE,分析TS流
  • Elecard_ streamEye, 分析H264
  • flvAnalyser,分析FLV
  • 海康YUVPlayer,分析YUV

2、FFmpeg实战

(一)FFmpeg命令

  • 音频PCM/AAC文件提取
  • 视频YUV/H264文件提取
  • 解复用、复用
  • 音视频录制
  • 视频裁剪和合并
  • 图片/视频转换
  • 直播推流和拉流
  • 水印/画中画/九宫格滤镜

注:掌握FFmpeg的目的

  • 1.快速掌握FFmpeg能做什么;
  • 2.加深对音视频的理解

(二)SDL跨平台

  • 多媒体开发库实战
  • SDL环境搭建
  • SDL事件处理
  • SDL线程处理
  • 视频YUV画面渲染
  • 音频PCM声音输出

注: SDL兼容Win、Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出

(三)FFmpeg基石精讲

  • FFmpeg框架
  • FFmpeg内存引|用计数模型
  • 解复用相关AVFormat XXX等
  • 编解码相关AVCodec XXX等
  • 压缩数据AVPacket
  • 未压缩数据AVFrame
  • FFmpeg面向对象思想
  • Packet/Frame数据零拷贝

注:目的熟悉FFmpeg常用结构体和函数接口

(四)FFmpeg过滤器

  • FFmpeg过滤chain框架
  • 音频过滤器框架
  • 视频过滤器框架
  • 多路音频混音amix
  • 视频水印watermark
  • 视频区域裁剪和翻转
  • 视频添加logo

(五)FFmpeg音视频解复用+解码

  • 解复用流程
  • 音频解码流程
  • 视频解码流程
  • FLV封装格式分析
  • MP4封装格式分析
  • FLV和MP4 seek有什么区别
  • 为什么FLV格式能用于直播
  • 为什么MP4不能用于直播
  • MP4能否用来做点播
  • AAC ADTS分析
  • H264 NALU分析
  • AVIO内存输入模式
  • 音频重采样实战
  • 重采样后的数据播放时长是否一致
  • 重采样后PTS如何表示
  • 视频解码后YUV内存对齐问题
  • 音频解码后PCM排列格式问题
  • 硬件解码dxva2/nvdec/cuvid/qSV
  • 硬件gpu数据转移到cpu
  • H265解码

注: FFmpeg API学习:视频解复用->解码->编码->复用合成视频

(六)ffplay播放器

  • 掌握ffplay.c的意义
  • ffplay框架分析
  • 解复用线程
  • 音频解码线程
  • 视频解码线程
  • 声音输出回调
  • 画面渲染时间间隔
  • 音频重采样
  • 画面尺寸格式变换
  • 音频、视频、外部时钟同步区别
  • 以视频为基准时音频重采样补偿
  • 音量静音、调节大小的本质
  • 音视频packet队列大小限制
  • 音视频packet队列线程安全
  • 音视频frame队列大小限制
  • 音视频frame队列线程安全
  • 暂停、播放实现机制
  • seek播放导致的画面卡住问题.
  • seek播放数据队列、同步时钟处理
  • 如何做到逐帧播放
  • 播放器退出的流程要点

注: ffplay.c是ffplay命 令的源码,掌握fplay对于我们自己开发播放器有事半功倍的效果

(七)FFmpeg音视频编码+复用合成视频

  • AAC音频编码
  • H264视频编码
  • PCM+ YUV复用合成MP4/FLV
  • H264编码原理
  • IDR帧和帧区别
  • 动态修改编码码率
  • GOP间隔参考值
  • 复用合成MP4音视频不同步问题
  • 编码、复用timebase问题
  • MP4合成IOS不能播放问题
  • 重采样后PTS如何表示
  • 视频编码YUV内存对齐问题
  • 硬件编码dxva2/nvenc/cuvid/qsv
  • H265编码原理
  • H264、H265编码互转

(八)ffmpeg多媒体

  • 视频处理工具
  • 掌握fmpeg.c的意义
  • ffmpeg框架分析
  • 音视频编码
  • 封装格式转换
  • 提取音频
  • 提取视频.
  • logo叠加
  • 音视频文件拼接
  • filter机制
  • 命令行解析流程
  • MP4转FLV不重新编码逻辑
  • MP4转FLV重新编码逻辑
  • MP4转FLV scale

注: ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的大体框架对于我们要实现一些不知道怎么编写代码的功能(用ffmepg命令行可以但不知道怎么调用ffmpeg api时可以参考ffmepg.c的逻辑)有极大的帮助,比如要裁剪视频长度。

(九)FFmpeg+ QT播放器

  • 常见开源播放器分析
  • CUVID/D3D11VA硬解
  • 界面和播放核心分离框架分析
  • 音量频谱展示
  • 播放器模块划分
  • 音频均衡器
  • 解复用模块
  • 画面旋转、翻转
  • 音视频解码
  • 画面亮度、饱和度调节
  • 播放器控制
  • 画面4:3 16:9切换
  • 音视频同步
  • 码流信息分析


3、流媒体客户端

(一)RTMP推拉流项目实战

  • RTMP协议分析
  • wireshark抓包分析
  • H264 RTMP封装
  • AAC RTMP封装
  • RTMP拉流实战
  • H264 RTMP解析
  • AAC RTMP解析
  • RTMP推流实战
  • 0没有MetaData能否播放
  • RTMP推流是否会导致延迟
  • RTMP推流如何动态调整码率
  • RTMP推流如何动态调整帧率
  • RTMP拉流是否会导致延迟
  • 如何检测RTMP拉流延迟
  • 如何解决RTMP播放延迟
  • ffplay. vlc能否用来测试播放延迟
  • ffplay、vlc能否用来测试播放延迟
  • RTMP拉流播放变速策略设置

(二)RTSP流媒体实战

  • RTSP协议分析
  • RTP协议分析
  • H264 RTP封装
  • H264 RTP解析
  • AAC RTP封装
  • AAC RTP解析
  • RTCP协议分析
  • RTSP流媒体服务器搭建
  • RTSP推流实战
  • RTSP拉流实战
  • wireshark抓包分析
  • RTP头部序号的作用
  • RTCP的NTP和RTP的TS的区别
  • RTP头部序号的作用
  • RTCP的NTP和RTP的TS的区别
  • RTSP交互过程
  • 花屏可能的原因
  • SPS PPS如何发送
  • SDP封装音视频信息

(三)HLS拉流分析

  • HLS协议分析
  • HLS拉流实战
  • HTTP协议分析
  • FFmpeg HLS源码分析
  • TS格式分析
  • HLS多码率机制
  • m3u8文件解析
  • 如何解决HL S延迟高的问题
  • wireshark抓包分析

注:理解HL .S的拉流机制,有助于我们解决HL .S播放延迟较高的问题

4、流媒体服务器

(一)SRS源码剖析协程

  • 整体框架分析
  • 连接和协程的关系
  • RTMP推流分析
  • 如何更快速掌握SRS源码
  • RTMP拉流分析
  • 流媒体服务器是否导致延迟
  • HLS拉流分析
  • 如何降低流媒体服务器的延迟
  • HTTP-FLV拉流分析
  • 怎么获取流媒体服务器推流信息
  • FFmpeg转码分析
  • 怎么获取流媒体服务器拉流信息
  • 首屏秒开技术分析
  • 首屏秒开能降低延迟吗
  • forward集群源码分析
  • 推流->服务器转发->拉流延迟分析
  • edge集群源码分析
  • 负载均衡部署方式

注:对于SRS流媒体服务器,我们长期更新,从3.0->4.0->5.0

(二)ZLMediaKit源码剖析

  • 整体框架分析
  • 数据转发模型
  • 线程模块划分
  • SDP解析
  • RTSP推流连接处理
  • RTP H264解析
  • RTSP拉流连接处理
  • RTP AAC解析

注: ZLMediaKit主要讲解RTSP流媒体服务器相关的模块,其他模块RTMP/HLS等参考SRS。

5、WebRTC项目实战

(一)WebRTC中级开发手把手写代码

  • WebRTC通话原理分析
  • WebRTC开发环境搭建
  • coturn最佳搭建方法
  • 如何采集音视频数据
  • 一对一通话时序分析
  • 信令服务器设计
  • SDP分析
  • Candidate类型分析
  • Web-对一通话
  • Web和Android通话
  • AppRTC快速演示
  • 如何设置编码器优先级
  • 如何限制最大码率
  • 信令服务器的本质是什么
  • Web和Android的SDP差异
  • A要和B通话, A怎么知道B的存在
  • 新增C++、IOS客户端两大版本

注:学习WebRTC建议从web端入手,可以直接调用js接口(千万别刚接触WebRTC就忙着去编译WebRTC源码) , 对WebRTC通话流程有清晰的理解再考虑其他端。

(二)WebRTC高级开发-SRS 4.0/5.0源码分析

  • RTMP转发WebRTC逻辑
  • WebRTC转发RTMP逻辑
  • WebRTC音视频一对一通话
  • WebRTC多人通话
  • WebRTC SFU模型分析
  • SRTP分析
  • RTCP分析
  • SDP分析
  • NACK分析
  • turn分析
  • stun分析
  • 拥塞控制算法
  • FEC
  • jitter buffer

(三)WebRTC高级开发-MESH模型多人通话

  • 自定义摄像头分辨率
  • 码率限制
  • 调整编码器顺序
  • Mesh模型多方通话分析
  • 多人通话信令服务器开发
  • 动态分配stun/turn服务器
  • Web客户端源码
  • Android客户端源码

(四)WebRTC高级开发-Janus SFU模型多人通话

  • Janus框架分析
  • Janus信令设计
  • 基于Janus实现会议系统
  • Janus Web客户端源码分析
  • Janus Android客户端源码分析
  • Janus Windows客户端源码分析
  • 基于Full ICE的部署
  • 基于Lite ICE的部署
  • Full ICE和Lite ICE的区别
  • 发布订阅模型

6、Android NDK

(一)Android NDK开发基础

  • So库适配总结
  • GDB调试技巧
  • Makefile_ I程组织
  • CMake工程组织
  • 生成指定CPU平台的so库
  • JNI基础和接口生成
  • JNI Native层构建Java对象
  • JNI异常处理

(二)Android FFmpeg编译和应用

  • 编译x264
  • 编译x265
  • 编译mp3
  • 编译fdk-aac
  • 编译FFmpeg
  • 使用ffmpeg实现mp4转格式
  • 使用FFmpeg开发播放器

(三)Android RTMP推拉流

  • RTMP推流协议实现
  • RTMP拉流协议实现
  • RTMP拉流音视频同步
  • MediaCodec硬件编码
  • MediaCodec硬件解码
  • OpenSL ES播放音频数据
  • MediaCodec硬件解码
  • OpenGL ES Shader显示视频

(四)Android Ijkplayer源码分析

  • 编译jkplayer和实践
  • 项目框架分析
  • 播放状态转换
  • 拉流分析
  • 解码分析
  • 音频播放流程
  • 视频渲染流程
  • OpenSL ES播放音频数据
  • MediaCodec硬件解码
  • OpenGL ES Shader显示视
  • 变速播放实现原理
  • 低延迟播放实现
  • 缓存队列设计机制分析

7、IOS音视频开发

(一)IOS FFmpeg6.0编译和应用

  • xcode调试FFmpeg
  • IOS调用FFmpeg
  • QT调试FFmpeg

(二)IOS FFmpeg RTMP推拉流

  • AVFoundation视频采集
  • Metal视频渲染
  • Audio Unit音频采集
  • Audio Unit音频播放
  • FFmpeg推流
  • FFmpeg拉流
  • 直播延迟和解决方法

(三)VideoToolbox硬件编解码

  • VideoToolbox框架的流程
  • 硬件编解码步骤
  • CVPixelBuffer解析
  • 如何获取SPS/PPS信息
  • 判断是否关键帧
  • 编码参数优化

(四)IOS jkplayer编译和应用

  • 本地视频播放
  • RTMP拉流播放
  • HTTP点播
  • 音频播放流程
  • 视频渲染流程

(五)IOS ijkplayer编译和应用

  • 基于Mesh一对一通话
  • 基于SFU多人通话

8、音视频项目实战

(一)0voice播放器

支持播放/暂停,上一/下一视频,变速播放,文件seek播放进度显示,截屏,调节音量,播放列表,显示缓存时间实现直播低延迟播放

(二)0voice录制推流软件

支持屏幕+麦克风RTMP直播,支持本地文件推送;支持录制保存到本地,支持录制预览功能,支持添加图片水印功能;支持文字水印功能,支持屏幕+摄像头同时捕获,支持降噪功能。

(三)0voice低延迟拉流直播

实现500毫秒~1秒的低延迟直播

以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911领取专属大额优惠券。

助大家全面掌握FFmpeg的核心技术点:

  • 本课程为音视频全栈开发技术提升体系
  • 原理,源码分析,案例分析,项目实战全包含
  • 详细技术点参考音视频第6代课程大纲
  • 全新升级FFmpeg6.0-全网唯一

9、适宜工程师人群(本课程涵盖最主流的音视频全栈开发技术,适合各类技术人员)

  • 从事音视频岗位开发,但没有时间系统学习的在职工程师
  • 从事嵌入式方向开发,想转入音视频开发的在职工程师
  • 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
  • 从事Android/IOS移动开发,想往音视频方向发展的在职工程师
  • 从事C/C+ +后台开发,想往流媒体服务器方向发展的在职工程师
  • 自己研究学习速度较慢,不能系统构建音视频知识体系的开发人员
  • 计算机相关专业想进入大厂的在校生(本科及以上学历,有c/C+ +基础)

音视频自学难点音视频自学非常困难,网上通俗易懂的难找到。

网上部分资源是对应的开源版本较低,比如雷霄骅(雷神)博客的FFmpeg版本较低

音视频涉及大量的开源库和协议:

  • 1、比如ffmpeg的编译,如果不熟悉各种编译报错
  • 2、Janus编译涉及各种开源组件编译不通过
  • 3.比如WebRTC涉及的RTP、RTCP、SDP、STUN等协议

部分嵌入式音视频的朋友技术面窄, 技术不深入。比如有同学做了2年的音视频驱动, 一帧音频能持续播放多久都不明白。

至于学习效果怎么样?👇

10、补录:webrtc入门到精通

  • (1)WebRTC入门
  • (2)WebRTC开发环境搭建
  • (3)Coturn穿透和转发服务器搭建
  • (4)音视频采集和播放
  • (5)Nodejs实战
  • (6)手把手实现音视频一对一通话(包含信令协议设计、Web to Web、Android to Web、 Android to Android)
  • (7)开源方案介绍
  • (8)AppRTC开源方案搭建


DPDK高性能专家

DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。

还不熟悉的朋友,这里可以先领取一份dpdk新手学习资料包(入坑不亏)

本文介绍下DPDK进阶到高性能专家的学习路线,整个学习路线,直接对标DPDK资深架构师岗位,知识点包括dpdk、储存、网关开发、网络协议栈、网络安全、TRex、vpp、OVS、DDos、虚拟化技术等等 。其次你把整个内容,全部消化,是完全可以胜任任何DPDK资深架构师岗位招聘,DPDK开发招聘。

1、DPDK网络专栏

(1)dpdk基础知识

  • 1.多队列网卡,vmxnet/e1000
  • 2.igb_ uio与vfio模块
  • 3.kni模块
  • 4.hugepage的理解
  • 5.零拷贝
  • 6.dpdk与netmap区别
  • 7.dpdk的工作环境

(2)网络协议栈

  • 1.dpdk-arp
  • 2.netsh静态arp表设置
  • 3.dpdk-icmp
  • 4.udp协议格式分析
  • 5.udp协议sendto, recvfrom实现
  • 6.dpdk-ip
  • 7.dpdk-tcp
  • 8.tcp协议栈bind,listen, accept实现
  • 9.tcp协议栈recv, send, close的实现
  • 10.tcp三次握手实现
  • 11.tcp四次挥手实现
  • 12.tcp acknum与seqnum的确认机制实现
  • 13.tcp的并发连接设计
  • 14.epoll并发的实现
  • 15.tcp协议栈与epoll之间的回调实现

(3)dpdk组件项目

  • 1.dpdk-ac
  • 2.dpdk-kni
  • 3./dev/ kni的原理分析
  • 4.kni_ dev的流程
  • 5.kni的t缓冲区,rx缓冲区
  • 6.kni的用户空间与内核空间映射
  • 7.mbuf如何转化为kernel的sk_ buff
  • 8.dpdk- timer
  • 9.bpftrace的使用
  • 10.dpdk- bpf源码流程

(4)dpdk经典项目

  • 1.dpdk- dns
  • 2.dpdk- gateway
  • 3.dpdk-ddos熵计算源码
  • 4.ddos attach检测精确度调试
  • 5.ddos attach测试T具hping3
  • 6.布谷鸟hash原理与使用

2、储存技术专栏

(1)高效磁盘io读写spdk(C)

  • 1.存储框架spdk,为技术栈打开扇存储的大门
  • 2.spdk运行环境与vhost
  • 3.NVMe与PCl的关系
  • 4.手把手实现spdk_ server
  • 5.nvme与pcie以及手写nvme读写操作
  • 6.bdev与blob之间的关系
  • 7.实现blob异步读写
  • 8.blobstore的读写操作实现与rpc的关系
  • 9.fio性能测试性能对比libaio,io_ uring,psync
  • 10.fio plugin工作流程
  • 11.fio plugin开发

(2)spdk文件系统的实现

  • 1.文件系统功能拆解
  • 2.spdk_ env_ init与spdk_ app init的差别
  • 3.spdk_ _thread_ poll实现rpc回调
  • 4.fs_ operations结构体定义
  • 5.file_ operations结构体定义
  • 6.dir_ operations结构体定义
  • 7.syscall的hook实现
  • http://8.io内存管理
  • 9.基数树对文件系统内存管理
  • 10.spdk_ blob的open,read,write,close
  • 11.测试用例与调试入口函数

(3)spdk kv存储的实现

  • 1.KV存储拆解Set, Get, Mod, Del
  • 2.app/.a库/so库对于kv存储的选择
  • 3.bdev与blob对于kv存储的选择
  • 4.kv service启动blob资源操作
  • 5.kv service关闭blob资源回收
  • 6.kv service接口set,get,modify,delete
  • 7.kv遍历与查找实现
  • 8.page存储chunk的管理
  • 9.pagechunk的get与put
  • 10.page单查找与多页查找
  • 11.btree, artree, hashmap,radixtree, rbtree之间的选择
  • 12.slab的实现
  • 13.slab分配slot与释放slot
  • 14.为kv加上conf文件
  • 15.测试用例与性能测试


3、安全与网关开发专栏

(1)可扩展的矢量数据包处理框架vpp(c/c++)

  • 1.vpp命令详解
  • 2.mac/ip转发plugin
  • 3.load_ balance plugin
  • 4.flowtable plugin
  • 5.vpp源码之间的差异
  • 6.多网卡数据接收与转发
  • 7.解决plugin编译加载
  • 8.vpp启动load so的流程
  • 9.vpp的结构体vlib_ _main实现分析
  • 10.vpp的结构体vnet_ main
  • 11.vector的操作实现
  • 12.vpp vcl库与LD_ PRELOAD实现分析
  • 13.vcl原理讲解
  • 14.vcl tcpserver实现原理
  • 15.vcl tcpclient实现原理
  • 16.vcl与iperf3的客户端与服务器
  • 17.vcl与nginx的wrk性能测试
  • 18.vcl与haproxy的性能测试
  • 19.vpp 1801版本与vpp 2206版本
  • 20.vpp httpserver的实现源码
  • 21.vpp plugin quic源码分析
  • 22.vpp plugin hs_ app的源码
  • 23.vpp plugin rdma的实现分析
  • 24.vpp plugin loadbalance
  • 25.vpp plugin nat的源码分析
  • 26.vpp host-stack tcp协议实现
  • 27.vpp plugin的测试用例实现

(2)golang的网络开发框架nff-go(golang)

  • 1.nff-go实现的技术原理
  • 2.nff-go/low.h实现分析
  • 3.nff- go数据接收的实现
  • 4.nff-go数据发送的实现
  • 5.ipsec协议解析与strongswan的ipsec
  • 6.nff go的缺陷与不足

4、虚拟化与云原生专栏

(1)DPDK的虚拟交换机框架OvS

  • 1.ovs编译安装,ovs核心组件内容
  • 2.ovs-vswitchd的工作原理
  • 3.ovs-vswitchd与dpdk的关系
  • 4.ovs-vsctl的网桥,网口操作
  • 5.qemu-system-x86_ 64构建多子网
  • 6.ovs与qemu数据流分发
  • 7.ovs搭建docker跨主机通信
  • 8.ovsdb server与ovsdb协议
  • 9.json-rpc为控制面提供开发
  • 10.ovs-tcpdump/ovs-l3ping
  • 11.OvS 4种数据路径
  • 12.VXL AN数据协议
  • 13.ovs流量统计

(2)高性能4层负载均衡器DPVS

  • 1.dpvs的技术组件与功能边界
  • 2.lvs+keepalived配置高可用server
  • 3.dpvs与|lvs+ keepalived的关系
  • 4.dpvs.conf的配置文件
  • 5.dpvs的FNat/NAT/SNAT模式
  • 6.dpvs的DR模式
  • 7.dpvs的tun模式
  • 8.通过quagga配置ospf
  • 9.dpvs的tc流控操作与源码实现
  • 10.dpvs代码架构分析
  • 11.dpvs测试用例ipset, tc,mempool

5、测试工具专栏

(1)perf3

  • 1.vpp vcl的perf3接口hook
  • 2.perf3测网络带宽
  • 3.tcp吞吐量测试
  • 4.udp丢包与延迟测试
  • 5.json测试结果输出

(2)TRex

  • 1.TRex的运行原理
  • 2.TRex与dpdk
  • 3.构建TRex测试系统
  • 4.t-rex -64- debug gdb调试
  • 5.bg-sim- 64模拟单元测试
  • 6.YAML文件编写
  • 7.流编排与自动化框架
  • 8.报文变量设置

(3)dpdk-pktgen

  • 1.pktgen命令讲解
  • 2.default.cfg配置文件分析
  • 3.120M bits/s的转发速率

(4)fio

  • 1.ioengine的实现
  • 2.ioengine_ ops的分析
  • 3.iodepth的分析
  • 4.spdk_ nvme的fio分析
  • 5.spdk_ bdev的fio分析
  • 6.spdk_ blob的ioengine实现
  • 7.psync,io_ uring, libaio性能对比

6.性能测试专栏

(1)性能指标

  • 1.吞吐量bps
  • 2.拆链/建链pps
  • 3.并发
  • 4.最大时延
  • 5.最小时延
  • 6.平均时延
  • 7.负载
  • 8.包速fps
  • 9.丢包率

(2)测试方法

  • 1.测试用例
  • 2.vpp sandbox
  • 3.perf3灌包
  • 4.rfc2544

以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911领取专属大额优惠券。

7、适学人群

  1. 工作中技术没有挑战,工作中接触不到新技术的在职工程师
  2. 从事嵌入式开发对网络存储底层感兴趣在职工程师
  3. 自己研究学习速度较慢,不能系统构建知识体系的开发人员
  4. 从事网络存储安全的工程师,想深入了解底层技术原理

8、课程目标岗位

  • 高级网络开发工程师
  • DPDK开发工程师
  • 云基础开发工程师
  • NFV开发工程师
  • 高性能优化工程师
  • 云产品研发工程师
  • SDN开发工程师

学习成果检验

C++游戏后端开发

1、TrinityCore CMake项目构建

(一)CMake的使用

  • 什么是 CMake,CMake的工作流程
  • CMakeLists.txt的编写规则
  • 静态库生成以及链接
  • 动态库生成以及链接
  • 嵌套CMake

(二)Windows和Linux下编译调试环境搭建

  • cmake和graphviz生成目标依赖图
  • linux vscode编程环境搭建
  • cmake和clangd实现精俳跳转
  • C/C++插件实现调试
  • vs2019 windows下编译调试搭建

2、TrinityCore数据库模块

(一)连接池设计概要

  • 什么是连接池
  • 为什么需要复用连接
  • 为什么固定连接数
  • 主要应用场景

(二)同步连接池实现

  • 同步连接池的线程模型
  • 同步连接池接口封装
  • 同步连接池接口使用
  • 同步连接池应用场景

(三)异步连接池实现

  • 异步连接池的线程模型
  • 异步连接池接口封装
  • 异步连接池接口使用
  • 异步连接池应用场景

(四)事务处理

  • 什么是事务
  • 什么情况下讨论事务
  • 事务操作
  • TrinityCore 中事务处理封装
  • TrinityCore 中事务处理案例

(五)数据库模块实践

  • 剥离可复用数据库模块
  • 应用同步连接池案例
  • 异步连接池-单SQL语句的使用
  • 异步连接池-多SQL语句chain式应用
  • 异步连接池-多SQL语句holder式应用
  • 异步连接池-多SQL语句transaction式应用

3、TrinityCore日志模块

(一)日志模块概要

  • 日志模块的作用
  • 日志模式核心抽象: logger和appender
  • logger规则:继承关系、日志级别、以及appender列表
  • appender如何定义日志打印目的地

(二)日志模块实现

  • 日志模块单例构建
  • 采用宏定义定制日志使用接口
  • 如何扩展appender
  • appender中设计模式-模板模式
  • 同步日志方式实现
  • 异步日志方式实现
  • 异步日志线程模型

(三)日志模块实践

  • 剥离可复用日志模块
  • 为什么推荐使用异步日志
  • 异步日志日志安全分析及测试

4、TrinityCore网络模块

(一)阻塞io 网络模型编程

  • 什么是阻塞io网络模型
  • 阻塞io解决连接建立的问题
  • 阻塞 io解决连接断开的问题
  • 阻塞io解决数据接收的问题
  • 阻塞io解决数据发送的问题
  • 阻塞 io解决网络问题的弊端

(二)reactor 网络模型编程

  • 什么是reactor?
  • reactor构成部分
  • reactor解决连接建立的问题
  • reactor解决连接断开的问题
  • reactor解决数据接收的问题
  • reactor解决数据发送的问题
  • reactor解决网络问题的特征: io同步,事件异步

(三)windows iocp 网络编程

  • 什么是完成端口
  • 重叠io的作用
  • iocp解决连接建立的问题
  • iocp解决连接断开的问题
  • iocp解决数据接收的问题
  • iocp解决数据发送的问题
  • iocp编程步骤
  • iocp与reactor在编程处理io时的差异

(三)boost.asio 网络编程

  • boost.asio跨平台网络库
  • cmake如何在项目中引入boost.asio
  • boost.asio中核心命名空间
  • boostasio中核心对象: io_context、socket、endpoint
  • boost.asio中异步io接口
  • asio解决连接建立的问题
  • asio解决连接断开的问题
  • asio解决数据接收的问题
  • asio解决数据发送的问题

(四)网络缓冲区设计

  • 为什么需要在用户层实现网络缓冲区
  • 读缓冲区的工作原理
  • 写缓冲区的工作原理
  • 手撕缓冲区实现

(五)网络模块实践

  • 剥离可复用网络模块
  • AsyncAcceptor职责与实现
  • NetworkThread职责与实现
  • Socket职责与实现
  • 手撕多线程模式下网络模块的应用

5、TrinityCore地图模块

(一)地图模块概要

  • 哪些功能模块需要用到地图模块
  • 地图模块的功能构成
  • 地冬对象抽象:map、area、grid、cell
  • 网络数据驱动地图模块
  • 定时更新驱动地图模块

(二)地图模块AOI核心算法

  • AOI有哪些实现方式
  • AOI静态数据工具生成
  • AOI静态数据数据划分
  • AOI静态数据组织方式
  • AOI动态数据组织方式
  • AOI动态数据驱动方式
  • AOI地图数据加载
  • grid 网格状态机以及状态转换
  • AOl地图数据卸载
  • 采用访问者模式实现地图数据与算法的隔离

(三)AABB算法实现碰撞检测

  • 轴对称边界盒算法-AABB算法
  • TrinityCore中AABB算法实现
  • AABB算法优化
  • 碰撞检测接口封装以及应用

(四)A*寻路算法

  • A*寻路算法概述
  • recast-detour开源车
  • recast根据模型生成导航数据
  • detour利用导航网格做寻路
  • 寻路接口封装以及应用

6、TrinityCore战斗模块专栏

(一)技能设计

  • 技能设计概述
  • 技能数据库表设计(配置)
  • 技能触发:距离、冷却时间、消耗等
  • 技能效果:伤害计算、增益效果等
  • 技能释放流程

(二)AI设计

  • AI设计概述
  • 基于行为树的Al设计
  • Al类继承层次关系
  • 04.Al攻击目标选择
  • AIl攻击方式选择
  • Al移动方式选择
  • AI基于事件的驱动机制

(三)怪物管理

  • 怪物数据库设计(配置)-属性和行为
  • 怪物刷新规则设计-时间间隔以及范围
  • 怪物属性、技能、掉落、Al

(四)战场副本设计

  • 创建和加载 battlegrounds场景地图数据
  • battlegrounds规实现
  • battlegrounds队伍匹配、队伍平衡以及角色分配
  • battlegrounds奖励系统和排名机制

7、TrinityCore mmorpg核心功能与玩法

(一)任务系统设计

  • 任务系统数据库设计(配置)
  • 玩家数据库状态存储
  • 任务类型设计
  • 任务触发机制

(二)背包设计

  • 背包数据结构设计以及数据库表设计
  • 背包容量控制
  • 背包格子管理
  • 背包交互功能实现

(三)工会系统设计

  • 数据库表结构设计
  • 工会创建逻辑实现
  • 工会成员管理
  • 工会资源管理及分配机制
  • 工会活动与事件
  • 工会排名实现
  • 工会权限控制

8、语言专栏

(一)lua程序设计

  • lua基础
  • lua错误处理
  • lua编译与预编译
  • lua模块与包
  • 元表与元方法
  • 环境
  • lua/c接口编程

(二)c++新特性

  • 智能指针shared_ptr, unique _ptr
  • 函数对象以及闭包
  • 右值引用
  • 原了操作与锁: atomic、mutex、condition_variable
  • 多线星环竟队列设计:MPSCQueue、ProducerConsumerQueue

(三)C++设计模式

  • 单例模式
  • 工厂模式
  • 模板模式
  • 访问者模式
  • 责任链模式

以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911领取专属大额优惠券。


9、适宜工程师人群

  • 从事游戏后端岗位开发,但没有时间系统学习的在职工程师
  • 从事嵌入式方向开发,想转入游戏后端开发的在职工程师
  • 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
  • 从事C/C++后台开发,想往游戏服务器方向发展的在职工程师
  • 自己研究学习速度较慢,不能系统构建游戏开发知识体系的开发人员
  • 计算机相关专业想从事游戏开发的在校生(本科及以上学历)

Qt开发工程师

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

还不熟悉的朋友,这里可以先领取一份qt开发新手学习资料包(入坑不亏)


本文介绍下qt开发从入门到高级进阶的学习路线,整个学习路线,直接对标qt工程师开发岗位,知识点包括语言编程基础、Qt编程入门到精通专栏、Qt高级进阶专栏、Qt项目开发实战专栏、Qt开发工程师提升专栏等 。其次你把整个内容,全部消化,是完全可以胜任任何qt开发招聘,C++ qt开发招聘。

1、Qt C++语言编程基础专栏

(一)Qt C++语言编程基础

  • Visual Studio 2022安装
  • C++语言基础概述
  • C++指针与引用
  • C++类与对象(一)
  • C++类与对象(二)
  • 类的基它特性
  • 构造函数&析构函数&拷贝构造函数
  • C++友元与动态内存
  • 函数重载与运算符重载

(二)Qt C+ +语言进阶

  • 单继承
  • 多继承
  • 虚继承及其它特性
  • 虚函数与抽象类
  • 命名空间与模板
  • C+ +I0流类库
  • STL(vector & deque & stack)
  • STL(queue & set & map)
  • C+ +异常处理,

(三)Qt C+ +语言新特性

  • 类型推导: auto & decltype
  • 序列for循环
  • lambda表达式
  • 构造函数:委托构造和继承构造
  • 容器: array & forward list & tuple
  • 垃圾回收机制
  • 正则表达式基础
  • 智能指针: shared_ ptr & unique_ ptr & weak_ ptr
  • 关键字: nullptr & constexpr
  • 共享内存&互斥量mutex
  • C++11: STL hashmap
  • 关联容器: unordered_ map
  • atomic flag & atomic应用
  • 条件变量: condition variable
  • 异常处理: exception
  • is integral应用实战
  • is_ rvalue_ reference应用实战
  • is_ arithmetic应用实战
  • is volatile应用实战
  • is class应用实战
  • 变量模板
  • inline应用实战

2、Qt编程入门到精通专栏

(一)Qt开发基础体系

  • Qt下载与安装配置
  • Windows Qt环境安装
  • Linux Qt环境安装
  • Qt Creator工具介绍与使用.
  • Qt信号与槽机制
  • Qt字符串&数据类型&容器类
  • 字符串类应用与常见数据类型
  • 常用容器类
  • QMap类& QHash类& QVector类
  • QList类& QLinkedList类
  • QVariant类应用
  • 常用算法及正则表达式

(二)Qt开发常用控件详解

  • Layouts & Spacers
  • Buttons & Containers
  • Item Views
  • Item Widgets
  • Input Widgets
  • Display Widgets

(三)Qt布局及对话框详解

  • 布局管理
  • QLayout & QStackedWidget类
  • QSplitter类& QDockWidget类
  • 对话框
  • 文件对话框
  • 颜色对话框
  • 字体对话框
  • 输入对话框
  • 消息对话框
  • 自己定义消息框

(四)Qt图形&模型&视图

  • 绘图原理双缓冲机制
  • Graphics View特性详解
  • Mode & View & Delegate

(五)Qt文件操作及事件处理

  • 目录操作及文件系统
  • QCoreApplication类
  • QFilelnfo类
  • QDir类
  • QTemporaryDir
  • QTemporaryFile
  • 获取文件特性实现
  • 鼠标及键盘事件
  • 事件过滤处理分析

(六)Qt服务应用操作

  • INI文件操作
  • JSON文件操作
  • XML文件操作

(七)Qt网络及多线程

  • 套接字编程API函数详解
  • UDP协议工作原理
  • TCP服务器设计
  • TCP客户端设计
  • TCP协议工作原理
  • UDP服务器设计
  • UDP客户端设计
  • 多线程编程
  • 互斥量
  • 信号量
  • 多线程C/S模型项目实战
  • HTTP协议编程技术
  • Websocket原理及编程技术

(八)Qt数据分析:图表详解

  • Qt图表基础知识
  • Qt ChartView详解
  • Qt常用图表类型
  • 曲线图
  • 拆线图
  • 柱形图
  • 饼状图

(九)Qt应用程序打包及发布

  • 打包QT应用程序
  • 发布QT应用程序

3、Qt高级进阶专栏

(一)MySQL数据库编程技术

  • 数据库基础知识
  • MySQL基本操作
  • MySQL运算符
  • 数据类型及存储引擎
  • 表数据增&删&改&查&高级查询
  • MySQL流程控制语句
  • SQL语句详解
  • 索引
  • 视图
  • 存储过程和函数
  • 触发器
  • 事件
  • MySQL备份与恢复
  • Qt操作MySQL数据库实战

(二)sQLite数据库编程技术

  • SQLite下载与安装配置
  • sQLite创建数据库
  • SQL ite附加&分离数据库
  • SQLite数据类型
  • SQLite创建表&删除表
  • SQLite insert into语句详解
  • SQLite select & update & delete语句
  • sQLite Distinct & Orderby & Groupby
  • SQLite触发器
  • sQLite索引
  • SQLite视图
  • sQLite事务
  • Qt操作SQLite数据库实战

(三)OpenCV编程开发常用技术

  • OpenCV与VS2022环境搭建
  • OpenCV常见API及绘图详解
  • OpenCV图像读写技术
  • OpenCV视频读写技术
  • OpenCV图像滤波技术
  • OpenCV视频录制技术
  • OpenCV图像翻转技术
  • OpenCV图像旋转技术
  • OpenCV实现窗口置顶
  • OpenCV边缘检测技术1
  • OpenCV边缘检测技术2
  • OpenCV向上向下采样
  • OpenCV形态学之膨胀
  • OpenCV图像浮雕技术
  • OpenCV图像人脸识别

(四)C++ 23种设计模式

  • 创建型模式(5种)
  • 工厂模式
  • 抽象工厂模式
  • 原型模式
  • 单例模式
  • 建造者模式
  • 结构型模式(7种)
  • 适配器模式
  • 桥接模式
  • 组合实体模式
  • 装饰器模式
  • 外观模式
  • 享元模式
  • 代理模式
  • 行为模式(11种)
  • 责任链模式
  • 中介者模式
  • 策略模式
  • 模板模式
  • 状态模式
  • 观察者模式
  • 备忘录模式
  • 命令模式
  • 访问者模式
  • 解释器模式
  • 迭代器模式

4、Qt项目开发实战专栏

(一)文字编辑: Word处理软件

  • Word文字编辑软件架构设计分析
  • 菜单栏工具栏状态栏功能模块设计
  • 菜单栏工具栏状态栏动作与实现
  • 系统模块整体功能关联与实现
  • Word文件编辑软件调试及测试


二)音频项目实战: MP3播放器搜索引擎(Qt5+SQLite)

  • MP3音乐播放器搜索引 |擎设计与实现
  • SQLite数据库 数据表设计与实现歌曲搜索
  • HTTP下载音乐数据解析Json显示歌词
  • 上一曲播放暂停下一 曲循环播放实现
  • 音乐搜索引|擎关于皮肤更换系统托盘

(三)信息管理项目:库存管理系统(Qt5+ MySQL)

  • 商品数据库设计及配置测试
  • 库存新增商品和查询商品
  • 商品入库与商品出库
  • 商品删除与导出数据
  • 数据汇总及数据备份

(四)即时通讯项目:腾讯QQ客户端软件

  • 即时通讯项目简介
  • QQ客户端登录设计
  • QQ登录窗口翻转效果实现
  • IP地址控件设置
  • 主界面及窗口移动实现
  • QQ登录逻辑业务处理分析
  • 项目全局类定义与实现
  • 完善MainWindow及托盘技术
  • QQ好友组及U|效果实现
  • QQ聊天窗口和排版设计
  • 头像裁剪技术
  • 音频技术分析与实现
  • QQ添加好友逻辑业务处理
  • QQ聊天逻辑处理分析
  • 消息时序图和头像截图处理技术
  • 即时通讯群组功能实现
  • QQ表情与gif图片处理技术
  • 文件上传功能实现
  • QQ文件传输技术
  • QQ头像显示与添加好友显示实现

(五)视频项目实战:视频播放器(Qt+ FFmpeg)

  • 播放器项目需求分析
  • Player UI主界面设计
  • 播放文件Title设计实现
  • 控制条CtrlBar设计实现
  • 播放文件列表Playlist实现
  • 播放器模块分析与设计
  • 打通UI到播放器核心的通道消息队列
  • 打通Ul到播放器核心的通道类名和接口
  • 状态处理: stream open和stream close
  • 解复用&数据读取read thread设计
  • 解码线程Decoder封装
  • 音频输出及视频渲染输出
  • 音视频同步原理与技术详解

5、Qt开发工程师提升专栏

(一)Qt开发工程师提升: Quick编程常用技术

  • QML基础知识
  • QML语言基础
  • QML元素1: Image & Rectangle & Text
  • QML元素2: ButtonStyle & ltem & BusyIndicator
  • Quick事件处理
  • 键盘事件
  • 鼠标事件
  • 定时器
  • Quick组件及元素布局
  • Component & Loader
  • 定位器及布局管理器
  • Quick开发常用元素及Canvas(画布)
  • TextField & TextArea & TextInput
  • CheckBox & GroupBox & TabView
  • Canvas(画布)绘制图形
  • 动画及.Mode & View
  • 动画常用元素
  • Animation & PropertyAnimation & NumberAnimation
  • ColorAnimation & PathAnimation & SpringAnimation
  • 组合动画部分: ParallelAnimation & SequentialAnimation
  • 动画协同元素: Behavior & ParentAnimation & AnchorAnimation

(二)Qt开发工程师提升: QSS编程常用技术

  • QSS实战开发1: QSS作用及应用场景
  • QSS实战开发2: QSS常用基本语法
  • QSS实战开发3: QSS控件样式QL abel & QLineEdit & QPushButton
  • QSS实战开发4: QSS控件样式QComboBox
  • QSS实战开发5: QSS控件样式QTableWidget
  • QSS实战开发6: QSS控件样式QProgressBar
  • QSS实战开发7: QSS控件样式QSlider
  • QSS实战开发8: QSS控件样式CheckBox
  • QSS实战开发9: Ubuntu系统控件风格
  • QSS实战开发10: Mac系统控件风格

(三)Qt开发工程师提升:核心技术模块

  • QtConcurrent线程处理(过滤和映射)
  • Qt之QWebEngineView框架分析
  • Qt生成及读取XML文件及应用实战

以上是系统学习课程大纲,需要系统学习请扫码添加小雯老师(备注911领取专属大额优惠券。

6、Qt参考书籍资料

  • 《Qt C+ +编程从入门到实战》主编:彭源
  • 《Qt 5编程入门第2版》编著:程梁霍亚飞
  • 《嵌入式Qt开发项目教程》编著:王浩著王浩
  • 《Qt Quick核心编程》编著:安晓辉
  • 《零基础学Qt 4编程》作者:吴迪著
  • 《C+ +并发编程实战(第2版)》作者: [英]安东尼:威廉姆
  • 《C+ +20实践入门](第6版)》作者: [比]艾弗霍尔顿(Ivor Horton)
  • 《OpenCV算法精解》 作者:张平编著
  • 《Qt圾Qt Quick开发实战精解》编著:霍亚飞
  • 《C++ GUIQt 4编程第二版》作者: Jasmin Blanchette & Mark Summerfield

至于学习效果怎么样?👇

自学的弊端:网上资料繁杂,知识零碎,看过之后容易很快就忘掉,遇到问题只能自己钻研,有些很简单的问题不知不觉就浪费了很多时间,除非你是定力耐心毅力非常强的人,不然学习起来会没有方向感,盲目的看书枯燥乏味耗时比较长,会导致没有学习积极性失去信心与坚持下去的决心等等。总的来说自学不能说完全不行,只是适合少数人,自学的难度比报班系统学习一定是困难很多很多倍,多付出很多很多倍的。

反之报班学习的优势在于:

节约时间,知识串联:视频学习老师会提取知识点讲解出来比看书快了很多倍,并且理解起来比枯燥乏味的读书更有意思,尤其计算机相关的理论知识更是繁琐复杂交错依附,报班会让你更加系统的学习,知道前因后果来龙去脉,老师会把知识串联起来交给你,配套的资料发给你,而不是独立零散的知识点学习,对于提升来说,是高效且快速的。

老师答疑:遇到不懂得问题,老师会在自己看到的第一时间给到解答,24小时的答疑服务,会大大节约了你的学习时间。老师在知识体系,课程内容上,简历书写,面试指导,谈薪技巧等等方面都有着丰富的经验,课程内容也是由简到难,源码分析勾画重点,不做无用功,会提供配套的学习资料,图文并茂,讲解上通俗易懂,技术慢慢深入串联,学员通过和老师的沟通交流从而轻松学习,来达到自己想要达到的目标。

时间自由学习高效:很多在职的开发人员除了日常上班大部分时间还要加班,对于提升自己都是挤时间,没有完整的学习时间,这样其实给自学增添了很大的难度,跟着视频学习每日定好进度下班以后有固定的学习时间学习内容,或者周末抽几个小时整时间学习,有方向感且高效。

要说报班学习的弊端,那我只能想到一个,就是会有金钱上的一个付出,但是技术学会了是会跟随你一辈子的,现在的付出可能就是以后你一个月的涨薪部分,这个账怎么算都不会亏。投资自己 是风险最低 收益最高的,在大环境中安于现状才是井底之蛙,不断学习提升自己才是程序员最需要做的,提升工作竞争力,让自己在现在的公司被需要!

现如今各行各业内卷都很严重,不要说行业不行,而是大家越来越专业,这个是行业发展的必然性,优胜劣汰适者生存,时代在改变,不提高自己的核心竞争力就要出局。

最后:

给校招的小伙伴一句话:第一份工作不亚于一次高考,珍惜校招,社招的竞争是你目前想象不到的。能去大厂觉不妥协,IT行业第一份工作背景越好,起点越高,后续发展空间越好!

给那些1-3年的安于现状的伙伴一句话:

不要抱怨市场,不要安于现状,在低端,往中端领域看,在中端往高端领域看。认知以及对自身的要求,都会有所改变。

给那些担心35岁的伙伴一句话:

决定上限的不是年纪,而是技术。最后:希望学习路线对你有所帮助,希望码农的我们越来越好!

精品文章推荐阅读:

相关文章
|
1月前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
63 3
WK
|
1月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
67 1
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
106 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
76 7
WK
|
1月前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
51 0
WK
|
1月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
65 0
|
2月前
|
Linux 虚拟化
Vmware 傻瓜式安装(不可不知道的Linux基础知识和技术 01)
本文介绍了VMware虚拟机的下载与安装步骤。首先,通过提供的网盘链接下载VMware安装包。接着,详细描述了安装流程,包括接受协议、选择安装路径(建议避免系统C盘)、取消更新选项等。最后,输入许可证密钥完成安装,并展示了打开虚拟机后的主界面。整个过程简单易懂,适合新手操作。
149 1
|
2月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
58 1
|
2月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
33 0
Linux入门1——初识Linux指令
|
2月前
|
NoSQL API Redis
如何使用 C++ 开发 Redis 模块
如何使用 C++ 开发 Redis 模块