掌握 Spring Boot 的最佳方法 – 学习路线图
在企业界,人们说“Java 永垂不朽!”。但为什么呢?Java 仍然是开发企业应用程序的主要平台之一。大型公司使用企业应用程序来赚钱。这些应用程序具有高可靠性要求和庞大的代码库。根据Java开发人员生产力报告,62% 的受访开发人员使用 Spring Boot 作为其主要框架技术。
现在出现的问题是,什么是 Spring Boot?为什么它现在如此受欢迎?掌握 Spring Boot 的最佳方法是什么?如何开始?从哪里开始?应该涵盖哪些主题?等等。您是否需要从书中学习所有概念,还是应该学习一些在线教程,或者您应该通过做一些项目来学习 Spring Boot?因此,在本文中,我们将详细讨论所有这些内容。
如果已经有了 Spring,为什么还要使用 Spring Boot!
Spring被广泛用于创建可扩展的应用程序。在 Web 应用程序的情况下,Spring 提供了Spring MVC,它被广泛用于创建可扩展的 Web 应用程序。但是 Spring 项目的主要缺点是配置非常耗时,对于新开发人员来说可能有点乏味。在 Spring 中,使应用程序准备好投入生产需要一些时间。而解决方案是Spring Boot。要精通 Java 后端开发并掌握 Spring Boot,请参加我们全面的 Java 后端课程,该课程旨在带您从基础到高级概念。
Spring Boot 是在 Spring 基础上创建的,包含了 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此它如今越来越受到开发人员的青睐。
什么是 Spring Boot?
Spring Boot是Java 编程语言中最流行和使用的框架之一。它是一个基于微服务的框架,使用 Spring Boot 制作生产就绪的应用程序只需很少的时间。创建独立的、生产级的基于 Spring 的应用程序非常容易,您可以“直接运行”。因此,下面列出了 Spring Boot 的一些主要功能。
- 创建独立的 Spring 应用程序
- 直接嵌入Tomcat、 Jetty或Undertow 。
- 提供“启动器”依赖项以简化构建配置。
- 尽可能自动配置 Spring 和第三方库。
- 提供可用于生产的功能,例如健康检查和外部化配置。
- 无需代码生成,也不需要XML 配置。
Spring Boot 通过以下方式简化了 Spring 开发:
- 自动配置: Spring Boot根据项目中包含的库自动配置许多常用 bean。这样就无需进行大量手动配置。
- 快速应用程序开发 (RAD): Spring Boot 提供了一种快速简便的方法来开始使用 Spring 项目。您可以用最少的配置创建一个 Spring Boot 应用程序,并在几分钟内运行它。
- 生产就绪功能:Spring Boot 包含生产应用程序至关重要的健康检查和外部化配置等功能。
为什么要使用 Spring Boot?(首先确定目标)
因此,在深入了解Spring Boot 的完整路线图之前,你应该在心中有一个明确的目标,那就是为什么他/她想要学习 Spring Boot?是为了你的大学学术项目吗?还是为了你的长期职业生涯?或者你想建立自己的网站来创业?所以首先要明确一个目标。你为什么要学习 Spring Boot?
掌握 Spring Boot 的最佳方法 – 学习路线图
从 Spring Boot 概述开始。阅读一些与 Spring Boot 相关的博客,并研究一些与 Spring Boot 相关的东西。例如,阅读有关 Spring Boot 简介、为什么要使用 Spring Boot?如果已经有 Spring 等博客,并做好完整的心理准备,开始您的 Spring Boot 之旅。让自己有动力学习 Spring Boot 并使用 Spring Boot 构建一些很棒的项目。定期这样做,并开始逐个学习 Spring Boot 的新概念。在开始您的旅程之前,参加一些有关 Spring Boot 的研讨会或会议会更好。明确您的目标并朝着目标前进。
1.学习Java编程
Spring Boot 是一个 Java 框架,因此对Java有扎实的理解至关重要。这包括面向对象编程、变量、数据类型、控制流语句和集合等概念
2. Spring 框架
要掌握 Spring Boot,您需要先学习 Spring 框架。因此,我们建议您至少了解 Spring 框架的基础知识。如果不学习核心 Spring 框架,您将无法对 Spring Boot 产生“啊哈!”的感觉,例如它带来了什么。在 Spring 框架中,您需要学习这些东西
- 核:
- Bean 生命周期:了解 Spring 如何创建、管理和销毁 Bean。
- 依赖注入:了解如何在 bean 之间注入依赖关系以实现松散耦合。
- 控制反转(IoC):了解 Spring 如何管理对象生命周期,而不是依赖传统的 new/delete 关键字。
- Bean 工厂和应用程序上下文:探索 Spring 如何在应用程序中创建和管理 Bean。
接下来是学习 Web 和 AOP(当你了解 Spring Boot 时应该学习这个)
- 网站:
- 注释:学习用于构建 Web 应用程序的注释,例如@Controller、@RequestMapping和@ResponseBod y。
- MVC 结构:了解模型-视图-控制器 (MVC)设计模式,用于分离 Web 应用程序中的关注点。
- 配置:探索使用 Java 注释或 XML 定义 Bean 和应用程序设置的配置选项。
- 集成库/框架:了解如何将 Spring 与其他库(如Hibernate)集成以实现数据库访问。
- 配置文件:了解如何使用配置文件管理不同的应用程序配置(例如开发、测试、生产)。
- AOP(面向方面编程):
- AOP 的工作原理:探索AOP如何允许在不直接修改现有代码的情况下向其添加功能(方面)。
- 创建切入点、连接点、方面(仅限基础):学习这些 AOP 元素的基本概念,以实现横切关注点的模块化。
3.Spring Boot
一旦你了解了 Spring Firework 以及如何实现 Spring Security,你就需要切换到 Spring Boot 了。那时,你会对 Spring Boot 感到“啊哈!”,因为无论你做了什么,无论你为 Spring 应用程序做了什么配置,一切都将在 Spring Boot 中自动化。所以让我们看看你需要在 Spring Boot 中学习什么
3.1:Spring Boot 的重要性
- 快速应用程序开发 (RAD): Spring Boot 擅长快速高效地创建 Spring 应用程序。它提供预配置的默认值并简化常见任务,从而显著缩短开发时间。
- 微服务架构: Spring Boot 是构建微服务架构的热门选择。微服务是小型的独立服务,它们协同工作以形成更大的应用程序。Spring Boot 的自动配置和嵌入式服务器等功能使其非常适合开发微服务。
3.2:自动配置和自定义配置
Spring Boot 带有自动配置功能。无论你使用 spring web 和 spring AOP 创建 spring 应用程序时完成什么配置,你都必须添加大量配置。所有这些配置都是在 spring boot 中自动配置的。因此,默认情况下,配置始终存在,但是无论何时你想修改这些配置,你都可以修改所有这些配置。所以你应该学习所有这些内容,比如如何修改自动配置的特定配置。所以这是 spring boot 的一个非常重要的部分,因为尽管这些配置是在考虑某些参数的情况下创建的,但始终不建议使用默认配置。
3.3:属性和 YAML 配置
管理配置:了解如何创建属性文件 (.properties ) 或YAML 文件 (.yml)来管理应用程序配置设置。这些文件存储各种配置选项的键值对。Spring Boot 读取这些文件并使用它们来配置应用程序。与属性文件相比,YAML 是一种更易读、更简洁的格式。
3.4:与外部库/框架集成
无缝集成:了解如何将 Spring Boot 与各种库和框架集成以扩展其功能。这可能涉及使用JPA或JDBC连接到数据库、与Kafka或RabbitMQ等消息系统集成,或使用Redis或Memcached等缓存提供程序。Spring Boot 提供了与各种技术顺利集成的机制。
3.5:REST API
理想情况下,Spring Boot 用于创建 REST API,供其他应用程序使用或供其使用,并在微服务中使用。您只需在 REST API 中学习以下内容
- REST API 设计原则:了解RESTful API的核心概念,包括正确的资源识别、使用HTTP 方法(GET、POST、PUT、DELETE)以及返回适当的 HTTP 状态代码。
- Spring MVC 用于 REST API:利用 Spring MVC 功能(如@RestController和@RequestMapping注释)在 Spring Boot 应用程序中构建 RESTful API。这些注释简化了定义控制器和处理传入 API 请求的过程。
4.数据库
Spring Boot 应用程序经常与数据库交互来存储和管理数据。以下是您可能会遇到的数据库技术的概述:
4.1 SQL 数据库
- SQL(结构化查询语言):一种与关系数据库交互的标准化语言。它允许您使用查询执行数据检索、插入、更新和删除 等操作。
- 流行的关系数据库:
- MySQL:MySQL是一个免费的开源关系数据库管理系统,以其易用性和可扩展性而闻名。
- PostgreSQL:PostgreSQL是另一种流行的开源关系数据库,提供ACID 事务和复杂数据类型等高级功能。
- Oracle:一种商业关系数据库管理系统,以高性能、可靠性和强大的安全功能而闻名。
4.2 NoSQL 数据库
- NoSQL(不仅仅是 SQL): 不遵循关系模型的一类数据库。NoSQL数据库为不同的数据结构提供了灵活性,对于处理大量非结构化数据或高可用性要求等特定用例来说是一个不错的选择。
- 常见的NoSQL数据库:
- MongoDB:MongoDB是一种流行的面向文档的NoSQL 数据库,将数据存储在灵活的类似 JSON 的文档中。
- Cassandra:Cassandra分布式 NoSQL 数据库,以其高可用性、可扩展性和容错性而闻名。
4.3 Spring Data 简化数据访问
Spring Data 简化了 Spring 应用程序中的数据库访问。它提供了各种数据库技术的实现,允许您使用一致的 API 与数据库交互,而不管底层数据库类型如何。以下是您可能使用的一些 Spring Data 模块:
- Spring Data JPA:在JPA(Java 持久性 API) 之上提供了一个用于对象关系映射的层。JPA 允许您将数据库实体作为 Java 对象来处理,从而简化数据访问逻辑。
- Spring Data MongoDB: 使用熟悉的 Java 面向对象方法提供一种与 MongoDB 数据库交互的便捷方法。
- Spring Data JDBC: 允许您使用传统 JDBC API 与关系数据库进行交互。Spring Data JDBC提供了比原始 JDBC 更高级别的抽象,减少了样板代码并改进了异常处理。
我们建议从 SQL 数据库开始,这样您可以从该数据库中获得有关数据库如何工作以及如何在数据库中执行不同操作的核心知识。
5. Spring Security
Spring Security 是一个功能强大的框架,用于保护您的 Spring 应用程序。它提供身份验证(验证用户身份)、授权(确定用户权限)和访问控制(根据权限限制对资源的访问)功能。虽然对于基本的 Spring Boot 项目来说不是必需的,但学习 Spring Security 对于大多数需要用户管理和数据保护的实际应用程序来说都很有价值。以下是一些需要理解的关键概念:
身份验证机制:了解 Spring Security 支持的不同身份验证机制,例如基于表单的登录(用户名和密码)、OAuth2(Google 或 Facebook 等社交登录)以及基于令牌的身份验证的 JWT(JSON Web Token)。
使用角色授权:了解如何定义用户角色并为这些角色分配权限。Spring Security 允许您根据用户的角色控制对应用程序资源的访问。
6. 微服务
微服务是小型、松散耦合的分布式服务。微服务架构是为了解决 Monolith 架构的可扩展性和创新挑战而发展起来的(Monolith 应用程序通常非常庞大,超过 100,000 行代码)。它允许将大型应用程序分解为易于管理且职责定义略微的小组件。这种方法有几个好处:
- 可扩展性: 各个微服务可以独立扩展以满足不同的需求。如果一项服务的流量激增,则可以扩展该服务而不会影响其他服务。
- 可维护性: 规模较小、重点突出的服务更易于开发、测试和维护。开发人员可以开发单个服务,而无需了解整个应用程序的复杂性。
- 弹性: 如果一个微服务发生故障,并不一定会拖垮整个应用程序。其他微服务可以继续运行,从而提高容错能力并延长系统正常运行时间。
以下是使用 Spring Boot 构建微服务的一些关键 Spring Cloud 组件:
- Spring Cloud Gateway: 充当 API 网关,作为传入 API 请求的单一入口点。它根据定义的规则将这些请求路由到适当的微服务。
- Spring Cloud Config: 为微服务提供集中式配置管理系统。这使您可以从一个位置管理所有微服务的配置设置,从而简化配置管理。
- Spring Cloud Circuit Breaker: 实现断路器模式来处理微服务中的故障。如果微服务不可用,断路器可以自动快速故障并防止级联故障。
- Spring Cloud OpenFeign: 使用声明式 HTTP 客户端简化微服务之间的交互。OpenFeign 允许您定义与其他微服务交互的接口并隐藏底层HTTP 通信细节。
- Spring Cloud Sleuth: 支持分布式跟踪,让您可以跨多个微服务跟踪请求。分布式跟踪可帮助您识别性能瓶颈并调试跨多个服务的问题。
还有许多其他 Spring Cloud 项目可以根据您的特定需求使用。 其中包括服务发现(例如 Spring Cloud Eureka)、消息队列(例如 Spring Cloud Stream)和配置总线(例如 Spring Cloud Bus)。
对微服务设计模式有基本的了解也很有益,例如:
- 聚合器: 一个服务聚合来自多个微服务的数据以提供统一视图的模式。
- CQRS(命令查询职责分离): 将读取(查询)和写入(命令)操作分离到不同服务的模式,提高性能和可扩展性。
- SAGA(SAGA 模式): 用于管理涉及多个微服务的长时间运行事务的模式。即使发生故障,它也能确保所有涉及的服务的一致性。
- 事件源: 一种将应用程序状态存储为事件序列的模式。这可以更轻松地审核和重放事件以进行调试或重建历史数据。
7. DevOps 用于简化部署(可选但强烈推荐)
DevOps是一种文化和一套实践,旨在改善开发和运营团队之间的协作。虽然对于基本的 Spring Boot 开发来说并不是绝对必要的,但了解 DevOps 原则可以简化应用程序的部署、测试和监控。以下是一些可以与 Spring Boot 集成的关键 DevOps 工具:
- Docker:Docker提供了一种容器化 Spring Boot 应用程序的方法。容器将您的应用程序及其所有依赖项打包到一个独立的单元中,使其更具可移植性,并且更易于在不同环境中部署。
- Kubernetes: 用于自动部署、扩展和管理容器化应用程序的开源系统。Kubernetes 允许您在一组机器上协调微服务的部署。
- 云平台:阿里云,腾讯云,百度云,华为云等主要云提供商提供用于部署和管理 Spring Boot 应用程序的各种服务。这些服务可以提供自动构建管道、容器注册表和无服务器部署选项。
通过遵循此路线图并探索提到的资源,您将顺利掌握 Spring Boot 开发并构建强大、可扩展的企业应用程序!
结论
恭喜!您已经阅读完了本篇全面的 Spring Boot 开发指南。现在,您已经具备了使用 Spring Boot 强大功能构建现代可扩展 Java 应用程序的坚实基础。请记住,这只是您的 Spring Boot 冒险之旅的开始。Spring Boot 库和框架的庞大生态系统提供了无限的探索可能性。通过遵循本路线图并不断学习,您将顺利成为 Spring Boot 专家,制作出满足现代世界需求的强大而高效的 Java 应用程序。祝您编码愉快!
相关文章:

