摘要:场景:sby-component-mybatisplus 组件中自定义 MyBatis 枚举处理器,从"同包同名 shadow 覆盖"重构为"setDefaultEnumTypeHandler 官方扩展点注册"。本文记录两种方案的原理、对比与关于健壮性代码的思考。 一、背景:为什么需要自定义“myb
阅读全文
摘要:1) 一个让我熬夜排查的 Bug 某天凌晨两点,线上告警:用户 Token 频繁过期,大量请求被踢回登录页。 查了一圈,发现 Redis 里 Token 的 TTL 设置有问题——本该存活 1 小时的 Token,实际只活了 1 分钟。顺着调用链找到罪魁祸首: CacheUtils.set("tok
阅读全文
摘要:一、问题现场 当需要异步执行一个任务时,开发者随手在方法内部 new 一个线程池: public class AsyncTaskService { public void sendNotification(String message) { // 每次调用都创建全新的线程池 ExecutorServ
阅读全文
摘要:一、问题现场:一段看似“正常”的工具代码 在很多项目的 HTTP 工具类里,你可能会看到这样的写法: public static String doPost(Map<String, String> map, String url) throws HttpTransportException { lo
阅读全文
摘要:引言:三个“密码”,三种含义 在Java安全开发中,有三个极易混淆的术语:Crypto、Cipher和Password。它们的中文翻译都与“密码”有关,但在计算机科学中各自承担着截然不同的角色。 Crypto:密码学的总称,是一个领域或工具箱 Cipher:加密/解密的具体算法或工具 Passwor
阅读全文
摘要:Java heap space
GC overhead limit exceeded
Metaspace
Unable to create new native thread
阅读全文
摘要:如下方法,@UnAuthToken 注解代表无需授权访问。 这个方法逻辑很简单,入参“key”是一个md5串,程序根据这个“key”去redis拿到数据,经过转换后返回。 每次调用这个方法,意味着 ①会调redis ②会记操作日志 /** * 企业首页忘记登录密码通过key获取当前用户名 * * @
阅读全文
摘要:如何将WHERE create_time ORDER BY id的低效查询,优化为极致性能的WHERE id ORDER BY id查询? § 引言:一个经典的性能困境 在开发订单流水、记账流水、操作日志、监控数据等按时间分页查询的应用时,下面这条SQL非常常见,但在数据量增长后极易成为性能瓶颈:
阅读全文
摘要:在创建 `TimedCache` 后立即调用 `schedulePrune()`,以确保过期数据会被及时清理,避免内存泄漏问题。
阅读全文
摘要:本文以fastjson-1.2.83版本中 EnumDeserializer 类的源码,来解释其工作原理和实现细节。 🎯 类结构概览 EnumDeserializer 是 FastJSON 用于将 JSON 反序列化为枚举类型的核心类。它支持: 通过枚举名称(Enum.name())反序列化 通过
阅读全文
摘要:① 编程式事务(TransactionTemplate 或 PlatformTransactionManager) vs 声明式事务(@Transactional 注解)。
② 声明式事务管理中应慎用setRollbackOnly(),避免UnexpectedRollbackException异常。
阅读全文
摘要:Maven Goal:强调"要完成什么"(声明式);Ant Target:强调"要执行什么"(命令式)
阅读全文
摘要:本笔记记录的这个案例非常经典,也在展示一种优化原则:有时,巧妙地利用现有资源,比盲目增加索引更能体现技术深度。 📌 问题定位:一个典型的排序慢SQL 在巡检中发现一条慢查询,其目的是获取签约信息表中最新创建的10条记录: SELECT id, batch_no, order_no, ... --
阅读全文
摘要:我们是SpringBoot+Mybatisplus项目。我的一个工具方法中,需要获取entity对象对应数据表的 “更新时间” 字段名(update_time 或 updateTime)。 代码完成后,考虑到其中的Mybatisplus调用及java反射机制所产生的性能损耗,我使用Map来缓存数据关
阅读全文
摘要:0x01. 秘钥数据特征 以我们系统的数据表levy_merchant_relation为例,该数据表存储的是商户服务商关联关系。下面是与之对应的 LevyMerchantRelation 实体类结构,除了包括商户与服务商相关字段,还包括HTTP接口通信的秘钥和口令,如RSA公私钥、加密秘钥。 Le
阅读全文
摘要:建议在定义主键时,养成显式指定 @TableId 的 type 的习惯。这可以避免因依赖全局默认配置(可能被不同人无意中修改)而导致的意外错误,使代码更加健壮和可读。
阅读全文
摘要:在Java中实现类似C#的 int.TryParse方法,确实能带来更安全、更优雅的编码体验(指数字转换)。
阅读全文
摘要:本文主要讲新规下互联网平台从业人员的劳务报酬所得的计算方法。
本文关键词:个人所得(个人收入);劳务报酬所得;互联网平台劳务报酬所得;个人所得税(本文简称“个税”);
阅读全文
摘要:先看下面代码截图: 然后看下面log: 1) 观察第一个红框中的两行log,16:40:02.446 - 16:40:01.964 = 482ms, 这个时间程序在做什么? 有经验的开发者会分析:可能是服务器GC过长、内存占用过大,导致业务处理能力下降。 2) 再来看看sql执行耗时 16:40:0
阅读全文