工作总结
文章平均质量分 62
LittleWhite9527
工作总结用
展开
-
ThreadLocal及InheritableThreadLocal基本原理及注意项
ThreadLocal是如何做到在线程中存储本地变量的。InheritableThreadLocal又是怎么做到继承机制的。原创 2022-06-24 19:06:07 · 1371 阅读 · 2 评论 -
MySQL InnoDB锁机制及锁超时案例分析
当表有多个索引的时候,不同的事务可以用不同的索引来锁定不同的行。另外,不论是使用主键索引,唯一索引或者普通索引,InnoDB都会使用行锁来对数据加锁。但即便在条件中使用了索引字段,具体是否使用索引,使用哪个索引,是由MySQL执行计划来判断的。原创 2021-12-02 10:23:12 · 844 阅读 · 0 评论 -
MySQL查询时区分大小写
更新表字段编码格式alter table `tableName`to character set utf8mb4 COLLATE utf8mb4_bin;COLLATEutf8mb4_bin 的意义为:*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的,如COLLATEutf8mb4_bin*_cs: case sensitive collation,区分大小写,如 COLLATEutf8mb4_cs*_ci: case...原创 2021-11-09 16:59:35 · 1623 阅读 · 0 评论 -
Java Map移除值为空的元素
map.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));原创 2021-11-02 10:50:14 · 2783 阅读 · 1 评论 -
关于redis做秒杀库存扣减的生产实践及思考
近期组员接手了一个领券的业务,涉及到了对券批次库存的扣减操作,在多次尝试优化后压测起来仍有一些性能问题,由于接近deadline,于是自己也尝试上手优化了一下。使我对日常在论坛看到的redis秒杀库存的实现有了进一步的认知。...原创 2021-09-06 16:05:59 · 3706 阅读 · 0 评论 -
记一次FastJson使用不当导致频繁Full GC排查
具体原因为:https://www.cnblogs.com/liqipeng/p/11665889.html与这篇文章的情况类似,可以直接按这篇文章的解决方案进行调整,此处只记录下排查过程。 近期,测试压测某个查询接口时,发现压测的开始一段时间TPS比较稳定,在压测进行多了几次后,TPS开始出现巨大波动。 进服务器利用TOP命令查看机器基本情况,发现业务层CPU的占用已经达到93%,但数据库层的CPU占用却仅在25%,说明数据库压力并不大,而这个业务只是单纯的查询用户是否处于黑名单状态...原创 2020-08-22 20:51:08 · 1734 阅读 · 1 评论 -
代码中使用redis锁和Spring事务时需注意的点
前几天,有同事过来请教,为啥明明加了redis锁,也有在代码里做了插入的幂等校验,同一个入参并发时为啥还是插入了两条。 首先,这种重复性的数据可以在数据库用唯一索引做。但这不是我们此次讨论的重点。我们需要讨论的是,为啥redis锁不起作用了。 review了代码,发现他的redis锁用了注解AOP进行实现。并且在方法上也用了@Transactional事务注解。所以这是个对AOP的执行顺序和事务的理解不到位的问题。(代码中注册时会判断手机号是否已注册) 我们知道,在事务未...原创 2020-06-25 13:18:04 · 2189 阅读 · 4 评论 -
@Transaction(rollbackfor=Exception.class)的原因
rollbackfor默认是RuntimeException,声明为Exception.class可以扩大异常回滚范围。原创 2020-06-22 21:43:15 · 336 阅读 · 0 评论 -
记一次利用TOP命令排查压测问题经过
梦开始的地方 近期,负责的接口开始上压测环境,第一次接触压测,对能压到多少TPS并没有多少概念。然而结果还是十分出乎意料,“单接口TPS100+左右,并发50,100,200的结果基本稳定,接口请求有点慢,而且CPU占用率很异常,四核CPU都跑满了,不是很合理,排查下什么原因。”测试如是说。 询问了下组长上一版的时候其他接口的压测结果,组长回复不至于这么慢。于是开始排查自己代码的问题。排查代码问题 Review代码。首先想,是不是自己的代码有问题,将代码发给有压测经验...原创 2020-06-14 21:38:59 · 1223 阅读 · 2 评论 -
MySQL事务问题排查语句
查询当前事务隔离级别select @@tx_isolation;查询当前执行中事务select * from information_schema.innodb_trx;*************************** 1. row *************************** trx_id: 113963 ...原创 2020-06-13 16:03:53 · 791 阅读 · 0 评论 -
关于交易类业务的一些注意点
交易系统往往要和多个系统进行对接,目前对接过程很难做到事务的控制操作(我成功了,我回调了你,你执行失败了)。所以要做到失败的补偿:重试、失败通知、失败记录、订单号记录、完整的日志链跟踪。 其次,是与银行对接的问题:金额到账延迟,失败重试超时,重复请求查询结果超次数,同一业务下多个接口调用无法回滚。像金额到账延迟还不算太大的问题,但像失败重试超时这些,就很容易导致出现大的问题。 失败...原创 2019-09-10 17:01:55 · 386 阅读 · 0 评论