自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 数据库查询速度优化

传送门

2021-09-08 10:06:47 9

转载 C++ set用法

传送门

2021-09-05 20:21:33 6

转载 C++ deque的用法与示例

传送门

2021-09-05 10:35:45 20

转载 c++优先队列(priority_queue)用法详解

传送门

2021-09-04 23:42:48 13

转载 C++中定义比较函数的三种方法

传送门

2021-09-04 23:34:42 20

原创 堆排序 代码

#include <iostream>using namespace std;const int maxn=8;int a[maxn]={36,30,18,40,32,45,22,50};//假设一颗完全二叉树,其左右子树都是堆,调整后会破坏一颗子树的堆结构,需要再对该子树进行调整 void heapAdjust(int k,int last) //k为要调节的结点,last为最终结点 { int i=k,j=2*i+1,temp; //i指向要调整的结点,j指向i的左孩子

2021-09-04 22:09:44 7

转载 单调队列 好文章

传送门

2021-08-28 11:22:43 8

原创 算法模板 栈与队列

用栈实现队列https://leetcode-cn.com/problems/implement-queue-using-stacks/思路:用一个输入栈,接收所有进入队列的数据;用一个输出栈,用于出队所有队头的位置。push操作:入队元素进入输入栈pop操作:若输出栈为空,则把输出栈所有元素倒入输出栈(这其实是先进后出变为先进先出的过程),把输出栈栈顶的元素弹出,并返回该元素。(若题目没有说明,还需要加入队列为空时的pop操作处理)peek操作:其实就是队列的pop操作,再把弹出的元素放回队列

2021-08-26 10:03:15 16

原创 C++ STL 容器适配器 栈与队列

容器适配器是什么栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。头文件#include<stack>定义stack<int> s;栈常用函数s.top(); //获取栈顶元素,并不删除s.pop(); //删除并返回栈顶元素s.push(); //向栈中加入元素s.empty; //判断栈是

2021-08-25 23:07:33 19

原创 算法模板 哈希表

哈希表一般都是用来快速判断一个元素是否出现集合里,查找操作时间复杂度为O(1)哈希碰撞:两个不同的原始值在经过哈希函数运算后得到同样的结果,对应到哈希表同一个位置解决哈希碰撞的方法:1.开放地址法当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。2.拉链法将所有关键字为同义词的记录存储在同一线性链表...

2021-08-22 23:46:50 26

转载 map和unordered_map的差别和使用

传送门

2021-08-22 23:34:11 13

原创 KMP算法

