自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 链表与环的一些题目

另外,祝您周末愉快,愿您的每一天都充满快乐和成就!第二轮就是代表二者到达终点的距离相等,因为(x1 + x + x2) = x2 + x + x1,所以到达交点的距离也是相同的。第一轮谁先走到null,谁变成另一个链表的头结点继续走,这一轮可以确定偏移量。主要思路: 快慢指针,慢指针能追上快指针就代表有环,因为快指针是慢指针的二倍。第一轮走到相交位置,慢指针变成链表的头结点继续走。其实这一题主要的思想也是跟环类似,一共走两轮。一共走两轮,第二轮的交点就是环的入口。其实这道题也是找偏移量的过程。

2024-04-27 22:02:14 108

原创 计算机存储原理.2

因为存储器买的是8k*8位的,数据总线已经被使用充分了。但是地址总线,没有被完全使用,这样就会使我们CPU的寻址能力下降。但也不能像位扩展一样连接,因为这样的话,CPU的地址总线会同时传递给两个芯片,所以这两个存储器的地址信息都会通过数据总线传递给CPU,这样就会导致数据总线的冲突。数据总线的利用成分是不充分的(单块只能读写一位),为了解决这个问题所以引出了位扩展。使用多块存储芯片解决这个问题。

2024-04-27 18:05:07 248

原创 多路递归的一些算法题

首先我想讲一下,我对多路递归的理解吧,我认为多路递归就是循环中套回调,对于循环有几次就是几叉树,就好比我们常用的二叉树的dfs(node.left) 和 dfs(node.right)等前中后序遍历,也就是i < 2;制作博客确实需要付出很多心血,尤其是分享个人经验和解决问题的方法。如果我的回答对您有帮助,我会很高兴为您点个三连。另外,祝您周末愉快,愿您的每一天都充满快乐和成就!t=N7T8。

2024-04-27 18:02:56 537 1

原创 每日一题(错题分析)

状态转移方程: H[i] 1. i位置为'H' H[i] = H[i - 1] + S[i - 1] 因为sshh 第四个为h让本来有两个sh + s(h)s(h)的个数。使用三个变量进行优化,因为只需要用到前面一个状态,其他状态都不需要,这样也不需要不处理,不为s位置设置为s[i] = s[i - 1],因为等于和不处理一样,这就像求斐波那契一样。状态转移方程: S[i] 1. i位置为'S' S[i] = S[i - 1] + 1。多状态dp表示 的状态表示。

2024-04-27 17:04:41 131

原创 redis实现未支付时间超时就删除订单,并给前端反应一个已过期

上面是我写的代码,就是过期调用 DAO 层的方法,更新挂号支付订单状态为 4,表示订单已废弃。分别调用 DAO 层的方法,将对应的出诊计划和出诊时段的已挂号人数减去 1。因为我这个项目最多同一时段只能挂号三个人、类并且继承KeyExpirationEventMessageListener,用于监听Redis缓存过期。now 是一个表示当前时间的对象,offset 方法用于对当前时间进行偏移。在里面实现onMessage来实现键过期进行的回调函数。1.创建订单缓存,设置过期时间为一分钟。

2024-04-21 18:53:23 822

原创 每日一练

2.如何链表1和链表2不为空就相加,为空 + 0和不想加是等价,只需一个变量分别相加即可,这个变量也可以表示进位,如果进位就将这个变量设置成1进行下次相加,如果不进位就设置为0,进行下次相加。扩展一题吧,其实上面这个题,就是利用下面题的思维,只不过是在链表中进行的。思路分析:正序不好相加,正难则反,我们就将链表反转,进行相加即可。3.将最后的结果反转。

2024-04-21 16:51:57 329

原创 批量添加集合元素

这种方式的好处是,可以在创建对象时执行一些额外的初始化代码,而无需为类定义一个具名的子类。: 当创建匿名内部类的实例时,首先会执行构造代码块中的代码,然后再执行父类的构造函数。在这个例子中,构造代码块中的。: 在 Java 中,匿名内部类是一种没有名字的局部类,它可以在创建对象的同时定义类的实例化过程。: 匿名内部类中的代码块被称为构造代码块,它们在对象创建时被执行,并且在构造函数执行之前执行。类型的参数,并使用该参数中的元素初始化列表。中的代码块被称为构造代码块,它包含了一系列的。方法返回的列表,因此。

