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

Python类的力量:第六篇:设计模式——Python面向对象编程的“架构蓝图”

文章目录

        • 前言:从“代码堆砌”到“模式复用”的思维跃迁
      • 一、创建型模式:对象创建的“智能工厂”
        • 1. 单例模式(Singleton):全局唯一的“资源管家”
        • 2. 工厂模式(Factory):对象创建的“抽象工厂”
        • 3. 建造者模式(Builder):复杂对象的“分步组装”
      • 二、结构型模式:对象组合的“架构艺术”
        • 1. 代理模式(Proxy):对象访问的“安全网关”
        • 2. 装饰器模式(Decorator):对象功能的“动态增强”
        • 3. 适配器模式(Adapter):对象接口的“翻译器”
      • 三、行为型模式:对象交互的“协议规范”
        • 1. 观察者模式(Observer):对象状态的“事件广播”
        • 2. 策略模式(Strategy):算法的“动态切换”
        • 3. 状态模式(State):对象行为的“状态机”
      • 四、行业案例解析:设计模式的实战应用
        • 1. 金融风控系统:策略模式与观察者模式的结合
        • 2. 游戏开发:单例模式与工厂模式的结合
        • 3. Web开发:装饰器模式与适配器模式的结合
      • 五、进阶技巧:设计模式的深度优化
        • 1. 动态类型与鸭子类型的融合
        • 2. 设计模式与框架的结合
        • 3. 避免过度设计:权衡模式与简单性
      • 六、总结:从“模式应用”到“架构设计”的思维跃迁


前言:从“代码堆砌”到“模式复用”的思维跃迁

在软件开发中,设计模式(Design Patterns)是经过反复验证的通用解决方案,能够有效解决特定场景下的设计问题。通过应用设计模式,开发者可以将复杂的业务逻辑转化为可复用的架构模块,提升代码的可维护性、扩展性和健壮性。本文将结合Python的动态特性,解析单例模式工厂模式观察者模式等经典设计模式的实现原理与行业应用,帮助读者构建“可复用、易扩展”的代码体系。

一、创建型模式:对象创建的“智能工厂”

1. 单例模式(Singleton):全局唯一的“资源管家”

核心思想:确保一个类在整个应用中只有一个实例,并提供全局访问点。
Python实现

  • 装饰器方式:通过装饰器控制类的实例化过程:
    def singleton(cls):instances = {}def wrapper(*args, **kwargs):if cls not in instances:instances[cls] = cls(*args, **kwargs)return instances[cls]return wrapper@singleton
    class Database:def __init__(self, url: str):self.url = urlself.connect()  # 初始化数据库连接# 使用示例
    db1 = Database("mysql://localhost")
    db2 = Database("postgresql://localhost")  # 实际仍返回第一个实例
    print(db1 is db2)  # 输出:True
    
  • 元类方式:通过自定义元类控制实例创建:
    class SingletonMeta(type):_instances = {}def __call__(cls, *args, **kwargs):if cls not in cls._instances:cls._instances[cls] = super().__call__(*args, **kwargs)return cls._instances[cls]class Logger(metaclass=SingletonMeta):def log(self, message: str):print(f"[日志] {message}")# 使用示例
    logger1 = Logger()
    logger2 = Logger()
    logger1.log("初始化完成")  # 输出:[日志] 初始化完成
    

行业应用

  • 数据库连接池:确保全局唯一的数据库连接,避免资源浪费。
  • 配置中心:存储全局配置信息,保证所有模块访问一致。
  • 日志系统:集中管理日志记录,避免多实例冲突。
2. 工厂模式(Factory):对象创建的“抽象工厂”

核心思想:将对象的创建逻辑与使用逻辑分离,根据条件动态创建对象。
Python实现

  • 简单工厂
    class AnimalFactory:@staticmethoddef create_animal(animal_type: str):if animal_type == "dog":return Dog()elif animal_type == "cat":return Cat()else:raise ValueError("Invalid animal type")# 使用示例
    dog = AnimalFactory.create_animal("dog")
    dog.speak()  # 输出:汪汪汪!
    
  • 抽象工厂
    from abc import ABC, abstractmethodclass CarFactory(ABC):@abstractmethoddef create_engine(self):pass@abstractmethoddef create_tire(self):passclass EconomyCarFactory(CarFactory):def create_engine(self):return "经济型引擎"def create_tire(self):return "普通轮胎"# 使用示例
    factory = EconomyCarFactory()
    engine = factory.create_engine()  # 输出:经济型引擎
    

