当前位置: 首页 > news >正文

[方法论]软件工程中的设计模式:从理论到实践的深度解析

文章目录

  • 软件工程中的设计模式:从理论到实践的深度解析
    • 引言:为什么需要设计模式?
    • 第一部分:设计模式的核心原则
      • 1. SOLID 原则(面向对象设计的五大基石)
      • 2. 其他关键思想
    • 第二部分:创建型模式(Creational Patterns)
      • 1. 单例模式(Singleton)
      • 2. 工厂方法模式(Factory Method)
      • 3. 建造者模式(Builder)
      • 4. 原型模式(Prototype)
      • 5. 抽象工厂模式(Abstract Factory)
    • 第三部分:结构型模式(Structural Patterns)
      • 1. 适配器模式(Adapter)
      • 2. 代理模式(Proxy)
      • 3. 装饰器模式(Decorator)
      • 4. 组合模式(Composite)
      • 5. 门面模式(Facade)
      • 6. 桥接模式(Bridge)
    • 第四部分:行为型模式(Behavioral Patterns)
      • 1. 观察者模式(Observer)
      • 2. 策略模式(Strategy)
      • 3. 责任链模式(Chain of Responsibility)
      • 4. 模板方法模式(Template Method)
      • 5. 命令模式(Command)
      • 6. 状态模式(State)
      • 7. 访问者模式(Visitor)
    • 第五部分:现代框架中的设计模式实战
      • 1. Spring Framework 的模式应用
      • 2. React中的模式体现
      • 3. 微服务架构中的模式
    • 第六部分:设计模式的选择与反模式
      • 1. 选择决策树
      • 2. 常见反模式
      • 3. 新时代演进
    • 结语:设计模式的正确打开方式

软件工程中的设计模式:从理论到实践的深度解析

引言:为什么需要设计模式?

在软件开发中,我们常常遇到重复出现的问题:如何解耦对象间的依赖关系?如何让代码在不修改原有逻辑的前提下扩展功能?如何统一处理复杂对象的创建流程?这些问题的答案往往隐藏在设计模式(Design Patterns) 中。

设计模式是软件工程师在数十年实践中总结出的可复用解决方案模板,它们并非具体的代码,而是针对特定场景下代码组织方式的指导方针。如同建筑行业的预制构件,设计模式帮助开发者构建更灵活、可维护的系统。


第一部分:设计模式的核心原则

在深入具体模式前,理解以下核心原则至关重要:

1. SOLID 原则(面向对象设计的五大基石)

  • 单一职责原则(SRP):一个类只负责一项功能
  • 开闭原则(OCP):对扩展开放,对修改关闭
  • 里氏替换原则(LSP):子类应该能替换父类而不破坏逻辑
  • 接口隔离原则(ISP):定义细粒度的专用接口
  • 依赖倒置原则(DIP):依赖抽象(接口),而非具体实现

2. 其他关键思想

  • 组合优于继承:通过对象组合实现功能扩展,避免类爆炸
  • 针对接口编程:解耦实现细节,提升可替换性
  • 最小化知道原则(LoD):减少对象间的直接依赖

第二部分:创建型模式(Creational Patterns)

核心目标:将对象的创建与使用分离,提升系统的灵活性与可扩展性

1. 单例模式(Singleton)

# Python 实现
class Database:_instance = Nonedef __new__(cls):if not cls._instance:cls._instance = super().__new__(cls)return cls._instance
  • 场景:数据库连接池、配置管理器
  • 陷阱:滥用会导致全局状态污染,建议配合依赖注入使用

2. 工厂方法模式(Factory Method)

在这里插入图片描述

  • 特点:定义创建对象的接口,由子类决定实例化哪个类
  • Spring框架应用BeanFactory 是其典型实现

3. 建造者模式(Builder)

