自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring项目中使用@Data或@Slf4j等注解,发生找不到符号异常错误解决办法

博主在运行项目时,出现过如下图的异常,被困扰了许久。完成上述操作之后,删除项目中的target文件。重新运行项目就好了。

2025-04-04 15:29:08 78

原创 对用户登录设计测试用例

输入包含空格、中文、特殊符号(如@#$%^&*)的用户名/密码,检查是否允许或提示。输入过短(如用户名<3字符)或过长(如密码>30字符),检查是否有提示。输入错误的用户名或密码,验证登录失败,并提示“用户名或密码错误”。输入密码时开启大写锁定,检查是否有提示(如“大写锁定已开启”)。不输入任何内容,点击登录,检查是否提示“请输入用户名和密码”。检查所有提示文字是否简洁、无错别字(如“登录”而非“登陆”)。检查“注册”、“忘记密码”、“切换账号”等链接是否正确跳转。

2025-04-04 13:27:12 293

原创 HashMap底层原理(学习总结,纯讲解)

在每次添加元素时,会先进行hashCode() 计算,得出hash值,再通过用  (数组长度 - 1)& hash的位运算方式得出新添加元素所处的数组位置。如果当前数组位置为空则直接添加元素,若不为空则产生hash冲突,此时会将数组元素的 next 指向新添加的元素实现链表结构以解决hash冲突

2025-03-05 07:30:00 861

原创 模拟实现计时器

模拟实现计时器。

2025-02-13 12:17:45 168

原创 生产者消费者模型——模拟实现阻塞队列

在生产者消费者模型中,队列充当了缓冲区的角色。生产者线程将元素放入队列,而消费者线程从队列中取出元素。由于队列的容量有限,当队列满时,生产者会阻塞,直到有空间可以插入数据;当队列为空时,消费者会阻塞,直到有元素可以消费。:队列的容量是固定的,但通过扩容机制,队列在达到容量极限时能够自动扩大容量,避免了队列被填满时无法继续添加元素的问题。每次扩容时,容量会翻倍,原有元素会被重新复制到新的数组中。

2025-02-13 12:12:07 224

原创 力扣 LCR 078 合并K个升序链表

时间复杂度: O(N * logK) K 为 链表(lists) 的个数,n 为所有链表的节点数之和。空间复杂度: O(logK) 递归的深度为 logK

2025-02-07 14:21:51 180

原创 操作系统之存储管理

在以上提到的储存方式都有一个特征,也就是用户程序需要全部装入内存之后才能运行。那么如果遇到比内存大的作业程序无法一次全部加载进内存时该怎么办呢?这就需要引入虚拟存储器技术了,该技术可以从逻辑上对内存进行扩容。

2025-02-07 11:21:00 1107

原创 操作系统之分页存储管理 页面置换算法

时钟算法是LRU的一个近似实现,它将所有的页面组织成一个环形队列,并维护一个指针。每当需要置换页面时,指针指向的页面如果没有被访问,则将其淘汰;如果已被访问,则重置访问位,并将指针移动到下一个页面。

2025-02-06 20:26:30 795

原创 力扣 239.滑动窗口最大值

在我第一次写的时候直接就在每个窗口中加findMax函数无脑遍历,运行后发现超时,代码时间复杂度是 O(N * K)。随后按自己想法改了改代码,改成现在这个,最坏时间复杂度还是O(N * K),但是再一次运行发现可以通过。后面看了看官方题解,题解一的思路和我的大致一样但是用了优先级队列,运行速度方面能比自己的快,主要区别在于自己的findMax函数用遍历的方式找最大值及下标,优先级队列底层则用的堆,其复杂度为lonN级别。

2025-02-06 11:17:41 220

原创 计数排序算法

先确定待排序数组的最大值(Max)和最小值(Min),随后创建Max - Min + 1个长度的数组称为计数数组,计数数组的索引对应着待排序数组中元素的值,数组的值表示该元素的出现次数。通过从前往后或者从后往前遍历数组,用数组下标+Min得到已排序好数组的值。并且累加每个位置的计数,得到每个元素的最终位置。最后依次将元素放回到结果数组中,得到排序后的数组。

2025-01-24 10:48:00 1012

原创 动态分区分配算法

例如:现有四块空闲分区,空闲分区按地址递增的顺序排列分别为4K、10K、32K、5K。某进程要申请大小为5K的内存大小,则从最低地址为4KB的空闲区开始比较,发现到10K的空闲区时满足进程所需内存大小,则将其所需大小划分给进程,划分后空闲分区按地址递增的顺序排列变为4K、5K、32K、5K,分配内存后,更新指针到空闲分区链的头。查找从4K开始:发现10K足够满足需求,将5K分配给进程,剩余空闲分区为:4K、5K、32K、5K,当前位置指针指向5K。从空闲分区链中查找所有符合要求的空闲分区:10K、32K。

2025-01-19 11:27:47 908

原创 操作系统之设备管理

I/O系统主要的任务是:1)按照用户的具体请求,启动设备,通过不同的设备驱动程序,进行实际的I/O操作;而设备控制器就是负责控制I/O设备的一个实体,因为计算机的CPU无法直接控制I/O设备的机械部件,所以需要设备控制器这个中介,CPU对其发送I/O命令,由设备控制器控制I/O设备工作。设备驱动程序是操作系统内核的一部分,又称为设备处理程序,简单点来说设备驱动程序可以将设备的硬件特性抽象为操作系统能够理解的命令,并将来自应用程序的高层请求转化为硬件能够执行的低层命令。用于响应硬件设备发出的中断信号。

