文章汇总

文章目录

1 单片机

1.1 硬件设计

1.1.1 硬件相关的基本概念

电磁干扰(EMI)

1.1.2 模拟电路

分立元件:
发光二极管
电容
三极管

常用的数字器件

1.1.3 数字电路

数字电路基本概念:
常用的数字逻辑电路符号

1.2 MCU

1.2.1 51

C51独有特性:
C51中变量类型和范围

定时器:
51单片机中的定时器

中断:
51单片机的中断系统
通信协议:

硬件模块:
数码管的驱动
点阵的驱动

1.2.2 STM32

Crotex-M3内核:
Cortex-M3的工作模式和特权级别
Cortex-M3中的寄存器组
Cortex-M3中的存储器映射
Cortex-M3内核中的异常
Cortex-M3内核的指令系统

1.3 RTOS

1.3.1 TinyOS

1.3.1.1 TinyOS的实现

RTOS基础:
前后台代码结构
RTOS原理及功能简介

基本任务切换实现:
任务切换的基础:模拟任务切换时寄存器的保存与恢复
任务的定义、任务切换的原理及实现
双任务时间片运行原理
双任务延时原理与空闲任务

内核核心实现:
临界区保护
调度锁保护
位图数据结构
双向链表数据结构
多优先级任务
任务延时队列
同优先级时间片运行

任务管理模块实现:
任务的挂起与唤醒
任务的删除
任务状态的查询

事件控制块实现:
事件控制块的原理与创建
事件的等待与通知
事件控制块的清空与状态查询

计数信号量的实现:
计数信号量的原理与创建
计数信号量的获取与释放
计数信号量的删除与状态查询

邮箱实现:
邮箱的原理与创建
邮箱的获取与释放
邮箱的清空与删除
邮箱的状态查询

存储块实现:
存储块的原理与创建
存储块的存储与释放
存储块的删除与状态查询

事件标志组实现:
事件标志组的原理与创建
事件标志组的等待与通知
事件标志组的删除与状态查询

互斥信号量实现:
互斥信号量的原理与创建
互斥信号量的等待与通知
互斥信号量的删除与状态查询

软定时器的实现:
软定时器的原理与创建
软定时器的启动与停止
软定时器的删除与状态查询

性能测量:
堆栈使用测量
CPU使用百分比测量

内核裁剪与移植:
内核裁剪
Hooks扩展

1.3.1.2 TinyOS的使用

任务的创建:
任务的创建

任务间共享资源保护:
资源共享冲突问题概述
任务间资源共享问题示例
关中断解决任务间资源共享问题
调度锁解决任务间资源共享问题
二值信号量解决任务间资源共享问题
事件标志组解决任务间资源共享问题
邮箱解决任务间资源共享问题
互斥信号量解决任务间资源共享问题
多任务的死锁问题
任务间共享资源问题总结

任务中断间的共享资源保护:
任务与中断共享资源冲突示例
使用关中断解决资源冲突问题
使用关指定中断解决资源冲突问题
优化缩短关中断的时间
请求模式解决共享资源冲突
嵌套中断共享资源问题及解决

任务中断间的同步与通信:
任务中断间的同步与通信概述
用信号量实现任务间单向同步
用邮箱实现多事件的单向同步
用事件标志组实现多事件的单向同步
使用信号量实现简单双向同步
环状同步造成的死锁问题
利用全局数据实现数据通信
利用邮箱实现数据通信

系统延时与定时:
系统时钟节拍设置
任务延时的配置
一次性定时事件的处理
周期性定时事件的处理
定时器的资源互斥处理
定时器精度问题及影响

存储管理应用:
存储管理概述
定长内存管理方案
变长内存管理方案

任务管理模式:
任务管理模式概述
使用非常驻任务管理事件
中断事件分离处理
任务优先级配置
空闲任务的配置
多任务的协同

