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

软考:案例题分析1101

22年第一题:架构设计与评估

分析文字,识别需求和质量属性?这里需要记忆质量属性有那些,区分需求和质量属性,能区分出质量属性之间的区别。

我的回答:

差距分析:


根据题目中功能的特点,分析使用什么架构风格,这个题目考虑作为架构师,能根据场景,选择适合的架构风格,考察对架构风格的了解程度,能够回答到要点。

我的回答:面对对象架构风格具有较好的可读性,耦合性低,但是不支持动态的修改,如果要修改功能,需要修改代码;解释器架构风格具有较好的灵活性,可以根据输入自定义规则来实现对于的功能;根据题目中的要求,选择解释器风格更合适。

差距分析:
1、需要先分别从题目的三个特性依次对比分析
2、最后总结结论
3、对于架构风格不熟练

解释器架构风格

解释器框架风格(Interpreter Framework Style)是一种软件架构风格,其核心思想是构建一个解释器(Interpreter)来解释并执行特定领域或问题领域的语言或规则。它能够读取、解析和执行用户提供的程序代码,通常是基于文本的源代码。归属于虚拟机大类型的架构风格。

名称:解释器。解释什么:解释语言DSL,就是输入,将语言映射翻译去执行。很灵活,灵活带来的代码就是效率比较慢。为什么说灵活,运维它解释运行,运行的适合编译,那么就可以修改完成代码后立马执行。

应用场景:
• 脚本语言:许多脚本语言(如Python、JavaScript、Ruby等)采用解释器架构,允许用户编写可立即执行的脚本,无需预先编译。
• 嵌入式系统:在某些嵌入式环境中,解释器用于执行定制的配置脚本或控制逻辑,简化设备管理和应用程序定制。
• 数据库查询语言:SQL查询语言就是一个典型的例子,数据库管理系统内置了SQL解释器,用于解析和执行用户提交的查询语句。
• 规则引擎:在业务规则管理系统中,解释器用于解析和执行用特定规则语言编写的业务规则,根据实时数据做出决策。
• 教育与科研:解释器常用于教学环境和研究项目,帮助学生学习编程概念或实验新的编程语言设计。
• 游戏开发:游戏引擎中可能包含脚本解释器,让设计师使用易于理解的语言编写游戏逻辑,无需深入掌握底层编程语言。
• 专家系统:早期的专家系统中,解释器用于执行知识工程师编写的规则集,模拟人类专家的决策过程。
总的来说,解释器架构风格通过提供一个能够理解并执行特定语言的解释器,支持用户以高抽象级别编写程序,适用于需要快速原型设计、动态执行或使用特定领域语言的场景。尽管其执行效率可能低于编译型系统,但这种风格提供的灵活性、易用性和跨平台能力在很多情况下弥补了这一不足。

特点:

  1. 领域特定语言(DSL):
    解释器框架风格通常用于实现领域特定语言(DSL),这是一种针对特定问题领域的语言。DSL使得问题领域的规则和逻辑更容易理解和表达。

  2. 模块化的解释器:
    架构中通常包含一个或多个模块化的解释器,每个解释器负责解释特定部分的DSL或规则。这些解释器可以组合在一起以执行复杂的任务。

  3. 灵活性:
    解释器框架风格提供了高度的灵活性,因为它允许动态地添加、修改或替换解释器,以适应不断变化的需求。

  4. 可扩展性:
    架构可以轻松扩展以支持新的DSL或规则,而不会对现有的解释器产生影响。

  5. 多层次的解释:
    解释器可以构建成多层次的结构,其中一个解释器可以调用另一个解释器,从而实现复杂的解释和执行逻辑。

  6. 易于维护和修改
    由于DSL和解释器的模块化性质,维护和修改系统变得相对容易。新的规则或语法可以通过添加新的解释器来支持,而不需要修改现有的代码。

22年第二题:软件架构设计与建模

数据流图,数据流分层,数据平衡原则

我的答案:数据平衡原则是指数据在每一次的流入和流出要相同。要避免只有流入没有流出,也要避免只有流出,没有流入。

差距分析:
1、层间平衡:不同层次之间,相同数据流的个数和方向要一致
2、图内平衡:避免有输入无输出的黑洞,避免有输出无输入的奇迹

其他考点:
数据流图是组成,实体,加工,存储,数据流;
数据流图是用在分析阶段使用,用来进行建立模型,来分析系统的功能有那些,有那些实体,它通常来结合数据字典。
数据流图是属于结构化设计分析的工具。
软件工程中通常由结构化和面向对象分析和设计两种方式。


描述DFD和DD在分析和设计阶段的作用。

