软考A计划-系统架构师-案例分析考前背诵-下篇

news2024/11/25 6:45:12
  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

六 可靠性

在这里插入图片描述

6.1 定义

**可靠性:**是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。

**可靠度:**系统在规定的条件下、规定的时间内不发生失效的概率。

**失效率:**又称风险函数,也可以称为条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。

6.2 检错技术

请给出检错技术的优缺点,并说明检测技术常见的实现方式和处理方式。

优点:检错技术实现的代价一般低于容错技术和冗余技术。

缺点:就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。

实现方式:

  1. 判断返回结果,如果返回结果超出正常范围,则进行异常处理;
  2. 计算运行时间,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;
  3. 置状态标志位

**处理方式:**大多数都采用“査出故障-停止软件运行-报警”的处理方式。 但根据故障的不同情况,也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。

6.3 可靠性的子特性

口决:成容(成龙)易依

  • 成熟性:成熟性是指系统避免因错误的发生而导致失效的能力;
  • 容错性:容错性是指在系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力;
  • 易恢复性:易恢复性是指系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力;
  • 依从性:可靠性的依从性是指系统依附于与可靠性相关的标准、约定或规定的能力。

6.4 可靠性模型

  • 时间模型
  • 数据模型
  • 故障植入模型

6.5 可靠性设计原则

  • 软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则冲突。
  • 软件可靠性设计在满足提高软件质量的前提下,以提高和保障软件可靠性为最终目标。(软件质量是前提,可靠性为最终目标)
  • 软件可靠性设计应确定软件可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑。

6.6 可靠性设计技术

  1. 容错设计(4后面的是我总结的)
  • N版本程序设计

  • 恢复块设计

  • 冗余设计

    (1)时间冗余

    执行出错时,循环执行几次,以避免因网络繁忙或抖动或资料被占用引起的失 败

    (2)结构冗余(硬件冗余、软件冗余)

    (3)信息冗余(校验码)

  1. 检错设计
  2. 降低复杂度设计
  3. 集群技术
  4. 避错设计/防卫式程序设计
  5. 双机容错
  • 双机热备:主服务器正常时,备份服务器空闲
  • 双机互备:同时提供不同的服务,心不跳则接管
  • 双机双工:同时提供相同的服务,集群的一种

6.7 影响可靠性的因素

口决:剖规内开可

  1. 运行剖面(环境)
  2. 软件规模
  3. 软件内部结构
  4. 软件的开发方法和开发环境
  5. 软件的可靠性投入

6.8 可靠性分析技术

  1. 故障树分析方法

    一种自项向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始向下逐步追查导致事件发生的原因,直至基本事件(底事件)。从而确定软件故障原因的各种组合方式和发生概率。基本的步骤是软件故障树的建立、定性分析和定量分析。

  2. 失效模式与效应分析方法

    在软件开发阶段的早期,通过识别软件失效模式分析造成的后果。研究分析各种失效模式生产的原因,寻找消除和减少其有害后果的方法。以便尽早发现潜在的问题,并采取相应措施,从而提高软件的可靠性和安全性。

七 数据库

7.1 反规范化技术

定义:

规范化设计后,数据库设计者希望牺牲部分规范化来提髙性能,这种从规范化设计的回退方法叫做反规范化技术。

优点:

反规范化设计允许保留或者新增一些冗余数据,从而减少数据查询中表连接的数目或简化计算过程,提高数据访问效率。

采用反规范化技术的益处:能够减少数据库查询时SQL连接的数目,从而减少磁盘I/O数据量,提高查询效率。

缺点:

数据的重复存储,浪费了磁盘空间;为了保障数据的一致性,增加了数据维护的复杂性。

常见的反规范化技术包括:

  1. 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作;
  2. 增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数;
  3. 表水平分割:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用;
  4. 表垂直分割:对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中,在查询时减少I/O次数。

7.2 NOSQL

优点:

  • 支持高并发数据访问,性能较高。
  • 存储结构松散,能够灵活支持多种类型的数据格式。
  • 能够支持海量数据的存储,且易于横向扩展。
  • 基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。

缺点:

  • NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。
  • 并未形成一定的标准,产品种类繁多,缺乏官方支持。
  • 不提供对SQL的支持,学习和应用迁移成本较高。
  • 支持的特性不够丰富,现有产品提供的功能比较有限

7.3 主从复制

引入主从复制机制所带来的好处:

  • 避免数据库单点故障,提升可用性

主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。

  • 读写分离,提高査询效率

根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据査询操作,从而将査询操作分担到不同的从服务器以提高数据库访问效率。

  • 可扩展性更优
    如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求
  • 负载均衡
    一主多从分担任务,相当于负载均衡
  • 提升数据安全性
    系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失

八 WEB架构设计

8.1 REST

