企业内训|C/C /Qt和Linux软件专项培训-某央企研究所
近日,某央企研究所为强化软件人才队伍建设,提升整体软件技术实力,根据所2024年度员工教育培训计划,精心筹备本次软件技术人员专项培训,培训采用全脱产式的封闭集中学习模式;初级班和提升班分别12天,一共持续24天。力求达到知识全面掌握、技能灵活运用、能力显著增强的培训效果,着力培养一批软件技术卓越人才。
TsigntaoAI作为本次培训的整体设计和项目实施,针对入职3年以内的开发人员量身定制,设置了《Linux操作系统》《C语言编程》《C++面向对象与设计模式》《基于Qt+Creator的程序开发》四门课程,从操作系统的基本操作到编程语言的深入学习,再到实用开发工具的掌握,层层递进,为职工软件技术进阶之路奠定坚实基石。
面向项目中高级软件技术人员及软件专业部门负责人,开设《C++与Qt程序设计》进阶课程与《嵌入式Linux C及内核编程》,两门课程“双管”齐下, 深入探索高级编程特性,挖掘嵌入式系统开发潜力,助力突破技术瓶颈,实现职业发展新跨越。
初级班12天;提升班12天;一共24天
前测最弱的10个知识点与后测知识点正确率对比
所有学员培训前后正确率对比
提升幅度超过20%的知识点
第1天:Linux 操作系统初识
上午:
开启 Linux 之旅
操作系统的基本概念,包括操作系统的定义、功能和分类。
Linux 系统的独特之处,如开源性、稳定性和多用户多任务特性。
介绍常见的 Linux 发行版及其特点,如 Ubuntu、CentOS 等。
案例分享:
在某军工通信项目中,由于需要高可靠性和安全性的分布式系统来保障信息传输的稳定和安全,采用了基于 Linux 的软件架构。Linux 的开源性使得团队能够根据项目需求进行定制化开发,同时其稳定性和多用户多任务特性确保了系统在高负荷运行下的可靠性能。
实操:
根据学员的硬件环境和需求,选择合适的 Linux 发行版进行安装。
在安装过程中,引导学员了解不同的安装选项和配置,如分区设置、软件包选择等。
安装完成后,进行基本的系统设置,如用户创建、网络配置等。
进阶实操:配置静态 IP 地址,设置防火墙规则,安装和配置 SSH 服务。
下午:
探索 Linux 军工生态
介绍 Linux 在军工领域的优势,包括稳定性和可靠性、开源性、安全性、可定制性以及跨平台性。
讲解其在不同军工应用场景中的作用,如指挥控制系统、武器装备控制系统、情报分析系统、模拟训练系统和嵌入式系统等。
阐述 Linux 在军工领域生态的组成部分,涵盖操作系统内核、开发工具、软件库和框架、安全解决方案以及社区和支持。
案例分享:
案例2:某军事指挥系统采用 Linux 作为基础操作系统,充分利用了 Linux 的稳定性和可靠性。通过定制内核和优化系统配置,实现了对大量实时数据的快速处理和高效指挥决策。同时,该系统利用了 Linux 丰富的开发工具和软件库,如 gcc/g++编译器、gdb 调试器等,提高了开发效率和软件质量。此外,开源社区的支持也为系统的持续改进和维护提供了有力保障。
实操:
进一步探索安装好的 Linux 系统,尝试使用一些基本的命令和工具,感受 Linux 的稳定性和灵活性。
了解如何查找和安装适用于军工领域的软件和工具,为后续的学习和实践做好准备。
进阶实操:使用 apt 或 yum 包管理器安装和管理软件包,配置系统日志服务 rsyslog。
第2天:进程与线程管理
上午
深入进程与线程调度
进程管理与服务:ps、top、kill
服务的管理与配置:systemctl、service
网络配置与管理:ifconfig、ping、netstat
实操:
使用 Linux 命令行工具进行系统管理和文件操作,初步感受文件系统与权限管理。
进阶实操:编写脚本自动启动和停止多个进程,使用 ps 和 top 命令监控系统资源使用情况。
下午
开发工具巩固
gdb调试工具使用
make命令与自动化构建
编辑器与IDE的选择(VS Code、Vim、Emacs)
案例分享:
在某军工软件项目中,为了确保系统的高可靠性和高实时性,采用了精细的硬件调试方法。通过 gdb 调试工具,对软件进行逐行调试,查找潜在的问题和性能瓶颈。同时,结合 Linux 内核的系统调用流程和GJB8000 开发流程,确保系统在各种复杂环境下的安全运行。
实操:
继续探索 Linux 命令行工具的更多功能,如进程查看与管理。
进阶实操:使用 strace 和 ltrace 跟踪系统调用和库函数调用,调试程序。
第3天:深入 Linux 核心
上午
内存与文件系统探索
虚拟内存基础
分页与分段管理
GJB438C对嵌入式系统的内存安全要求
文件系统设计与权限管理
文件的打开、读取、写入与关闭
二进制文件与文本文件的区别
Inode结构
访问控制
实操:完善操作系统模拟环境,实现基本的进程调度与内存分配,借助日志监控和权限管理分析系统性能。
进阶实操:使用 ldd 查看动态链接库依赖,编写简单的系统调用程序。
下午
系统调用与安全保障
系统调用概述
系统调用流程详解
系统调用的实现机制
系统安全性保障
实操:
完善操作系统模拟环境,实现基本的进程调度与内存分配,借助日志监控和权限管理分析系统性能。
进阶实操:使用 ldd 查看动态链接库依赖,编写简单的系统调用程序。
第1天:C语言基础
上午
C语言概述与基础语法
C语言的基本语法
变量、数据类型、运算符
控制语句:if、for、while、switch
数组与指针基础
一维数组与二维数组
指针的概念与操作
下午
指针高级
指针的算术运算
指针数组与函数指针
实操案例:字符串排序程序
使用指针实现字符串的输入与存储
冒泡排序算法的实现
输出排序后的字符串列表
实操:
链表与栈的实现
链表的定义与操作
使用栈处理表达式的求值
下午:栈与计算器实现
引言与栈的定义
栈的基本操作
栈的实现
使用栈实现计算器
案例分享:
在某军工数据处理项目中,为了处理不同类型的数据,采用了 C 语言编写高效的算法。例如,使用栈数据结构处理表达式的求值,实现了一个简单的计算器功能,提高了数据处理的效率和准确性。
实操:
使用栈数据结构处理表达式的求值,实现简单的计算器功能。
进阶实操:实现支持浮点数运算的计算器,增加错误处理和异常捕获。
第2天:函数与结构体
上午
函数的定义与调用
函数参数与返回值
递归函数的实现
函数指针的应用
变量的作用域与存储类别
全局变量与局部变量
static、extern、register关键字的使用
下午
结构体与联合体应用
结构体的定义与操作
联合体的概念与应用
实操:编写相关函数处理传感器数据,如数据的读取、写入和显示。
进阶实操:实现传感器数据的多线程并发处理,使用互斥锁保证数据一致性。
第3天:内存管理与数据结构
上午:动态内存分配
malloc、calloc、realloc、free函数的使用
内存泄漏与内存越界的防范
实操案例:动态数组的实现
需求分析:实现一个可变长度的整数数组
动态内存分配的编码实现
内存释放与程序优化
下午:复杂数据结构与采集模块
复杂数据结构设计与优化
设计并优化满足军工需求的链表、队列、树等复杂数据结构
强化文件操作与系统编程
实操:实现传感器数据的文件存储和读取功能。
第1天:C++基础与模板
上午:C++基础与面向对象概念
C++语言概述
C与C++的差异
C++的主要特性:类、对象、封装、继承、多态
C++语言概述
C++的历史与特性
C与C++的主要区别
面向对象编程基础
类与对象的概念
封装、继承与多态的基本思想
类的定义与成员
构造函数与析构函数
成员函数与成员变量
this指针的作用
实操案例:银行账户类的实现
设计账户类的属性与方法
实现存款、取款、查询功能
类的实例化与对象的交互
第2天:C++进阶与模板
上午
C++模板编程
函数模板与类模板
模板特化与实例化
异常处理与智能指针
异常的机制与应用
try、catch、throw的使用
智能指针:unique_ptr、shared_ptr、weak_ptr
下午:
STL标准模板库
STL的容器:vector、list、map、set
STL的算法与迭代器
实操案例:文件词频统计程序
使用STL容器处理文件内容
统计并排序单词频率
案例:C++模板在军工软件中的高级应用
讲解如何利用C++模板在军工项目中处理多类型数据的高效编程,特别是在数据处理和算法优化中如何运用模板技术。
第3天:设计模式高效应用
上午
设计模式概述
设计模式的意义与分类
创建型、结构型、行为型模式简介
单例模式
单例模式的实现方法
多线程环境下的单例模式
下午
工厂模式与观察者模式
简单工厂、工厂方法、抽象工厂的区别
观察者模式的原理与应用场景
实操案例:日志系统的设计
采用单例模式实现日志管理器
使用工厂模式创建不同类型的日志记录器
观察者模式实现日志事件的订阅与通知
第1天:Qt与程序开发
上午
Qt概述与基础
Qt的跨平台特性与优势
Qt Creator开发环境配置
项目管理与Qt项目结构
Qt信号与槽机制
信号与槽的概念与实现
事件处理与用户交互
下午
Qt界面设计与布局管理
使用Qt Designer设计界面
Qt的布局管理:QHBoxLayout、QVBoxLayout等
样式表与自定义样式
实操案例:简易文本编辑器
界面设计与基本功能实现
打开、保存文件的操作
使用信号与槽机制处理按钮事件
案例:Qt在军工系统中的应用
介绍Qt在军事模拟、战术指挥系统中的应用,如何用Qt开发实时图形界面与数据可视化,支持高频更新与低延迟显示。
讨论Qt在军工软件开发中的跨平台特性,如何帮助开发多设备支持的军事信息系统。
实操案例:设计一个船舶实时监控系统界面,展示船舶的实时数据,如船舶位置、航速、天气状况、海浪高度等信息。
第2天:Qt核心模块与数据库操作
上午
Qt核心模块
QString与QByteArray的使用
文件与I/O操作:QFile、QTextStream
字符串处理与正则表达式
Qt数据库模块
数据库连接与查询:QSqlDatabase、QSqlQuery
使用SQLite或MySQL进行数据存储
下午
Qt多线程与网络编程
创建线程与线程间通信
TCP/UDP通信:QTcpSocket、QUdpSocket
HTTP请求与响应
实操案例:网络文件下载器
多线程实现文件下载
用户界面与进度条更新
实操案例
设计一个数据库应用,存储船舶的实时数据,如传感器数据、航行日志等,并在Qt界面中展示。
第3天:综合实战与总结
上午实战项目:实时监控系统构建
综合运用信号槽与多线程机制、自定义控件开发等知识,构建符合 GJB5000B 标准的实时监控系统。
实操:整合数据采集、数据库存储和界面交互功能,完善实时监控系统。
下午:总结与展望
学生分享学习心得,教师答疑与总结课程要点,发布后续学习资源与建议
实操成果验收:展示最终的实时监控系统成果,并进行交流和总结。
第1天:C++高级特性深入理解
模板元编程(Template Metaprogramming)
模板的高级用法:SFINAE、特化与偏特化
编译期计算与优化:在船舶与军工应用中使用模板进行优化
C++11/14/17新特性
Lambda表达式与并发控制:多线程与并行处理在船舶控制系统中的应用
智能指针的深度使用:避免内存泄漏,在军事级别系统中的高可靠性需求
异常处理与安全编码
异常的机制与最佳实践:如何确保船舶系统在异常情况下的稳定性和安全性
实战练习:开发一个支持插件的架构
案例:在军用船舶监控系统中,设计一个插件架构以支持不同的传感器模块
第2天:多线程与并发编程
C++中的线程管理
std::thread的使用与任务调度:在船舶导航系统中的并发控制
线程同步与互斥:在舰船控制系统中,多个线程间如何同步船舶各类信息
原子操作与内存模型
如何利用原子操作保证在高实时性要求下,数据的一致性
线程池的设计与实现
如何设计高效的线程池,以保证船舶系统中的多个传感器数据处理
实战练习:开发一个高性能的多线程任务调度器
案例:为军用船舶开发高效的传感器数据处理与指令调度系统
第3天:Qt高级GUI编程
Qt信号与槽机制深入
自定义信号槽,线程间通信:如何在多线程环境下同步船舶系统状态
Qt绘图系统
QPainter高级用法:在船舶军工应用中的图形显示,如导航图、海图的绘制
高级界面设计模式
MVC与MVVM在Qt中的应用:设计船舶控制界面,分离界面与控制逻辑
实战练习:设计一个复杂的界面应用
案例:为船舶导航控制系统设计一个图形化的实时数据监控界面
第4天:Qt Quick与QML编程
QML语法与特性
动画与特效:展示船舶控制系统中的实时反馈与变化
与C++的交互
在船舶控制系统中,通过QML与C++交互展示传感器数据
Qt Quick应用性能优化
针对船舶监控系统优化QML的性能,确保数据的流畅显示
实战练习:开发一个跨平台的移动应用
案例:为军用船舶开发一个跨平台的移动监控应用,适用于操作员和指挥官
第5天:数据库与网络编程
Qt中的数据库操作
支持的数据库类型:如何为军工系统选择适当的数据库存储数据
ORM框架的使用:在船舶军工项目中实现数据存储与管理
网络编程
TCP/UDP通信:在船舶系统中实现实时数据传输,确保高效与低延迟
Qt网络模块高级应用
在舰船与指挥中心之间的实时数据通信
实战练习:开发一个网络聊天工具
案例:为军用船舶开发实时通信与数据传输系统
第6天:高级设计模式与框架
常用设计模式在C++/Qt中的实现
工厂模式、观察者模式等:如何在军工船舶项目中实现模块化与解耦
框架设计思想
为船舶军工项目设计一个灵活、可扩展的框架
案例:分析现有军用舰船系统架构,讨论如何设计支持未来扩展的框架
实战练习:构建一个插件式框架:为军用船舶控制系统设计插件化框架,支持不同模块(如传感器、控制系统等)的热插拔
第1天:嵌入式Linux系统架构
嵌入式Linux系统组成
引导加载程序、内核、文件系统:分析船舶控制系统中的Linux架构与系统需求
交叉编译环境的搭建
针对船舶控制硬件环境,搭建交叉编译工具链
实战练习:构建定制的嵌入式Linux系统
为军用船舶设备定制嵌入式Linux系统,支持特定的硬件与软件功能
第2天:Linux内核深入
内核模块与驱动程序
字符设备驱动开发:如何为船舶传感器设备开发Linux内核驱动
内核同步机制
在多核系统中,如何保证数据一致性与实时性
内核调试技巧
使用GDB、KGDB等工具调试军工系统中的内核问题
实战练习:开发简单的内核模块
编写一个船舶控制系统中的内核模块,以控制硬件设备
第3天:设备驱动开发高级篇
总线、设备与驱动模型
在船舶控制系统中,如何为复杂的设备(如雷达、传感器)开发驱动
中断处理机制
在高实时性要求下,如何处理设备中断,保证船舶系统的实时响应
高级驱动程序开发
PCI、USB设备驱动开发
实战练习:编写自定义设备驱动
为军用船舶设备(如雷达、声呐等)开发自定义设备驱动
第4天:网络编程与协议栈
内核网络协议栈分析
在船舶系统中分析与优化网络协议栈
网络设备驱动开发
针对船舶系统,开发网络设备驱动,确保船舶与其他设备的无缝通信
实战练习:实现自定义的网络协议
在船舶系统中开发并实现一个自定义的通信协议,确保低延迟与高可靠性
第5天:实时系统与调度器
实时Linux的实现
使用PREEMPT_RT补丁,优化船舶控制系统的实时性
调度算法深入
针对船舶实时控制,设计适合的调度算法
实战练习:构建实时嵌入式应用
为船舶自动控制系统开发实时调度机制,确保实时响应
第6天:电源管理与安全与加固
电源管理框架
Runtime PM与System PM:为船舶系统设计高效的电源管理策略,延长系统工作时间
内核安全机制
SELinux、AppArmor等安全机制,确保船舶系统不受攻击
实战练习:加固嵌入式Linux系统
对船舶系统进行安全加固,确保其在军工环境中的高安全性。
TsingtaoAI 企业内训业务线专注于提供 LLM、具身智能、AIGC、智算和数据科学领域的企业内训服务,通过深入业务场景的案例实战和项目式培训,帮助企业应对 AI 转型中的技术挑战。其培训内容涵盖 AI 大模型开发、Prompt 工程、数据分析与模型优化等最新前沿技术,并结合实际应用场景,如智能制造、金融科技和智能驾驶等。通过案例式学习和 PBL 项目训练,TsingtaoAI 能够精准满足企业技术团队的学习需求,提升员工的业务能力和实战水平,实现 AI 技术的高效落地,为企业创新和生产力提升提供强有力的支持。