行业应用

  • 游戏开发:动态创建不同类型的角色或道具。
  • Web框架:根据配置创建不同的数据库连接或API路由。
  • 数据分析:根据数据类型生成不同的处理管道。
3. 建造者模式(Builder):复杂对象的“分步组装”

核心思想:将复杂对象的创建过程与表示分离,允许通过不同步骤构建对象。
Python实现

class ComputerBuilder:def __init__(self):self.computer = Computer()def add_cpu(self, cpu: str):self.computer.cpu = cpureturn selfdef add_ram(self, ram: int):self.computer.ram = ramreturn selfdef build(self):return self.computer# 使用示例
computer = ComputerBuilder() \.add_cpu("Intel i7") \.add_ram(16) \.build()

行业应用

  • 游戏场景构建:分步创建地图、角色、道具等复杂场景。
  • 数据管道:逐步构建数据清洗、转换、分析的流程。
  • 配置系统:动态组合不同配置项生成最终配置。

二、结构型模式:对象组合的“架构艺术”

1. 代理模式(Proxy):对象访问的“安全网关”

核心思想:通过代理对象控制对原始对象的访问,实现延迟加载、权限控制等功能。
Python实现

class RealSubject:def request(self):print("真实对象处理请求")class Proxy:def __init__(self, real_subject: RealSubject):self.real_subject = real_subjectdef request(self):print("代理预处理")self.real_subject.request()print("代理后处理")# 使用示例
proxy = Proxy(RealSubject())
proxy.request()

行业应用

  • 远程代理:隐藏远程服务的网络细节,如调用第三方API。
  • 虚拟代理:延迟加载大对象,如图片或视频文件。
  • 保护代理:控制敏感资源的访问权限,如用户认证。
2. 装饰器模式(Decorator):对象功能的“动态增强”

核心思想:通过包装对象动态添加功能,而不改变其原始结构。
Python实现

class Component:def operation(self):passclass ConcreteComponent(Component):def operation(self):print("基础功能")class Decorator(Component):def __init__(self, component: Component):self.component = componentdef operation(self):self.component.operation()class LogDecorator(Decorator):def operation(self):print("记录日志")super().operation()# 使用示例
component = LogDecorator(ConcreteComponent())
component.operation()  # 输出:记录日志\n基础功能

行业应用

  • 权限验证:为函数或方法动态添加权限检查。
  • 性能监控:统计函数执行时间或资源消耗。
  • 缓存管理:缓存函数结果以避免重复计算。
3. 适配器模式(Adapter):对象接口的“翻译器”

核心思想:将一个类的接口转换为另一个接口,使不兼容的类可以协同工作。
Python实现

class Target:def request(self):print("目标接口请求")class Adaptee:def specific_request(self):print("适配者特定请求")class Adapter(Target):def __init__(self, adaptee: Adaptee):self.adaptee = adapteedef request(self):self.adaptee.specific_request()# 使用示例
adapter = Adapter(Adaptee())
adapter.request()  # 输出:适配者特定请求

行业应用

  • 遗留系统集成:将旧系统接口转换为新系统接口。
  • 第三方库适配:统一不同库的接口风格。
  • 数据格式转换:将不同数据源的格式转换为统一格式。

三、行为型模式:对象交互的“协议规范”

1. 观察者模式(Observer):对象状态的“事件广播”

核心思想:定义对象间的一对多依赖关系,当一个对象状态变化时,所有依赖者自动收到通知。
Python实现

class Subject:def __init__(self):self.observers = []def attach(self, observer):self.observers.append(observer)def detach(self, observer):self.observers.remove(observer)def notify(self, message: str):for observer in self.observers:observer.update(message)class Observer:def update(self, message: str):passclass ConcreteObserver(Observer):def update(self, message: str):print(f"收到通知:{message}")# 使用示例
subject = Subject()
observer = ConcreteObserver()
subject.attach(observer)
subject.notify("系统更新")  # 输出:收到通知:系统更新

行业应用

  • 事件驱动系统:处理用户输入、网络请求等异步事件。
  • UI框架:组件状态变化时自动更新界面。
  • 实时数据监控:监控股票价格、传感器数据等实时变化。
2. 策略模式(Strategy):算法的“动态切换”

