湘潭大学软件工程专业选修 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 到这儿就算完结了,课件我感觉随便看一看,然后上面那个文档看一看,课后题看一看,差不多了。
编程题这块,感觉还可以看看最后实验的电商系统的代码,那个里面可能有一些业务代码,比如说什么订单,用户,是怎么写的,随便看看。
在发布之前校对了一遍,更正了一些错误。
相关文章:

湘潭大学软件工程专业选修 SOA 期末考试复习(二)
文章目录 回顾序言第一章课后题填空选择简答 第二章课后题填空选择编程 计划第三章课后题填空选择简答编程 第四章课后题填空选择简答编程 第五章课后题填空选择简答编程 第六章课后题说明 第七章课后题填空选择简答编程 第八章课后题填空选择简答编程 第九章课后题填空选择简答…...

改进的正弦余弦算法复现
本文所涉及所有资源均在 传知代码平台 可获取。 目录 一、背景及意义 (一)背包问题背景...

Day13杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new Arra…...

【c知道】Hadoop工作原理。
请解释一下Hadoop中MapReduce的工作原理,并说明如何进行MapReduce程序的编写和调试。 Hadoop MapReduce是一种分布式计算模型,它将大规模的数据处理任务分解成一系列小的、独立的任务(Map任务)和后续的聚合任务(Reduce…...

React.lazy() 懒加载
概要 React.lazy() 是 React 16.6 引入的一个功能,用于实现代码分割(code splitting)。它允许你懒加载组件,即在需要时才加载组件,而不是在应用初始加载时就加载所有组件。这种方法可以显著提高应用的性能,…...

【自学笔记】神经网络(1)
文章目录 介绍模型结构层(Layer)神经元 前向传播反向传播Q1: 为什么要用向量Q2: 不用激活函数会发生什么 介绍 我们已经学习了简单的分类任务和回归任务,也认识了逻辑回归和正则化等技巧,已经可以搭建一个简单的神经网络模型了。 …...

c#————扩展方法
关键点: 定义扩展方法的类和方法必须是静态的: 扩展方法必须在一个静态类中定义。扩展方法本身也必须是静态的。第一个参数使用 this 关键字: 扩展方法的第一个参数指定要扩展的类型,并且在这个参数前加上 this 关键字。这个参数…...

前向-后向卡尔曼滤波器(Forward-Backward Kalman Filter)资料汇总
《卡尔曼滤波引出的RTS平滑》参考位置2《卡尔曼滤波系列——(六)卡尔曼平滑》《关于卡尔曼滤波和卡尔曼平滑关系的理解》——有m语言例程《Forward Backwards Kalman Filter》——Matlab软件《卡尔曼滤波与隐马尔可夫模型》...

云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例
云集电商,一家聚焦于社交电商的电商公司,专注于‘精选’理念,致力于为会员提供超高性价比的全品类精选商品,以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化,公司对成本控制提出了更高要求&…...

详解Rust标准库:BTreeMap
std::collections::BTreeMap定义 B树也称B-树,注意不是减号,是一棵多路平衡查找树;理论上,二叉搜索树 (BST) 是最佳的选择排序映射,但是每次查找时层数越多I/O次数越多,B 树使每个节…...

.NET WPF CommunityToolkit.Mvvm框架
文章目录 .NET WPF CommunityToolkit.Mvvm框架1 源生成器1.1 ObservablePropertyAttribute & RelayCommandAttribute1.2 INotifyPropertyChangedAttribute 2 可观测对象2.1 ObservableValidator2.2 ObservableRecipient .NET WPF CommunityToolkit.Mvvm框架 1 源生成器 1…...

微信小程序使用阿里巴巴矢量图标库正确姿势
1、打开官网:https://www.iconfont.cn/,把整理好的图标下载解压。 2、由于微信小程序不支持直接在wxss中引入.ttf/.woff/.woff2(在开发工具生效,手机不生效)。我们需要对下载的文件进一步处理。 eot:IE系列…...

【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
在 Kubernetes 中,NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果 NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口进行访问,可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方…...

Java基础Day-Thirteen
Java字符串 String类 创建String对象的方法 方法一:创建一个字符串对象imooc,名为s1 String s1"imooc"; 方法二:创建一个空字符串对象,名为s2 String s2new String(); 方法三:创建一个字符串对象imooc&a…...

LangChain实际应用
1、LangChain与RAG检索增强生成技术 LangChain是个开源框架,可以将大语言模型与本地数据源相结合,该框架目前以Python或JavaScript包的形式提供; 大语言模型:可以是GPT-4或HuggingFace的模型;本地数据源:…...

【数据结构】哈希/散列表
目录 一、哈希表的概念二、哈希冲突2.1 冲突概念2.2 冲突避免2.2.1 方式一哈希函数设计2.2.2 方式二负载因子调节 2.3 冲突解决2.3.1 闭散列2.3.2 开散列(哈希桶) 2.4 性能分析 三、实现简单hash桶3.1 内部类与成员变量3.2 插入3.3 获取value值3.4 总代码…...

flutter 项目初建碰到的控制台报错无法启动问题
在第一次运行flutter时,会碰见一直卡在Runing Gradle task assembleDebug的问题。其实出现这个问题的原因有两个。 一:如果你flutter -doctor 检测都很ok,而且环境配置都很正确,那么大概率就是需要多等一会,少则几十分…...

Java字符串深度解析:String的实现、常量池与性能优化
引言 在Java编程中,字符串操作是最常见的任务之一。String 类在 Java 中有着独特的实现和特性,理解其背后的原理对于编写高效、安全的代码至关重要。本文将深入探讨 String 的实现机制、字符串常量池、不可变性的优点,以及 String、StringBu…...

leetcode 2043.简易银行系统
1.题目要求: 示例: 输入: ["Bank", "withdraw", "transfer", "deposit", "transfer", "withdraw"] [[[10, 100, 20, 50, 30]], [3, 10], [5, 1, 20], [5, 20], [3, 4, 15], [10, 50]] 输出ÿ…...

基于SSM(Spring + Spring MVC + MyBatis)框架的文物管理系统
基于SSM(Spring Spring MVC MyBatis)框架的文物管理系统是一个综合性的Web应用程序,用于管理和保护文物资源。下面我将提供一个详细的案例程序概述,包括主要的功能模块和技术栈介绍。 项目概述 功能需求 用户管理:…...

yakit中的规则详细解释
官方文档 序列前置知识之高级配置 | Yak Program Language 本文章多以编写yaml模版的视角来解释 规则一览 匹配器 在编写yaml中会使用到这里两个东西 点击添加会在返回包的右下角出现匹配器 上面有三个过滤器模式,官方解释 丢弃:丢弃模式会在符合匹配…...

[c语言]strcmp函数的使用和模拟实现
1.strcmp函数的使用 int strcmp ( const char * str1, const char * str2 ); 如果 str1 小于 str2,返回一个负值。如果 str1 等于 str2,返回 0。如果 str1 大于 str2,返回一个正值。 实例: #include <stdio.h> #include &…...

如何把子组件的v-model修改数据,进行接收然后定义数据格式,子传父的实现
在 Vue 中,实现子组件通过 v-model 向父组件传递数据并接收后进行格式化,可以按照以下步骤来封装和实现: 步骤 1: 子组件实现 v-model 子组件需要定义一个 props 来接收 v-model 的值,并通过 emit 方法发出更新事件。 <!-- …...

linux dpkg 查看 安装 卸载 .deb
1、安装 sudo dpkg -i google-chrome-stable.deb # 如果您在安装过程中或安装和启动程序后遇到任何依赖项错误, # 您可以使用以下apt 命令使用-f标志解析和安装依赖项,该标志告诉程序修复损坏的依赖项。 # -y 表示自动回答“yes”,在安装…...

【算法】递归+深搜:105.从前序与中序遍历序列构造二叉树
目录 1、题目链接 2、题目介绍 3、解法 函数头-----找出重复子问题 函数体---解决子问题 4、代码 1、题目链接 105.从前序与中序遍历序列构造二叉树. - 力扣(LeetCode) 2、题目介绍 3、解法 前序遍历性质: 节点按照 [ 根节点 …...

ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale
背景:IDF版本V5.1.2 ,配置ESP32 通用定时器,实现100HZ,占空比50% 的PWM波形。 根据乐鑫官方的IDF指导文档设置内部计数器的分辨率,计数器每滴答一次相当于 1 / resolution_hz 秒。 (ESP-IDF编程指导文档&a…...

基于Python的旅游景点推荐系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

【开源社区】ELK 磁盘异常占用解决及优化实践
1、问题及场景描述 本文主要讨论在 CentOS环境下基于 rpm 包部署 ELK 系统磁盘异常占用的问题解析和解决方案。 生产问题描述:以下问题现实场景基于ELK体系下,ES服务的磁盘占用问题解析。默认情况下,基于 RPM 安装的 Elasticsearch 服务的安…...

达梦数据守护集群_动态增加实时备库
目录 1、概述 2、实验环境 2.1环境信息 2.2配置信息 2.3 查看初始化参数 3、动态增加实时备库 3.1数据准备 3.2配置新备库 3.3动态增加MAL配置 3.4 关闭守护进程及监视器 3.5修改归档(方法1:动态添加归档配置) 3.6 修改归档&…...

计算机基础:Ping、Telnet和SSH
文章目录 PingTelnetSSLSSH隧道 Ping Ping和Telnet是两种常见的网络工具,它们分别用于测试网络连接和检查服务端口的连通性。 Ping是一种网络工具,用于测试主机之间的连通性。它通过发送ICMP(Internet Control Message Protocol)…...