自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 C++知识整理day12——set容器和map容器

我们先了解一下什么是序列式容器和关联式容器:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧密的关联关系,⽐如交换⼀下,他依旧是序列式容器。顺序容器中的元素是按他们在容器中的存储位置来顺序保存和访问的。关联式容器也是⽤来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是⾮线性结构,两个位置有紧密的关联关系,交换⼀下,他的存储结构就被破坏了。

2025-03-07 21:35:55 906

原创 C++知识整理day11——二叉搜索树(二叉搜索树的插入、查找、删除及完整代码实现)

二叉搜索树又称为二叉排序树,为什么这么说呢,我们学过就知道,对二叉搜索树进行一遍中序遍历,就会实现排序的功能。这里先声明一下,对于二叉搜索树,“改”是没有必要的,而且改完数据再恢复到二叉搜索树很难设计,因此我们只会实现增、删、查。当然,朴素的二叉搜索树在项目中是很少使用的,之后我们会看到他们的变种,如AVL树、红黑树。删除的过程最为复杂,首先我们要确定这个值在书中存在不存在,不存在我们直接返回false。例如,我们还是给如上的例子,我们想插入4怎么实现呢?综合来说,二叉搜索树的增删查的时间复杂度为O(N)

2025-03-05 22:48:51 1052 1

原创 C++知识整理day10——多态(多态的定义和实现、虚函数重写/覆盖、override和final关键字、纯虚函数和抽象类、多态的原理)

多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。Person对象买票全价,Student对象优惠买票。

2025-02-27 22:56:51 906

原创 C++知识整理day9——继承(基类与派生类之间的转换、派生类的默认成员函数、多继承问题)

继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类或子类。继承呈现了⾯向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复⽤,继承是类设计层次的复⽤。

2025-02-25 22:30:23 672

原创 《Linux篇》谈谈对Linux权限的理解

我们还可以发现,我们切换后,pwd查看位置是不发生改变的,如果我们想要切换完后回到该用户的家目录,可以使用 su - username,对于普通用户su到root,可以省略root,直接su即可切换到root。我们可以看到我们刚刚创建的zhangsan是不可以使用sudo的,因为他不在那个组(信任列表)里面,他需要找一个在sudo组里面的人给他加到这个组里面去才行。Linux系统是非常注重安全性的,权限是较为重要的一部分,不同的用户当然有着不同的权限,这一节,就来谈谈我对于Linux权限的理解。

2025-02-24 22:53:51 807

原创 C++知识整理day8——模版--一篇完整版搞定模板问题(函数模板、类模板、模板特化)

上述示例中,p1指向的d1显然小于p2指向的d2对象,但是Less内部并没有比较p1和p2指向的对象内容,而比较的是p1和p2指针的地址,这就无法达到预期而错误。A:泛型编程就类似于生活中的印刷术一样,有一个模具,我们需要印刷哪一本书,就会有对应的模具,我们不需要来一页纸,就重新写字,我们只需要找到这页纸的模具就可以了。通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来进行小于比较的函数模板。

2025-02-22 14:28:17 713

原创 C++知识整理day7容器——stack和queue容器(包括deque容器、priority_queue容器)

我们可以看到,在我们之前学的容器中,例如vector,里面调的都是内存池,而stack和queue里面都是一个容器适配器。Q:什么是适配器?A:适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。例如:Q:为什么还要有deque这种容器?A:首先,deque是双带你队列,它允许两端都可以插入和删除元素。

2025-02-06 21:24:13 617

原创 C++知识整理day6容器——vector容器

在上一节中,我们主要学习了string容器的常见操作,当然对于模拟实现string类还没有更新,我会在之后进行更新,先把这几个容器的常见操作学了,方便后面的算法。注意:对于insert和erase操作,他不像string类那样,可以通过下标找到要修改的位置,vector类是不支持的。一般我们都是通过迭代器的指向来找到要修改的位置的,迭代器是可以加数字的,从而变相的实现。,之后对于容器的操作常见接口就不会那么详细的说明了,用法都是大致一样的。容器的迭代器都是一样的,可以参考上篇string类的迭代器。

2025-02-06 21:23:41 315

原创 堆的实现——堆的应用(堆排序)

堆的模拟实现,以及堆的排序

2025-02-04 21:04:08 790

原创 C++知识整理day5容器——string容器

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。STL的六大组件:我们之前在数据结构阶段学了很多,包括顺序表、链表、栈、队列、二叉树等等;在之后我们在做算法题时,需要用到哪个数据结构,靠我们手写是不太现实的,C++帮我们封装了很多的容器,本质上他们都是给我们实现好的一个个类,我们直接使用即可。当然我们也要学习他的底层,这是很重要的。本节我们先来学习一下string类。

