2015架构案例(五十一)

news2024/11/24 8:32:17

第5题

【说明】
某信息技术公司计划开发一套在线投票系统,用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户,当用户规模扩大到一定程度时,开始联系相关企业提供信息服务,并按照信息服务种类和用户投票数量收取费用。

为了降低开发成本和提高开发效率,项目组经过讨论后决定采用轻量级Java EE开发框架设计系统应用架构。在应用架构设计中,除了满足系统主要功能需求,还需要考虑的因素包括:

(1) 项目开发采用MySQL数据库存储数据,一但将来可能移植到其它数据库平台;

(2) 系统开发过程中尽可能降低或者消除SQL语句开发的工作量;

(3) 投票系统中数据之间的关系复杂,需要支持数据对象的聚合和继承等关系。

【问题:5.1】请用300以内文字说明什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?

答案:

数据持久层可以提高系统的复用性,灵活性,将一些数据持久化存储在我们需要的数据库,比如mysql,oracle等,使用数据持久层可以提升系统可靠性,开发项目更方便,不同项目之间可以访问同一个数据持久层,可以保证数据共享,提高开发效率和系统可修改性

数据持久层采用的是分层思想,通过对象/关系映射策略与数据库访问,透明化给开发人员使用,简化开发人员的访问数据库工作,主要好处有:

  1. 分离业务和数据库层的访问,解耦。
  2. 通过对象/关系映射访问数据库。
  3. 简化数据层访问,隐式数据库连接、数据库命令和事务管理

【问题:5.2】针对在线投票系统的实际应用需求和要求,项目组应选用哪种技术实现数据持久层?请用200字以内文字说明其采用该技术的原因。

答案:

Hibernate和Mybatis都可以支持代码复用,但是Hibernate可以降低或者消除SQL语句开发的工作量,Hibernate支持移植到其他平台,支持多种类型数据库,Hibernate支持对象聚合和继承,mybatis不支持,Hibernate与该系统需要考虑的因素相吻合。

【问题:5.3】数据持久层是Web应用系统框架中重要的组成部分,主流的数据持久层技术分别基于不同的技术方案,请在表5-1中(1)-(4)处分别根据(a)~(d)所列技术的方案类别填入其序号。

  1. BMP, CMP
    (b) iBatis/MyBatis
    (c) SpringJdbcTemplate
    (d) TopLink,JDO,Hibernate

(1)C

(2)B

(3)A 答案:D

4)D 答案:A

第4题

【说明】
某软件公司拟开发一套贸易综合管理系统,包括客户关系管理子系统和商品信息管理子系统两部分。客户关系管理子系统主要管理客户信息,并根据贸易业务需要频繁向客户发送相关的电子邮件、短信等提醒信息。商品信息管理子系统主要为客户提供商品信息在线查询功能,包括商品基本信息、实时库存与价格等。

在对系统进行数据架构设计时,公司项目组的架构师王工主张采用文件系统进行数据管理,原因是目前公司客户和商品数量不大,且系统功能较为简单,采用文件系统进行数据管理简单直观,开发周期短。架构师李工则建议采用关系数据库进行数据管理,原因在于公司目前正处在高速扩张期,虽然目前的客户和商品数量不大,但随着公司快速发展,需要管理的数据必然飞速膨胀,采用关系数据库作为数据存储层,系统的扩展性更强,并能够对未来可能增加的复杂业务提供有效支持。经过讨论,项目组初步采纳了李工的意见,决定采用关系数据库存储客户数据,并针对业务特征对系统性能进行优化。

【问题:4.1】请从设计难度、数据冗余程度、数据架构、应用扩展性等4个方面对关系型数据库管理系统和文件系统两种数据存储方式进行比较,填写表4-1中(1)~(4)。

  1. 特定关系来设计难度较大
  2. 没有特定规范,非结构化数据多,数据冗余较大
  3. 以文件为中心组织、管理答案:以应用系统为中心,管理属于
  4. 数据独立于应用系统,应用系统之间共享很容易

【问题:4.2】对系统的核心业务需求进行认真分析后,公司的资深架构师张工提出一种内存数据库和关系数据库的混合存储架构,其核心思想是将需要频繁读写的数据存入内存数据库,而将相对固定不变的数据存入关系数据库。请首先分析比较内存数据库和关系数据库在数据模型、读写性能、存储容量、可靠性等方面的差异,填写表4-2中(1)~(4)的空白,并根据张工的思路指定各种业务数据的存储方式,填写表4-3中(5)~(9)中的空白。

