- 博客(24)
- 资源 (8)
- 收藏
- 关注
原创 C++中的多态
多态就是不同继承关系的类对象,调用同一个函数得到不同结果的行为,就如同成人和学生去买票,成人买的是成人票,学生买的是学生票。继承要实现需要满足两个条件:(1)必须通过基类的指针或者引用调用虚函数。(2)调用的函数必须是virtual修饰的虚函数。具体可见下图: 虚函数重写就是派生类中有一个和基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型。函数名字,参数列表完全相同),称子类的虚函数重写了基类的虚函数。具体代码如下:1.3、虚函数重写的两个例外 虚函数的重写有两个例外:
2022-06-22 22:29:02 299 1
原创 C++类和对象总结(三)
初始化列表就是在构造函数后面以冒号为开始,用逗号做分隔成员变量进行初始化的方法,具体操作如下:1.2、初始化列表特性 (1)每个成员变量在初始化列表中只出现一次。 (2)引用成员变量,const成员变量,自定义类型的成员变量都必须放到初始化列表进行初始化。具体实例如下:2、explicit关键字 explicit关键字用于防止隐式类型转换,具体可见如下代码: 上述代码中d1=2019这行代码,编译器首先会用2019这int类型数字,自动构造出一个Date类型的对象
2022-06-16 15:27:54 229
原创 C++面向对象总结(二)
类中包含6个默认成员函数,分别为(1)构造函数 (2)析构函数 (3)拷贝构造函数 (4)赋值运算符重载函数 (5)const修饰的成员函数 (6)取地址及const取地址操作符重载,这6个默认成员函数就算我们不写,编译器也会自动生成。 构造函数的函数名和类名相同,并且没有返回值,在实例化对象时会自动调用,并且只会调用一次,用于初始化成员变量。具体看如下代码: 上述代码中,我们可以通过person的构造函数,给对象小明进行初始化,我们可以得到对象xiaomin的name = “小明”
2022-06-16 09:57:47 332
原创 C++面向对象总结(一)
面向过程:主要关注的是做什么,怎么做的这个过程,比如:吃饭(),睡觉(),打游戏()这些过程 面向对象:主要关注的是对象,把对象作为基本单位,靠对象可以实现很多工作(过程),比如:小红.打游戏(),小红.吃饭(),洗衣机.洗衣服()等等 类是面向对象的基础,而类的实现可以通过class关键字实现,类中包含类的成员变量和成员函数,具体使用方法如下代码: 其中classname可以自己定义,作为类的名称,而int a 和int b为成员变量,void fun()为成员函数。
2022-06-15 15:30:32 195
原创 C++基础知识二
引用就是给变量去别名,不会新开辟空间,引用和被引用对象使用同一个空间。具体使用方法如下:1.2、引用特性 (1)引用必须需要初始化 (2)一个变量可以被多次引用 (3)常引用,引用者const修饰的变量或常数时,需在前面加入const (4)可以引用传参或将引用作为返回值 1、指针是一个变量,存储的是变量(对象)的地址,引用是变量的别名 2、指针可以为空,引用定义时必须初始化 3、指针在初始化之后可以改变指向,引用在初始化之后不可在改变
2022-06-14 15:06:25 80
原创 C++基础知识一
在C/C++中存在大量变量,函数和类的名称,难免有相同的命名,导致不同的函数或者变量不同但是名字相同就会导致很多命名冲突。为了避免这些命名冲突或名字污染,因此就引入了namespace关键字。 namespace关键字j的具体使用方法如下:(1)普通定义 (2)嵌套定义1.2、namespace使用 namespace关键字的使用方法如下:(1)通过using关键词引入全局 (2)在函数提内直接使用2、C++中的输入输出 C++中的输入输出分别可以通过cin和cout进行实
2022-06-14 15:05:26 81
原创 TCP/UDP报文格式及各种通信机制简介
TCP/UDP报文及各种通信机制简介一、UDP报文二、TCP报文三、TCP通信机制1,确认应答机制2,超时重传机制3,滑动窗口及快重传机制4,流量控制5,拥塞控制及慢启动机制6,延迟应答7,捎带应答四、总结一、UDP报文 UDP报文结构如下图所示: UDP报文中包含 :(1) 16位源端口和目的端口,用于表示自己的端口号和将要发送的目的端口号。 (2) 16位UDP长度,表示8字节报头和UDP数据的总长度,用于确定报文长度。 (3) 16位校验和,用于在接收端对比校验,确定接收的UDP报
2022-05-30 22:00:12 11687
原创 定长内存池
定长内存池一、前言二、定长内存池简介三、定长内存池成员变量及成员函数声名四、成员函数定义五、效率分析一、前言 内存池化技术简单来说就是提前向系统申请一大块空间,后面需要空间的时候直接去大块空间中取,就不用频繁的向系统要,降低系统频繁建连的资源开销。如你要去河边挑水喝,每次想喝的时候都得去河边挑水,但如果你在加旁边挖一个小池塘,你直接把谁灌进去,下次你要喝水的时候就不用去河边挑水,直接在家门口就能喝到,这就很方便。二、定长内存池简介 定长内存池就是内存池被申请后被提前分块,每次获取的小内存
2022-04-18 20:37:19 145
原创 http协议的简单理解
http协议的简单理解1、http协议简介2、认识url3、http请求及响应3.1 模拟实现一个简单服务器3.2 请求方法3.2.1 GET3.2.2 POST1、http协议简介 http协议又称超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。简单来说就是一个客户端终端(用户)和服务器端(网站)请求和应答的标准,它定义了web客户端如何从web服务器请求web页面,以及服务器如何把web页面传送给客户端。2、认识url url就是我们常说的网址,其中包含着协议名,登
2022-04-14 18:00:36 2031
原创 哈希表的简单理解
哈希表的简单理解一、哈希表简介二、哈希表的映射方式1、直接定值法2、除留余数法2.1、负载因子a2.2、哈希冲突三、哈希表种类1、闭散列1、开散列一、哈希表简介 哈希(散列)表可以看成一个数组,在存入数值或元素的时候通过映射关系,找到数组对应的位置就可以将元素存入数组中,这样在不存在哈希冲突情况下,查找该元素的效率为O(1)。二、哈希表的映射方式1、直接定值法 如上图所示,直接定值
2021-12-14 17:19:32 597
原创 C++中的继承
继承继承简介继承方式多继承继承中的问题1、基类和子类成员同名会怎样?2、基类中的友元函数,子类能继承没?3、继承中基类和子类,构造析构顺序4、多继承造成的菱形继承问题继承简介 继承就子类继承父类或基类的全部成员函数和成员变量,而且在此基础上继承的子类还可以自己添加自己的成员,如上图所示,子类1,不仅继承了父类的_name和_status_num,而且自身还添加了一个_sex,子类2则多了_is_student,这个与类和对象有点像,只不过这个对象也使类,而
2021-10-02 11:47:15 169
原创 模拟实现一个简单shell
模拟实现一个简单shell 程序涉及的关键函数有fgets(),strtok(),execvp(),waitpid(),不知道这么使用可自行查找使用方法,fgets()函数用于把写入的命令输入到字符数组中,strtok()函数则是把fgets()收集到的字符根据空白格分割到不同的字符数组中,execvp()函数,进行进程替换,此时子进程不和父进程共用代码,也不新创建新进程,子进程重新在内存中写入execvp()函数要执行的代码,代码结束子进程结束,waitpi
2021-10-01 17:07:46 188
原创 Linux中的进程等待
Linux中的进程等待为什么需要进程等待进程等待方法wait()函数waitpid()函数阻塞等待与非阻塞等待为什么需要进程等待 我们都知道子进程退出后(kill掉),父进程还在时,子进程会变成僵尸进程,会造成内存泄漏,而进程等待,就是用来等待父进程回收清理子进程的空间,和查看子进程完成任务的情况(就是查看退出码)的过程。进程等待方法 父进程可以通过两个函数来获得子进程退出情况,这两个函数分别是wait()和
2021-10-01 16:48:54 193
原创 进程地址空间(虚拟地址)与物理内存
进程地址空间(虚拟地址)与物理内存 首先我们先看一段代码,如下: #include <stdio.h> 2 #include <unistd.h> 3 4 int val = 10;//全局变量存在静态区 5 6 int main() 7 { 8 pid_t id = fork(); 9 while(1) 10 { 11 if(id == 0)//子进程 12 {
2021-09-20 15:30:07 255
原创 Vector和List容器的区别
Vector和List容器的区别 Vector和List都是STL常见的容器,都能存储不同类型的变量,那么有了Vector容器为什么还需要List容器呢!其实它们各有个的优点,如下列表格所示容器VectorList底层结构动态顺序表,是一个连续的存储空间带头节点的双向循环链表访问方式随机访问,访问某个节点的时间复杂度是O(1)不支持随机访问,访问某个节点需要从头节点往后遍历,时间复杂度为O(n)插入删除插入和删除效
2021-08-27 16:49:19 211
原创 Vector迭代器失效问题
Vector迭代器失效问题迭代器意义发生改变野指针报错迭代器意义发生改变 我们在使用Vector迭代器的时候可能遇到迭代器失效的问题,使结果达不到我们预期的效果,首先就是迭代器意义发生改变的问题,我们看下面代码。#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v{1,2,2,4,5,6,7}; v
2021-08-27 15:37:46 289
原创 String类模拟实现,遍历方式以及深浅拷贝问题
@String类遍历方式以及深浅拷贝问题#String类的三种遍历方式 法一:for循环遍历 string v("abcdefg"); for(int i = 0; i < v.size(); i++) { cout<< v[i] <<endl; } 法二:迭代器遍历 string v("abcdefg"); string::iterator it = v.begin(); wh
2021-08-26 21:41:44 90
原创 压缩感知(CS)
研究意义 在进行A/D转换过程中,我们常用奈奎斯特采样定理采样数据,也就是当采样频率fs大于原信号中最高频率fmax的2倍时,采样之后的数字信号完整地保留了原始信号中的信息。而在压缩感知中,信号可以以较低的频率(远低于奈奎斯特采样频率,且它的采样频率将取决于两个基本准则:稀疏性和非相关性,或者稀疏性和等距约束性)采样该信号,并可能以高概率精确的重建该信号。 也就是说假如根据奈奎斯特采样定理,需要用1000个点恢复信号,而在压缩感知中只需要300个点(不固定,反正比1000少就对了),从而实现压缩效果
2021-06-08 14:51:11 1823
原创 C++之快速上手模板
C++之快速上手模板函数模板类模板函数模板 当我们写一个函数的时候,我们每次都必须确定传参的指定类型,而且一个函数你确定传参时是int型就不能传double型的变量,在C语言中我们想给功能一样的函数,传不同类型的变量,我们得写多个同样的函数,这样就很麻烦,这时就需要C++中的模板,具体使用情况,及使用方法如下:int add(int a,int b)//这个函数只能传入int型参数{ return a + b;}double add(double a,double b)//这个函数
2021-06-06 16:53:41 71
原创 C++中的内存管理
C/C++中的内存管理1、C/C++中的内存分布二级目录三级目录1、C/C++中的内存分布1、C/C++中的内存分布 上图就是C和C++在内存中存储的分布图,由上到下,对应着内存中的高地址到低地址。此次我主要介绍的二级目录三级目录1、C/C++中的内存分布.........
2021-06-06 15:37:58 208 1
原创 压缩感知重构算法之前向预测与回溯结合的正交匹配追踪(LABOMP)
题目:前向预测与回溯结合的正交匹配追踪(LABOMP) 前向预测后向删除正交匹配追踪(LABOMP)是基于前向预测正交匹配追踪(LAOMP)的一个改进算法,我们由它的名字就可以看出,它和LAOMP其实就差了一个后向删除这一部分,这一部分其实就是在LAOMP的基础上,在每次迭代结束时,删除原子集中与重构信号x最小的那一行对应的原子。为什么要加入回溯策略呢? 论文中给出的解释是为了将前面迭代被错误选择的候选原子淘汰出匹配原子集,所以加入了回溯算法。LABOMP重构算法流程: A是传感矩阵,y为测量
2021-05-24 11:16:16 729
原创 压缩感知重构算法之前向预测正交匹配追踪(LAOMP)
前向预测正交匹配追踪(LAOMP) 前向预测正交匹配追踪(LAOMP)是基于正交匹配追踪的一种改进算法,该算法的本质其实和OMP差不多还是每次迭代选取一个原子,选出稀疏度K个结束,但是每次迭代选取的原子就不是简单的选取当前残差与传感矩阵内积的最大项,而是通过它的前向预测得到的当前最优的一个原子,前向预测也就是本重构算法的核心部分。
2021-05-23 19:03:14 1364
基于STBC的MIMO-OFDM系统
2022-03-23
基于压缩感知的ofdm信道估计
2021-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人