综合案例:
实践案例说明
按键驱动设计
串口驱动设计
外部IO驱动设计
波形生成设计
命令解释器的设计及实现
外部事件的处理
监控任务的设计
设计回顾

1.4 TCP/IP

1.4.1 自己动手写TCP+WEB服务器

以太网数据包收发实现:
1.数据包结构定义
2.以太网驱动的封装
3.以太网输入输出处理的实现

ARP协议的实现:
1.ARP初始化
2.无回报ARP的生成
3.ARP输入处理
4.ARP的超时重新响应

IP协议的实现:
1.IP协议的输入处理
2.IP协议的输出处理

1.5 GUI

1.6 文件系统

1.6.1 FAT32文件系统的实现

FAT32原理:
快速了解FAT32文件系统

驱动框架:
代码结构分层
实现虚拟磁盘驱动
实现磁盘操作接口

分区解析:
结构体打包
解析主分区数量
解析扩展分区的数量

1.7 控制算法

PID:
PID控制算法

1.8 物联网

1.8.1 物联网的基本概念

1.物联网技术的发展历史及关键技术
2.物联网组网技术
3.物联网架构
4.常见的物联网通信协议

1.8.2 网络通信协议和云平台搭建

1.网络通信协议基础
2.socket基础
3.TCP编程模型
4.UDP编程模型
5.多线程开发


2 嵌入式

2.1 Linux命令及常用工具

常用命令:
Linux中目录结构
Shell中常用的通配符

vi常用命令汇总

find | grep | file | which和whereis | gzip、bzip2和tar | man、info、help

ps命令

gcc及其辅助工具集:
C程序背后的故事–头文件、库文件的查找
gcc编译器的使用
addr2line | strip | ar | nm | objdump | size | strings

2.2 开发环境搭建

配置交叉编译工具链
开发板通过NTS挂载在PC机中的文件夹

Linux下配置Smba服务器

2.3 makefile和shell脚本

2.3.1 makefile

通用makefile
makefile中的函数
makefile中的零星知识点

Makefile实例分析

2.3.2 shell脚本

Shell脚本简介
Shell中的变量
Shell中的常用操作
Shell中的分支语句
Shell中的循环语句
Shell中的函数

2.4 bootloader

2.4.1 ARM裸机及其体系结构

I.MX6ULL镜像文件

GPIO:
普适的GPIO引脚操作方法
IMX6ULL的GPIO操作方法

2.5 Linux应用编程

Linux系统调用

2.5.1 文件IO

文件IO引入
常用的文件操作接口
通过文件IO控制硬件设备的方法
Linux文件IO深入剖析
文件锁

2.5.2 进程

fork函数介绍
exec函数族
进程的退出
守护进程

2.5.3 进程间通信

进程间通信概述
管道
信号

2.6 Linux驱动开发

2.6.1 字符设备驱动

字符设备驱动初体验(hello驱动)

LED驱动:
LED驱动框架
LED驱动硬件操作
驱动设计的思想:面向对象/分层/分离
驱动进化之路:总线设备驱动模型
LED 模板驱动程序的改造:总线设备驱动模型

设备树:
设备树的引入及简明教程
Linux内核对设备树的处理


3 计算机系统

3.1 汇编

3.1.1 X86 16位汇编

基本概念:
X86与ARM
8086的内存分段机制
16位汇编相关寄存器
8086的启动过程

汇编指令:
mov指令
div指令
jmp指令
movsb和movsw

伪指令:
DB伪指令

汇编程序示例:
控制显卡

3.2 深入理解计算机系统

3.2.1 计算机相关的基本概念

流程图:
流程图

编码:
信息编码的基本概念

字符集:ASCII、GB2312、GBK、GB18030、Unicode
ANSI编码

源字符集与执行字符集

音频在计算机中的存储
图像在计算机中存储
视频在计算机中的存储

数制:
十六进制速查表

字节序:
主机字节序

程序环境:
转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现
C语言和C实现

加密和解密:
加密、解密基本概念

XML:
XML简介

