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

吃透8图1模板,人人可以做架构

前言

在40岁老架构师 尼恩的读者交流群(50+)中,很多小伙伴问尼恩:

大佬,我们写架构方案, 需要从哪些方面展开

大佬,我们写总体设计方案需要一些技术亮点,可否发一些给我参考下

诸如此类,问法很多,但是不知道架构图长成啥样?架构方案怎么写。

40岁老架构师尼恩,不知道做过多少架构方案。也不知道指导了多少开发,完成了架构师的华丽转身。

现在,给大家提供一份如何画好架构图,和如何做好架构方案,核心的要点,展示给大家。

使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让你的主管、同事爱到 “不能自已、口水直流”

也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典》V53版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从这里获取:码云

系统架构图是为了抽象的表示软件系统的整体轮廓和各个组件之间的相互关系和约束边界,以及软件系统的物理部署和软件系统的演进方向的整体视图。好的架构图可以让干系人理解、遵循架构决策,就需要把架构信息传递出去。那么,画架构图是为了:解决沟通障碍/达成共识/减少歧义。比较流行的是4+1视图和C4视图。

一:怎么画好架构图

一个好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,前瞻性,能够与 后面的设计相呼应。

架构方案的受众分析

架构方案,也要 千人千面

在画出一个好的架构图之前, 首先应该要明确其受众,再想清楚要给他们传递什么信息

一个方案,面向不同的受众,需要有不同的视图

不是为了画图而画图,而是应该差异化分析

要进行受众分析,应该根据受众的不同,传递的信息的不同,用图准确地表达出来,最后的图可能就是在这样一些分类里。

视图的分析维度

针对不同的受众,有不同的分析图

但是,也是层层深入的

大概有下面的 8个维度

架构图1:场景视图

用于描述系统的参与者与功能用例间的关系,

反映系统的最终需求和交互设计,通常由用例图表示;

场景分析图的受众: 外部的技术或非技术人员,包括团队内部或外部的开发人员或运维人员,

架构图2:系统架构分析

系统架构分析 用于描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系统如何构建的过程,通常 子系统的 线框图表示。

架构图3:系统依赖分析(System Context Diagram)

系统依赖分析(System Context Diagram)用于描述要我们要构建的系统是什么,子系统直接的依赖关系是什么,用户是谁,需要如何融入已有的IT环境。

系统依赖分析图的受众: 外部的技术或非技术人员,包括团队内部或外部的开发人员或运维人员,

架构图4:子系统依赖分析(Container Diagram)

子系统依赖 是 系统依赖图里 ,对待建设的子系统做了一个内部依赖关系展开分析,

子系统依赖分析 主要用来描述子软件系统的内部的依赖关系,分析系统中的职责是如何分布的,子系统是如何交互的。

子系统依赖分析的受众: 外部的技术或非技术人员,包括团队内部或外部的开发人员或运维人员,

架构图5:组件架构图(Component Diagram)

组件架构图是把针对某个子系统 进行组件设计、模块设计,

组件架构图 用于 子系统 的模块关系,介绍 子系统由哪些组件/服务组成,了组件之间的关系和依赖,为软件开发如何分解交付提供了框架。

组件架构图受众:主要是给内部开发人员看的。

组件架构图的作用:为代码的组织和模块架构,提供支撑

架构图6:模块架构图

从编码的维度来说,组件内部,很多模块。模块架构分析 ,是对组件的进一步 深入分析。

模块架构分析用于描述模块划分和组成,

模块架构分析可以细化到内部包的组成设计,服务于开发人员,反映系统开发实施过程。

架构图7:逻辑架构视图

逻辑架构视图 用于描述系统模块内部的的通信时序,数据的输入输出,反映系统的功能流程与数据流程,、

通常由时序图和流程图表示。

架构图8:部署架构分析

用于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可计算机器节点上,用于指导软件系统的部署实施过程。

二: 怎么做好架构方案?

光有图是不够的,还要有方案

下面是一份P8 级专家的架构方案

提纲如下:


下面是技术方案设计模板在每一章节的简单说明,用来帮助你理清每个章节大概要写什么内容

2.1、现状

现状,主要是用来描述当前这个业务(项目)的一些基本情况介绍和相关的背景。

