RocketMQ事务消息原理解析

RocketMQ事务消息是柔性分布式事务的一种具体实现方案,本文,我们来理解一下,为什么事务消息能够保障分布式节点间数据的一致性。 ...

October 7, 2024 · 5 min · DragonSong
月租酒店核心模块:房源接入、签约、支付、对账、结算、券抵扣

聊聊月租酒店项目中的交易系统设计

本文我会尝试聊一下去年我主R做月租酒店项目时的一些核心设计要点。 酒店项目是我来贝壳后主R的第一个比较完整的从零到一的项目,涵盖了对外交互、房源、签约、交易、结算等诸多领域,项目中有比较多有意思且有挑战的设计,对于当时的我来说,能够全链路承接整个项目也是一大挑战。 本文聚焦的重点是其中的签约、支付、外部下单模块,我统称这些模块为交易模块。 ...

October 6, 2024 · 9 min · DragonSong
AQS架构的原型:管程模型

理解AQS架构

本文尝试归纳整理作者所了解的AQS架构设计原理。首先从解决的问题场景出发,再到AQS核心设计方案,最后会引入一些底层能力的简要说明。 ...

September 17, 2024 · 6 min · DragonSong

算法案例:给定一堆货物,计算最少货车数

本文记录最近与朋友聊过的算法实例:给定一堆带重量的货物,计算最少需要的货车数量。 ...

September 16, 2024 · 5 min · DragonSong

使用分布式锁解决接口互斥性、幂等性问题两例

针对近期处理的两例并发场景引发的「互斥性」「幂等性」问题进行过程分析、输出系统方案。 ...

March 20, 2024 · 4 min · DragonSong
本文案例涉及git操作

gitlab MR被revert后,功能分支无法再次merge到主干分支,怎么办?

需求分支首先通过MR合并到了master分支,部署后发现有问题,于是回滚代码,操作了MR处的revert,后面修复了问题,使用原功能分支提新的MR时,发现变更处是空的,本文来解决此类无法合并情形的问题。 ...

March 12, 2024 · 3 min · DragonSong
并发异常涉及流程

排查mybatis ognl解析参数值并发设置字段访问性报错问题一例

年后负责一个比较老的服务,报警不少,今天排查的这个问题也只有在老版本MyBatis下才有机会复现,值此宝贵的线上问题机会,记录一番。 低版本MyBatis中,在高并发情况下,有概率遇到解析private内部类集合解析抛错的情况。 我通过分析异常栈+搜索+分析源码的方式解决了此问题。 ...

March 1, 2024 · 4 min · DragonSong
并发修改异常涉及流程

排查 ConcurrentModificationException 问题一例

排查一则生产环境报 ConcurrentModificationException 的问题。 在相对复杂的工业代码中(绕来绕去,不是简单的一个函数调用),排查「简单问题」也不是一件简单的事。 ...

February 21, 2024 · 3 min · DragonSong
IO高性能常用手段:NIO、多路复用、池化、异步

关于IO我所知道的一切都在这里了

本文尝试归纳整理作者所了解的IO基础模式、IO架构通用模式,尽可能一篇文章提供IO相关的全景图以及方案优化对比。 ...

February 6, 2024 · 6 min · DragonSong

Linux零拷贝图例一览

此文统一整理操作系统零拷贝相关图例。 ...

December 15, 2023 · 1 min · DragonSong
求解连续30天有库存的酒店产品价格和

算法案例:计算酒店月租价

本文记录做酒店业务系统开发时遇到的算法实例:计算酒店产品月租价。 ...

November 22, 2023 · 3 min · DragonSong
重构后的代码结构

使用策略模式优化支付回调代码一例

本文使用策略模式和模板方法模式来优化处理支付回调的代码结构,记录设计模式应用实例。 ...

October 18, 2023 · 3 min · DragonSong
元空间从泄漏转为稳定

aviator动态创建类过多导致元空间内存泄漏 问题一例

协助同事排查处理了一则aviator使用不当导致元空间内存泄漏的问题,个人觉得是一则很有价值的案例,因此观摩学习一波。 使用aviator不启用表达式缓存的情况下,会分别在编译、解析阶段根据时间戳使用asm动态生成class,生成过多class就会撑爆元空间,也就是内存泄漏。 除此之外,在分析过程中还发现了aviator低版本的另一个泄漏问题,非常适合用来巩固jvm相关知识。 ...

September 15, 2023 · 6 min · DragonSong

mysql datetime 秒精度问题一例

排查了一则MySQL中datetime写入 诡异进位 的问题,通过查阅官方文档的方式找到了问题原因。顺带巩固下基础知识。 ...

August 10, 2023 · 2 min · DragonSong

troubleshooting mybatis-plus parsing whitespaces in SQL

Since 3.4.1 (less or more), mybatis-plus bring in a bug: when parsing extra whitespaces in SQL, it throws net.sf.jsqlparser.parser.ParseException. I solved the problem by finding relevant discussions and resources to gain insights into the issue. ...

August 7, 2023 · 1 min · DragonSong

LeetCode 2544. Alternating Digit Sum

Find mathematical patterns through observing test cases. ...

August 5, 2023 · 1 min · DragonSong

使用jackson反序列化未忽略未知字段时报错 `UnrecognizedPropertyException` 问题一例

踩坑,Redis缓存使用Jackson2JsonRedisSerializer管理序列化,未设置disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES),上线中新代码写入了新的缓存字段结构,旧代码读到新结构报错UnrecognizedPropertyException。 ...

June 27, 2023 · 2 min · DragonSong

LC 2671. 频率跟踪器

LC 2671. 频率跟踪器,一道中规中矩的数据结构题目,解法平平无奇,却让我学到了「阅读理解」的重要性。 ...

May 12, 2023 · 3 min · DragonSong

踩坑:macOS默认浏览器设置后跳转有误

记录一则macOS设置默认浏览器失效的例子。通过尝试解决了问题。 ...

March 31, 2023 · 1 min · DragonSong

踩坑更改了javaagent路径导致idea无法启动问题一例

踩坑,新机器装开发环境,因手动变更了已配置好的idea启动依赖的agent路径,导致jetbrains全系产品无法启动。 ...

March 24, 2023 · 2 min · DragonSong