- 博客(6)
- 收藏
- 关注
原创 SpringBoot 接口幂等性实现的 4 种方案
一、什么是幂等性 二、什么是接口幂等性 三、为什么需要实现幂等性 四、引入幂等性后对系统的影响 五、Restful API 接口的幂等性 六、如何实现幂等性 方案一:数据库唯一主键 方案二:数据库乐观锁 方案三:防重 Token 令牌 方案四、下游传递唯一序列号 七、实现接口幂等示例 1、Maven 引入相关依赖 2、配置连接 Redis 的参数 3、创建与验证 Token 工具类 4、创建测试的 Controller 类 5、创建 SpringBoot 启动类 6、写测试类进行测试 八、最后总结 系统环境
2021-03-12 15:33:35
233
原创 关于模糊查询的一些问题
mysql 进行模糊查询时,可使用内部函数 instr,替代传统的 like 方式,并且速度更快。 instr(field, str) 函数,第一个参数 field 是字段,第二个参数 str 是要查询的串,返回串 str 的位置,没找到就是0 先看以前用like方式的代码: <select id="queryList" parameterType="com.ccb.inm.system.uass.entity.SysDataGroup" resultMap="SysDataGroupResultM
2020-12-30 11:19:06
423
原创 用redis实现点赞功能
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。 点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。 至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂时设了两个小时。 项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。 文章分四
2020-12-18 14:56:53
2765
2
原创 Hash Map遍历方式及性能分析
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。 本文先从 HashMap 的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析 HashMap 各种遍历方式的优势与不足 ,本文主要内容如下图所示: HashMap 遍历 HashMap 遍历从大的方向来说,可分为以下 4 类: 迭代器(Iterator)方式遍历; For Each 方式遍历; Lambda 表达式遍历(JDK 1.8+); Streams
2020-12-08 13:45:43
167
原创 如何处理重复并发请求
对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。 重复的场景有可能是: 黑客拦截了请求,重放 前端/客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了。 网关重发 本文讨论的是如何在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范畴。 利用唯一请求编号去重 你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重
2020-12-07 17:19:08
618
原创 JDK8新特性--用stream流将String转数组
传参ids为用,分开的字符串 String[] sysModuleIds = ids.split(","); List list = Arrays.stream(sysModuleIds) .map(s ->Long.parseLong(s.trim())).collect(Collectors.toList()); Long[] modIds = new Long[list.size()]; modIds = (Lon
2020-11-17 09:57:31
1479
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