3.2.2 进阶计算机系统

计算机系统基本概念:
计算机系统的发展史、基本组成、工作原理
程序开发过程的演变
Hello程序的转换处理过程及程序执行时的数据流动过程
计算机系统抽象层

3.3 计算机组成原理

3.3.1 计算机组成原理

微控制器和微处理器的区别
寄存器
处理器的IO操作
处理器的启动过程
处理器中的中断
处理器中的内存管理单元
处理器中的缓存

数据的表示:
数值数据表示的三要素
定点数的编码表示方法
实数的表示法

3.3.2 自制计算机

1.电报机与继电器
2.布尔代数
3.逻辑门
4.用逻辑门制作出加法器
5.用非门构造振荡器
6.用或非门构造D型触发器
7.用D触发器构造边沿触发器
8.用D触发器构造RAM存储器
9.用D触发器构造寄存器
10.用加法器构造能够实现连续加法的电路
11.用RAM存储器构造能够依次读取各存储单元内容的电路
12.构造先存储再计算的加法器电路
13.构造全自动计算的CPU

3.4 计算机网络

3.4.1 基础概念

计算机网络中数据的传递过程

3.5 操作系统

3.5.1 Linux操作系统,构建自己的内核

动手写一个最小的操作系统内核:
1.用java开发一个Hello Word系统内核
2.用java和汇编开发一个Hello World系统内核

3.6 编译原理

3.7 数据库

3.7.1 数据库理论

数据库的基本概念:
数据表之间的关系
数据库与数据库管理系统的基本概念

3.7.2 SQLServer

SQLServer的基本操作:
SQLServer服务的运行与登录

SQL语句:
SQLServer中的数据类型

SQLServer中数据库的创建
SQLServer中数据表的创建

SQLServer数据的基本操作:简单的增、删、改、查

3.7.3 MySQL

1. MySQL的安装和配置:
主流数据库介绍
MySQL服务的启动与停止

2. 数据库基本概念介绍:
数据库中的关系模型

3. MySQL数据库的操作:
MySQL中数据库的操作

4. MySQL数据表的操作:
MySQL中表的操作
列的完整性约束
表索引
MySQL中的数据查询

5. MySQL中的数据类型:
MySQL中的整数类型
MySQL中的浮点数类型和定点数类型
MySQL中的日期和时间类型
MySQL中的char和varchar类型
MySQL中的Text类型
MySQL中的enum和set类型
MySQL中的二进制类型

6.MySQL中的视图、触发器和存储过程:
MySQL中的视图操作
MySQL中的触发器
MySQL中的存储过程

7.MySQL中的存储引擎:
MySQL中的存储引擎

8.使用C++访问MySQL:
使用C++访问MySQL数据库(VS2019)

3.8 软件工程

软件开发流程简介


4 C/C++

4.1 C/C++基础语法

4.1.1 编程小技巧

位运算编程小技巧
取模运算的巧用

C语言中断言的使用

4.1.2 基础语法

杂七杂八:
定义和声明的区别
main函数与命令行参数
C和C++中的默认类型
C++中变量可以在需要时定义
C++中不允许重复定义全局变量
C和C++的关系
C和C++相互调用

C++中的命名空间

offsetof宏和container_of宏

符号:
C、C++中的注释
C、C++中接续符的使用
C、C++中的转义符
C、C++中的单引号和双引号
C、C++中的逻辑运算符
C、C++中的位运算符
++和–操作符分析

三目运算符

逗号表达式

关键字:
C语言中的关键字概览

auto | register | static | extern | goto | void | const | volatile | sizeof

预处理:
include的两种形式、CPP的搜索路径
#和##运算符
预处理指令和开始和结束
宏定义
条件编译
#error使用分析
#line使用分析

编译器相关指示字:
#pragma使用分析

数据类型:
C/C++中的数据类型转换
浮点数据类型
有符号数与无符号数

特殊的char类型

结构体struct
联合体union
枚举enum

