湘潭大学软件工程专业选修 SOA 期末考试复习(二)

文章目录

  • 回顾
  • 序言
  • 第一章课后题
    • 填空
    • 选择
    • 简答
  • 第二章课后题
    • 填空
    • 选择
    • 编程
  • 计划
  • 第三章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 第四章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 第五章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 第六章课后题
    • 说明
  • 第七章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 第八章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 第九章课后题
    • 填空
    • 选择
    • 简答
    • 编程
  • 总结

回顾

  • 湘潭大学软件工程专业选修 SOA 期末考试复习(一)

序言

发现之前那本书搞错了,好像是服务端的书?不知道。现在重新看一眼前面三章的题。最近感觉事情比较多,虽然课比较少。一件一件事情来,现在继续复习 SOA ,至少先过一遍大概的。

这个书有简答题和编程题,感觉考试就是这样了。感觉课件啥的随便看一下,然后记一记课后题就差不多了。

对了,要是文章里面有错误,麻烦在评论区或者私信告诉我。我们最后会忘了那个题的答案,但是会记得那段时间,那时的感受,就像我不记得英语老师讲的阅读理解是啥了,只记得他说的那些口头禅,ok ,fine ,whatever,interesting ,那些夸张的表情和态度,总是能在我们无助的时候给我们一些力量。以前有个人说,在她老了之后,在火炉旁,会想起以前一块的点点滴滴,细碎的美好像是涓涓细流,温暖人心。

第一章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.Spring Boot
2.版本号;小版本名称
3.兼容性
4.HTTP 或者消息队列(例如 RabbitMQ)等协议
5.Spring

选择

1.ABCD
2.D
3.B
4.C

简答

(1)微服务架构是一种将大型应用拆分成一组独立的小服务的架构风格,每个服务都具有独立的业务功能和数据存储。微服务架构的特点和优势包括高内聚、低耦合、独立部署、技术栈灵活、弹性扩展、故障隔离、易于迁移和重构等方面。高内聚、低耦合表示每个服务只关注自己的业务功能,易于维护和扩展;独立部署表示每个服务可以独立部署,方便测试和发布;技术栈灵活表示每个服务可以选择适合自己的技术栈,无需强制统一;弹性扩展表示可以根据需求对每个服务进行水平扩展,提高系统的容量和性能;故障隔离表示一个服务的故障不会影响整个系统的正常运行;易于迁移和重构表示可以根据业务需求灵活调整和重构各个服务。

软件工程这门课好像也考了这个题,感觉只能背一背,然后多写点儿。

(2)这个网上找到的答案列举了好多组件。我感觉太全面了点。下面的答案来自课件

Spring Cloud Eureka注册发现中心,主要负责完成微服务架构中的服务治理功能;Spring Cloud Config分布式配置中心,可以实现动态修改配置文件;Spring Cloud Hystrix熔断器,通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力

第二章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.Eureka Server 和 Eureka Client
2.@EnableEurekaServer
在这里插入图片描述

3.application.properties
4.90 秒(课件上面写的)
在这里插入图片描述

5.server.port

选择

1.A
注意和前面的 90 秒做一个区别,30 秒是续约心跳,90 秒是剔除服务。
2.BCD
3.ABD

编程

这个编程就是之前头歌上面的作业。现在再看一眼。假设出题的话,需要我们写一些什么呢?

说实话这块没有自己写的啥代码,最多考一考注解吗。

计划

干脆一次性把课后题都整理完算了。有时候可以养生佛系,有时候可以上上强度。嘿嘿。今天还有几个小时,不知道能不能把课后题全部看一遍。然后明天再把课件全部看一遍,还剩 7 章的课件。 (完稿的时候已经是第二天下午了,我高估了自己的效率)

第三章课后题

在这里插入图片描述

在这里插入图片描述

填空