2024-12-10 16:01:12 968

原创 C++知识整理day4内存管理——new和delete详解

int main()// new/delete 和 malloc/free最大区别是// new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;

2024-12-06 18:50:54 862

原创 C++知识整理day3类与对象(下)——赋值运算符重载、取地址重载、列表初始化、友元、匿名对象、static

赋值运算符重载是六个默认成员函数之一,在讲解这个我们要先了解一下运算符重载。当运算符被用于类类型的对象时,C++语言允许我们通过运算符重载的形式指定新的含义。C++规定类类型对象使用运算符的时候,必须转换成调用对应运算符重载,若没有对应的运算符重载,则会报编译错误。注意:对于下面的例子中,都是使用的Date类。运算符重载是具有特别名字的函数,他的名字是由operator和后面要定义的运算符共同构成。和其他函数一样,他也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作⽤的运算对象

2024-12-03 19:22:22 1093

原创 C++知识整理day2类与对象(上)——类的定义、实例化、this指针、构造、析构、拷贝构造函数

class为定义类的关键字,Stu为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略(与结构体struct一样)。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,每个地方要求都不一样。

2024-11-24 21:08:30 683 1

原创 C++知识整理day1——前置基础知识整理(命名空间、输入输出、函数重载、引用)

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2024-11-22 20:58:22 1047

原创 《深度学习》VGG网络

2014年,⽜津⼤学计算机视觉组(Visual Geometry Group)和GoogleDeepMind公司的研究员⼀起研发出了新的深度卷积神经⽹络:VGGNet,并取得了ILSVRC2014⽐赛分类项⽬的第⼆名,主要贡献是使⽤很⼩的卷积核(3×3)构建卷积神经⽹络结构,能够取得较好的识别精度,常⽤来提取图像特征的VGG-16和VGG-19。

2024-11-14 21:53:43 510

原创 《深度学习》AlexNet网络

2012年,AlexNet横空出世,该模型的名字源于论⽂第⼀作者的姓名AlexKrizhevsky。AlexNet使⽤了8层卷积神经⽹络,以很⼤的优势赢得了ImageNet 2012图像识别挑战赛。它⾸次证明了学习到的特征可以超越⼿⼯设计的特征,从⽽⼀举打破计算机视觉研究的⽅向。

2024-11-14 21:40:58 725

原创 《目标检测》R-CNN网络基础(RCNN,Fast-RCNN)

训练阶段多,训练耗时: 微调CNN⽹络+训练SVM+训练边框回归器。预测速度慢: 使⽤GPU, VGG16模型处理⼀张图像需要47s。占⽤磁盘空间⼤:5000张图像产⽣⼏百G的特征⽂件。数据的形状变化:候选区域要经过缩放来固定⼤⼩,⽆法保证⽬标的不变形CNN⽹络不再对每个候选区域进⾏特征提取,⽽是直接对整张图像进⾏特征提取,这样减少了很多重复计算。⽤ROI pooling进⾏特征的尺⼨变换,来满⾜FC全连接层对输⼊数据尺度的要求。

2024-11-14 20:42:28 1485

原创 卷积神经网络CNN——卷积层、池化层、全连接层

