博舍

两万字解析AIoT智能物联网工程师学习路线,最全路线谁赞成谁反对 人工智能物联网工程师是产品经理吗

两万字解析AIoT智能物联网工程师学习路线,最全路线谁赞成谁反对

大家好,我是老白。

今天给大家带来AIoT智能物联网工程师学习路线规划以及详细解析。

AIoT介绍广泛的定义来看,AIoT就是人工智能技术与物联网在实际应用中的落地融合。它并不是新技术,而是一种新的IoT应用形态,从而与传统IoT应用区分开来。如果物联网是将所有可以行使独立功能的普通物体实现互联互通,用网络连接万物,那AIoT则是在此基础上赋予其更智能化的特性,做到真正意义上的万物互联。

既掌握AI开发技术,又掌握物联网技术,两者完美结合,大放异彩

培养目标学习路线培养目标熟练掌握C/C++编程语言,掌握面向对象程序设计方法。熟练掌握常用数据结构和算法。熟练掌握MySQL、sqlite3基础语法及C/C++编程接口。熟练掌握Linux应用软件编程方法,熟练使用多线程、多进程编程、socket编程等进行应用软件开发。熟练掌握嵌入式Linux高级编程技术,如传感器编程、串口编程、V4L2编程、音视频处理、opencv、科大讯飞语音识别等。熟练掌握QT编程方法。熟练掌握ARM体系结构。掌握STM32开发工具及设计流程。掌握STM32的外围接口使用,如:GPIO、中断、定时器、ADC、UART、看门狗等。掌握现场总线设计与应用,如:I2C总线、SPI总线、CAN总线、RS485总线等。掌握ZigBee应用软件开发。掌握蓝牙Mesh组网及应用软件开发。掌握NB-IoT应用软件开发方法,掌握CoAP、MQTT协议。熟悉嵌入式Linux内核移植、uboot移植及rootfs制作。深刻理解嵌入式Linux设备驱动开发。对嵌入式Linux系统在视频监控、网络通信、多媒体处理及智能控制领域有深入理解。熟悉嵌入式人工智能项目的部署与移植开发应用职业规划目标C/C++软件开发工程师Qt开发工程师桌面应用软件开发工程师Linux后台开发工程师网游后端开发工程师嵌入式Linux应用开发工程师音视频开发工程师物联网应用开发工程师嵌入式Linux驱动开发工程师嵌入式Linux系统移植与裁剪工程师嵌入式Linux多媒体研发工程师ARM开发工程师STM32应用软件开发工程师嵌入式FreeRTOS开发工程师嵌入式ucOS开发工程师现场总线控制、现场总线通信应用开发工程师Python开发工程师人工智能开发工程师

一、Python基础与科学计算阶段概述:

本阶段讲解,Python基础语法,NumPy科学计算模块,Pandas数据分析模块,

Matplotlib和Seaborn数据可视化模块

达成目标:

通过本阶段学习,让学生快速掌握Python语言的特性和语法,并着重对算法这块所涉及的NumPy科学计算模块和Pandas数据分析模块进行讲解。

实战教学项目:

泰坦尼克号数据分析案例可视化剖析逻辑回归损失函数案例Python基础语法Python基础语法

循环控制生成器装饰器继承类与对象函数式编程常用内建函数集合操作数据类型切片操作科学计算模块Numpy

Numpyndarray对象Numpy数据类型Numpy数组属性Numpy创建数组Numpy切片和索引Numpy高级索引Numpy广播Numpy数组操作Numpy数学和统计函数Numpy排序、条件过滤函数Numpy线性代数数据处理分析模块Pandas

PandasIO文件操作Pandas索引和数据选择器Pandas合并、连接Pandas缺失值数据处理Pandas数据离散Pandas统计计算数据可视化模块

 

二、算法数学基础阶段概述:本阶段讲解,微积分基础,线性代数基础,多元函数微分学,线性代数高级,概率论,最优化。

达成目标:通过本阶段学习,掌握后面机器学习算法、深度学习算法涉及的数学知识,使得后面在理解算法推导的过程中游刃有余。如果学员大学数学知识还未忘记或者研究生毕业,这一部分可以先跳过学习后面的知识。

微积分基础

导数的定义一元函数泰勒展开导数与函数凹凸性极值定理导数与函数单调性高阶导数神经网络激活函数的导函数求解复合函数求导法则四则运算法则基本函数求导公式导数几何意义、物理意义左导数、右导数、可导函数线性代数基础

向量与其运算特殊向量向量范数向量加减、数乘、内积、转置行向量和列向量矩阵与其运算行列式逆矩阵矩阵加减、数乘、矩阵乘法、转置方阵、对称阵、单位阵、对角阵

多元函数微分学

1)偏导数

2)高阶偏导数

3)梯度

4)雅可比矩阵

5)Hessian矩阵

6)极值判别法则

线性代数高级

1)二次型

