- 你好,我是宋惠龙,现作为一名软件工程师在北京搬砖。
- 我过往经历以及感兴趣的方向包括不限于web后端/数据库/系统设计。
- 写博客只是为了记录想法、案例、笔记,当然我也在逐步提升写博客的「技术」。
- 👏🏻👏🏻👏🏻再次欢迎!
理解RocketMQ架构
我们从顶层视角逐步拆解一下RocketMQ的架构组件设计。 ...
我的管理工作实践
今年进入新的方向后,有幸负责了一部分团队的管理,借以本文记录我的一些认知与实践。 ...
复杂对象序列化失败问题一例
踩坑一则复杂对象(领域实体)序列化失败问题。 归因:测试环境Redis连接挂掉,同时对DDD领域实体序列化,JSON.toJSON() 封装了异常,导致关键异常栈丢失,后经过正向逆向分析找到了问题原因与解法。 ...
LC 501. 二叉搜索树中的众数
LC 501. 二叉搜索树中的众数,在计数解法的基础上,利用二叉搜索树中序遍历有序的特性优化空间复杂度。 ...
RocketMQ事务消息原理解析
RocketMQ事务消息是柔性分布式事务的一种具体实现方案,本文,我们来理解一下,为什么事务消息能够保障分布式节点间数据的一致性。 ...
聊聊月租酒店项目中的交易系统设计
本文我会尝试聊一下去年我主R做月租酒店项目时的一些核心设计要点。 酒店项目是我来贝壳后主R的第一个比较完整的从零到一的项目,涵盖了对外交互、房源、签约、交易、结算等诸多领域,项目中有比较多有意思且有挑战的设计,对于当时的我来说,能够全链路承接整个项目也是一大挑战。 本文聚焦的重点是其中的签约、支付、外部下单模块,我统称这些模块为交易模块。 ...
理解AQS架构
本文尝试归纳整理作者所了解的AQS架构设计原理。首先从解决的问题场景出发,再到AQS核心设计方案,最后会引入一些底层能力的简要说明。 ...
算法案例:给定一堆货物,计算最少货车数
本文记录最近与朋友聊过的算法实例:给定一堆带重量的货物,计算最少需要的货车数量。 ...
使用分布式锁解决接口互斥性、幂等性问题两例
针对近期处理的两例并发场景引发的「互斥性」「幂等性」问题进行过程分析、输出系统方案。 ...
gitlab MR被revert后,功能分支无法再次merge到主干分支,怎么办?
需求分支首先通过MR合并到了master分支,部署后发现有问题,于是回滚代码,操作了MR处的revert,后面修复了问题,使用原功能分支提新的MR时,发现变更处是空的,本文来解决此类无法合并情形的问题。 ...
排查mybatis ognl解析参数值并发设置字段访问性报错问题一例
年后负责一个比较老的服务,报警不少,今天排查的这个问题也只有在老版本MyBatis下才有机会复现,值此宝贵的线上问题机会,记录一番。 低版本MyBatis中,在高并发情况下,有概率遇到解析private内部类集合解析抛错的情况。 我通过分析异常栈+搜索+分析源码的方式解决了此问题。 ...
排查 ConcurrentModificationException 问题一例
排查一则生产环境报 ConcurrentModificationException 的问题。 在相对复杂的工业代码中(绕来绕去,不是简单的一个函数调用),排查「简单问题」也不是一件简单的事。 ...
关于IO我所知道的一切都在这里了
本文尝试归纳整理作者所了解的IO基础模式、IO架构通用模式,尽可能一篇文章提供IO相关的全景图以及方案优化对比。 ...
Linux零拷贝图例一览
此文统一整理操作系统零拷贝相关图例。 ...
算法案例:计算酒店月租价
本文记录做酒店业务系统开发时遇到的算法实例:计算酒店产品月租价。 ...
使用策略模式优化支付回调代码一例
本文使用策略模式和模板方法模式来优化处理支付回调的代码结构,记录设计模式应用实例。 ...
aviator动态创建类过多导致元空间内存泄漏 问题一例
协助同事排查处理了一则aviator使用不当导致元空间内存泄漏的问题,个人觉得是一则很有价值的案例,因此观摩学习一波。 使用aviator不启用表达式缓存的情况下,会分别在编译、解析阶段根据时间戳使用asm动态生成class,生成过多class就会撑爆元空间,也就是内存泄漏。 除此之外,在分析过程中还发现了aviator低版本的另一个泄漏问题,非常适合用来巩固jvm相关知识。 ...
mysql datetime 秒精度问题一例
排查了一则MySQL中datetime写入 诡异进位 的问题,通过查阅官方文档的方式找到了问题原因。顺带巩固下基础知识。 ...
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. ...
LeetCode 2544. Alternating Digit Sum
Find mathematical patterns through observing test cases. ...