C++中的布尔类型
C++中的引用

cin
cout

typedef

指针:
指针基本概念分析
常量与指针
指针阅读技巧分析

数组的本质分析
指针和数组分析

C语言中的字符串

函数与指针分析

内存:
内存对齐
动态内存分配
栈、堆、静态存储区和程序的内存布局

C和C++中的野指针问题

语句:
标号语句与跳转语句
复合语句

表达式语句
选择语句
迭代语句

函数:
函数的意义
函数参数深度剖析
函数中的可变参数
函数设计原则

C++中的函数默认参数
C++中函数重载分析

C++中的内联函数

文件操作:
使用ifstream从文件中读取内容

4.1.3 面向对象

面向对象基础知识:
面向对象的基本概念

未分类:
一个空的C++类中有什么
C++中类文件的分离

C++中struct和class关键字的区别
C++中的访问权限
C++中成员函数和成员变量的隶属问题

C++中的类型识别

对象的构造和析构:
C++中的构造函数
C++中的析构函数

继承关系中的拷贝构造函数和赋值操作重载函数分析

C++中对象的构造顺序和析构顺序
C++中的临时对象

C++中的二阶构造模式

C++中的转换构造函数和类型转换函数

成员变量和成员函数:
C++中的静态成员变量
C++中的静态成员函数

C++中的const数据成员
C++中的const成员函数

this指针

C++中初始化列表的使用

操作符重载:
C++中的操作符重载
C++中数学运算、比较、赋值操作符的重载
C++中的赋值操作符重载
C++中左移操作符的重载
C++中数组访问操作符的重载
C++中函数调用操作符的重载
C++中指针特征操作符的重载
C++中逻辑操作符的重载
C++中逗号操作符的重载
C++中前置操作符和后置操作符的重载
C++中的new和delete操作符重载

类之间的关系:
建模的常用手段:组合与聚合

C++中的final关键字
C++中的override关键字

C++中继承的基本概念
C++继承中的访问级别
C++中不同的继承方式
C++继承中的构造与析构
C++继承中父类和子类之间的同名覆盖
C++继承中父类和子类之间的赋值兼容
C++中的多重继承
C++中多态的概念和意义

VS中查看子类对象内存分布的方法

C++中的友元

C++对象模型分析:
C++对象模型分析

抽象类和接口:
C++中的虚函数与纯虚函数
C++中的抽象类
C++中的接口

泛型编程:
C++中的泛型编程
C++中的函数模板
C++中的类模板
typename和class

异常处理:
C语言中的异常处理
C++中的异常处理
构造函数和析构函数中抛出异常

C++流:
C++中流的基本概念
istringstream和ostringstream
stringstream
ofstream、ifstream、fstream

常用的类:
数组模板类的创建
单例类模板
C++中的字符串类

智能指针:
智能指针类模板
auto_ptr使用介绍
unique_ptr使用介绍
shared_ptr和weak_ptr使用介绍

4.1.4 C++11、14、17

新引入的关键字:
auto自动类型推断
for语句新特性
nullptr

新特性:
变量初始化
函数的后置返回类型

C++的版本迭代
变参模板、完美转发和emplace

4.1.5 C库函数

qsort()的用法

strlen

4.1.6 EasyX图形库

EasyX图形库常用操作
EasyX和Windows库函数实现音乐播放

EasyX实现推箱子游戏
EasyX实现俄罗斯方块游戏

4.2 C/C++相关的各种库

4.2.1 STL

C++标准库简介
STL中的迭代器
vector
deque
list
set和multiset
map和multimap
queue
priority_queue
stack
array

4.3 MFC

4.4 Qt

4.4.1 Qt开发基础知识

GUI原理:
GUI程序原理分析

QT开发环境:
通过命令行形式编译QT源程序
QT Creator介绍

窗口组件:
Qt中的坐标系统

Qt中的QWidget
Qt中的QMainWindow

