自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot接口安全设计-接口限流、防重放攻击与签名验证实战

本文介绍了基于SpringBoot的API安全防护方案,重点阐述了签名机制的设计与实现。签名机制通过appId、timestamp、nonce和MD5加密的sign参数,有效防止接口被恶意调用、参数篡改和重放攻击。核心设计包括:1)签名流程需由调用方后端完成,避免前端暴露密钥;2)通过时间窗口和nonce校验防止重放攻击;3)使用拦截器+注解实现统一验签;4)解决@RequestBody只能读取一次的问题,采用CachedBodyHttpServletRequest包装请求。方案还整合了限流功能,在5分钟内

2025-06-04 17:14:43 873

原创 常见的限流算法有哪些

限流是保护系统稳定性的重要手段,防止系统因突发流量过载而崩溃。常见的限流算法主要包括以下几种,每种算法都有其适用场景和实现方式。根据业务需求选择合适的算法,可以在保护系统的同时,尽可能提高流量的利用率和用户体验。在分布式系统中,单节点限流可能失效,需考虑全局限流。在实际应用中,常根据业务需求结合多种限流算法。精细化限流,高精度控制。削峰填谷,异步处理流量。

2024-12-12 14:23:25 1044

原创 MySql死锁怎么排查

排查死锁时,通过日志和工具分析根因是关键;预防死锁需要合理设计事务和 SQL;解决死锁则可以通过重试、调整操作顺序、分离事务和优化锁的范围等方式。根据具体场景选择合适的手段,才能有效避免和解决死锁问题。

2024-12-11 17:15:37 4733

原创 有什么方法可以在bean加载完之前执行操作

在 Spring 中,可以通过一些特殊的机制在 Bean 加载完成之前执行操作,主要用于在 Bean 实例化、属性注入、初始化之前进行一些自定义处理。

2024-12-09 15:15:25 411

原创 SpringBoot实现异步调用的方法

方法优点缺点。

2024-12-06 11:40:55 2408

原创 SpringBoot返回日期格式化的方法

Bean/*** 自定义日期序列化器*/@Override如果需要局部控制日期格式,推荐使用如果需要全局一致的格式,可以使用配置或如果有复杂需求,使用自定义序列化器更灵活个人建议推荐使用第二种,因为太方便了,另外如果有特殊格式,可以再加@JsonFormat单独注解,会优先以添加了@JsonFormat注解的为准。

2024-12-03 17:47:12 519

原创 本地Windows系统安装Redis及SpringBoot整合Redis

1.下载安装包Redis 官方只提供了 Linux 版本,但社区维护了适用于 Windows 的版本。推荐从以下资源下载:Window下载地址:https://github.com/microsoftarchive/redis/releases2. 解压并配置 Redis解压下载的文件夹,例如解压到 D:\redis3. 启动 Redis 服务直接在解压目录敲击cmd进入1. 手动启动 Redis:在终端中运行以下命令启动 Redis: redis-server.

2024-12-03 15:34:37 1488

原创 SpringBoot+MybatisPlus+HikariCP实现多数据源动态切换

*** 数据库类型枚举*/MASTER("master", "主库"),SLAVE("slave", "从库"),;return msg;

2024-12-02 15:49:59 1492 3

原创 Feign第一次调用为什么会很慢

通过预初始化、缓存DNS解析结果、优化连接池配置、调整超时设置、使用异步调用、开启Feign日志和GZIP压缩等策略,我们可以有效地提高Feign首次调用的性能,从而提升整个微服务架构的响应速度和稳定性。其实这个问题听起来似乎没什么特别的,但是要是深究起来还是挺复杂的,因为我们可以想一下feign做一次rpc调用要经历哪些事情,首先就是feign是跟eureka这种微服务注册中心是有关系的,毕竟你要调用一个服务,那肯定得知道目标服务都部署在哪些机器上,也就是有哪些服务实例,对不对,否则怎么调用啊?

2024-09-10 18:03:29 1187

原创 如何设计高并发系统

如果没有缓存层,那么在高并发下会有许多的重复请求,如A用户查询商品X的详情,B用户也查询商品X的详情,由于针对A用户和B用户商品X的信息是一样的,这样重复请求每次都要从数据库加载,会对数据产生压力,所以我们希望第一次查询之后,后面就不需要再次从数据库拿了,而是直接从缓存中拿商品X的数据,这样降低数据库访问的次数,提升了整体大的性能。经过拆分之后,由原来单体应用对应一个数据库,变成多个微服务对应不同的数据库,这样可以承受更多的流量,如果某个某块的流量过大,我们可以针对这个模块采取一些措施,如集群部署服务。

2024-09-09 17:41:56 1053

原创 SQL 查询详解:连接查询、子查询和聚合函数

本文详细介绍了 SQL 中的连接查询、子查询以及聚合函数的使用方法和应用场景。通过这些知识,您可以更有效地查询和管理数据库数据。在实际应用中,合理使用和优化这些查询方法,可以大大提高数据库操作的性能和效率。SQL 查询详解:连接查询、子查询和聚合函数。

2024-08-23 15:30:40 1312

原创 SQL 如何处理重复数据

处理重复数据是数据库管理中不可避免的一部分。通过本文,你应该了解了如何使用 SQL 查找、删除以及预防重复数据的产生。合理利用 SQL 的功能,可以大大提高数据管理的效率和数据的质量。详解 SQL 如何处理重复数据。

2024-08-23 15:25:14 2762

原创 如何优化 mybatis-plus 的批量插入

稍微总结下我粗略的对比(虽然粗略,但实验结果符合原理层面的理解),如果你想更准确地实验,可以使用JMH,并且测试更多组数(如 5000,10000等)的情况。批量保存方式数据量(条)耗时(ms)单条循环插入1000121011100059927mybatis-plus saveBatch(添加rewtire参数)10002589手动拼接sql10002275100055663jdbc executeBatch(添加rewtire参数)1000324。

2024-08-22 15:48:14 1021

原创 缓存一致性解决方案

对于这种方案,看看就行,反正我是不会用,太 Low 了,风险也不可控。

2024-08-22 14:28:53 751

原创 mq出现消息堆积怎么处理

在Java中处理消息队列MQ的消息堆积问题是一个常见的挑战。以下是几种可以考虑的解决方案:

2024-08-20 17:15:15 2241

空空如也

空空如也

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

TA关注的人

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