软考:案例题分析1101
22年第一题:架构设计与评估
分析文字,识别需求和质量属性?这里需要记忆质量属性有那些,区分需求和质量属性,能区分出质量属性之间的区别。
我的回答:
差距分析:
根据题目中功能的特点,分析使用什么架构风格,这个题目考虑作为架构师,能根据场景,选择适合的架构风格,考察对架构风格的了解程度,能够回答到要点。
我的回答:面对对象架构风格具有较好的可读性,耦合性低,但是不支持动态的修改,如果要修改功能,需要修改代码;解释器架构风格具有较好的灵活性,可以根据输入自定义规则来实现对于的功能;根据题目中的要求,选择解释器风格更合适。
差距分析:
1、需要先分别从题目的三个特性依次对比分析
2、最后总结结论
3、对于架构风格不熟练
解释器架构风格
解释器框架风格(Interpreter Framework Style)是一种软件架构风格,其核心思想是构建一个解释器(Interpreter)来解释并执行特定领域或问题领域的语言或规则。它能够读取、解析和执行用户提供的程序代码,通常是基于文本的源代码。归属于虚拟机大类型的架构风格。
名称:解释器。解释什么:解释语言DSL,就是输入,将语言映射翻译去执行。很灵活,灵活带来的代码就是效率比较慢。为什么说灵活,运维它解释运行,运行的适合编译,那么就可以修改完成代码后立马执行。
应用场景:
• 脚本语言:许多脚本语言(如Python、JavaScript、Ruby等)采用解释器架构,允许用户编写可立即执行的脚本,无需预先编译。
• 嵌入式系统:在某些嵌入式环境中,解释器用于执行定制的配置脚本或控制逻辑,简化设备管理和应用程序定制。
• 数据库查询语言:SQL查询语言就是一个典型的例子,数据库管理系统内置了SQL解释器,用于解析和执行用户提交的查询语句。
• 规则引擎:在业务规则管理系统中,解释器用于解析和执行用特定规则语言编写的业务规则,根据实时数据做出决策。
• 教育与科研:解释器常用于教学环境和研究项目,帮助学生学习编程概念或实验新的编程语言设计。
• 游戏开发:游戏引擎中可能包含脚本解释器,让设计师使用易于理解的语言编写游戏逻辑,无需深入掌握底层编程语言。
• 专家系统:早期的专家系统中,解释器用于执行知识工程师编写的规则集,模拟人类专家的决策过程。
总的来说,解释器架构风格通过提供一个能够理解并执行特定语言的解释器,支持用户以高抽象级别编写程序,适用于需要快速原型设计、动态执行或使用特定领域语言的场景。尽管其执行效率可能低于编译型系统,但这种风格提供的灵活性、易用性和跨平台能力在很多情况下弥补了这一不足。
特点:
-
领域特定语言(DSL):
解释器框架风格通常用于实现领域特定语言(DSL),这是一种针对特定问题领域的语言。DSL使得问题领域的规则和逻辑更容易理解和表达。 -
模块化的解释器:
架构中通常包含一个或多个模块化的解释器,每个解释器负责解释特定部分的DSL或规则。这些解释器可以组合在一起以执行复杂的任务。 -
灵活性:
解释器框架风格提供了高度的灵活性,因为它允许动态地添加、修改或替换解释器,以适应不断变化的需求。 -
可扩展性:
架构可以轻松扩展以支持新的DSL或规则,而不会对现有的解释器产生影响。 -
多层次的解释:
解释器可以构建成多层次的结构,其中一个解释器可以调用另一个解释器,从而实现复杂的解释和执行逻辑。 -
易于
维护和修改:
由于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年第一题:架构设计与评估 分析文字,识别需求和质量属性?这里需要记忆质量属性有那些,区分需求和质量属性,能区分出质量属性之间的区别。 我的回答: 差距分析: 根据题目中功能的特点ÿ…...
如何检查雷池社区版 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初始化一个基于容器的构建环境ÿ…...
宠物领养救助管理软件有哪些功能 佳易王宠物领养救助管理系统使用操作教程
一、概述 佳易王宠物领养救助管理系统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特性描述的详细解释…...
Kafka在大数据处理中的作用及其工作原理
Kafka在大数据处理中扮演着至关重要的角色,其作用及工作原理可以从以下几个方面进行解释: 一、Kafka的作用 消息队列: Kafka作为一个高性能、高可伸缩性的消息队列,能够有效地解耦数据生产者和消费者之间的关系,实现…...
w~自动驾驶~合集5
我自己的原文哦~ https://blog.51cto.com/whaosoft/12304427 # 智能驾驶仿真测试的『虚幻』与『真实』 先给大家讲个故事:某主机厂计划构建一套智能驾驶仿真环境,但需同时满足“对外展示”和“项目使用”两方面需求,与供应商商讨一个月后&…...
Java优先队列的使用
1. 优先队列的定义 PriorityQueue继承了Queue接口,底层默认是一个小根堆。 PriorityQueue<Integer> queuenew PriorityQueue<>(); 2. 常用方法 方法描述boolean offer(E e)入队列E poll()出队列E peek()得到队首元素 int size() 返回集合中的元素个…...
20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法
题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 …...
mysql之命令行基础指令
一:安装好mysql后,注册好账号密码。 二:在命令行进行登录的指令如下 mysql -u用户名 -p 例如:mysql -uroot -p; 然后按下回车,进入输入密码。 三:基本指令: 1:查看当前账户的所有…...
使用Django Channels实现WebSocket实时通信
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Django Channels实现WebSocket实时通信 Django Channels 简介 环境搭建 安装 Django 和 Channels 创建 Django 项目 配置 A…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
若依项目部署--传统架构--未完待续
若依项目介绍 项目源码获取 #Git工具下载 dnf -y install git #若依项目获取 git clone https://gitee.com/y_project/RuoYi-Vue.git项目背景 随着企业信息化需求的增加,传统开发模式存在效率低,重复劳动多等问题。若依项目通过整合主流技术框架&…...
【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20~21题】【第…...
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…...
Java毕业设计:办公自动化系统的设计与实现
JAVA办公自动化系统 一、系统概述 本办公自动化系统基于Java EE平台开发,实现了企业日常办公的数字化管理。系统包含文档管理、流程审批、会议管理、日程安排、通讯录等核心功能模块,采用B/S架构设计,支持多用户协同工作。系统使用Spring B…...
fast-reid部署
配置设置: 官方库链接: https://github.com/JDAI-CV/fast-reid# git clone https://github.com/JDAI-CV/fast-reid.git 安装依赖: pip install -r docs/requirements.txt 编译:切换到fastreid/evaluation/rank_cylib目录下&a…...
Redis持久化策略:RDB与AOF详解
目录 1. RDB持久化工作原理触发机制优点缺点配置示例 2. AOF持久化工作原理同步策略重写机制优点缺点配置示例 3. RDB与AOF比较4. 混合持久化(Redis 4.0)5. 选择建议 Redis提供了两种主要的持久化机制来保证数据安全:RDB(Redis Database)和AOF(Append Only File)。本…...
