Spring Boot应用程序开发实践

需积分: 5 0 下载量 102 浏览量 更新于2024-12-25 收藏 60KB ZIP 举报
资源摘要信息:"本次作业内容涉及Spring Boot应用程序的开发,这是一个在Java语言基础上构建的独立的、生产级别的Spring应用程序。Spring Boot旨在简化新Spring应用的初始搭建以及开发过程。它使用'约定优于配置'的原则,提供了一系列大型项目中常见的默认配置,从而可以快速启动和运行Spring应用程序。 从标题中我们可以了解到,作业的名称为cst438_assign1,这可能是某个课程作业的命名方式,其中cst438可能是课程代码。作业1通常表示这是课程中第一个任务,而'等待审核'则意味着这个作业已经被提交,但尚未得到教师的评分和反馈。 描述部分提供了更多关于作业的细节,说明了这是一个与Spring Boot相关的应用程序开发任务。Spring Boot是Spring框架的一个模块,它提供了快速开发、配置简单和独立运行的特性。Spring Boot应用程序通常可以被打包为一个可执行的jar或war文件,这样它们就可以在Java环境中直接运行。 在Java开发社区中,Spring Boot非常受欢迎,因为它极大地简化了企业级应用的开发。它自动配置Spring和其他库,只需要很少的配置文件,允许开发者专注于业务逻辑而不是配置细节。Spring Boot应用程序的核心是一个包含主程序类的单一jar文件,该主程序类通常使用@SpringBootApplication注解标记。这个注解是一个组合注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。 描述中还提到了'分配1',这可能意味着作业与课程的第一部分相关,或者是与课程分配的第一个主题或单元相关。 压缩包文件的名称为'assignment1-master'。通常在软件开发中,使用'master'这个词来指代项目的主分支或主线版本。从文件名可以推测,这个压缩包可能包含了一个完整的项目文件夹结构,其中包括源代码、资源文件以及可能的构建脚本和文档。如果这个压缩包是在一个代码托管平台如GitHub上创建的,那么'master'分支就是项目的默认分支,包含项目的最新稳定版本。 在Java中,Spring Boot项目可能会使用Maven或Gradle作为构建工具。这些构建工具负责依赖管理、编译源代码、打包应用程序以及运行测试等任务。一个典型的Spring Boot项目结构会包括一个主应用类,控制器(用于处理HTTP请求)、服务(业务逻辑层)、数据访问对象(数据访问层)以及资源文件(如HTML模板、CSS、JavaScript和静态资源)。 综上所述,这个作业要求学生能够运用Java语言和Spring Boot框架来开发一个应用程序。学生需要理解Spring Boot的工作原理,能够搭建项目的基本结构,并且能够实现至少一个基本的功能。这个作业也是检验学生对Java编程、Web开发以及Spring框架概念掌握程度的一个实际应用。完成这个作业对于学习现代Java Web开发以及企业级应用架构来说是很有价值的。"

class AbstractGreedyAndPrune(): def __init__(self, aoi: AoI, uavs_tours: dict, max_rounds: int, debug: bool = True): self.aoi = aoi self.max_rounds = max_rounds self.debug = debug self.graph = aoi.graph self.nnodes = self.aoi.n_targets self.uavs = list(uavs_tours.keys()) self.nuavs = len(self.uavs) self.uavs_tours = {i: uavs_tours[self.uavs[i]] for i in range(self.nuavs)} self.__check_depots() self.reachable_points = self.__reachable_points() def __pruning(self, mr_solution: MultiRoundSolution) -> MultiRoundSolution: return utility.pruning_multiroundsolution(mr_solution) def solution(self) -> MultiRoundSolution: mrs_builder = MultiRoundSolutionBuilder(self.aoi) for uav in self.uavs: mrs_builder.add_drone(uav) residual_ntours_to_assign = {i : self.max_rounds for i in range(self.nuavs)} tour_to_assign = self.max_rounds * self.nuavs visited_points = set() while not self.greedy_stop_condition(visited_points, tour_to_assign): itd_uav, ind_tour = self.local_optimal_choice(visited_points, residual_ntours_to_assign) residual_ntours_to_assign[itd_uav] -= 1 tour_to_assign -= 1 opt_tour = self.uavs_tours[itd_uav][ind_tour] visited_points |= set(opt_tour.targets_indexes) # update visited points mrs_builder.append_tour(self.uavs[itd_uav], opt_tour) return self.__pruning(mrs_builder.build()) class CumulativeGreedyCoverage(AbstractGreedyAndPrune): choice_dict = {} for ind_uav in range(self.nuavs): uav_residual_rounds = residual_ntours_to_assign[ind_uav] if uav_residual_rounds > 0: uav_tours = self.uavs_tours[ind_uav] for ind_tour in range(len(uav_tours)): tour = uav_tours[ind_tour] quality_tour = self.evaluate_tour(tour, uav_residual_rounds, visited_points) choice_dict[quality_tour] = (ind_uav, ind_tour) best_value = max(choice_dict, key=int) return choice_dict[best_value] def evaluate_tour(self, tour : Tour, round_count : int, visited_points : set): new_points = (set(tour.targets_indexes) - visited_points) return round_count * len(new_points) 如何改写上述程序,使其能返回所有已经探索过的目标点visited_points的数量,请用代码表示

2023-06-10 上传