自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库bug记录- One record is expected, but the query result is multiple records

在数据库中存在多个相同的用户名密码,导致前端无法确定返回的是哪一个用户信息。

2024-01-23 17:30:01 477 1

原创 Java-通用返回类实现思路

2.但是这样的话我们在写返回类的时候还是有些复杂,要自己定义code等数据还有代码方法的类型也要改,不妨让我们再一起写一个通用的结果通用类。这样的话,在我们使用的过程中,只需要把我们的结果在return的时候传进结果工具类当中就可以了。1.首先需要一个定义几个公认的字段,在向前端返回时带上信息,例如 code,data,messge,description。通用返回类:在我们后端向前端传输数据的时候,能够让前端清楚的知道返回成功或失败的信息。

2023-10-19 22:01:17 248 1

原创 java-用户登录功能实现

思路:相比与注册功能,登录需要的参数少了一个确认密码,但是多了一个请求实体类用于记录用户的登录态。使用的是queryWrapper对数据库进行查询,如果没有查询到返回错误日志信息。,只提取出不敏感的信息,最后,长度验证+特殊字符验证+加密。1.验证账号,密码的规范性。,返回脱敏后的用户实体。是否已经存在,然后,对。2.对数据库进行查询。4.记录用户的登录态。

2023-10-15 22:00:19 226 1

原创 java-用户注册流程基本实现

思路:对于用户的注册,简易的实现大概分为三个过程,首先是账号,密码,验证密码的规范校验,其次就是对前端返回的密码进行加密,最后是将账号,密码存入数据库。值得说明的是在对账号特殊字符的验证时,用到了正则表达式来检验账号中是否有特殊字符。查询数据库当中对应值出现的次数,如果为1那就说明数据库当中已经存在当前账号。1.账号,密码,确认密码的确认与规范。的方法使密码更加复杂,再使用。

2023-10-14 22:14:02 158 1

原创 ant.design.pro-umi3对应的node版本

当使用ant.design.pro-umi3 对应的版本号过高的话,会报错:ant.design.pro-umi3。使用node16+的版本能够直接解决,我使用的是16.18.0。

2023-10-13 23:29:48 354

原创 BUG日记---(type=Bad Request, status=400)

来处理一个POST请求,通常应该只有一个请求参数,例如,在"/user"这个URL中,我们期望的是一个包含POST数据的表单,表单中包含一个字段叫"user"。但是你在这个POST请求中传入了两个参数,一个是在"user"字段中获取的用户信息(看起来你把它封装到了User对象中),另一个是HttpServletRequest对象,它包含了HTTP请求的所有信息。注解用于将HTTP请求体中的JSON数据绑定到Java对象上。如果你想使用User对象作为请求参数,你应该使用。

2023-10-11 17:57:12 153

原创 归并排序和快排

快排的步骤是,首先在数组中随机取一个数与数组最后一个数进行交换,然后用最后一个数开始对数组里面的数逐个进行比较,如果比它小就排到它的前面,否则就排到后面,拍完之后再使用递归的方法对两边继续重复以上操作。归并排序就是通过递归和合并来进行数组的排序,首先找到中点,不断的进行递归,然后再用合并的方法将其按顺序合并在一起。

2023-09-22 23:21:48 105 1

原创 RabbieMQ-死信队列

这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。简单来说就是当生产者发送的消息没有被消费时,这个信息就会变成死信,那么当这些信息组合在一起就变成了死信队列,具体原理是:producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因。如图所示,我们需要再C1(消费者1)当中实现大量功能,比如,要声明普通交换机和死信交换机,还有他们各自的队列声明。3.当队列达到最大值时。2.当被消费者拒绝时。

2023-09-21 22:52:24 115 1

原创 算法实现二分(通俗易懂)

