java
文章平均质量分 61
为之
这个作者很懒,什么都没留下…
展开
-
Spring事物注解@Transactional与代码锁冲突原因分析
业务场景如下:用户频繁(疯狂)点击送礼物按钮给主播刷礼物代码实现业务步骤:1.查询礼物金额2.查询用户钱包金额3.查询钱包余额是否充足4.用户钱包减去礼物金额5.主播钱包增加礼物金额代码方案:1.因为涉及金额问题,且操作中需要对用户和主播的钱包都进行相应操作,所以需要使用@Transactional事物注解。2.因用户频繁点击场景,为了防止用户钱包余额校验等金额问题出现异常,需要使用分布式锁或synchronized单机锁进行安全处理。为什么要设计的这么严格:如果原创 2021-02-09 15:01:21 · 678 阅读 · 0 评论 -
提升工作幸福指数工具类 实用redisKey管理工具类
问题:实际工作中经常遇到要使用redis配合的业务场景,那么就避免不了定义redis的key,在实际业务中为了区分key经常需要对key进行业务拼接,如 user:info:id:123 。遇到上述情况常规方案 伪代码如下:// 定义常量redisKeypublic static final String USER_INFO_ID= "user:info:id:";// 将常量与变量拼接String redisKey =USER_INFO_ID+"123";// 使用拼接好的redis..原创 2020-12-23 17:18:11 · 299 阅读 · 0 评论 -
Java实现 接口请求频率限制方案源码
实际工作中在某些业务场景会遇到一个问题,用户疯狂点击某个按钮功能导致接口在短时间内被重复请求多次,且这些重复请求在业务上是无效的请求,这个问题即会导致后端出现大量重复无效或错误的数据,也会对后端服务器等造成影响。解决方案需要从服务端的部署方式出发1.集群部署(如果nginx等转发服务器采用按IP或SESSION_ID等方式的转发策略也可使用单机部署的方案):集群部署的情况推荐使用redis分布式锁进行处理,具体代码方案参考之前的文章:Java+RedisTemplate 实现redis分布式锁原创 2020-09-15 20:26:19 · 4326 阅读 · 2 评论 -
split字符串拆分踩坑记录(字符串拆分后数组下标越界解决方案)
问题:使用split拆分String字符串后拿到的数组发现一个问题-如果拆分的字符串根据拆分规则拆分后,后面的未知上如果没有值,则split返回的数组会自动忽略它们。demo:代码第四行返回的数组长度是4,如果是批量处理String操作,使用array[4]时就会报错下标越界问题String temp = "1,2,3,4,5";System.out.println(temp.split(",").length); //5temp = "1,2,3,4,";System.out.printl原创 2020-05-26 14:43:25 · 3909 阅读 · 0 评论