业务场景 一条数据需要针对某个字段做特殊的扩展处理,比如:为用户设置某些特定的标签(标签包含排序、代码、名字) 方案对比 多字段存储(不推荐) 在主表中新增tag_sort、tage_code、tag_name,多个标签使用特殊字符分割且存储顺序需要一一对应,示例: tag_sort=1,2,3 tage_code=tall,rich,cool t…
什么是分布式锁 分布式锁是一种用于在分布式系统中协调多个客户端对共享资源的访问的同步机制。目标是确保在分布式环境中,同一时间只有一个客户端能够访问或修改某个共享资源,从而避免数据不一致或冲突。 分布式锁的使用场景 资源分配:确保共享资源(如数据库连接、线程池)在分配时不会被多个客户端同时占用。 数据同步:保证多个客户端在访问或修改同一数据项时的一致…
简介 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体[对象持久化](https://baike.baidu.com/item/对象持久化/7316192)到数据库中。 ([来源:百度百科](https://baike.bai…
前言 上一篇文章JPA的简单使用 讲了JPA的基本使用方法,也实现了基本的审计日志,但只记录了操作人、操作时间、修改人、修改时间,不太人性化。比如:具体修改了什么信息,误删除的话有没有办法恢复,修改的数据是否能回滚,这些问题在系统实际使用过程中都会遇到。那么,对于简单的新增、修改、删除能不能做到以上几点呢?很显然,完全没问题,来,咱们看看简单的实现…
背景 系统调用外部接口获取数据同步至本地库,无法100%同步成功。 问题定位 查看日志后最终定位到是由于 fastjson 工具类解析 json 文件时由于文件过大到导致OOM。单独调用接口后发现返回的数据量达到了300M。 错误信息: java.lang.OutOfMemoryError: Java heap space at com.aliba…
引入依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.4</version> </dependency> <d…
背景 实际工作中两个服务之间的接口调用可能会涉及到文件加密传输的问题,Base64就是其中一种解决方案。 工具类 /** * 参考:https://blog.csdn.net/p812438109/article/details/108370312 */ @Slf4j public class Base64FileUtils { /** * 根据文…
简单示例分析 现在有学生表(student)和班级表(school_class),要求同时查询出学生姓名信息及对班级信息,可根据学生姓名或班级姓名查询数据。 字段示例 学生表 字段名说明id主键idstudent_name学生姓名class_id班级id 班级表 字段名说明id主键idclass_name班级名称 SQL实现 select s.st…
背景 日常开发中会经常遇到数据需要下载/导出的情况,如果是比较简单的excel,没有指定特殊格式,借助第三方工具(如:hutool)几行代码即可完成,如果需要生成复杂格式的excel,代码处理起来就非常麻烦,此时可以采用加载模板文件渲染数据的方式实现。 功能实现 简单excel生成 引入依赖 <dependency> <group…