avatar
文章
377
标签
447
分类
12
首页
留言板
知识库
归档
标签
分类
关于
Dai Wei
搜索
首页
留言板
知识库
归档
标签
分类
关于

Dai Wei

单元测试到底是什么?应该怎么做?
发表于2022-06-01|系统设计
场景计费、折扣或状态流转代码频繁修改时,人工回归慢且容易漏边界。单元测试应在秒级反馈核心规则是否仍符合预期。 原理“单元”是可独立验证的行为边界,不必机械等同于一个方法。测试遵循准备、执行、断言,隔离网络、时钟和随机数等不稳定依赖。TDD 用红、绿、重构循环推动接口从使用者视角形成。 设计步骤从高变更、高故障代价的纯业务逻辑开始;为正常、边界和异常路径列用例;通过依赖注入替换外部系统;断言可观察结果而非内部调用细节;命名描述场景与预期,并让测试数据最小化。 权衡Mock 提升速度和隔离性,但过度 Mock 会复制实现、让重构变脆。覆盖率能发现未执行代码,却不能证明断言有效。TDD 有助于设计,小型探索或胶水代码则未必值得严格先测。 实践建议单测、集成测试和端到端测试分层使用;禁止真实等待与共享可变数据;失败信息要能直接定位业务条件。修复线上缺陷时先写复现测试。评审关注场景质量而非数字,持续删除重复和无价值测试,保证套件始终快速可信。 落地检查上线前还应做一次桌面演练:准备正常、边界、超时、重复与恶意输入,确认系统的返回、日志和指标彼此对应;在预发布环境模拟依赖不可用、进程重启...
软件工程简明教程
发表于2022-05-22|系统设计
场景需求不完整、多人协作和线上变化使软件开发不是简单编码。若只靠个人经验推进,范围、质量和进度会在后期集中失控。 原理软件工程通过需求、设计、实现、验证、发布和运维形成反馈系统。瀑布适合边界稳定且审计严格的项目,迭代模型用短周期吸收变化。复用、分治、逐步演进和权衡优化是跨模型通用的基本策略。 设计步骤把目标转成可验证的用户场景并标注非目标;按风险优先拆分里程碑;为架构决策记录背景与替代方案;让代码评审、自动测试和持续集成前移反馈;发布采用灰度与回滚,线上指标再反哺下一轮需求。 权衡更多文档提高可追踪性,也可能快速过期;更短迭代响应快,却增加协调和发布频率。复用能节省开发,但通用组件的适配成本可能高于复制。选择流程时应看风险、团队规模和监管要求。 实践建议用最小但完整的交付闭环替代形式化堆砌:每项需求有负责人、验收条件、监控和复盘入口。关键决定写 ADR,普通讨论留在评审。定期衡量交付周期、缺陷逃逸率和恢复时间,避免只用代码行数或忙碌程度评价工程效果。 落地检查上线前还应做一次桌面演练:准备正常、边界、超时、重复与恶意输入,确认系统的返回、日志和指标彼此对应;在预发布环境模拟依...
RestFul API 简明教程
发表于2022-05-12|系统设计
场景订单接口从 /getOrder、/updateOrder 演变出大量动作名后,调用方难以预测路径、状态码和重试行为,网关缓存与监控也无法统一。 原理REST 把服务能力抽象为资源,使用 URI 表达身份、HTTP 方法表达操作语义。GET 应安全且幂等,PUT 表示整体替换并应幂等,PATCH 表示局部修改,POST 常用于创建或非幂等命令。状态码与响应体共同描述结果。 设计步骤先识别订单、支付等稳定名词并设计层级;再定义读取、创建、修改、删除的前置条件;为分页、排序和过滤采用统一查询参数;错误体包含稳定错误码、可读消息和追踪号;最后用 OpenAPI 固化契约并做兼容性测试。 权衡纯粹资源化并不适合所有业务动作,例如退款审批可建成子资源,也可采用命令端点。前者语义统一但模型增多,后者直观却容易退化为 RPC。HATEOAS 解耦流程,但客户端实现和团队成本较高。 实践建议不要把数据库表直接暴露为 API;创建接口返回 201 与 Location,异步处理可返回 202;幂等写入支持业务幂等键;版本升级优先做向后兼容。对 400、401、403、404、409、429 ...
代码重构指南
发表于2022-05-03|系统设计
场景功能迭代越来越慢时,团队常在“继续打补丁”和“推倒重写”之间摇摆。真正可控的做法,是在保持外部行为不变的前提下持续改善内部结构。 原理重构不等于性能优化或需求开发。它通过提炼函数、移动职责、消除重复、收紧依赖等小变换降低认知复杂度。自动化测试、类型检查和可观测基线共同证明行为没有意外改变。 设计步骤先建立失败可见的测试和性能基线;选定一个明确坏味道,例如过长函数或散落规则;每次只做一种结构调整并立即验证;保持提交小且可回滚;完成后比较接口、日志、指标和资源消耗,再进入下一步。 权衡局部重构风险低,却可能长期受旧边界限制;整体重写结构自由,但双轨维护和需求漂移风险极高。性能改动有时会牺牲可读性,应以测量结果证明必要,而不是把“更快”当作重构理由。 实践建议功能开发前先清理阻碍点,开发后再消除临时结构;评审发现问题采用童子军式修复。数据库、公开 API 和序列化格式属于外部行为,必须迁移而非直接改名。若缺少测试,先加特征测试记录现状,再谈结构优化。 落地检查上线前还应做一次桌面演练:准备正常、边界、超时、重复与恶意输入,确认系统的返回、日志和指标彼此对应;在预发布环境模拟依赖...
代码命名指南
发表于2022-04-23|系统设计
场景同一代码库里同时出现 data、info、obj 和含义不明的缩写时,开发者必须反复跳转才能理解业务,评审也会把时间浪费在猜测上。 原理命名的本质是建立领域概念到代码符号的稳定映射。类和接口通常使用大驼峰,方法与变量使用小驼峰,常量使用大写蛇形,URL 与文件常用短横线。规范只是外形,更关键的是名称能表达职责、单位、状态与副作用。 设计步骤先维护团队统一的领域词汇;为布尔值采用 is/has/can,集合使用复数,时间和金额带上单位或币种;方法名用动词说明行为,查询与命令避免混淆;发现名称需要注释解释时,优先缩小作用域或重新抽象。 权衡长名称信息充分但阅读噪声更大,短名称简洁却依赖上下文。局部循环变量可以短,公共 API 必须明确。统一风格有价值,但批量改名会制造巨大 diff,因此应结合功能修改分步推进。 实践建议禁用无业务含义的 Manager、Handler 滥用;不要把类型重复写进变量名;缩写只保留 HTTP、ID 等团队共识。借助 IDE 安全重命名并运行测试,接口字段改名则提供兼容期。好的名字应让调用处像一句可验证的业务陈述。 落地检查上线前还应做一次桌面演练...
系统设计知识体系:设计模式、工程基础、认证授权、数据安全与常用框架
发表于2022-04-13|系统设计
场景接手一个业务系统时,团队容易直接讨论框架和中间件,却忽略工程质量、权限边界和运行模型。结果是局部方案都合理,组合后却难以演进。 原理系统设计不是组件清单,而是把需求、约束、模型和反馈闭环串起来。设计模式控制代码变化,测试与重构保证演进安全,IoC/AOP 管理依赖与横切能力,认证授权保护资源,调度和推送处理时间与连接。 设计步骤第一步澄清用户、流量、数据敏感度与一致性目标;第二步划分领域和信任边界;第三步为同步请求、异步任务、实时连接选择模型;第四步定义可观测指标和故障策略;最后用小规模压测与威胁建模验证关键假设。 权衡更强的一致性、更细的权限和更多抽象都会增加成本;简单方案交付快,却可能把扩展压力留给未来。设计应围绕当前风险保留演进接口,而不是预先堆叠所有“最佳实践”。 实践建议文档至少记录目标、非目标、关键时序、数据所有权和回滚方案。优先消除不可逆决定,把可替换细节延后;对安全、数据丢失和跨团队契约则尽早确认。评审时要求每个组件回答“解决什么约束”,避免技术选型变成名词竞赛。 落地检查上线前还应做一次桌面演练:准备正常、边界、超时、重复与恶意输入,确认系统的...
系统设计基础专题:RESTful API、软件工程、代码命名、重构与单元测试
发表于2022-04-04|系统设计
场景接口频繁变更、命名难懂、重构不敢动、测试只追覆盖率,是很多项目进入维护期后的共同症状。它们看似独立,实则都源于缺少稳定契约和反馈机制。 原理REST 约束负责外部资源契约,清晰命名负责代码中的认知契约,单元测试提供快速反馈,重构则在行为不变的前提下调整结构。软件工程把这些活动组织为可重复过程,使需求到交付可追踪。 设计步骤先用用户场景定义验收条件,再建立资源模型和错误语义;实现时统一命名词汇表,保持模块职责单一;对核心规则写快速单测,对边界写集成测试;每次小步重构后立即运行验证,并在评审中记录设计取舍。 权衡严格规范能降低协作成本,但规则过密会压制交付;单测速度快,却不能替代数据库和网络验证;重构改善长期效率,却会占用短期产能。应依据变更频率和故障代价分配工程投入。 实践建议把检查项放进模板和流水线,而不是依赖口头提醒。新功能同时提交契约、测试和可观测指标;发现坏味道采用顺手清理,不开启无边界“大重写”。定期删除无效规范,让流程服务于质量,而不是让团队为流程制造材料。 落地检查上线前还应做一次桌面演练:准备正常、边界、超时、重复与恶意输入,确认系统的返回、日志和指标彼此对...
Java 26 新特性概览
发表于2022-03-25|Java
说明26 尚未广泛 LTS,内容以 OpenJDK 开发分支为准。本文作为动态提纲:随 GA 发布补 verified 特性。 预期主题语言简化、并发模型(虚拟线程与结构化并发成熟)、性能与安全基线增强。具体以 jdk.java.net 为准。 自学习惯固定一个 pet-project 跑最新 JDK,CI 矩阵保留 LTS + latest,避免升级断层。 课堂外的思考学习「Java 26 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命令,或一组压测对比。记录环境(JDK 小版本、CPU 核数、容器限制),结...
Java 25 新特性概览
发表于2022-03-16|Java
版本定位25 继续半年发布节奏。企业主力仍在 17/21,此版本适合早期 adopters 验证预览语言特性。 学习建议每出一个 JEP Target 25,用 JShell 或单测验证;记录 preview 开关与编译器告警。 稳定 vs 预览生产禁用 preview;库作者若使用预览 API,需 shade 或多 release 编译,成本较高。 课堂外的思考学习「Java 25 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jstack 命令,或一组压测对比。记录环境(JDK 小版本、CPU 核数、容器限制),...
Java 24 新特性概览
发表于2022-03-06|Java
跟踪方法非 LTS 版本以 OpenJDK Release Notes + JEP 列表为准。关注 Language/VM/Library 三类。 常见方向模式匹配完善、灵活构造函数 body、性能与 GC 持续改进、Foreign API 成熟。具体 JEP 编号随发布调整,笔记只记录验证过的环境行为。 实践使用 sdkman 安装 24-ea,单独模块开 –enable-preview 做实验,与生产 LTS 隔离。 课堂外的思考学习「Java 24 新特性概览」时,我把自己放在线上值班的情境里:如果告警与这一主题相关,我能否在较短时间内建立假设并用数据验证?这种提问方式逼迫我从「看过」变成「讲得清楚、做得到」,也避免笔记沦为标题摘抄。 与同事的讨论方式我会用白板画出状态机、内存布局或调用链,请同事挑错。若被追问「更高并发或更老 JDK 版本会怎样」,答不上来就回到文首原文链接查 primary source,而不是凭记忆硬编。讨论后把新认识补进笔记末尾。 可复现实验为每个主题保留最小复现:一段可运行的 Java 片段、一条 jcmd/jst...
1…151617…38
avatar
Dai Wei
软件开发者,记录技术探索与实践
文章
377
标签
447
分类
12
Follow Me
公告
分享软件开发、工程实践与持续学习中的思考。
最新文章
Trae + MiniMax 多场景实战:Redis 故障排查与跨语言重构2026-08-28
Kimi K3 实战:全栈项目、Java 项目改造与 3A 游戏 Demo2026-08-23
测试开发学习路线(2026 最新版):AI 时代如何从测试走向质量工程2026-08-20
IDEA + Qoder 插件多场景实战:接口优化与代码重构2026-08-18
DeepSeek V4 + Claude Code 实战:代码能力深度测评2026-08-14
分类
  • AI 编程28
  • Java103
  • 人工智能39
  • 分布式系统26
  • 学习路线5
  • 开发工具11
  • 数据库42
  • 系统设计26
标签
线程优先级 DBMS 大模型 Java基础 命令 Top K 安全 Loop 计算机网络 Raft 贪心 修饰权限 TCC 最终一致性 召回 网络编程三要素 服务调用 分布式理论 知识体系 复杂度 红黑树 Unsafe 面试 Java26 BASE 内存管理 语音 redo log Kimi NoSQL Seata CAS 优化器 RDB 线程通信 面试题 IDE 死锁 ZAB 编排
归档
  • 八月 2026 7
  • 七月 2026 7
  • 六月 2026 6
  • 五月 2026 7
  • 四月 2026 6
  • 三月 2026 4
  • 二月 2026 5
  • 一月 2026 5
网站信息
文章数目 :
377
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2017 - 2026 By Dai Wei框架 Hexo 8.1.2|主题 Butterfly 5.7.0
搜索
数据加载中