KMP算法前缀:不包含最后一个字符的所有以第一个字符开头的连续子串后缀:不包含第一个字符的所有以最后一个字符结尾的连续子串模式串与前缀表对应位置的数字表示的就是:下标i之前(包括i)的字符串中,有多大长度的相同前缀后缀。KMP算法原理:到模式串不匹配的下标时,看前一个下标在前缀表的值(=前面字符串相同的前缀与后缀的长度),把模式串的下标移到这个值对应的下标上。求next数组代码:void getNext(vector<int>& next,string& need

2021-08-21 19:41:05 25

转载 KMP算法 分析回退操作j=next[j-1]

传送门

2021-08-21 13:24:59 27

原创 算法模板 字符串

反转字符串https://leetcode-cn.com/problems/reverse-string/class Solution {public: void swap(char& a,char& b) { char temp=a; a=b; b=temp; } void reverseString(vector<char>& s) { if(s.size()

2021-08-20 17:36:33 15

原创 算法 链表 判断链表是否有环并且找到环的入口

https://leetcode-cn.com/problems/linked-list-cycle-ii/判断链表是否有环可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。若链表没有环,那么fast指针一定会提前到尾端NULL处。如果有环,如何找到这个环的入口从相遇结点出发一个指针index1,从头结点也出发一个指针index2,这两个指针每次只走

2021-08-19 23:45:50 7

原创 算法模板 链表

移除链表元素https://leetcode-cn.com/problems/remove-linked-list-elements/submissions/class Solution {public: ListNode* removeElements(ListNode* head, int val) { //删除==val的头结点 while(head!=NULL&&head->val==val) {

2021-08-18 21:29:14 12

原创 算法模板 数组 螺旋矩阵

螺旋矩阵https://leetcode-cn.com/problems/spiral-matrix-ii/class Solution {public: bool out(int x,int y,int n) { if(x>=0&&x<=n-1&&y>=0&&y<=n-1) { return false; } else

2021-08-18 15:17:11 23

原创 C++ STL map

Map是什么Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。Map头文件#include <map>Map的常用构造函数m

2021-08-17 22:49:13 15

原创 C++ STL vector

Vector是什么vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。Vector的常用初始化方式1.无参构造函数初始化vector<int> VT;2.有参数构造函数初始化//初始化size,每个元素值

2021-08-17 17:28:34 20

原创 算法模板 双指针法

双指针法:用两个指针一个循环来完成(有时候两个循环才能完成的)一件事情反转链表https://leetcode-cn.com/problems/reverse-linked-list/submissions/class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre=NULL,*cur=head; while(cur!=NULL) {

2021-08-15 21:10:53 33

原创 算法模板 二分查找

二分查找前提:1.给定数组中元素有序 2.数组中没有重复元素,不然返回的结果可能不唯一闭区间[left,right]内查找int binary_search(int* a,int left,int right,int target){ int middle; while(left<=right) { middle=(left+right)/2; if(a[middle]<target) left=middle+1; else if(a[middle]>target)

2021-08-15 10:22:23 19

原创 计算机组成原理——MDR与MAR

MDR定义:    全称 memory data register,主存数据寄存器,MDR用来保存要被写入地址单元或者从地址单元读入的数据。MAR定义:    全称memory address register,主存地址寄存器,MAR用来保存数据被传输到的位置的地址或者数据来源位置的地址。...

2021-01-09 18:36:27 7004

原创 汉诺塔递归的c语言递归实现

#include <iostream>#include <cstdio>using namespace std;void move(int n,char from,char rely,char to){ if(n==1) { printf("%c -> %c\n",from,to); } else { move(n-1,from,to,rely); printf("%c -> %c\n",from,to); move(n-1,rely,

2021-01-06 15:42:32 39

原创 动态规划求组合数

直接切入正题:给一个组合数C(n,k),用公式直接求固然可以,但是直接求阶乘会有两个麻烦:1、数据过大时,k!和(n!/(n-k)!) (尽管已经化简)还是很容易溢出int的范围或longlong的范围,我们当然不能用mod运算来规避,因为mod运算是不能用在除法上的,即(a/b) mod p != (a mod p) / (b mod p)。2、我们总共需要计算k!+(n!/(n-k)!) 次乘法+一次除法,这是一个O(n!)的算法,很容易超时。动态规划解法:初中有一种类型的题,可以将矩阵和组合

2020-12-11 11:25:55 522

原创 PAT乙级(Basic Level)真题 前十四题 (50块代金券)

PAT乙级的题目对初学者比较友好,可以巩固基础,写完了还能拿50块代金券。题目网址链接:link.1001:A+B和C(15)#include <iostream>#include <cstdio>using namespace std;typedef long long ll;int cas=0,t;int main(){ int t; ll a,b,c; cin>>t; while(t--) { cin>>a>>

2020-12-03 17:08:56 67

原创 操作系统——连续动态内存管理模拟实现

引子连续动态内存管理,该实验其实就是对双向链表进行操作来模拟内存分配,比起普通链表更细心一点就行。一、实验目的1) 理解内存管理相关理论;2) 掌握连续内存管理理论;3) 掌握动态连续内存管理理论。二、实验内容本实验主要针对操作系统中内存管理相关理论进行实验,要求实验者编写一个程序,该程序管理一块虚拟内存,实现内存分配和回收功能。1) 模拟管理 64M 的内存块;2) 设计内存分配函数;3) 设计内存回收函数;4) 实现动态分配和回收操作;5) 可动态显示每个内存块信息。三、实验原

2020-12-02 10:57:17 881 1

原创 高等数学各种定理的整理(后续会补充)