2025-01-19 10:59:56 761

原创 假脱机技术(SPOOLing)

当作业需要从输入设备读取数据时,井管理程序会将数据从输入设备传送到输入缓冲区,再将其存储到输入井。缓冲区的作用是将内存中的输出数据暂存,避免直接与设备进行频繁的交互,缓解设备和内存间的速度不匹配问题。:输入进程模拟脱机输入操作,负责将来自输入设备的数据读取并传送到输入缓冲区,然后将数据存储到输入井。输入井和输出井是SPOOLing技术中的两个关键存储区域,通常存在于磁盘中,作用是模拟脱机输入输出过程中的磁盘存储。输入进程和输出进程是处理SPOOLing任务的关键进程,它们负责管理输入和输出操作的执行。

2025-01-19 10:57:01 1106

原创 信号量机制之苹果-橘子问题

桌上有一空盘,允许存放一种水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一个水果供吃者取用。要求:请用信号量机制实现爸爸、儿子、女儿三个并发进程的同步。

2025-01-15 00:16:41 305

原创 进程同步之信号量机制

信号量机制是一种用于进程同步和互斥的基本工具,特别是在并发编程中,广泛用于控制对共享资源的访问,避免数据竞争和死锁等问题。信号量机制由荷兰计算机科学家Edsger Dijkstra在1965年提出,并在操作系统的进程同步中发挥了重要作用。经历了整型信号量、 记录型信号量、AND型信号量和信号量集。

2025-01-15 00:09:27 861

原创 操作系统之进程管理

进程简单点来说就是正在运行的程序就算是一个进程,它是一个动态的运行的过程,没有运行的程序只能算是一段代码,不能称为进程。进程是计算机进行资源管理和调度的独立单位。

2025-01-13 17:52:41 1373

原创 操作系统之处理机调度算法

1新进程进入时,首先放入优先级最高的队列并采用 FCFS 算法调度。2如果进程在队列中未能在时间片内完成,则将该进程移到优先级较低的队列。3当某个队列空闲时,调度系统会选择优先级较低队列中的进程。4若高优先级队列有进程到达,则会抢占低优先级队列中的进程,低优先级进程返回队列尾部。

2025-01-13 17:51:41 905

原创 操作系统之系统调用

从上文简介得知,操作系统是计算机硬件和软件之间的桥梁,通过管理计算机软件和硬件资源,最终为我们用户提供服务。就如同一个管家帮助我们对CPU(进程)的管理、内存的管理、设备的管理、文件的管理。而我们如何实现操作系统这个管家帮助我们的管理就需要用到系统调用了。是用户程序与操作系统内核之间的,用于在用户空间和内核空间之间进行交互。系统调用允许用户程序请求操作系统提供的服务,如文件操作、进程管理、内存分配等。简单来说,系统调用就相当于操作系统这个管家底下的下人,去完成管家所要求的具体事项。

2025-01-11 20:17:34 831

原创 初识操作系统

操作系统简称OS(Operating System),是介于硬件和应用软件之间的一层软件。它管理着计算机软件和硬件资源,并为计算机程序提供服务。

2025-01-11 17:36:34 304

原创 堆排序算法

建立大根堆(升序)或小根堆(降序),从最后一个元素开始和堆顶元素进行交换,交换完后,再进行向下调整,保持最大堆性质,以此循环往复直到排序完成。

2024-12-07 09:29:56 471

原创 希尔排序算法

它是插入排序的一种优化版本,它通过将待排序的元素分成多个子序列,分别对这些子序列进行插入排序,最终将整个序列排序。

