自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 抽象类不能被实例化,空类可以被实例化区别在哪里

大家都知道空类可以实例化一个对象并且,其大小为一个字节,抽象类不可以实例化一个对象,但是关于抽象类并没有说明为什么其不可以实例化。1. 空类即定义了一个类但是在其中没有定义成员变量和函数,仅仅是写了一个类名称,如下面这种形式:class A{};但是这样的类依然可以实例化一个对象,并且每个对象都有唯一地址空间存放:C++语言标准中规定了这样一个原则:“no object shall have the same address in memory as any other variable”,即任

2020-09-17 10:21:48 995

原创 TCP 和UDP的区别以及各自的应用场景

1. UDP用户数据报协议UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。它有以下几个特点:1. 面向无连接UDP在发送报文前不需要建立连接,只要客户端想发送信息给服务器端就可以发送信息,并且不会对报文进行任何分组和重组操作。UDP:我们只是报文的搬运工!传输数据时:UDP对

2020-09-09 16:15:51 4614

原创 简单介绍OSI网络模型和TCP/IP四层模型

1. TCP/IP2.TCP/UDP3.三次握手/四次挥手

2020-09-09 15:14:24 1132

原创 Mysql数据库--事务

1. 概念mysql 事务是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。比如我们的银行转账:a->-100update user set money=money-100 where name='a';b->+100update user set money=money+100 where name='b';这就是一个事务,就是a给b转账,他俩的账户应该同时发生变化。实际程序中,如果只有一条语句执行成功了,而另外一条没有执行成功?出现数据前后不一致update

2020-09-08 22:28:24 113

原创 Mysql 三大设计范式

1. 第一范式1NF数据表中的所有字段都是不可分割的原子键;create table student1(id int primary key,name varchar(20),address varchar(30));insert into student values(1,‘zhagnsan’,‘中国辽宁沈阳’);insert into student values(2,‘lisi’,‘中国山东青岛’);insert into student values(3,‘wangwu’,‘中国

2020-09-07 12:24:55 113

原创 Mysql键表约束

1. 主键约束它能够唯一确定表中的一条记录,也就是通过给某个字段添加约束,就可以使得该字段不重复且不为空。create table user(id int primary key,name varchar(20));insert into user values(1,‘张三’); // id=1,name= 张三//重复插入1.张三就会报错,因为id是主键,具有唯一性所以再插入一个需要修改idinsert into user values(2,‘张三’); // id=2,name= 张

2020-09-07 11:32:33 106

原创 Mysql数据库

1. 数据库(database)1.1概念数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Da

2020-09-07 10:42:38 283 1

原创 C/C++复杂指针变量的声明如何解读

1. 指针指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。2.定义一个简单指针int *p; // 代表这是指向int 的指针p,在该地址内存放的数据类型为整型int。int * func(int i,int j); //func是一个函数表示函数的返回值为int *int (*func) (int a, int

2020-09-05 14:19:49 231

原创 链表两数相加leetcode2

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807计算每一位的相加结果sum,并且使用flag保存进位信息,如果有进位信息su

2020-09-04 22:26:38 98

原创 leetcode54 螺旋矩阵按照一定规律输出矩阵的值

以周围四条边为边界,每次遍历一条边就让该条边的边界值内缩一,当两条对边的边界值相等时就表明遍历完成即可输出结果res代码如下#include<iostream>#include<string>#include<memory>#include<vector>#include<algorithm>using namespace std;class Solution {public: vector<int> spi

2020-09-04 21:09:39 78

原创 二叉树中的红黑树、B树,B+树个人小结

1. 红黑树1.1 概念具有以下几种性质的树被称为红黑树:结点只有两种颜色,黑色或者红色;根结点一定是黑色叶子结点为黑色,其中叶子结点包括(NIL:表示无值的点)每个红色色结点的 两个结点为黑色从任一结点到其自身的叶子结点所有的简单路径包含相同数目的黑色结点由性质5可以推出如果一个结点存在黑色子结点,那么该结点肯定有两个子结点。下图就是一个红黑树:红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价

2020-09-01 22:29:43 129

原创 二叉树的概念及其排序方法

1. 树树是数据结构中的一种.结点是数据结构中的基础,是构成复杂数据结构的基本组成单位树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根(Root)的结点;2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tn,其中每一个集合本身又是一棵树,并且称为根的子树。此外,树的定义还需要强调以下两点:1)n>0时根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点。2)m&

2020-08-30 22:34:18 6987

原创 面试题美团默契游戏

原题:(默契游戏)小明和小红分别从整数区间[1,m]之间选取一个数,小明选取的数为l,小红选取的数为r,然后根据选取的数为边界判断数组中的数是否保留,同时对保留后的数组也有要求,要求如下要求:选取的l<=r;对于序列中的元素保留原则:元素x不能取在[l,r]之间的数,即0<x<l,r<x<m+1;要求保留下来的子序列单调不下降。非递减子序列。输入要求:输入第一行为两个正整数m,n,其中m为序列元素最大值,n为序列的长度[1<=n,m<=10000

2020-08-29 19:58:42 302

原创 面试笔试题中的LRU算法及其缺页次数替换

1 LRE算法LRU(最近最久使用法)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。每次更新数据时,就想数据中最久没有被使用的数据进行替换。如果是已有的数据那么就将该数据放到最前边。添加元素:1.新元素1)先判断链表中元素是否已满,如果元素已满,将最后的一个元素删除并将新元素放到链表最前边。因为链表最后一个数据表示的该数据最长时间未被使用。2)链表未满,将元素插入到链表的开头。2.非新元素:将链表中该元素直接覆盖,并且将该元素提