掌握 Spring Boot 的最佳方法 – 学习路线图
在企业界,人们说“Java 永垂不朽!”。但为什么呢?Java 仍然是开发企业应用程序的主要平台之一。大型公司使用企业应用程序来赚钱。这些应用程序具有高可靠性要求和庞大的代码库。根据Java开发人员生产力报告,62% 的受访开发人员使…...

element-ui】使用el_upload上传文件无法动态修改action
问题:最近在使用el_upload上传文件时,发现无法动态修改action的值,进行提交时,caseId2还是默认值null 原因:el-upload的先执行上传,后执行action里的响应,也就是赋值等操作。 解决方法&#x…...

如何查看电脑支持的最大内存
如何查看电脑支持的最大内存 要查看电脑支持的最大内存容量,可以通过以下几种方法: 一、使用Windows命令查询 打开命令提示符:按下“WinR”键,打开运行窗口,输入“cmd”,然后点击确定。输入查询命令&…...

24 年第十届数维杯国际数模竞赛赛题浅析
本次万众瞩目的数维杯国际大学生数学建模赛题已正式出炉,无论是赛题难度还是认可度,该比赛都是数模届的独一档,含金量极高,可以用于综测加分、保研、简历添彩等各方面。考虑到大家解题实属不易,为了帮助大家取得好成绩…...