1.闭区间上连续函数的性质零点定理:设函数f(x)在闭区间[a,b]上连续,且f(a)与f(b)异号,则在开区间至少有一点ξ,使f(ξ)=0;由零点定理又可推出介值定理。介值定理:若函数f(x)在闭区间[a,b]上连续,且在这区间的端点取不同的函数值,f(a)=A 及 f(b)=B,则对于A与B之间的任意一个数C,在开区间(a,b)内至少有一点ξ,使得f(ξ)=C (a<ξ<b)...

2020-11-23 20:15:27 959

原创 操作系统—银行家算法(一个大鱼吃小鱼的游戏,简单易懂)

最近上操作系统课学到了银行家算法,起初看课本觉得这个讲的是什么,仔细研究了一下发现这个算法最重要的一点就是安全性检查了。先说一下这个算法模拟的是什么过程:假设有一个银行,里面有人民币、美元、日元、韩币等资源,有许多客户向银行申请贷款。每个客户都可以发出申请先贷款一部分,也可以发出申请贷款全部,比如有个客户想贷款人民币3元、美元2元、日元1元,那么他每种资源只贷款1元也可以。银行要做的事情就是判断这个客户的申请是否是狮子大开口,贷款的资源超过了他的需求。如果不是,再判断银行是否有分配给这个客户钱的能力

2020-11-12 17:13:09 1911 4

原创 Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx 找到异常原因方法

1:请检查一下mybatis-config.xml中是否加了红色方框中的类似代码,以检查相应的Mapper文件是否加入Mybatis2:请检查相应的Mapper.xml文件是否写对namespace了,这里以UserMapper为例。3:请检查相应的Dao层是否加入了对应的注释,这里以UserDao为例4.最后请检查UserDao的函数名和UserMapper中的函数名(id)是否对应一致。...

2020-11-09 21:01:04 93

原创 多媒体计算机系统中的媒体

感觉媒体:指直接作用于人的感觉器官,使人产生直接感觉的媒体,如声音、图形、图像、动画等。表示媒体:指为了加工、处理和传输感觉媒体而人为研究、构造出来的一种媒体,常见的有各种编码方式,如文本编码、图像编码和声音编码等。显示媒体:表现和获取信息的物理设备,如输入显示媒体键盘、鼠标和麦克风等;输出显示媒体如显示器、打印机和音箱等。存储媒体:存储数据的物理设备,如磁盘、光盘和内存等。传输媒体:传输数据的物理载体,如电缆、光缆和交换设备等。...

2020-11-05 21:43:34 67

原创 安全防护策略

安全防护策略主要有安全日志、入侵检测、隔离防护和漏洞扫描等。安全日志应当记录所有用户访问系统的操作内容,包括登录用户名称、登录时间、浏览数据动作、修改数据动作、删除数据动作、退出时间、登录机器的IP等。因此查看安全日志,就能了解各用户对系统的行为。入侵检测技术是为了保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的一种技术,是一种用于检测计算机网络中违反安全策略行为的技术,通常入侵检测系统应部署在防火墙之内。漏洞扫描通常是指基于漏洞数据库,通过扫描等手段对指定的远程或本地

2020-11-03 11:01:51 219

原创 OSI参考模型(计算机网络)

物理层:是OSI/RM的最底层,提供原始物理通路,规定处理与物理传输介质有关的机械、电气特性和接口。物理层建立在物理介质上(而不是逻辑上的协议和会话),主要任务是确定与传输媒体接口相关的一些特性,即机械特性,电气特性、功能特性以及规程特性,涉及电缆、物理端口和附属设备。物理层数据交换的单位为二进制位(bit/比特)。 物理层的主要功能就是透明地传输比特流。数据链路层:任务是把原始不可靠的物理层连接变成无差错的数据通道,并解决多用户竞争,使之对网络层显现为一条可靠的链路,加强了物理层传送原始比特的功能。该层

2020-10-30 11:00:21 207

原创 寄存器的相关内容