常用控件:
Qt中的QLabel
Qt中的QPushButton
Qt中的QLineEdit、QTextEdit、QPlainTextEdit
Qt中的QRadioButton
Qt中的QTabWidget

对话框:
Qt中的QDialog
Qt中的QMessageBox
Qt中的QFileDialog
Qt中的QColorDialog
Qt中的QInputDialog
Qt中的QFontDialog
Qt中的QProgressDialog
Qt中的QPrintDialog

文件操作:
Qt中的IO操作
Qt中的文件操作
Qt中的缓冲区QBuffer
Qt中目录操作

布局管理器:
Qt中的布局管理器
Qt中的QBoxLayout
Qt中的QGridLayout
Qt中的QFormLayout
Qt中的QStackedLayout

常用的Qt辅助类:
Qt中的字符串类
Qt中的QTimer
Qt中的QMap和QHash
Qt中的智能指针
Qt中的调色板
Qt中的正则表达式

绘图:
Qt中的基础图形绘制
Qt中的图像处理与绘制
Qt中的文本绘制

多线程:
进程与线程的概念
Qt中的多线程编程
Qt中多线程间的同步
Qt中多线程间的互斥
银行家算法的分析与实现
Qt多线程中的信号与槽
Qt中线程的生命期问题
Qt中另一种创建线程的方式
Qt中多线程与界面组件的通信

网络编程:
网络编程基础
Qt中的TCP客户端编程
Qt中TCP服务端编程
Qt基于文本协议的网络应用开发

QT核心机制:
Qt中的消息处理
Qt对象间的父子关系
Qt中的事件处理
Qt中的拖放事件
Qt中的自定义事件
Qt中的模型视图设计模式
Qt中的自定义模型类
Qt模型视图中的委托

应用程序的打包与发布:
Qt中应用程序的打包与发布

正则表达式:
正则表达式基本概念

4.4.2 QT项目

计算器:
计算器界面分析及界面程序实现
计算器初步添加消息响应
计算器核心解析算法
计算器用户界面与业务逻辑的分离

文本编辑器:
文本编辑器创建菜单栏
文本编辑器创建工具栏
文本编辑器创建状态栏
文本编辑器添加文本编辑区
文本编辑器第一阶段测试
文本编辑器实现打开文件、保存文件、文件另存为、新建文件的功能
文本编辑器实现拖放功能
文本编辑器实现复制、剪切、粘贴、撤销、重做操作
文本编辑器实现文本打印的功能
文本编辑器实现光标定位的功能
文本编辑器中菜单栏删除功能的实现
文本编辑器中查找对话框及功能实现
文本编辑器中替换对话框的设计与实现
文本编辑器实现跳转到指定行的功能
文本编辑器中实现设置工具栏和状态栏可见性的功能
文本编辑器实现关于对话框的功能
文本编辑器中实现自定义编辑框中字体和大小的功能
文本编辑器中实现自动换行的功能
文本编辑器实现打开帮助文件的功能
文本编辑器中的配置文件
文本编辑器中命令行参数的应用

基于TCP的网络聊天室:
1.客户端界面实现及登录功能实现
2.客户端程序初步加入网络通讯的功能
3.服务端程序的初步实现
4.登录功能和公聊功能的实现
5.私聊模式的设计与实现
6.管理员权限的实现
7.网络聊天程序的完善

4.5 网络编程

4.5.1 准备工作

在VS中建立一个易于管理的C++工程

4.5.2 Socket编程基础

1.Socket基础API介绍
2.Windows下Socket库的初始化和关闭
3.简易TCP客户端和服务端的实现
4.建立能够持续请求的CS网络程序
5.发送结构化的网络消息
6.网络报文的数据格式定义和使用
7.服务端升级为select模型处理多客户端
8.客户端升级为select模型
9.为客户端加入输入线程
10.将客户端移植到Linux和MAC OS
11.将服务端移植到Linux和MAC OS
12.封装Client
13.封装Server
14.粘包的原因分析及解决
15.突破Windows下select64的限制
16.添加高精度计时器测量处理能力