方案设计出来之后,是需要给你的 leader 或者团队其他成员进行评审或者查看,

一般来说,由技术委员会来评审

但是别人不可能都和你一样清楚你的项目,

因此首先,你要把你项目的基本情况和背景都说清楚,让大家达成一个共识,

大家站在同一个起点上,才能进行后面的方案评审和讨论。

业务背景

业务背景就是你这个业务的基本介绍,包括但不限于:

  • 项目名称
  • 业务描述
  • 业务难点

技术背景

技术背景就是项目是基于什么样的技术背景下来构建的,

可以是从 0 到 1 来构建,也能是基于现有的方案来优化,

但是不管是什么场景,一定都会存在相关的技术背景,因此包括但不限于:

  • 现有技术积淀
  • 现有架构描述
  • 现有系统的整体容量

2.2、需求

需求,很重要!

不管你的技术有多牛逼,都一定为需求服务的,

不管这个需求是技术需求,还是业务需求,一定都是要为需求服务。

注意:需求,这个需求可以是当下的需求,尽可能 包含未来潜在的需求。

需求越完善,后面会少走弯路。

业务需求

业务需求就是你这个业务具体要做的事情,包括但不限于:

  • 业务的功能点
  • 要提升改造的功能

业务痛点

  • 涉及到的业务痛点有哪些

性能需求

除了业务需求,还要从这个业务需求里面考虑清楚我们满足这个业务之下的性能需求点,

如果一个系统不考虑性能,可能流量一上来,服务就挂掉了。

性能需求包括但不限于:

  • 预估系统平均容量
  • 预估系统峰值容量
  • 可伸缩性
  • 其他的一些性能要求点,比如安全性等

2.3、方案描述

前面把现状和需求说清楚后,终于到了我们的重头戏,方案描述这里了。

一般,需要会有几个可选的方案,

也就是说,尽可能把相关可能的方案都描述清楚,

然后给出你认为的最合适的方案,然后让大家来评审和决策,看是否同意你的意见或者有其他更好的意见。

除非万不得已,最好,不要一只有个方案。

方案1

概述

说明一下方案的核心亮点、核心特色,核心目标,核心优势

比如说:高性能、可扩展、双写、主从分离、分库分表、扩容等。

详细说明

详细说明这里需要图文结合,

包括但不限于架构图、流程图 等。

把你整个方案的架构和模块、细节流程都描述清楚

性能目标

性能一般来说可能包含以下部分:

  • DAU:
    日活跃用户数量。一般用于反映网站、互联网应用等运营情况。
  • 平均QPS:
    可以参考淘宝的平均QPS 估算公式,进行估算。
  • 峰值QPS:
    一般可以以QPS的2~4倍计算;
资源评估

给出方案的基准数据,并按性能需求评估需要使用的资源数量。

按照预估性能需求,预估资源数量

  • 单节点并发量
  • 单节点容量
  • 应用服务器的单节点资源配置、节点数
  • 缓存的单节点资源配置、节点数
  • 数据存储的单节点资源配置、节点数
  • 消息队列的单节点资源配置、节点数
  • 反向代理的单节点资源配置、节点数
  • 搜索引擎的单节点资源配置、节点数
  • 伸缩方式
  • 高可用方式
  • 监控预警的方式
方案优缺点

列出方案的优缺点,

这个需要通过量化的指标来支撑

方案2

可选的另外一种方案,模板和上面一样。

方案对比

前面给出了多种可选的方案,那么这里就是进行一个简单的对比,

然后,给出自己的觉得最优的方案,并且给出支撑的数据、理由。

有了你自己的决策(倾向)的方案后,

当然,对于最优的方案,就应该提供更有支撑力的细化的方案和数据

2.4、线上方案

线上方案是对上面你更倾向的方案的更为细致的描述。

架构图

整体架构是如何,把架构图画上

关键设计点 和 设计折衷

把核心的关键点,用自己的 名词系统表达出来

这里有一个要求:整体是完备的、自洽的

用来确保你的方案的大体方向是 OK 的。

因为没有一个方案设计是最完美,方案设计都是逐步演进和优化的,

但是,一定是完整的、系统的、没有大漏洞的

