软件架构
文章平均质量分 85
Dontla
Life is short, I use AI.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
coerced value(强制转换的值、静默转换)与typed ok=False result(类型化的失败结果)对比
typedok=Falseresult”就是:用明确的类型定义来区分"成功"和"失败"两种结果,让调用方在代码层面不可能把失败误认为成功。而 “coerced value” 则是把失败硬塞进成功的格式里,让调用方根本分不清。这也是为什么审计人员确认scraper.py不需要修改——它从一开始就正确地处理了失败情况。原创 2026-07-31 17:04:11 · 202 阅读 · 0 评论 -
repo层(Repository层 / 仓库层 / 仓储层)介绍(封装数据访问逻辑)
Repository 层是一种设计模式,用于在数据访问层和业务逻辑层之间提供一个抽象层。封装数据访问逻辑- 隐藏数据库查询、API调用等具体实现细节提供类似集合的接口- 让上层代码像操作集合一样操作数据隔离业务逻辑- 业务代码不需要关心数据是如何存储和获取的。原创 2026-07-29 18:19:49 · 248 阅读 · 0 评论 -
BFF式聚合介绍(把“跨服务数据拼装“这件事从后端挪到前端(或专门的中间层)来做,让底层微服务保持纯粹的单一职责,互不耦合)
BFF 式聚合= 把"跨服务数据拼装"这件事从后端挪到前端(或专门的中间层)来做,让底层微服务保持纯粹的单一职责,互不耦合。原创 2026-07-29 05:28:01 · 267 阅读 · 0 评论 -
Snowflake Deployment雪花部署Snowflake Server雪花服务器介绍(反模式Anti-pattern、不可复现、配置漂移、宠物与牛、凤凰服务器、 不可变基础设施、IaC)
"Snowflake Deployment"(雪花部署)是DevOps中的反模式,指因手工配置、临时修改导致部署环境或服务器不可复制、难以审计的现象。其核心问题包括依赖本地隐式状态、不可复现、缺乏审计日志及配置漂移。业界通过"宠物vs牛"理论、不可变基础设施(如Docker镜像)、基础设施即代码(IaC)和CI/CD自动化流水线等方案解决该问题,确保部署可复现、可审计且标准化。雪花部署的批评实质是警示对人或单机环境的过度依赖,强调自动化与版本控制的重要性。原创 2026-07-26 13:58:10 · 340 阅读 · 0 评论 -
EOL(End of Life 生命周期终止)(指官方停止对该版本的一切支持的时间,之后不再有任何更新或安全补丁)Active LTS、Maintenance LTS、停止维护、软件升级
EOLEOL是什么?原创 2026-07-25 23:19:36 · 209 阅读 · 0 评论 -
多租户平台安全模糊化(Security through Ambiguity)策略示例(防止跨租户的资源枚举攻击(Resource Enumeration Attack))租户隔离、租户校验、跨租户攻击
指的是那些本身不会按租户过滤数据的内部 API。这个端点可能只根据order_id查数据,不管你是哪个租户,只要 ID 存在就返回结果。与之相对的是"租户敏感"端点,会在 SQL 层面自动加上的过滤。当你调用的内部接口不区分租户时,你必须在拿到结果后自己检查数据属于哪个租户;如果数据不是当前租户的,就假装这个数据根本不存在,从而防止跨租户的数据泄露和探测攻击。原创 2026-07-25 21:22:28 · 199 阅读 · 0 评论 -
关注点分离(Separation of Concerns)示例(AI Agent 架构、流程编排、数据契约、提示词工程)
让 prompt 调优、图编排、数据契约三件事可以独立演进、独立测试、独立 review,互不拖累。在 Agent 系统这种 prompt 改动频率远高于代码的系统里,这种分离不是洁癖,而是生存需要。原创 2026-07-25 15:50:42 · 275 阅读 · 0 评论 -
契约驱动开发(Contract-Driven Development,CDD)介绍(先定义契约,再编写代码)契约测试、OpenAPI、Pact、AsyncAPI、共享Schema共享
契约驱动开发(Contract-Driven Development,CDD)是一种以契约(Contract)作为系统协作核心的软件开发方法。系统之间共同遵守的一份规范。"id": 1,后端承诺一定返回这些字段前端承诺按照这些字段进行解析这个约定,就是一份契约。同样:titlesalarytype Job {id: ID!都属于契约。任何系统之间用于描述数据结构、接口行为、通信协议的规范,都属于 Contract。契约驱动开发并不是一种新的编程语言或框架,而是一种。原创 2026-07-10 06:17:20 · 392 阅读 · 0 评论 -
领域逻辑下沉到服务层怎么理解?(核心业务规则、分层架构重构手法)路由层
就是核心业务规则——与"这个系统到底在做什么"直接相关的代码。"准备一场面试"需要哪些步骤?查什么数据、调什么模型、怎么组装结果?"分析一个岗位"的算法和流程是什么?这些就是领域逻辑。它们是系统最有价值的部分,跟 HTTP、数据库、消息队列等技术细节无关。就是把代码从上层移动到下层。路由/控制器层(HTTP 端点)├── /v1/agent/interview ← 业务逻辑写在这里└── /v1/agent/analyze ← 业务逻辑写在这里后台任务。原创 2026-07-08 04:30:44 · 220 阅读 · 0 评论 -
反模式(Anti-Pattern)介绍(表面上看似解决方案,但长期来看会带来更多问题、被业界证明是不好的做法)God Object上帝对象、意大利面条代码、泥球架构、金锤子
判断类规则没有 100% 硬保证的机制。能做到最好的是:① 写进 CLAUDE.md(权威、always-loaded)② 记忆写得足够具体(点名③ 我承诺一个自检动作:凡是给你选项或推荐,我必须显式标出哪个是"架构最正确"的,并让它作为推荐;绝不把"改动小/省事/风险低"列为推荐理由。原创 2026-07-06 03:35:54 · 285 阅读 · 0 评论 -
Profiling(性能分析)介绍(用数据驱动性能优化)
Profiling(性能分析)是指通过工具对程序运行过程进行测量,找出资源消耗的分布情况,从而定位性能瓶颈。简单来说:Profiling = 用数据告诉你“时间和资源到底花在哪”哪些函数最耗 CPU?哪些操作最耗时间?内存是否存在泄漏?系统卡在计算还是 I/O?哪一层服务最慢?不猜测,用数据说话不盲改,精准优化不局部看,全链路分析如果你在做后端、AI系统或者高性能应用:👉 Profiling 是必须掌握的核心技能之一。原创 2026-04-05 22:22:25 · 849 阅读 · 0 评论 -
DTO(Data Transfer Object数据传输对象)介绍(用于在系统之间传输数据的简单对象,隔离数据结构,避免暴露内部模型结构)
DTO(Data Transfer Object)是一种用于在系统之间传输数据的简单对象。它通常只包含数据字段(属性)和对应的 getter/setter,而不包含业务逻辑。只用于数据传输不包含复杂业务逻辑通常是轻量级结构常用于API 请求与响应简单来说:DTO 是一种专门用于在不同系统组件之间传递数据的对象。客户端向服务器发送请求时,数据会被解析成这个 DTO 对象,然后再进入业务处理流程。DTO 是一种简单但非常重要的软件设计模式。它通过数据结构隔离。原创 2026-03-13 13:34:05 · 819 阅读 · 0 评论 -
端到端开发(End-to-End Development)介绍
端到端开发是一种软件开发方法论,指从项目初始构想到最终交付和维护的完整过程,覆盖软件开发生命周期的所有阶段。这种方法强调开发团队对产品全流程的责任和掌控。传统开发通常采用"瀑布模型",各阶段分离且由不同团队负责;而端到端开发更强调一体化和连续性,常见于敏捷开发和DevOps实践中。端到端开发是现代软件工程的重要实践,尤其在数字化转型和敏捷开发盛行的今天,已成为许多领先科技企业的标准工作方式。原创 2025-12-24 15:35:07 · 1175 阅读 · 0 评论 -
领域驱动设计DDD(Domain-Driven Design)中的领域是什么?(领域 = 业务问题 + 业务规则 + 业务边界)
通过这种方式,你可以将复杂的业务需求转化为清晰的代码结构,实现“业务逻辑驱动软件设计”的目标。,也就是业务逻辑和规则的集合。简单来说,领域就是你要用软件去建模和处理的。”是整个设计的核心出发点。它指的是软件系统所要解决的。,确保模型的独立性和一致性。在领域驱动设计(DDD)中,“领域可以进一步划分为更小的。原创 2025-09-16 16:48:33 · 1148 阅读 · 0 评论 -
框架(Framework) 架构(Architecture)的区别
例如:采用领域驱动设计的架构要求领域层与基础设施层分离,这会直接影响框架选型(如优先选择支持领域模型的Event Sourcing框架)。例如:微服务架构(战略决策)通过Spring Cloud框架(实现工具)落地,框架的负载均衡、服务注册等功能将架构原则转化为可运行系统。框架(Framework)与架构(Architecture)是软件工程中两个核心但本质不同的概念。两者相辅相成,缺一不可,但需明确其本质区别,才能在复杂系统设计中游刃有余。原创 2025-09-16 15:33:38 · 1764 阅读 · 0 评论 -
值对象(Value Object, VO)介绍(领域驱动设计DDD中核心概念之一,用于描述没有唯一标识符、仅通过属性值定义的对象)ORM 框架EF Core、嵌入式映射、序列化存储
值对象的核心特征可以总结为以下几点:值对象适用于以下场景:如:货币金额、地理位置、颜色、日期时间等。将多个相关属性封装为值对象,避免实体属性膨胀。示例:订单实体中的 (地址)和 (价格)。用值对象替代原始类型(如 、),增强语义。示例:用 类代替字符串表示电话号码。在值对象的构造函数中封装验证逻辑,确保数据有效性。示例: 类在构造时校验货币单位是否合法。(2)相等性比较重写 和 方法,基于属性值比较。示例(Java):(3)持久化支持在 ORM 框架(如 EF Core)中,值对象可原创 2025-09-15 21:56:10 · 1315 阅读 · 0 评论 -
领域驱动设计DDD(Domain-Driven Design)介绍(限界上下文Bounded Context、统一语言、实体、值对象、聚合、领域服务、仓储、工厂)限界上下文映射、事件风暴
DDD 是一种。原创 2025-09-15 21:24:18 · 1115 阅读 · 0 评论 -
流行的前端架构与后端架构介绍(Architecture)
前端架构的设计目标是提升用户体验、开发效率和系统可维护性。原创 2025-09-14 22:38:10 · 2045 阅读 · 0 评论 -
FLUX介绍(Facebook提出的前端架构模式,Redux前身)单向数据流Unidirectional Data Flow、Action->Dispatcher->Store->View
Flux 通过。原创 2025-09-14 20:50:08 · 1445 阅读 · 0 评论 -
软件架构术语介绍(Model模型、View视图、Controller控制器、ViewModel视图模型、Entity实体、Value Object值对象、Repository仓储)
【代码】软件架构术语介绍(Model模型、View视图、Controller控制器、ViewModel视图模型、Entity实体、Value Object值对象、Repository仓储)原创 2025-09-14 16:43:16 · 1287 阅读 · 0 评论 -
(有点问题勿看)常见软件架构模式及适用场景对比(MVC、MVP、MVVM、Clean Architecture分层架构、六边形架构、CQRS命令查询职责分离、事件溯源、微服务、无服务器架构、DDD)
(有点问题勿看)原创 2025-09-14 15:39:32 · 1366 阅读 · 0 评论 -
业务域模型Domain Model介绍(领域驱动设计DDD的核心概念,用代码形式表达业务知识)实体Entities、值对象Value Objects、聚合Aggregates、业务规则、领域模型
业务域模型。原创 2025-08-17 15:23:51 · 1260 阅读 · 0 评论 -
微服务架构(Microservices Architecture)(一种云原生架构模式,通过将应用程序拆分为多个小型、独立、自治的服务,每个服务专注于特定的业务功能,并通过定义明确的接口进行通信)
微服务(Microservices Architecture)是一种云原生架构模式,通过将应用程序拆分为多个小型、独立、自治的服务,每个服务专注于特定的业务功能,并通过定义明确的接口(如 REST API、消息队列等)进行通信。这种架构模式旨在提高系统的灵活性、可维护性和可扩展性。核心特点。原创 2025-08-11 15:00:09 · 1001 阅读 · 0 评论 -
MVP架构模式(一种衍生于经典MVC架构的界面设计模式,旨在优化代码组织结构并提高可测试性)(Model层、View层、Presenter层)(软件设计模式、MVVW)
View: 是显示数据(model)并且将用户指令(events)传送到presenter以便作用于那些数据的一个接口。View通常含有Presenter的引用。在Android开发中通常将Activity或者Fragment作为View层。Model: 对于Model层也是数据层。它区别于MVC架构中的Model,在这里不仅仅只是数据模型。在MVP架构中Model它负责对数据的存取操作,例如对数据库的读写,网络的数据的请求等。Presenter:对于Presenter层他是连接View层与Mode..原创 2022-01-09 17:22:04 · 2178 阅读 · 0 评论
分享