buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

上一页 1 2 3 4 5 6 ··· 22 下一页

2025年6月10日 #

告别@Data的“一刀切”:深入理解Lombok的精准控制艺术

摘要: “你也许习惯了使用 lombok的 @Data 注解,来为POJO生成getter&setter。不过,你是否注意到,在有些情况下,例如,内部类POJO并不需要暴露getter&setter,再例如,一些builder模式的POJO可能只需要暴露getter不需要暴露setter。” 阅读全文

posted @ 2025-06-10 20:15 buguge 阅读(104) 评论(0) 推荐(0)

2025年6月5日 #

上层应用如何为其所依赖的基础SDK里的静态属性赋值?

摘要: 我们的系统对商户暴露了RestAPI,供合作商户以API的形式接入。为了提高合作商户侧API接入的开发效率,我编写了一个SDK。 下面 ClientApiUtils是这个SDK一个工具类,封装了API数据加解密、API数字签名的工具方法。这些工具方法都是静态方法。在这个 ClientApiUtils 阅读全文

posted @ 2025-06-05 09:45 buguge 阅读(69) 评论(0) 推荐(0)

2025年5月27日 #

一个Mybatisplus组件扫描不当引起的bug:弄巧成拙,认真的锅,自我怀疑

摘要: 有时呢,后来证明,我的认真,反而让我犯了错。一些努力和实践带来了一些负面影响,然后我要为我的“认真”付出代价。当然,我始终认为这些是应该做的,应该致力于做。当然,有时候,也难免自我怀疑、自我否定。人大概就是在不断地自我摸索、自我怀疑、自我否定中成长吧! 阅读全文

posted @ 2025-05-27 09:04 buguge 阅读(65) 评论(0) 推荐(0)

2025年5月20日 #

代码易读性实践

摘要: 🍀 I care about details like this. 下面6行代码,是在给一个转账对象进行赋值操作,其中包括3个转出账户的属性,和3个转入账户的属性。在易读性方面,需要做一个调整,你看出来了吗? transferOrder.setOutMerId(**); transferOrder 阅读全文

posted @ 2025-05-20 11:26 buguge 阅读(38) 评论(0) 推荐(0)

2025年4月28日 #

开窍了!如何为缓存工具类(CacheUtil中的static方法)定义interface(下)

摘要: 职责相同的2个工具类里都是static方法,基于OOP的程序设计思想,我如何为这2个工具类抽取共同的interface? 阅读全文

posted @ 2025-04-28 09:12 buguge 阅读(128) 评论(2) 推荐(0)

开窍了!如何为缓存工具类(CacheUtil中的static方法)定义interface(上)

摘要: 职责相同的2个工具类里都是static方法,基于OOP的程序设计思想,我如何为这2个工具类抽取共同的interface? 阅读全文

posted @ 2025-04-28 09:11 buguge 阅读(93) 评论(0) 推荐(0)

2025年4月24日 #

关于BigDecimal的除法运算,注意2个表达式 :`orderAmt.divide(divisor).setScale(2, roundingMode)` 与 `orderAmt.divide(divisor, 2, roundingMode)`

摘要: 别用错。用错可能就会邂逅bug~ 阅读全文

posted @ 2025-04-24 14:00 buguge 阅读(289) 评论(0) 推荐(0)

2025年4月22日 #

小重构,大收益!技术重构实践:如何优雅升级老旧接口

摘要: 小重构,大收益!技术重构实践:如何优雅升级老旧接口 重构格言:"优秀系统不是设计出来的,而是通过持续重构演进而来的。" —— Martin Fowler《重构:改善既有代码的设计》 阅读全文

posted @ 2025-04-22 21:19 buguge 阅读(125) 评论(0) 推荐(0)

2025年4月21日 #

lexer(词法分析器)与 parser(语法分析器)

摘要: 在编程语言解析和编译过程中,词法分析器(Lexer)和语法分析器(Parser)是两个核心组件,它们协同工作将原始输入(如JSON字符串、代码文件)转换为结构化数据(如对象、抽象语法树)。 Lexer(词法分析器) Lexer(词法分析器)是编程语言处理中的核心工具,负责将源代码转换为一系列词法单元 阅读全文

posted @ 2025-04-21 16:05 buguge 阅读(646) 评论(0) 推荐(0)

FastJSON 对 `Integer` 类型的编解码(序列化和反序列化)

摘要: FastJSON 对 Integer 类型的编解码(序列化和反序列化)是通过内置的 IntegerCodec 类实现的。FastJSON 在初始化时,会通过 ParserConfig 和 SerializeConfig 自动默认注册该编解码器。 阅读全文

posted @ 2025-04-21 15:24 buguge 阅读(207) 评论(0) 推荐(0)

2025年4月20日 #

AI都深度思考了,人却不思考了...

摘要: 在了解Fastjson编解码Integer数字时,曹小三同学让DeepSeek“深度思考”生成了一些testcase。下面是DeepSeek提供的JUnit5测试代码。 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSO 阅读全文

posted @ 2025-04-20 12:03 buguge 阅读(161) 评论(0) 推荐(0)

2025年4月5日 #

代码 “歪楼”:Money 类在程序里的离奇 “旅程”

摘要: 原文:https://www.cnblogs.com/buguge/p/18763748#_label0 以下是与豆包的dialog↓ $ 请将这段话以诙谐的方式来表达出来 宝子们,今儿必须吐槽下咱程序里这段代码,简直要把我笑不活了! 系统公共包里有个Money类,它有fen()和yuan()两个方 阅读全文

posted @ 2025-04-05 19:15 buguge 阅读(76) 评论(0) 推荐(0)

2025年3月30日 #

恕我直言,你不懂开发