还有,方案设计是要最符合当前的背景的。

业务流程

对于业务的核心场景,弄一个整体流程图、核心流程图出来,

然后分业务场景把各个业务场景的流程图也画出来,并且做好相关介绍

模块划分

模块的划分需要考虑我们架构设计的一些原则,

比如:架构分层、业务分模块、微服务化、高内聚低耦合 等。

然后把每个模块的功能点都说清楚

异常边界【重要】

异常边界是比较重要的,一般情况下,

大部分人都能考虑到正常的处理流程,对于异常的边界考虑的比较少,

但是线上出问题,大部分都是异常情况导致,因此这里非常重要!!!

我们可以通过一个 思维导图 去整理相关的异常边界,

这样有助于自己在实现的时候有足够的把控度,也便于别人去 review 你的方案和具体实现(如 coding)

异常边界需要考虑:

  • 涉及到了哪些模块
  • 涉及到了哪些流程
  • 每个模块、流程出现了各种可能情况的处理是?
  • 系统底层原因导致的异常的处理是 ?

监控、预警、统计

线上运行的项目,一定需要有各种监控,预警、指标统计

可以使用 公司内部的基建的监控外,

还需要从业务内部,实现自定义的一些业务监控和相关技术统计

最终的目标、保证系统的高可用、支撑系统的高可用

灰度、回滚策略

  • 如何灰度?
  • 如何回滚?

容灾方案

容灾就是当出现 IDC 异常的情况下,怎么容灾,这个可以根据实际情况去考虑。

2.5、部署架构

可以按照下面的方向,去做拓展:

  • 线上部署拓扑什么,
  • 各层的部署架构是什么
  • 多活的部署架构是什么
  • 公有云部署架构是什么

2.6、风险评估

标识所选方案的风险,提出解决此风险发生时候的应对策略,

比如:上线失败时的回滚策略。

潜在风险

  • 相关的改动有哪些风险点
  • 不兼容点?
  • 当前设计方案目前存在哪些问题?
  • 潜在有哪些问题

2.7、阶段规划【架构演进规划】

架构怎么演进

阶段如何规划

每个阶段该达成什么目标

第一阶段

目标 XXXX

第二阶段

目标 XXXX

第三阶段

目标 XXXX

2.8、投入评估

最后,需要做投入的评估,作为投资回报分析的支撑,包括:

  • 物理设备、云设备投入评估
  • 工作量评估,

这里需要细化到每个模块、

工作量评估 一般按照时间进行,一定要同时包括开发时间、联调时间、测试时间。

最好比较细化,不要太粗,

比如开发时间可以细化到接口的维度,每个接口的设计分别需要多长时间,

老马识途,找老架构取经

只要是成功走上架构师岗位的都指导, 架构之路,充满了坎坷

这个和高级开发不一样 , 架构的问题,是open的,开发式的,没有答案的

在架构设计的过程中, 会遇到无数的挫折,很多小伙伴, 就没有跨过去

其实,如果真的遇到架构难题,找有经验的人帮帮忙, 这道坎,就过去了

所以,如果遇到复杂的场景,确实不知道怎么做架构方案,怎么办?

可以来尼恩的技术自由圈(疯狂创客圈圈) 中求助.

咱们圈聚焦架构研究,这里有上1000位架构人脉,10年多架构经验的老架构师,在100位以上。

大家 什么架构方案都做过,可以给遇到困难的小伙伴,提供设计帮助、架构帮助。

推荐阅读:

《干翻 nio ,王炸 io_uring 来了 !!(图解+史上最全)》

《SpringCloud+Dubbo3 = 王炸 !》

《响应式圣经:10W字,实现Spring响应式编程自由》

《4次迭代,让我的 Client 优化 100倍!泄漏一个 人人可用的极品方案!》

《全链路异步,让你的 SpringCloud 性能优化10倍+》

《Linux命令大全:2W多字,一次实现Linux自由》

《阿里一面:你做过哪些代码优化?来一个人人可以用的极品案例》

《网易二面:CPU狂飙900%,该怎么处理?》

《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》

《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》

《场景题:假设10W人突访,你的系统如何做到不 雪崩?》