2)特征值和特征向量

3)特征值分解

4)多元函数的泰勒展开

5)矩阵和向量的求导公式

6)奇异值分解

7)奇异值分解计算方式

8)奇异值分解性质

9)SVD用于数据压缩

10)SVD用于PCA降维

11)SVD用于协同过滤

12)SVD用于矩阵求逆

概率论

1)随机事件和随机事件概率

2)条件概率和贝叶斯公式

3)随机事件的独立性

4)随机变量

5)数学期望和方差

6)常用随机变量服从的分布

7)随机向量

8)随机变量独立性

9)协方差与协方差矩阵

10)随机向量的常见分布

11)最大似然估计

最优化

1)局部最小和全局最小

2)迭代法求解

3)梯度下降法推导

4)牛顿法推导

5)坐标下降法

6)数值优化算法的问题

7)凸集

8)凸函数

9)凸优化问题

10)拉格朗日乘数法

11)拉格朗日对偶

12)KKT条件

 

三、线性回归算法

阶段概述:本阶段讲解,多元线性回归,梯度下降法,归一化,正则化,Lasso回归,Ridge回归,多项式回归。

达成目标:通过本阶段学习,从推导出多元线性回归算法的损失函数,到实现开发和应用算法,再到对算法从数据预处理上,以及损失函数上的优化都将整体彻底掌握。对后面学习更多算法,甚至深度学习都将起到举一反三的效果。

多元线性回归

1)简单线性回归

2)最优解与最小二乘法

3)多元线性回归判别式

4)多元线性回归的数学假设

5)利用MLE推导出目标函数

6)对数似然推导出MSE损失函数

7)MSE求偏导得到参数解析解

8)多元线性回归的python代码实现

9)多元线性回归的sklearn代码实战

梯度下降法

1)梯度下降法原理与公式

2)学习率设置的学问

3)GD应用于多元线性回归的流程

4)全量梯度下降的原理与代码实现

5)随机梯度下降的原理与代码实现

6)Mini-Batch梯度下降的原理与代码实现

7)代码实现增加MBGD数据的随机性

8)代码实现动态调整学习率

归一化

1)归一化目的与量纲

2)归一化提高模型精度

3)最大值最小值归一化与缺点

4)方差归一化与好处

5)均值归一化与好处

6)标准归一化的代码实战与技巧

正则化

1)提高泛化能力与防止过拟合

2)正则化用于损失函数

3)L1与L2正则项与范数的关系

4)结合GD讲解L1L2的几何意义

5)透过导函数讲解L1的稀疏性

6)透过导函数讲解L2的平滑性

Lasso回归、Ridge回归、多项式回归

1)Lasso回归原理与代码实战

2)Ridge回归原理与代码实战

3)ElasticNet回归原理与代码实战

4)升维的意义

5)多项式回归进行升维原理

6)多项式升维代码实战

 

四、线性回归分类算法

阶段概述:本阶段讲解,逻辑回归算法,Softmax回归算法,SVM支持向量机算法,SMO优化算法。

达成目标:通过本阶段学习,推导逻辑回归算法、SVM算法的判别式和损失函数,算法的优化、实现算法和应用开发实战。将会对分类算法有深入认知,对于理解后续神经网络算法和深度学习至关重要。

逻辑回归

1)Sigmoid函数特点

2)广义线性回归与逻辑回归的数学假设

3)证明伯努利二项分布属于指数族分布

4)推导出逻辑回归判别式

5)推导出逻辑回归损失函数logloss

6)推导出损失函数导函数用于最优化

7)逻辑回归解决多分类问题OVR

8)逻辑回归代码实战--鸢尾花数据集分类

Softmax回归

1)Softmax函数特点

2)广义线性回归与Softmax回归的数学假设

3)证明多项式分布属于指数族分布

4)推导出Softmax回归判别式

5)推导出Softmax回归损失函数cross-entropy

6)证明逻辑回归是Softmax的特例

7)剖析逻辑回归多分类和Softmax多分类的本质区别

8)Softmax回归代码实战--音乐曲风分类

SVM支持向量机

1)SVM与感知机关系

2)几何距离和函数距离

3)SVM支持向量机算法原理

4)SVM的损失函数

5)硬间隔SVM的优化步骤

6)软间隔SVM

7)非线性SVM与核函数

8)SVM在sklearn模块中参数详解

9)SVM人脸识别案例

10)SVM的概率化输出

11)SVM的OVO多分类

12)SVM的hingeloss

SMO优化算法

1)SMO优化算法的子二次规划问题思路

2)SMO把目标函数从二元函数变一元函数

3)SMO推导出新的α和旧的α关系

4)SMO对α进行剪裁

5)SMO优化SVM算法代码实现

决策树算法

1)决策树的算法原理与数学表达

2)分裂指标Gini系数、信息增益、信息增益率

3)前剪枝与后剪枝

4)决策树ID3、C4.5和CART