核心思想:定义一系列算法,将每个算法封装为独立的策略类,允许在运行时动态选择。
Python实现

from abc import ABC, abstractmethodclass DiscountStrategy(ABC):@abstractmethoddef calculate(self, price: float) -> float:passclass RegularDiscount(DiscountStrategy):def calculate(self, price: float) -> float:return price * 0.9class PremiumDiscount(DiscountStrategy):def calculate(self, price: float) -> float:return price * 0.8class Order:def __init__(self, price: float, strategy: DiscountStrategy):self.price = priceself.strategy = strategydef get_total(self) -> float:return self.strategy.calculate(self.price)# 使用示例
order = Order(1000, RegularDiscount())
print(order.get_total())  # 输出:900.0

行业应用

  • 电商促销:根据用户等级动态选择折扣策略。
  • 数据处理:根据数据类型选择不同的处理算法。
  • 路由规划:根据交通状况选择最优路径算法。
3. 状态模式(State):对象行为的“状态机”

核心思想:允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。
Python实现

from abc import ABC, abstractmethodclass State(ABC):@abstractmethoddef handle(self, context):passclass Context:def __init__(self, state: State):self.state = statedef request(self):self.state.handle(self)class ConcreteStateA(State):def handle(self, context):print("状态A处理请求")context.state = ConcreteStateB()class ConcreteStateB(State):def handle(self, context):print("状态B处理请求")context.state = ConcreteStateA()# 使用示例
context = Context(ConcreteStateA())
context.request()  # 输出:状态A处理请求
context.request()  # 输出:状态B处理请求

行业应用

  • 游戏角色状态:处理角色行走、攻击、死亡等状态切换。
  • 工作流管理:根据任务状态自动执行不同操作。
  • 设备状态监控:监控设备的开机、运行、故障等状态。

四、行业案例解析:设计模式的实战应用

1. 金融风控系统:策略模式与观察者模式的结合

场景:根据交易类型动态选择风险评估策略,并实时通知风控人员。

# 策略模式:风险评估策略
class RiskStrategy(ABC):@abstractmethoddef evaluate(self, transaction: dict) -> bool:passclass HighRiskStrategy(RiskStrategy):def evaluate(self, transaction: dict) -> bool:return transaction["amount"] > 10000# 观察者模式:风控通知
class RiskManager(Subject):def process_transaction(self, transaction: dict):for strategy in self.strategies:if strategy.evaluate(transaction):self.notify("高风险交易")break# 使用示例
manager = RiskManager()
manager.attach(风控人员A)
manager.process_transaction({"amount": 15000})  # 输出:高风险交易
2. 游戏开发:单例模式与工厂模式的结合

场景:全局唯一的游戏管理器动态创建不同类型的角色。

# 单例模式:游戏管理器
@singleton
class GameManager:def __init__(self):self.factory = CharacterFactory()def create_character(self, character_type: str):return self.factory.create(character_type)# 工厂模式:角色工厂
class CharacterFactory:def create(self, character_type: str):if character_type == "warrior":return Warrior()elif character_type == "mage":return Mage()# 使用示例
manager = GameManager()
warrior = manager.create_character("warrior")
3. Web开发:装饰器模式与适配器模式的结合

场景:为API接口动态添加权限验证,并适配不同数据库。

# 装饰器模式:权限验证
def auth_required(func):def wrapper(*args, **kwargs):if not current_user.is_authenticated:raise PermissionDenied()return func(*args, **kwargs)return wrapper# 适配器模式:数据库适配
class DatabaseAdapter:def __init__(self, database: Database):self.database = databasedef query(self, sql: str):return self.database.execute(sql)# 使用示例
@auth_required
def get_data():adapter = DatabaseAdapter(MongoDB())return adapter.query("SELECT * FROM users")

五、进阶技巧:设计模式的深度优化

1. 动态类型与鸭子类型的融合

Python特性

  • 鸭子类型:无需显式继承,只要对象实现特定方法即可参与多态。
    class Duck:def quack(self):print("嘎嘎嘎!")class Person:def quack(self):print("模仿鸭子叫")def make_quack(duck):duck.quack()# 使用示例
    make_quack(Duck())  # 输出:嘎嘎嘎!
    make_quack(Person()) # 输出:模仿鸭子叫
    
  • 动态类型:灵活切换对象类型,实现“运行时多态”。
2. 设计模式与框架的结合

