案例分析答题测试-2
第一道题
问题1(9分)
问题2
解释器架构风格:通过自定义解释引擎提供自定义能力,并且对外提供接口,允许用户提交符合规范的组件,通过解释器引擎解析出对应的组件到系统中,并且随着外界环境的变化做出相应的调整。属于虚拟机架构风格。
管道-过滤器架构风格:主要关注点是数据,将数据通过系统提供的管道输入,实时在过滤器中解析并且输出。上一流程的输出是下一流程的输入。属于数据流体系架构风格
隐式调用架构风格:系统之间不是直接调用的,而是通过某种中介的方式实现调用,例如基于事件机制、RPC等。使系统之间的调用松耦合。
从机器学习流程定义的灵活性来说,解释器架构风格通过内置解释器,内部定义好规则,支持用户输入自定义流程。
从学习算法的可扩展性来说,解释器对外提供规范化接口,接受用户提供符合规范的组件,在内部解释器引擎解析后集成到系统中。
第二道题
问题1
3-8系统管理员:a、c、f、h、I、j 9-12患者:b、d、e、g
问题2
顺序图:又称为时序图,关注交互消息的时间顺序
协作图:关注消息传递使用的通讯方式以及消息发送方和消息接收方的构成的组织结构
问题3
对象模型:描述对象的静态结构,例如属性、对象之间的交互关系等
动态模型:
功能模型:描述一个输入值是如何通过计算得到输出值的。
功能模型描述对象的能提供哪些操作,动态模型描述这些行为是如何实现的,而对象模型是行为发生客体。
以上3种都可以
第三道题
问题1
- 列冗余:多个表中包含相同字段的,减少查询数据时的连接操作来提高性能
- 派生列:派生列依赖其他列,派生列中的值是通过其他列的值计算得到的,减少查询过程中的计算操作来提高性能
- 重新组表:将两个或多个表合并成一张表。减少连接查询
- 表拆分:将表拆分为多个表。分为垂直拆分和水平拆分,垂直拆分是将主键和一些列放在一个表中,再将主键和其他列放在另外一个表中,拆分的表中都包含原来表中的主键和一部分其他字段。水平拆分是将表拆分成多个相同结构的子表,减少查询时的数据量来提高性能。 应当重新组表,将药品库存表合并到药品表中
问题2
批处理:在表中数据发生改变时,批量更新其他表中冗余列的数据。
应用逻辑:在代码中处理。
触发器:在修改表中的数据时,其他表中的冗余列监听数据改变并更新为新值,数据是实时更新的。
哪种都可以
问题3
(1)应当使用zset,因为热销药品排名是有序的而且是不重复的,而zset是一个有序的而且自动去重的列表。 (2)
- 在访问mysql时首先访问redis,根据缓存命中情况决定后续操作。如果命中缓存,则直接返回缓存中的数据;反之,则在mysql中查询出最新的值,后将新值回写到缓存中。
- 数据库的事务提供原子操作,只有事务提交成功后才可以入库
- 数据库中间件,实时向缓存中更新数据。
REST风格与RPC风格有哪些区别?
RPC架构风格:
REST架构风格:本质是通过HTTP实现,将事物抽象成资源,并且通过URI标识要访问的资源。关注点是资源。并且提供了GET、POST、PUT、DELETE等操作可以更加细粒度的管理资源