- 博客(32)
- 收藏
- 关注
原创 软考-数据库
依赖集SJ-T,T-J,每个依赖的左边必然包含候选键,组合键(S,T),(S,J),只需将T-J变为TS-J,就可以让左侧决定因素包含候选键S。模式分解:对于关系模式R,有依赖集F,对R进行分解得到的多个关系模式,保持原依赖集不变,但要消除冗余依赖。二级封锁:在一级封锁协议的基础上,读数据之前先加读锁(S),读完后释放S,解决丢失更新,读脏数据问题。1A,1B,1C,2A,2B,2C,3A,3B,3C(压缩成一行)联系类型:一对一,一对多,多对多(1:1,1:1,M:N)
2026-05-12 09:12:19
171
原创 软考-软件工程(1-软件工程基础与开发方法)
基于构件的开发模型CBSD:增强复用性(开发过程中创建一个构件库,简单理解就是一个仓库,要什么就往里面拿就行)开发速度快,用户参与度高,易于维护,适于需求不明确开发。再工程:在逆向工程的基础上产生一个新版本,对现有系统的重新开发过程,用以改进软件质量。增量模型:先核心,后分支,每次的增量版本都可以作为一个独立可操作的作品。不适于需求不明确项目;特点:目标清晰,阶段有序,文档规范,自顶向下分解,自底向上逐步实现。初始级,可重复级,已定义级,已管理级,优化级。初始级,已管理级,已定义级,定量管理,优化级。
2026-05-10 09:04:45
358
原创 软考-操作系统
操作系统特征:并发性,共享性,虚拟性,不确定性功能:进程管理,存储管理,文件管理,设备管理,作业管理分类:批处理操作系统,分时操作系统,网络操作系统,分布式操作系统,微机操作系统,嵌入式操作系统。
2026-05-06 09:07:44
185
原创 学习打卡---回溯
如何判断该树层重复,就需要回到最根本的父节点,父节点的递归中,如果这个点和上一个点相同,并且上一个点并没有被访问过,那就说明这是一个重复树枝(该点与上一个点相同,重复:且上一个点没被访问过,独立树枝)回溯属于是将二叉树的子节点状态回归到了其父节点时的状态,说白了,就好比循环,哪怕循环变量i被利用了无数次,只要i的值不发生变化,那么循环就始终不会更改它的目标。从递的角度来看,层数一层层向下,这些本层元素好像并没有什么效果,一旦通过归回到了该层,这些本层元素会发挥它们应有的作用,维护着本层的秩序和规则。
2025-06-22 21:37:19
337
原创 学习打卡6.16
当然,用swap函数肯定是用不了了,我们先观察反转之后的字符串,发现一个特点,就是新字符串它的单词反向而其字符并未反向,我们都知道,一枚硬币具有两面,如果我们要想使两枚相同的正面朝上的硬币从两面正面朝上而变为一枚正面朝上而一枚反面朝上的情况,我们会将两枚硬币同时先反转一次,然后再将一枚硬币再反转一次即可。最后的最后,快指针指向了旧串的末尾,而新串的末尾,则可能是空格,这是因为,旧串的末尾空格可能有多位,但是快指针只会保留一个空格,这个时候就需要判断当前字符串末尾是否空格。那么也不用多说,快指针后移即可。
2025-06-17 08:37:51
300
原创 代码随想录链表章二刷
链表,具有两个关键模块:指针域和数据域,指针域指向下一链表节点,数据域存储当前节点的数据链表和顺序表类似,同属于线性表这一数据结构大分支。
2025-06-12 09:56:08
788
原创 日常一水C
而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用,如下。该关键字作用是在编译时告诉编译器,当前函数的目的是覆盖基类中的虚函数。言简意赅:就是一个对象面对同一事件时做出的不同反应。override用于声明该派生类函数覆盖虚函数。通常情况下,虚函数被置于基类中被用于子类继承。virtual用于声明该函数为虚函数。override有且仅能用于虚函数。关键字其二:override。关键字:virtual。
2025-06-09 09:49:42
287
原创 动态规划之01背包
由于自己的个人原因(说白了就是懒),忙于各种事情,实在忙不过来(哭),只能把发文分享的事情一推再推,直到某天良心发现产生了想发文的想法,于是就写下了这篇文章,请各位大佬轻喷。
2025-06-06 19:57:09
1101
原创 C++学习打卡-->继承
子类中定义了一个和父类一样的成员函数,子类对象将调用子类中的成员函数,因为此时子类将父类所有的同名函数全部隐藏,如果要调用父类的该函数,那么就需要指出父类名。如果调用的是有参构造,那么会看父类的有参构造,如果父类的有参构造不存在,那么编译器会报错。如果调用的是无参构造,那么会看父类的无参构造,如果父类的无参构造不存在,那么编译器会报错。派生类可以访问基类的公有和保护成员,但是它们在派生类中变为了保护成员。我们称被继承的类为基类,而继承它的类被称为基类的子类。基类的保护成员在派生类中保持保护。
2025-06-06 06:52:12
414
原创 学习打卡:滑动窗口二
摘要:文章探讨了滑动窗口在环形数组中的应用,以力扣2134题为例。介绍了两种解法:定长滑动窗口通过扩展数组计算1的最少交换次数;不定长滑动窗口则通过动态调整窗口边界优化计算。还总结了环形数组的通用处理方式,包括扩展数组、模运算、双指针等技术。这些方法能有效拓展算法思维能力,适用于各类环形问题求解。(149字)
2025-06-04 01:12:38
350
原创 C++学习打卡1.01
通过this指针可以访问当前元素的成员函数和数据成员,this指针还可以用来区分函数的局部变量和成员变量因为this指针指向对象,所以它存储了当前对象的地址,也可以用来传递给其他函数或对象进行操作。this指针是一个指向当前对象的指针,这个指针指向正在调用成员函数的那个对象。友元函数:这使得该函数可以不用处于类内也可以访问私有保护成员。友元类:一个类赋予另一个类具有访问其内部私有保护成员的权限。一个逻辑空间的嵌合体,将一堆逻辑类似的东西嵌在一起。使用方法:命名空间名::成员名。关键字:namespace。
2025-06-02 11:44:56
178
原创 C++学习打卡
C++的三大特性:封装,继承,多态类与结构体的最大区别在于,类可以封装对象的行为,也就是函数类分为数据成员和函数成员,这两者被称为对象的属性和行为如果我们要对对象的行为和属性进行操控,就需要访问类的成员访问类的成员不是随意的,这一点受到类中的权限控制,分为public,protect,private,public:公共(无论类内类外都可以访问)protect:家族私有(自己和自己的子类成员可以访问)private:自己私有(只有自己的类成员可以进行访问)在默认情况下,类的权限是private,而结构体的权限
2025-05-31 17:19:46
508
原创 2025/5/24复习日之周总结1
求一个子字符串,考虑使用滑动窗口,不断枚举右指针,直到发现a,b,c都出现过一遍,那么就移动左指针进行操作,直到a,b,c其中一种元素小于1,那么停止移动左指针,此时,我们知道现在的[left,right]是不满足条件的,但是[left-1,right]开始满足条件,同理[left-2,right]等等,直到[start,right]都满足条件,合法的连续子数组数目为left个,每轮循环就要使ans+=left,直到循环结束。当与高位进行交换之后,交换过来的数字未知,如果换回来的是个0,那就会出错,
2025-05-24 10:21:35
1216
原创 学习打卡4
我们说话的声波是模拟基带信号,基带信号相对频带信号而言,与数字信号,模拟信号并无对应关系,在电通信系统中,字,字由若干字节构成,不同档次的计算机有不同的字长,在32位计算机中,1字=32位=4个字节。基带信号不一定是数字信号,但它强调直接来自信源,由信源确定,字长,字的位数,32位计算机中,字长32位。(通俗来说就是发出者,传输媒介,接收者)64位计算机中,1字=64位=8个字节。基带信号:直接来自信源,未经调制的信号。上回书说到,字节,字,字长的关系。,噪声存在于整个通信系统中,但对。
2025-05-21 23:09:10
259
原创 学习打卡之滑动窗口
求一个子字符串,考虑使用滑动窗口,不断枚举右指针,直到发现a,b,c都出现过一遍,那么就移动左指针进行操作,直到a,b,c其中一种元素小于1,那么停止移动左指针,此时,我们知道现在的[left,right]是不满足条件的,但是[left-1,right]开始满足条件,同理[left-2,right]等等,直到[start,right]都满足条件,合法的连续子数组数目为left个,每轮循环就要使ans+=left,直到循环结束。不含重复字符,最长,连续字串,前一个代表使用哈希表,二三个代表使用滑动窗口。
2025-05-21 08:48:51
1031
原创 leetcode每日一题打卡
这题思路为差分,现在还没学到,如果学到之后就会第一时间进行代码补充。差分数组 <-> 原数组 <-> 前缀和数组。原数组->前缀和:对原数组求前缀和。类似于积分,原函数,导函数的关系。前缀和->原数组:对前缀和求差分。求差分、前缀和是一对互逆的过程。差分->原数组:对差分求前缀和。原数组->差分:对原数组求差分。
2025-05-20 13:54:21
242
原创 学习打卡之二分查找
我们不断向右移动,直到遇到第一个大于target的数我们需要将left指针进行右移,即:当nums[mid]<=target,left=mid+1;这样就算我们的mid遇到了target,left也不会停止向右运动,直到nums[mid]比target更大或者到了数组末尾为止。
2025-05-19 22:26:04
906
原创 leetcode每日一题打卡
如果最短边等于最长边,那么一定等边,如果两短边之和小于等于最长边,一定组成不了三角形,如果有谁与中间边等长就是等腰,最后其他所有三角形就属于普通三角形。距离上一次每日一题打卡都是两天前了,为什么我要间隔1天再发博客呢,原因很简单,昨天的题目太难,本蒟蒻不会.....元素个数为1,所有边等长;元素个数为2,只有两条边等长;元素个数为3,所有边都不等长。这题真的很简单了,使用了哈希表进行操作即可。如果不符合三角形定义直接返回0。再分享个属于灵神的题解:排序。然后判断哈希表内元素个数,
2025-05-19 12:55:58
229
原创 leetcode打卡1.1
第二,我们这次的滑动窗口right从0开始,然后向右滑动,依次相加,如果得到的sum值大于等于target,那么我们就要进入循环将窗口缩小,直到sum小于0,并且,我们的循环中要注意计算答案,不能放在外循环中,那里得到的窗口都是sum<target的。这份代码中我采用了逆向思维进行查询,我们先将所有值相加得到sum,然后,很愚蠢的一件事情发生了,我居然没注意如果sum小于target怎么办,也就是说,如果sum小于target,那么直接返回0即可,但我疏忽了这一点。以下是我在闲余时写的笔记。
2025-05-18 15:38:47
1082
原创 学习打卡5
拷贝构造函数,里面的参数值从其他对象中直接拉取,注意拷贝构造函数的参数调用需要加上const和&,因为不能将被拷贝者发生变化。c++利用了构造函数和析构函数,解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供。其中person(10) 是匿名对象,一旦表达完成之后就会销毁,也就是会触发析构函数。同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。//以下来自黑马程序员。
2025-05-16 12:02:11
311
原创 学习打卡4
在程序使用过程中,我们通常需要使用各种各样的变量,如int a,int b,但是我们使用过多的变量,而每个变量只能控制1种类型的元素。1,引用,就是给其他变量起别名的作用,语法为 数据类型 &别名=原名 ,如int a=10,int&b=a;这就意味者,指针的指向不可以发生改变,这一点和上面的引用一旦初始化就不可以再次更改。在函数形参列表中,可以加const修饰形参,防止形参改变实参。,我们的C++中就引入了一个很好的工具,叫做引用。4,当引用作为函数返回值时,注意不要返回局部引用,
2025-05-16 05:39:04
335
原创 学习打卡3
计算机性能指标:通常来说,如果让我来检测计算机的性能,我大概率会看计算机的运行速率,处理程序的速度快慢是计算机的性能指标之一计算机性能指标很多:吞吐量,响应时间,CPU时钟周期,主频,CPI,CPU执行时间,MIPS吞吐量,计算机单位时间内能够处理请求的数量响应时间,系统对请求做出回应的时间CPU时钟周期,计算机中最基本最小的时间单位主频(CPU时钟频率),CPU时钟周期的倒数,,单位为HzCPI,执行一条所需要的时钟周期数,而对于来说,CPI是一个平均值,执行所有指令所花费时钟周期数的平均值。
2025-05-14 00:22:51
708
原创 学习打卡2
共享,指内存中多个并发的进程同时使用一个系统资源,这是必然的,如果每个进程都需要不同的系统资源,那么这些系统资源的数量将会非常大,共享分为互斥共享方式和同时访问模式,顾名思义,互斥共享方式就是说有些资源可能不能同时被多种进程访问,同时访问模式说明有些资源允许同时被多种进程访问,宏观上看,资源是被多个进程同时访问,但从微观上来看,资源是多个进程交替访问。操作系统对整个计算机系统的软硬件进行管理和调度,对我的理解来看,操作系统既能操作硬件,又能操作软件,管理宽泛,应当是计算机中很重要的一个部分。
2025-05-12 22:49:37
172
原创 学习打卡1
采用存储程序工作模式,程序和数据以同等地位存入存储器,CPU根据指令周期的不同阶段来区分指令和数据,计算机在工作中能从程序首地址取出第一条指令并加以执行,以后就按照该程序的规定顺序执行其他指令,直至程序执行结束计算机硬件由五大部件:存储器,控制器,运算器,输入设备,输出设备组成数据和指令存储在存储器中,按地址访问计算机内部采用二进制0,1来表示指令和数据指令由操作码和地址码组成,操作码表示操作类型,地址码表示操作数在存储器的位置输入输出设备统称I/O设备。
2025-05-12 06:15:28
821
原创 Day6打卡-->二叉树
二叉树,说真的,我一开始觉得它就是链表的升级版,不过链表是节点之间一一对应,而二叉树多加了一个指针使我们的节点指向更多地方,差不多这意思,但是经过这几天刷题回来,我感觉二叉树好像也没那么简单。首先找到函数传参和函数返回值,首先我们要明确,如果我们找到了路,就应当返回一个正确的信号,没找到或者找错了,就应当返回错误信号,我们这里返回值采用了bool。之后就是单层逻辑,我们说,前序遍历是中左右,那么我们应当先经过中间节点,再进入它的左子节点,最后在进入它的右子节点,代码如下。=0时返回false。
2025-03-15 11:12:05
786
原创 复盘(Day3->Day5)
我们知道,我们知道了9和20之后便无法回去3,那么我们可能也没有再保存3的必要了,因此我们用数组将会开辟一块不再复用的内存空间造成浪费,如果用栈,我们存入数据的顺序是3,9,20,按照栈先入先出的特性,如果我们要拿出3还要先拿出9和20,造成本末倒置,因此我们就会选择队列进行操作,队列先进先出的特性很适合在3没有作用时将其移出队列。我们这个时候就会想,如果我们能够同时记录3指向的节点9和20那该多好,那我们就用容器存储这两个被3指向的节点,数组,队列,栈?至此,层序遍历大功告成。
2025-03-14 00:32:14
437
原创 算法篇--二分查找(打卡Day2)
知道了我们二分查找的限制条件之后,我们就可以使用二分查找了!我们依然假设一个数组num,我们这次的目标是找到数组中的3我们先设置变量left,right;int left=0;//数组元素个数然后我们就要依据我们要查找的区间进行分类一类是左闭右开;还有一类是左闭右闭;但它们总体的形式和下面大差不差。int func(int index)//注意此时的num数组是从小到大排序的int left=0;//如果找到该元素,直接传出下标。
2025-02-27 00:55:57
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