Springboot
文章平均质量分 65
堕落年代
以信念为盾,以执行为枪,以实力为先!
展开
-
SpringBoot使用MQTT协议简述
【摘要】 本文介绍Spring Boot与MQTT协议集成方法,通过Eclipse Paho实现硬件设备通信。主要步骤包括: 添加spring-integration-mqtt依赖 配置MQTT连接参数(broker地址、凭证等) 创建配置类设置客户端工厂和消息处理器 使用@MessagingGateway接口发送指令 通过MessageDrivenChannelAdapter订阅硬件消息 提供REST接口触发消息发送 关键特性包括异步通信、QoS等级设置和多主题订阅,适用于物联网硬件控制场景。原创 2025-05-29 18:39:54 · 662 阅读 · 0 评论 -
CSRF防范歪招
通过强制使用请求头携带Token并避免将其存入Cookie,可有效防御CSRF攻击。但需结合Token动态生成与验证、HTTPS加密、XSS防护等多层安全机制,才能构建全面的防护体系。原创 2025-05-13 16:06:35 · 363 阅读 · 0 评论 -
SpringSecurity当中的CSRF防范详解
文章摘要: CSRF(跨站请求伪造)攻击通过利用用户已登录的会话,诱导浏览器自动发送恶意请求,从而在用户不知情的情况下执行敏感操作。攻击成功的关键在于用户已登录受信任网站、网站未启用CSRF防护以及请求参数可预测。防御措施包括使用CSRF Token验证、设置SameSite Cookie属性以及检查Referer来源。Spring Security默认启用CSRF防护,通过生成和验证CSRF Token来阻断攻击。未启用CSRF防护可能导致数据泄露、资金损失等严重后果。开发者应根据业务场景选择合适的防护策原创 2025-05-13 15:50:05 · 952 阅读 · 0 评论 -
Spring Security与SaToken的对比
Spring Security与SaToken是两种流行的安全框架,分别适用于不同的应用场景。Spring Security作为企业级安全框架,功能全面,支持OAuth2、JWT等多种认证方式,适合复杂权限模型和高安全性要求的项目,但其学习曲线陡峭,配置复杂。SaToken则是一款轻量级权限认证框架,API简洁,开发效率高,适合中小型项目和前后端分离架构,但其功能深度和社区资源相对有限。选择时,若项目复杂度高且团队熟悉Spring生态,优先选择Spring Security;若项目周期紧张且需快速实现基础安原创 2025-05-13 15:23:45 · 913 阅读 · 0 评论 -
SpringBoot的单体和分布式的任务架构
在Spring Boot生态中,定时任务框架的选择需根据架构类型(单体或分布式)和功能需求进行权衡。对于单体架构,Spring Task和ScheduledExecutorService是轻量级且易用的选择,适合单机部署和简单任务逻辑。Spring Task通过注解快速配置任务,但缺乏动态修改和分布式协调能力;ScheduledExecutorService支持多线程并发,但不支持Cron表达式和任务持久化。对于分布式架构,Quartz、Elastic-Job和XXL-JOB提供了高可用、任务分片和故障转移原创 2025-05-13 14:09:19 · 1263 阅读 · 0 评论 -
SpringBoot优雅参数检查
可通过组合String message() default "自定义错误消息";Class<?Class<?创建一个通用的响应类(如ResultVo@Data// 状态码(如 400 表示参数错误)// 错误描述// 错误详情(如具体字段的校验失败信息)// 快速生成失败响应。原创 2025-05-07 16:57:27 · 1035 阅读 · 0 评论 -
HTTP请求当中若用户还没接收到返回数据就离线但服务器资源已经删除的情况
在 HTTP 请求中,若客户端在处理过程中断开连接,可能导致用户未收到数据而服务器已删除数据的风险。实现了无令牌的通用保障,平衡了系统复杂性和数据安全性,适用于大多数 HTTP 接口场景。通过以上设计,可有效解决「客户端断开导致数据丢失」的问题,平衡业务安全性和系统复杂度。:HTTP 是无状态协议,服务器无法感知客户端是否真正接收到了响应数据。将数据存储为临时文件,客户端通过一次性链接下载,确保删除前数据可达。:数据被删除后,客户端无法重新获取,导致业务中断。:删除前备份到归档存储,极端情况下可手动恢复。原创 2025-04-10 17:38:13 · 709 阅读 · 0 评论 -
SpringBoot论AOP当中后置操作当中用户请求是否已经被用户接收到
无论请求是否真正到达客户端,只要目标方法执行完成(包括正常返回或抛出异常),AOP 的后置通知(• 因为 AOP 的后置通知会在方法返回后、Spring 处理 HTTP 响应前执行。• 这意味着资源释放时,客户端可能尚未接收到响应数据(网络传输需要时间)应在方法结束后立即释放(通过 AOP 后置通知),无需等待客户端接收。• 使用异步回调机制(如 WebSocket 确认)• 但此时请求可能未被客户端完整接收(因异常中断)• 或设计幂等的资源释放逻辑(允许重复释放):方法结束即触发(包括异常)原创 2025-04-10 17:22:22 · 561 阅读 · 0 评论 -
SpringBoot使用Redisson时候进行Redis事务回滚
Redisson 在 Spring Boot 中支持事务回滚正确配置。使用注解标记事务方法。避免跨资源(如 Redis + 数据库)的本地事务误用,必要时升级为分布式事务方案。原创 2025-04-10 13:17:48 · 349 阅读 · 0 评论 -
vue3里面使用Socketjs之后打包完访问的时候报socketStore-BmspPEpN.js:1 WebSocket connection to
其实就是得要SpringBoot的框架里面有个代理Socketjs的包里面就有上面的,代理到里面就可以了,我这里的主要的原因是我把打包的包放到了resource下面的静态资源文件夹里面但是还是要代理webrtcSocketConnect到SpringBoot里面就可以了。如果仍有问题,请提供 Nginx 和 Spring Boot 的日志片段。后端未启用 SockJS 支持,或未正确配置 WebSocket 端点。路径,或未处理 WebSocket 的协议升级请求。后,解压生成的 JAR 文件,检查路径。原创 2025-03-24 08:28:37 · 764 阅读 · 0 评论 -
Springboot是怎么保证WebSocket的链接对象是唯一的
TCP/IP层:四元组唯一性。WebSocket协议:独立握手与会话。Servlet容器:为每个连接创建原生会话实例。Spring抽象:封装容器会话为独立的对象。ID生成:通过UUID或唯一标识符确保逻辑唯一性。原创 2025-03-17 09:51:14 · 993 阅读 · 0 评论 -
SpringBoot当中当主线程使用异步处理其他流程的时候需要获取上下文会出现什么情况详解
当主线程(如 HTTP 请求线程)调用异步方法时,会立即将任务提交给线程池,主线程继续执行后续逻辑并直接返回响应,:主线程结束后,HTTP 请求上下文销毁,异步线程无法直接获取请求头。时,会立刻收到响应,而异步任务(如耗时 5 秒的操作)在后台执行。:异步方法抛出的异常默认不会传播到主线程,需通过。,但此线程池无限制创建新线程,可能导致资源耗尽。:异步任务提交后,主线程不等待直接响应客户端。显式指定线程池,避免默认线程池的缺陷。监控任务堆积情况,动态调整线程池参数。装饰任务,子线程可继承主线程的。原创 2025-03-13 16:33:40 · 688 阅读 · 0 评论 -
使用MySQL的Binlog来同步数据到ES当中
通过该方案可实现毫秒级延迟的数据同步,在日均亿级数据量的生产环境中验证过稳定性。:ROW模式记录数据变更事件(INSERT/UPDATE/DELETE),提供原子性变更流。• 在Kafka中使用Dynamic Topic Routing(按库表名生成Topic):伪装MySQL Slave订阅Binlog(本文以Canal 1.1.6为例):Canal通过MySQL Slave协议订阅Binlog。• 重试策略:指数退避重试 + 死信队列记录失败数据。• 批量提交:每500条或1秒间隔触发Bulk操作。原创 2025-03-12 12:53:46 · 1076 阅读 · 0 评论 -
SpringBoot下无节制和数据库建立连接的问题和处理方法
Tomcat 默认最大线程数 200,若每个请求占用一个数据库连接,当连接池耗尽时新请求将进入等待状态(HTTP 503 错误):MySQL 默认最大连接数 151(可调整至 10,000+),但无限制的连接增长会导致连接池队列积压,最终触发。:大量活跃连接同时操作相同表时,行锁和表锁的等待时间呈指数级增长(实测 500 并发时锁等待时间可达 1.2 秒):未及时释放的连接会导致事务长时间未提交,引发死锁率上升(MySQL 默认。:每个连接至少占用 256KB 内存(:未关闭的连接会持续占用资源,原创 2025-03-12 09:50:19 · 620 阅读 · 0 评论 -
SpringBoot的并行SQL任务并完成所有任务之后返回操作
通过上述方案,原本串行的多个数据库查询可并行执行,总耗时由最慢的查询决定,而非各查询耗时的累加。实际应用中需根据数据量、数据库负载和业务一致性要求选择合适的实现方式。• 线程池隔离避免资源竞争(如 IO 密集型与 CPU 密集型任务分开)• 拒绝策略需根据业务场景定制(如日志记录或降级处理)• 多数据源场景需为每个数据源单独配置事务管理器。方法不在事务上下文中执行,需显式配置。类中(Spring 代理机制限制)• 生产环境需添加超时控制(如。• 避免嵌套回调,提升代码可读性。实现任务同步等待,并通过。原创 2025-03-12 09:40:06 · 523 阅读 · 0 评论 -
Thymeleaf 核心语法
•${...}•:访问模型(Model)中的属性或执行表达式。•。原创 2025-03-11 11:28:57 · 1029 阅读 · 0 评论 -
SpringBoot的请求参数的接受的方式和FastAPI的请求参数接受接受参数的区别
•查询参数:直接声明为函数参数,或通过获取。•路径参数:在路径中声明(如/{id}),并在函数参数中定义。•JSON 请求体:使用 Pydantic 模型(如item: Item•表单数据:使用Form(...)。•文件上传:使用File(...)和UploadFile。•原始请求数据:通过Request对象直接访问。FastAPI 的语法更简洁且类型安全,结合 Pydantic 模型可以高效处理复杂请求。原创 2025-03-10 08:30:39 · 575 阅读 · 0 评论 -
Springboot在服务端或者jar里面可以进行仿FTP服务器进行本地文件的存储
自我的总结原创 2023-03-30 20:55:37 · 170 阅读 · 0 评论 -
SpringBoot简单使用Stomp
下面是一个使用 STOMP 协议的 Spring Boot 应用示例,包含三个 WebSocket 端点。每个端点都有特定的功能。代码中包含中文注释,帮助你理解每个部分的作用。原创 2024-12-24 16:49:54 · 757 阅读 · 0 评论 -
Spring当中为什么在使用AOP的时候ProceedingJoinPoint as first parameter is allowed only in @Around advices
可以很好地满足获取方法参数的需求,如果只需要获取参数而不需要控制方法执行,完全可以使用。可以用于获取目标方法的参数值,但不能控制方法的执行(如暂停或继续方法执行)。如果你的需求需要控制目标方法的执行,并同时访问方法的参数,可以使用。如果你不需要控制方法的执行,仅仅想获取参数,可以用。通知的参数,用于拦截并控制目标方法的执行。如果你的需求是获取方法参数,可以直接通过。是 Spring AOP 中特定于。原创 2024-12-04 15:17:31 · 454 阅读 · 0 评论 -
MySQL当中utf8mb4和utf8mb3区别
utf8mb3(MySQL 中的utf8)最多支持 3 字节字符,不能处理 4 字节字符(如表情符号、某些 Unicode 字符)。utf8mb4是 MySQL 完整的 UTF-8 实现,最多支持 4 字节字符,能处理所有 Unicode 字符,包括表情符号和其他特殊字符。utf8mb4是utf8mb3的超集,因此兼容utf8mb3,但提供更多的字符支持。因此,建议在现代应用中使用utf8mb4,以确保能够支持所有 Unicode 字符。原创 2024-11-30 18:01:10 · 1532 阅读 · 0 评论 -
在SpringBoot当中设置MySQL兼容unicode编码
如果不是utf8mb4,这意味着该列没有正确设置为utf8mb4。你需要将该列的字符集更改为utf8mb4。原创 2024-11-30 17:53:46 · 529 阅读 · 0 评论 -
SpringBoot使用Springdoc OpenAPI来做Swagger文档
如果你使用的是较新版本的Spring Boot,建议使用Springdoc OpenAPI,因为它对新特性支持更好。如果项目较旧并且已经在使用Springfox,可以继续使用,但长期来看建议考虑迁移到Springdoc。原创 2024-10-16 19:50:24 · 779 阅读 · 0 评论 -
redis的序列化问题
这些问题全是因为使用Json的框架的时候有时候不同的json的框架不允许没有空的构造器,所以你可以将这个对象实例化为一个spring(JSON.toJSONString(object)))对象然后使用JSON.parseObject((String) val, object.class)来回显就可以很好的解决问题。原创 2024-06-19 16:35:17 · 395 阅读 · 0 评论 -
Springboot使用Websocket的时候调取IOC管理的Bean报空指针异常
创建自定义的} }} }} }import org} }} }} }import org} }} }} }@Override在注解中指定// 由 Spring 管理的 Bean @OnMessage public String onMsg(String text) throws IOException {原创 2024-06-18 14:38:53 · 1254 阅读 · 0 评论 -
Reddisson的常用的yml配置选项
以下是Redisson的所有配置选项,用YAML格式表示,并加上详细的注释。这些配置项涵盖了Redisson的各种模式,包括单节点模式、集群模式、哨兵模式、主从模式、云模式等。原创 2024-06-03 19:28:02 · 1845 阅读 · 0 评论 -
IDEA使用Maven打包项目的所有的依赖
打包Springboot的依赖原创 2024-05-27 21:12:10 · 767 阅读 · 0 评论 -
Springboot自定义实体类读取nacos的当中的配置
直接@Autowired来注入java的pojo然后就可以直接读取对应的值了。原创 2024-01-08 16:24:09 · 871 阅读 · 0 评论 -
Springboot基于注解的AOP操作
切面、切点使用添加注释使用结果解释这段代码是在一个Spring AOP的切面(Aspect)中,用于拦截方法并处理相关信息。我将逐步解释每一部分的功能和目的:获取方法参数:这行代码从切点(JoinPoint)获取当前拦截方法的参数值数组。 数组包含了方法调用时传递的所有参数。获取方法签名:这里首先从切点获取方法的签名信息,然后将其转换为 ,这是因为我们需要访问特定于方法的属性。获取参数名称和方法:这段代码获取了当前拦截方法的所有参数名称和方法本身的反射对象。 包含参数的名称,而原创 2024-01-06 15:45:52 · 1009 阅读 · 0 评论 -
Springboot整合阿里巴巴SMS
要确保用户有这个权限还要确保组要有这个权限讲反了要先保证组有这个权限然后保证用户有这个权限,然后就可以使用这个用户的权限的key来调取api了。原创 2023-12-13 18:22:48 · 367 阅读 · 0 评论 -
com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
【代码】com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING。原创 2023-12-12 16:42:28 · 3788 阅读 · 0 评论 -
Docker中安装并配置阿里巴巴的Sentinel控制台
如果您使用的是Spring Cloud,可以通过在您的应用程序的配置文件中添加相关的Sentinel配置来整合Sentinel。确保Linux系统时间与项目运行环境的时间一致,以便Sentinel能正确监控数据。使用Docker拉取Sentinel的最新镜像。这样配置后,Sentinel将在客户端首次调用时初始化,并开始向控制台发送心跳包。以上步骤提供了一个基本的指南来设置Sentinel控制台。中的内容汇总得出的。您可以访问这些链接以获取更详细的信息和进阶配置。来访问Sentinel监控平台。原创 2023-12-11 11:13:45 · 1237 阅读 · 1 评论 -
sa-token报未能获取有效的上下文处理器原因
cn.dev33.satoken.exception.InvalidContextException: 未能获取有效的上下文处理器\r\n\tat cn.dev33.satoken.context.SaTokenContextDefaultImpl.getStorage原创 2023-09-26 11:33:02 · 6082 阅读 · 3 评论 -
Elasticsearch整合springboot基础教程
持续更新Elasticsearch教程原创 2023-12-06 18:53:34 · 73 阅读 · 0 评论 -
SaToken利用Redis做持久化
SaToken开发每次都要重新登录,利用redis做缓存示实现持久化原创 2023-12-05 00:11:12 · 1470 阅读 · 3 评论 -
Ruoyi报‘com.ruoyi.system.api.RemoteLogService‘ that could not be found.
***************************APPLICATION FAILED TO START***************************Description:Field remoteLogService in com.ruoyi.common.log.service.AsyncLogService required a bean of type 'com.ruoyi.system.api.RemoteLogService' that could not be foun原创 2023-11-28 14:44:05 · 3129 阅读 · 3 评论 -
nacos鉴权报invalid username or password
invalid username or password报错或者nacos配置鉴权有问题原创 2023-11-21 17:56:14 · 535 阅读 · 0 评论 -
SpringCloud使用bootstrap配置Nacos的注册中心和配置中心
SpringCloud使用bootstrap连接Nacos的配置中心原创 2023-10-30 14:18:10 · 1813 阅读 · 0 评论 -
@SessionAttributes和@ModelAttribute的用法
注解,并且模型属性名与会话属性名相同,Spring会自动从会话中获取对应的值,并注入到方法的参数中。类型来获取会话中的属性值之外,还可以使用其他方式来获取这些值。对象则需要显式地使用其API来获取属性值。选择合适的方式取决于个人偏好和代码结构。无论使用哪种方式,都可以在控制器中获取会话属性的值。注解可以直接标注在方法参数上,用于获取会话属性的值。注解可以简化代码,使得代码更加清晰和易读。对象,并通过它来获取会话属性的值。可以直接在方法参数中声明。如果在会话属性上使用了。注解时,除了可以使用。原创 2023-07-26 12:08:29 · 211 阅读 · 0 评论 -
SpringBoot请求转发的方式
SpringBoot进行请求转发原创 2023-07-26 11:51:26 · 6009 阅读 · 0 评论
分享