我的答案:
1、在需求分析阶段,通过分析需求,得到数据流图,可以识别到系统的行为和功能,明确数据处理的过程,明确系统处理的实体由那些。通过DD来分析记录实体和动作,来为分析阶段奠定基础
2、在设计阶段,数据流图可以帮助进行ER图的设计,软件架构图的设计,识别软件模块,进行软件模块划分
3、总之:两个技术手段在结构化分析中都非常重要。

差距:
1、分析阶段,通过XX方式,可以反映出系统必须完成的逻辑功能,尽可能早发现是否由需要输入或者输出的信息被遗漏,以及系统各部分的逻辑是否由错误,数据字典是描述数据的信息集合,统一语言和理解
2、设计阶段,变换分析和事务分析的方法,设计出模块结构,根据数据字典的数据存储描述建立数据库存储设计

补充:变换分析和事务分析:解释和概念

22年第三题(故障检测和诊断)

心跳检测和超时探测技术的原理和特点。

我的:
心跳检测技术是通过不断地发出请求,看对方是否会给出响应,通常根据是否连续无法检测到心跳的方式来判断是否存在故障。
超时探测技术是指发出请求,等待其相应,如果等待的时间超时一定值,那么就认为存在故障。

差距
要讲优点和缺点。
心跳检测技术,固定频率向其它节点发送心跳信息,表示自己是活着的,如果没有收到心跳,就认为这个节点失败了
超时探测是主动探测,问其它节点你健康吗,而心跳检测技术不主动的探测,我只看最近我收到了那些信号,如果由一段时间没有收到信号,则认为探测失败。


22年第四题:缓存技术

数据库实时同步是数据库和缓存的更新是同步进行的,当都更新完成后,则返回,通常需要使用事务,保证两个操作的原子性,否则可能出现数据不一致的问题。数据库异步准实时更新,是指更新数据库是同步的,但是更新缓存通过发送到消息队列进行异步的更新处理,这样可以提高数据库同步的效率。
根据题目中对响应时间性能要求比较高,因此,选择数据库异步准实时更新是合适的

同步是将订单反馈作为一个事务,只有缓存与数据库中的数据同时完成更新后事务才算提交成功。


哈希算法是指将缓存的key经过一个hash算法,得到一个数字,然后根据数字求余得到缓存存储的机器位置,它的优点是,比较简单,缺点是,如果机器挂掉了,那么需要进行重新哈希,会带来比较大的成本。
一致性哈希是一种特殊的哈希,将节点分布在一个哈希值组成的环中,当缓存的key经过哈希后,得到在环上的位置,然后将缓存放在距离环最近的一个节点,这样做到好处是,当节点伸缩的适合,对缓存分布的影响比较小,只影响到后一个节点。
根据题目的要求:运维集群部署多个节点,且可能会进行变化,所以选择一致性哈希是合适的。

哈希算法:将任意长的输入通过某种哈希算法变换成固定长度的一个哈希值。
一致性哈希将整个哈希值空间映射成一个按顺时针方向组织的虚拟圆环。尽可能小的改变已存在服务器与处理请求服务器之间的映射关系,解决了简单哈希算法在分布式哈希表中存在的动态伸缩问题。可扩展性,更好的适应数据的快速增长。


当一个元素加入的时候,根据K个哈希函数计算得到一个位数组,得到位数组中的K个点,置为一,如果这些点都为一,则认为集合中很可能存在元素,否则肯定不存在。优点:占用内存小,不存储元素本身,可以并行运算(哈希函数之间没有关联关系),增加和查询的时间复杂度都是O(K),比较小,和数据量无关。缺点是有误判可能性,只能判断是否存在,不能获取元素本身,而且最后,不能从布隆过滤器中喊出元素。

相关文章:

软考:案例题分析1101

22年第一题:架构设计与评估 分析文字,识别需求和质量属性?这里需要记忆质量属性有那些,区分需求和质量属性,能区分出质量属性之间的区别。 我的回答: 差距分析: 根据题目中功能的特点&#xff…...

如何检查雷池社区版 WAF 是否安装成功?

容器运行状态检查: 使用命令行检查:打开终端,连接到安装雷池的服务器。运行 docker ps 命令,查看是否有与雷池相关的容器正在运行。 如果能看到类似 safeline-mgt、safeline-tengine 等相关容器,并且状态为 Up&#x…...

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. 📂 前言 2. 💠 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. 🔱 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…...

vue3中setup的作用是什么?

Vue 3.0中的setup函数是一个全新的选项,它是在组件创建时执行的一个函数,用于替代Vue2.x中的beforeCreate和created钩子函数。setup函数的作用是将组件的状态和行为进行分离,使得组件更加清晰和易于维护。 在本文中,我们将详细讲解…...

java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)