Dubbo 3.x源码(25)—Dubbo服务引用源码(8)notify订阅服务通知更新
基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了接口级的服务引入订阅的refreshInterfaceInvoker方法,当时还有最为关键的notify服务通知更新的部分源码没有学习,本次我们来学习notify通知本地服务更新的源码。 Dubb…...

排序算法 -计数排序
文章目录 1. 计数排序(Counting Sort)1.1 简介1.2 计数排序的步骤1.3 计数排序C语言实现注释说明: 1.4 时间复杂度1.5 空间复杂度 1. 计数排序(Counting Sort) 1.1 简介 计数排序(Counting Sortÿ…...

Java学习,基本数据类型
变量就是申请内存来存储值,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。Java 提供了八种基本数据类型,这些类型可以分为四大类:整数类型…...

单片机GPIO中断+定时器 软件串口通信
单片机GPIO中断定时器 软件串口通信 解决思路代码示例 解决思路 串口波特率9600bps,每个bit约为1000000us/9600104.16us; 定时器第一次定时时间设为52us即半个bit的时间,其目的是偏移半个bit时间,之后的每104us采样并读取1bit数据。使得采样…...

elementui el-table中给表头 el-table-column 加一个鼠标移入提示说明
前言 在使用el-table 表格中有些表格的表头需要加入一些提示,鼠标移入则出现提示,非常实用,我是通过el-table中的el-tooltip实现的,以下的效果预览 代码实现 <el-table ref"multipleTable" :data"data"…...

NVR小程序接入平台/设备EasyNVR多个NVR同时管理设备接入:海康NVR 3.0提示不在线如何处理?
在视频监控领域,设备的兼容性和互操作性一直是用户关注的重点。海康NVR管理平台EasyNVR作为一款轻量级的视频监控平台,凭借其强大的兼容性、可扩展性和丰富的功能,成为了公共安全领域“云平台”解决方案的杰出代表。然而,在实际应…...

datawhale11月组队学习 模型压缩技术2:PyTorch模型剪枝教程
文章目录 一、 prune模块简介1.1 常用方法1.2 剪枝效果1.3 二、三、四章剪枝测试总结 二、局部剪枝(Local Pruning)2.1 结构化剪枝2.1.1 对weight进行随机结构化剪枝(random_structured)2.1.2 对weight进行迭代剪枝(范…...

SOL链上Meme生态的崛起与未来#Dapp开发#链游#交易所#公链搭建
近年来,随着区块链技术的普及和NFT文化的流行,meme(网络迷因)逐渐成为区块链生态中的重要组成部分。meme不仅是一种互联网文化符号,更逐步渗透进了去中心化金融(DeFi)、NFT和元宇宙等多个领域&a…...

部署Apache Doris
官方文档:https://doris.apache.org/zh-CN/installing/compilation.html 一、编译 使用 Docker 开发镜像编译(推荐) 1.拉取镜像 #下载 Docker 最新主干版本代码,会随主干版本不断更新。 $ docker pull apache/incubator-doris:…...

ElasticSearch-全文检索(一)基本介绍
简介 Elasticsearch:官方分布式搜索和分析引擎 | Elastic 全文搜索属于最常见的需求,开源的Elasticsearch是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、StackOverflow、Github都采用它 Elastic的底层是开源库Lucene。但…...

paramiko 库实现的暴力破解 SSH 密码
import paramiko import optparse import threading import time from threading import Thread, BoundedSemaphore# 用paramiko暴力破解SSH密码 # 最大并发连接尝试的数量,可根据实际情况调整,适当减小可降低对目标服务器的压力以及减少多线程同步问题出…...

Python 操作 Elasticsearch 全指南:从连接到数据查询与处理
文章目录 Python 操作 Elasticsearch 全指南:从连接到数据查询与处理引言安装 elasticsearch-py连接到 Elasticsearch创建索引插入数据查询数据1. 简单查询2. 布尔查询 更新文档删除文档和索引删除文档删除索引 批量插入数据处理分页结果总结 Python 操作 Elasticse…...

Jarvis March算法详解及Python实现(附设计模式案例)
目录 Jarvis March算法详解及Python实现(附设计模式案例)第一部分:Jarvis March算法概述与原理1.1 什么是Jarvis March算法?1.2 算法原理1.3 算法流程1.4 时间复杂度第二部分:Jarvis March算法的Python实现(面向对象设计)2.1 面向对象设计2.2 代码实现2.3 代码解释第三部…...

AIGC中的文本风格迁移:基于深度学习的实现
引言 文本风格迁移是自然语言处理领域的一个重要研究方向,它可以将文本从一种风格转换为另一种风格,同时保留其原有的内容。随着深度学习技术的发展,文本风格迁移的方法变得越来越先进和高效。本文将探讨基于序列到序列模型(Seq2…...

丹摩征文活动 |【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解
前言 🌟🌟本期讲解关于HTMLCSSJavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …...

响应“一机两用”政策 落实政务外网安全
在数字化时代,政务办公外网安全的重要性日益凸显,特别是在“一机两用”的背景下,即同一台终端既要处理政务内网的数据,又要访问互联网,这对网络安全提出了更高的要求。深信达SPN安全上网方案,即反向沙箱技术…...

通过JS删除当前域名中的全部COOKIE教程
有时候需要通过JS来控制一下网站的登录状态,就例如:网站登出功能,我们可以直接通过JS将所有COOKIE删除,COOKIE删除之后,网站自然也就退出了。 那么今天我就给大家分享一段JS的函数,通过调用这段函数就可以实现删除COO…...

Flutter:Widget生命周期
StatelessWidget:无状态部件的生命周期 import package:flutter/material.dart;void main() {runApp(App()); }class App extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: MyHome),);} }class M…...

