自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 开发中遇到的一个bug

但是,此时遇到了又一个问题,报错Module hmall must not contain source root E:\MyProject\springcloudheimashop\day03-微服务01\资料\hmall\pay-service\src\main\java . The root already belongs to module pay-service,不允许删除。翻译过来就是存在循环引用的情况,导致注解无法加载生成,类似这样的问题可以找到报错的提示的三个模块,左键打开。

2024-06-22 00:00:49 476

原创 Stream流的实际使用

可以在partioning中衔接lambda表达式,表明分区条件,返回值为Map,键为true和false,根据条件分开的两类数据分在两个分区中。Map方法的适用场景,接上例,对当前的包含对象的流数据转换为仅包含人名的流,那么就适合使用map方法来进行类型的转换。常规使用:在collect中指定collector收集器,进行对应类型的转换,如List、Set、Map等。reduce通过特定的函数对流中的元素进行反复操作,适用于求和、字符串拼接等操作。实用的方法:分组、分区、字符串连接。

2024-06-10 10:08:55 427

原创 面经总结(四)(计算机基础)

服务端接收客户端信息后发起第二次传输,发送ACK和SYN以及随机序号,这时客户端成功接收,确认了服务端可以正常发送和收到,自己也可以正常发送和收到;浏览器输入URL地址->通过DNS协议找到对应的IP地址->根据IP地址和端口号发起TCP连接请求->TCP连接后向服务端发送HTTP请求报文->服务端返回响应报文->客户端解析响应代码,加载初步的HTML页面->客户端还有部分图片的URL没有加载完成,继续给服务端发送请求->服务端解析后返回响应报文->客户端接收,加载剩余的页面,至此加载完毕。

2024-04-25 00:29:39 715

原创 面经总结(三)(框架&工具)

Spring框架会在应用程序启动时扫描所有的组件,并解析@GetMapping注解中的value属性,以便在接收到http相应的get请求时,正确的将请求路由至对应的处理方法。实现过程是通过创建切面,切面中包含了切入点表达式以及通知,其中切入点表达式表明了要切入的位置,通知则写明了多个业务所要共同执行的一段逻辑,找到对应包下的方法后,即找到了连接点。,如果目标方法实现了接口,则 Spring 会使用 JDK 动态代理来生成代理对象,从而实现对目标对象方法的增强。这样就实现了条件化的自动装配。

2024-04-24 14:10:30 693

原创 面经总结(二)(数据库)

5、二级索引有哪些?包括唯一索引、普通索引、前缀索引、全文索引。6、覆盖索引是什么?覆盖索引是指查询使用了索引,并且需要返回的列,刚好在该索引中可以全部找到,不需要回表查询。比方说student(Sno,Sname,Ssex),其中Sno为主键,其主键索引实现了聚集索引,走Sno来查询效率就很高,Sname实现了普通索引,走这个二级索引来查询效率也可以,Ssex啥也不是这时有select Sno,Sname from student where Sno = '2',效率很好。

2024-04-23 23:43:39 1803

原创 面经总结(一)(java)

并发情况下为了避免二义性)。第一个问题:因为读写锁的粒度更细,ReentrantLock粒度粗,上这种锁会导致系统陷入可串行化,但是读写锁对读写操作进行了划分,读锁实际上是共享锁,写锁实际上是排他锁,直接上可重入锁的话整个系统就会变成可串行化,但是上读写锁,可以保证写操作不被打断,且写入期间不允许再上任何其他的锁,读操作允许多个线程去同时读,从而提高了系统的性能。当Eden空间填满时,将触发一次新生代的垃圾回收(Minor GC),将不再存活的对象清理掉,并将存活的对象复制到Survivor空间中。

2024-04-23 15:21:35 1885

原创 链表相交(java)

本题其实不难理解,只是被题干说的很复杂,好像最后要判断curA和curB的值一样,其实判断的就是curA和curB的指针在交点是否相等,所以先算出两个链表的长度,再交换链表值使得A链表总是为更长的链表,之后再遍历A链表至与B链表长度一致的地方,再进行if判断两个指针是否相等,若相等,则直接返回头节点curA,不相等返回null。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。

