根据2013年-2023年真题整理
必背案例概念
目录
抽象用例(EssentialUseCases)和具体用例(Real Use Cases)的区别
软件架构风格
软件架构风格是指描述特定软件系统组织方式的惯用模式。
组织方式描述了系统的组成构件和这些构件的组织方式。
惯用模式则反映众多系统共有的结构和语义。
架构风险
架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
风险点:
某个做法如果有隐患,有可能导致一些问题
非风险点:
而如果某件事是可行的可接受的为非风险点
敏感点:
是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点:
是影响多个质量属性的特性,是多个质量属性的敏感点。
MVC 架构
MVC 强制性地把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了三个核心模块:控制器、模型、视图。
(1)控制器(Controller):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
(2)模型(Mode1):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型表示业务数据和业务逻辑。
(3)视图(View):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。
J2EE架构
JSP+Servlet+TavaBean+DA0
JSP:用于显示、收集数据的部分。作为MVC中的视图V。
Servet:作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化JavaBean、调用 DAO连接数据库等。作为MVC中的控制器C。在其中会调用Service方法处理服务。JavaBean:用于数据的封装,方便将査询结果在servlet与jsp 页面之间进行传递等。DAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等。
DA0与JavaBean 合在一起为MVC中的模型 M。
基本流程:JSP 发一个数据到 servlet,servet 收到后做下解析再根据数据调用相应的 service 去服务,service如果有要调用数据库就通过 DAO跟数据库交互,使用javaBean 完成封装,返回结果给servlet,servlet 再返回给 JSP。
EIB
EIB是JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java 跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。
EJB 中有三种企业级的 bean:会话(session)beans,实体(entity)beans,和消息驱动(message-driven)beans.会话 bean 表示与客户端程序的临时交互,当客户端程序执行完后,会话 bean 和相关数据就会消失,相反,实体bean 表示数据库的表中一行永久的记录,当客户端程序中止或服务器关闭时,就会有潜在的服务保证实体bean的数据得以保存,消息驱动 bean 结合了会话 bean 和JMS的消息监听器的特性,允许一个业务层组件异步接收 JMS 消息.
信息系统层:企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统,例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。
面向服务的架构 SOA
SOA 是一种设计理念,其中包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能。
各个服务通常以独立的形式部署运行,服务之间通过网络进行调用。
它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的SOA是一个组件模型接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、接口和契约联系起来。:操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用方式进行交互。
企业服务总线 ESB
简单来说是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。
ESB 特点:
1、SOA的一种实现方式,ESB 在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合:
2、描述服务的元数据和服务注册管理;
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
ESB的主要功能:
(1)服务位置透明性:
(2)传输协议转换;
(3)消息格式转换;
(4)消息路由;
(5)消息增强;
(6)安全性;
(7)监控与管理。
实体和类的区别
实体:实体用于数据建模,类用于面向对象建模
实体只有属性,类既有属性,又有方法
抽象用例(EssentialUseCases)和具体用例(Real Use Cases)的区别
抽象用例:把多个具体用例给抽象出来,提取公共部分,用来复用
具体用例:现实生活中真是存在跟用户相关的用例
分布式数据库缓存基本概念
分布式数据库存在不同的地理位置,缓存是存在内存里面
嵌入式可靠度和失效率的概念
可靠度:在规定条件下能够正常运行的概率
失效率:在运行过程中可能失效的概率
动态冗余和N版本程序设计技术概念
动态冗余:通过新增加系统硬件,或者软件冗余度,使出现故障之后能够继续运行并快速回复
N版本程序设计:是指通过将不同版本的程序进行保留,将结果汇总到表决器中,利用表决机制得到最终结果
检错技术的优缺点
优点:开发代价少于冗余
缺点:只检查错误,不纠正错误
实现方式:返回结果超出正常范围,超时
处理方式:抛出异常报警,停止程序进行报警
SysM 建模的需求图与UML,建模的用例图的定义和区别。
定义:
需求图(REQ或req):用于表述文字化的需求、需求间的关系,以及与之存在满足、验证等关系的其他模型元素。
用例图:从用户的角度提供系统或业务流程功能的概述。
区别:
需求图更偏向于系统的功能和流程,而用例图更偏向于用户的使用体验。
数据流图在分层细化过程中遵循的数据平衡原则
数据流图(Data Flow Diagram,DFD)是一种图形工具,用于描述数据在信息系统中的流动和处理过程。它能够反映系统的功能需求、信息交流以及数据处理过程,是系统分析和设计的重要工具之一。
数据流图是一种以图形方式表示数据处理过程的工具,它描绘了数据在系统中的流动路径和经过的处理过程。在数据流图中,各种不同形状的图形符号代表了不同的意义。例如,箭头表示数据流,矩形表示数据处理过程,圆角矩形表示数据存储,菱形表示决策等。
1、子图与父图之间的平衡:
(1)父图与子图之间平衡是指任何一张 DFD 子图边界上的输入/输出数据流必须与其父图对应加工的输入/输出数据流保持一致。
(2)如果父图中某个加工的一条数据流对应于子图中的几条数据流,而子图中组成这些数据流的数据项全体正好等于父图中的这条数据流,那么它们仍然是平衡的。
2、子图内部:加工的输入和输出需要平衡。
数据流图和数据字典在软件需求分析和设计阶段的作用
数据流图分析阶段:建立系统的功能模型,从而完成需求分析,数据流图设计阶段:为模块划分与模块之间接口设计提供依据。
数据字典在分析与设计阶段的作用为:是所有人员工作的依据,统一的标准。它可以确保数据在系统中的完整性和一致性。具体作用包括:按各种要求列表、相互参照、由描述内容检索名称、一致性检验和完整性检验。
哈希分片和一致性哈希分片的概念和区别
哈希分片是指将缓存的key通过哈希算法进行计算,得出要存储的位置
一致性哈希分片是哈希分片的改进,将要存储数据的关键字一起计算哈希并放到哈希环上,通过顺时针逆转计算出存储位置
一致性哈希分片只需要计算小部分的哈希值,而哈希分片计算都要计算
布隆过滤器的工作原理和优缺点
布隆过滤器是一种数据结构,基于哈希的原理,可以快速判断一个元素是否存在一个集合当中,不需要去数据库寻找,便可将数据库返回值为空的结果返回
优点:工作内存小、查询效率高
缺点:不保证100%准确、不能查询元素本身
MQTT协议
MQTT协议是基于订阅/发布模式的消息协议,工作模式在TCP/IP协议族之上,该协议简单,易于实现的
顺序图和协作图的区别
顺序图强调的是消息时间顺序
协作图强调的是发送消息的对象的结构组织,强调通信的方式
对象模型,动态模型,功能模型定义
对象模型描述系统中对象的静态结构,关系,属性和操作
动态模型描述时间和操作顺序有关的系统特性
功能模型描述计算如何从输入值得到输出值,不考虑计算的次序
功能模型指发生了什么,动态模型确定什么时候发生,对象模型确定发生的个体
数据库反规范化常见设计方法
- 增加冗余列:在多个表中保留相同的列
- 增加派生列:增加原本可以连表计算的值的列
- 重组:将需要连表查询的值放在一张表里
- 水平分割:将一列或多列的值放到多个不同的表中
- 垂直分割:对表进行分割,查询时减少io次数
数据库反规范化设计解决数据不一致三种常见方法
- 批处理维护:指对复制列、派生列修改累计一段时间之后统一进行修改,实时性不高
- 应用逻辑:必须在同一事务中进行增删改操作,维护困难,容易遗漏
- 触发器:对数据的任何修改立即对复制列或者派生列进行修改,实时性比较高,易于维护
TCP和UDP的区别
TCP适用于小数据量的传输,有重发机制,可靠性较高
UDP是一种无状态的连接,没有重发机制,可靠性不高
数据库设计过程包含哪些建模
逻辑数据模型:主要是构建实体,实体联系图表达了实体属性与实体的关系
其中包含:
构建系统上下文数据模型:构建实体与实体之间的关系
绘制基于主键的数据模型:为每个实体创建主键
构建全属性数据模型:为每个实体添加非主键属性
利用规范化技术建立系统规范化数据模型
物理数据模型:表示数据在系统内部的表示方法和存取方法
其中包含:
数据存储位置
索引存放位置
存储文件位置
存储策略等
实体联系图
实体联系图是由实体,联系,属性三个基本概念所组成的数据基本结构
超类实体
超类实体是指将多个实体中相同的属性抽取出来,构造成新的抽象实体,采用继承的方式来表达抽象实体和具体实体的关系
派生属性
派生属性是指数据库中非主键属性由其他非主键属性通过计算得出
Redis数据类型及使用场景
string类型:常规的key/value 缓存应用,常规计数如粉丝数等;
list类型:各类列表应用,如关注列表、好友列表、订阅列表等;
set类型:与LIST 类似,但提供去重操作,也提供集合操作,可实现共同关注、共同喜好、共同好友等功能;
hash类型:存储部分变更数据,如用户数据等
zset类型:类似SET但提供自动排序,也可实现带权重的队列,如各类排行榜等
Redis持久化方式
RDB:通过指定的时间间隔,把缓存的数据统一持久化在硬盘
AOF:每接到一条写的指令,就把缓存持久化到硬盘
更新频率:AOF更新频率大于RDB
数据安全:AOF比RDB安全
数据一致性:宕机之后RDB未持久化的数据会丢失,AOF会通过redis-check-aof保证数据一致性的问题,AOF优于RDB
重启性能:RDB比AOF性能好
数据文件大小:AOF大于RDB
Redis内存过期策略
定期删除和惰性删除的失效场景:定期删除没有删除KEY ,也没有及时请求KEY,那么定期删除和惰性删除就失效了
- 从设置过期时间的数据中过期最少访问的数据
- 从设置过期时间的数据中过期即将过期的数据
- 从设置过期时间的数据中任意淘汰数据
- 从数据集淘汰最少使用的数据
- 从数据集任意淘汰数据
WEB应用中数据访问机制
系统需要与不同的设备进行交互,采用标准的数据访问机制,可以在硬件供应商和软件供应商中建立一套完整的规则,实现对设备数据采集的统一管理
数据流图和系统流程图的区别
- 数据流图中处理过程可并行,系统流程图在单一时间点只能处于一个处理过程
- 数据流图展示的是系统的数据流,系统流程图展示的是系统的控制流
- 数据流图展示全局处理过程,过程之间遵循不同的计时标准,系统流程图遵循一致的时间标准
嵌入式CPS系统及缺陷
感知层:通过传感器获取数据
缺陷:感知数据破坏、信息窃听、节点捕获
网络层:传输通过传感器获取数据
缺陷:拒绝服务攻击、选择性转发、方向误导性
控制层:对数据进行分析和处理
缺陷:用户隐私泄露、恶意代码、非授权访问
SQL注入攻击及解决办法
Sql注入攻击是表单提交的时候,拼接sql语句,转发到服务器进行执行,会导致信息泄露等问题
- 使用正则表达式
- 校验用户传参,检查输入合法性
系统架构非功能性需求主要有四类
操作性需求:与用户操作使用相关需求
性能需求:指响应时间、吞吐量等任务效率相关的指标
安全性需求:向合法用户提供服务并组织非授权用户访问的需求
文化需求:带有文化背景因素的系统需求
ROS与嵌入式实时操作系统的共同点:
(1)系统微型化
(2)系统专用性强
(3)软硬件依赖性强
(4)系统资源受限
ROS与嵌入式实时操作系统的差异:
实性性:ROS弱于嵌入式实时操作系统
通信方式:ROS的通信方式较为丰富,嵌入式实时操作系统通信方式单一。
数据库在线访问方式和ORM的优缺点
ORM是在数据库和对象之间做一个映射,在具体操作数据库的时候就不需要再去和sql打交道,像平时一样操作对象即可
数据库在线访问方式优点
- 性能比直接sql好
- 修改维护困难
ORM优点
- 使用ORM学习成本低
- 无需写sql语句
- 减少代码量
- 降低由于sql代码质量差带来的影响
ORM缺点
- 不太容易处理复杂的查询语句
- 性能中较直接使用sql差
增加数据访问层的原因
- 涉及到多种异构数据库平台,访问复杂,不宜与业务层混合在一起
- 分层有利于让逻辑更清晰
- 业务层应以相同的方式应对异构数据库,需要屏蔽差异性
工厂模式的优点和使用场景
包含工厂方法和抽象工厂方法,定义一个接口,然后创建相关的类同时创建继承关系,使用时指定不同的对象进行创建即可
响应式Web设计实现方式
响应式web设计是指开发的页面可以根据用户的行为和不同的设备环境做出的响应来调整页面的布局
实现方式:
- 流式布局
- 弹性布局+媒体查询
数据库引入主从机制的好处
- 提高性能:一主多从,不同用户可以从不同数据库读取,提高并发
- 负载均衡:一主多从分担任务,相当于负载均衡
- 提高可用性:一台服务器出现故障,不影响整个系统工作
- 数据备份:数据冗余多份,不易丢失
- 提高可拓展性:数据库过滤器和数据仓储风格比
用例之间的关系分为那几种
包含、扩展、泛化
面向对象建模中,类之间的关系类型
关联:描述一组链,链是对象之间的链接
聚合:整体与部分生命周期不同
组合:整体与部分生命周期相同
依赖:一个事务发生变化影响另一个事务
泛化:特殊/一般关系
嵌入式实时系统及特性
实时系统是指向系统发出一个指令之后,在极短的时间内,系统回复结果
特性:
- 时间约束性
- 可预测性
- 可靠性
- 与外部环境的交互作用性
- 多任务类型
- 约束复杂性
- 具有短暂超载的特点
软件错误:在软件生命周期内不希望或不可接受的人为错误导致
软件缺陷:存在于软件之中不希望或不可接受的偏差
软件故障:软件运行过程中出现的不希望或不可接受的内部状态
软件失效:是指运行时产生的一种不希望或不可接受的外部行为结果
PHP语言与Java语言的区别
- PHP是面向过程的,只要是业务流程发生变化,修改工作量很大,而java是面向对象的不存在这些问题
- PHP是一种脚本语言,可靠性较JAVA语言差
- PHP适用于小型项目,大量功能需要增加,在稳定性方面达不到要求
- PHP比Java可维护性差
- PHP比Java可扩展性差
- PHP比Java可安全性差
应用服务器概念
应用服务器是指通过各种协议吧商业逻辑暴露给客户端的程序
- 部署多台服务器分担任务,达到性能要求
- 灵活的增加服务器完成扩展
- 当一台服务器出现故障,应当运行的事务转移至正常的服务器上执行,不影响业务
敏捷开发状态图
软件设计建模:状态图和活动图的含义及其区别
状态图:主要用于描述一个对象在其生存期间的动态行为
活动图:可以用于描述系统的工作流程和并发行为
区别是:状态图侧重于描述行为的结果,而活动图侧重描述行为的动作,活动图可以描述并发行为,状态图不能
系统可靠性的定义以及四个子特性
可靠性是指在规定条件下和规定时间内完成规定功能的能力
成熟性、容错性、易恢复性、依从性
提高可靠性的技术
N版本程序设计
恢复快方法
冗余设计
双击热备或系统集群
防卫式程序设计
关系型数据库和文件系统存在的差异
内存数据库与关系数据库比较
数据持久层能够为项目开发带来的好处
数据持久层是一组软件服务,将应用程序与该程序使用的数据源进行分离,为整个项目提供一个统一,安全,并发的数据持久层机制
好处
- 代码复用性强,更换数据库更改配置文件即可
- 没有大量的sql语句,可读性强
- 持久化技术自动优化,减少对数据库的访问量,提高效率
- 简化开发,更关注业务开发
- 通过对象/关系映射提供面向对象的数据访问
Hibernate数据持久层框架的好处
- Hibernate更容易移植到其他数据库平台,只需要修改配置即可
- Hibernate降低或消除SQL语句开发工作量
- 提供对象状态管理功能,开发者不需要理会底层数据库系统的细节
数据流图基本元素及其作用
数据流:数据流是数据在系统内部传播的路径,由一组成分固定的数据组成
外部实体:代表系统之外的实体,可以是人,物或其他软件系统
加工:接收一定的数据输入并对其处理,产生输出
数据存储:表示信息的静态存储
只有输入流没有输出流为黑洞
只有输出流没有输入流为奇迹
嵌入式获取构件的方法以及开发策略
获取构件的方法:
- 从现有的构件中获取
- 从遗留的工程中获取
- 购买构件
- 开发构件
开发构件的策略:
- 分区:指的是将问题情景的空间分割成可以独立研究的部分
- 抽象:对给定实践内执行计算机软硬件单元的一种抽象
- 分割:将结构引入构件的行为,支持对行为性质进行时序推理
主流构件包含:
COM/DCOM/COM+ EJB
嵌入式GENESYS规范定义构件接口定义
局部接口:将外部中断向量连接到CPU从芯片中读取寄存器内容传递芯片寄存器
技术相关接口:诊断数据传输校验的错误
链接接口:对芯片初始化,冰箱起发送数据与从芯片接收数据
技术无关接口:芯片或驱动构件复位或重启,重新配置传输速率
DNS负载均衡和反向代理负载均衡的概念
DNS负载均衡是在DNS服务器上为同一个主机名配置多个ip地址,访问时会将客户端引导到不同的节点上,达到负载均衡的目的
反向代理负载均衡是将连接请求一反向代理的方式动态转发给内部网络的多个节点进行处理,从而达到负载均衡的目的
项目计划中应该包含哪些内容
- 项目背景
- 项目经理、领导小组和项目实施小组人员
- 项目总体技术解决方案
- 所选择项目管理过程及执行水平
- 过程的工具和技术输入输出的描述
- 选择项目生命周期和相关的项目阶段
- 项目最终目标和阶段性目标
- 进度计划
- 项目预算
- 变更流程和变更委员会
- 对内容,范围和时间的关键管理评审
口令加密和秘钥加密的区别
- 基于口令加密认证方式简单,但是由于复杂度的原因,易收到认证攻击,而私钥因为不在网络中传输,所以可以有效防止攻击
- 私钥会加密传输数据,更安全
- 规模不大可以满足平台效率要求
内聚
内聚程度从低到高如下表所示:
内聚分类 定义 记忆关键字
偶然内聚 一个模块内各处理元素之间没有任何联系 无直接关系
逻辑内聚 模块内执行若干个逻辑上相似的功能,通过参数确定改模块完成哪一个功能 逻辑相似,参数决定
时间内聚 把需要同时执行的动作组合在一起形成模块 同时执行
过程内聚 一个模块完成多个任务,这些任务必须按指定的过程执行 指定的过程顺序
通信内聚 模块内所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据 相同的数据结构、形同的输入输出
顺序内聚 一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是后一个功能元素的输入 顺序执行、输入为输出
功能内聚 最强的内聚,模块内所有元素共同作用完成一个功能,缺一不可 共同作用,缺一不可
耦合
耦合程度从低到高如下表所示:
耦合分类 定义 记忆关键字
无直接耦合 两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,不传递任何信息 无直接关系
数据耦合 两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递 传递数据值调用
标记耦合 两个模块之间传递的是数据结构 传递数据结构
控制耦合 一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值,有选择的执行模块内的某一功能 控制变量,选择执行某一功能
外部耦合 模块间通过软件之外的环境联合(如I/O将模块耦合到特定的设备,格式,通信协议)时 软件外部环境
公共耦合 通过一个公共数据环境相互作用的那些模块间的耦合 公共数据结构
内容耦合 当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个内部模块时 模块内部关联
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43238568/article/details/130364050