1,当你在pycharm 上运行spark代码时候出现下面这个报错。 解决方案 我们要先去hadoop的bin目录下去看看里面是否有 winutils.exe 这个错误 就是缺少winutils.exe 所以报这个错误,把它放到你的hadoop的bin目录下问题就解决了...

事件捕获vs 事件冒泡,延申事件委托

事件捕获vs事件冒泡 拿点击事件举例子,点击dom树的某个目标节点: 事件捕获:从根节点到目标节点扩散事件冒泡:从目标节点到根节点扩散 扩散就是说,途中的节点,相应的点击事件都会被触发 但是,只…...

接口测试(十一)jmeter——断言

一、jmeter断言 添加【响应断言】 添加断言 运行后,在【察看结果树】中可得到,响应结果与断言不一致,就会红色标记...

使用buildx构建多架构平台镜像

1. 查看buildx插件信息 比较新的docker-ce版本默认已经集成了buildx插件 [rootdocker ~]# docker buildx version github.com/docker/buildx v0.11.2 9872040 [rootdocker ~]#2. 增加多平台镜像构建支持 通过tonistiigi/binfmt:latest初始化一个基于容器的构建环境&#xff…...

宠物领养救助管理软件有哪些功能 佳易王宠物领养救助管理系统使用操作教程

一、概述 佳易王宠物领养救助管理系统V16.0,集宠物信息登记、查询,宠物领养登记、查询, 宠物领养预约管理、货品进出库库存管理于一体的综合管理系统软件。 概述: 佳易王宠物领养救助管理系统V16.0,集宠物信息登记…...

Spring Boot中实现多数据源连接和切换的方案

Spring Boot中实现多数据源连接和切换的方案 在Spring Boot项目中,随着业务需求的增长,我们往往需要连接多个数据库,即实现多数据源连接和切换。这种需求可能源于数据库的读写分离、微服务架构下的服务拆分、数据分库分表等场景。本文将详细…...

科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展

据 Android Authority 报道,谷歌似乎正在为其 Play 商店增加对 XR 头显的支持。该媒体在 Play 商店的代码中发现了相关的线索,包括一个代表头显的小图标以及对“XR 头显”的提及。 谷歌也可能改变了此前拒绝将 Play 商店引入 Meta Quest 头显的决定。今…...

关于read/write 网络IO、硬盘IO的区别

对于read/write API,在数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待。 因此,对于网络IO,由于我们无法知道网络对面什么时候准备好数据,什么时候发起数据。所以使用read/write的话,可能…...

vue2开发 对接后端(go语言)常抛异常情况以及处理方法汇总

背景 在Vue2开发中,与后端(Go语言)接口对接时出现异常通常是由于前后端之间的数据交互出现了问题。常见的异常包括数据格式不匹配、请求方法不匹配、请求头部信息错误、跨域请求问题等。 常见异常 如出现报错提示: json : can…...

LSTM:解决梯度消失与长期依赖问题

LSTM:解决梯度消失与长期依赖问题 长短期记忆网络(LSTM)是一种特殊类型的递归神经网络(RNN),设计用来克服标准RNN在处理长序列数据时遇到的梯度消失问题。下面是对您提供的LSTM特性描述的详细解释&#xf…...

Kafka在大数据处理中的作用及其工作原理

Kafka在大数据处理中扮演着至关重要的角色,其作用及工作原理可以从以下几个方面进行解释: 一、Kafka的作用 消息队列: Kafka作为一个高性能、高可伸缩性的消息队列,能够有效地解耦数据生产者和消费者之间的关系,实现…...

w~自动驾驶~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12304427 # 智能驾驶仿真测试的『虚幻』与『真实』 先给大家讲个故事:某主机厂计划构建一套智能驾驶仿真环境,但需同时满足“对外展示”和“项目使用”两方面需求,与供应商商讨一个月后&…...

Java优先队列的使用

1. 优先队列的定义 PriorityQueue继承了Queue接口&#xff0c;底层默认是一个小根堆。 PriorityQueue<Integer> queuenew PriorityQueue<>(); 2. 常用方法 方法描述boolean offer(E e)入队列E poll()出队列E peek()得到队首元素 int size() 返回集合中的元素个…...

20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 …...

mysql之命令行基础指令

一&#xff1a;安装好mysql后&#xff0c;注册好账号密码。 二&#xff1a;在命令行进行登录的指令如下 mysql -u用户名 -p 例如&#xff1a;mysql -uroot -p; 然后按下回车&#xff0c;进入输入密码。 三&#xff1a;基本指令&#xff1a; 1&#xff1a;查看当前账户的所有…...

使用Django Channels实现WebSocket实时通信

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Django Channels实现WebSocket实时通信 Django Channels 简介 环境搭建 安装 Django 和 Channels 创建 Django 项目 配置 A…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...