**定义:**REST 从资源的角度来定义整个网络系统结构,分布在各处的资源由统一资源标识符( URI)确定,客户端应用程序通过 URI 获取资源的表现,并通过获得资源表现使得其状态发生改变。

REST 中将资源、资源的表现和获取资源的动作三者进行分离

8.2 MVC

使用MVC设计表现层,具有以下优点:

  • 允许多种用户界面的扩展。在MVC模式中,视图与模型没有必然的联系,都是通过控制器发生联系,如果增加新类型的用户界面,只需修改响应的控制器和视图即可,模型无需变动;
  • 易于维护。控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用;
  • 支持功能强大的用户界面。用户界面与模型方法调用组合起来,使程序的使用更清晰,可将友好的界面发布给用户。

8.3 负载均衡

负载均衡机制是大型Web应用解决高负荷访问和大量并发请求时常用的有效解决方法,典型的负载均衡机制包括基于DNS的负载均衡、基于反向代理的负载均衡等。

基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡,可以看出,该机制具有实现简单、容易实施及低成本的特性。反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

从系统执行效率方面讲,基于DNS的负载均衡机制实现简单,但其通常不能区分服务器的差异,也不能反映服务器的当前运行状态。基于反向代理的则可以根据内部服务器的性能差异及实时负载情况进行动态负载均衡,当系统多个Web服务器性能存在明显差异或内部Web服务器出现故障时,负载均衡器可以更快做出响应,从而保证客户端的访问效率。采用基于反向代理的负载均衡机制,可在代理服务器中引入调速缓存机制,对Web服务器返回的静态页面或图片等静态资源进行缓存,由代理服务器承担对原始服务器的静态资源访问请求,从而进一步降低原始Web服务器的负载。

从安全性方面讲,采用基于反向代理的负载均衡机制,代理服务器屏蔽了客户端对真实Web服务器的直接访问,恶意用户无法对真实Web服务器进行攻击,且可以通过代理服务器为原本不安全的客户端与Web服务器之间的连接建立安全通道。因此采用基于反向代理的负载均衡机制可为系统提供更好的安全性保障。

九 构件

基于构件的软件开发中,可以通过不同的途径来获取构件,主要包括以下4种方法:

  • 从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件;
  • 通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件;
  • 从市场上购买现成的商业构件,BPCOTS(Commercial Off-The-Shell)构件;
  • 开发新的符合要求的构件。

开发构件通常采取3种策略:

  • 分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分;
  • 抽象(abstraction):是对在给定实践内执行指定计算的软/硬件申.元的一种抽象;
  • 分割(segmentation):是将结构引入构件的行为,支持对行为性质进行时序推理。

当前主流构件标准有:

  • CORBA:由OMG(对象管理集团)制定;
  • COM/DCOM:由Microsoft制定;
  • EJB:由SUN的Java企业Bean制定。

十 设计模式

创建型模式主要用于创建对象,为设计类实例化新对象提供指南。

  1. 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
  2. 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
  3. 工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
  4. 抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
  5. 建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。

  1. 代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

  2. 适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

  3. 桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现的,从而降低了抽象和实现这两个可变维度的耦合度。

  4. 装饰(Decorator)模式:动态地给对象增加一些职责,即增加其额外的功能。

  5. 外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。

  6. 享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。

  7. 组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

    行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。

  8. 模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

  9. 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

  10. 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

  11. 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。

  12. 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。

  13. 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。

  14. 中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。

  15. 迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

  16. 访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。

  17. 备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

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

相关文章

XSS注入(跨站脚本攻击)

今天学习一下xss注入 1.XSS是什么 XSS注入漏洞又称为"跨站脚本攻击(Cross Site Scripting)",为了不和层叠样式表(Cascading Style Sheets,CSS)混淆,所以将跨站脚本攻击缩写为XSS。xss本质上是黑客通过对网页的HTML注入,篡改了原本…

C\C++ Thread-多线程

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介 c多线程 时间 c语言的时间处理:time.h 获取从1970年1月1日到当前经过的秒数: long t0 time(NULL); 让程序暂停3秒: sleep(3); 当前时间的3秒后&…

基于Java购物商城系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

Linux 环境下Docker部署项目(七)