2020-08-29 14:03:25 3198

原创 leetcode 字母异或词的判断以及分组

问题1:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。:示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。判断思路:根据排序后的结果是否相同,判断是否符合要求。因为字母相同只是顺序不同,排序后的结果是一样的// 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

2020-08-29 10:43:30 195

原创 题目: 有 n个人围成一圈,顺序排号。从第一个人开始报数(从 1到 3报数),凡报到 3的 人退出圈子,问最后留下的是原来第几号的那位。(

问题原型:有 n个人围成一圈,顺序排号。从第一个人开始报数(从 1到 3报数),凡报到 3的 人退出圈子,问最后留下的是原来第几号的那位。n<1000实质:约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)使用数组,用01标记是否在队列中,0是退出队列,1是在队列中。#include<iostream>using namespace std;int find(int n) // 传入

2020-08-28 22:18:36 1802

原创 动态规划--背包问题

0-1 背包问题N件物品 背包最大重量W,每个物品都有value和w每个物品都只能取一次,重量不超过W的情况下求价值最大。0<N,W<10000<wi,valuei<1000输入:N WN行:重量和价值wi valuei示例:4 51 22 43 44 58思路:先用表格即二维数组的想法规划一下,将没种情况都列举出来,最后找到最大值即可。f[i][j] 表示在j的重量下此时,只考虑前i个物品的最大价值此时俩种情况:1.不算i物品,此时f

2020-08-26 21:57:57 99

原创 windows微软商店打不开代码0x80131解决方法

打开控制面板,选择网络选项选择Internet选项点击高级按照图示点选设置,最后应用即可。成功后界面显示如下:

2020-08-24 18:47:28 1062

原创 经典排序算法及其代码实现

1. 冒泡排序2. 快速排序

2020-08-08 22:38:00 226

原创 C++三大特性,七项原则

1. C++面向对象三大特性1. 封装封装:把客观事物抽象为类,并且类可以把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏。类将成员变量封装在类的内部,根据需求设置访问权限,通过成员函数管理内部状态。2. 多态多态简单讲可以概括为“一种接口,多种方法”,多种形态,程序在运行过程才决定要调用的函数,是核心概念。ps:重载,重写,重定义的区别:重载,同一作用域的同名函数1.同一个作用域2.参数个数,参数顺序,参数类型不同3.和函数返回值,没有关系4.const也可以作为

2020-08-07 22:45:06 729

原创 DFS 深度优先搜索 迷宫回溯问题,能否回到迷宫原地问题

问题描述:牛牛在一个迷宫中,迷宫有n个格子,有 m条通道,每条通道连接两个格子 u, v,编号为 u 的格子与编号为 v 的格子可互相到达,每人每条通道只能走一次。牛牛想知道,他是否能从 11号格子出发回到 1 号格子。输入第一行给定两个整数 n , m 。接下来 m 行,每行有两个整数 u,v 。//1≤n≤100,000 0≤m≤100,000 0≤L≤m//m对 u, v 互不相同//输出//若能回到 1号格子则返回Yes,否则返回No。问题思路:深度优先搜索算法从顶

2020-07-31 20:35:22 221

原创 面试题C++编程 车站建造问题,间隔要求必须为1或者为某个质数,求最小建造数量

题目描述有108个村庄排在一条公路上,依次编号为0~108-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0.现在需要建设车站,有两个要求必须被满足:1、每个有牛牛居住的村庄必须修建车站。2、相邻车站的距离必须为1或为某个质数。现给出n和a数组,求需要建设车站的最小数量。示例 13,[0,7,11]输出4说明在0,7,8,11处建造车站,差值分别为7,1,3,符合要求编程思想:根据题意可知,最少建造数量:为n

2020-07-31 15:44:08 197

原创 C++STL算法(2)

算法概述算法主要是由头文件algorithm、 functional、numeric组成。algorithm :是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等…numeric :体积很小,只包括在几个序列容器上进行的简单运算的模板函数.functional :定义了一些模板类,用以声明函数对象。常用遍历算法遍历算法 遍历容器元素@param beg 开始迭代器@param end 结束迭代器@param _callback 函数

2020-07-23 22:27:18 109

原创 C++STL算法(1)概述

1. 函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。注意:1.函数对象(仿函数)是一个类,不是一个函数。2.函数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。分类:假定某个类有一个重载的operator(),而且重载的operator()要求获取一个参数,我们就将这个类称为“一元仿函数”(unary functor);相反

2020-07-23 13:42:26 329

原创 C++STL常用容器(6)总结