框架应用

  • Django:使用工厂模式创建模型实例,装饰器模式添加中间件。
  • Flask:使用适配器模式处理不同请求类型,观察者模式实现信号机制。
  • PyTorch:使用策略模式选择不同的优化器,状态模式管理模型训练状态。
3. 避免过度设计:权衡模式与简单性

实践建议

  • 简单优先:对于小型项目,优先使用简单代码而非模式。
  • 问题驱动:根据实际问题选择模式,避免为模式而模式。
  • 渐进式重构:在代码复杂度上升时逐步引入模式。

六、总结:从“模式应用”到“架构设计”的思维跃迁

本文展示了设计模式在提升代码质量中的显著优势:

  • 可维护性:模式将复杂逻辑分解为可复用的模块。
  • 可扩展性:模式支持灵活的功能扩展,符合开闭原则。
  • 可测试性:模式分离关注点,便于单元测试和集成测试。

当然,设计模式并非“银弹”。对于简单脚本或临时需求,过度使用模式可能导致代码复杂化。但在中大型项目中,尤其是需要长期维护的系统,设计模式能显著提升开发效率与系统稳定性。

行动建议

  1. 从简单模式开始:先应用单例模式或工厂模式,逐步熟悉设计模式思维。
  2. 学习标准库实现:参考collections.abc中的抽象基类,理解模式设计范式。
  3. 分析开源项目:研究Django、Flask等框架的代码,观察模式的实际应用。

通过“设计模式”这个维度,我们进一步理解了面向对象编程的价值——它不仅是代码的组织方式,更是解决复杂问题的方法论。当设计模式与业务逻辑深度契合时,代码将成为可维护、可扩展的“活架构”,这正是软件工程的高阶境界。

相关文章:

Python类的力量:第六篇:设计模式——Python面向对象编程的“架构蓝图”

文章目录 前言:从“代码堆砌”到“模式复用”的思维跃迁 一、创建型模式:对象创建的“智能工厂”1. 单例模式(Singleton):全局唯一的“资源管家”2. 工厂模式(Factory):对象创建的“…...

[实战]用户系统-2-完善登录和校验以及VIP

这里写目录标题 完善登录和校验新建lib-auth创建配置引入配置和JWT完善登录基本登录单点登录多点登录校验和拦截编写守卫编写装饰器使用完善VIP修改mysql模型编写vip守卫代码进度完善登录和校验 之前我们模拟过用户的登录,本节将实现token的生成,校验,redis做黑名单。我们需…...

负载均衡笔记

并发数—同时服务的调用方的数量 吞吐量—单位时间内,能接受和返回的数据请求量 TPS。 Transaction事务 QPS。Query 请求/查询 优化点: 减少并发数—防止并非过高 低级—限流—可用的用户少了?! 多开几个口—分流 DNS 解析域…...

印度语言指令驱动的无人机导航!UAV-VLN:端到端视觉语言导航助力无人机自主飞行

作者:Pranav Saxena, Nishant Raghuvanshi and Neena Goveas单位:比尔拉理工学院(戈瓦校区)论文标题:UAV-VLN: End-to-End Vision Language guided Navigation for UAVs论文链接:https://arxiv.org/pdf/250…...

mysql都有哪些锁?

MySQL中的锁机制是确保数据库并发操作正确性和一致性的重要组成部分,根据锁的粒度、用途和特性,可以分为多种类型。以下是MySQL中常见的锁及其详细说明: 一、按锁的粒度划分 行级锁(Row-level Locks) 描述:…...

解锁未来AI:使用DACA模式和Agentic技术提高开发效率

学习Agentic AI:Dapr Agentic Cloud Ascent (DACA)设计模式的应用与演进 背景介绍 近年来,Agentic AI(代理型人工智能)的概念在学术界和产业界掀起了一阵热潮。Agentic AI指的是能够自主感知、决策和行动的智能体系统,它们不仅改变了我们与技术互动的方式,也为行业发展…...

HarmonyOS NEXT 使用 relationalStore 实现数据库操作

大家好,我是V哥。在 HarmonyOS NEXT 开发中,如何操作数据库,V 哥在测试中总结了以下学习代码,分享给你,如何想要系统学习鸿蒙开发,可以了解一下 V 哥最近刚刚上架出版的 《HarmonyOS 鸿蒙开发之路 卷2 从入…...

R语言学习--Day04--数据分析技巧