2024-04-22 16:07:12 545

原创 删除链表的倒数第n个元素(java)

思路较为简单,先创建一个哑节点便于删除头节点,之后创建一个获取链表长度的方法,之后用for循环定位到我想去的地方,再进行正常的删除操作(被操作节点的前一个结点指向被操作节点的下一个节点),最后再返回头节点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2024-04-22 11:57:22 265

原创 两两交换链表中的节点(Java)

本题为了便于对头节点进行操作,使用dummyNode作为哑节点来实现,要操作两个节点的物理位置互换,要找到这两个节点前的一个节点进行操作,逻辑较为简单不再阐述。循环终止条件即当前遍历到的节点的下下个节点为空,但是考虑到链表中只有head的情况,应该&&一个判断下一个节点不为空的条件。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2024-04-22 11:28:34 141

原创 反转链表(Java)

之后在其中完成链表倒置的操作,即使得cur指向pre,并记录cur的next位置给temp,之后继续递归直到cur到null再逐层返回。其实双指针法的逻辑是,定义两个指针,一个为pre一个为cur,分别表示当前要操作的链表节点以及在其前面的节点,在cur不为null的循环中,一直遍历,每一次遍历用temp临时指针记录cur的next,再使cur指向pre,之后整体使cur和pre向后移动(pre指向cur,cur指向temp),直到cur指向null。如果不了解递归法,乍一看双指针法,会觉得很难理解。

2024-04-22 10:19:03 260

原创 设计链表(java)

/ 链表变为 1->2->3。// 现在,链表变为 1->3。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。设计实现链表操作的五个接口。

2024-04-21 22:41:03 379 1

原创 移除链表元素(Java)

到下一个节点上,而删除中间位置的节点,则需要使得被删除节点的前一个结点指向被删除节点的下一个节点,断开前一个节点与被删除节点的连接,再删除这个节点(java中有自己的回收机制,C++中则需要手动delete释放);使用头节点可以简化链表操作的算法,特别是在插入和删除第一个节点时,可以直接通过头节点的下一个指针来进行操作,而不需要特别判断链表是否为空。头指针是在链表中指向第一个节点的指针,如果该链表是带头节点的链表,那么头节点则指向头指针,如果链表不带头节点,则头指针指向该链表中存有实际数据的第一个节点。

2024-04-21 16:21:25 363 1

原创 链表知识基础(java版)

链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。1、数组是有索引的,其支持随机存储,想要在数组中查询数据时间复杂度是O(1)级别,但是想要在链表中查询一个节点的数据,需要一个一个遍历到指定位置,时间复杂度可以达到O(n)级别。1、单链表,一个节点包含了两块区域,一块是自己的数据域另一块自己是的指针域,数据域负责存放数据,指针域负责记录下一个节点的位置。2、双向链表,一个节点。

2024-04-21 15:19:35 219 1

原创 本周学习总结(数组)

主要对数组初步的相关算法题进行了学习,下周准备开始学习链表以及字符串的知识。2、学习了利用双指针解决重复数据、移动0的操作。1、复习了二分查找以及衍生的相关问题。3、学习了滑动窗口的思想。

2024-04-21 13:51:36 238 1

原创 滑动窗口思想解决水果成篮问题(java)

JDK1.8 以后的 HashMap在解决哈希冲突时有了较大的变化,当链表长度大于等于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。在本科开设的数据结构教科书中,HashMap的底层实现哈希表是由数组+链表来实现的,在JDK1.8之前的版本也确实如此,但在JDK1.8后,其实现底层实现就是数组+链表+红黑树的结构。可以采摘 [1,2,1,1,2] 这五棵树。,返回你可以收集的水果的。

2024-04-20 16:21:01 1383

原创 滑动窗口思想求长度最小的子数组

可以定义一快一慢两个指针,快指针一定是会看遍整个数组;while循环累积sum值比较target;筛选符合条件的子数组;慢指针负责在后面跟进缩小子数组长度;定义result动态接收符合条件的数组的长度,并在后续不断比较新子数组和原有子数组长度最小值进行更新。如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。