STL容器使用时机容器特征vectordequelistsetmultisetmapmultimap典型内存结构单端数组双端数组双向链表二叉树二叉树二叉树二叉树可随机存取是是否否否对key而言:不是否元素搜寻速度慢慢非常慢快快对key而言:快对key而言:快元素安插移除尾端头尾两端任何位置----vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上

2020-07-18 21:59:31 111

原创 C++STL(5)常用容器介绍(四)list、set、map容器

1. list概 述链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list就显得负责许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素的移

2020-07-18 21:50:35 414

原创 C++STL(4)常用容器介绍(三)stack、queue

1. stack容器简介堆栈:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.stack没有迭代器Stack所有元素的进出都必须符合”先进后出”的条件,只有stack顶端的元素,才有机会被外界取用。Stac

2020-07-18 15:43:50 156

原创 在电脑上下载哔哩哔哩中的视频

https://xbeibeix.com/api/bilibili/输入上边的网址,进入后将要下载的视频网址输入框框内即可下载等待片刻后点击下载即可。在最下边也有MP4和视频的外链播放,可以下载

2020-07-16 19:37:15 1304

原创 C++STL 案例

有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。创建五名选手,放到vector中遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中sort算法对deque容器中分数排序,pop_back pop_front去除最高和最低分deque容器遍历一遍,累加分数,累加分数/d.size() //5. person.score = 平均分#include<iostream>#includ.

2020-07-16 19:31:28 141 1

原创 C++STL(3)常用容器介绍(二)deque

1. deque容器基本概念Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行元素的插入和删除操作。二在于deque没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像vector那样

2020-07-16 19:23:35 126

原创 C++STL(3)常用容器介绍(二)vector

1. vector概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必害怕空间不足而一开始就要求一个大块头的array了。Vect

2020-07-16 18:33:01 130

原创 C++STL(2)常用容器介绍(一)string

0 头文件介绍#include//string容器#include//vector容器#include//deque容器#include//algorithm头文件是C++的标准算法库,它主要应用在容器上。//因为所有的算法都是通过迭代器进行操作的,所以算法的运算实际上是和具体的数据结构相分离的 ,也就是说,具有低耦合性。 因此,任何数据结构都能使用这套算法库,只要它具有相应的迭代器类型。1. string 容器介绍C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开

2020-07-16 15:57:42 143

原创 C++STL(1) 简介

1 .STL概念STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。STL(Standard Template Libr

2020-07-16 11:16:21 105

原创 C++基础(15)文件读写

文件流类和文件流对象输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream类派生而来,他们之间的继承关系见下图所示:由于文件设备并不像显示器屏幕与键盘那样是标

2020-07-09 22:20:56 126

原创 C++基础(14) 异常

1. 概念Bjarne Stroustrup说:提供异常的基本目的就是为了处理上面的问题。基本思想是:让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常,然后它的(直接或者间接)调用者能够处理这个问题。也就是《C++ primer》中说的:将问题检测和问题处理相分离。一种思想:在所有支持异常处理的编程语言中(例如java),要认识到的一个思想:在异常处理过程中,由问题检测代码可以抛出一个对象给问题处理代码,通过这个对象的类型和内容,实际上完成了两个部分的通信,通信的内容是“出现了什么错误”

2020-07-09 22:13:33 141

原创 C++基础(13)输入输出流

1. 概念程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++输入输出包含以下三个方面的内容:对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何

2020-07-09 21:21:51 385

原创 C++使用模板对数组进行封装

模板头文件 .hpp#pragma once#include<iostream>#include<string>using namespace std;template<class T>class Myarray{public: explicit Myarray(int spacedate)//explicit 防止隐式类型转换 myarray arr =10; { this->max =spacedate; this->Pa

2020-07-09 10:49:16 130

原创 C++基础(11)类模板

1. 类模板类模板和函数模板的定义和使用类似,我们已经进行了介绍。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同。类模板用于实现类所需数据的类型参数化#include<iostream>#include<string>using namespace std;//类模板和函数模板的定义和使用类似,我们已经进行了介绍。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同。//类模板用于实现类所需数据的类型参数化template<class T1,

2020-07-09 10:45:02 909

原创 C++基础(10) 函数模板

1 .模板概念c++提供了函数模板(function template.)所谓函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板 。 凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。c++提供两种模板机制:函数模板和类模板类属 - 类型参数化,又称参数模板总结模板把函数或类要处理的数据类型参数化,表现为参数的多

2020-07-09 10:02:38 208

原创 C++多态练习

计算机小案例:利用多态实现±*/四则运算/*静态多态和动态多态的区别就是函数地址是早绑定(静态联编)还是晚绑定(动态联编)。如果函数的调用,在编译阶段就可以确定函数的调用地址,并产生代码,就是静态多态(编译时多态),就是说地址是早绑定的。而如果函数的调用地址不能编译不能在编译期间确定,而需要在运行时才能决定,这这就属于晚绑定(动态多态,运行时多态)。*/#include<iostream>using namespace std;//面向对象程序设计一个基本原则:开闭原则(对修改关闭

2020-07-07 16:15:12 221

空空如也

空空如也

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

TA关注的人

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