// Java 示例
Computer computer = new ComputerBuilder().setCPU("i7").setRAM("32GB").build();
  • 优势:分离复杂对象的构建与表示
  • 对比:与工厂模式区别在于支持分步骤构建

4. 原型模式(Prototype)

  • 实现方式:通过克隆已有对象创建新对象(如Java的clone()方法)
  • 应用场景:对象创建成本较高时(如读取大文件生成的对象)

5. 抽象工厂模式(Abstract Factory)

  • 解决场景:跨平台UI库(WindowsButton vs MacButton)
  • 类比:工厂的工厂,提供一组相关或依赖对象的家族

第三部分:结构型模式(Structural Patterns)

核心目标:处理对象与对象之间、类与类之间的组合关系

1. 适配器模式(Adapter)

// TypeScript 示例
class LegacyLogger {log(message: string) { /* 旧接口 */ }
}class ModernLoggerAdapter implements ILogger {constructor(private legacy: LegacyLogger) {}info(msg: string) { this.legacy.log(`INFO: ${msg}`) }
}
  • 现实案例:支付宝对接银联接口时的协议转换层

2. 代理模式(Proxy)

  • 三种典型代理
    • 远程代理(如RPC调用)
    • 虚拟代理(图片加载占位符)
    • 保护代理(权限控制)
  • Spring应用:AOP底层通过动态代理实现

3. 装饰器模式(Decorator)

在这里插入图片描述

  • 对比继承:运行时动态添加功能,更灵活
  • Java IO流BufferedReader包装InputStreamReader
  • 继承方式 :功能扩展通过类继承实现,导致类爆炸(如需要N个子类来实现N个功能组合)
  • 装饰器方式:通过组合方式动态添加功能,符合开闭原则,运行时可灵活组合

4. 组合模式(Composite)

  • 树形结构处理:文件系统(文件与文件夹的统一处理)
  • 关键点:叶子节点与组合节点实现相同接口

5. 门面模式(Facade)

// 复杂子系统整合
class WorkflowFacade {void startProcess() {authSystem.login();bpmEngine.startProcess();notificationService.send();}
}
  • 应用场景:简化遗留系统的调用方式

6. 桥接模式(Bridge)

  • 解决痛点:两个独立变化的维度(如不同品牌+不同型号的手机)
  • 对比适配器:更偏向于设计初期的架构选择

第四部分:行为型模式(Behavioral Patterns)

核心目标:对象间职责划分与通信机制

1. 观察者模式(Observer)

// Vue.js响应式系统核心
class Subject {observers = []notify() {this.observers.forEach(o => o.update())}
}
  • 发布-订阅模式变体:通过事件总线解耦观察者

2. 策略模式(Strategy)

在这里插入图片描述

  • 电商案例:不同促销活动(满减、折扣、返券)的统一接口
  • 优势:避免冗长的if-else逻辑

3. 责任链模式(Chain of Responsibility)

  • 审批流程示例:经理→总监→CEO的逐级审批
  • 变体:过滤器链(如Java Web中的Filter)

4. 模板方法模式(Template Method)

// 定义算法骨架
abstract class Game {final void play() {initialize();start();end();}abstract void initialize();
}
  • 框架开发利器:JUnit测试框架的setUp()/tearDown()

5. 命令模式(Command)

  • 事务回滚实现:保存命令历史记录
  • 队列请求处理:线程池中的任务队列

6. 状态模式(State)

  • 电梯状态机:开门→运行→停止→故障的转换
  • 对比策略模式:状态转换包含上下文的状态迁移

7. 访问者模式(Visitor)

  • 适用场景:为复杂对象结构添加新操作而不修改其类
  • 难点:需要预先定义好可访问的元素接口

第五部分:现代框架中的设计模式实战

1. Spring Framework 的模式应用

  • 工厂模式BeanFactory
  • 代理模式:AOP的JDK动态代理
  • 模板方法JdbcTemplateexecute()方法
  • 适配器模式HandlerAdapter处理不同类型的Controller