在清洗完数据,在对数据分析前,我们要懂得先梳理一下我们的逻辑,即数据是什么形式的,要进行哪种分析,有可能呈现什么特点,进而再想怎么处理数据去画图可以最大程度地凸显我们要的特点。 一般来讲&#xff0…...

SRS流媒体服务器之RTC播放环境搭建

环境概述 srs版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. rtc.conf # WebRTC streaming config for SRS. # see full.…...

Android 性能优化入门(三)—— ANR 问题分析

需要清楚 ANR 的概念、类型、如何产生以及如何定位分析。 1、概述 1.1 ANR 的概念 ANR&#xff08;Application Not Responding&#xff09;应用程序无响应。如果你应用程序在主线程被阻塞太长时间&#xff0c;就会出现 ANR&#xff0c;通常出现 ANR&#xff0c;系统会弹出一…...

用HTML5实现实时ASCII艺术摄像头

用HTML5实现实时ASCII艺术摄像头 项目简介 这是一个将摄像头画面实时转换为ASCII字符艺术的Web应用&#xff0c;基于HTML5和原生JavaScript实现。通过本项目可以学习到&#xff1a; 浏览器摄像头API的使用Canvas图像处理技术实时视频流处理复杂DOM操作性能优化技巧 功能亮点…...

鸿蒙Flutter实战:22-混合开发详解-2-Har包模式引入

以 Har 包的方式加载到 HarmonyOS 工程 创建工作 创建一个根目录 mkdir ohos_flutter_module_demo这个目录用于存放 flutter 项目和鸿蒙项目。 创建 Flutter 模块 首先创建一个 Flutter 模块&#xff0c;我们选择与 ohos_app 项目同级目录 flutter create --templatemodu…...

游戏引擎学习第302天:使用精灵边界进行排序

在 game_render_group.cpp 中&#xff1a;正确计算 GetBoundFor() 里的 SpriteBound 值 我们正在进行游戏的排序问题调试。虽然这是一个二维游戏&#xff0c;但包含一些三维元素&#xff0c;因此排序变得比较复杂和棘手。混合二维和三维元素时&#xff0c;需要依赖一些比较主观…...

SpringBoot+MyBatis

切换数据库连接词 引入数据库连接词的依赖&#xff0c;配置数据库连接池的类型&#xff1b; 编写测试类&#xff1a; package org.example.threelayerdecouplingdomeapplication2;import org.example.threelayerdecouplingdomeapplication2.mapper.UserMapper; import org.ex…...

wireshark: Display Filter Reference

https://www.wireshark.org/docs/dfref/// 这个里面的扩展功能还是很强大&#xff0c;可以帮着问题分析。支持大量的自定义化的字段读取功能&#xff0c;支持很多的协议。 https://www.wireshark.org/docs/dfref///f/frame.html frame.time_delta Time delta from previous ca…...

Java基础 Day19

一、泛型&#xff08;JDK5引入&#xff09; 1、基本概念 在编译阶段约束操作的数据类型&#xff0c;并进行检查 好处&#xff1a;统一数据类型&#xff0c;将运行期的错误提升到了编译期 泛型的默认类型是 Object 2、泛型类 在创建类的时候写上泛型 在创建具体对象的时候…...

VMware+Windows 11 跳过安装阶段微软账号登录

OOBE 阶段 来到这里 断开网络适配器 VMware右下角&#xff0c;点击网络适配器&#xff0c;断开连接 同时按下 Shift 和 F10 &#xff0c;打开命令提示符(cmd.exe) 输入 oobe\BypassNRO.cmd 并回车 接下来正常进行即可...

HarmonyOS开发-应用间跳转

1. HarmonyOS开发-应用间跳转 在鸿蒙中,我们再开发过程当中或多或少都会遇见想要从一个App的页面跳转至另一个App的页面,这个时候我们要怎么进行跳转呢,其实在HarmonyOS开发者文档中只需要用到Want对象和startAbility()方法进行跳转就可以了。 1.1. 实现 (1)我们要先准备两个…...

网工每日一练

2025/5/22.每日一练&#xff08;单选题&#xff09; 路由器在查找路由表时存在最长匹配原则&#xff0c;这里的长度指的是以下哪个参数&#xff1f; A. NextHopIP地址的大小 B. 路由协议的优先级 C. Cost D. 掩码的长度 路由器在查找路由表时遵循的最长匹配原则中&#xff0c;“…...

