22k 20 分钟

# 建造者模式:复杂对象构建的艺术 # 一、业务痛点与技术背景 目标读者:负责复杂对象构建、配置管理、API 设计的后端工程师。 核心价值:解决复杂对象构建过程中的参数校验、构建顺序、可选参数处理等实际问题,掌握建造者模式在对象构建中的最佳实践,避免构造函数爆炸和 setter 方法的滥用。 在我们开发的电商平台中,订单对象包含 50 多个字段,包括基本信息、商品信息、支付信息、物流信息、优惠信息等。最初我们使用传统的构造函数和 setter 方法: 123456789101112131415161718192021222324252627282930// 传统方式 -...
15k 14 分钟

# 策略模式:算法选择的智慧 # 一、业务痛点与技术背景 核心价值:解决电商支付系统中支付方式动态扩展、促销策略灵活配置等实际问题,掌握策略模式在复杂业务场景下的最佳实践,避免代码臃肿和维护困难。 在我们电商平台的支付模块重构中,最初只有支付宝和微信支付,代码相对简单。但随着业务发展,新增了银联、Apple Pay、Google Pay 等多种支付方式,原有的 if-else 结构迅速膨胀到 2000 +...
51k 46 分钟

# 前言:从单体到微服务的架构演进 还记得那些年我们维护单体应用的日子吗?一个巨大的代码库,所有功能都耦合在一起,每次修改都要小心翼翼,生怕影响到其他模块。部署时更是如履薄冰,一个小小的功能更新都需要整个应用重新部署,风险极高。 我至今还记得第一次参与大型项目重构时的场景。那是一个电商系统,代码量超过百万行,启动时间需要 5 分钟,构建一次需要 20 分钟。每次发布都是一次冒险,团队中甚至有专门的...
19k 17 分钟

# 用户端历史订单模块 # 查询历史订单 # 需求分析和设计 产品原型: 业务规则 分页查询历史订单 可以根据订单状态查询 展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片) 接口设计:参见接口文档 # 代码实现 # user/OrderController 1234567891011121314/** * 历史订单查询 * * @param page * @param pageSize * @param status 订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消 * @return...
21k 19 分钟

# 前言:从 XML 到注解的配置革命 还记得那些年我们配置 Spring 应用的日子吗?我至今还清楚地记得第一次接触 Spring 时的场景,那是一个企业级项目,光是配置文件就有几十个 XML 文件,每个文件都充满了复杂的 bean 定义、依赖注入配置和各种命名空间的声明。每次启动应用都要花费几分钟时间来解析这些配置文件,而且经常因为一个标签的错误就导致整个应用启动失败。 传统的 Spring 配置方式是这样的: 123456789101112131415161718192021222324252627282930<!-- 传统Spring XML配置...
6.1k 6 分钟

# 什么是工厂模式? 工厂模式 (Factory Pattern) 是开发中常用的设计模式之一,属于创建型设计模式;跟单例设计模式创建单一实例不同的是,工厂模式是提供创建对象的最佳方式帮助我们按照不同的需求创建产品以达到 “需求” 和 “生产产品” 的解耦。 并且工厂模式在创建对象时也 不会对外暴创建对象的过程 并且可以使用同一个共同的接口访问创建对象。 工厂模式的实现主要分为三种: 简单工厂模式 (Simple Factory); 工厂方法模式 (Factory Method); 抽象工厂模式 (Abastract Factorv); 其中简单工厂不在 23...
3.7k 3 分钟

# Redis 性能调优方面的个人见解与思考 # 前言:为什么 Redis 也需要调优? 刚开始用 Redis 的时候,我觉得它天生就很快,根本不需要优化。直到有一天,我负责的电商系统在大促期间出现了严重的性能问题,Redis 的响应时间从几毫秒飙升到几百毫秒,整个系统差点崩溃。 从那以后,我开始深入研究 Redis 的性能调优。今天想分享一些我在实战中总结的经验和思考,希望能帮到正在使用 Redis 的你。 # 内存优化:Redis 性能的第一道坎 # 大 Key 问题:最常见也最致命 我见过太多项目因为大 Key 问题导致性能下降。所谓大 Key,就是单个 Key 的 Value...
28k 25 分钟

# 苍穹外卖 - day08 # 课程内容 导入地址簿功能代码 用户下单 订单支付 功能实现:用户下单、订单支付 用户下单效果图: 订单支付效果图: # 导入地址簿功能代码 # 需求分析和设计 # 产品原型 地址簿,指的是消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。 效果图: 对于地址簿管理,我们需要实现以下几个功能: 查询地址列表 新增地址 修改地址 删除地址 设置默认地址 查询默认地址 # 接口设计 根据上述原型图先粗粒度设计接口,共包含 7...
2.7k 2 分钟

# 单例模式:Java 实现与工程实践 # 一、模式价值与典型场景 在 Java 开发中,单例模式常用于解决以下核心问题: 资源全局唯一性:如数据库连接池(避免重复创建连接) 配置统一管理:确保系统配置一致性 设备驱动控制:如打印机任务队列管理 性能优化:减少重量级对象创建开销 # 二、单例模式演进之路 # 2.1 基础实现(非线程安全) 123456789101112public class BasicSingleton { private static BasicSingleton instance; private BasicSingleton()...
6.3k 6 分钟

# 代理模式:隐藏在框架幕后的核心模式 # 一、模式本质与核心价值 代理模式(Proxy Pattern)是一种结构型设计模式,通过创建代理对象控制对原始对象的访问。在 Java 生态中,代理模式是实现以下能力的基石: 访问控制:权限校验、熔断限流 功能增强:日志记录、性能监控 延迟加载:大文件预加载、数据库连接池 远程调用:RPC 框架通信基础 # 二、Java 实现方式对比 # 2.1 静态代理(显式代理) 123456789101112131415161718192021222324252627282930// 用户服务接口interface UserService...