文章目录 一、前言二、项目打包上传1. 项目打包简单 (故省略)2. 上传jar包程序到Linux 三、拉取镜像1. 拉取镜像java:8(jdk1.8)2. 拉取 java8 出错: 四、创建Dockerfile文件1. 创建Dockerfile文件2. 编辑Dockerfile3. 构建镜像(需要在Dockerfile同级目录…

腾讯安全发布“数字安全免疫力”模型框架,建设发展驱动安全新范式

随着数字化进程加快,企业数字化体系的边界在不断拓展,安全风险和挑战不断增加,传统被动防御的安全应对常显疲态,数字安全时代亟待建立全新的安全范式。 6月13日,腾讯安全联合IDC在北京发布“数字安全免疫力”模型框架…

Nucleo-F411RE (STM32F411)LL库体验 1 - 点亮LED

Nucleo-F411RE (STM32F411)LL库体验 1 - 点亮LED 1、开发环境 一如既往,还是macos gcc pyocd的开发环境。 pyocd pack find stm32f411retx #命令查找支持包 pyocd pack install stm32f411retx #安装支持包 pyocd flash --erase auto --ta…

跨站点脚本(XSS)的介绍

目录 1、概述 2、XSS普遍认可三种形式: ​2.1 反射式 XSS 攻击 2.2 存储的 XSS 攻击 2.3 基于DOM的XSS 攻击 2.3.1 DOM中相关建议: 2.3.2 利用javascript开发时的建议规则: 3、XSS 攻击后果 4、框架安全 5、XSS 防御理念 6、XSS P…

Linux(链接器的意义)

文章目录 前言一、链接器概念介绍二、目标文件三、main函数是第一个被执行的函数吗?四、链接脚本的意义和作用总结 前言 本篇文章我们来讲解链接器的意义。 一、链接器概念介绍 链接器(Linker)是计算机编译器系统中的一个重要组成部分&…

MongoDB安装、设置密码、操作命令、配置文件说明、备份与还原

目录 一、mongodb概述 二、mongodb安装部署 三、mongodb设置密码 四、MongoDB操作命令与说明 五、配置文件说明 六、备份与还原 一、mongodb概述 MongoDB是一个非关系型数据库管理系统,它使用文档模型存储数据。MongoDB中的文档类似于JSON对象,可以…

总结899

目标规划: 月目标:6月(线性代数强化9讲,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 今日已做: 1.读了两篇文章&a…

Spring:InvalidDefinitionException: Direct self-reference leading to cycle

一、现象 一个列表接口报错,没有返回信息,异常堆栈如下: 11:52:05.096 [http-nio-8180-exec-36] ERROR c.u.s.f.w.e.GlobalExceptionHandler - [handleRuntimeException,65] - 请求地址XXXXX,发生未知异常. org.springframework.http.conve…

(el-Tree)操作:Element-plus 中Tree 树形控件的样式等的使用

Ⅰ、Element-plus 提供的Tree树形控件组件与想要目标情况的对比: 1、Element-plus 提供Tree组件情况: 其一、Element-ui 自提供的Table代码情况为(示例的代码): // Element-plus 自提供的代码: // 此时是使用了 ts 语言环境&…

06-揭开神秘面纱:Golang method的魅力解析

📃个人主页:个人主页 🔥系列专栏:Golang基础 💬Go(又称Golang)是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性,拥有高效的并发编程能力和简洁的语法。G…

宝鸡陇县中学弱电系统集成设计方案_kaic

摘 要 随着世界各国教育信息化的推进,我国在教育信息基础设施和资源上也在逐步加快步伐。校园信息化平台的建设关系到校园网站的技术实现、广播系统、视频监控系统的建设,能够使知识获取更便捷、校园文化生活更丰富、校园管理更精准。利用信息交互的特性…

chatgpt赋能python:Python如何排列输出列表的数

Python如何排列输出列表的数 Python是一门广泛应用于数据分析、科学计算等领域的编程语言,其简洁易学、强大的编程特性使得其成为很多领域中的首选语言。在Python中,列表是一种非常常见的数据结构,其可以存储大量相关数据,并且通…

【八大排序(五)】快排进阶篇-挖坑法+前后指针法

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:八大排序专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 快排进阶篇 1. 前情回顾2. 思路回顾3. 单…

chatgpt赋能python:Python排列组合:让编程更简单

Python排列组合:让编程更简单 Python是一种现代化的编程语言,同时也是一种强大的工具。在Python中,排列组合是极其重要的一种操作。在本篇文章中,我们将介绍Python中的排列组合,并探讨如何利用Python编程语言进行排列…

十.多线程

1、进程与线程 (1)操作系统与进程 1.程序:代码。 2.进程:程序的动态执行过程。 (2)进程与线程 线程:线程:是比进程更小的执行单位,一个进程在其执行过程中&#xff0…

chatgpt赋能python:Python中如何找到编程中的错误

Python中如何找到编程中的错误 Python是一种旨在提高开发者生产力的高级编程语言。由于其简洁性和可读性,它越来越成为开发者们的首选语言。然而,就像其他编程语言一样,Python编程中难免会有错误。本文将介绍一些有用的技巧和工具&#xff0…

STM32速成笔记—概述

文章目录 前言一、专栏简介二、前期准备三、编程规范以及程序架构简介1. 编程规范2. 程序架构 四、STM32F103ZET6简介 前言 本人技术菜鸟一枚,2022年大学毕业,大学加入老师实验室,参加过一些嵌入式相关的比赛,获得过2020年TI杯大学…