软件体系结构复习文档

news2025/1/18 4:44:15

引言:

软件体系结构是大三下学期我们学的一门专业课,这门课学院给我们安排的是一名女老师上的,课没给我留下多深的印象,女老师倒是给我留下了深刻的印象,温柔,漂亮、高挑。上完每节课老师都把ppt和资料发到我们的QQ群里面,期末的时候老师甚至自己把以前发过的ppt里面的重点给我们汇总到一个ppt上,硬生生是把我们这些不好好听课的从死亡线上拉了回来。这半个月学校的事情比较多,也没怎么更新博客,昨天和今天无意间把老师原来发过的东西打开看了看,在文档中复刻了一下,就当是纪念一下大学期间的这门课和这个老师,也是作为我这个月写作的开始。

内容:

问题:软件构件包括哪些属性?

答:

 

问题:请用据图描述基于构件的软件组装过程。

 

 

问题:什么是软件体系结构?什么是软件构件?在Spring框架中,构件的组织与管理由谁负责,构件之间的依赖关系是如何实现?

答:

软件体系结构是宏观设计,主要关注系统包括哪些部件以及这些部件之间是如何交互的。软件构件是构件有特定的接口;明确上下文依赖,能够被独立部署。由Spring框架负责;提供服务的组件是被“注入”而不是被直接“写入”到请求者的代码中的。同时,框架需要构件遵守一些特定的约定,一半需通过些配置文件的形式来被告知如何注入代码。

问题:软件架构设计的重要性是什么?

答:

软件架构是利益关注方的沟通工具,早期决策都是架构设计决定的,从总体上决定了软件设计是对的还是错的,好的架构还可以作为不断传递的财富,被重用。

问题:所有进行数据管理的桌面应用在逻辑上一般采用什么软件架构,请画图描述?在物理上采用可以采用哪三种方式的结构进行部署?

答:

 

展示层 —> 业务处理(逻辑层)—> 数据访问层

在物理上一般采用客户机/服务器模式

答:采用分层结构。

展示层:用户界面,和用户进行交互,绘制一个窗口,界面上有各种的输
入控件,用户可以通过这些控件看到数据的状态并进行数据的操作。

业务逻辑处理层:接受用户在展示层的各种操作,进行额外的处理,如判
断数据是否合法,判断用户是否有权限等各种各样的业务处理,如果有权
限再将数据保存或者读取的请求交给数据访问层,即逻辑判断。

数据访问层:把数据写入到数据库或者磁盘的代码,这些代码不是直接被
用户调用。用户在展示层进行的操作是要依靠业务逻辑层这个桥梁来对用
户的操作进行解释和处理,最终决定如何用数据访问层来进行数据的持久
化。

问题:Restful架构能解决MVC开发中的什么问题?

答:

1:为了解决展示页面和计算逻辑混杂,MVC中引入了模板引擎:模板引擎可以使写模板的人和写计算逻辑的人实现一定的解耦;

用户的接口不标准:控制器中处理用户请求的方法与requestmapping对应,当用户发过来的请求URL之后就调用controller中相应的方法去解释.

问题:Restful架构中http请求的常见方式有哪些?

答:

GET(SELECT):从服务器获取资源

-POST(CREATE/insert):在服务器新建一个资源

-PUT(UPDATE):更新资源

-PATCH(UPDATE):部分更新资源

-DELETE(DELETE):删除资源

-HEAD:获取资源头部

-OPTIONS:获取资源信息

问题:大量用户并发访问时,服务器响应变慢,用户体验较差,如何解决?

答:

垂直扩展:通过购买更好的设备,提升系统的性能,买不了的话,通过虚拟化技术来削弱机器的性能。

水瓶扩展:购买更多的机器。用户访问的仍然是单一的server,实际上由负载均衡器派送用户请求到不同server上,将所有负载分摊到不同的server上。

问题:为了提高用户的访问速度,水平扩展中服务器通过cache共享相同请求的计算结果,那么如何知道需要的请求结果在哪个cache上?

答:

哈希或一致性哈希。因为server按照一定的规则,将要存储进行分区存放到不同的cacheserver上,不需要负载均衡器。而分区的方法主要是哈希或一致性哈希,所以查找的方法就是一致性哈希。

问题:什么是微服务架构?spring框架中提供微服务的技术架构叫什么?

答:

将一个大的系统拆分成若干个独立的小系统,分别进行维护和部署,它们之间可以通过轻量级的通信协议进行通信,在功能上还是一个完整的整体,这样的设计方法称之为微服务架构。