5)决策树算法优略比较

6)决策树之鸢尾花数据集分类案例

7)通过graphvis绘制决策树模型

随机森林算法

1)集成学习算法思想Bagging、Boosting、Stacking

2)用户画像集成学习方法案例

3)OOB数据集验证随机森林算法

4)随机森林副产品之特征选择

Adaboost算法

1)Adaboost算法原理

2)数据的权重与权重错误率

3)权重错误率调整到0.5训练下一个弱分类器

4)计算每个样本的权重Un

5)应用Adaboost算法做人脸识别

GBDT算法

1)函数空间的梯度下降与负梯度

2)推导GBDT回归是拟合残差

3)Shrinkage衰减系数的作用

4)推导GBDT分类亦是拟合残差

5)GBDT二分类模型训练和使用

6)GBDT多分类模型训练和使用

7)GBDT副产品之特征组合用于降维

8)实现GBDT+LR架构代码实战

XGBoost算法

1)XGBoost算法与决策树集成学习关系

2)XGBoost目标函数与正则项

3)XGBoost目标函数用二阶泰勒展开

4)推导简化XGBoost目标函数引入gh

5)XGBoost目标函数加入树的复杂度

6)推导出XGBoost目标函数最终形式和叶子节点表达式

7)详解XGBoost算法参数与交叉验证

8)XGBoost算法调用GPU显卡资源加速

 

五、无监督学习算法

阶段概述:本阶段讲解,K-means聚类算法,K-means聚类算法的变形,密度聚类,层次聚类、谱聚类、PCA降维算法、EM期望最大化、GMM高斯混合模型。

达成目标:通过本阶段学习,掌握无监督机器学习算法的作用和原理,透彻理解聚类和降维的本质区别,今后可以正确选择无监督学习算法,并实战开发。

聚类系列算法

1)相似度测量方法

2)K-means算法原理

3)K-means图像应用案例

4)K-medoids算法

5)K-means++算法

6)Mini-batchK-means算法

7)Canopy聚类算法

8)Agnes层次聚类算法

9)Diana层次聚类算法

10)DBSCAN密度聚类算法

11)Spectral谱聚类

12)微博用户聚类分析案例

PCA降维算法

1)特征选择与特征映射

2)最大投影方差原理与推导

3)最小投影距离原理与推导

4)PCA过程的中心化

5)KernelizedPCA

6)SVD奇异值分解用于PCA

EM算法

1)Jensen不等式

2)EM算法的E-step

3)EM算法的M-step

4)EM在GMM公式推导中应用

GMM算法

1)单一高斯分布的参数估计

2)混合高斯分布的似然函数

3)GMM的计算流程

4)GMM之图片前景背景分离代码实战

5)GMM之根据声音判别性别代码实战

6)GMM之根据声音判别用户代码实战

六、决策树系列算法

阶段概述:本阶段讲解,决策树算法、随机森林算法、Adaboost算法、GBDT算法、XGBoost算法。

达成目标:通过本阶段学习,掌握非线性决策树系列算法,重点掌握Kaggle神奇XGBoost算法,理解GBDT和XGBoost涉及的公式推导,本阶段的掌握将大大提升学员数据挖掘的能力,对于后续理解Kaggle实战阶段内容会起到很大的帮助。实战教学项目:

通过graphvis绘制决策树模型

用户画像集成学习方法案例

Adaboost算法做人脸识别

GBDT+LR架构代码实现

决策树算法

1)决策树的算法原理与数学表达

2)分裂指标Gini系数、信息增益、信息增益率

3)前剪枝与后剪枝

4)决策树ID3、C4.5和CART

5)决策树算法优略比较

6)决策树之鸢尾花数据集分类案例

7)通过graphvis绘制决策树模型

随机森林算法

1)集成学习算法思想Bagging、Boosting、Stacking

2)用户画像集成学习方法案例

3)OOB数据集验证随机森林算法

4)随机森林副产品之特征选择

Adaboost算法

1)Adaboost算法原理

2)数据的权重与权重错误率

3)权重错误率调整到0.5训练下一个弱分类器

4)计算每个样本的权重Un

5)应用Adaboost算法做人脸识别

GBDT算法

1)函数空间的梯度下降与负梯度

2)推导GBDT回归是拟合残差

3)Shrinkage衰减系数的作用

4)推导GBDT分类亦是拟合残差

5)GBDT二分类模型训练和使用

6)GBDT多分类模型训练和使用

7)GBDT副产品之特征组合用于降维

8)实现GBDT+LR架构代码实战

XGBoost算法

1)XGBoost算法与决策树集成学习关系

2)XGBoost目标函数与正则项

3)XGBoost目标函数用二阶泰勒展开

4)推导简化XGBoost目标函数引入gh

5)XGBoost目标函数加入树的复杂度

6)推导出XGBoost目标函数最终形式和叶子节点表达式