2. React中的模式体现

  • 组合模式:组件树的构建方式
  • 观察者模式:Context的Provider/Consumer
  • 高阶组件(HOC):装饰器模式的React实践

3. 微服务架构中的模式

  • 服务发现:适配器模式处理不同注册中心
  • API网关:门面模式的分布式体现
  • 断路器:命令模式实现服务熔断

第六部分:设计模式的选择与反模式

1. 选择决策树

到底该用什么设计模式?这个需要根据具体情况具体选择。

问题类型 --> 创建/结构/行为
↓
影响范围 --> 对象级/类级
↓
参与角色数量 --> 双方/多方
↓
得到候选模式列表

可以按如下流程进行选择决策

创建型
结构型
行为型
对象级
类级
对象级
类级
对象级
类级
双方
双方
双方
双方
多方
多方
问题类型
创建/结构/行为
影响范围
影响范围
影响范围
对象级/类级
对象级/类级
对象级/类级
参与角色数量
参与角色数量
参与角色数量
参与角色数量
参与角色数量
参与角色数量
双方/多方
双方/多方
双方/多方
双方/多方
双方/多方
双方/多方
工厂方法/适配器等
桥接/代理等
策略/观察者等
组合/装饰器等
责任链/访问者等
解释器/中介者等

2. 常见反模式

  • 过度设计:为简单问题引入复杂模式(如用策略模式处理只有两种算法的情况)
  • 模式滥用:单例模式导致测试困难
  • 误用场景:在需要频繁修改算法时采用模板方法而非策略模式

3. 新时代演进

  • 函数式编程影响:高阶函数替代部分模式(如策略模式可简化为参数传递函数)
  • 框架内置:Spring Boot自动配置背后的工厂模式自动化
  • 云原生应用:服务网格(Istio)中的代理模式新形态

结语:设计模式的正确打开方式

设计模式不是灵丹妙药,而是工程师的工具箱。掌握它们的关键在于:

  1. 理解本质问题:每个模式解决的核心矛盾
  2. 识别适用场景:在代码坏味道出现时合理选用
  3. 保持适度原则:避免为模式而模式的过度设计
  4. 持续重构意识:当需求变化超出当前模式承载能力时及时调整

“不识模式者,需反复试错;唯模式论者,将陷入新的困境。” —— 《重构与模式》

通过本文的系统梳理,希望你能建立起完整的设计模式知识体系,在实际项目中做出更优雅的架构决策。记住:好的设计,永远是在遵循原则与保持简单之间的精妙平衡。


研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)


相关文章:

[方法论]软件工程中的设计模式:从理论到实践的深度解析

文章目录 软件工程中的设计模式:从理论到实践的深度解析引言:为什么需要设计模式?第一部分:设计模式的核心原则1. SOLID 原则(面向对象设计的五大基石)2. 其他关键思想 第二部分:创建型模式&…...

测试基础笔记第十八天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、web自动化1.xpath定位1.属性定位2.属性与逻辑结合3.属性和层级结合 2.常见元素定位方法(面试题)3.常见元素定位失败原因4.cookie1.验证码…...

深度学习系统学习系列【2】之人工神经网络(ANN)

文章目录 说明人工神经网络概述基本单位(神经元模型)神经元基本模型线性模型与激活函数多层神经网络人工神经网络的注意内容 人工神经网络的阶段划分训练阶段输入、输出数据量化的设计权值向量W和偏置b的设计 预测阶段 人工神经网络核心算法梯度下降算法…...

《解锁Windows下GCC升级密码,开启高效编程新旅程》

《解锁Windows下GCC升级密码,开启高效编程新旅程》 为什么要升级 Windows 下的 GCC 版本? 在软件开发的动态领域中,GCC 作为一款卓越的编译器,在 Windows 环境下的升级有着重要意义,其影响深远且广泛。 从性能优化的角度来看,新版 GCC 往往在编译速度上有显著提升。随着…...