如果是这样一个数组让我们找到大于等于3的位置,就意味着我们要找到最左边的3,所以当我们中点取到3时不算完,这证明右边没有我们要找的数了,直接让。什么是二分,二分二分,就是将一个完整的东西分成两份,它在算法中的应用场景大部分是进行查找某一个数,或者来查找边界。,再不断重复读,与找某个数不同,这个代码会从头执行到尾,所以最后的L就是要找的边界。),如果这个值小于4,那证明左半边不可能有我们要找的数,那么我们直接让。的位置,首先找到数组的中点,然后将这个中点与你查找的数进行比较(如果中点是4直接返回。

2023-09-20 21:59:10 174 1

原创 选择,冒泡,插值排序

冒泡排序的本质是通过for循环来确定数组中最大的数,并把它放入数组尾部,那么接下来的循环就只需要从前面数组中找到最大值继续往后排就行。插值排序的本质是,先让前两个数进行对比,将小的数排放到前面,再让前三个数进行对比,依旧如此,一直到排列完成为止。选择排序的关键在于,通过对比确定最小值的坐标,然后将它的值与数组最左边的数进行交换。,但是在最好的情况能变成。

2023-09-19 21:30:32 89

原创 RabbitMQ--发布确认

之后,此时我们发布的信息就会被加上一个唯一ID,一旦信息被接收boker就会告诉生产者,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置 basic.ack 的 multiple 域,表示到这个序列号之前的所有消息都已经得到了处理。,因为如果没有确认发布的消息就会阻塞所有后续消息的发布,这种方式最多提供每秒不超过数百条发布消息的吞吐量。,其中异步确认发布性能最好。

2023-09-18 22:01:36 196

原创 RabbitMQ的持久化

当接收队列信息需要一定时间或者队列进行延迟接收时,RabbitMQ突然宕机或被关闭,会导致消息队列在发送之后直接丢失,此时就需要我们来做持久化的操作,保证消息不会丢失。尽管它告诉 RabbitMQ 将消息保存到磁盘,但是当它还没有来得及被保存在磁盘上时,被删除了或者宕机了,依旧会造成信息丢失,但是对于简单任务队列足够使用。如果之前声明的队列不是持久化的,需要把原先队列先删除,或者重新创建一个持久化的队列。方法的第二个参数,将其设置为true,并且在。如果创建之后显示如图所示则为成功。

2023-09-17 21:46:59 196 1

原创 三次握手是什么?

1.第一次握手:客户端发送一个SYN报文段,将报文中的标志位SYN置为1,并且使seq=x,发送给服务端,客户端变成SYN_SENT状态2.第二次握手:服务端收到SYN报文段后,向客户端返回一个SYN-ACK报文段,其中SYN=1,ACK=1,而重要的使ack=x+1,这条信息说明了服务端接收到了客户端发来的报文seq=x,并且将服务端的初始序号seq=y发送给客户端,服务端变成SYN_RCVD状态3.第三次握手:客户端收到SYN-ACK报文后,会发送一个ACK报文,seq=x+1,ack=y+1,表明我已

2023-09-15 22:51:41 115

原创 HTTP与HTTPS有哪些区别

1.主要区别1.关于安全方面1.HTTP是超文本传输,信息传输是明文传输,容易引发安全的风险2.HTTPS通过在TCP和HTTP之间加入了SSL/TLS安全协议,能够加密传输保证了安全性2.关于建立连接的方式1.HTTP相比HTTPS是简单的,它通过TCP三次握手来建立连接之后就能够进行报文传输2.而HTTPS需要在TCP三次握手之后,再进行SSL/TLS的握手,才能够进行报文的传输3.默认端口不一致1.HTTP的默认端口是802.HTTPS的默认端口是4434.数字

2023-09-14 22:08:24 137 1

原创 ArrayList动态扩容

当添加的元素超过10的时候,ArrayList会调用grow()来计算扩容之后的内存,扩容内存为原内存的1.5倍,在这之后会调用Array.copyof方法来实现扩容。首先在最开始的时候,ArrayList就是一个空数组,当开始添加元素的时候,它才会调用内部的扩容方法返回最初的内存为10。在这之后会将原数组里面的数据复制到新扩容的数组当中,儿原来的数组会进行删除操作清理内存。

2023-09-12 20:43:34 30 1

原创 回顾redis的缓存穿透,雪崩,击穿问题

1.缓存穿透缓存穿透:当客户端发送的请求在缓存和数据库中均不存在时,那么大量的这种请求信息就会直接打到数据库上,给数据库带来巨大的压力。解决方法: 1.通过缓存空对象的方法:将没有的数据缓存在redis当中。2.使用布隆过滤器。 3.热点参数限流。 4.增加请求路径的复杂度。2.缓存雪崩缓存雪崩:当有多个key值同时失效时或者redis服务器宕机时,会有大量的数据请求到达数据库,给数据库带来压力(因为数据库的性能没有r

2023-09-08 20:34:13 22 1

原创 计网笔记 (01)输入网址到显示网页的全过程发生了什么?

1.请求头出门前的准备工作1.当我们输入网址时,如www.baidu.com,此时客户端会对URL进行解析从中找到文件名和客户端来生成HTTP请求信息。2.操作系统在发送请求之前,需要获取目的IP,而IP的获得要遵循先后顺序: 1.首先会在客户端缓存当中查询ip, 2.如果没有,继续到操作系统缓存当中查询, 3.还是没有,则继续到host文件当中查询, 4.如果依旧没有,最终会去DNS服务器查询3.在获得IP之后,HTTP会

2023-09-08 11:27:21 47 1

原创 学习日记之使用ant.design.pro瞬间生成前端代码脚手架

使用ant.design.pro快速生成前端脚手架,实现增删改查

2023-09-04 21:55:48 368

空空如也

空空如也

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

TA关注的人

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