《2个大厂 100亿级 超大流量 红包 架构方案》

《Nginx面试题(史上最全 + 持续更新)》

《K8S面试题(史上最全 + 持续更新)》

《操作系统面试题(史上最全、持续更新)》

《Docker面试题(史上最全 + 持续更新)》

《Springcloud gateway 底层原理、核心实战 (史上最全)》

《Flux、Mono、Reactor 实战(史上最全)》

《sentinel (史上最全)》

《Nacos (史上最全)》

《TCP协议详解 (史上最全)》

《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》

《clickhouse 超底层原理 + 高可用实操 (史上最全)》

《nacos高可用(图解+秒懂+史上最全)》

《队列之王: Disruptor 原理、架构、源码 一文穿透》

《环形队列、 条带环形队列 Striped-RingBuffer (史上最全)》

《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》

《单例模式(史上最全)》

《红黑树( 图解 + 秒懂 + 史上最全)》

《分布式事务 (秒懂)》

《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》

《缓存之王:Caffeine 的使用(史上最全)》

《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》

《Docker原理(图解+秒懂+史上最全)》

《Redis分布式锁(图解 - 秒懂 - 史上最全)》

《Zookeeper 分布式锁 - 图解 - 秒懂》

《Zookeeper Curator 事件监听 - 10分钟看懂》

《Netty 粘包 拆包 | 史上最全解读》

《Netty 100万级高并发服务器配置》

《Springcloud 高并发 配置 (一文全懂)》

相关文章:

吃透8图1模板,人人可以做架构

前言 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴问尼恩: 大佬,我们写架构方案, 需要从哪些方面展开 大佬,我们写总体设计方案需要一些技术亮点,可否发一些给我参考下 诸如此类,问法很多…...

骨传导耳机推荐哪款好,列举几款是市面上热销的骨传导耳机

​骨传导耳机是一种新型的耳机类型,通过震动和声音将振动传到了耳道外,对耳道不会产生损伤,能够保护听力。相比于传统耳机的优势有很多,比如运动时佩戴更加稳固,也可以在听歌时与人交谈。但在市面上的骨传导耳机款式可…...

CFS三层内网渗透

目录 环境搭建 拿ubuntu主机 信息收集 thinkphp漏洞利用 上线msf 添加路由建立socks代理 bagecms漏洞利用 拿下centos主机 msf上线centos 添加路由,建立socks代理 拿下win7主机 环境搭建 设置三块虚拟网卡 开启虚拟机验证,确保所处网段正确&a…...

SQL server设置用户只能访问特定数据库、访问特定表或视图

在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认…...

linux:http服务器搭建及实验案例

目录准备工作http服务器各个配置文件大概说明实验1:访问不同ip获得不同网页实验2:同一ip访问不同端口获得不同网页准备工作 1,安装http服务 2,将 /etc/selinux/config 文件下面的 SELINUX值改为 disabled 或者 permissive 。 3&a…...

【无标题】智能工业安全用电监测与智慧能源解决方案

工业互联网已成为全球制造业发展的新趋势。在新基建的推动下,5G、人工智能、云计算等技术与传统工业深度融合,为实现智能制造提供了技术支撑,将有力促进制造强国早日实现。 十四五规划在新基建的基础上进一步加快了制造业转型升级的步伐&…...

前端白屏的检测方案,让你知道自己的页面白了

前言 页面白屏,绝对是让前端开发者最为胆寒的事情,特别是随着 SPA 项目的盛行,前端白屏的情况变得更为复杂且棘手起来( 这里的白屏是指页面一直处于白屏状态 ) 要是能检测到页面白屏就太棒了,开发者谁都不…...

编译原理【文法设计】—每个a后面至少一个b、ab个数相等,ab个数不相等的所有串

编译原理【文法设计】—设计每个a后面至少一个b、ab个数相等,ab个数不相等的文法为字母表Σ{a,b}Σ\{a,b\}Σ{a,b}上的下列每个语言设计一个文法 (a) 每个a后面至少有一个b的所有串 首先,每个a后面至少有一个b的正规式怎么写呢?每个a都需要…...

【死磕数据库专栏启动】在CentOS7中安装 MySQL5.7版本实战