1.分离均衡;混同均衡 (总感觉不对,又查了一下,感觉这个更对:硬件负载均衡,软件负载均衡
2.Eureka ; Consul RestTemplate 和 Feign
3.@Controller 和 @ResponseBody
4.@LoadBalanced
5.@ConfigurationProperties

选择

1.A
2.ACD(这题查了一下,确实是选这三个选项)
3.ABCD

简答

轮询:简单但不考虑服务器负载。
加权轮询:适用于处理能力不同的服务器。
最小连接数:根据当前服务器负载动态分配请求。
加权最小连接数:结合服务器性能和负载的动态分配方式。
随机:简单但不一定能实现负载均衡。

或者按照课件回答,可能课件是更官方的答案,但是就是有点不好记,一堆英文。
在这里插入图片描述
在这里插入图片描述

使用负载均衡可以帮助系统提升可用性、性能、扩展性和安全性,从而支持更高的并发处理、优化资源使用、避免单点故障,并且简化系统的维护和升级工作。

编程

创建项目的时候需要添加 Ribbon 依赖,但是头歌上面没有 idea 这个环境,感觉不会让写依赖之类的东西。

@Configuration
public class RibbonConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(RestTemplateBuilder builder){return builder.build();}
}

我感觉这些注解有可能考。其他的感觉不方便考察。

第四章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.@EnableFeignClients
2.@EnableFeignClients;@FeignClient

可以发现要写注解的这种题挺多的。
3.OFF NONE
4.TRACE FULL

选择

1.C
2.B
3.B(A 选项是因为能用那个注解,用于定义客户端的基础的 URL ,C 选项是因为只需要和注册中心中注册的服务名称一致,D 选项是因为不是都对哈哈哈)

简答

1.这个题感觉出的很好。

Feign:是一个声明式 HTTP 客户端,内部自动集成了负载均衡,使用 @FeignClient 注解来简化服务间的调用,并且默认通过 Ribbon 实现负载均衡。使用 Feign 的优点是简洁、易于使用,但缺乏灵活性。

Ribbon:是一个客户端负载均衡器,适合与 RestTemplate 一起使用,能够更加灵活地控制负载均衡的策略,适合对负载均衡有细粒度控制要求的场景。
两者的选择通常依赖于具体的应用场景:

如果你想要快速实现微服务间的调用,推荐使用 Feign。

如果你需要更多的控制或复杂的负载均衡策略,使用 Ribbon 配合 RestTemplate 更合适。
2.这个题网上找到的答案不如课件里面的答案。下面是课件里面的答案。

在这里插入图片描述
在这里插入图片描述

另外,当时写这个作业的时候,看课件感觉怎么也做不完这个实验,几十页的课件,无比漫长,完全看不到头。现在看到这一章的课件还是很害怕。

编程

感觉复习编程这个题型,就是看一下课件就好了。源代码里面没啥重要的内容,关键的东西都会放在课件上,稍微记一记就好了。

引入依赖的时候要引入 Web 和 Feign 依赖。虽然感觉不会考,但是还是记一下。

主要看第二行的启动 Feign 的注解

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
public class EurekaFeignClientApplication {public static void main(String[] args) {   SpringApplication.run(EurekaFeignClientApplication.class, args);}
}

感觉这种可能会考,就是比较简单,老师认为我们会的代码。定义一些实体类。

