- 博客(44)
- 收藏
- 关注
原创 Mac 上安装多版本的 JDK 且实现 自由切换
3.下载要安装的jdk版本,修改环境变量( cat ~/.bash_profile)1.可以通过查看以下目录中的内容,确认当前已经安装的 jdk 版本。4.执行jdk8和jdk17来切换版本。2.命令行查看 jdk 的安装路径。
2025-02-25 21:21:38
814
原创 Spring Boot整合SSE实时通信
除了基本的数据推送外,SSE还允许服务器发送特定类型的事件,这样客户端就可以根据不同的事件类型做出相应的反应。
2025-01-10 09:20:34
1239
原创 spring boot IDEA启动两个端口服务nginx负载
输入-Dserver.port=8153。在service里面管理多个端口。设置新的服务的端口号。
2025-01-03 16:25:39
839
原创 实现 Spring Boot 动态定时任务
除了上面的借助cron表达式的方法,还有另一种触发器,区别于CronTrigger触发器,该触发器可随意设置循环间隔时间,不像cron表达式只能定义小于等于间隔59秒。定时任务执行时间配置文件:task-config.ini: 将其放置在项目的。
2024-12-02 09:56:19
429
原创 MyBatis实现三级树查询
在实际项目开发中,树形结构的数据查询是一个非常常见的需求。比如组织架构、菜单管理、地区选择等场景都需要处理树形数据。
2024-11-28 15:00:27
715
原创 Grafana监控PostgreSQL
1、验证是否有编译pg_stat_statements扩展。4、验证是否有pg_stat_statements扩展。1、下载postgres_exporter部署包。2、编译pg_stat_statements扩展。5、添加pg_stat_statements扩展。1、Prometheus采集postgres数据。3、启动postgres_exporter服务。3、修改postgresql配置文件。2.验证是否采集成功。
2024-11-21 09:55:39
771
原创 SpringBoot 实战:文件上传之秒传、断点续传、分片上传
2.分片上传:分片上传则是将一个大文件分割成多个小块分别上传,最后再由服务器合并成完整的文件。3.断点续传:指在网络不稳定或者用户主动中断上传后,能够从上次中断的地方继续上传,而不需要重新开始整个过程。这对于大文件上传尤为重要,因为它可以有效防止因网络问题导致的上传失败,同时也能节约用户的流量和时间。分片上传关键是在前端对文件切片,比如一个 10MB 的文件切为 10 份,每份 1MB。前端先发送一个请求,检查要上传的文件在服务端是否已经存在,如果存在,目前大小是多少。第 0 片,从 0 开始,一共是。
2024-11-19 10:10:20
838
原创 Linux服务器自动备份MySQL数据库的实现
通过上述步骤,你可以在Linux服务器上设置一个简单的Bash脚本来自动备份MySQL数据库,并将其压缩存储,同时删除过期的备份文件。这不仅提高了数据的安全性,还简化了日常的管理任务。
2024-11-18 17:09:52
646
原创 async/await 函数到底要不要加 try catch
然后 getUserInfo 函数中断执行,这是符合逻辑的,对于有依赖关系的接口,中断执行可以避免程序崩溃,这里唯一的问题是 try catch 貌似占据了太多行数,如果每个接口都写的话看起来略显冗余。总结:从用户体验上来看,我觉得 try catch 是最好的,逻辑直观、符合同步编程思维,控制台不会暴露。分析:执行后 catch 可以正常捕获异常,但是程序没有中断,返回值。, 所以如果这样写的话,就需要对返回值进行非空校验,分析:执行后会在 catch 里捕获。这样异常时就应该中断执行才对;
2024-11-18 10:47:45
589
原创 SpringBoot 整合 Kafka 实现千万级数据异步处理
新增一个spring.kafka.consumer.batch.concurrency变量,用来设置并发数,通过这个参数我们可以指定几个线程来实现消费。当我们每天凌晨会将 1000 多万条数据进行统计计算,然后把业绩数据推送给前端展示,以便可以看到昨天的业绩数据。
2024-11-16 09:22:12
717
原创 SpringBoot 实现 PDF 添加水印
1.使用 Apache PDFBox 库1.1添加 PDFBox 依赖1.2添加水印PDDocument document = PDDocument.load(new File("原始.pdf"));
2024-11-11 11:20:18
693
原创 使用分布式锁和synchronized锁区别
Redisson 是一个用于 Redis 的 Java 客户端,它提供了多种高级功能,包括分布式锁。当你在集群环境下需要确保某段代码在同一时间只能由一个节点执行时,应该使用 Redisson 提供的分布式锁,如。具体来说,当用户下单时,需要确保同一商品的库存不会被多个用户同时扣减,从而导致库存数据不一致。为了实现这一点,你可以使用分布式锁来确保同一商品的库存更新操作在同一时间只能由一个线程执行。这意味着如果你的应用程序运行在多个 JVM 实例上(例如,在一个集群环境中),那么。
2024-11-06 17:31:42
525
原创 Vue 的 keep-alive
keep-alive是一个内置组件,用于缓存组件实例,从而提高应用的性能。当包裹动态组件时,会缓存不活跃的组件实例,而不是销毁它们。这使得当组件重新激活时,可以保留其状态,避免重新渲染,从而提升用户体验和性能。
2024-11-06 15:50:14
448
原创 @Async注解提升Spring Boot项目中API接口并发能力
相反,程序会继续执行其他任务,当异步操作完成时,会调用一个预先定义好的回调函数来处理结果。总结:主程序在异步调用之后,主程序并不会理会这三个函数是否执行完成了,由于没有其他需要执行的内容,所以程序就自动结束了,导致了不完整或是没有输出任务相关内容的情况。例如,第一次调用中,任务一和任务三的执行时间都是 784 毫秒,而任务二的执行时间是 6176 毫秒,因此任务一和任务三先完成,任务二最后完成。支持链式调用,可以在一个异步操作完成后立即执行另一个异步操作,形成一个异步操作链。
2024-11-05 14:54:53
1922
原创 SpringBoot 自定义注解来实现动态切换数据源
/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。
2024-11-04 17:55:45
1649
原创 Nginx配置详解
Nginx是一个高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3代理服务。Nginx以其高并发连接处理能力、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。
2024-11-04 14:52:56
218
原创 使用 .forEach与for...of 循环区别
具体看到一篇文章,然后记录一下,在JavaScript和TypeScript开发中,数组迭代是一项常见任务。许多开发者习惯性地使用.forEach方法,因为它简单直观。但是,ES6引入的for...of循环提供了更强大、更灵活的迭代方式。.forEach1. 更好的异步处理在处理异步操作时,for...of循环表现出色。.forEach方法不能很好地与配合使用,因为它不能原生处理Promise。.forEach这段代码不会等待每个fetch操作完成就开始下一个,可能导致竞态条件和意外结果。
2024-11-04 11:17:08
637
原创 将 Nginx 配置为使用 systemctl 管理
确保你的 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf 已经正确配置。你可以根据需要编辑这个文件,然后重新加载 Nginx 服务以应用更改。Nginx 的日志文件通常位于 /usr/local/nginx/logs/ 目录下。通过以上步骤,你可以将 Nginx 配置为使用 systemctl 管理,从而方便地启动、停止和管理 Nginx 服务。保存并关闭文件后,重新加载 Systemd 配置以使新的服务单元文件生效。6. 停止和重新加载 Nginx 服务。
2024-11-04 09:34:04
1369
原创 SpringBoot 中实现 MyBatis 多数据源配置(主从分离)
根据数据源的配置,我们在 src/main/resources/mapper/db1 和 src/main/resources/mapper/db2 下分别创建 XML 文件,在cn.xxx.xxx.mapper.db1 和 cn.xxx.xxx.mapper.db2 定义相应的 Mapper 接口。在现代应用程序中,数据库会根据业务用途进行分库,因此后端程序需要连接多个数据库,以满足不同的业务需求。本文将为读者介绍如何在 Spring Boot 中实现 MyBatis 的多数据源配置。
2024-11-01 17:03:51
431
原创 MybatisPlus批量插入百万条数据
做到了一个复制用户的功能,说白了就是将用户表里要的用户内容复制到另一张表里,看到以前写的就是for循环插入,体验就不是非常好,有时候还超时报错,所以看到MybatisPlus有个批量插入的那就来试试效果!
2024-11-01 11:33:02
1154
原创 用canvas实现一个刮刮卡效果
值可以帮助你达到这个效果,它会在新绘制的内容与已有内容重叠的地方移除已有内容,从而产生一种“擦除”的视觉效果。以(x, y) 为圆心,以r 为半径,从 startAngle 弧度开始到endAngle弧度结束。anticlosewise 是布尔值,true 表示逆时针,false 表示顺时针(默认是顺时针)。注意:这里的度数都是弧度;0 弧度是指的 x 轴正方向。要创建一个刮刮卡效果,你可以使用HTML5的。元素和JavaScript来实现。
2024-10-31 17:02:24
527
原创 获取请求响应的进度百分比弹窗封装
这个方法接收一个对象,我们用到里面的两个属性,total: 表示正在执行的底层流程的工作总量,也就是总响应数据的长度,loaded: 表示底层流程已经执行的工作总量,也就是已经加载的响应数据的长度。通过这两个属性,就可以计算出来响应进度的百分比。但是fetch没有监听函数,要换另一种方法:先通过请求头获取到 content-length 总长度,再用数据流的API body.getReader 获取响应体已经加载好的长度,通过这两个数据,也可以计算出来响应进度百分比。实现的,但它在设计上参考了。
2024-10-30 17:05:52
559
原创 Vue3实现前端打印功能
市面上常用的有 vue3-print-nb 、print-js 等插件。vue3 前端打印功能主要通过插件来实现。main.js 全局配置。
2024-10-28 16:51:45
437
原创 Vue3自定义的Hooks就是爽
在日常的开发功能的时候,我们需要在 data 、methods、computed 之间来回找代码。如果功能非常复杂, data 、methods、computed 等里面的代码就会非常长,不好维护。它允许你将复杂的逻辑提取出来,形成独立的函数,然后在不同的组件中复用。这样可以避免在多个组件中重复编写相同的逻辑,提高代码的可读性和可维护性。后来 Vue3 出现了,它提供的编程方式是。创建一个监听浏览器窗口大小变化的 Hooks。创建一个简单的计数器 Hooks。Vue2 提供的编程方式是。
2024-10-28 16:22:47
441
原创 vue2 +leaflet平台添加天地图方法
需要什么样的底图可以更换这个链接:http://t1.tianditu.com/vec_c/wmts?layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=这里就是申请到的key。注:2019年1月1日起天地图API及服务接口调用都需要获得开发授权,需要申请Key。
2024-10-28 14:57:48
911
原创 Nginx 是怎么解决跨域问题的
Access-Control-Allow-Credentials:确定是否允许跨源使用 cookie。Access-Control-Allow-Origin:用于建立跨域请求允许的来源(在预检请求和跨域场景中的实际请求期间进行验证)。Access-Control-Allow-Methods:指定跨源请求允许的请求方法或 HTTP 动词(仅在预检请求期间验证)。Access-Control-Allow-Headers:允许在跨源请求期间包含特定标头信息字段(仅在预检请求期间进行验证)。
2024-10-28 11:16:28
1011
原创 Spring Boot 封装统一返回结果信息以及全局异常处理
在全局异常处理器中添加对自定义异常的处理。return Response.failure(500, "内部服务器错误: " + e.getMessage());User user = new User("张三", 30);throw new BusinessException(400, "错误请求");
2024-10-28 09:31:31
462
原创 VideoLingo,一款视频创作者的得力助手
最近特别火的VideoLingo出现,它是一款专为视频创作者设计的开源自动化工具,融合了自然语言处理(NLP)和大型语言模型(LLM)技术,提供从视频字幕生成到声音克隆配音的一站式服务。下载网址:各种语言可以转换为字幕,而且是中文字幕。
2024-10-25 08:47:14
1558
原创 Spring boot接口防抖
其主要目的是防止在短时间内因多次触发相同事件而导致不必要的处理开销,比如频繁的数据库查询、API调用等。接口防抖通常用于处理用户输入、按钮点击等场景,以提高系统的性能和响应速度。防抖是一种减少高频触发的机制,在一定时间内,连续的多次操作只会触发一次。后端防抖主要用于避免短时间内的重复请求。
2024-10-24 16:38:01
336
原创 双层for循环查数据多消耗性能
例如:有一个user数据,和 UserArticle数据,就想找出每一个用户在UserArticle里对应的内容是多少,一下就会想到双层for循环遍历,先遍历user然后找到每一个用户id 去遍历UserArticle判断对比找出内容。在日常的开发过程中,难免会遇到有两个list数据,第一:先要遍历出第一个来,获取到的每一个id然后去遍历第二个对比找对应的内容。双层for相当于一个一个去对比找,就非常耗时,那如果弄成像数据库一样通过索引的方式,会不会更快一点。:Lombok 会为你的类生成一个。
2024-10-22 11:22:31
316
原创 scss修改el-table的背景颜色,鼠标悬浮颜色,高亮选中颜色
el-table原有的颜色是白色,需要换成其他颜色,就可以用scss的穿透来修改。
2024-10-21 17:23:28
246
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人