3.软考-系统架构设计师-案例题总结

2022年09月09日 20:21 · 阅读(384) ·

UML

数据流图和系统流程图的区别

(1)数据流图中的处理过程可以并行,系统流程图在某个时间点只能处理一个处理过程。

(2)数据流图展示系统的数据流,系统流程图展示系统的控制流。

(3)数据流图展现全局的处理过程,过程之间遵循不同的计时标准。系统流程图中处理过程遵循一致的计时标准。

活动图和流程图的区别

(1)活动图是面向对象的,而流程图是面向过程的。
(2)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。流程图着里描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。
(3)活动图能够表示并发活动的情形,而流程图不能。

数据库

反规范化设计

方法 描述
增加冗余列 增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作
增加派生列 增加派生列指增加的列可以通过表中其它数据计算生成。
它的作用是在查询时减少计算量,从而加快查询速度
重新组表 重新组表指如果许多用户需要查看两个表连接出来的结果数据,
则把这两个表重新组成一个表来减少连接而提高性能
水平分割表 按记录进行分割,把数据放在多个独立的表中,
主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用
垂直分割表 对表进行分割,将主键与部分列放到一个表中,
主键与其它列放到另外一个表中,在查询时减少 I/O 次数

反规范化设计解决数据不一致的三种方法

方法 描述
批处理维护 通过定期运行一批处理作业或存储过程对数据库进行修改,适用于实时性要求不高的情况
应用逻辑 在同一事务中对所有涉及的表进行增,删,改操作。
同一逻辑必须在所有的应用中使用和维护,容易遗漏,特别是在需求变化时,不易于维护
触发器 对数据的任何修改立即出发对数据库某些列的相应修改。触发器实时性好,也易于维护。

Sql 注入攻击

sql 注入攻击,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意 sql 命令。

可以通过一下方式抵御 sql 注入攻击
1.使用 PreparedStatement,sql 解释和执行分开。
2.使用存储过程。
3.验证输入/过滤输入
4.专业的安全产品。

并发操作会带来的数据不一致问题

● 不可重复度
● 读脏数据
● 丢失修改

读写锁的缺点

● 读写锁会造成读写操作的互相阻塞,实际使得用户的操作被串行化,降低了系统的并发性能。
● 设计不好的情况下,可能会出现资源的交叉锁定,形成死锁。

分布式数据库

概念:分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成一个逻辑上统一的数据库。
每个别连接起来的数据库单元称为站点或节点。

常见的实现技术:
● 读写分离。
● 数据分片。
● 数据索引。
● 数据缓存。
● 负载均衡。

Redis

数据类型

http://edu.jb51.net/redis/redis-data-types.html

数据类型 描述
string(字符串) 基本类型。 可用于缓存层或计数器。如视频播放量,文章浏览量等。
hash(哈希) 键值对。
list 双向链表结构,可以模拟栈,队列等形式。可用于回复评论,点赞。
set 无序集合,每个值不能重复。可用于去重,抽奖,初始化用户池。
zset 有序集合,每个元素有一个分数。如首页推荐 10 个最热门贴子。

Redis 和 MySQL 数据实时同步问题的常见方案

方案 描述
mysql 事务 引用 Mysql 的事务,因为事务有一致性保证,事务提交成功后再更新缓存
缓存访问控制位 在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,
然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
数据库中间件 通过数据库中间件产品保证缓存和数据库数据时时同步

缓存穿透,击穿,雪崩问题

缓存问题
缓存穿透
缓存击穿
缓存雪崩

Memcached 和 redis 区别

特征 Memcached redis
数据类型 简单 key/value 结构 不仅仅支持简单的 k/v 类型的数据,
同时还提供 list,set,hash 等数据结构的存储
持久化 不支持 支持
分布式存储 支持 多种方式,主从,sentinel,cluster 等
多线程支持 支持 不支持,redis 6.0 支持
内存管理
事务支持 不支持 有限支持

redis 分布存储两种常见方案

● 主从复制
● 哨兵 sentinel

redis 分片方案

分片方案 描述
客户端分片 将分盘工作放在业务程序端。
不依赖于第三方分布式中间件,实现方法和代码可掌控,对开发人员要求高
代理分片 将分片工作交给专门的代理程序来做,运维方便。
代表:Twemproxy,Codis
服务区端分片 Redis Cluster 将所有的 Key 映射到 16394 个 Slot 中,集群中每个 Redis 实例负责一部分,业务程序通过集成的 Redis Cluster 客户端进行操作

Web

响应式 Web 布局

响应式 Web 设计是在开发和设计网页过程中产生的一种方式,它的目的是让内容布局能随用户使用显示器的不同而变化。

实现方式
(1)弹性网格和布局
(2)图片
(3)CSS media query

面向对象

构件

构件的特性是:
(1)独立部署单元;
(2)作为第三方的组装单元;
(3)没有(外部的)可见状态。

构件创建的对象(对这些对象的引用)可以与对象分离开来,并对构件的客户可见。
一个构件可以包含多个类元素,但是一个类元素只能属于一个构件。将一个类拆分进行部署通常没什么意义。

对象

对象的特性是:
(1)一个实例单元,具有唯一的标志。
(2)可能具有状态,此状态外部可见。
(3)封装了自己的状态和行为。