4.5.3 加入多线程提高处理能力

1.单线程与多线程网络程序架构简介
2.多线程简介
3.多线程的使用方式
4.客户端引入多线程

4.6 Linux服务器开发

4.6.1 网络编程基础

简单回声服务器的实现
网络字节序转换函数
sockaddr数据结构
IP地址转换函数
socket函数介绍
bind函数介绍
listen函数介绍
accept函数介绍
connect函数介绍
出错处理函数

TCP的三次握手和四次挥手

UDP编程

4.6.2 Mini HTTP服务器的实现

HTTP协议简介

4.7 音视频

4.7.1 音视频理论知识

视频的基本概念
音频的基本概念

视频编码的基本概念
音频编码的基本概念
音视频编解码的国际标准

4.7.2 流媒体理论知识

4.7.3 FFMpeg

FFMpeg的基本介绍
FFMpeg的基本用法

4.8 C++项目

4.8.1 淘宝分布式文件系统核心存储引擎项目

1.项目背景介绍及文件系统基本概念简介
2.淘宝文件系统大文件结构
3.淘宝文件系统文件映射原理及实现
4.文件操作的封装
5.文件映射操作类的实现
6.索引文件核心头文件定义
7.索引处理类的设计与实现


5 招租中


6 数据结构与算法

6.1 数据结构

6.1.1 数据结构基本概念

数据的基本概念
算法简介
算法的复杂度分析

java中的stack类和C++中的stack类的区别

6.1.2 C语言版

线性表:
顺序表

单链表
循环链表
双向链表

队列:
队列的顺序存储实现
队列的链式存储实现
优先级队列的实现

堆:
堆的原理及实现
用堆实现优先级队列

栈:
栈的原理及实现
使用栈求解迷宫问题

树:
树的基本概念
二叉树的基本概念
二叉搜索树的算法实现
哈夫曼二叉树的构建
红黑树

哈希表:
哈希链表的原理及算法实现

图:
图的原理及算法实现
A*算法的原理及实现

6.1.3 C++版

C++版数据结构继承关系图

顶层父类:
Object

异常类:
Exception

智能指针:
Pointer
SmartPointer
SharedPointer

数组类:
Array

StaicArray
DynamicArray

字符串类:
字符串类String

线性表:
List

顺序表:
SeqList

StaticList
DynamicList

链表:
LinkList
StaticLinkList
CircleList

DualLinkList
DualCircleList

栈:
Stack
StaticStack
LinkStack

QueueToStack

队列:
Queue
StaticQueue
LinkQueue

StackToQueue

6.2 算法

6.2.1 简单算法

辗转相除法的程序实现
KahanSummation算法
位图算法

分治界定法

6.2.2 排序算法

选择排序
冒泡排序
插入排序
希尔排序
堆排序
归并排序
快速排序

排序算法的对比分析

6.2.3 查找算法

查找的基本概念
二分查找
穷举搜索
并行搜索

6.2.4 动态规划

动态规划算法介绍
动态规划–编辑距离问题
将长度为n的绳子分为m段求各段乘积的最大值

6.2.5 递归、分治、回溯算法

递归的概念
分治算法介绍
回溯算法介绍

6.2.6 贪心算法

贪心算法介绍


7 软件设计

7.1 多语言混合开发方式

多语言混合开发方式


8 实用工具

8.1 内存泄露检测工具

VisualC++ debugger 和 CRT 库

8.2 库文件的制作

使用VC 2010制作和使用静态库


9 面试题

9.1 数组

打印杨辉三角形

9.2 字符串

逆序字符串
统计输入字符串中英文单词的个数
字符串循环右移
一行代码实现strlen

9.3 数据类型

负数的存储方式

9.4 杂项

交换两个变量的值
判断一个变量是不是指针


10 未分类

设计非常优秀的软件界面
阅读之路

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页