public class User {                                                   private String name;private Integer age;public User() { }public User(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;
}

有读者知道 GET 和 POST 的区别吗,感觉这里面有点讲究,但是真是太细节了。

GET 适用于数据检索操作,安全、简单、快速,但数据量小,不能传输敏感信息

POST 适用于提交数据、创建或修改资源、上传文件等,能够处理较大的数据量和敏感数据,但可能会改变服务器的状态。

@RequestMapping(value = "/hello2",method = RequestMethod.GET)public User hello(@RequestParam"name"String name,@RequestHeader"age"int age);@RequestMapping(value = "/hello3",method = RequestMethod.POST)public String hello(@RequestBody User user);

算了,感觉完全把握不住编程题,有点想放弃这个题型了。

第五章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.@EnableCircuitBreaker和@CircuitBreaker

这个可能因为教材版本的原因,老师上课的时候是说用新版本的,前面是旧版本的,后面是新版本的
在这里插入图片描述
这个题,可能还是以文档为准吧,那就是图片里面的答案。(课件上没有提及这个内容)

2.Hystrix Dashboard

dashboard 是仪表盘的意思

3.@EnableHystrixDashboard

感觉这个启动类的注解就是 @Enable + 名字,注意驼峰命名。

4.@EnableTurbine

选择

1.这个选择题找不到答案,有点无奈。不太敢相信 ai 给的答案,担心他瞎说哈哈哈。不过我有点双标了,有些填空题我就是问的 ai ,可能我感觉 ai 在回答填空题和简答题会正确一些,回答那种稍微绕一些的,感觉就要出问题了。

在这里插入图片描述
可以发现是 B ,熔断器打开,命令执行熔断表示 Hystrix 命令执行失败

可以先找课件,再找官方文档,再在网上找。

2.A
3.D

简答

我整理答案应该首选课件的。下面的答案都是先从课件上面找。
1.在这里插入图片描述
2.在eureka-hystrix-client的启动类中添加 @EnableHystrix 注解启动熔断功能,在项目的启动类添加 @EnableTurbine 注解,开启聚合监控功能,添加 @EnableHystrixDashboard 注解,启用Hystrix-Dashboard功能

和前面的填空题撞了,所以感觉是考试重点。

编程

课件里面用的另外一个代替的熔断,因为这个 Hystrix 停止维护了。

引入依赖的时候要引入 Feign、Ribbon、resilience4j 这些依赖。总结一下到这块,项目用到的一些技术,首先是一个框架,服务端,生产者消费者之类的,第二是负载均衡,讲了两个,Ribbon 和 Feign ,第三是熔断,也是讲了两个,Hystrix 和 resilience4j 。

可能需要知道 mapping 后面跟的是 url

@RequestMapping("/hi")
public String hi(String id){return "Hello World, I'm from resilience4j!"+id;}

其他的,感觉不像是能考的,编程题真难。

第六章课后题

在这里插入图片描述
在这里插入图片描述

说明

这个书和课件都不太一样。上课的时候老师说主要是操作,现在操作的分数只有一点点,考理论的还是挺多的。课件里面大部分也是一些代码和操作步骤。现在感觉就是把题目稍微看一看,然后之后再记一记知识点就去考试了。

不一样就不整理了。这章的题随便看看好了。应该不会考。

第七章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.@EnableConfigServer;@EnableConfigClient
2.spring.cloud.config.server.git.uri(把题干里面的信息串一串,因为 yaml 文件的格式大概就是这样子的,树状结构)
3.@RefreshScope
在这里插入图片描述

选择

1.A
2.AC
3.ABCD (这题网上搜到的答案是全选,ai 给的答案是 BC ,我研究一下到底选啥……)研究了一下,应该是选 BC

简答

服务器
在这里插入图片描述
客户端
在这里插入图片描述

编程

这个实验我按照课件做没做出来。当时的错误还记得比较清楚,就是 white page not found ,就是一个白色的网页,最下面的数字要么是 404 ,要么是 500

代码里面经常有 uri ,有时候又会看到 url ,下面说一下这两者的区别。

所有的 url 都属于 uri ,url 是可以直接访问的链接。uri 表示的是唯一的身份,Uniform Resource Identifier,url 的那个 l 表示的是 locator

完整地把代码看了一遍,感觉没啥好考的,这一章。看一下注解感觉差不多了,有些代码类似于填表格一样,还有的应该就是集成开发环境直接自动补全的。

第八章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.@EnableBinding
2.Sink
3.@StreamListener(就是中译英,感觉这些项目单看都是比较简单直观的,可能难在于组合这些模块,写一些有逻辑性的业务代码比较难)
4.spring.rabbitmq.host
(就像下面这样子,但是这就和填表格一样,真会考这种吗,配置文件我感觉都很直观,应该不会考吧)

spring:rabbitmq:host: 127.0.0.1      # RabbitMQ 服务的地址port: 5672           # 默认的 RabbitMQ 端口username: guest       # 用户名password: guest       # 密码

选择

1.ABCD
2.BC
3.ABCD

简答

课件上面没有直接回答这个问题。文档上面也没写。感觉简答题可能最好拿分,就是自己多写一点字就好了。

嗷嗷,不是没有写,是分成好几页课件,中间还有图,造成了干扰。
在这里插入图片描述
在这里插入图片描述

编程

这个当时是安装了一个 RabbitMQ 的服务,感觉和 Tomcat 一样,都是在任务管理器里面打开的。但是好像不是正确的打开方式,因为我 Tomcat 虽然能正常显示网页,但是在启动项目的时候提示没有 xx 权限,我也不懂是啥情况。RabbitMQ 对新手还是比较友好,没有出现什么问题。

这个流程大概就是在本地项目文件里面输入一条消息,在 RabbitMQ 的网页里面能看到产生了相应的结果。

代码里标记重要的两个注解,感觉可以记一下。

@EnableBinding(Sink.class) #重要
public class SinkReceiver {private static Logger logger= LoggerFactory.getLogger(StreamHelloApplication.class);@StreamListener(Sink.INPUT) # 重要public void receive(Object payload){logger.info("Received:"+payload);}
}

其他的代码不知道啥是重点。

第九章课后题

在这里插入图片描述
在这里插入图片描述

填空

1.RabbitMQ 或 Kafka
2.@EnableZipkin(从 Spring Cloud 2020 起已被移除,改为自动配置)
3.在这里插入图片描述
4.持久化存储和查询分析

选择

1.AD
在这里插入图片描述
2.A
3.D

简答

在这里插入图片描述
但是有一个问题,就写这么几个字,是不是够了呢?

在这里插入图片描述
这样子每一个特点后面加一个分析才感觉更安心一些。

编程

这一章的代码好像也没啥重点,随便看看好了。

总结

本来想在网上找教材的答案的,但是没找到,找到了这个网站,感觉可能有点帮助,里面的知识点浏览起来比较方便,算是看到这儿的一个彩蛋,哈哈哈。

黑马程序员官方文档

另外挂了梯子分享链接可能对方访问不了,幸好我刚点了一下,不然看到的就是“服务器不可用”了。

在网上看到一句话,我可以告诉你当年我也一样郁闷吗?,真好奇以后的我们会怎么看待现在的自己。

SOA 到这儿就算完结了,课件我感觉随便看一看,然后上面那个文档看一看,课后题看一看,差不多了。

编程题这块,感觉还可以看看最后实验的电商系统的代码,那个里面可能有一些业务代码,比如说什么订单,用户,是怎么写的,随便看看。

在发布之前校对了一遍,更正了一些错误。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM垃圾回收详解

前言 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核…

Hive 操作基础(进阶篇✌️)

Hive 进阶操作 分区表 创建分区表 create table score_part(字段名 字段类型,字段名 字段类型 )partitioned by (分区字段 分区类型) row format delimited fields terminated by \t; 创建单极分区表 注意: 分区的列名不能和数据列名相同.分区列会当做虚拟列出现在数据列…

【Kafka】Windows+KRaft部署指南

【Kafka】WindowsKRaft部署指南 摘要本地环境说明官网快速开始修改config/kraft/server.properties初始化数据存储目录启动 测试创建topic创建生产者创建消费者 FAQ输入行太长。命令语法不正确。问题描述解决方案 参考资料 摘要 Kafka是一种高吞吐量的分布式发布订阅消息系统&…

Docker-软件容器平台

一、容器 1、什么是容器 容器就是将软件打包成标准化单元,以用于开发、交付和部署 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows…

OSS和FastDFS的区别

FastDFS: FastDFS 是一种开源的轻量级分布式文件系统,基于HTTP协议实现。具有高扩展性、高可用性和高稳定性。它解决了大容量文件存储和高效访问的问题,适合作为大容量文件的存储服务器。FastDFS 通过文件系统集群,使得用户可以将…

分离编译(介绍,解决“类模板定义和声明不在同一文件导致链接错误“的问题),类模板实例化原理,

目录 分离编译 介绍 问题代码示例 代码 说明 预处理 编译 链接 类模板实例化原理 总结 解决方法 显式实例化 模板的声明和定义放在一个头文件 分离编译 介绍 分离编译是一种编程技术 允许将程序代码分割成多个文件,每个文件可以独立地编译成目标文件…

云计算答案

情境一习题练习 一、选择题 1、在虚拟机VMware软件中实现联网过程,图中箭头所指的网络连接方式与下列哪个相关( C )。 A.仅主机模式 B.桥接 C.NAT D.嫁接 2、请问下图这个虚拟化架构属于什么类型( A …

如何做好多项目进度管理

在同时管理多个项目时,重要的是要确保每个项目都能按时、按质完成。有效的时间管理、资源优化配置、持续的沟通和使用专业工具是关键要素。这些元素有助于维护项目的整体质量和效率,确保所有项目成员的责任和期望都明确无误。本文将深入探讨如何通过实践…

如何在vscode中安装git详细新手教程

一、安装git后点击vscode中的设置 今天教大家如何在VScode中编写代码后提交到git仓库,如果我们不想切换到git的命令行窗口,可以在VScode中配置git,然后就可以很方便快捷的把代码提交到仓库中。 二、在输入框中输入 git.path ,再点…

使用Docker Compose构建多容器应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

Python-利用tkinter库编写一个exe伪恶意程序文件(下)

前言 接着上篇所讲的,我们已经完成了源代码的准备,并将其储存在了function_1.py文件中。接下来我们将把function_1.py文件编写为相对应的exe文件。那么好,废话不多说,我们直接开始。(温馨提示:由于整蛊的需…

java list使用基本操作

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Main {public static void main(String[] args) {ArrayList list new ArrayList();list.add("张三");list.add("李四");list.add("王五");l…

【C/C++】strncpy函数的模拟实现

零.导言 之前我们学习了strncpy函数,不妨我们现在尝试模拟实现strncpy函数的功能。 一.实现strncpy函数的要点 strncpy函数是一种字符串函数,可以按字节拷贝字符类型的数组,因此我们自定义的模拟函数需要两个char类型的指针参数;…

ARM-8 定位发布版本 pstree 程序的 main 地址

逆向时如何找到main,如下: 1.readelf -h pstree ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2s complement, little endian Versi…

履带机器人(一、STM32控制部分--标准库)

一、履带机器人整体逻辑框架 通过在PC端搭建上位机,使得在PC端可以给STM32发送控制指令并且接受STM32的状态信息。 通过RS485通信,使得STM32可以和电机进行通信,STM32发送启动、停止、转速、方向等指令,并接受电机返回的状态信息。 二、STM32逻辑框架 整体逻辑: 1、先…

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai:Oracle Data Redaction(20241104)1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…

Rust重写万物之——从头开始编写浏览器引擎

一款用 Rust 编写的全新“轮子”最近备受关注—— 因不满大公司垄断,Gosub 项目团队用 Rust 从头开始编写了一个新的浏览器引擎,目前 star 数已超过 3k。 Gosub 项目的诞生是因为不少用户对当前的 Web 浏览器现状感到不满。 尽管市面上有许多浏览器可供选择,但其中大多数…

Elasticsearch-linux环境部署

本文主要介绍linux下elasticsearch的部署。通过在一台linux服务器中分别对elasticsearch-6.7.2版本,elasticsearch-7.3.0版本来进行安装,记录在安装elasticsearch-7.3.0版本时出现的异常情况,以及elasticsearch-head的安装。 基础环境 本机已…

mac crontab 不能使用问题简记

需要 crontab 有权限,如下截图设置 在访达上方【前往】-》【前往文件夹】输入/ 然后按 Command Shift . 显示隐藏文件,然后将 usr 放到左边栏 然后如下操作 系统设置中找到 隐私安全->完全访问磁盘 点击小锁头 点击号,将/usr/bin/c…

2款使用.NET开发的数据库系统

今天大姚给大家分享2款使用.NET开发且开源的数据库系统。 Garnet Garnet是一款由微软研究院基于.NET开源的高性能、跨平台的分布式缓存存储数据库,该项目提供强大的性能(吞吐量和延迟)、可扩展性、存储、恢复、集群分片、密钥迁移和复制功能…