2024-04-20 21:34:40 691

原创 每日一题

思路分析:广度优先遍历,找到所有腐烂的苹果同时向四方扩散,就是第一轮把所有腐烂的苹果加入队列中,这就跟MQ的消息队列的原理差不多,第一次记录队列的长度,广度遍历一次,长度--并且四周为1的苹果变为腐烂状态(不是变成2 而是将状态数组变成true),直到所有腐烂的苹果全部扩散完毕, 如果还有苹果的状态为1 return - 1。

2024-04-20 21:26:36 196

原创 数据的表示和运算—2

输入信号:A和B为要进行计算的两个操作数。(本质上就是高低电频电信号)输出信号:输出运算结果控制信号:由控制单元(CU)发出,解析指令的含义,解析完发出控制信号,M表示做什么运算,M=1(逻辑运算) M=0(算术运算) S0 ~ S3指明是哪一种运算。补充: 寄存器的位数就是机械字长,因为需要保存运算结果。

2024-04-17 21:08:55 797 1

原创 每日一练

题目解析: 就是求大于x的最短子序列。这是一道牛客的dd爱框框的题。我的思路:是滑动窗口。

2024-04-17 20:59:28 421

原创 探秘计算机内部的魔法:模拟计算机内部的怎么使用门电路实现运算的奥秘

在当今数字时代,我们享受着计算机带来的便利和效率,但很少有人意识到在计算机背后的神秘世界。计算机内部运算的奥秘并非仅仅是一系列简单的加减乘除,而是依托着深奥的门电路与位运算符展开的神秘舞蹈。在这篇博客中,我们将探秘计算机内部的魔法,深入剖析如何利用门电路模拟加减乘除等基本运算,揭示计算机运算背后隐藏的真相与奥秘。随我一起踏入这个神秘的世界,探寻计算机运算背后的魔法秘籍!在计算机内部,运算并非简单地使用运算符,而是通过门电路实现的位运算符来完成。

2024-04-16 20:33:31 448

原创 每日一练

然后就可以拆分成 j ~ i 为字典中的最后一个单词,此时 0

2024-04-16 16:04:58 221

原创 数据的表示和运算

如果是你肯定会想,删除一个0就好了,我们的计算机大佬们也是这样处理的,这样就会引入补码,反码 + 1 (因为反转数轴了)负数二进制加1 也是 真值-1,这样就会使负数的最大范围变成 - 128。计算机中的存储和计算都是以补码的形式进行的,这样就不会出现计算出现问题了。不要担心数据会发生错误,因为在传输层传输数据的时候,TCP协议有一个16位的校验和,识别出错的数据,是一个字符串,比原始数据要小,但是是通过原始数据产生的,这个校验和很难出现错误:原理是。这意味着,减法可以通过加法和补码的转换来实现。

2024-04-14 21:31:45 1248

原创 精确运算为什么不能用double?

高于大小的比特会被自动删除,但是在删除的过程中还需要遵循 IEEE-754 规范,这就是我们理解的删除不应该会让数变小吗?为什么计算机的计算会变大?如果最后一位是1左移一位继续,循环此过程,而不像int是1也给你删除,这就是变大的原因了。所以对于需要精确计算的一定要使用bigDecimal,比如设计钱的问题。主要原因:就是因为double会导致数据不准确,不准确的原因如下所示。

2024-04-14 12:59:23 291

原创 KMP算法对查找子串位置优化(每日一练)

通过以上步骤,你可以逐步理解和实现KMP算法,实现一个高效的字符串查找方法。

2024-04-12 22:11:28 386

原创 每日一练(力扣)

情况1:相同,就让子串和原串同时后移继续比较。情况2:不相同,就只让原串后移。

2024-04-12 22:08:10 212

原创 Java每日一题(三道同一类型的题)

找到一个数之后,不要"停",防止 - 2 和 2后面有 -1 和 1。找到一个结果之后,将left和right指针要跳过前面的重复元素。当使用完一次固定数,需要跳过相同的固定数。3.在固定数,后面利用"双指针算法"快速找到两个的和等于-a即可。2.固定一个数,然后将问题转换为俩个数之和为固定数的相反数。4.处理这个题的细节问题。