7)详解XGBoost算法参数与交叉验证

8)XGBoost算法调用GPU显卡资源加速

 

七、Kaggle实战

阶段概述:本阶段讲解,CTR广告预估项目、药店销量预测案例、活动推荐预测案例、银行贷款风控案例。

达成目标:通过本阶段学习,实战代码深刻理解前面学过的算法和工具,Kaggle竞赛数据集全部来自于公司,并且需求直接是企业里面的需求,并且此阶段讲解的代码均是大牛级开源的代码。要知道Kaggle上的大牛会比一般企业的算法工程师水平高,所有同学学习Kaggle实战将会受益匪浅。

CTR广告预估项目

药店销量预测案例

活动推荐预测案例

银行贷款风控案例

八、概率图模型算法阶段概述:本阶段讲解,贝叶斯分类算法、隐含马尔可夫模型、最大熵模型、条件随机场达成目标:通过本阶段学习,掌握NLP自然语言处理的一些基本算法,本阶段的理解对于后续完成NLP大项目很重要。

贝叶斯分类

1)朴素贝叶斯分类器

2)拉普拉斯估计

3)代码实战垃圾邮件分类

HMM算法

1)马尔可夫过程

2)初始概率、转移概率、发射概率

3)隐含马尔可夫模型原理

4)维特比算法

最大熵模型

1)熵、条件熵、相对熵、互信息

2)最大熵模型算法原理

3)有约束条件的函数最优化问题

4)最大熵和最大似然估计关系

5)IIS算法

CRF算法

1)条件随机场的性质

2)条件随机场的判别函数

3)条件随机场的学习

4)条件随机场的推断

5)CRF与HMM关系

 

九、Linux基础

定位:Linux是一种免费使用和自由传播的类UNIX操作系统,Linux凭借其免费开源、模块化程度高、安全稳定性强及其良好的可移植性备受广大开发者和企业的青睐。目前绝大部分的嵌入式设备上都搭载了Linux操作系统,随着互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,90%的企业已经使用Linux操作系统进行云计算、大数据平台的构建。

本阶段几乎是零门槛,只要有基本的动手能力即可掌握。学员将通过自己动手跟随老师从Linux操作系统的安装到Linux操作系统的使用、Linux操作系统的维护循序渐进的掌握本阶段的内容。

通过本阶段的学习,学员将重点掌握Linux的目录结构、启动流程、shell命令、vim编辑器的使用、用户和组管理、权限管理、磁盘管理、系统进程管理、网络管理等知识点。

内容:

2)Linux的介绍,Linux的安装a)VMwareWorkstation虚拟软件安装过程、Ubuntu虚拟机安装过程3)Linux系统启动过程介绍a)内核引导b)init进程c)系统初始化

d)建立终端e)用户登录系统4)Linux系统目录结构a)Linux文件系统的层次结构b)Linux文件系统的作用c)Linux绝对路径和相对路径d)Linux文件/目录的命名规则e)Linux命令如何识别文件类型5)Linux常用shell命令a)文件管理命令b)文档编辑命令c)文件传输命令d)磁盘管理命令e)网络通讯命令f)系统管理命令g)系统设置命令h)备份压缩命令i)设备管理命令6)Linux系统密码管理a)Linux系统密码配置文件b)Linux系统修改密码方式7)Vim文本编辑器8)Linux远程登录a)telnet登录b)ssh登录c)xshell软件的使用9)Linux用户和组管理a)Linux系统用户账号的管理b)Linux系统用户组的管理c)用户账号相关的配置文件10)Linux权限管理a)Linux权限管理的重要性b)Linux权限位c)Linuxumask详解11)Linux文件系统管理a)磁盘结构b)Linux常用文件系统介绍c)硬盘设备和磁盘分区的识别d)df命令e)du命令f)mount命令g)fdisk命令h)mkfs命令i)mke2fs命令

j)Linux交换分区的作用12)Linux常用服务搭建a)ftp服务搭建b)samba服务搭建c)ssh搭建d)telnet搭建e)Nginx服务搭建13)Linux系统服务管理a)Linux系统服务及其分类b)Linux端口及查询方法详解c)Linux基于xinetd服务的管理方法详解d)影响Linux系统性能因素分析e)系统性能分析:sar命令f)cpu运行状态查看g)内存使用状态查看14)Linux系统日志管理a)Linuxrsyslogd服务及启动方法(详解版)b)Linux日志文件(常见)及其功能c)Linux日志文件格式分析d)rsyslogd配置文件格式及其内容详解e)Linux日志服务器设置过程f)Linux日志轮替(日志转储)及logrotate配置文件分析g)Linuxlogrotate命令用法详解:进行日志转储(轮替)h)Linux日志分析工具(logwatch)安装及使用15)Linux软件包管理16)Linux备份与恢复a)Linux备份的重要性b)Linux中的哪些数据需要备份?c)Linux数据备份介质的选择d)Linux备份策略(完全备份、增量备份和差异备份)详解e)Linuxtar命令备份数据f)Linuxdump命令用法详解:备份分区、文件或目录g)Linuxrestore命令:还原dump操作备份下的文件、目录或分区h)Linuxdd命令详解:数据备份,并在备份过程中进行格式转换i)Linuxrsync命令用法详解17)SELinux管理a)SELinux是什么b)SELinux的主要作用c)SELinux的工作模式(Disabled、Permissive和Enforcing)d)SELinux配置文件(/etc/selinux/config)e)SELinux工作模式设置(getenforce、setenforce和sestatus命令)f)SELinux安全上下文查看方法(超详细)g)SELinux安全上下文的修改和设置(chcon和restorecon命令)h)SELinux默认安全上下文的查询和修改(semanage命令)

