- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 Ocam录屏软件安装包以及使用说明
链接:https://pan.baidu.com/s/1muliES1Kuh2rj2cppa4jxQ提取码:iplw使用方法在我的资源中,欢迎收看使用~
2020-03-15 12:27:54
3853
4
原创 最长递增子序列(动态规划方法)
最长递增子序列问题描述:设长度为N的数组为{a0,a1, a2, ...an-1},假定以aj结尾的数组序列的最长递增子序列长度为L(j),则有:L(j)={ max(L(i))+1, i<j且a[i]<a[j] }。也就是说,我们需要遍历在j之前的所有位置i(从0到j-1),找出满足条件a[i]<a[j]的L(i),求出max(L(i))+1即为L(j)的值。最后,我们遍历...
2019-06-24 22:24:35
809
原创 TCP三次握手和四次挥手的原因
为什么要进行三次握手呢(两次确认)? 建立三次握手主要是因为A发送了再一次的确认,那么A为什么会再确认一次呢,主要是为了防止已失效的连接请求报文段又突然传送给B,从而产生了错误。 所谓“已失效的连接请求报文”是这样产生的,正常情况下,A发出连接请求,但是因为连接报文请求丢失而未收到确认,于是A再重传一次连接请求,后来收到了请求,并收到了确认,建立了连接,数据传输完毕后,就释放链接,A...
2019-06-21 19:46:07
985
转载 TCP相关知识
TCP确保传输可靠性的方式TCP协议保证数据传输可靠性的方式主要有:校验和 序列号 确认应答 超时重传 连接管理 流量控制 拥塞控制校验和发送方:在发送数据之前计算检验和,并进行校验和的填充。接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发...
2019-06-21 15:07:08
172
原创 二叉树的遍历
二叉树的遍历方式主要分为前序、中序、后序、层次遍历几种。前序、中序、后序分为递归和非递归方法两种,但其实根本来说都是使用堆栈来实现的,因为递归方法其实也是使用堆栈实现的。前序遍历的递归方法代码实现如下所示:void PreOrderRec(Node * node){ if (node) { cout << node->data <&...
2019-06-18 19:25:38
132
原创 二叉树的子树和子结构
定义:子树:是只要包含了一个结点,就得包含这个结点下的所有节点。子结构:包含了一个结点,可以只取左子树或者右子树,或者都不取。判断一个二叉树是不是另一个二叉树子树的代码实现如下:class Solution {public: bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { if(p...
2019-06-17 22:20:58
1209
2
原创 socket编程相关知识
一、 简介:网络编程就是编写程序使两台联网的计算机相互交换数据。两台计算机之间传输数据首先当然是要进行物理连接,在此基础上,只要考虑如何编写数据传输程序即可,其实操作系统已经提供了socket,及时对网络数据传输的原理不熟悉,也能通过socket来编程。socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 so...
2019-06-17 11:39:43
412
原创 判断二叉树是否为平衡二叉树
平衡二叉树:平衡二叉树必须满足两个条件:1)左右子树的高度差不能大于1 2)每个根节点下面的左右子树也必须满足平衡二叉树的性质。解题思路:使用后序遍历,遍历过程中求左右子树的高度,判断是否平衡实现代码如下:class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { int d...
2019-06-15 11:02:23
190
原创 找出两个链表的第一个公共节点
解题思路:两个链表的从第一个公共节点开始,之后的节点均为公共的,若两个链表的长度不一致,则先将指向长度较长的链表的头结点向后移动两个链表长度差个位置,然后将此指针和链表长度较短的头指针同时后移,若两个指针相同,则就找到了第一个公共指针。实现代码如下:class Solution {public: ListNode* FindFirstCommonNode( ListNode...
2019-06-14 19:26:45
255
原创 找出链表中的倒数第k个节点
解题思路:设置两个指针,这两个指针都指向链表的头结点,让第一个节点走k-1步,走到第k个节点的位置;然后在让两个指针向后移动,直到第一个指针指到链表最后一个节点的位置,此时第二个指针指向的就是链表的倒数第k个指针。实现代码如下:class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigne...
2019-06-14 19:14:02
160
原创 求二叉树的深度和宽度
二叉树的深度二叉树深度的定义:从根节点到叶子节点依次经过的节点形成树的一条路径,最长路径所包含的节点的个数为树的深度,也即二叉树节点的层数。可将二叉树的节点定义为如下的形式:struct BinTreeNode{ int value; BinTreeNode* pLeft; BinTreeNode* pRight;};解题思路:很自然的可以想到,树的深...
2019-06-13 15:59:44
2817
原创 二维数组名与其指针的关系
之前一直对二维数组的各种指针不是很明白,今天在这里做一个总结~int nums[2][3] = {1,2,3,4,5,6};nums为数组名,代表第一行的指针,它指向的是一整行 *nums 才是nums[0][0]的地址,*nums= nums[0] = &nums[0][0]结论:**nums才表示nums[0][0],*nums表示nums[0][0]的地址,nums表示...
2019-06-13 10:46:06
1521
原创 指针数组和数组指针
数组指针:(行指针)定义:int (*p) [n];()的优先级高,说明p是一个指针,指向一个整型的一维数组,这个数组的长度是n,当执行p+1时,p要跨过n个整型数据的长度,(n可以成为p的步长)。如要将二维数组赋给一指针,应这样赋值:int a[2][3];int (*p)[3]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; ...
2019-06-13 10:16:49
155
原创 C++中class与struct之间的区别
在C语言中,struct只能包含成员变量而不能包含成员函数,而在C++中struct类似于class,既可以包含成员函数,又可以包含成员b变量。C++中的struct与class基本上是通用的,只有以下几个区别点:使用class时,类中的成员默认是private属性的,而struct默认是public属性的; 使用class时,继承默认是private属性的,而struct默认是publ...
2019-06-13 09:53:29
218
原创 Dijkstra(迪杰斯特拉)最短路径算法
算法思想:——单源最短路径每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短距离。1. 把所有的顶点分为两部分:已知最短路程的顶点集合P和未知最短路径的顶点集合Q。最开始,P集合中只有源点一个顶点,用一个数组来记录哪些点在集合P。例如用visit[]数组来记录,visit[i]=1表示这个顶点在P集合中,visit[i]=0表示这个顶点在Q集合中...
2018-09-13 14:54:53
386
原创 粒子群算法
简介: 粒子群算法是模拟群体智能所建立起来的一种优化算法。粒子群算法的思想可以用鸟类在一个空间内随机觅食来进行说明:所有的鸟都不知道食物具体在哪里,但是它们知道大概离多远,最简单有效的方法就是搜寻目前离食物最近的鸟的周围区域。 基本思想: 因此,粒子群算法就是把鸟看成一个个粒子,并且拥有它们的位置与速度这两个信息,然后根据自身已经找到的离食物最近的解和参考整个群集中找到的最近...
2018-09-11 20:40:02
2686
转载 Matlab许可证过期重复激活解决办法
matlab许可证到期,一直显示要激活解决办法建立一个license.lic的文件,把下面的代码粘贴到文件里面,然后放到MATLAB根目录的license文件夹里替换原来的license.lic文件,重启MATLAB即可。R2013a亲测有效INCREMENT Aerospace_Blockset MLM 99 permanent uncou
2018-01-23 10:25:08
2303
原创 static
1.1 静态全局变量静态全局变量有以下特点: • 该变量在全局数据区分配内存; • 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); • 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的; 定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处: • 静态全局变量不能被其它文件所用; • 其它文件中可以定义相同名字的变量...
2018-01-23 10:24:10
181
原创 通信协议
比较可靠的通信协议往往包含以下几个部分组成: 帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。 地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系
2017-11-15 18:47:49
512
原创 鲁棒性
鲁棒性也称为健壮性、稳健性、强健性,是系统的特性,它是系统在遇到异常和危险情况下是否能生存的关键。是指系统在一定(结构,大小)的参数的扰动下,维持某些性能的特性。 控制系统的鲁棒性:反馈控制系统是鲁棒的,或者说一个反馈系统具有鲁棒性,就是指这个反馈控制系统在某一类特定的不确定条件下具有使稳定性、渐近调节和动态特性保持不变的特性,即这一反馈控制系统具有承受这一类不确定性影响的能力。 很显然,控制系
2017-09-24 14:54:03
17565
原创 捷联导航算法
捷联式惯性导航是把与机体固连的惯性器件所测量的飞行器的运动信息经过计算机处理成所需要导航与控制信息,而姿态矩阵的更新是捷联式惯导算法中最重要的一部分,也是捷联系统所固有的。 在捷联式惯导中,飞行器的姿态是机体坐标系相对于导航坐标系决定的,而描述坐标系的方法有很多,可以分为三参数法、四参数法、九参数法。三参数法也叫欧拉法,四参数法有四元数法,九参数法为方向余弦法。 其中通过欧拉角法得到
2017-09-24 13:43:42
4105
1
原创 STM 32 窗口看门狗
窗口看门狗: 之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。 而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。窗口看门狗框图:在图中,我们可以观察到,有两种情况可以导致系统复位。第一种情况就是,当计数器的值大于配置寄存器设置的窗口上限值时进行了喂狗操作;第二种情
2017-08-19 10:21:58
1265
原创 stm32 独立看门狗
首先,我们需要先要了解一下什么是看门狗? -在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界的各种干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态。所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog)。看门狗解决的问题是什么
2017-08-18 00:02:02
382
原创 STM 32 串口接收配置
串口接收流程: 串口接收的一部分流程与发送时的配置很类似,具体如下所示: 其中第六步使能的是接收器,第七步是接收中断的使能位,接收中断即在接收到数据后通过产生中断来进行相应的处理。具体配置过程: 首先:调用HAL_UART_Init函数 然后:HAL_UART_Receive_IT函数开启接收中断当串口接收到数据时: 1.USARTx_ISR的RXNE位置1。表明以为寄存器的内容已经传输到
2017-08-17 17:58:32
3103
原创 STM 32 EXTI
IO 口外部中断1.STM32的每个IO都可以作为外部中断输入。 2.每个外部中断线可以独立的设置触发方式(上升沿,下降沿,或者双边沿触发),触发或是屏蔽,专用的状态位。 3.STM32供IO使用的中断线只有16个,但是STM32F系列的IO口多达上百个,那么中断线怎么跟IO口对应呢?IO口外部中断在中断向量表中7个中断向量,也就是只能使用7个中断服务函数。IO口外部中断HAL库配置方法外部中断
2017-08-14 17:10:46
535
1
原创 STM32 串口发送配置流程
串口字节发送流程:编程USARTx_CR1的M位来定义字长。编程USARTx_CR2的STOP位来定义停止位位数。编程USARTx_BRR寄存器确定波特率。使能USARTx_CR1的UE位来使能USARTx。如果进行多缓冲通信,配置USARTx_CR3的DMA使能(DMAT)。使能USARTx_CR1的TE位使能发送器。向发送数据寄存器TDR写入要发送的数据。向TDR寄存器写入最后一
2017-08-14 15:11:31
3728
原创 STM 32 UART串口通信基本原理
**处理器与外部设备通信的两种方式:**并行通信 -传输原理:数据各个位同时传输 -优点: 速度快 -缺点:占用引脚资源多串行通信 -传输原理:数据按位顺序传输 -优点:占用引脚资源少 -缺点:速度相对较慢**串行通信:** 按照数据传送方向,分为:单工 :数据只支持在一个方向上传输;半双工:允许数据在两个方向上传播,但是,在某一个时刻,只允许数据在一个方向上传输,它实际上是
2017-08-14 12:56:40
2060
原创 STM 32 引脚复用和映射
STM32有很多内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不当做GPIO,而当做复用功能串口1的发送接收引脚的时候,就叫做端口复用。STM32的端口复用映射原理:STM32系列微控制器IO引脚通过一个复用器连接到
2017-08-12 13:12:44
11307
1
转载 内存的分类与结构
不同类型的内存传输类型各有差异,在传输率、工作频率、工作方式等方面均会有所不同。市场中主要存在的内存类型有SDRAM、DDR SDRAM (简称为DDR)、 RDRAM三种。EDO是Extended Data Out(扩展数据输出)的简称,它取消了主板与内存两个存储周期之间的时间间隔,每隔2个时钟脉冲周期传输一次数据,大大地缩短了存取时间,使存取速度提高30%,达到60ns。SDRAM在一个时钟周
2017-08-11 17:19:42
2458
原创 STM32 GPIO 入门知识
GPIO 是什么?通用输入输出端口,可以做输入也可以作输出。GPIO端口可以通过程序配置为输入或是输出。引脚与GPIO的区别与联系? STM32的引脚中,很大一部分是做GPIO使用,部分是电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚。 有人肯定会问,绝大多数引脚是GPIO引脚,那么有限的引脚怎么实现更多的功能? GPIO引脚还可以复用为外设功能引脚(比如串口)。即可作为IO
2017-08-11 15:17:44
1356
原创 stm32 系统滴答定时器Systick
Systick定时器简介:Systick定时器就是系统滴答定时器,Systick定时器,是一个简单的定时器,对于ST的CM3, CM4,CM7内核芯片,都有Systick定时器。Systick定时器常用来作延时,或者实时系统的心跳时钟,这样可以节省MCU资源,不用浪费一个定时器。Systick定时器是一个24位的倒计数定时器,计时到0时,将从RELOAD寄存器中自动重装载定时初值。只要不把它在
2017-08-10 21:01:59
2226
原创 FLASH 闪存的分类与介绍
什么是闪存? 我们常说的闪存其实只是一个笼统的称呼,准确地说它是非易失随机访问存储器(NVRAM)的俗称,特点是断电后数据不消失,因此可以作为外部存储器使用。而所谓的内存是挥发性存储器,分为DRAM和SRAM两大类,其中常说的内存主要指DRAM,也就是我们熟悉的DDR、DDR2、SDR、EDO等等。闪存也有不同类型,其中主要分为NOR型和NAND型两大类。 闪存有很多类型,但目前最为常见
2017-08-10 19:40:41
7816
原创 STM32 库文件简析
首先讨论一下固件库与寄存器的区别:固件库就是函数的集合(API),它把寄存器的操作封装了起来。因为STM32存在很多寄存器,寄存器操作起来很不方便,所以通过API把寄存器的操作封装起来,这样大家直接操作库函数,会很方便。但是固件库并不是万能的,要想全面的了解STM32,必须对寄存器有一定的了解,尤其是入门学习的时候。只有对寄存器有了一各大致的了解,才能全面掌握STM32各个功能外设的工作原理,这
2017-08-10 17:39:08
1525
原创 extern 变量声明,
extern:C语言中extern可以用在变量或者函数之前,来表示变量或者函数定义在别的文件中,提示编译器遇到此变量或者函数的时候在其他模块中寻找其定义。 (注意:可以多次申明变量,但是定义只有一次!)例子: 如上所示,在main.c文件中定义了id这个变量,我们在test.c文件中若想使用此变量。需要加上extern来声明这个变量。
2017-08-10 17:09:28
338
原创 STM32 的时钟系统
STM32有5个时钟源: 1.HSI高速内部时钟,RC振荡器,可作为系统时钟或者用作PLL时钟输入。 2.HSE高速外部时钟。 3.LSI是低速内部时钟,RC振荡器。频率为32KHZ,用于驱动独立看门狗。 4.LSE低速外部时钟。用于驱动RTC时钟(RTCCLK) 5.PLL为锁相环倍频输出。主PLL由HSI或HSE提供时钟信号。 一共有三个PLL,分
2017-08-10 13:56:20
3432
录屏软件(oCam)的使用.pptx
2020-03-15
double + current plot - 1.1.rar
2020-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人