文章目录前言实验环境一. 安装MySQL1.1 配置yum源1.2 安装之前的环境检查1.3 下载MySQL的包1.4 开始使用yum安装1.5 启动并测试二. 设置新密码并重新启动2.1 设置新密码2.2 重新登录测试总结前言 学习MySQL是一件比较枯燥的事情,学习开始之前要先安装MySQL数据库&a…...

23.2.23 22湖北省赛 B

好久没打卡了, 随便找的个水题写 这题是简单难度的 ab1 所以可以找到固定规律, 通过手动模拟可以发现 假设两种水叫做a水和b水 先倒入a水 1:0 倒入b水 1:1 此时水杯为 倒出一半的混合物, 因为ab水互溶, 比例不变 再加入a水或者b水将容器填满 比例现在变为 3:1 混合之后再…...

ONLYOFFICE中的chatGPT 是如何编写毕业论文以及翻译多种语言的

前言 chatGPT这款软件曾被多个国家的大学禁用,我们也多次在网上看到chatGPT帮助应届毕业生编写毕业答辩论文,但是这款软件目前还没有在国内正式上线,ONLYOFFICE7.3版本更新后呢,就添加了chatGPT该功能,并且正常使用。 …...

QT入门Containers之QStackedWidget

目录 一、QStackedWidget界面相关 1、布局介绍 2、插入界面 3、插入类界面 二、Demo展示 此文为作者原创,创作不易,转载请标明出处! 一、QStackedWidget界面相关 1、布局介绍 QStackedWidget这个控件在界面布局时,使用还…...

Java学习-IO流-字节缓冲流

Java学习-IO流-字节缓冲流 IO流体系↙ ↘字节流 字符流↙ ↘ ↙ ↘InputStream OutputStream Reader Writer↓ ↓ ↓ ↓ FileInputStream FileOutputStream FileRe…...

C++这么难,为什么我们还要学习C++?

前言 C 可算是一种声名在外的编程语言了。这个名声有好有坏,从好的方面讲,C 性能非常好,哪个编程语言性能好的话,总忍不住要跟 C 来单挑一下;从坏的方面讲,它是臭名昭著的复杂、难学、难用。当然&#xff…...

C#底层库--业务单据号生成器(定义规则、自动编号、流水号)

系列文章 C#底层库–MySQL数据库访问操作辅助类(推荐阅读) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379 C#底层库–JSON帮助类_详细(序列化、反序列化、list、datatable) 本文链接&…...

vue3项目练习大全(附github源码)

vue慢慢的成为了前端最受欢迎的框架之一,在很多项目之中开发都能用得到,如今也已经发展到3.0了,可能是因为这个框架可以提高工作效率,因此受到大家的追捧,在之前的文章里面也说过,2019年,大前端…...

SWMM从入门到实践教程 01 SWMM软件介绍

文章目录1 软件介绍2 软件面板2.1 主菜单2.1.1文件菜单(File)2.1.2 编辑菜单(Edit)2.1.3 视图菜单(View)2.1.4 工程菜单(Project)2.1.5 报告菜单(Report)2.1.…...

CSS中的text-overflow属性详解 (控制文字在一行显示,超出部分加省略号)

text-overflow: ellipsis; 表示当文本内容超出所在容器的宽度时,用省略号来代替超出的部分。white-space:nowrap; 表示文本不换行。overflow: hidden; 表示超出容器的内容将被隐藏。 将这三个加入需要控制的css的属性中,就能控制文字在一行显示&#xff…...

基于pytorch实现模型剪枝

一,剪枝分类二,PyTorch 的剪枝三,总结参考资料一,剪枝分类 所谓模型剪枝,其实是一种从神经网络中移除"不必要"权重或偏差(weigths/bias)的模型压缩技术。关于什么参数才是“不必要的”,这是一个目前依然在研究的领域。 1.1,非结构化剪枝 非结构化剪枝(U…...

写出高质量的前端代码之消除代码中的重复

软件开发中,有个很重要的DRY原则,即Dont Repeat Yourself,也就是不要重复自己。 重复的代码会带来以下问题: 开发效率低,重复造轮子不同人开发的同一类功能,质量层次不齐修改问题时可能会遗漏&#xff0c…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...