i)SELinuxauditd日志系统的安装与启动j)SELinuxauditd日志使用方法详解k)SELinuxTargeted、MLS和Minimum策略l)SELinux策略规则查看方法(seinfo和sesearch)详解m)SELinux策略规则的开启和关闭(详解版)

练习:Linux系统监控实战:系统一旦上线跑起来,自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的,这就需要我们要监视系统的运行状况,发现问题及时处理。通过本课程可以学习有关系统监控的命令使用:如vmstat,top,iostat。以及监控脚本的编写。

十、C语言高级编程定位:C语言是当今世界上最流行的计算机语言之一,C语言是所有编程语言之母。通过学习C语言,学生们不仅能够掌握一种实用的计算机编程语言,锻炼抽象思维能力,掌握编程的技巧,同时也为今后学习C++打下了良好的基础。

本阶段适用于零基础的学员,在学习C语言编程时,我们将完全摆脱大学的理论课+实践课的教学方式,我们将全程跟随老师一边学习理论基础,一边敲代码,通过代码验证理论,这样不仅可以快速掌握C语言的基础语法,同时也能够快速提高编程能力。

C语言开篇

1)C语言发展历史及特点2)C语言应用及就业场景3)手把手教你搭建C语言开发环境4)第一个C语言程序5)程序的编译及运行6)单行注释和多行注释7)文档注释

数据类型

10)标识符11)关键字12)变量的定义、声明、赋值和使用13)整型及整型数据的表示(进制问题)14)浮点型15)字符型常量16)数据在内存中的存储17)由printf(“%d ”,10/3);所引发的思考

18)那些年我们遇到的变态笔试题19)局部变量和全局变量20)揭开sizeof的神秘面纱21)ASCII表

C语言输入输出

1)printf的高级用法2)scanf读取冲键盘输入的数据3)走进缓冲区的世界(理解且掌握)4)输入输出疑难杂症

运算符和表达式

1)赋值运算符2)算术运算符3)关系运算符4)逻辑运算符5)位运算符6)你会用位运算控制灯光的开和关吗7)常见笔试题分析8)逗号运算符9)条件运算符10)其他运算符11)预算符的优先级关系

流程控制

1)分支结构a)if分支b)if分支的嵌套c)switch分支d)if分支和switch分支综合应用e)作业:员工奖金计算2)循环结构a)while循环b)do~while循环c)for循环d)练习:求1+2!+3!+4!+5!的和e)练习:求斐波那契数列的第30项f)练习:篮子中鸡蛋个数计算g)经典程序讲解:求正整数的质因数

h)作业:求10000以内的自守数i)作业:Sn=a+aa+aaa+....+n个a表达式结果计算j)作业:百元买白鸡k)作业:求100以内的所有质数

数组

1)数组的基本概念2)一维数组a)一维数组的使用b)一维数组的内存空间布局c)一维数组元素的逆置d)如何删除数组中重复的元素e)练习:从键盘上输入年月日,计算这一天是这一年的第几天f)经典程序讲解:奇偶数的互换g)实际应用举例:不使用排序算法,求数组中第二大的值h)作业:有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号3)二维数组a)二维数组的使用b)二维数组和一维数组的关系c)二维数组的内存空间布局d)练习:二维数组的对角线之和e)经典程序讲解:二维数组操作之行列互换f)作业:假设有有序数组a和无序数组b,请编写程序将数组b合并到数组a中,并且最后保持数组a依然是有序的4)字符串i.字符串的概念ii.字符串和字符数组iii.练习:将字符数组中的所有的非字母和数字的字符删除iv.实际应用举例:将字符串转换为整数v.作业:将字符串转换为浮点数

函数

1)函数的基本使用a)函数的定义b)函数的形参和实参c)函数的调用d)函数的返回值e)程序运行的秘密f)再论全局变量和局部变量g)函数的栈空间

