阿里发布新开源视频生成模型Wan-Video,支持文生图和图生图,最低6G就能跑,ComFyUI可用!
Wan-Video 模型介绍:包括 Wan-Video-1.3B-T2V 和 Wan-Video-14B-T2V 两个版本,分别支持文本到视频(T2V)和图像到视频(I2V)生成。14B 版本需要更高的 VRAM 配置。
Wan2.1 是一套全面开放的视频基础模型,旨在突破视频生成的界限。Wan2.1 具有以下几个关键特性:
-
SOTA 性能:Wan2.1 在多个基准测试中始终优于现有的开源模型和最先进的商业解决方案。
-
支持消费级 GPU:T2V-1.3B 型号仅需 8.19 GB VRAM,可兼容几乎所有消费级 GPU。它可在约 4 分钟内用 RTX 4090 生成一段 5 秒的 480P 视频(未使用量化等优化技术),性能甚至可与一些闭源型号相媲美。
-
多任务:Wan2.1 在文本转视频、图像转视频、视频编辑、文本转图像、视频转音频方面表现出色,推动了视频生成领域的发展。
-
视觉文本生成:Wan2.1是第一个能够生成中英文文本的视频模型,具有强大的文本生成功能,可增强其实际应用。
-
强大的视频 VAE:Wan-VAE 提供卓越的效率和性能,可对任意长度的 1080P 视频进行编码和解码,同时保留时间信息,使其成为视频和图像生成的理想基础。
相关链接
-
推理链接:https://github.com/modelscope/DiffSynth-Studio/tree/main/examples/wanvideo?continueFlag=79104c0ee2c31191b38f9b2c59a528d9
-
模型链接:https://huggingface.co/Wan-AI?continueFlag=79104c0ee2c31191b38f9b2c59a528d9
-
comfyui:https://github.com/kijai/ComfyUI-WanVideoWrapper?continueFlag=79104c0ee2c31191b38f9b2c59a528d9
-
官网:https://wan.video/welcome?spm=a2ty_o02.30011076.0.0.118ce41e6cpA82
介绍
Wan2.1-I2V-14B
I2V-14B 模型的表现超越了领先的闭源模型以及所有现有的开源模型,达到了 SOTA 性能。它能够根据输入的文本和图像生成展示复杂视觉场景和运动模式的视频,包括 480P 和 720P 分辨率的模型。
Wan2.1-T2V-14B
T2V-14B 模型在开源和闭源模型中创下了 SOTA 性能新高,展现出其能够生成具有大量运动动态的高质量视觉效果的能力。它还是唯一能够同时生成中英文文本的视频模型,并支持 480P 和 720P 分辨率的视频生成。
Wan2.1-T2V-1.3B
T2V-1.3B 模型支持在几乎所有消费级 GPU 上生成视频,仅需 8.19 GB BRAM 即可生成 5 秒的 480P 视频,在 RTX 4090 GPU 上输出时间仅为 4 分钟。通过预训练和蒸馏过程,它超越了更大的开源模型,甚至达到了与一些先进的闭源模型相当的性能。
Wan2.1 以主流的扩散变换器范式为基础,通过一系列创新显著提升了生成能力,包括我们新颖的时空变分自动编码器 (VAE)、可扩展的预训练策略、大规模数据构建和自动化评估指标。这些贡献共同提升了模型的性能和多功能性。
3D 变分自动编码器
我们提出了一种专为视频生成而设计的新型 3D 因果 VAE 架构。我们结合了多种策略来改善时空压缩、减少内存使用并确保时间因果关系。这些增强功能不仅使我们的 VAE 更高效、更可扩展,而且更适合与 DiT 等基于扩散的生成模型集成。
为了高效支持任意长视频的编码和解码,我们在 3D VAE 的因果卷积模块中实现了特征缓存机制。具体来说,视频序列帧数遵循 1 + T 输入格式,因此我们将视频分成 1 + T/4 个块,与潜在特征的数量一致。在处理输入视频序列时,该模型采用逐块策略,其中每个编码和解码操作仅处理与单个潜在表示相对应的视频块。基于时间压缩比,每个处理块中的帧数最多限制为 4,从而有效防止 GPU 内存溢出。 实验结果表明,我们的视频 VAE 在两个指标上都表现出了极具竞争力的性能,展现了卓越视频质量和高处理效率的双重优势。值得注意的是,在相同的硬件环境(即单个 A800 GPU)下,我们的 VAE 的重建速度比现有的 SOTA 方法(即 HunYuanVideo)快 2.5 倍。由于我们的 VAE 模型的小尺寸设计和特征缓存机制,这种速度优势将在更高分辨率下得到进一步体现。
视频传播 DiT
Wan2.1 采用主流 Diffusion Transformers 范式中的 Flow Matching 框架进行设计。在我们的模型架构中,我们利用 T5 Encoder 对输入的多语言文本进行编码,并在每个 Transformer 块内加入交叉注意力机制,将文本嵌入到模型结构中。此外,我们还使用 Linear 层和 SiLU 层来处理输入的时间嵌入,并分别预测六个调制参数。此 MLP 在所有 Transformer 块之间共享,每个块都学习一组不同的偏差。我们的实验结果表明,在相同的参数规模下,这种方法可以显著提高性能。因此,我们在 1.3B 和 14B 模型中都实现了此架构。
模型扩展和训练效率
在训练过程中,我们使用 FSDP 进行模型分片,当与上下文并行 (CP) 结合时,FSDP 组和 CP 组相交,而不是形成模型并行 (MP) 和 CP/DP 的嵌套组合。在 FSDP 中,DP 大小等于 FSDP 大小除以 CP 大小。在满足内存和单批次延迟要求后,我们使用 DP 进行扩展。
在Inference过程中,为了降低扩展到多GPU时生成单个视频的延迟,需要选择Context Parallel进行分布式加速。另外当模型很大时,需要进行模型分片。
-
模型分片策略:对于 14B 这样的大型模型,必须考虑模型分片。考虑到序列长度通常很长,FSDP 与 TP 相比通信开销较小,并且允许计算重叠。因此,我们选择 FSDP 方法进行模型分片,与我们的训练方法一致(注意:仅分片权重而不实现数据并行)。
-
上下文并行策略:采用与训练时相同的 2D 上下文并行方法:对外层(机器间)采用 RingAttention,对内层(机器内)采用 Ulysses。 在万14B大模型上,采用2D Context Parallel和FSDP并行策略,DiT实现了接近线性的加速比,如下图所示。
下表中我们测试了不同Wan2.1模型在不同GPU上的计算效率,结果以总时间(s)/峰值GPU内存(GB)的格式呈现。
图像转视频
图像到视频 (I2V) 任务旨在根据输入提示将给定图像动画化为视频,从而增强视频生成的可控性。我们引入额外的条件图像作为第一帧来控制视频合成。具体而言,条件图像沿时间轴与零填充帧连接,形成指导帧。然后,这些指导帧由 3D 变分自动编码器 (VAE) 压缩为条件潜在表示。此外,我们引入了一个二元掩码,其中 1 表示保留的帧,0 表示需要生成的帧。掩码的空间大小与条件潜在表示匹配,但掩码与目标视频共享相同的时间长度。然后,将此掩码重新排列为与 VAE 的时间步幅相对应的特定形状。噪声潜在表示、条件潜在表示和重新排列的掩码沿通道轴连接并传递通过提出的 DiT 模型。由于 I2V DiT 模型的输入通道比文本转视频 (T2V) 模型多,因此使用了额外的投影层,并用零值初始化。此外,我们使用 CLIP 图像编码器从条件图像中提取特征表示。这些提取的特征由三层多层感知器 (MLP) 投影,用作全局上下文。然后通过解耦交叉注意力将此全局上下文注入 DiT 模型。
数据
我们整理并去重了一个包含大量图像和视频数据的候选数据集。在数据整理过程中,我们设计了一个四步数据清理流程,重点关注基本维度、视觉质量和运动质量。通过强大的数据处理流程,我们可以轻松获得高质量、多样化、大规模的图像和视频训练集。
与 SOTA 的比较
为了评估 Wan2.1 的性能,我们将 Wan2.1 与领先的开源和闭源模型进行了比较。我们使用精心设计的 1,035 个内部提示集进行测试,这些提示集涵盖了 14 个主要维度和 26 个子维度,涵盖了运动质量、视觉质量、风格和多目标等方面。最终,我们根据每个维度的重要性通过加权平均计算总分。详细结果如下表所示。从这些结果可以看出,我们的模型在与闭源和开源模型的全面比较中取得了最佳性能。
相关文章:
阿里发布新开源视频生成模型Wan-Video,支持文生图和图生图,最低6G就能跑,ComFyUI可用!
Wan-Video 模型介绍:包括 Wan-Video-1.3B-T2V 和 Wan-Video-14B-T2V 两个版本,分别支持文本到视频(T2V)和图像到视频(I2V)生成。14B 版本需要更高的 VRAM 配置。 Wan2.1 是一套全面开放的视频基础模型&…...
安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道
安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…...
moodle 开源的在线学习管理系统(LMS)部署
一、Moodle 简介 Moodle(Modular Object-Oriented Dynamic Learning Environment)是一个开源的在线学习管理系统(LMS),广泛应用于教育机构和企业培训。其核心功能包括课程管理、作业提交、在线测试、论坛互动和成绩跟…...
设备树的概念
可以理解为设备树的树干是系统总线,树枝上面是其他的不同的通信协议线。对于不同通信协议的设备挂载在对应的节点即可 在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。 引入了设…...
【ArcGIS】地理坐标系
文章目录 一、坐标系理论体系深度解析1.1 地球形态的数学表达演进史1.1.1 地球曲率的认知变化1.1.2 参考椭球体参数对比表 1.2 地理坐标系的三维密码1.2.1 经纬度的本质1.2.2 大地基准面(Datum)的奥秘 1.3 投影坐标系:平面世界的诞生1.3.1 投…...
MATLAB控制函数测试要点剖析
一、功能准确性检验 基础功能核验 针对常用控制函数,像用于传递函数建模的 tf 、构建状态空间模型的 ss ,以及开展阶跃响应分析的 step 等,必须确认其能精准执行基础操作。以 tf 函数为例,在输入分子与分母系数后,理…...
如何让一个类作为可调用对象被thread调用?
如何让一个类作为可调用对象,被 std::thread 调用 在 C 中,可以让一个类对象作为可调用对象(Callable Object),然后用 std::thread 进行调用。要实现这一点,主要有三种方法: 重载 operator()&…...
OpenWrt 串口终端常用命令---拓展篇
以下进一步拓展 OpenWrt 串口终端常用命令,新增更多高级操作与场景化工具,助你深入掌握系统管理与调试技巧: 一、系统信息与状态查询(扩展) 硬件详细探测 cat /proc/mtd # 查看 Flash 分区表(MTD 设备) mtd info # 显示 MTD 分…...
线上接口tp99突然升高如何排查?
当线上接口的 TP99 突然升高时,意味着该接口在 99% 的情况下响应时间变长,这可能会严重影响系统的性能和用户体验。可以按照下面的步骤进行排查。这里我们先说明一下如何计算tp99:监控系统计算 TP99(第 99 百分位数的响应时间&…...
如何借助人工智能AI模型开发一个类似OpenAI Operator的智能体实现电脑自动化操作?
这几天关于Manus的新闻铺天盖地,于是研究了一下AI智能体的实现思路,发现Openai 的OpenAI Operator智能体已经实现了很强的功能,但是每月200美金的价格高不可攀,而Manus的邀请码据说炒到了几万块!就想能不能求助人工智能…...
langchain系列(终)- LangGraph 多智能体详解
目录 一、导读 二、概念原理 1、智能体 2、多智能体 3、智能体弊端 4、多智能体优点 5、多智能体架构 6、交接(Handoffs) 7、架构说明 (1)网络 (2)监督者 (3)监督者&…...
springboot旅游管理系统设计与实现(代码+数据库+LW)
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息&a…...
【前端跨域】WebSocket如何实现跨域通信?原理、实践与安全指南
在实时通信场景(如在线聊天、实时数据推送)中,WebSocket因其高效的双向通信能力成为首选技术 然而,当客户端与服务器部署在不同源时,跨域问题同样可能阻碍WebSocket的连接 一、WebSocket与跨域的关系 WebSocket的跨…...
Go红队开发—格式导出
文章目录 输出功能CSV输出CSV 转 结构体结构体 转 CSV端口扫描结果使用CSV格式导出 HTML输出Sqlite输出nmap扫描 JSONmap转json结构体转jsonjson写入文件json编解码json转结构体json转mapjson转string练习:nmap扫描结果导出json格式 输出功能 在我们使用安全工具的…...
Sharp 存在任意文件读取漏洞( DVB-2025-8923)
免责声明 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x01…...
C++数组,链表,二叉树的内存排列是什么样的,结构体占多大内存如何计算,类占多大内存如何计算,空类的空间是多少,为什么?
C数组是连续存储的,C数组元素依次存放在相邻的内存地址之中,并且内存大小相同。 C链表是离散存储的,C链表是由节点构成的,每个节点之中存在节点的值以及指向下一个节点的指针,每个节点是动态分配的。 C二叉树也是离散…...
【vLLM 教程】使用 TPU 安装
vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/ vLLM 使用 PyTorch XLA 支持 Google Cloud TPU。 依赖环境 Google Cloud TPU …...
【RAG】基于向量检索的 RAG (BGE示例)
RAG机器人 结构体 文本向量化: 使用 BGE 模型将文档和查询编码为向量。 (BGE 是专为检索任务优化的开源 Embedding 模型,除了本文API调用,也可以通过Hugging Face 本地部署BGE 开源模型) 向量检索: 从数据库中找到与查询相关的文…...
【RAG】RAG 系统的基本搭建流程(ES关键词检索示例)
RAG 系统的基本搭建流程 搭建过程: 文档加载,并按一定条件切割成片段将切割的文本片段灌入检索引擎封装检索接口构建调用流程:Query -> 检索 -> Prompt -> LLM -> 回复 1. 文档的加载与切割 # !pip install --upgrade openai…...
PSIM积累经验
1、三极管的部署报错。 出错信息: 元件: R 名称: R2 Error: The RLC branch R2 is connected to the gate node of the switch Q1. The gate node should be connected to an On-Off Controller output. Refer to the switch Help p…...
C++之vector类(超详解)
这节我们来学习一下,C中一个重要的工具——STL,这是C中自带的一个标准库,我们可以直接调用这个库中的函数或者容器,可以使效率大大提升。这节我们介绍STL中的vector。 文章目录 前言 一、标准库类型vector 二、vector的使用 2.…...
Go学习笔记
<!-- 注意* --> 初始化工程 go mod init GoDemo 结构体,接口 type i struct{} type i interface{} 条件,选择 循环 键值对 make(map[string]int) 切片,集合 make([]int,10) 函数 通道 Channel make(chan int) ch <- v…...
前端杂的学习笔记
什么是nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 Nginx是一款轻量级的Web 服务器/反向代理服务器,处理高并发能力是十分强大的,并且支持热部署,启动简单,可以做到7*24不间断运行 正代和反代 学习nginx&a…...
痉挛性斜颈护理:全方位呵护,重燃生活希望
痉挛性斜颈是一种以颈部肌肉不自主收缩导致头部向一侧扭转或倾斜为特征的疾病。对于痉挛性斜颈患者而言,科学有效的护理能够显著提升其生活质量,辅助病情的改善。 生活护理:在生活环境布置上,要充分考虑患者行动的便利性。确保室内…...
MySQL的安装以及数据库的基本配置
MySQL的安装及配置 MySQL的下载 选择想要安装的版本,点击Download下载 Mysql官网下载地址: https://downloads.mysql.com/archives/installer/ MySQL的安装 选择是自定义安装,所以直接选择“Custom”,点击“Next” …...
WangEditor快速实现版
WangEditor快速实现版 效果 案例代码 后端 package com.diy.springboot.controller;import cn.hutool.core.util.IdUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiImplicitParam; import org.sp…...
LeetCode Hot100刷题——反转链表(迭代+递归)
206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3&#…...
10.2 继承与多态
文章目录 继承多态 继承 继承的作用是代码复用。派生类自动获得基类的除私有成员外的一切。基类描述一般特性,派生类提供更丰富的属性和行为。在构造派生类时,其基类构造函数先被调用,然后是派生类构造函数。在析构时顺序刚好相反。 // 基类…...
java项目之基于ssm的智能训练管理平台(源码+文档)
项目简介 智能训练管理平台实现了以下功能: 系统可以提供信息显示和相应服务,其管理员增删改查课程信息和课程信息资料,审核课程信息预订订单,查看订单评价和评分,通过留言功能回复用户提问。 💕…...
29-验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则…...
(57)[HGAME 2023 week1]easyasm
nss:3477 [HGAME 2023 week1]easyasm 关于这个题吧,我还是和上一个题一样,我观察到了异或0x33 所以我就把result的结果跟0x33异或,然后我就就这样,做出来了...
FY-3D MWRI亮温绘制
1、FY-3D MWRI介绍 风云三号气象卫星(FY-3)是我国自行研制的第二代极轨气象卫星,其有效载荷覆 盖了紫外、可见光、红外、微波等频段,其目标是实现全球全天候、多光谱、三维定量 探测,为中期数值天气预报提供卫星观测数…...
Java集合面试题
引言 Java集合框架是Java编程中不可或缺的一部分,它提供了一系列用于存储和操作对象的接口和类。在Java面试中,集合框架的相关知识往往是必考的内容。本文将汇总一系列关于Java集合的面试题,帮助求职者更好地准备面试。 一、Java集合框架概…...
知识蒸馏综述Knowledge Distillation: A Survey解读
论文链接:Knowledge Distillation: A Survey 摘要:近年来,深度神经网络在工业界和学术界都取得了成功,尤其是在计算机视觉任务方面。深度学习的巨大成功主要归功于它能够扩展以对大规模数据进行编码,并且能够处理数十…...
ES映射知识
映射 映射类似于关系型数据库的Schema(模式)。 映射来定义字段列和存储的类型等基础信息。 {"mappings": {"properties": {"username": {"type": "keyword","ignore_above": 256 // 忽略…...
Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南
Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南 一、核心概念对比 1. 本质区别 维度过滤器(Filter)拦截器(Interceptor)规范层级Serv…...
Debian二次开发一体化工作站:提升科研效率的智能工具
在科研领域,数据处理是实验成功的关键环节之一。随着实验数据的复杂性和规模不断增加,传统的数据处理方法已经难以满足科研人员的需求。这时,一体化工作站应运而生,成为科研实验数据处理的 “智能大脑”。 一体化工作站ÿ…...
swift-5-汇编分析闭包本质
一、枚举、结构体、类都定义方法 方法占用对象的内存么? 不占用 方法的本质就是函数 方法、函数都存放在代码段,因为方法都是公共的,不管 对象一还是对对象二调用都是一样的,所以放在代码段,但是每个对象的成员不一样所…...
Linux安装升级docker
Linux 安装升级docker Linux 安装升级docker背景升级停止docker服务备份原docker数据目录移除旧版本docker安装docker ce恢复数据目录启动docker参考 安装找到docker官网找到docker文档删除旧版本docker配置docker yum源参考官网继续安装docker设置开机自启配置加速测试 Linux …...
小程序事件系统 —— 33 事件传参 - data-*自定义数据
事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参; 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成…...
推荐一些免费开源支持Vue3甘特图组件
文章目录 前言一、dhtmlxGantt二、frappe-gantt三、vue-ganttastic四、gantt-elastic五、v-gantt六、vue-gantt-schedule-timeline-calendar七、vue-gantt八、总结 前言 在现代项目管理和任务调度中,甘特图是一种非常实用的工具。它能够直观地展示任务的时间安排、…...
Dify 本地部署教程
目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下…...
nlp培训重点-5
1. LoRA微调 loader: # -*- coding: utf-8 -*-import json import re import os import torch import numpy as np from torch.utils.data import Dataset, DataLoader from transformers import BertTokenizer """ 数据加载 """cl…...
XWiki使用war部署在tomcat9
xwiki部署 官方文档,比较详细。 https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/InstallationWAR/ xwiki是基于java的开源知识库,可以替代Confluence。有多种部署方式,本文使用war方式部署在tomca下&#x…...
CTA策略【量化理论】
CTA策略演变史 全称:Commodity Trading Advisor (商品交易顾问) CTA最开始是指通过为客户提供期权、期货方面的交易建议,或者直接通过受管理的期货账户参与实际交易,来获得收益的机构或个人。 随着市场的发展&#…...
旋转编码器原理与应用详解:从结构到实战 | 零基础入门STM32第四十七步
主题内容教学目的/扩展视频旋转编码器电路原理,跳线设置,结构分析。驱动程序与调用。熟悉电路和驱动程序。 师从洋桃电子,杜洋老师 📑文章目录 一、旋转编码器是什么?二、内部结构揭秘2.1 机械组件解剖2.2 核心部件说明…...
计算机视觉cv2入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …...
基于Canvas和和原生JS实现俄罗斯方块小游戏
这里是一个完整的H5俄罗斯方块游戏,使用了 HTML CSS JavaScript (原生) 实现,支持基本的俄罗斯方块玩法,如: ✅ 方块自动下落 ✅ 方向键控制移动、旋转、加速下落 ✅ 方块堆叠、消行 ✅ 计分系统 在 canvas 上绘制游戏&#x…...
阿里云 QwQ-32B 模型调研文档
阿里云 QwQ-32B 模型调研文档 ——技术解析、部署实践与微调指南 一、模型概述 QwQ-32B 是阿里云开源的轻量化大语言模型,以 320 亿参数 实现与 DeepSeek-R1(6710 亿参数)相当的推理性能。其核心优势包括: 参数效率:1/20 参数量达成竞品性能,显存需求降低 70%部署灵活性…...
【玩转23种Java设计模式】结构型模式篇:组合模式
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…...