**Java面试大冒险:谢飞机的幽默与技术碰撞记**

互联网大厂Java求职者面试:一场严肃与搞笑交织的技术盛宴 场景: 互联网大厂面试间 人物: 面试官: 一位严肃的资深架构师,对技术要求严格。谢飞机: 一位搞笑的程序员,技术实力参差不齐。 第一…...

软件检测价格受多种因素影响,你了解多少?

软件检测价格受到多种因素的影响,这对企业来说至关重要,对开发者来说也至关重要,了解软件检测价格能够让企业和开发者更好地进行预算,能够让企业和开发者更好地进行决策。以下为你深入分析相关内容。 检测范围影响软件检测范围的…...

学习黑客风险Risk

一眼纵览 今天 Day 5 我们用 60 分钟打通「风险管理快闪副本」——先用漫画式视角速读两个国际标准(NIST & ISO/IEC 27005),再把抽象概念变身为炫彩 Risk Heat Map,最后亲手填一张迷你 风险登记簿。学完你将能: 讲…...

scikit-learn在监督学习算法的应用

shiyonguyu大家好,我是我不是小upper!最近行业大环境不是很好,有人苦恼别人都开始着手项目实战了,自己却还卡在 scikit-learn 的代码语法上,连简单的示例运行起来都磕磕绊绊。确实,对很多机器学习初学者来说…...

BG开发者日志505:项目总体情况

1、从2024年12月中旬启动,到4月底gameplay部分开发完毕,已经四个半月过去了。 其中大部分内容是3、4两个月中完成的,量产阶段。 预计6月初参加新品节,6月中旬发售(比原计划7月中旬提前一个月)。 --------…...

MySQL 空值处理函数对比:IFNULL、COALESCE 和 NULLIF

IFNULL、COALESCE 和 NULLIF这三个函数都是 MySQL 中处理 NULL 值的函数,但它们的功能和使用场景有所不同: 1. IFNULL(expr, fallback) 功能:两值处理,专为替换 NULL 设计 如果 expr 不是 NULL,返回 expr如果 expr …...

【2025年】MySQL面试题总结

文章目录 1. MySQL 支持哪些存储引擎?默认使⽤哪个?2. MyISAM 和 InnoDB 有什么区别?3. 事务的四大特性?4. 并发事务带来了哪些问题?5. 不可重复读和幻读有什么区别?6. MySQL 事务隔离级别?默认是什么级别&#xff1…...

Python 数据智能实战 (10):智能商品推荐 - LLM “猜你喜欢”

写在前面 —— 从协同过滤到语义理解:融合 LLM,打造更懂用户心意的个性化推荐 在之前的篇章里,我们已经见证了 LLM 在用户分群、购物篮分析、流失预测、内容生成等多个电商环节的赋能潜力。今天,我们将聚焦于电商平台的“心脏”之一,也是用户体验和商业转化的核心驱动力…...

2025年 蓝桥杯省赛 Python A 组题目

文章目录 A.偏蓝B.IPv6C.2025图形D.最大数字E.倒水F.拼好数G.登山H.原料采购 近期复盘一下 省赛的题目,正所谓知不足方能进步可以在洛谷找到比赛的题目,不过得注意由于python版本的问题,有些代码想要在洛谷上ac的话,需要对应调整代…...

shell(7)

运算符 1.基本介绍 这是shell进行运算的符号,依靠这些标识才能实现我们在脚本中的运算. 2.基本语法 1、$((运算符))或$[运算符]或expr m n 注意: expr运算符间有空格→如果不加空格会被当做一个整体不会进行运算 例子: 3.expr m - n,如果要将expr运算…...

LangChain与MCP:大模型时代的工具生态之争与协同未来