h)练习:封装函数交换两个整数的值i)练习:封装函数实现求斐波那契数列中指定项的值2)递归函数a)递归函数的定义b)递归函数的运行原理c)递归求阶乘d)中间递归函数e)多层递归函数f)递归时间和内存开销探索g)递归的优化h)练习:递归函数求n的阶乘i)练习:递归函数求斐波那契数列的第n项j)经典程序讲解:汉诺塔游戏k)作业:递归函数实现求斐波那契数列的前n项的和

C语言预处理

1)什么是预处理命令2)#include头文件的包含3)#include“”和#include的区别4)头文件的搜索规则5)C语言条件编译6)C语言宏定义7)宏定义的基本使用8)带参数的宏定义9)宏定义和函数的区别10)宏参数的字符串化和宏参数的连接

指针

1)指针的基本使用a)指针的概念b)指针变量的定义和使用c)指针变量的运算d)指针所占用的内存空间e)练习:通过指针交换两个整型变量的值f)不同类型的指针之间的区别g)空指针NULL和void指针2)指针和一维数组a)数组指针

b)练习:通过指针删除数组中重复的元素c)字符串指针d)思考:为什么将一串字符串赋值给指针,却不能通过指针修改字符串的内容e)指针变量作为函数形参f)指针作为函数返回值g)malloc和freeh)再论指针的本质i)堆和栈的区别j)指针带来的内存泄漏问题k)野指针和悬空指针3)指针数组a)指针数组和字符串数组b)指针数组的灵活应用c)main函数的命令行参数4)函数指针a)函数指针的基本使用b)回调函数c)练习:通过不同函数指针调用不同类型的函数d)经典程序讲解:多个函数的随机调用5)二级指针和多级指针a)二级指针的定义及使用b)一级指针、二级指针和函数的恩怨情仇c)多级指针的定义及使用6)指针和二维数组7)字符串专题a)常用字符串处理函数的使用i.strlenii.strcpystrncpyiii.strcmpstrncmpiv.strcatstrncatv.strstrvi.strtokstrtok_rb)实际应用举例:统计某个班级中姓“李”的同学的个数c)实际应用举例:将“流浪地球”演员表按照字母表先后顺序显示d)实际应用举例:http协议解析e)字符串处理函数的实现f)常见笔试题分析

结构体

1)结构体定义a)typedef的使用b)结构体的初始化

c)结构体数组d)指针和结构体e)练习:封装一个结构体保存学生的相关信息,并且计算多个学生中年龄最大值、最小值和平均值2)共用体/联合体a)共用体的定义和使用b)共用体的内存空间布局c)共用体和结构体的区别d)大端模式和小端模式e)共用体的妙用:判断大小端模式f)经典习题讲解:通过共用体分解一个int类型的数据g)经典习题讲解:通过共用体将四个字符组合成整型数据3)枚举a)枚举的定义和使用b)通过枚举提升代码可读性实例代码c)练习:通过枚举获取某天是星期几d)实际应用举例:英雄联盟“多杀”音效输出

C语言编程高阶

1)C程序的组成a)C程序项目目录结构b)static关键字的使用c)const关键字的使用d)Makefile文件的编写e)C程序的编译步骤f)动态库的使用g)静态库的使用h)练习:将实现交换两个整数的函数编译成动态库和静态库2)C语言调试方法及技巧a)GDB的下载和安装b)gdbrun(r)命令:启动程序c)GDBbreak(b):设置断点d)GDBwatch命令:监控变量值的变化e)GDBwatch命令:监控变量值的变化f)GDBcatch命令:建立捕捉断点g)GDB条件断点(condition命令)详解h)GDB单步调试程序i)如何使用GDB进行断点调试?j)GDBprint和display命令:查看变量的值k)GDBprint命令更高级的用法3)走进C语言内存管理世界a)程序在计算机中到底是如何运行的b)我们在程序中看到的地址为什么是假的?

c)虚拟地址和物理地址d)虚拟地址空间及编译模式e)结构体的字节对齐f)什么是栈溢出g)函数在栈上到底是怎样的?h)函数进栈和出栈的过程i)栈溢出攻击的原理j)实际应用举例:网站密码破解

 

十一、数据结构及算法

课程定位:“程序设计=数据结构+算法”,数据结构和算法是程序的灵魂。在进行应用软件开发时一个程序能否选择合适的数据结构和算法将直接导致程序的运行是否高效。通过本阶段的学习,学员不仅可以掌握日常应用软件开发中常用的数据结构和算法,例如链表、栈和队列、二叉树、平衡二叉树、二分查找法、冒泡法排序、快排法等,同时也将学习到更多进阶的内容,例如B树、B+树、红黑树、哈希表、哈希查找、堆排序、动态规划等,学习完这部分知识将大大提高学员大厂笔试和面试的通过率。数据结构基础

1)线性结构a)数组b)链表i.单向链表ii.单向链表的逆置iii.单向链表的环iv.单向循环链表v.双向链表vi.双向循环链表c)栈i.数组实现的栈ii.链表实现的栈iii.实际应用举例:函数形参的入栈和出栈顺序d)队列i.实际应用举例:银行取号机功能实现2)非线性结构a)二叉树b)完全二叉树c)满二叉树d)二分查找树

