2021真题-架构师案例(四)

问题1(16分)

针对该系统功能,赵工建议解释器架构风格,李工建议管道过滤架构风格,王工则建议饮食调用,该系统从灵活性和可扩展性考虑,应采用哪种?

解析:

管道-过滤器:过滤器就是构件,管道就是连接件,每一个构件都是有输入和输出,经过构件内部处理前一个构件的输出时候一个构件的输入,前后数据流相关联。

解释器:可以构建解释器引擎,定义一套规则给使用者使用。

隐式调用:通过触发广播一个事件或多个事件,当某事件被触发,系统直接隐式调用其他模块的过程

答案:

灵活性方面,解释器可以灵活组装各个规则,来实现同的功能,灵活性最好。管道-过滤器可以通过管道来灵活组装每个流程的过滤器,灵活性次之,隐式调用是通过一个事件触发另一个事件,或者通过广播一个或多个事件,在灵活方面则差一点。

学习算法可扩展性,解释器可以直接配置新的规则,扩展性是最好的。管道-过滤器可以组装管道和过滤器,或者新增过滤器来实现,扩展性次之。隐式调用则扩展性差点,每次需要新增新的事件来触发。

考虑到该平台灵活定义机器学习流程需求和开发新算法组件加入平台,提高扩展性和灵活性建议选择解释器。

问题2(9分)

在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系〕于细分,造成了大量的多表关联查洵,影响了性能。例如当用户吉洵商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查讠旬性能。修改后的药品关系结构为:药品(药品ID,药品名称,药品型号药品价格,供应商ID,供应商名称,当前库存数。

请用200字以内的文字说明常见的反规范化设计方法,并说班用户查洵商品信息应该采用哪种反规范化设计方法。

解析:

  1. 增加冗余列:多个相同列字段在不同表新增。
  2. 增加派生列:需要聚合的数据新增一个字段存储。
  3. 合并表:多个表需要查询的字段合并成一个表。
  4. 拆分表:拆分又分为水平拆分和垂直拆分。水平拆分则是把表拆分成多个,所有表字段都一致。垂直拆分则是把表常用字段和不常用字段,拆分成两个表,富文本字段也可以拆分成单独的表。

该项目应采用增加冗余列方法。

问题3(9分)

王工认为,反规范化设计可提高吉洵的性能,但必然会带来数据的不一致性问题。清用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说月该系统应该采用哪种方法。

解析:

数据不一致解决方案 :

  1. 同步实时更新,每次更新冗余字段,冗余表都放在一个事务里,事务的原子性保证要么同时成功,要么同时失败。
  2. 异步更新,读取bin log日志,更新其他冗余数据。
  3. 异步更新,通过消息队列消费,如Kafka,Rocket等,通知其他冗余数据更新。

该项目对实时性要求不高,可以考虑异步更新,通过读取mysql 的binlog来解决。

问题4(7分)

该系统采厍了Redis来现某些特定功能呶当前热药品排名等),同时将药品关系数据放到内存以提高商品查讠旬的性能,但必然会造成Redis和MySQL的数据实时同步问题。

()Redis的数据类型包括String、Hash、List、set和zset等,清说班实现当前热药品排名的功能应该使用哪种数据类型。

()清用200字以内的文字解说班解决Redis和MySQL数啹实时同步问题的常见方案。

解析:

Zset来实现当前热药品排名。

被动一致性:Redis和MySQL数据同步可以采用延迟双删来解决,先删除Redis缓存数据,再更新MySQL数据,sleep一段时间(为了保证数据库已持久化),再次删除Redis缓存数据。

主动一致性开启额外服务去读取BinLog日志,来更新到Redis缓存。

问题5(9分)

采用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型,请分别介绍这三种模型,针对上述模型,说明那些模型可以软件的需求分析?

解析:

对象模型 描述了系统的静态结构对象图建模,描述了现实对象到系统数据结构的转换。

动态模型 描述了时间和操作顺序有关的特征。主要状态图表示。

功能摸索 描述了数据的输入值和输出值,主要DFD来实现。

对象模型是动态模型和功能模型的基础数据,对象模型确定发生的对象,动态模型确定什么时候发生,功能模型则是发生了什么。

问题6(8分)

请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。

解析:

网关管理方面基于云平台的可以统一在云平台管理,更方便远程管理。

数据处理方面基于云平台的数据都存储在云上,一起处理方便,冗余备份。

性能方面基于云平台的性能和安全性更好。

问题7(5分)

该系统实现用户终端与服务端的双向可靠性通信,请用300字以内的文字从数据传说可靠性对比TCP和UDP通信协议的不同,并且说明该系统用哪种协议?

解析:

TCP是在IP协议提供的不可靠基础上,采用了重发技术,为应用程序提供了一个可靠的面向连接的双全工传输服务。TCP协议适用输出数据量少,且对可靠性要求高的场景。

UDP是不可靠传输协议无连接传输协议,可以保证应用程序的通信,但是错误检测功能弱很多。

问题8:

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

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

相关文章

lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理

定义ai_mgr的类,用于管理游戏中实体的AI组件。 先定义 AI行为枚举和优先级: lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140712839?spm1001.2014.3001.55…

汕头 西月 公司的面试

1;常用的框架,tp 他的特性 2:事务,的使用的场景。 3:redis 的使用的场景 。 4:redis 集合使用的场景

软设之数据库规范化理论——模式分解