Spring框架通过SpringCloud来提供微服务。

问题:微服务系统中为了防止因为某个服务失效而导致其他服务失效,采取什么措施?

答:

采用断路器这样的概念来解决。在微服务系统中,一方面通知调用者,使得调用者采取一些措施不要导致错误不断蔓延到其他服务。调用者将调用请求不是直接发给被调用方,而是交给断路器,由它转发给被调用者。如果被调用者产生了问题,断路器感知到该问题。通知用户或者提供一些默认的结果,以防止调用者失效、错误蔓延。

问题:Spring中通过Spring Batch支持管道过滤器架构的应用设计,请用图描述包括哪些核心构件以及它们之间的关系?

Data Source [Pipe] Filter [Pipe] Filter [Pipe] Data Sink

问题:请比较发布订阅者管理模式和观察者模式。spring框架中支持开发的技术是什么?

答:

订阅者在订阅事件的时候,只关注事件本身,而不关心谁会发布这个事件;发布者在发布时间的时候,只关注事件本身,而不关心谁订阅了这个事件。

观察者模式是松耦合,发布订阅模式发布者和订阅者是完全解耦的。

Spring框架中支持开发的技术是Spring Events。

问题:举两个例子说明什么是事件驱动架构,它包括哪些核心构件?为什么要使用事件驱动架构?事件驱动架构的实现有哪些方式,比较它们的优缺点?

答:

当软件系统中存在的一些事件发生,到值其他部分执行或者操作的设计方法叫事件驱动架构;核心部件包括:事件生产方、时间管理器部件、事件消费方、注册相应事件。

因为事件驱动架构可以实现软件系统中的松耦合原则。

实现方式由两种:分别是观察者模式和发布/订阅模式。

问题:响应式架构的实现方法是采用消息驱动通信中的发布订阅模式实现,spring的Reactive Streams定义了实现这种架构的规范,包括哪四个核心概念?

答:

1:消息发布者:只有一个subscrbei接口,是订阅者调用的,用来订阅发布者的消息。发布者在订阅者调用request之后把消息push给订阅者。

2:订阅者subscriber:包括四个接口,这些接口都由Publisher触发调用。

3:订阅Subscription:代表的是一种订阅上下文对象,它在订阅者和发布者之间进行传输。从而在两者之间形成一种契约关系。

4:处理器:Processor同时继承可Subscriber和Publisher:其代表一个处理阶段。

十三:请描述带有处理器的响应式架构程序设计步骤?

答: 

1.创建一个发布者publisher:

SubmissionPublisher publisher = new SubmissionPublisher();

2.创建一个Processor:

ReactiveProcessor processor = new ReactiveProcessor();

3.发布者将消息给processor来做处理之后转发到最终订阅者:

Publisher.subscribe(processor);

4.创建一个最终订阅者:

Flow.Subscriber subscriber = new Flow.Subscriber(){

}

5.处理器与订阅者,建立订阅关系

6.生产数据,并发布

7.结束后,关闭发布者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Android与多媒体的英文学习APP的设计

毕业设计(论文)任务书 第1页 毕业设计(论文)题目:基于Android与多媒体技术的英文学习APP的设计与实现设计(论文)要求及原始数据(资料):1.综述国…

深入理解Java虚拟机:(一)Java代码是如何运行的?

jdk 的子目录下也存在一个 jre。 而我 C盘目录下也有一个 jre。 这两个 jre 有啥联系吗? 答案是:没有联系。甚至准确的来说,它俩是一样的,无论是用哪一个都是可以的。只是很多人习惯将会单独安装另一个 jre,虽然单独…

017 | JavaWeb企业进销存管理系统源码附带毕业设计论文 | 大学生毕业设计 | 极致技术工厂

进销存管理系统是一个基于Internet的应用系统,它是一个面对当前的进销存管理工作基本还处于手工和半信息自动化处理状态而应运而生的一个基于Internet的一个完全信息自动化的系统,整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发&#xf…

100天精通Python(数据分析篇)——第68天:Pandas数据清洗函数大全

文章目录每篇前言1. duplicated()2. drop_duplicates()3. isnull()4. notnull()5. dropna()6. fillna()7. ffill()8. bfill()9. replace()10. str.replace()11. str.split.str()每篇前言 🏆🏆作者介绍:Python领域优质创作者、华为云享专家、阿…

在PostgreSQL中通过dblink兼容Oracle数据库中的自治事务