e)平衡二叉树f)图

数据结构进阶

1)二叉树的遍历i.通过栈实现二叉树的按深度遍历ii.通过队列实现二叉树的按层次遍历iii.判断两棵二叉树是否相同2)哈希表a)哈希表的实现b)哈希冲突及解决方案c)实际应用举例:统计一篇文章中单词的个数3)B树a)B树的概念及实现原理b)B树的实际应用:磁盘搜索原理4)B+树a)B+树的概念及实现原理b)B+树的实际应用:数据库索引的实现c)B树和B+树的区别5)哈弗曼树a)哈弗曼树的特点b)通过C语言实现哈弗曼树c)实际应用举例:通过哈夫曼编码实现数据的加密传输6)红黑树a)红黑树的概念及使用b)红黑树的旋转c)红黑树和普通平衡二叉树的比较

算法基础

1)排序算法a)冒泡排序b)插入排序c)快速排序2)查找算法a)顺序查找b)二分查找c)插值查找

算法进阶

1)时间复杂度计算2)空间复杂度的计算3)排序算法a)快排法的“Bug”及解决办法b)堆排序c)希尔排序d)归并排序e)桶排序f)排序算法的稳定性4)查找算法a)TopK问题b)大数据中查找前n大数的解决办法5)回溯法a)八皇后问题6)动态规划7)贪心算法8)背包问题

十二、Linux高级程序设计

课程定位:当前主流的嵌入式设备中均运行架构复杂的操作系统,操作系统提供了多任务的实现机制,为了能让嵌入式设备实现更高效的运作,必须掌握嵌入式操作系统中最核心的系统编程技巧,包括:文件操作、多进程编程、进程管理、进程间通信机制、多线程编程、线程间同步互斥机制、线程池机制等。

shell编程

1)shell变量2)shell位置参数(命令行参数)3)shell特殊变量a)$#b)$*c)$@d)$?e)$$

Linux文件I/O

1)标准IOa)什么是标准IO?b)为什么需要标准IO?c)文件的基本操作i.fopen函数ii.fread函数iii.fwrite函数iv.fclose函数v.fseek函数vi.fstat函数d)练习:使用标准IO拷贝文件e)标准IO的缓冲区i.行缓冲ii.全缓冲iii.无缓冲f)sprintf的使用i.sprintf语法ii.实际应用举例:学生信息远程传输数据包封装2)系统IOa)什么是系统IO?b)为什么需要系统IOc)Linux系统中文件的描述d)文件的基本操作i.open函数ii.read函数iii.write函数iv.close函数v.lseek函数vi.stat函数e)Linux目录的操作方法f)标准IO和系统IO比较i.从实现原理上理解标准IO的作用和系统IO的作用ii.分析标准IO和系统IO的使用场景iii.标准IO系统IO性能分析iv.时间和日期编程实例1.当前时间年月日时分秒获取2.练习:你知道你活了多少天,活了多少秒了吗?

3.实际应用举例:计算你的“英雄联盟”游戏的“L龄”

Linux并发编程

1)并发和并行的概念2)进程a)进程的基本概念b)进程的状态i.进程在Linux操作系统中的描述ii.进程在Linux下的相关系统文件iii.进程的三态/五态iv.进程之间的切换v.进程的上下文c)多进程编程i.父进程、子进程ii.进程控制函数fork、getpid、getppid、wait、waipid、killiii.子进程的“前世今生”iv.关于fork函数的经典笔试题讲解v.僵尸进程vi.孤儿进程d)进程间通信(IPC)i.管道1.有名管道2.无名管道ii.信号iii.SystemIPC和PosixIPC1.消息队列2.共享内存3.信号量e)system函数f)exec函数簇g)system函数和exec函数簇的区别h)练习:程序创建子进程并令其挂起100s,令父进程每秒监测子进程状态,若子进程死亡则打印“子进程死亡”,否则打印“HelloWorld!”i)Linux守护进程的设计2)多线程a)线程的基本概念b)线程和进程的关系c)多线程编程i.线程控制函数pthread_createpthread_joinpthread_selfpthread_cancelpthread_detach

ii.PV操作iii.线程的同步1.互斥锁2.读写锁3.条件变量4.信号量5.线程安全i.生产者消费者模型ii.银行家算法iii.哲学家就餐问题iv.线程池v.作业:多线程目录拷贝

 

十三、Linux网络编程

课程定位:网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析。在本阶段中我们将一起学习一些基础网络尝试,掌握OSI、TCP/IP模型,掌握TCP协议实现原理,同时我们还将学习TCP、UDP编程基础,掌握Linux下的高并发网络编程。

Linux网络编程预备知识