2024-04-20 12:03:06 204

原创 有序数组的平方

本题可以采用双向指针的思路来做。因为数组中有负数,平方后可能为最大值,可以创建两个指针,分别指向原数组一左一右,再创建一个新数组来接受数据。内部逻辑为,如果左值平方大于右值平方,将该值赋给新数组末位,同时移动left指针,另一边同理。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]组成的新数组,要求也按。

2024-04-20 00:26:15 119

原创 移动零(java)

本题依旧可以使用快慢指针双指针思路来做 ,fast遍历数组,slow记录0的位置,当fast指针扫描到不等于0的元素时,交换slow指针和fast指针所指的位置,并令slow指针+1。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。

2024-04-19 17:25:34 142 1

原创 删除有序数组中的重复项(java)

本题依然可以利用双指针的思想来解,定义一快一慢两个指针,fast指针在前遍历数组中全部元素,slow指针在后记录比较元素位置,并在插入新元素时令位置+1。最后返回新数组索引slow+1。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。

2024-04-19 16:55:02 111 1

原创 移除指定元素并返回新数组长度(Java)

可以创建快慢两个指针,快指针fast负责遍历数组去寻找不符合val值的数据,慢指针slow作为新数组的索引而存在。两个指针操作的是一个数组,所谓的“新”数组也是相对于原数组而言,得到符合条件的数值直接覆盖即可,最后返回slow即新数组最终的长度。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。

2024-04-19 15:37:51 230 1

原创 使用二分法求有效完全平方数

返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。返回 true ,因为 4 * 4 = 16 且 4 是一个整数。不能使用任何内置的库函数,如。是一个完全平方数,则返回。使用二分法可以解决本题。

2024-04-19 15:04:46 163 1

原创 二分法求x的平方根(java)

之后使用二分查找法来逼近平方根的值,设置left=0,right=x待求值,while循环中令mid为left+right平均值,若中间值平方大于x,则缩小搜索范围。若中间值平方大于等于x,则已找到满足条件的k值。8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。不允许使用任何内置指数函数和算符,例如。先进行特殊情况判断。整数部分 ans 是。由于返回类型是整数,结果只保留。

2024-04-19 14:40:43 130 1

原创 二分法在排序数组中查找元素的第一个和最后一个位置

如何寻找左边界可以这样思考,利用二分法判断(target>nums[mid])时,令left = mid + 1,不断向右截取数组,最终在target <= nums[mid]条件下,令right = mid - 1,获取到左边界即left(可以画个图理解),取右边界同理。第一种是元素在数组范围左边和右边以外的位置,例如arr为{2,3,4},target为1或5;第二种是元素存在于数组范围内,如arr为{2,3,4},target为3,返回[1,1]第三种是元素在数组范围内,但是对应的元素不存在。

2024-04-19 10:05:40 123 1

原创 利用二分查找解决搜索插入位置问题

数组为左闭右闭区间的情况下,可以利用二分查找来实现。若等于中间值,直接返回mid索引位置,若不等于,则再循环结束后,得到right指针位置,并令其+1即为目标位置。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。

2024-04-18 18:44:26 244

原创 java实现二分查找

要看左右区间是否可取到值,这里的前提情况是左闭右闭的一个区间。外层循环为while(left < right),可理解为在left~right这样的范围内进行检索。后续逻辑判断为如果中间值大于目标查询值(arr[middle]>target),证明目标查询值在中间值以左的区域,则取right = left - 1,重新划分目标区域,再进行检索;如果中间值小于目标查询值(arr[middle]<target),则证明目标数据在中间值以右,同理进行区间划分再查询。,如果目标值存在返回下标,否则返回。

2024-04-18 15:24:51 284

苍穹外卖个人笔记(Java、Redis、SpringBoot、MySQL)

跟随黑马苍穹外卖个人所做的笔记

2024-06-07

空空如也

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

TA关注的人

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