程序计数器:用于存放下一条指令所在单元的地址。地址寄存器:一般用来保存当前CPU所访问的内存单元的地址,以方便对内存的读写进行操作。累加器:专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。数据寄存器:主要是用来保存操作数和运算结果等信息,其目的是为了节省读取操作数所需占用总线和访问存储器的时间。...

2020-10-30 09:22:21 69

原创 设计模式的三大模式

设计模式可以分为创建型、结构型和行为型模式。创建型模式对类的实例化过程进行了抽象,能够使软件做到与对象的创建与组织无关。常见的创建型模式有:工厂方法、抽象工厂、单例、构建、原型模式。结构型模式描述类和对象之间如何进行如何进行有效的组织,以形成良好的软件体系结构,主要的方法是使用继承关系来组织各个类。常见的结构性模式有:适配器、合成、装饰、代理、享元、门面、桥接模式。行为型设计模式描述类和对象之间如何交互以及如何分配职责,实际上它所牵涉的不仅仅是类或对象的设计模式,还有它们之间的通信模式。行为性模式有策

2020-10-29 21:35:23 42

原创 计算机控制器

计算机控制器是计算机的神经中枢,指挥全机中各个部件的自动协调工作。在控制器的控制下,计算机能按照程序设定的步骤完成一系列操作,以完成待定任务。主要部件如下:指令寄存器:存放由存储器取得的指令。译码器:将指令中的操作码翻译成控制信号。时序发生节拍器:产生时序脉冲节拍信号,使得计算机有节奏、有次序地工作。操作控制部件:将控制信号组合起来,控制各个部件完成相应的操作。指令计数器:计算并指出下一条指令的地址。...

2020-10-28 21:06:33 222

原创 面向对象设计的七大原则

单一职责原则:一个类应该只有一个引起它变化的原因,也就是说,一个类应该只有一个职责。如果一个类有多个职责,那么一个职责的变化可能就削弱或抑制了这个类完成其他职责的能力。所以在构造一个类时,应该将类的不同职责分离至多个类中,确保引起该类变化的原因只有一个。开闭原则:软件组成实体应该是可扩展的,但是不可修改。开放-封闭原则认为应该试图设计永远也不需要改变的模块。可以添加新代码来扩展系统的行为,不能对已有代码进行修改。里氏替换原则:子类应当可以替换父类并可以出现在父类能够出现的任何地方。依赖倒置原则:

2020-10-28 20:31:20 24

原创 UML五大系统视图

UML对系统架构的定义是系统的组织结构,包括系统分解的组成部分,以及它们的关联性、交互机制和指导原则等提供系统设计的信息。逻辑视图:逻辑视图也称为设计视图,表示设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。进程视图:进程视图是可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发和同步结构。实现视图:实现视图对组成基于系统的物理代码的文件和构件进行建模。部署视图:部署视图把构件部署到一组物理结点上,表示软件到硬件的映射和分布结构。用例视图:最基本的需求

2020-10-28 19:24:22 1025 2

原创 面向对象分析和设计包含的内容

面向对象分析包括:1.建模系统功能2.发现并确定业务对象3.组织对象并确定其关系面向对象设计是在面向对象分析的基础上,设计各个对象、对象之间的关系(如层次关系、继承关系等)和通信方式(如消息模式)等。...

2020-10-28 19:03:07 451

原创 面向对象技术——多态的种类

在面向对象技术中,对象在收到消息后要给予响应,不同的对象收到同一消息可以产生不同的结果,这一现象称为多态。

2020-10-28 11:02:18 124

原创 蓝桥杯刷题 学霸的迷宫 bfs

题目链接此题利用了bfs的性质,bfs只会按照定义的规则访问每一个结点,并且只会访问一次。在这一题中字典序最小是题目的限制,所以我们定义访问结点的规则为(DLRU)满足字典序最小即可。这样当bfs访问一个结点时,则一定是最以字典序最小的方式访问这个结点,并且访问后就不会访问第二次,相比于dfs剩下了许多时间。AC代码:#include <iostream>#include <cstdio>#include <cstring>#include <q

2020-10-11 22:14:18 56

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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