1)OSI网络模型2)TCP/IP模型a)TCP/IP四层模型介绍i.应用层介绍ii.传输层介绍1.TCP传输协议头部2.UDP传输协议头部iii.端口号iv.子网掩码v.网络层介绍1.IP地址

2.子网掩码3.ICMP协议4.ARP协议、ARP攻击5.路由器工作原理vi.数据链路层介绍1.交换机的工作原理2.路由器和交换机的比较b)TCP三次握手i.TCP三次握手流程ii.SYN洪泛攻击c)TCP四次挥手d)TCP可靠稳定实现原理e)流量控制和滑动窗口f)UDP传输协议分析3)网络工具wireshark用法4)上网流程分析a)DNS服务器b)HTTP协议和HTTPS协议c)Nginxd)负载均衡5)NAT网络地址转换协议

socket编程

1)网络字节序和主机字节序2)TCP编程a)TCP服务端编程流程b)TCP客户端编程流程3)UDP编程a)UDP服务端编程流程b)UDP客户端编程流程c)广播和组播4)IO模型分析)复用5IOa)selectb)pollc)Epoll练习:网络日志服务器开发练习:语言实现网络嗅探器:通过原生套接字的方式,监听所有本地主机收发的CLinux数据链路层帧结构,然后解析数据包的类型,并记录到日志文件。实现一个轻量级的网络嗅探器

6)TCP带外数据编程7)TCP粘包处理8)Unixdomain编程

9)作业:基于TCP的日志服务器的实现10)作业:FTP文件服务器实现

 

十四、Linux数据库编程

MySQL

1)MySQL数据库的安装a)windows下MySQL的安装b)ubuntu下MySQL的安装c)sqlyog的安装2)MySQL数据库的基本操作a)sql语句书写规则b)MySQL查看数据库c)MySQL创建数据库d)MySQL修改数据库e)MySQL删除数据库f)MySQL选择数据库g)MySQL注释h)MySQL中SQL语句的大小写规则3)MySQL数据类型和存储引擎a)MySQL数据类型简介b)MySQL整数类型c)MySQL小数类型d)MySQL日期和时间类型e)MySQL字符串类型f)MySQL二进制类型g)MySQL数据类型的选择h)MySQL转义字符的使用i)MySQL系统变量j)MySQL存储引擎:InnoDB、MyISAM4)MySQL数据表的基本操作a)MySQL创建数据表b)MySQL修改数据表c)MySQL修改/删除字段d)MySQL删除数据表e)MySQL删除被其它表关联的主表

f)MySQL查看表结构g)MySQL数据表添加字段5)MySQL约束、函数和运算符a)MySQL约束概述b)MySQL主键c)MySQL主键自增长d)MySQL外键约束e)MySQL唯一约束f)MySQL检查约束g)MySQL默认值h)MySQL非空约束i)MySQL常用运算符j)MySQL算术运算符k)MySQL逻辑运算符l)MySQL比较运算符m)MySQL位运算符n)MySQL运算符优先级o)MySQLIN和NOTINp)MySQL函数6)MySQL操作表中数据a)MySQL插入数据b)MySQL去重c)MySQL设置别名d)MySQL限制查询结果的条数e)MySQL对查询结果排序f)MySQL条件查询g)MySQL使用LIKE模糊查询h)MySQL范围查询i)MySQL空值查询j)MySQL分组查询k)MySQL过滤分组l)MySQL交叉连接m)MySQL内连接n)MySQL外连接o)MySQL子查询p)MySQL更新数据q)MySQL删除数据练习:学生信息管理系统数据库设计7)MySQL视图、索引a)MySQL视图是什么?b)MySQL创建视图c)MySQL查看视图d)MySQL修改视图e)MySQL删除视图

f)MySQL索引g)MySQL索引可以分为哪些类型?h)MySQL创建索引i)MySQL查看索引j)MySQL修改和删除索引k)索引在什么情况下不会被使用?l)怎么提升索引的使用效率,设计出更高效的索引8)数据库的设计a)ER模型b)数据库三范式c)作业:校园网数据库设计9)MySQL事务a)事务的概念和特性b)MySQL执行事务的语法和流程MySQL设置事务自动提交(开启和关闭)c)从实例出发,搞懂高并发下的数据库事务隔离级别d)MySQL查看和修改事务隔离级别e)MySQL表锁、行锁和页锁f)MySQLInnoDB的3种行锁定方式g)Mysql并发时常见的死锁及解决方法10)MySQL性能优化11)MySQLC语言编程接口

Sqlite3

1)ubuntusqlite3的安装2)sqlitestudio的使用3)Sqlite3数据库结构4)Sqlite3库的操作5)Sqlite3C语言编程接口

①3000多本Python电子书有

②Python开发环境安装教程有

③Python400集自学视频有

④软件开发常用词汇有

⑤Python学习路线图有

⑥项目源码案例分享有

如果你用得到的话可以直接拿走,关注+私❤学习就好啦。

我是白云,一名喜欢分享知识的程序员,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