Spring学习笔记
文章平均质量分 57
令人作呕的溏心蛋
人生何处不青山
展开
-
Java中PostgreSQl一大批数据(3000+)插入数据库,后台直接报错An I/O error occurred while sending to the backend.
Java中PostgreSQl一大批数据(3000+)插入数据库,后台直接报错An I/O error occurred while sending to the backend.原创 2024-05-08 09:01:53 · 187 阅读 · 1 评论 -
在Java中假设我有一个List<String>列表,有两个数据在里面分别是04:00:00和12:00:00,如何比较大小保留最小的或最大的其中一个
【代码】在Java中假设我有一个List列表,有两个数据在里面分别是04:00:00和12:00:00,如何比较大小保留最小的或最大的其中一个。原创 2024-04-25 17:17:13 · 93 阅读 · 0 评论 -
Java中使用List的stream流19中常用方法操作以及使用常用的filter、map、distinct、count、collect、skip、limit等方法进行数据列表的处理以及数据列表的分页
【代码】Java中使用List的stream流19中常用方法操作以及使用常用的filter、map、distinct、count、collect、skip、limit等方法进行数据列表的处理以及数据列表的分页。原创 2024-04-25 14:41:28 · 326 阅读 · 0 评论 -
Java中double数值保留两位小数的四种实现方式
【代码】Java中double数值保留两位小数的四种实现方式。原创 2024-04-25 14:21:04 · 258 阅读 · 0 评论 -
Spring Boot中判断轨迹数据是否经过设置的打卡点,且在PGSQL中把点拼接成线,判断某个点是否在线上或在线的50米范围内
轨迹数据判断是否经过打卡点,轨迹数据太多,循环判断的话非常消耗内存。解决办法只需要把所有轨迹数据点拼成了一条线,然后只需要循环打卡点即可,打卡点不多,一般不会超过100个,如果多的话,另说。。一般也就几个,也就是说有多少个打卡点就需要循环多少次,打卡点少,我们就可以使用循环去判断打卡点是否在线的范围内即可。原创 2024-04-22 10:08:47 · 490 阅读 · 3 评论 -
Java中使用List的stream流实现分页,有时候我们的需求并不能使用mybatis或mysql去实现分页,我们就需要处理好数据后使用stream流去处理分页
Java 9 或更高版本中使用 toList() 方法。如果你使用的是 Java 8,则可以使用 collect(Collectors.toList()) 方法来替换 toList()。使用 skip() 和 limit() 方法。skip(n) 方法用于跳过前 n 个元素,而 limit(n) 方法用于限制元素的数量为 n。结合这两个方法,你可以实现分页效果。将.toList() 替换成 .collect(Collectors.toList());原创 2024-04-19 10:08:55 · 183 阅读 · 0 评论 -
Java 判断两个Date类型的时间是否大于6天
cardDeviceTrajectoryInfo.getGpstime().toInstant() 是表中最后一条数据的时间,并转换成Instant对象。new Date().toInstant() 是获取当前时间,并转换成Instant对象。原创 2024-04-17 14:58:55 · 166 阅读 · 0 评论 -
Spring Boot定义类处理API通用返回数据
Spring Boot定义类处理API通用返回数据。原创 2024-04-16 19:36:45 · 453 阅读 · 0 评论 -
解决Spring Boot poi导出Excel时发现双击单元格的数字变成了日期格式m/d/yy h:mm
双击这个数值变成了m/d/yy h:mm日期格式找到样式代码找到含有m/d/yy h:mm的代码,将其注释原创 2024-04-12 14:37:29 · 175 阅读 · 0 评论 -
Spring Boot中处理前端传过来的MultipartFile类型的Excel文件,数值匹配String或Numeric,判断是否存在空行,排除空行,处理运算结果的单元格
【代码】Spring Boot中处理前端传过来的MultipartFile类型的Excel文件,数值匹配String或Numeric,判断是否存在空行,排除空行。原创 2024-04-09 21:33:03 · 366 阅读 · 0 评论 -
Spring Boot中前端通过请求接口下载后端存放的Excel模板以及解决使用HSSFWorkbook 导出的Excel,wps能打开office打不开问题
【代码】Spring Boot中前端通过请求接口下载后端存放的Excel模板。原创 2024-04-03 23:12:40 · 618 阅读 · 0 评论 -
【PostgreSQL】已解决Spring Boot中Mybatis模糊查询时出现 could not determine data type of parameter $1
我看了一下我的roleId居然是Long类型的,导致出现could not determine data type of parameter $1的问题,我们需要把你类型转一下就好了!原创 2024-04-02 10:53:06 · 600 阅读 · 0 评论 -
使用Java自带的VisualVM监控远程服务器部署在Docker容器中的Java项目并使用Mat在线工具排查服务器内存泄露或内存溢出的原因
事情是这样的,我们项目最近应业主的要求迁移到了新的服务器,起初一切正常,部署、上线、测试都没有问题,项目大概运行了一周的工作日时间都没出现问题,直到周六那天,项目经理打电话过来说服务器崩了,图片上传不了,验证码加载不出来等各种问题。。。然后火速连到服务器查看了一下Docker 命令中用来显示容器资源利用情况,发现这个Java服务一直在持续的上涨到15G左右(正常也就几百兆),以至于涨到服务器挂掉了。。。额,我初步怀疑是定时任务太多的问题。原创 2024-03-13 16:14:46 · 1287 阅读 · 0 评论 -
在Java中内存泄漏(Memory Leak)和内存溢出(Memory Overflow)的区别
内存泄漏指的是程序中已经不再使用的内存没有被正确释放或回收的情况。这种情况下,内存中仍然存在一些对象占用空间,但由于程序无法访问到这些对象,导致这部分内存无法被重新利用,随着时间的推移会造成系统可用内存逐渐减少。原创 2024-03-13 16:14:05 · 398 阅读 · 0 评论 -
Spring Boot接口请求响应慢,超过10秒以上,如无法优化SQL或代码的情况下,建议写入数据库或缓存中,请求接口时从数据库或缓存中读取返回
Spring Boot接口请求响应慢,超过10秒以上,如无法优化SQL或代码的情况下,建议写入数据库或缓存中,请求接口时从数据库或缓存中读取返回原创 2024-01-15 19:10:25 · 680 阅读 · 0 评论 -
Spring Boot中引入Redis使用RedisTemplate缓存数据、读取数据、opsForValue、opsForList、opsForHash方法使用说明
而创建 RedisTemplate Bean,显式地指定了key和value的序列化方式为StringRedisSerializer,并且将其作为RedisTemplate的泛型参数,这样可以保证存储的数据类型是符合我们期望的。Redis 字符串数据结构是一个简单的 key-value 结构,适合于存储简单的数据类型,如字符串、数字等。Redis 集群是 Redis 分布式部署的一种方式,适合于数据量较大,需要进行分布式存储的场景。Redis 列表数据结构是一个简单的链表结构,适合于存储有序的元素列表。原创 2024-01-15 15:21:40 · 1180 阅读 · 0 评论 -
MybatisPlus中的LambdaQueryWrapper执行Sql语句在满足一个条件前提下并且(满足另外的两个条件其中之一)
正确的语法,where type = 2 and (ssjh = 3 or ssjh = 4) 在type满足条件的前提下,ssjh等于3或等于4即可触发。错误的语法,这样子会得到where type = 2 and ssjh = 3 or ssjh = 4,只要ssjh或type其中一个满足就会触发。原创 2024-01-12 19:40:22 · 496 阅读 · 0 评论 -
Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?直接在yml中配置线程池
如果未配置任务执行器,则异步方法将在调用线程中执行,而不会启动新的线程来执行。因此,加上 @Async 注解的方法能够实现并发执行,而不加 @Async 注解的方法则会按照顺序逐个执行。根据您的代码示例,加上 @Async 注解后,a1() 和 a2() 方法将会同时启动并发执行,而不会相互阻塞。这意味着当调用这些方法时,它们将会在单独的线程中执行,而不会等待方法执行完成。也就是说,当调用这些方法时,程序将会阻塞在方法执行处,直到方法执行完成才会继续执行后续代码。A1和A2多线程交替执行,并发。原创 2024-01-08 11:17:03 · 1302 阅读 · 0 评论 -
如何在Spring Boot中使用@Scheduled写定时任务判断数据量是否过大,过大则进行分表操作,多张表使用临时视图查询
在使用 CREATE TABLE ... AS SELECT * FROM ... 语句时,添加 WHERE 1=0 和不添加的区别在于是否复制原表的数据。 - [x] 不加 `WHERE 1=0`:这会将原表中的数据一同复制到新表中。新表将包含原表中所有的行数据。 - [x] 加上 `WHERE 1=0`:这样做不会复制任何原表中的数据,只会复制原表的结构(列定义)到新表中,但新表不会包含任何行数据。因此,如果只复制表的结构而不需要复制数据,可以在 CREATE TABLE ... AS SEL原创 2024-01-04 11:32:30 · 1241 阅读 · 0 评论 -
你是否还在用for循环给实体类中的某个属性逐个赋值?尽量避免for循环赋值,应当使用sql关联表的方法去赋值来提升接口请求速度!
在我们的开发中,查询列表,想拿到另外一张表的name,但是列表中存着的是另一个表中的id,这时候使用了for循环去遍历然后通过MybatisPlus提供的方法去getOne获取这一条数据的name,这种方法数据量少还能支撑得住,要是数据量大了,那么就很消耗时间了。为了提升接口查询速度,我们将原有的方式改成sql关联表查询,匹配表后拿到表中的字段去给我们的实体类赋值即可。直接降到了73毫秒,所以说,在实际开发中,我们需要避免使用for循环去给实体类中的属性赋值,应当使用sql关联表的方式!原创 2023-12-28 11:09:13 · 398 阅读 · 0 评论 -
MybatisPlus在xml中执行if判断的时候把0给忽略掉了
在执行sql的时候发现state这个值没有拼接到sql里面去,明明判断是成立的,但是就是无法拼接进去,也打印了对象,发现state确实有数据,也为0。只需要把curingPlanInfoSearchDto.state!原创 2023-12-27 19:06:48 · 440 阅读 · 0 评论 -
【JWT】SpringBoot+微信小程序根据指定参数生成Token、更新Token、判断Token是否已经过期、封装wx.request请求更新Token并判断Token是否过期
封装了wx的request请求,每次发起请求的时候都走一遍更新Token的接口/user/updateTokenTime,如果接口返回offline则代表已经过期,则跳转到登录页面,否则就是没有过期,则更新缓存userInfo中的token。如果你想有一些接口不要经过这个request封装,就比如用户没有登录是可以进入到首页等页面的,开放一些允许用户没有登录状态可以访问的接口。我们可以再封装一个request,专门开放接口不经过Token验证。微信小程序点击登录按钮调用该方法。原创 2023-10-05 00:32:03 · 2023 阅读 · 0 评论 -
MyBatis动态传入表名以及#{}和${}的区别
总结一下,就是当我们需要拼接的变量上不能带单引号时,就必须使用${},其他情况都尽量使用#{}的方式,因为${}会有sql注入的问题。而如果我们使用${}的方式编写的sql时,${} 是进行sql拼接,${} 对应的变量是不会被加上单引号 ’ ’ 的。参数user上会带着单引号,而单引号在mysql中会被识别为字符串,select一个字符串肯定是会报错的。在mybatis中如果我们使用#{}的方式编写的sql时,#{} 对应的变量自动加上单引号 ’ ’原创 2023-07-26 15:37:55 · 458 阅读 · 0 评论 -
并发和并行的区别,通俗解释,生活例子解释并发和并行区别到底在哪里。
然而,每个学生都可以同时做试卷的不同部分,比如数学和语文部分可以并行完成,这就是并发和并行结合的例子。具体来说,当一个任务在等待I/O操作的结果时,CPU可以切换到另一个任务上去执行,这样就不需要等待I/O操作完成,从而提高了CPU的利用率。是指多个任务在同一时间段内交替执行,通过任务切换来让多个任务看起来同时执行,从外部看来似乎是同时进行的。比如,在一个单核CPU上运行多个任务,每个任务分配一定的时间片来执行,CPU在不同任务之间进行快速的切换,从而让多个任务交替执行。是一个人同时在处理多个任务,那么。原创 2023-04-15 21:54:03 · 3049 阅读 · 0 评论 -
SpringBoot + RabbitMQ从延时队列中删除指定的值【RabbitMQ中的basicAck和basicNack的区别以及basicReject又是什么?】
业务需求是,就是我本来是有一个order-queue队列绑定到了死信队列交换机order-dead-direct-exchange上,然后我的业务是,现在有一个用户下单但是没有付款,order-queue队列写入该条信息并计时24小时后如果用户还是未付款状态则移除到死信队列order-dead-queue中。问题来了,如果在这个24小时内,用户取消订单,这时候就要从order-queue队列中移除该条信息。怎么操作呢?原创 2023-04-15 00:24:15 · 3264 阅读 · 8 评论 -
js获取后端返回的时间字符串减去24小时得到所省时间
后端返回时间字符串 orderCreateTime,JS怎么处理用24小时减去这个后端返回的时间字符串 orderCreateTime,最后得到还剩23小时57分这个格式?原创 2023-04-13 21:16:04 · 390 阅读 · 0 评论 -
SpringBoot + RabbitMQ 死信队列中出现Execution of Rabbit message listener failed.的错误解决
如果消息体的序列化格式不正确或者监听器的反序列化配置有误,就可能导致消息无法正确反序列化,从而抛出异常。可以检查消息的序列化格式和监听器的反序列化配置是否正确,以及确保监听器的处理方法能够正确处理反序列化异常。如果在消息处理的过程中发生了业务异常,比如空指针异常或者数组越界异常等,都可能导致消息监听器抛出异常。如果RabbitMQ连接异常,也会导致消息监听器无法正确消费消息。其实最有可能出错的地方就是在你的业务中,业务中可能涉及一些对数据库增删改查操作,一旦业务出现异常,比如空指针异常或者数组越界异常等。原创 2023-04-13 17:00:59 · 1810 阅读 · 0 评论 -
SpringBoot项目中遇到的订单支付超时未支付关闭订单的解决方案
不会占用应用服务器的资源、应用的宕机不会对Redis产生影响、Redis过期时间准确度高。:随时能从队列里面移除实时取消的订单、不会占用应用服务器的资源、异步化处理。:订单量过大的时候查询和修改数据库压力大、服务器内存消耗大、IO瓶颈。:必须要用户查询该条订单信息的时候才会触发。:订单量过大非常消耗Redis服务器资源。:实现简单、适用于小项目、数据量比较少。:需要引入消息中间件。原创 2023-04-12 15:42:13 · 1617 阅读 · 0 评论 -
SpringBoot中WebSocket使用@Autowired注入出现空指针异常java.lang.NullPointerException: null
产生空指针的主要原因由于Spring管理的对象都是单例的(singleton),和 WebSocket(多对象)相冲突。原创 2023-04-06 15:06:34 · 896 阅读 · 0 评论 -
MyBatis缓存为什么会出现脏数据以及可以采取的措施避免脏数据的出现
MyBatis 是一种持久化框架,它提供了一种缓存机制,可以将数据库中的查询结果缓存起来,避免频繁地访问数据库,从而提高应用程序的性能。MyBatis 缓存分为一级缓存和二级缓存。原创 2023-03-23 10:28:30 · 650 阅读 · 0 评论 -
@Scheduled注解 cron属性常用表达式
仅在dayOfMonth中使用,表示最近的工作日(距离指定日期最近的一天,且是工作日)。例如,15W在dayOfMonth字段中表示“本月15号最近的工作日”。:仅在dayOfMonth和dayOfWeek中使用,表示最后一天。例如,L在dayOfMonth字段中表示“每月最后一天”。例如,10-12在hour字段中表示“10点到12点”。:仅在dayOfMonth和dayOfWeek中使用,表示不指定值。例如,0/5在second字段中表示“每隔5秒钟”。例如,*在minute字段中表示“每分钟”。原创 2023-03-22 19:17:02 · 557 阅读 · 0 评论 -
Springboot + UniApp实现WebSocket连接通信聊天功能的简单案例
创建一个 `WebSocketConfig` 类来配置 **WebSocket** 连接。该类应该实现 `WebSocketConfigurer` 接口,并重写 `registerWebSocketHandlers` 方法。在 `registerWebSocketHandlers` 方法中,将 `MyWebSocketHandler` 注册到 `WebSocketHandlerRegistry` 中,并指定处理 **WebSocket** 连接的端点。原创 2023-03-21 16:28:56 · 2631 阅读 · 3 评论 -
【Spring boot】RedisTemplate中String、Hash、List设置过期时间
时间类型:TimeUnitTimeUnit.SECONDS:秒TimeUnit.MINUTES:分TimeUnit.HOURS:时TimeUnit.DAYS:日TimeUnit.MILLISECONDS:毫秒TimeUnit.MILLISECONDS:微秒TimeUnit.NANOSECONDS:纳秒。原创 2023-03-21 12:26:56 · 5653 阅读 · 0 评论 -
UniApp + SpringBoot 实现接入支付宝支付功能和退款功能
进入支付宝开放平台 控制台2、application.yml中添加以下配置4、编写接口支付接口和回调接口三、UniApp前端代码1、配置manifest.json的App模块开启支付四、支付功能展示1、用户确认支付本文仅供学习使用,本文参考博客园作者奔跑的砖头的文章感谢作者的详细说明以及代码 (*╯3╰) (*╯3╰) (*╯3╰)原创 2023-03-14 23:26:12 · 6786 阅读 · 1 评论 -
uniapp上传base64到SpringBoot中实现base64转图片保存遇到的问题【Illegal base64 character d】
APP端上传图片,使用base64转图片工具类的时候出现异常保存图片失败。而H5端却不会出现报错。原创 2023-03-12 10:53:00 · 800 阅读 · 0 评论 -
SpringBoot+Vue项目中遇到Not allowed to load local resource图片路径问题的两种解决方案(在后端映射本地路径或将图片转base64返回给前端)
SpringBoot+Vue项目中遇到Not allowed to load local resource图片路径问题的两种解决方案(在后端映射本地路径或将图片转base64返回给前端)原创 2023-02-17 16:12:28 · 4966 阅读 · 0 评论 -
SpringBoot中的@PathVariable注解 @RequestParam注解 @RequestBody注解 超级详细用法
这个时候就不能用@RequestParam获取了只能用@requestBody Map param获取。@RequestParam 一般用于GET请求或者POST请求。就可以用@RequestParam获取里面的参数了!@RequestBody 一般用于实体类来接收数据。中请求的时候需要设置请求头!如果不设置的话默认是。@PathVariable 一般用于GET请求。原创 2023-02-06 16:37:22 · 1114 阅读 · 0 评论 -
maven打包springboot项目的jar包的时候出现报错There are test failures.
There are test failures.Please refer to /Users/2cy/my_idea_project/git_project/wechat-applet-development-boot/wechat-applet-development-boot-front/target/surefire-reports for the individual test results.Please refer to dump files (if any exist) [date].dum原创 2022-10-14 12:16:44 · 516 阅读 · 0 评论 -
Invalid bound statement (not found): com.ckm.yangle.uniuserlogin.mapper.UniUserLoginMapper.XXX报错
- 扫描src/main/java下所有xx.xml文件 --> < resource > < directory > src/main/java < includes > < include > **/*.xml原创 2023-02-05 15:18:43 · 162 阅读 · 0 评论 -
SpringBoot中认证和授权学习笔记
用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保证在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制。用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的sesssion_id 存放到 cookie 中,这样用户客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数据,以此完成用户的合法校验,当用户退出系统或session过期销毁时,客户端的session_id也就无效了。基于session的认证方式由Servl原创 2022-06-21 10:25:58 · 2539 阅读 · 0 评论