我们之前学习了全连接的神经网络,如下图:利用全连接神经网络对图像进行处理存在以下两个问题:CNN⽹络受⼈类视觉神经系统的启发,⼈类的视觉原理:从原始信号摄⼊开始(瞳孔摄⼊像素 Pixels),接着做初步处理(⼤脑⽪层某些细胞发现边缘和⽅向),然后抽象(⼤脑判定,眼前的物体的形状,是圆形的),然后进⼀步抽象(⼤脑进⼀步判定该物体是只⼈脸)。下⾯是⼈脑进⾏⼈脸识别的⼀个示例:CNN网络主要有三部分构成:卷积层、池化层和全连接层构成。其中卷积层是负责提取图像中的局部特征;池化层是用来答复降低参数量级(降维

2024-11-13 17:02:16 7164 1

原创 《目标检测》——基础理论知识(目标检测的数据集、评价指标:IOU、mAP、非极大抑制NMS)

Annotations下存放的是xml⽂件,描述了图⽚信息,如下图所示,需要关注的就是节点下的数据,尤其是bndbox下的数据.xmin,ymin构成了boundingbox的左上⻆,xmax,ymax构成了boundingbox的右下⻆,也就是图像中的⽬标位置信息。NMS的原理是对于预测框的列表B及其对应的置信度S,选择具有最⼤score的检测框M,将其从B集合中移除并加⼊到最终的检测结果D中.通常将B中剩余检测框中与M的IoU⼤于阈值Nt的框从B中移除.重复这个过程,直到B为空。

2024-11-08 15:37:33 1424

原创 全连接神经网络案例——手写数字识别

使⽤⼿写数字的MNIST数据集如上图所示,该数据集包含60,000个⽤于训练的样本和10,000个⽤于测试的样本,图像是固定⼤⼩(28x28像素),其值为0到255。

2024-11-07 20:20:30 755

原创 《深度学习》——深度学习基础知识(全连接神经网络)

在介绍神经网络之前,我们先看下面这幅图:人工智能>机器学习>深度学习深度学习是机器学习的⼀个⼦集,也就是说深度学习是实现机器学习的⼀种⽅法。与机器学习算法的主要区别如下图所示:传统机器学习依赖于人工设计特征,并进行特征提取,而深度学习算法不需要人工,而是依赖算法自动提取特征,这也是深度学习被看做黑盒子、可解释性差的原因。卷积神经网络(CNN)循环神经网络(RNN)生成对抗网络(GAN)深度强化网络(DRN)

2024-11-07 20:20:01 1372 2

原创 pytorch框架(上)——基本操作、自动求导、梯度的概念

对比有无初始化的矩阵: 当声明一个未初始化的矩阵时, 它本身不包含任何确切的值. 当创建一个未初始化的矩阵时, 分配给矩阵的内存中有什么数值就赋值给了这个矩阵, 本质上是毫无意义的数据.torch.rand()是以标准高斯分布进行初始化的(返回的是均匀分布的[0, 1))注意:torch.Size函数本质上返回的是一个tuple, 因此它支持一切元组的操作。注意:这里的矩阵我们是没有初始化的,只是创建了个五行三列的矩阵,值是自动给的。将tensor转换成ndarray。将ndarray转换成tensor。

2024-10-30 12:13:06 920

原创 【机器学习】——numpy教程

numpy是一个开源的Python库,也就是相当于Python中的列表,即多维数组。那么为什么有了列表,我们还需要使用numpy呢?numpy可以计算大型的多维数组和矩阵操作,他的计算能力更强,运行的速度更快。其实,Python中的列表,要想找到列表中对应的元素需要先通过寻找该元素的地址才可以访问到元素,因此,速度自然会慢一些。而Python中的numpy是存储在一片连续的地址空间上的,因此访问元素速度更快,类似于c++中的数组,物理空间是连续的。

2024-10-25 16:08:21 3091

原创 【人工智能】——matplotlib教程

matplotlib 是一个用于创建二维图表和数据可视化的 Python 库,它提供了一种类似于 MATLAB 的绘图接口。matplotlib 可以用来绘制线图、散点图、柱状图、饼图等各种类型的图表,并且支持对图表的各种属性进行自定义设置,以及添加文本、注释、图例等元素。第一步:创建画布plt.figure里面有两个参数,一个是figsize指定画布的大小(长和宽),一个是dpi指定画布的清新度第二步:绘制图像默认是折线图第三步:显示图像plt.show()示例:显示上海一周的天气情况。

2024-10-25 14:30:14 1025

原创 《MySQL数据库》day4 --索引和视图

索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引。索引相当于一本书的目录,是为了缩小扫描范围而存在的一种机制。List item一页一页挨着找,直到找到为止,这种查找方式属于全字典扫描。效率比较低。先通过目录(索引)去定位一个大概的位置,然后直接定位到这个位置,做局域性扫描,缩小扫描的范围,快速的查找。这种查找方式属于通过索引检索,效率较高。例如 t_user 这张表2 lisi。

2024-10-14 15:35:16 1225

原创 《MySQL数据库》day3 -- 约束条件(非空、唯一性、主键、外键)、事务的四大特性(隔离性)

约束对应的英语单词:constraint在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!约束的作用就是为了保证:表中的数据有效!!一个事务其实就是一个完整的业务逻辑。是一个最小的工作单元。不可再分。什么是一个完整的业务逻辑?假设转账,从A账户向B账户中转账10000.将A账户的钱减去10000(update语句)将B账户的钱加上10000(update语句)这就是一个完整的业务逻辑。以上的操作是一个最小的工作单元,要么同时成功,要么同时失败,不可再分。

2024-03-26 18:07:50 1019

原创 《Django项目》day4 -- 部署nginx与对接acapp

【代码】《Django项目》day4 -- 部署nginx与对接acapp。

2024-03-26 16:45:55 415

原创 《Django项目》day1--配置docker、git、项目的创建

创建一个game文件夹,下面有很多文件,①admin.py:用来存储管理员页面(能够看到的数据库) ②model.py:用来定义各种数据库的表 ③tests.py:不用管,用不着 ④views.py:用来写视图、函数的 ⑤migration:系统自动生成,不用管 ⑥apps.py:只会用到一次,后面会说。我们所租的云服务器属于第二层,第一层是VMware下的终端,我们以后所管理的项目都应该在第三层。_ ,我们怎么管理呢?这时候,我们在网上上输入:自己的ip地址 + :8000 就可以登上自己的项目了,

2024-03-13 16:55:56 1048

原创 《MySQL数据库》day2--连接查询、子查询、union、limit、DML语句

从一张表中单独查询,称为单表查询。emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字。这种跨表查询,多张表联合起来查询数据,被称为连接查询。selectfromwheregroup byhavingorder bylimit执行顺序?

2024-03-09 14:29:15 1414

原创 《Linux》day6--docker——docker镜像与容器

因为使用docker必须要有sudo权限,为了避免我们每次都要输入sudo,我们可以。去云平台控制台中修改安全组配置,放行端口20000。注意:5 和 6 是逆运算。

2024-03-04 21:05:33 758

原创 《MySQL数据库》day1--mysql常用命令、条件查询、单行多行处理函数、分组查询

win+r键输入cmd代开windows命令窗口,然后输入:mysql -uroot -p,然后输入密码即可登录上mysql数据库。// sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。// 2表示第二列。-》数据库当中是以表格的形式表示数据的。不看表中的数据,只看表的结构,有一个命令:-》desc 表名;查看mysql数据库的版本号:-》mysql> select version();查看当前使用的是哪个数据库?count(具体字段):表示统计该字段下所有不为NULL的元素的总数。

2024-03-03 23:18:02 804

原创 python基础语法(下)—— python中的元组、集合、字典、类与异常的处理

hero_count = 0 #类变量def __init__(self, name, level=10): #构造函数def __str__(self): #定义str函数def get_level(self): #获得该英雄的等级。

2024-01-21 14:15:54 981

原创 Python基础语法(中)—— python列表、字符串、函数

了解python中的列表、字符串、函数

2024-01-12 17:27:14 1091

原创 深刻搞懂scanf与cin在读取时遇到空格的处理

在读取数据时,scanf与cin再处理空格时的差异

2024-01-11 15:49:25 1076

原创 C语言深度剖析 -- 深度理解符号

C语言与gcc的答案还不太一样,++i是先自增在使用,gcc中先计算前面两个++i,也就是i先自增为2,然后第二个i再自增为3,i这时候在使用都是3,3 + 3 = 6,最后一个i在先自增,为4,在与前两个相加,也就是 3 + 3 + 4 = 10;我们都知道,有些软件会分为会员和非会员,而非会员的部分功能是无法使用的,那么在设计程序时,我们需要写两部分吗?符号就像我们写代码中的桥梁,没有符号,我们是不可以从桥的一端通向另一端的!,注释要做到:简单、一动,不存在二义性,简单的代码不需要加上注释;

2024-01-09 16:57:19 980 1

原创 Python基础语法(上)——基本语法、顺序语句、判断语句、循环语句(有C++基础快速掌握Python语言)

python第一章

2024-01-09 16:56:39 988

原创 C语言深度剖析 -- 32个关键字(下)

void a;像这样我们定义一个空类型a在vs中是编译不过去的,为什么编译不过去呢?我们来求一下 sizeof(void) 的大小是多少;我们看到在vs中一个void类型是不占用空间的,之前我们说定义变量首先开辟好多少个字节的空间,而void是0个字节,所以就不可以在内存中开辟空间,因此void是不可以定义变量的!!!在Linux中,void也是不可以定义变量的,但是在Linux中 sizeof(int)的大小是1,这是编译器的理解问题;我们只需要知道void不可以定义变量就可以了。

2023-02-10 20:57:25 1377

原创 基础算法--背包问题(01背包问题、完全背包问题、多重背包问题、分组背包问题)

背包问题:给我们 i 件物品,每件物品都有体积 vi 和权重 wi ,给我们限制条件,让我们选择在背包的容量内,物品达到权重最大。

2023-01-22 16:15:55 1932

原创 C语言深度剖析 -- 32个关键字(上)

从头开始深度剖析了解C语言的关键字,包括auto、register、static、unsigned、signed、sizeof等等,希望大家一起加油!

2023-01-19 19:03:48 1303

原创 c++语法欠缺地方(持续更新)

自己在刷题过程中遇到c++知识点欠缺的地方

2022-12-31 16:28:06 1006 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除