1、数据库事务原子性的局限与自治事务 1.1、事务原子性概述 如下所示,如果一个事务中有A和B两个数据的插入操作,当A的SQL语句执行成功后,因为某种原因(如服务器断电等),导致B的SQL语句执行失败&#xff0…

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.3 线程隔离【舱壁模式】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.3 线程隔离【舱壁模式】32.3.1 线程隔离【舱壁模式】32.3.2 案例32.3.3 总结32 隔…

【BBuf的CUDA笔记】一,解析OneFlow Element-Wise 算子实现

0x0. 前言 由于CUDA水平太菜,所以一直没写过这方面的笔记。现在日常的工作中已经不能离开写CUDA代码,所以准备学习ZZK随缘做一做CUDA的笔记记录一下学习到的知识和技巧。这篇文章记录的是阅读OneFlow的Element-Wise系列CUDA算子实现方案学习到的技巧&am…

MySQL主从复制与读写分离

目录 前言 一、MySQL主从复制的理解 1、MySQL的复制类型 2、MySQL主从复制的工作流程 3、MySQL架构(一主多备) 3.1 一主多备 3.2 M-S-S 3.3 M-M/双主互备 (互为主从) 3.4 M-M-M 4、MySQL主从复制延迟原因 5、MySQL主从…

FL Studio2023最新版编曲音乐制作数字音频软件

FL Studio2023即“Fruity Loops Studio”,也就是众所熟知的水果软件, 全能音乐制作环境或数字音频工作站(DAW)。FL Studio可以编曲、剪辑、录音、混音,让你的计算机成为全功能录音室。 FL Studio2023是一个完整的软件音…

学术分享 | 清华大学 康重庆:电力系统碳计量技术与应用(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥​ 📋📋📋本文目录如下:⛳️⛳️⛳️ 目录 ​ 0 写在最前面 1 学术分享 | …

MATLB|改进遗传算法优化微电网调度(考虑环境)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

Redis 高可用之持久化

Redis 高可用之持久化Redis 高可用什么是高可用Redis的高可用技术Redis持久化持久化的功能Redis提供两种方式进行持久化:RDB持久化触发条件bgsave执行流程启动时加载AOF持久化(支持秒级写入)开启AOF执行流程启动时加载RDB和AOF的优缺点RDB持久…

CSC7261M

CSC7261M是一款内置高压MOS的高性能、多工作模式的PWM控制芯片,内置多种保护机制。当系统为空载和轻载时,芯片采用Burst和Green控制模式可有效地减少了空载和轻载时的损耗。当系统为中载和重载时,CSC7261M芯片采用CCM模式可有效提升电源系统的…

校招面试中常见的算法题整理【长文】

⭐️我叫恒心,一名喜欢书写博客的研究生在读生。 原创不易~转载麻烦注明出处,并告知作者,谢谢!!! 这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧。 文章目录前言一、链表问题1 合并…

Anaconda安装详细教程

一、Anaconda下载 (1)方式一:Anaconda官网 不推荐使用官网下载: (1)官网下载速度非常慢,需要使用国内源下载 (2)官网下载的是最新版本,可能使用时会出现意料…

基于java+springboot+mybatis+vue+mysql的地方废物回收机构管理系统

项目介绍 地方废物回收机构管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知地方废物回收机构管理系统的便捷高效,不仅为用户提供了服务,而且也推广了自己,让更多的用户了解自己。对于地方废物回收机构…

【 SQLite3移植到ARM Linux教程】

SQLite3移植到ARM Linux教程1 下载 SQLite3源码2 复制并解压源码包3 配置编译选项4 编译5 去除调试信息6 复制文件7 运行测试sqlite3SQLite 是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多…

MyBatis如何处理表关联

实体类 学生表 添加对应对象 - 教师 private Teacher teacher; 2. Mapper添加对应结果集映射 collection 一对多 学科表 对 学生表 1. 实体类 学科 添加对应集合 – 学生 private List<Student> stuList; 2. Mapper添加对应结果集映射 使用ResultType实现结果多表映…

[附源码]Python计算机毕业设计Django云南美食管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Redis配置、优化以及相命令

目录 一、关系数据库和非关系型数据库 1、关系型数据库 2、非关系型数据库 二、关系型数据库和非关系型数据库区别 1、数据存储方式不同 1.1 关系型数据 1.2 非关系型数据库 2、扩展方式不同 2.1 SQL数据库 2.2 NoSQL数据库 3、对事务性的支持不同 3.1 SQL数据库 …