使用 Navicat 17 for PostgreSQL 时,请问哪个版本支持 PostgreSQL 的 20150623 版本?还是每个版本都支持?

&#x1f9d1;‍&#x1f4bb; PostgreSQL 用户 使用 Navicat 17 for PostgreSQL 时&#xff0c;请问哪个版本支持 PostgreSQL 的 20150623 版本&#xff1f;还是每个版本都支持&#xff1f; &#x1f9d1;‍&#x1f527; 官方技术中心 Navicat Premium 17 和 Navicat for P…...

校园二手交易系统

该交易平台分为两部分&#xff0c;前台和后台。用户在前台进行商品选购以及交易&#xff1b;管理员登录后台可以对商品进行维护&#xff0c;主要功能包含&#xff1a; 后台系统的主要功能模块如下&#xff1a; 登录功能、注册功能、后台首页 系统设置&#xff1a; 菜单管理、…...

基于pycharm,python,flask,sklearn,orm,mysql,在线深度学习sql语句检测系统

详细视频:【基于pycharm,python,flask,sklearn,orm,mysql&#xff0c;在线深度学习sql语句检测系统-哔哩哔哩】 https://b23.tv/JLQDwNn...

LangChain02-Agent与Memory模块

Agent与Memory模块深度解析 1. Agent模块原理 1.1 ReAct框架的实现机制 Agent是LangChain中最具智能化的组件&#xff0c;其核心思想基于 ReAct框架&#xff08;Reasoning Acting&#xff09;&#xff0c;即通过 思维&#xff08;Thought&#xff09; 和 行动&#xff08;Ac…...

upload-labs通关笔记-第17关文件上传之二次渲染gif格式

系列目录 upload-labs通关笔记-第1关 文件上传之前端绕过&#xff08;3种渗透方法&#xff09; upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客 upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客 upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN…...

计算机网络学习20250525

应用层协议原理 创建一个网络应用,编写应用程序,这些应用程序运行在不同的端系统上,通过网络彼此通信 不需要在网络核心设备(路由器,交换机)上写应用程序网络应用程序工作在网络层以下将应用程序限制在端系统上促进应用程序迅速研发和部署,将复杂问题放到网络边缘网络应…...

STM32中的SPI通信协议

IIC和SPI的对比 IIC是半双工的通信&#xff0c;无法同时收发信息&#xff1b;SPI是全双工通讯&#xff0c;可以同时收发信息&#xff1b;IIC的通讯协议较复杂&#xff0c;而SPI通讯协议较简单&#xff1b;IIC需要通过地址选择从机&#xff0c;而SPI只主要一个引脚即可选中从机…...

从版本控制到协同开发:深度解析 Git、SVN 及现代工具链

前言&#xff1a;在当今软件开发的浪潮中&#xff0c;版本控制与协同开发无疑扮演着举足轻重的角色。从最初的单兵作战到如今大规模团队的高效协作&#xff0c;一套成熟且得力的版本控制系统以及围绕其构建的现代工具链&#xff0c;已然成为推动软件项目稳步前行的关键引擎。今…...

redis Pub/Sub 简介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)

Redis Pub/Sub 简介&#xff1a;PUBLISH、SUBSCRIBE、PSUBSCRIBE Redis Pub/Sub 是一种强大的消息传递范例&#xff0c;可在应用程序的不同部分之间实现实时通信。它是构建可扩展和响应式系统的基石&#xff0c;允许组件在没有直接依赖的情况下进行交互。本章将全面介绍 Redis…...

《黄帝内经》数学建模与形式化表征方式的重构

黄帝内经的数学概括&#xff1a;《黄帝内经》数学建模与形式化表征方式的重构 摘要&#xff1a;《黄帝内经》通过现代数学理论如动力系统、代数拓扑和随机过程&#xff0c;被重构为一个形式化的人体健康模型。该模型包括阴阳动力学的微分几何、五行代数的李群结构、经络拓扑与同…...

PyTorch Image Models (timm) 技术指南

timm PyTorch Image Models (timm) 技术指南功能概述 一、引言二、timm 库概述三、安装 timm 库四、模型加载与推理示例4.1 通用推理流程4.2 具体模型示例4.2.1 ResNeXt50-32x4d4.2.2 EfficientNet-V2 Small 模型4.2.3 DeiT-3 large 模型4.2.4 RepViT-M2 模型4.2.5 ResNet-RS-1…...