buguge - Keep it simple,stupid

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

导航

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

2025年4月22日 #

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

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

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

2025年4月21日 #

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

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

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

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

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

posted @ 2025-04-21 15:24 buguge 阅读(164) 评论(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 阅读(137) 评论(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 阅读(64) 评论(0) 推荐(0)

2025年3月30日 #

恕我直言,你不懂开发

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

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

如你所期,DataIdNameVO 来了!

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

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

2025年2月27日 #

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

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

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

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

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

posted @ 2025-02-27 22:33 buguge 阅读(89) 评论(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 阅读(65) 评论(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 阅读(62) 评论(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 阅读(26) 评论(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 阅读(134) 评论(0) 推荐(0)

2025年1月16日 #

状态机幂等

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

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

2025年1月14日 #

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

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

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

2025年1月13日 #

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

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

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

2025年1月7日 #

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

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

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

2024年12月27日 #

浅谈分布式锁的常用实现

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

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

2024年12月18日 #

【开发笔记241211】论“俯瞰”的重要性

摘要: 2024.12初 我司零工平台,为合作企业客户提供向税地服务商充值的功能,我们内部叫在线分账。我们的在线分账功能,包括充值、分账、提现、通知上账这几个步骤。具体来讲, ①充值:充值指的是客户将资金转入到我们为客户开通的银行虚户里。一般有两种途径,一种是客户线下自行转入,一种是通过我司平台提供的B2B 阅读全文

posted @ 2024-12-18 10:58 buguge 阅读(40) 评论(0) 推荐(0)

2024年12月17日 #

系统网站登录,如何合规传输用户登录密码?

摘要: 这里要说的是,用户登录密码属于用户隐私数据。首先,隐私数据属于敏感数据,不能明文传输;其次,系统server端不能直接触碰用户密码。 阅读全文

posted @ 2024-12-17 21:42 buguge 阅读(539) 评论(3) 推荐(0)

2024年12月9日 #

API设计之道:从商户ID参数设计 看 对外商户API与内部中台服务 的参数设计理念的差异

摘要: 有思想、知章法,才能做出更好的系统!正如本案例,如果不假思索地在zhongtai-trans的付款查询接口上加上商户id,就有些唐突了。 阅读全文

posted @ 2024-12-09 21:39 buguge 阅读(54) 评论(0) 推荐(0)

2024年11月20日 #

开发一份API接口,需要注意这些,看你做到了几项

摘要: 本文介绍了设计API接口时需注意的关键点,包括数字签名、敏感数据加密与脱敏、限流、参数校验、统一返回与异常处理、请求日志记录、幂等设计、数据量限制、异步处理、参数定义、完整文档及开发者对接SDK等内容,旨在帮助开发者设计出安全、稳定、易维护的API接口。 阅读全文

posted @ 2024-11-20 10:16 buguge 阅读(474) 评论(0) 推荐(1)

2024年11月18日 #

API接口的请求参数要更名,如何保持代码可读性?

摘要: API接口的请求参数要更名,如何保持代码可读性? 接口参数名与程序里定义的model属性名,是完全一致的吗?本文通过案例,来讲述他们之间的联系与区别。 阅读全文

posted @ 2024-11-18 21:26 buguge 阅读(141) 评论(1) 推荐(0)

2024年11月11日 #

发现一肉鸡接口,快来围攻啦~

摘要: 本文开篇以系统登录页面的安全加固实践说起,详细分析了服务端提供的`loginEncryptKey` API 代码存在的问题,如接口对任意用户名返回密钥导致的安全风险,以及在高并发场景下可能引起的Redis缓存穿透问题。针对这些问题,提出了改进措施:首先对接口请求参数进行严格校验,确保用户名合法且存在于系统中;其次,优化加密密钥的生成与获取逻辑,采用预生成密钥池结合自定义哈希算法的方式,减少重复生成密钥的资源消耗。此外,为了适应集群环境,提出了利用Redis哈希表存储密钥和结合本地缓存的解决方案。最后,文章建议将密钥预置于应用配置文件中,简化了集群环境下的数据同步需求。 阅读全文

posted @ 2024-11-11 12:46 buguge 阅读(67) 评论(0) 推荐(1)

2024年11月4日 #

【聚合系统开发专栏】支付请求发起后,回调通知先于同步响应,怎么办?

摘要: 以此类推,有同学可能想到mq,并称使用mq能规避”服务故障“、”服务重启“等某些不稳定因素。 还有同学可能想到分布式锁,在付款请求时加锁,在处理回调时判断锁,使用同步锁机制实现串行处理。 我认为没什么必要,有些小题大做,越简单越好。毕竟,付款终态的变更,不是只靠这次的回调。 看似简单的问题,考验的是综合能力。 阅读全文

posted @ 2024-11-04 20:29 buguge 阅读(206) 评论(4) 推荐(0)

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