答案:

  1. 非关系模式 答案:键值对,key-value
  2. 磁盘I/O读写,性能相对较低
  3. 基于内存存储,存储容量小
  4. 恢复机制复杂,可靠性低
  5. 内存数据库
  6. 内存数据库
  7. 关系数据库
  8. 关系数据库 答案:内存
  9. 关系数据库 答案:内存

解析:因为商品库存变动大,需要频繁修改,内存效率更高。所以采用内存数据库。

电子邮件和电话也频繁发送,所以内部数据库。

【问题:4.3】系统开发完成进行压力测试时,发现在较大数据量的情况下,部分业务查询响应时间过长,经过分析发现其主要原因是部分SQL查询语句效率低下。请判断表4-4中的SQL语句设计策略哪些可能会提升查询效率,哪些可能会降低查询效率,在(1)~(4)中填入“提升”或“降低”。

  1. 提升
  2. 降低
  3. 降低
  4. 提升

【问题:2.1】状态图和活动图是软件系统设计建模中常用的两种手段,请用200字以内文字简要说明状态图和活动图的含义及其区别。

答案:

状态图:表示对象被触发时候需要改变对象状态,强调单个对象。

活动图:强调整个系统,表示系统整个数据流如何流转

答案:

状态图:描述一个对象生存期间动态行为,通常事件来触发这个对象的动作。

活动图:表示描述系统的工作流程和并发行为。活动图在一个活动结束会进入下一个活动。

状态图侧重描述行为的结果,活动图侧重描述行为和动作,活动图可以并发行为,状态图不可以。

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

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

相关文章

关于RNNoise、webrtc_ns、三角带通滤波器、对数能量

语音特征参数MFCC提取过程详解 其中讲解了:三角带通滤波器 、计算每个滤波器组输出的对数能量、对数能量、经离散余弦变换(DCT)得到MFCC系数 推荐阅读某乎这位大佬的全部文章: 下面是几篇出自这位大佬的很好的文章: …

MySQL进阶(回望MySQL)——从数据资产谈起 MySQL的DOS命令、常用数据类型、SQL语句的分类 SQL函数

前言 SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言,它用于定义、操作和管理数据库中的数据。SQL是一种通用的语言,可以用于多种关系型数据库管理系统(RDBMS),如MySQ…

小程序需带参数跳转

1、需要生成二维码的数据 直接在浏览器中替换成自己的appid,secret及可生成一个access_token https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appidwxxxxx&secretxxxxx用access_token https://api.weixin.qq.com/wxa/getwxacode…

【LeetCode热题100】--215.数组中的第K个最大元素

215.数组中的第K个最大元素 本题主要是返回数组排序之后的倒数第k个位置 方法一:基于快速排序 思路和算法 我们可以用快速排序来解决这个问题,先对原数组排序,再返回倒数第 k 个位置,这样平均时间复杂度是 O(nlog⁡n)&#xff0…

管程的介绍

