buguge - Keep it simple,stupid

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

导航

随笔分类 -  设计思想

1 2 3 4 5 ··· 7 下一页

聚合系统设计-批付交易中的“双批次ID设计(or双批次号设计)” // 双批次ID设计:在复杂业务场景下构建清晰、可维护的应用系统
摘要:有如下业务场景:接收到商户批量请求的交易单,先进行落库,由于唯一的订单号是数据库生成的,所以程序需要再从库里把这批数据查出来。 请合理设计数据表结构,并用java示意代码帮我实现这个代码逻辑。 阅读全文

posted @ 2025-10-14 09:48 buguge 阅读(39) 评论(0) 推荐(0)

经典三层架构项目(3-tier architecture)中应用依赖倒置原则(DIP)的理性权衡
摘要:1 DIP核心思想与三层架构概述 依赖倒置原则(Dependency Inversion Principle,DIP)作为SOLID原则中的重要组成部分,其核心主张是高层模块不应依赖低层模块,两者都应依赖于抽象;抽象不应依赖细节,细节应该依赖抽象。 在经典三层架构(表示层-业务逻辑层-数据访问层)中 阅读全文

posted @ 2025-09-25 12:01 buguge 阅读(58) 评论(0) 推荐(0)

Clean Code/代码简洁性Good-Practice:使用统一异常捕获来取代错误处理
摘要:通过自定义异常集中处理,将繁琐的参数校验代码转化为清晰、简洁且可维护的艺术。 阅读全文

posted @ 2025-09-18 23:28 buguge 阅读(23) 评论(1) 推荐(0)

妙哉!这个业务语义化的Builder模式,让对象构建变得更稳、更准、更快
摘要:妙哉!这个业务语义化的Builder模式,让对象构建变得更稳、更准、更快还在用传统的builder模式来实例化构建对象吗?来,给你的程序注入点新鲜血液🩸! 阅读全文

posted @ 2025-09-08 22:55 buguge 阅读(29) 评论(0) 推荐(0)

【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统?
摘要:【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统?本文介绍了在账务插件开发中,如何通过“面向接口编程”实现异步转账完成后的回调通知机制。通过定义回调接口 `TransferCallback`,账务组件在异步操作完成后可通知上层应用进行后续业务处理。文章提供了纯 Java 和 Spring 两种实现方式的代码示例,展示了接口在插件化架构中的重要作用,体现了面向接口编程在解耦与扩展方面的优势。 阅读全文

posted @ 2025-08-24 18:37 buguge 阅读(62) 评论(1) 推荐(0)

一个表示金额的数字是 100000000L,这是多少米(多少钱)?【代码可读性实践】
摘要:一个表示金额的数字是 100000000L,这是多少米(多少钱)?【代码可读性实践】易读的代码(Readable Code)是高质量软件开发的核心要素之一 阅读全文

posted @ 2025-08-12 16:14 buguge 阅读(117) 评论(0) 推荐(0)

聚合系统设计:利用泛型来重构三方服务的底层调用
摘要:主流官媒都开始使用“标题党”这种网络传播套路了....适当网络化表达可增强传播力,但过度追求流量易损害公信力。关键在于平衡,区分时政要闻与文化报道的传播尺度,在创新形式的同时坚守媒体责任,实现有效传播与价值引领的统一。 ↓↓↓以下为正文。↓↓↓ 三方服务API接口响应说明 我司通道服务里调用的一个三 阅读全文

posted @ 2025-07-28 09:25 buguge 阅读(72) 评论(0) 推荐(0)

# 跨系统异步业务调用的第一法则::明确失败才失败
摘要:我司企服系统的企业客户实名认证,通过与三方服务商“ebaoquan”的API通信来实现。 ebaoquan系统的企业实名认证接口采用异步处理机制,提供了以下3个关键接口: ①企业实名认证上传:同步的数据请求接口,正常情况下会返回一个唯一的email地址,ebaoquan称之为“账户”。 ②企业实名认 阅读全文

posted @ 2025-06-27 15:00 buguge 阅读(40) 评论(0) 推荐(0)

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

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

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

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

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

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

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)

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

posted @ 2025-03-30 10:39 buguge 阅读(51) 评论(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 阅读(64) 评论(0) 推荐(0)

【注意】sql语句where条件中的数据类型不一致,不仅存在性能问题,还会有数据准确性方面的bug...
摘要:隐式类型转换规则 MySQL 在进行比较操作时,如果比较双方的数据类型不一致,通常会尝试将其中一个数据类型转换为另一个数据类型,以便进行比较。 对于 select * from t_order where order_no = 1538808276987285507 ,当 order_no 为 va 阅读全文

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

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

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

API设计之道:从商户ID参数设计 看 对外商户API与内部中台服务 的参数设计理念的差异
摘要:有思想、知章法,才能做出更好的系统!正如本案例,如果不假思索地在zhongtai-trans的付款查询接口上加上商户id,就有些唐突了。 阅读全文

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

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

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

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

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

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

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

1 2 3 4 5 ··· 7 下一页