- 博客(101)
- 收藏
- 关注
原创 Mac中maven配置安装路径
Mac中maven配置安装路径没有下载maven的可以先下载:(这里建议maven版本不要下高了)如果你的bash_profile中没有配置JAVA_HOME路径,可以按照下面的命令配置一下。
2024-07-23 22:33:40
579
原创 为什么在重写equals方法后还要再重写hashcode方法(面试题)
这是因为set在新增数据进行比较数据是否相同的时候,首先会先去调用hashcode比较这两个对象的hashcode值是否相同,在我们还没有重写hashcode方法之前,两个对象的hashcode的值是不同的,所以这个时候就直接返回;后来,我们重写了hashcode方法,让两个对象返回相同的hashcode值,这个时候再用重写的equals去比较两个对象的值是否相同,如果都相同就会只存放一个值进入set中。)我们在代码中发现重写了equals方法后还需要重写hashcode方法,为什么呢?
2024-06-30 20:04:15
245
原创 ==和equals的区别(面试题)
这是因为set在新增数据的时候,首先会先去调用hashcode比较这两个对象的hashcode值是否相同,在我们还没有重写hashcode方法之前,两个对象的hashcode的值是不同的,所以这个时候就直接返回;对于equals来说,基本数据类型没有equals方法,对于引用类型equals比较的是引用对象是否相同(我觉得比较的应该是地址)对于引用类型,==比较的是地址是否相同,equals如果被重写的话比较的是值是否相同,如果没有被重写,则会使用Object里面的equals进行比较他们的地址是否相同。
2024-06-30 20:01:01
720
原创 SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)
在你的项目中,有没有遇到用户重复提交的场景,即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价,本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交,并通过我们的自定义注解来进行封装功能。获取用户ID的逻辑需要根据你的项目实际情况进行编写,我这里是把id存在redis里面的,但是也是存在问题的,读者可以尝试使用RabbitMQ进行实现。maxRequests表示在timeWindow时间内的最大请求数。接下来我们需要实现一个AOP切面,来实现我们的自定义注解。然后,自定义一个注解。
2024-06-24 18:08:21
459
原创 ArrayList知识点(面试)
上一篇我们说了hashmap的相关知识点,这一篇我们再说一些ArrayList的相关知识,因为ArrayList也是我们项目中比较常用的。
2024-06-22 20:07:58
986
原创 SpringBoot项目解决跨域问题
什么是跨域?这里先简单介绍一下-------->跨域指的是当两个路径他们的协议、域名、端口有一个不同就会产生跨域问题,而前端所说的同源策略指的就是协议、域名、端口都相同的情况。那如何进行解决呢?这里有几种方法可供你选择。
2024-06-12 10:21:12
486
原创 RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,
但是暂时我也不太清楚要删除这个文件,如果有知道的朋友可以再评论区留言,我们共同学习~1、你的rabbitMQ的版本信息和erlang的版本信息对应不上。2、你的安装路径中存在中文或空格。
2024-06-03 15:45:34
688
1
原创 安装RabbitMQ和elr时,版本问题报错:Could not start application logger: Logger.App.start(:normal, []) returned an
在安装rabbitMQ和erl时,随便安装了一个版本,结果最后报错了,最后才知道这个也是需要版本对应的(我是菜鸡)
2024-06-03 15:34:49
237
1
原创 springboot报错:Failed to start bean ‘documentationPluginsBootstrapper‘
springboot项目启动时报错。
2024-06-02 16:36:27
1068
原创 力扣--最大子数组和
请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是不是比动态规划更容易理解些!是数组中的一个连续部分。
2024-06-01 21:02:18
337
原创 ElasticSearch教程(详解版)
Elasticsearch,基于lucene.分布式的Restful实时搜索和分析引擎(实时)分布式的实时文件存储,每个字段都被索引并可被搜索高扩展性,可扩展至上百台服务器,处理PB级结构化或非结构化数据Elasticsearch用于全文检索,结构化搜索,分析/合并使用。
2024-06-01 20:39:39
1936
1
原创 力扣---128.最长连续序列
这题我看大部分题解都是用的set来做的,但是我对这个容器的方法用的不是太熟(我是菜鸡),所以就纯写了一个不用任何数据结构就可以写出来的代码~代码没有用任何数据结构,应该还是很好理解的,各位有更好的解题方式可以在评论区进行留言,我们一起探讨学习~,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为。给定一个未排序的整数数组。
2024-05-31 15:52:38
229
原创 力扣--11.盛最多水的容器
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。
2024-05-31 14:51:05
223
原创 多线程讲解(详解)
说起多线程,那就不得不说什么是进程了,进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器因此一个进程当中就可能存在多个线程。多线程就是指一个进程中同时有多个执行路径(线程)正在执行。t1.start();t2.start();t3.start();创建一个类,实现Runnable这个接口重写run方法。
2024-05-19 21:31:03
1119
原创 SpringBoot报错:No typehandler found for property xxxxx
JSONArray转换为实体类数组: List User= JSON.parseArray(jsonArray.toJSONString(), Employee.class);实体类数组转JSONArray: JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(User));以上配置好以后就差不多可以了,但是如果这个字段不是数据库中的字段,可以考虑在字段头上加上。
2024-05-17 15:23:38
782
原创 SpringBoot报空指针错:java.lang.NullPointerException
好了,以上纯属于我的个人吐槽,下面开始问题解决,其实原因就是因为控制器方法中的public写成了private,导致前端可以传进来值,控制器也可以正常接收,但是由于是private所以只能在当前类中进行访问,当然在其他类中就不能进行访问了,所以就报了空指针错误。但是奇怪的是我除了新增和修改接口其它的查询接口是可以正常访问的,整个项目从头查看了一遍都没问题,啊啊啊啊啊啊啊啊啊啊为什么为什么,像发疯!前端能成功传进来值,后台控制器中能成功进行接收,但是就是到不了我的实现类,为什么呢?啊啊啊啊啊啊啊啊,想发疯!
2024-05-13 17:42:21
374
原创 Lambda表达式&Stream流-函数式编程入门教程
Stream流不只是Lambda表达式厉害,它其中还包含了很多 Java 8 中集合数据处理的利器,很多本来复杂、需要写很多代码的方法,比如过滤、分组等操作,往往使用 Stream 就可以在一行代码搞定,当然也因为 Stream 都是链式操作,一行代码可能会调用好几个方法。它的作用是每次计算的时候都用到上一次的计算结果,比如求和操作,前两个数的和加上第三个数的和,再加上第四个数,一直加到最后一个数位置,最后返回结果,就是。得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。
2024-05-11 17:39:47
855
原创 java.lang.IllegalStateException: stream has already been operated upon or closed
【代码】java.lang.IllegalStateException: stream has already been operated upon or closed。
2024-05-10 21:11:57
169
原创 springcloud报错:Failed to start bean‘webServerStartStop‘
那就说明的nacos没有打开,所以找到你的下载nacos的文件夹。好了,错误完美解决~
2024-05-05 19:26:13
370
1
原创 微服务---gateway网关
AuthorizaGatewayFilterFactory使我们自定义的一个过滤器,gateway的自定义过滤器名字是有一定要求的,即 “你想取的过滤器名字前缀+GatewayFilterFactory”,这里以我的为例,然后把前缀作为刚刚配置文件的配置进行配置然后我们实现这个自定义的过滤器@Component@Slf4j@Data/*** 需要放行的授权接口(nacos中的配置文件)*/@Autowired/*** 授权token*/
2024-05-05 02:00:00
1072
1
原创 微服务---feign调用服务
Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端只需要创建一个接口,然后添加注解即可使用Feign。
2024-05-05 01:30:00
1652
原创 微服务----nacos配置及简单使用
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。简单来说nacos就是注册服务用的。Nacos 架构nacos下载(详解版)
2024-05-04 20:23:06
1683
原创 SpringBoot自定义定时任务
Component@Autowired@Override()-> System.out.println("时间到了哦,当前时间为"+ LocalDateTime.now().toLocalTime()),// 设置定时任务执行周期,从数据库中获取// 返回执行周期这里我把需要从数据中查的cron表达式id写死了,读者可以根据自己的项目需求进行修改。
2024-05-04 19:21:43
978
原创 ThreadLocal存储用户登录信息
对于session中的用户信息,我们不仅想要在action中随用随取,还想在其它普通类中取,即使不依赖servlet api, 我们也要在方法里随用随取,我们在处理请求的时候,很多操作都要获取当前用户的ID等信息,由上可见,我们凡是在action的方法中任何一处想要获取session中的用户信息,则必须要先手动获取到HttpServletRequest,是不是比较麻烦。顾名思义,就是本地线程,可是这个名字实在容易让人误解,因为其实它是本地线程局部变量的意思,首先我们要知道,我们每个请求都会对应一个线程,
2024-04-27 20:17:53
1300
原创 SaTokenException: 非Web上下文无法获取Request问题解决
最近在学定时任务,需要获取到当前用户信息然后再定时任务方法中取出当前用户信息,刚开始使用的是StpUtil.getTokenInfo()或者 StpUtil.getLoginId()这类方法,但是报错了,哈哈哈哈~当然,定时任务是不能提供参数的,所以就报错了 ,所以可以试试将信息存在redis里面或者使用spring本地缓存。其实看源代码就知道了,需要提供HttpRequest信息给它才能使用这些方法。我这儿就直接使用的全局变量,在登录类里面存储用户信息。虽然这样也可以,但是还是建议存在redis当中~
2024-04-27 20:04:28
818
原创 gateway报错: Spring MVC found on classpath,which is incompatible with Spring Cloud Gateway.
在学习gateway技术的时候报错,原因是因为 Spring Cloud Gateway 的项目中不能使用 Spring。也就是说,在 Spring Cloud Gateway 的项目中不能使用如下依赖。的依赖,而我不小心通过依赖其它模块而间接引用了该 Spring MVC 的依赖。很好,又解决一个问题~
2024-04-24 21:18:37
503
原创 springcloud+nacos项目报错:Load balancer does not contain an instance for the service userservice
如果你是跟着黑马学的,那你一定在nacos上配置了一个命名空间叫dev,然后你会发现后面学feign的时候userservice这个服务始终注册不上去,没错,就是因为这个命名空间的原因,所以你需要删除你的命名空间dev,将配置文件放到public当中就可以了,然后注意bootstrap中的namespace要删除。由于不同版本的解决问题的方案不同,所以这里先说一下我的版本信息。然后就可以运行项目了~
2024-04-24 21:12:11
644
1
原创 力扣--LCR 015.找到字符串中所有字母异位词
起始索引等于 0 的子串是 "cba", 它是 "abc" 的变位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的变位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的变位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的变位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的变位词。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。指字母相同,但排列不同的字符串。
2024-04-23 20:50:39
190
原创 SpringCloud注册nacos错误:Could not resolvplaceholder ‘xxxxx‘ in value “xxxx“
1、版本问题,springcloud、springboot、springcloud-alibaba有着严格的版本对应关系,非常烦(如果你是看的黑马的,建议就跟他的版本一直就好了,因为到后面的版本会有一些出处,很容易出现版本问题)!3、如果以上情况都没有,那就去看看你的nacos的版本,如果你的项目版本信息跟我一样你就去下载一下nacos的版本,我项目出错的原因就是因为nacos版本我之前用的是2.2几的版本,导致就一直报这个错,害我看了快两天了,想哭~
2024-04-23 17:32:04
546
1
原创 力扣--N皇后
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。由于我设备的原因,暂时只能截图,等后面我再改吧。的棋盘上,并且使皇后彼此之间不能相互攻击。如上图所示,4 皇后问题存在两个不同的解法。该题为典型的回溯问题,下面我们直接来看代码吧。这里我把题目链接贴上供各位查看。的棋子放置方案,该方案中。每一种解法包含一个不同的。分别代表了皇后和空位。
2024-04-22 23:27:58
348
原创 No spring.config.import property has been defined
但是在SpringCloud 2020.* 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap从新导入进来就会生效了。产生问题的原因是bootstrap.properties比application.properties的优先级要高。由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
2024-04-22 19:35:11
247
转载 nacos开启鉴权功能
在之前的案例中部署好Nacos服务端后,默认没有开启鉴权,直接不用登录就能访问控制台,也能直接注册服务,存在很大的安全风险。之前也爆过Nacos权限认证绕过漏洞(NacosNacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现进行自定义插件开发。接下来我们使用Nacos。
2024-04-22 11:17:44
1526
原创 使用QQ邮箱进行登录验证
以上代码均做有注释,各位可以看看,直接copy也可以,我获取的验证码信息是存在redis中的,所以记得要开redis。打开IMAP/SMTP服务,记得把授权码记录下来,后面配置文件中需要用到。接下来实现具体验证逻辑,我这里只做了简单的验证码认证。运行后就可以看到你的邮箱中有验证码信息啦~新建application的配置文件。使用场景不多说,接下来直接看实现~先创建一个随机生成验证码的方法。以上就是所有功能的实现啦~登录到QQ邮箱,进入设置。以下是redis的配置。
2024-04-21 20:33:59
535
原创 使用AOP切面做防止用户重复提交功能
关于如何做自定义注解,请看以下博客springboot做自定义校验注解这篇博客我们先跳过,直接来看实现// 缓存时间默认为10秒,请求完成自动清除,过期自动清除。
2024-04-21 20:14:20
480
原创 Nacos下载(详细版)
下载成功后进行解压,然后进入解压后的文件夹中找到conf,conf里面有nacos默认的端口号(8848),如果你的项目端口号和nacos冲突可以在这里进行修改。当然你也可以在命令行中输入一下命令进行启动 (要先进入到你的nacos路径下再运行以下命令)Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos。然后我们进入到以下目录,双击红色框出的文件就可以启动nacos。选择你想要下载的版本,我这里下载的是2.2.3的版本。以上是所有的安装步骤,祝你一路畅通~
2024-04-21 17:22:17
1013
原创 Error creating bean with name ‘configurationPropertiesBeans‘ defined in class path resource
还有需要注意的是,根据官网引入springcloud的方式应该像以下方式进行引入。具体的pom文件内容为以下内容。
2024-04-21 16:51:16
1043
原创 Could not read JSON: Could not resolve type id ‘xxxx‘ as a subtype of `java.lang.Object`
由于报错信息太长了,所以这里就不做过多的展示了,我的报错是在我使用sa-token进行登录验证的时候报错,原因是因为我修改了我数据库中表的名字,同时修改了项目中的对应的名字信息,所以导致redis中缓存对应不上,这个时候清除redis缓存信息就可以了,具体的清除缓存指令为以下(如果你的redis需要密码进行登录,请先执行以下指令)然后可用命令dbsize或key * 检查是否清理成功。
2024-04-18 20:05:30
546
TA创建的收藏夹 TA关注的收藏夹
TA关注的人