一、概述 1.引入原因 信号量机制实现同步存在编写程序困难,易出错问题 2.概念 是一种实现进程互斥与同步的机制, 3.组成 共享数据结构说明、对数据结构操作的过程/函数、初始化共享数据、管程名; 4.特点 类似类的结构(数据对象相关操…

IDEA通过Docker插件部署SpringBoot项目

1、配置Docker远程连接端口 找到并编辑服务器上的docker.service文件。 vim /usr/lib/systemd/system/docker.service在下面ExecStart替换成下面的 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock2.重启docker systemctl daemon-reload s…

强化学习(Reinforcement Learning)与策略梯度(Policy Gradient)

写在前面:本篇博文的内容来自李宏毅机器学习课程与自己的理解,同时还参考了一些其他博客(懒得放链接)。博文的内容主要用于自己学习与记录。 1 强化学习的基本框架 强化学习(Reinforcement Learning, RL)主要由智能体(Agent/Actor)、环境(Environment)、…

CSS padding(填充)

CSS padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。 padding(填充) 当元素的 padding(填充)内边距被清除时,所释放的区域将会受到…

最新Base64注入攻击和代码分析技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 点击图片五折购书 Base64注入攻击 Base64注入攻击的测试地址在本书第2章。 从URL中可以看出,参数ID经过Base64编码(“%3d”是“”的URL编码…

Vulnhub系列靶机-Raven2

文章目录 Raven2 渗透测试1. 信息收集1.1 主机探测1.2 端口扫描1.3 目录爆破 2. 漏洞探测3. 漏洞利用3.1 msfconsole3.2 交互式shell 4. 权限提升 Raven2 渗透测试 1. 信息收集 1.1 主机探测 arp-scan -l1.2 端口扫描 nmap -p- -A 192.168.188.213通过nmap工具进行端口扫描…

LeetCode【54】螺旋矩阵

题目&#xff1a; 思路&#xff1a; 参考&#xff1a;https://blog.csdn.net/ShiXiAoLaNga/article/details/124975293 上下左右&#xff0c;四个游标&#xff0c;代表边界&#xff0c;每次遍历完一行或一列都移动游标&#xff1b;直到 down > up、right < left&#xf…

使用hugging face开源库accelerate进行多GPU(单机多卡)训练卡死问题

目录 问题描述及配置网上资料查找1.tqdm问题2.dataloader问题3.model(input)写法问题4.环境变量问题 我的卡死问题解决方法 问题描述及配置 在使用hugging face开源库accelerate进行多GPU训练&#xff08;单机多卡&#xff09;的时候&#xff0c;经常出现如下报错 [E Process…

key value存储到底有什么优势?

昨天被问到Key value存储到底有什么优势&#xff0c;当然脑子也没太转过来。正好昨天学习了B树和LSM树的差别&#xff0c;并了解到LSM树底层是可以用sstable来实现的。sstable包含一个数据块列表和一个索引块&#xff0c;数据块存储有序键镇对&#xff0c;索引块存储所有数据块…

navicate安装教程

Navicat是一款数据库管理工具&#xff0c;它支持多种数据库类型&#xff0c;包括MySQL、MariaDB、Oracle、SQL Server等。Navicat具有直观的图形用户界面和易于使用的功能&#xff0c;可以让用户轻松地管理和操作数据库。 首先&#xff0c;Navicat提供了一种简单的方法来连接到…

Linux gcc和make学习

文章目录 GCCgcc的安装gcc的工作流程 makefilemakefile的规则工作原理自动生成makefile的变量自定义变量预定义变量自动变量 模式匹配函数wildcard函数patsubst函数 伪声明 GCC gcc全程是&#xff08;GNU compiler collection CNU编译器套件&#xff09;&#xff0c;是由GNU开发…

【汇编语言学习笔记】一、基础知识

引言 汇编语言是直接在硬件之上工作的编程语言&#xff0c;首先要了解硬件系统的结构&#xff0c;才能有效的应用汇编语言对其编程。 1.1机器语言 机器语言是机器指令的集合。 机器指令展开来讲就是一台机器可以正确执行的命令。 1.2汇编语言 汇编语言的主体是汇编指令。 …

2023年中国特高压绝缘子市场规模及特高压投资完成额统计[图]

绝缘子指一般由固体绝缘材料制成&#xff0c;安装在不同点位的导体之间或导体与接地构件之间&#xff0c;是同时起到电气绝缘和机械支撑作用的器件&#xff0c;绝缘子可分为瓷绝缘子、玻璃绝缘子与复合绝缘子。特高压绝缘子指用于交流1,000kV、直流800kV及以上电压等级的绝缘子…

基于SSM框架的安全教育平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

QT CmakeLists配置python

这是exe目录&#xff0c;要放到这里&#xff0c;要放到这里&#xff0c;要放到这里。 find_package(PythonLibs 3.6 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS})set(PY python/libs/) set(PY_LIBS ${PY}_tkinter ${PY}python3 ${PY}python36 ${PY}python36_d) targ…

1805_emacs org-mode的归档处理

全部学习汇总&#xff1a;GreyZhang/g_org: my learning trip for org-mode (github.com) 我使用org-mode其实很多年了&#xff0c;但是使用的org-mode功能非常少而且技术自然也是很浮于表面。很多org-mode本身的功能我了解不多&#xff0c;更谈不上能够掌握。就比如说通过org维…