从角色过滤到可审计授权:单体系统数据权限设计复盘与演进
从角色过滤到可审计授权:单体系统数据权限设计复盘与演进
|
从角色过滤到可审计授权:单体系统数据权限设计复盘与演进脱敏说明:本文基于一个单体业务系统的真实代码结构整理,不展示客户信息、合作方名称、内部账号、表名和接口地址。文中的“业务记录”“来源”“执行人员”“团队负责人”均为泛化称呼。我这个数据权限不是项目一开始就被完整设计出来的,一开始业务非常简单,后续
从 50 字段订单表到可演进订单领域:一次基于真实代码的 DDD 重构分析
从 50 字段订单表到可演进订单领域:一次基于真实代码的 DDD 重构分析
|
本文基于本人在负责项目订单模块进行分析。目标是尝试分析如果用 DDD 重构,在保留现有单体架构的前提下,是否能够解决订单模型职责混杂、状态流转分散,以及渠道回调幂等边界不清的问题。一、问题不是“订单表字段多”,而是变化没有边界在多数业务系统中,订单都会逐渐变复杂:客户资料、地址、产品、配送、来源渠道
BigDecimal 类使用过程中的四个常见陷阱,请别再这么使用了!
BigDecimal 类使用过程中的四个常见陷阱,请别再这么使用了!
|
陷阱 1:使用 double 构造函数在日常使用 Java 中进行业务计算,尤其是涉及货币,金额时,建议使用 BigDecimal 类,以避免使用 float 或 double 等原始类型所遇到的浮点数运算精度问题。请看下面这个例子:BigDecimal x = new BigDecimal(0.1
彻底搞懂 CompletableFuture 的 6 个“隐藏坑”!
彻底搞懂 CompletableFuture 的 6 个“隐藏坑”!
|
彻底搞懂 CompletableFuture 的 6 个“隐藏坑”!在日常开发中,CompletableFuture 早已成为我们写异步程序的好帮手。不过,它虽然香,但也容易踩坑。今天我就给大家盘一盘 CompletableFuture 的几个使用误区,附带解决方案与实战代码,让你用得安心、调试不烦
Spring在多线程环境下如何控制事务?
Spring在多线程环境下如何控制事务?
|
面试经典题: 事务方法中新创建的线程是否受 Spring 事务管理?结论:不会。Spring 事务是基于 ThreadLocal 存储事务上下文的,而 ThreadLocal 变量在线程之间 不会共享,所以新线程无法感知当前事务。为什么不会受 Spring 事务管理?Spring 事务的管理依赖 T
Java程序打包为exe可执行文件: jpackage 命令使用
Java程序打包为exe可执行文件: jpackage 命令使用
|
环境准备首先jpackage 命令需要JDK14以上,请自行配置Maven的编译环境,以下图片是配置IDEA的Maven编译环境其次 打包exe需要用一个Maven插件maven-easypackage-plugin<plugin> <groupId&
Spring Boot性能提升的核武器!
Spring Boot性能提升的核武器!
|
虚拟线程是 Java 21 引入的一个新特性,用于简化并发编程。它与传统的操作系统线程相比,具有显著的优势:轻量级:虚拟线程由 JVM 管理,而非操作系统,因此它们的内存占用和创建成本远低于传统线程。理论上,你可以轻松创建数十万甚至更多的虚拟线程。高并发性:虚拟线程能处理更高并发的场景,特别是 I/
Java敏感词检测工具
Java敏感词检测工具
|
Java |
0 评论
一、使用步骤代码开源地址https://github.com/houbb/sensitive-word1)引入 Maven 依赖引入最新的版本即可,见附录开源地址。<dependency>   <groupId>com.github.houbb</groupId>
Springboot快速集成接口加解密
Springboot快速集成接口加解密
|
在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。https://gitee.com/isuperag/rsa-encrypt-body-spring-boot❞项目介绍该项目
基于SpringBoot的高并发场景下请求合并
基于SpringBoot的高并发场景下请求合并
|
前言请求合并到底有什么意义呢?我们来看下图。假设我们3个用户(用户id分别是1、2、3),现在他们都要查询自己的基本信息,请求到服务器,服务器端请求数据库,发出3次请求。我们都知道数据库连接资源是相当宝贵的,那么我们怎么尽可能节省连接资源呢?这里把数据库换成被调用的远程服务,也是同样的道理。我们改变