2024-12-04 20:54:17 522

原创 选择排序详解

首先在未排序的数据中找到最小(或最大)元素,存放到已排序数据的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序数据的末尾。以此类推,直到所有元素均排序完毕。

2024-12-03 08:00:00 249

原创 插入排序详解

在给出的一组数据中,(一般认为第一个元素为已排序好的数据)从前往后遍历未排序的数据,每次取出一个元素到已排序好的数据中进行比较,找到合适的位置时进行插入,循环往复直到整租数据完成排序。

2024-12-02 11:02:29 336

原创 LinkedList集合(JDK8)

Java中的是一个实现了接口和接口的双向链表。支持高效的插入和删除操作,并且可以用来实现栈、队列和其他集合类型双向链表:由一系列节点组成,每个节点都包含数据和两个指针,分别指向前一个和后一个节点。动态大小:可以根据需要动态地增加或减少其大小。允许重复和null元素:允许存储重复的元素,也可以存储值。非同步:是线程不安全的,如果多个线程同时访问,并且至少有一个线程在结构上修改了列表,则必须外部同步。插入(add/get/set/remove): O(n)插入(addFirst/addLast/removeFi

2024-11-23 14:12:29 393

原创 快速排序算法

通过一趟排序将待排序的数据,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

2024-11-12 00:26:21 549

原创 ArrayList集合详解(JDK8)

与上文中相对应的add()方法结构基本相同,就不做详细解释了。参数的值决定是保留还是移除在指定集合。用于移除列表中所有包含在指定集合。用于在指定的索引位置插入一个元素。移除数组中指定索引位置的元素。用于批量移除列表中的元素。默认在数组末尾添加新元素。

2024-11-09 19:21:53 525

原创 Java内部类

概念:在类的内部再写一个类就叫内部类。

2024-11-08 23:22:58 494

原创 类和对象(Java)

面向对象OOP-优快云博客类是构建所有程序的基本单元。类可以用来描述一个对象(实例),它定义了对象的属性(称为字段或成员变量)和行为(称为方法)。需要用到class关键字,如:class为定义类的关键字,Dog为类的名字(类名用大驼峰法命名,即每个单词的首字母需要大写),{ }中为类的主体。类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类的成员变量,如name和age。方法主要说明类具有哪些功能或行为,称为类的成员方法,如run()方法和barks()方法。经

2024-10-25 01:25:55 842

原创 冒泡排序(Java)

虽然冒泡排序在概念上非常简单,并且代码实现也容易理解,但它通常不适用于处理大数据集,因为它的平均和最坏情况的时间复杂度都是 O(n²),在处理大量数据时效率非常低。在这个实现中,外层循环控制排序需要进行多少轮,内层循环负责在每一轮中执行实际的比较和交换操作。

2024-10-20 22:03:51 328

原创 JavaSE笔记总结

在Java中被赋予特殊意义的英文单词 字母全部小写数据类型 变量名 = 数据值;int a = 10;//定义public static void 方法名(){方法体;​//调用方法名();//定义public static void 方法名(数据类型 参数1,数据类型 参数2){方法体;​//调用方法名(参数1,参数2);//定义public static 返回值类型 方法名(数据类型 参数1,数据类型 参数2){方法体;return 返回值类型;​//调用。

2024-10-20 20:44:43 1841

原创 面向对象OOP

面向对象(Object Oriented Program,简称OOP),面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人 们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。而其的核心思想是将数据和处理数据的方法打包在一起,以创建可重用的代码和更易于维护的系统。

2024-10-17 19:59:44 1514

原创 归并排序(Java)

归并排序使用了分治(Divide and Conquer)的思想。

2024-10-17 18:25:43 672

原创 汉诺塔(Hanoi Tower)问题求解

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

2024-10-11 22:17:51 1885 1

原创 二分法查找

二分法查找(又称折半查找),是一种在特定区间查找目标元素的搜索算法。通常情况下要查找的区间,需要是有序且无重复元素的,如果元素无序,则需要对所有元素先进行排序。

2024-10-08 17:47:44 522

原创 JDK,JRE和JVM

javac编译器:它的主要作用是将 Java 源代码文件(以.java扩展名结尾的文件)编译成 Java 字节码文件(以.class扩展名结尾的文件)供JVM运行。java:它的主要作用是将Java字节码(.class文件)转换为机器码,并在特定的硬件和操作系统上执行。jdb调试器:jdb是Java平台提供的一个命令行调试器,它允许开发者对Java程序进行调试。

2024-09-24 23:19:44 472 3

空空如也

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

TA关注的人

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