2024-04-09 14:57:09 535

原创 Java每日一题

这个情况我就利用了Integer的api parseInt,这个api如果越界或者不是整数就会抛出异常,然后我在接收异常,如果是异常我就直接返回0。这样也会把0的情况进行处理。我把0删了,为空也会抛出异常。所以我就打算分为四步进行处理:首先我会创建两个StringBulider,一个用来存储原数字,一个用来存储结果集。判断最后一位是否为0,为0直接删除存储数中最后一个元素。把负号添加到结果集中,然后把存储数的第一个元素删除,然后当正数处理。1.正常情况、2.负数、3.最后一位是0、4.反转后越界。

2024-04-08 19:43:15 228

原创 探究 Java 工作原理:从编译到运行

Java 是一种广泛应用的跨平台编程语言,其独特的工作原理使得它成为了众多应用程序和系统的首选开发语言。本文将深入探讨 Java 的工作原理,从源代码编写到最终运行的整个过程。Java 的工作原理涉及了编译、类加载、解释与即时编译、运行时环境以及垃圾回收等多个方面,这些机制共同保证了 Java 程序的稳定性、安全性和高性能。了解 Java 的工作原理有助于我们更好地理解 Java 程序的运行机制,提高程序的开发和调优效率。

2024-04-08 19:26:20 495

原创 HashMap和HashTable的区别

HashMap和HashTable都是使用键值对的方式进行存储的数据结构,但它们之间有着一些重要的区别,包括线程安全性、Null 键和值的允许性、继承关系以及迭代器等方面。如果在单线程环境下使用,并且需要线程安全性,则可以考虑使用Hashtable。在多线程环境下,或者不需要线程安全性的情况下,通常使用HashMap。在选择使用HashMap或Hashtable时,需要根据具体的使用场景和需求进行综合考量,并注意它们之间的区别和特性。

2024-04-01 19:05:07 408

原创 计算机存储系统-1

我们的应用都是存储在辅存中的,但是cpu的速度非常的快,如果直接读辅存会被辅存拖累,所以在启动应用的时候,会先把辅存的数据加载到主存里面。这样cpu就可以高速的对主存读写数据。而频繁访问的会放在cache里面(速度更快)。

2024-04-01 16:23:05 403

原创 计算机的组成原理

cpu的针脚也就跟我们的手指一样用来接收高低电频,来判断2进制数据软件的发展编程语言实际就是用来创造应用软件的下层是上层的基础,下层是对上层的扩展。

2024-03-31 14:24:49 155 1

原创 深入理解Java中的TCP连接:三次握手和四次挥手

在建立TCP连接时,客户端和服务器之间需要进行三次握手,以确保双方能够正常通信。握手过程包括以下步骤:客户端发送SYN报文:客户端向服务器发送一个SYN报文,表示请求建立连接。服务器确认SYN报文:服务器收到客户端的SYN报文后,会发送一个ACK报文作为确认,并同时发送一个SYN报文给客户端。客户端确认ACK报文:客户端收到服务器的SYN和ACK报文后,会发送一个ACK报文给服务器,表示连接建立成功。在断开TCP连接时,客户端和服务器之间需要进行四次挥手,以正常释放连接资源。客户端发送FIN报文。

2024-03-19 21:07:16 365 1

原创 Java网络编程:探索奥秘与实践

以上就是Java网络编程的基础知识。虽然这些例子非常简单,但它们展示了Java网络编程的基本模式:服务器监听客户端的连接请求,客户端连接到服务器,然后服务器和客户端通过套接字进行通信。Java网络编程是一个深入且广泛的主题,还有许多其他的概念和技术等待我们去探索,比如HTTP协议、SSL/TLS加密、非阻塞IO等。希望这篇博客能为你的Java网络编程学习之旅提供一个良好的起点。

2024-03-18 21:02:06 440

原创 对于经过对计算机原理的学习,自己做了一份思维导图,希望你看到能对你有帮助

2024-03-17 19:03:59 90

原创 为什么在网络编程中使用.getBytes().length()不能使用.length()???