摘要: 恕我直言,你不懂开发 "任何一个傻瓜都能写出计算机可以理解的代码,唯有能写出人类容易理解的代码的,才是优秀的程序员。" 阅读全文

posted @ 2025-03-30 22:45 buguge 阅读(33) 评论(0) 推荐(0)

如你所期,DataIdNameVO 来了!

摘要: 小改动,大收益!站在宏观的角度,利用OOP设计思想,来不断重构、调优系统,使之可持续发展。当然,这首先需要我们具备这样的能力 和 意识! 阅读全文

posted @ 2025-03-30 10:39 buguge 阅读(69) 评论(0) 推荐(0)

2025年2月27日 #

如何精准控制业务合同到期后不再发生业务?还是邻家系统做得好!

摘要: 为解决定时任务无法精准控制合同有效期的问题,提出在`contactIsEffective`方法中增加对`expiredTime`的实时检查。此方案类似于缓存技术中的惰性删除策略,简单且高效。 阅读全文

posted @ 2025-02-27 22:59 buguge 阅读(53) 评论(0) 推荐(0)

缓存过期的惰性删除(Lazy Deletion)策略

摘要: 缓存过期 - 惰性删除(Lazy Deletion)是一种用于处理缓存过期的策略,它在读取缓存数据时才去判断缓存项是否过期,如果过期则将其删除并返回空值,而不是在缓存项过期的瞬间就立即进行删除操作。以下从原理、优缺点、适用场景、实现示例几个方面为你详细介绍: 原理 在采用惰性删除策略的缓存系统中,为 阅读全文

posted @ 2025-02-27 22:33 buguge 阅读(120) 评论(0) 推荐(0)

一则修复数据的case,来看什么是*解决问题要彻底*

摘要: 我司年久不修的商旅系统,今天突然遇到一个问题,程序执行的一个sql时出现数据类型转换异常。 经排查,这是一个多表join的sql。 select ... from t_enterprise ent join t_passenger psg on ent.ent_id = psg.ent_id whe 阅读全文

posted @ 2025-02-27 21:59 buguge 阅读(76) 评论(0) 推荐(0)

2025年2月20日 #

Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)

摘要: 程序中有如下entity类-LevyPaymentFlow @Data @TableName(value = "levy_payment_flow", autoResultMap = true) public class LevyPaymentFlow implements Serializable 阅读全文

posted @ 2025-02-20 15:20 buguge 阅读(74) 评论(0) 推荐(0)

2025年2月14日 #

【研发笔记250214】do what you do

摘要: do what you do. 开发团队里曾经一个中级开发水平的小伙因为KPI不达标而被优化。离职前小伙跟我说:“战哥,我觉得咱们这儿的氛围特别好!”,他接着解释:“你看昨天你觉得我把’联调时间‘命名成’joint_debug_time‘不合适,我立即就按你说的改了。你觉得我那个model定义不符合 阅读全文

posted @ 2025-02-14 10:16 buguge 阅读(42) 评论(0) 推荐(0)

2025年2月10日 #

【注意】sql语句where条件中的数据类型不一致,不仅存在性能问题,还会有数据准确性方面的bug...

摘要: 隐式类型转换规则 MySQL 在进行比较操作时,如果比较双方的数据类型不一致,通常会尝试将其中一个数据类型转换为另一个数据类型,以便进行比较。 对于 select * from t_order where order_no = 1538808276987285507 ,当 order_no 为 va 阅读全文

posted @ 2025-02-10 22:32 buguge 阅读(176) 评论(0) 推荐(0)

2025年1月16日 #

状态机幂等

摘要: 与版本号乐观锁相比,有所不同的是,使用状态机幂等,可以不用事先查询数据。 阅读全文

posted @ 2025-01-16 21:37 buguge 阅读(124) 评论(0) 推荐(0)

2025年1月14日 #

【研发笔记20251114】技术自信 & 不因纠结于细节而放弃本该做的事情

摘要: 技术自信 我们要拥有技术自信! 我们许多同学,是缺乏技术自信的。 我们习惯了代码有改动,就提测给测试团队来进行测试验证。 虽说有测试团队,但有些开发改动,我们开发者,凭借我们的专业能力(技术能力),可以自己确信没有问题,可以不用一律提测。 例如:重命名一个底层工具类的public static方法, 阅读全文

posted @ 2025-01-14 22:44 buguge 阅读(83) 评论(0) 推荐(0)

2025年1月13日 #

【研发笔记250113】功利性人际边界

摘要: 功利性人际边界 蛇年将至,岁末之际,开发组计划组织聚餐。上周一,我的搭档ligan同学拉了一个聚餐的临时微信群,周知大家,将在1月13日晚去单位附近的八斗鸡欢聚一堂。从上周五我就想到,要通过微信单独通知一个同学————一个即将离职的同学,他叫yaoxchao。yaoxchao同学因为工作考核未过关, 阅读全文

posted @ 2025-01-13 14:49 buguge 阅读(151) 评论(1) 推荐(0)

2025年1月7日 #

来了,资金类交易业务(如电商交易、支付结算)中,经常提到的Money类!

摘要: 资金类交易业务中 经常提到的Money类,大家了解一下。 了解了Money类,就会对资金类业务如电商交易、支付更了解。 阅读全文

posted @ 2025-01-07 15:24 buguge 阅读(344) 评论(2) 推荐(0)

2024年12月27日 #

浅谈分布式锁的常用实现

摘要: 序言 在单机系统里,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即基于 mutex(互斥锁),当某个线程获取到这个资源后,就需要对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在 Java 中 synchronized/Lock 等。 如今 阅读全文

posted @ 2024-12-27 18:09 buguge 阅读(115) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 ··· 22 下一页