buguge - Keep it simple,stupid

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

导航

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

2025年10月22日 #

程序日志优化:精准捕获与日志分级,践行数字低碳

摘要: 以京东为例,全面推进电子发票工作,仅2021年就开具了28亿张发票,由此节约的纸张相当于少砍伐31万棵成年树木。而微信支付各类场景下的电子发票开具,近五年累计实现碳减排量0.83万吨。此外,每次通过钉钉提交日志可实现减碳6.4g,线上考勤打卡实现碳减排29.1g,每次提交审批报销也可碳减排6.4g。 一条完整的异常堆栈日志可能超过100行,若此类异常每日发生数百次,其累积的存储和 processing 能耗不容小觑。 日志输出过多不仅影响调试效率,更是一种数字资源浪费。根据研究,一张A4纸的碳足迹约为16g二氧化碳当量,而存储在固态硬盘上的1TB数据产生的碳排放高达2.41kg二氧化碳当量。由此可见,减少不必要的数据输出,就是减少能源消耗,是技术人员对环保的实质贡献。 阅读全文

posted @ 2025-10-22 20:47 buguge 阅读(11) 评论(0) 推荐(0)

2025年10月14日 #

聚合系统设计-批付交易中的“双批次ID设计(or双批次号设计)” // 双批次ID设计:在复杂业务场景下构建清晰、可维护的应用系统

摘要: 有如下业务场景:接收到商户批量请求的交易单,先进行落库,由于唯一的订单号是数据库生成的,所以程序需要再从库里把这批数据查出来。 请合理设计数据表结构,并用java示意代码帮我实现这个代码逻辑。 阅读全文

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

2025年9月25日 #

经典三层架构项目(3-tier architecture)中应用依赖倒置原则(DIP)的理性权衡

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

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

2025年9月24日 #

靠谱的程序员推荐阅读----->《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解

摘要: 将程序错误前置扼杀在编译期,是这个规约对我们开发者带来的最大的收益。 阅读全文

posted @ 2025-09-24 12:48 buguge 阅读(107) 评论(0) 推荐(0)

2025年9月18日 #

Clean Code/代码简洁性Good-Practice:使用统一异常捕获来取代错误处理

摘要: 通过自定义异常集中处理,将繁琐的参数校验代码转化为清晰、简洁且可维护的艺术。 阅读全文

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

2025年9月8日 #

别滥用面向对象设计(OOD)中的继承:从一则简单的回调工具类的重构案例,来看OOP/OOD原则

摘要: 博客园支持 mermaid 语法了,赞一个👍🏻 阅读全文

posted @ 2025-09-08 23:14 buguge 阅读(14) 评论(0) 推荐(0)

妙哉!这个业务语义化的Builder模式,让对象构建变得更稳、更准、更快

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

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

2025年9月1日 #

【程序员英语】程序设计中,day 与 date 这2个单词的区别

摘要: 程序设计中,day 与 date 这2个单词的区别 先看下面几个例句感受一下: What day is it today? - It's Firday. What's the date today? - It's September 10th, Teacher's Day. It takes me 阅读全文

posted @ 2025-09-01 22:19 buguge 阅读(41) 评论(0) 推荐(0)

程序设计原则 之——Fail-Fast

摘要: “一旦发现问题,立刻抛出异常,拒绝执行,而不是隐藏错误或进行可能导致不确定结果的尝试。” 阅读全文

posted @ 2025-09-01 21:52 buguge 阅读(36) 评论(0) 推荐(0)

2025年8月24日 #

【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统?

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

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

2025年8月12日 #

一个表示金额的数字是 100000000L,这是多少米(多少钱)?【代码可读性实践】

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

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

2025年8月7日 #

【分享排雷经历】系统引入Apache-Tika产生的NoClassDefFoundError错误

摘要: 为实现文件导入的安全控制,在系统中引入了基于`Apache Tika`的文件类型校验机制。但在运行时出现`NoClassDefFoundError`,提示缺少`commons-io`类。经排查发现,`monorepo`依赖的`commons-io`版本(2.6)低于Tika 2.9.1所需版本(2.16.1)。由于系统依赖统一管理,直接升级`commons-io`可能影响其他模块。最终解决方案为降级Tika版本至2.4.1,该版本兼容`commons-io:2.6`,问题得以解决且功能满足需求。 阅读全文

posted @ 2025-08-07 23:30 buguge 阅读(97) 评论(0) 推荐(0)

2025年7月28日 #

聚合系统设计:利用泛型来重构三方服务的底层调用

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

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

2025年7月22日 #

`System.out.println(Object)` 的打印行为详解

摘要: System.out.println(Object) 是 Java 中最常用的输出方法之一,它的行为等同于 java.io.PrintStream#println(Object),因为 System.out 是一个 PrintStream 实例。 package java.lang; public 阅读全文

posted @ 2025-07-22 18:36 buguge 阅读(90) 评论(0) 推荐(0)

2025年7月18日 #

Javadoc can be as clear and readable as "@JsonUnwrapped"

摘要: 🍀 🍀 The javadoc screenshot at first. 🍀 🍀 Let's take a glance at its javadoc bellow. package: com.fasterxml.jackson.annotation @Target({ElementType 阅读全文

posted @ 2025-07-18 14:35 buguge 阅读(7) 评论(0) 推荐(0)

2025年7月11日 #

SpringBean的静态字段/静态属性(static的field),支持Apollo配置热更新吗?

摘要: 我们知道,springbean的静态field可以通过显式的setter方法(实例方法)实现注入。 下面LaborFeeCalculator,其中的 basePercentage 是一个静态field。通过显式@Value的setter方法来进行配置参数赋值。 @Component public c 阅读全文

posted @ 2025-07-11 22:12 buguge 阅读(70) 评论(0) 推荐(0)

2025年6月27日 #

# 跨系统异步业务调用的第一法则::明确失败才失败

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

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

2025年6月16日 #

Spring MVC中枚举序列化-如何处理VO中的枚举字段?

摘要: 枚举是Java中表达有限状态的利器,使用枚举不仅可以增强类型安全,同时也会极大提升代码的可读性和可维护性。 阅读全文

posted @ 2025-06-16 14:21 buguge 阅读(67) 评论(0) 推荐(0)

2025年6月10日 #

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

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

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

2025年6月5日 #

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

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

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

2025年5月27日 #

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

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

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

2025年5月20日 #

代码易读性实践

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

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

2025年4月28日 #

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

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

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

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

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

posted @ 2025-04-28 09:11 buguge 阅读(67) 评论(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 阅读(200) 评论(0) 推荐(0)

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