在Java中,字符串的长度是由字符数量来计算的,不同字符可能占用不同的字节数,尤其是在涉及到多字节字符编码如UTF-8时,一个字符可能由多个字节表示,因此字符串的字符长度并不等同于在网络通信中所占用的字节长度。,因为当数据通过网络传输时,字节被转换成比特流,即由一系列的0和1组成的数据流。因此,在网络编程中,要根据需要将字符串转换为字节数组并获取其字节长度,以确保正确地处理和传输数据,而不是简单地使用。在网络通信中,通常需要以字节流的形式来传输数据,因此需要获取字符串在字节流中的长度。

2024-03-15 21:31:00 223

原创 vue项目部署服务器,因为跨域设置nginx.config要修改的配置

对于部署项目需要使用nginx进行vue项目的话,需要对nginx的配置文件进行如下修改即可。下面是我在vue项目中vite.config.js设置的配置代理。

2024-03-10 18:07:56 529

原创 Vue 3 和 Spring Boot 3 的操作流程和执行步骤详解

在本篇博客中,我们将详细介绍Vue 3 和 Spring Boot 3 的操作流程和执行步骤。Vue 3 是一款流行的前端框架,而Spring Boot 3 是一款广泛应用于后端开发的框架。通过结合使用这两个框架,我们可以构建出功能强大的全栈应用。

2023-11-19 11:20:13 835

原创 深入解析Spring Boot自动配置原理:让你的应用无痛集成

Spring Boot是一个用于构建独立、生产级的Spring应用程序的开发框架,它在简化配置、提高开发效率、增强功能丰富性等方面具有以下优势:简化配置:Spring Boot采用了约定优于配置的原则,通过自动配置和默认属性设置,大大减少了开发者需要手动配置的工作量。它使用了一些智能推断和默认值机制,可以根据项目的依赖和环境来自动配置应用程序,并提供了一个统一的配置文件(application.properties或application.yml)来集中管理配置。

2023-11-04 16:46:58 196 2

原创 详解Java堆的应用场景,思路分析,代码实现

堆作为一种数据结构,具有以下几个优点:高效的插入和删除操作:堆的插入和删除操作的时间复杂度都是O(logn),其中n是堆中元素的个数。这是因为堆的结构保证了根节点是最大或最小元素,因此在插入或删除元素时只需要对部分节点进行调整,而不需要对所有节点进行遍历。这使得堆在动态维护一组元素中的最大或最小值时非常高效。快速找到最大或最小元素:堆的结构保证了根节点是最大或最小元素,因此可以在常数时间内找到最大或最小元素。这对于需要频繁查找最大或最小值的应用非常有用,例如优先队列、任务调度等。

2023-10-26 21:52:17 150 2

原创 Java集合框架

集合是Java中一组相关对象的容器,用于存储、管理和操作多个元素。它们提供了各种数据结构和算法,使我们能够更方便地处理数据。存储和管理元素:集合提供了一种便捷的方式来存储和管理多个对象。与数组不同,集合可以动态调整大小,并且提供了许多便利的方法来增删改查元素。提供高效的数据访问和操作:不同类型的集合框架在底层实现上采用了不同的数据结构,以满足各种访问和操作需求。这些数据结构(如数组、链表、哈希表、树等)具有不同的特点和性能,可以根据实际情况选择最适合的集合类。

2023-10-21 21:18:54 242 4

原创 深入解析Java正则表达式:定义、原理和实例

正则表达式在Java开发中扮演着重要的角色。本文将详细讲解Java正则表达式的定义、工作原理,并提供一些实例和示例代码,帮助读者更好地理解和应用正则表达式正则表达式适用于许多问题和场景,包括但不限于以下几个方面:数据验证和提取:可以使用正则表达式来验证输入数据的格式是否符合要求。例如,验证邮箱地址、手机号码、身份证号码等。同时,也可以使用正则表达式从一段文本中提取出需要的信息,如提取URL、日期、数字等。数据处理和替换:正则表达式可以用于对文本进行搜索、替换和修改。

2023-10-20 21:57:13 701

原创 你真的了解红黑树的怎么实现的吗?