Flutter:Dio下载文件到本地
import dart:io; import package:dio/dio.dart;main(){// 创建dio对象final dio Dio();// 下载地址var url https://*******.org/files/1.0.0.apk;// 手机端路径String savePath Directory.systemTemp.path/ceshi.apk;print(savePath);downLoad(dio,url,savePath); }downLo…...

[⑧5G NR]: PBCH payload生成
本篇博客记录下5G PBCH信道中payload数据的生成方式。PBCH payload一共32个比特,基本结构如下图: 根据SSB PDU中bchPayloadFlag的值有三种方式得到PBCH payload。 bchPayloadFlag 0:全部32比特由MAC层提供。 bchPayloadFlag 1:M…...

查看解决端口占用,以及docker解决端口占用的原理
在软件开发和部署过程中,端口占用是一个常见的问题。以下是查看和解决端口占用问题的完整解决方案: 一、查看端口占用情况 1. 在 Linux 系统中 方法一:使用 lsof 命令 sudo lsof -i:<端口号>输出信息中会显示占用端口的进程名称、PI…...

力扣-Hot100-链表其一【算法学习day.34】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...

centos7 升级openssl 与升级openssh 安装卸载 telnet-server
前言: 服务器被安全扫描,扫出了漏洞需要修复,根据提示将openssh升级为9.8p1的版本,同时需要升级openssl,但是升级openssh可能会导致ssh连接失败,从而无法继续操作,特别是远程机房尤为危险&#…...

C++知识点总结(57):STL综合
STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环(数据加强)2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构 1. 队列 功能代码定义queue<tp>q入队.push(x)出队.pop()队头.front()队尾…...

mac2019环境 Airflow+hive+spark+hadoop本地环境安装
1 环境介绍 本地安装可分为两个部分,mac软件环境, python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop,但是这三个软件又依赖java(spark依赖)、ssh(…...

如何使用EasyExcel生成多列表组合填充的复杂Excel示例
作者:Funky_oaNiu 一、(需求)生成的表格效果:二、搞一个模板文件三、建立对应的表格实体类四、开始填充五、Vue3前端发起请求下载六、官方文档及AI问答 一、(需求)生成的表格效果: 其中只有顶部…...