LangChain与MCP:大模型时代的工具生态之争与协同未来 ——从架构差异到应用场景的深度解析 引言 在大模型驱动的AI应用生态中,LangChain与Model Context Protocol (MCP) 代表了两种截然不同的技术路径:前者以灵活的工具链和开发者友好性著称…...

【LLaMA-Factory实战】Web UI快速上手:可视化大模型微调全流程

一、引言 在大模型微调场景中,高效的工具链能显著降低开发门槛。LLaMA-Factory的Web UI(LlamaBoard)提供了低代码可视化平台,支持从模型加载、数据管理到训练配置的全流程操作。本文将结合结构图、代码示例和实战命令&#xff0c…...

源码编译Qt StateMachine

编译某个项目时报错提示fatal error: QSignalTransition: No such file or directory,是因为qtbase中没有包含StateMachine模块,需要qt/qtscxml.git - SCXML (state machine notation) compiler and related tools 编译安装qtscxml 执行如下步骤&#…...

C++ STL vector高级特性与实战技巧

引言 各位小伙伴们好!上一篇博客我们介绍了vector的基础知识和常见操作,今天我们将更深入地探讨vector的高级特性、内存管理细节以及实战应用技巧。 想象一下vector就像一辆能自动变长的公交车,我们上一篇讲了如何上下车(添加删…...

[Windows] Kazumi番剧采集v1.6.9:支持自定义规则+在线观看+弹幕,跨平台下载

[Windows] Kazumi番剧采集 链接:https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 开发的轻量级番剧采集工具,专为ACG爱好者设计。通过;自定义XPath规则; 实现精准内容抓取,支持多平台(An…...

二种MVCC对比分析

文章目录 前言MVCCInnodb的MVCC版本链回滚与提交可见性判断 Oracle的MVCC版本链 PostgreSQL的MVCCMVCC实现可见性判断特点 前言 ​ MVCC(多版本并发控制,Multi-Version Concurrency Control)是一种数据库管理系统(DBMS&#x…...

Python蓝桥杯真题代码

以下是一些不同届蓝桥杯Python真题代码示例: 第十四届青少年蓝桥杯python组省赛真题 删除字符串后缀 input_str input("请输入一个字符串:") suffixes (er, ly, ing) for suffix in suffixes: if input_str.endswith(suffix): input_str …...

高中数学联赛模拟试题精选学数学系列第5套几何题

四边形 A B C D ABCD ABCD 的对角线 A C AC AC 与 B D BD BD 互相垂直, 点 M M M, N N N 在直线 B D BD BD 上, 且关于直线 A C AC AC 对称. 设点 M M M 关于直线 A B AB AB, B C BC BC 的对称点分别为 X X X, Y Y Y, 点 N N N 关于直线 C D CD CD, D A DA DA 的…...

【KWDB 创作者计划】Docker单机环境下KWDB集群快速搭建指南

【KWDB 创作者计划】Docker 单机环境下 KaiwuDB集群快速搭建指南 前言一、KWDB介绍1.1 KWDB简介1.2 主要特点1.3 典型应用场景 二、环境介绍2.1 部署环境要求2.2 本地环境规划2.3 本次部署介绍 三、下载容器镜像四、创建相关证书文件4.1 创建部署目录4.2 创建证书文件4.3 查看证…...

基于51单片机和LCD1602、矩阵按键的小游戏《猜数字》

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、LCD16022、矩阵按键3、定时器0 四、主函数总结 系列文章目录 前言 用的是普中A2开发板,用到板上的矩阵按键,还需要外接一个LCD1602液晶显示屏。 【单片机】STC89C52RC 【频率】12T11.05…...

从广义线性回归推导出Softmax:理解多分类问题的核心

文章目录 引言:从回归到分类广义线性模型回顾从二分类到多分类Softmax函数的推导建模多类概率基于最大熵原理具体推导步骤Softmax函数的数学形式 Softmax回归模型参数的可辨识性 最大似然估计与交叉熵损失似然函数交叉熵损失梯度计算 Softmax回归的实现要点数值稳定…...

传奇各版本迭代时间及内容变化,屠龙/嗜魂法杖/逍遥扇第一次出现的时间和版本

​【早期经典版本】 1.10 三英雄传说:2001 年 9 月 28 日热血传奇正式开启公测,这是传奇的第一个版本。游戏中白天与黑夜和现实同步,升级慢,怪物爆率低,玩家需要靠捡垃圾卖金币维持游戏开销,遇到高级别法师…...

云计算-私有云-私有云运维开发

三、私有云运维开发(15) ​ 使用自动化运维工具 Ansible 完成系统的自动化部署与管理。 ​ 基于 OpenStack APIs 与SDK,开发私有云运维程序 1.OpenStack Python运维开发:实现镜像管理(7分) ​ 编写Python代…...

hadoop存储数据文件原理

Hadoop是一个开源的分布式计算框架,可以用于存储和处理大规模数据集。Hadoop的存储系统基于Hadoop Distributed File System(HDFS),它的主要原理如下: 数据切块:当用户向HDFS中存储一个文件时,该…...

spring2.x详解介绍

一、核心架构升级 Spring 2.x 是 Spring 框架的重要迭代版本(2006-2009年间发布),其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本,2.x 通过以下方式重构了架构: XML Schema 支持:弃用 D…...

探索Grok-3的高级用法:功能与应用详解

引言 随着人工智能技术的迅猛发展,xAI推出的Grok-3模型以其卓越的性能和创新功能,成为AI领域的新标杆。Grok-3不仅在计算能力上实现了十倍提升,还引入了多种高级模式和实时数据处理能力,适用于学术研究、技术分析、市场洞察等多场…...

PyTorch_张量转换为numpy数组

使用 tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。共享内存会导致张量或者numpy中的其中一个更改后,另外一个会受到影响。 代码 import torch # 张量转换为 numpy 数组 def test01():data_te…...

什么是“原子变量”?

原子变量(std::atomic)在C++中是一个非常关键的机制,特别是在多线程编程中保持数据安全和避免竞争条件。它的设计目标就是让一段操作在多线程环境下变得“原子性”,即不可被中断,保证操作的完整与一致。 一、什么是“原子变量”? 简单来说: 普通变量:在多线程环境中,…...

[Linux开发工具]gcc/g++

C语言文件编译运行 gcc code.c -o mycode gcc -o mycode code.c 预处理 汇编 编译 链接 预处理(进行宏替换/去注释/条件编译/头文件展开) gcc -E code.c -o code.i -E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来 code.i预处理之后的结果 …...

【Mytais系列】Type模块:类型转换

MyBatis 的 类型系统(Type System) 是框架处理 Java 类型与数据库类型之间映射的核心模块,它通过 类型处理器(TypeHandler)、类型别名(TypeAlias) 和 类型转换器 等机制,实现了数据库…...

C++类_虚基类

在 C 里,虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生,而这些基类又从同一个基类派生时,派生类会包含多份间接基类的数据副本,这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…...

【自然语言处理与大模型】使用Xtuner进行模型合并与导出

在上一篇文章中我为大家介绍了Xtuner框架如何进行QLoRA微调,这个框架在微调过后会得到适配器权重文件,它的后缀是.pth。但原模型都是huggingface模型,其后缀是safetensors。所以呢我们在使用这个框架导出模型之前要合并,合并之前要…...

数据结构4.0

大家好,今天是栈的知识点~ 目录 一、栈的概念 1.0 栈的概念 2.0 概念区分 二、栈的方法 1.0 MyStack方法: 2.0 将元素压入栈顶 3.0 移除并返回栈顶元素 4.0 返回栈顶元素但不移除 三、栈的题目 1.0括号匹配 2.0逆波兰表达式求值 3.0 出栈…...

SMT贴片检验标准核心要点与实施规范

内容概要 SMT贴片检验标准是确保电子产品组装质量的核心框架,其核心要点覆盖从原材料到成品的全流程工艺控制。该标准体系以焊点质量、元件定位精度及锡膏印刷检测为技术基线,结合IPC-A-610电子组装验收规范,对PCBA加工中的缺陷类型、判定阈…...

探索 C++23 std::to_underlying:枚举底层值获取的利器

文章目录 引言基本概念作用使用示例与之前方法的对比在 C23 中的意义总结 引言 在 C 的发展历程中,每一个新版本都带来了许多令人期待的新特性和改进,以提升代码的安全性、可读性和可维护性。C23 作为其中的一个重要版本,也不例外。其中&…...

PyTorch学习之张量(Tensor)(一)

1. 张量的基本概念 1.1. 定义与特性 张量是PyTorch中最基础的数据结构,可视为多维数组的泛化形式,支持标量(0维)、向量(1维)、矩阵(2维)及更高维度的数据存储。其核心特性包括&…...

理解数学概念——支集(支持)(support)

1. 支集(support)的定义 在数学中,一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合),则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…...

Python 部分内置函数及其用法详解

在 Python 编程的世界里,内置函数是我们强大的 “工具箱”,它们提供了丰富而便捷的功能,帮助我们高效地完成各种任务。本文将带你深入了解这些常用内置函数及其用法,通过简单易懂的实例,让你轻松掌握它们。 一、数据类…...

[蓝桥杯真题题目及解析]2025年C++b组

移动距离(填空)** 小明初始在二维平面的原点,他想前往坐标 (233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用: 水平向右移动,即沿着 x 轴正方…...

yolov5 train笔记4 roboflow

How to Train a YOLOv5 Model On a Custom Dataset Sign in to Roboflow https://www.youtube.com/watch?vr3Ke7ZEh2Qo 他的ai懂中文的 还是得训练,明天再搞 https://www.youtube.com/watch?vEmYCpbFQ5wo&t2s 很香但是我没有马内...

工作记录 2015-06-01

工作记录 2015-06-01 序号 工作 相关人员 1 修改了FnetFax 修改了iConverter 修改了iCDA 郝 FNSR识别引擎 统计了最近几个星期0223医院的打字和录音的时间比。上周的比值是3.42,是近8个星期中最低的值。和05/03/2015 - 05/09/2015的3.74相比,下降…...

创意Python爱心代码分享

在代码的世界里,程序员以独特方式书写浪漫。他们精心打造的一个个 demo,宛如熠熠星辰。这些 demo 不仅是技术结晶,更饱含对编程的热爱与执着。从简洁的算法示例到复杂的系统雏形,每一行代码都凝聚着思考与智慧。它们被无私分享&am…...

【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means

一、向量化表示的核心概念 1.1 特征空间与向量表示 多维特征表示:通过多个特征维度(如体型、毛发长度、鼻子长短等)描述对象,每个对象对应高维空间中的一个坐标点,来表示狗这个对象,这样可以区分出不同种…...

降维大合集

1. 主成分分析(PCA,Principal Component Analysis) 基本原理 PCA 是一种线性降维方法,其核心思想是: 找到数据中方差最大的方向(称为主成分),并将数据投影到这些方向上。 利用正交变…...

AWS上构建基于自然语言和LINDO API的线性规划与非线性规划的优化计算系统

我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和附件文档里提到的LINDO API 15.0实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过LINDO API 15.0线性规划与非线性规划的优化计算程序输出计算结果和必要步骤的应用,结果用中…...

26考研 | 王道 | 计算机网络 | 第三章 数据链路层

26考研 | 王道 | 第三章 数据链路层 数据链路层所处的地位 数据链路层 使用 物理层 提供的“比特传输”服务数据链路层 为 网络层 提供服务,将网络层的 IP数据报(分组)封装成帧,传输给下一个相邻结点物理链路:传输介质…...