红黑树是一种自平衡的二叉查找树,是在普通的二叉查找树的基础上增加了一些限制和规则,使得它能够自我调整来保持平衡。它的作用主要有以下几个方面:查找和插入元素的时间复杂度都是O(logN),其中N为树中节点的个数,因此红黑树可以高效地进行查找和插入操作。在很多需要动态维护有序序列数据结构的场景中,红黑树可以非常高效地实现这个目标。红黑树还可以用于高效地实现区间查询等数据结构,比如线段树。在这种场景下,红黑树作为线段树的底层数据结构,能够提升线段树查询、更新的效率。

2023-10-18 21:12:53 106 3

原创 java实现二叉搜索树

左子树中所有节点的值均小于该节点的值。右子树中所有节点的值均大于该节点的值。每个子树也都是二叉搜索树。通过这种特殊的结构,二叉搜索树能够实现快速的插入、查找和删除操作。在二叉搜索树中,插入一个新节点的时间复杂度为 O(log n),查找或删除一个节点的时间复杂度同样为 O(log n),其中 n 是树中节点的数量。因为其高效的查找和排序性质,二叉搜索树被广泛应用于各种领域,例如数据库索引、哈希表等数据结构的实现、模拟字典等应用中。

2023-10-17 20:55:41 254 1

原创 深入了解Java位运算符

位运算在我们刷题时候,对于效率和空间都是很大的提升,所以位运算符,对于我们的作用也是不可或缺的。里面就存在一个很重要的思想就是位图,此次我讲解位运算符的作用主要是为他服务的通过一个整数模拟,四个字节三十二个比特位的数组就形成了,这种做可以在时间复杂度为O(1)的情况下使用hash表来解答问题。而你所进行的位数相加减,我将在下面介绍、按位与(&):将两个操作数的对应位进行逻辑与运算,相同位置上的位都为1时,结果为1,否则为0。

2023-10-16 22:02:38 178 4

原创 Java实现快速排序

快排分为两种:1.lomuto分区算法 (快慢指针)(单边)2.Hoare分区算法 (前后指针)(双边)快排主要思想:选一个基准元素分为两部分,先让左边排一下序再让右边排序。

2023-10-14 21:17:19 242 3

原创 力扣164最大间距

因为昨天写了一个基数排序,今天我来写一道用基数排序实现的题解,希望可以帮助你理解基数排序。这个题本身不难,就是线性时间和线性额外空间(O(n))的算法,有点难实现基数排序的时间复杂度是O(d*(n+radix)),其中d是最大值的位数,n是数组长度,radix是基数(10)然后化简就是 O(n)

2023-10-13 20:48:57 175 1

原创 Java实现基数排序

基数排序是一种非比较排序算法,它将待排序的数字按照其每一位的值进行排序,从低位到高位依次排列。基数排序的思想是先对每个数字的最低有效位进行排序,再对次低有效位进行排序,以此类推,直至对最高位排序完成。基数排序的实现可以使用桶排序的思想,对于每一位的数字,我们可以将数字放入对应的桶中,然后按照桶的顺序将数字取回,就可以完成排序。在具体实现过程中,需要进行多轮排序,每一轮按照不同的位数进行排序。同时,为了确保排序的正确性,需要对每一位的数字进行相应的补零操作,使得每一个数字都具有相同的位数。

2023-10-12 21:15:43 133

原创 Java实现B树

B树是一种自平衡的搜索树数据结构,常用于数据库和文件系统中的索引结构。它具有以下好处和功能:高效的查找操作:B树的特点是每个节点可以存储多个关键字,并且保持有序。通过在节点上进行二分查找,可以快速定位目标关键字的位置,从而实现高效的查找操作。平衡性:B树通过自平衡的方式维护树的平衡性,即保证树的每个叶子节点到根节点的路径长度相等。这种平衡性能够确保各种操作的时间复杂度保持在较低水平,例如插入、删除和查找等操作都可以在对数时间内完成。适应大型数据集:B树适用于存储大型数据集,并且可以处理非常大的索引。

2023-10-11 18:21:38 2546 5

原创 关于hash表的一些练习题

我在前文已经讲述了,HashTable的代码实现,这次来讲讲如何实现hash算法来写一些练习题吧对于hash表存在的优点就是:快速搜索,高效插入和删除和快速搜索。

2023-10-10 18:37:44 85 1

空空如也

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

TA关注的人

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