数据库规范化理论之模式分解 数据库进行分解,一个是保持函数依赖分解 假定数据库模式Q{R1,R2,R3,~~~RK}是关系模式R的一个分解,F是R上的函数依赖集,P中的每个模式RI上的FD集是Fi。如果{F1,F2,~~~&#xf…

【音视频】WebRTC的简介并使用WebRTC并直播本地

文章目录 前言WebRTC 是什么WebRTC 的主要组件为什么要使用 WebRTCWebRTC 的应用示例使用ffmpeg直播本地步骤 1:使用 FFmpeg 录制本地桌面视频并通过 WebSocket 传输步骤 2:设置 WebSocket 服务器安装 Node.js 和 npm创建 WebSocket 服务器 步骤 3&#…

[原理] 可变性卷积(deformable convolution)原理及代码解释

文章目录 前言提出问题核心思想代码理解模块初始化forward过程self.p_convself._get_pself._get_x_qself._reshape_x_offset 参考文献 前言 代码见:https://github.com/4uiiurz1/pytorch-deform-conv-v2/blob/master/deform_conv_v2.py 论文:https://ar…

【数据结构】使用栈实现综合计算器

首先初始化两个栈,数栈(numStack)用于存放数据,符号栈(operStack)用于存放运算符 计算思路 1.通过一个index值(索引)来遍历表达式 2.如果发现扫描到一个数字,就直接入数栈…

Python | TypeError: ‘function’ object is not subscriptable

Python | TypeError: ‘function’ object is not subscriptable 在Python编程中,遇到“TypeError: ‘function’ object is not subscriptable”这一错误通常意味着你尝试像访问列表、元组、字典或字符串等可订阅(subscriptable)对象那样去…

Javascript面试基础6(下)

获取页面所有checkbox 怎样添加、移除、移动、复制、创建和查找节点 在JavaScript中,操作DOM(文档对象模型)是常见的任务,包括添加、移除、移动、复制、创建和查找节点。以下是一些基本的示例,说明如何执行这些操作&a…

【Python】如何修改元组的值?

一、题目 We have seen that lists are mutable (they can be changed), and tuples are immutable (they cannot be changed). Lets try to understand this with an example. You are given an immutable string, and you want to make chaneges to it. Example >>…

Java语言程序设计——篇九(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 枚举类型 枚举类型的定义枚举类型的方法实战演练 枚举在switch中的应用实战演练 枚举类的构造方法实战演练 枚举类型的定义 [修饰符] enum 枚举…

内部文档:如何创建、提示和示例

每个组织都拥有一定的内部知识储备,可以让组织不断运转、持续发展。这些知识资产对于每个企业来说都是独一无二的,并且高度依赖于为您工作的人员。问题是,这些知识常常储存在员工的头脑中。如果知识被记录下来,它通常隐藏在 Slack…

医院影像平台源码,C/S体系结构的C#语言PACS系统全套商业源代码

医学学影像临床信息系统具有图像采集、显示、存储、传输和管理等功能,支持DICOM影像设备和非DICOM影像设备,可以识别CT、MR、CR/DR、X光、DSA、B超、NM、SC等设备的图像类型,可对数字影像进行无损压缩和有损压缩处理。C/S体系结构的多媒体数据…

湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录 1、Lambda 架构 2、Kappa 架构 3、混合架构 4、架构选择 5、实时数仓现状 6、湖仓一体架构 7、流批一体架构 文章目录 系列文章目录前言1、Lambda 架构2、Kappa 架构3、混合架构4、架构选择5、实时数仓现状6、湖仓一体架构7、流批一体架构 前言 本文解析了Lambd…

Verilog语言和C语言的本质区别是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 用老石的一句话其实很好说…

QtQuick-QML类型系统-对象特性 (方法特性)

概念 对象类型的方法就是一个函数,可以执行,也可以和信号关联,这样发射信号会自动调用。 在C中,可以使用Q_INVOKABLE宏或者Q_SLOT宏进行注册的方式定义方法; 另外,也可以在QML文档的对象声明里使用下面的…

二分类损失 - BCELoss详解

BCELoss (Binary Cross-Entropy Loss) 是用于二分类问题的损失函数。它用于评估预测值和实际标签之间的差异。在 PyTorch 中,BCELoss 是一个常用的损失函数。以下是 BCELoss 的详细计算过程和代码实现。 BCELoss 的计算过程 给定一组预测值 y ^ \hat{y} y^​ 和实…

redis的使用场景-分布式锁

使用redis的setnx命令放入数据并用此数据当锁完成业务(但是如果用户操作途中出现异常导致超出指定时间会出现问题) Service public class StockService {Autowiredprivate StockDao stockDao; //mapper注入Autowiredprivate StringRedisTemplate redisT…

ssm框架整合,异常处理器和拦截器(纯注解开发)

目录 ssm框架整合 第一步:指定打包方式和导入所需要的依赖 打包方法:war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步:导入tomcat插件 第三步:编写配置类 SpringCon…

【AI绘画】Midjourney V6初学者完全指南 参数篇

本文我们将详细介绍对图像生成结果产生重大影响的"参数"。 1. 什么是参数? 参数是一种添加到提示末尾以调整图像生成输出设置的方法。 它们用两个连字符"–“和特定字符串表示,如”–ar"、“–chaos”、"–r"等。 您也可以同时使用多个参数…

分布式控制算法——第一部分:基础概念与原理

分布式控制算法 文章目录 分布式控制算法第一部分:基础概念与原理1. 引言分布式控制的定义分布式控制系统的特点与优势分布式控制的应用场景 2. 分布式系统基础分布式系统的定义和特性分布式计算模型常见的分布式系统架构 3. 分布式控制基础分布式控制的基本原理中央…