核心技能
Linux系统编程
在Linux系统上开发程序,掌握系统编程API是必不可少的技能。
操作系统
尽可能地去了解你使用的操作系统,这样无论对写程序还是debug都会有很大的帮助;除了操作系统,了解你使用的CPU的汇编语言,至少能大概看懂。因为有些时候,当你从C代码中找不出bug的原因时,就需要你“透过现象看本质”,从汇编代码层面看看到底发生了什么。
脚本编程
一提到脚本编程,大家首先想到的可能就是Bash shell脚本编程,应用开发工程师主要用Bash shell做两个方面的*:a)用于编写监控服务脚本;b)写一些简单的单元测试脚本,比如循环发一些命令,等等。
网络编程
网络协议,在日常的*中,大家接触和使用最多的无疑是TCP/IP协议;Socket编程,Socket编程一点也不比系统编程简单;协议分析工具,TCPdump、snoop(Solaris平台工具)、wireshark等这些工具不仅能帮助我们抓取数据*,还能分析数据*,这对debug网络程序有非常大的帮助。
调试器
一个程序员不可能不碰到bug,而这个时候,调试器就是*的工具。可以说,在遇到bug时调试技巧和手段是否丰富是衡量一个程序员的能力和水平的重要参考。
数据库
数据库作为服务器端应用数据持久化的最重要的部件,在服务器端应用开发中占有非常重要的地位。深入了解数据库基本原理,数据库和数据表结构体操作等。
Qt开发
Qt是一个跨平台框架,通常用作图形工具*,它不仅创建CLI应用程序中也非常有用。而且它可以在台式机、移动端以及嵌入式设备端口上运行。完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。
CPU体系结构
除了操作系统,了解你使用的CPU的汇编语言,至少能大概看懂。因为有些时候,当你从C代码中找不出bug的原因时,就需要你“透过现象看本质”,从汇编代码层面看看到底发生了什么。
编译器
编译器负责把源代码生成可执行文件,例如gcc有很多编译选项,除了要熟悉像-O,-g这些最基本的选项,建议大家可以多了解一些其它不常见的选项。因为这些选项很可能帮助我们找到程序的一些bug。多了解你的编译器,你就可以更好地了解你的程序是如何生成的。
课程内容
Linux基础
linux系统安装配置;系统操作命令;服务器搭建
主要掌握内容:
linux系统安装配置:
虚拟机安装配置、Ubuntu系统安装配置、vim编辑器安装配置、文件共享配置
系统操作命令:
文件操作命令:ls、touch、mkdir、pwd、rm、chmod、mv、cp、vim、cd、pwd网络操作命令:ping、ifconfig、netstat
服务器搭建:
ftp服务器搭建:服务器操作命令:ftp、open、get、put、cd、byte
nfs服务器搭建项目
面向过程编程C语言
C基础:条件结构;循环结构;函数;指针函数;动态空间管理;文件操作;数据结构
主要掌握内容:
C基础:
内置数据类型、基本输入输出、类型表示范围、头文件*含、gcc编译运行算术运算符、逻辑运算符、位运算符、比较运算符、赋值运算符、sizeof运算符、取址运算符、逗号运算符
条件结构:
真假定义、if条件结构、if-else if条件结构、switch条件结构
循环结构:
for循环、while循环、do-while循环
函数:
函数申明定义、函数调用、递归函数、回调函数、现场保护、现场恢复
指针和数组:
指针、数组、字符串、冒泡排序、选择排序、指针数组、数组指针、指针函数、函数指针
动态空间管理:
空间分布、内存泄漏、动态申请空间、空间释放
文件操作:
文件类型、创建文件、文本文件读写、二进制文件读写
数据结构:
链表、树、图、排序算法
Linux系统编程
文件IO;多进程编程;进程间通讯;多线程编程;同步和异步;网络编程
主要掌握内容:
文件IO:
文件类型、创建文件、文本读写、属性操作
多进程编程:
并发概念、进程创建及结束、僵尸进程、孤儿进程、exec函数族
进程间通讯:
无名管道、有名管道、内存映射、共享内存、消息队列、信号、socket
多线程编程:
线程创建及结束
同步和异步:
同步和异步的概念、同步的方式(互斥锁、读写锁、条件变量、信号量)、异步方式(信号)、PV经典案例
网络编程:
OSI七层架构、TCP/UDP协议、IP协议、网络编程系统调用
面向对象编程C++语言
C++基础;类封装;继承;多态;STL;QT界面设计
主要掌握内容:
C++基础:
数据类型、输入输出、引用、函数、动态空间管理、文件、结构体
类封装:
构造函数、深浅拷贝、初始化列表、析构函数、子对象、static/const成员、this
继承:
父类/基类、子类/派生类、单继承、多继承、虚继承
多态:
静态多态(函数重载)、动态多态(虚函数)、纯虚函数、抽象类
STL:
函数模板、类模板、vector、list、map、deque、set
Qt界面设计:
窗口类型:widget、dialog、mainwindow信号槽机制、鼠标事件、键盘事件图形图像、并发、socket网络编程
MySQL:
增删改查、视图、存储过程、事务
实战项目
智能小车
技能掌握:QT编程技术,C++编程技术,树莓派开发技术,Linux编程技术的使用
项目简介:树莓派连接摄像头、马达,通过wifi模块连接树莓派,控制器进行小车的移动,可识别障碍物及人。
人脸识别认证系统
技能掌握:精准定位图中人脸、眼等关键点位置,分析性别、年龄等人脸属性使用
项目简介:Linux系统,C++编程,QT编程,Cmake开发工具,摄像头编程,图像知识
智能售卖机
技能掌握:通过树莓派控制机械手臂实现物品抓起放置,并通过物联网云平台进行管理。
项目简介:QT编程技术,C++编程技术,树莓派开发技术,4G模块应用技术,机械手臂,定位器,互联网云平台,网络知识