探索Spring、Spring Boot和Spring Cloud的奇妙关系(二)
本系列文章简介:
在当今快节奏、高竞争的软件开发世界中,构建可靠、高效的应用程序是至关重要的。而Spring框架一直以来都是业界领先的Java开发框架之一,帮助开发者简化了复杂的任务,并提供了丰富的功能和强大的支持。
然而,随着云计算和微服务架构的兴起,开发者需要更加灵活且可扩展的解决方案来构建分布式系统。这时,Spring Boot和Spring Cloud应运而生,为开发者提供了更加便捷和高效的微服务开发和管理工具。
Spring Boot是基于Spring框架的快速应用程序开发框架,旨在简化Spring应用的初始配置和部署过程。它通过自动配置和约定大于配置的方式,使得开发者能够快速搭建一个可运行的Spring应用程序,并集成了大量常用的第三方库和组件,减少了开发的时间和复杂度。
而Spring Cloud则是构建在Spring Boot之上的开发工具集合,旨在帮助开发者构建分布式系统和微服务架构。它提供了一系列功能强大的工具和组件,例如服务注册与发现、负载均衡、断路器模式等,使得开发者可以轻松实现各种分布式系统的需求。
Spring、Spring Boot和Spring Cloud三者之间的关系可以用一个逐层增强的模型来理解。Spring提供了一个强大的基础框架,用于构建应用程序。Spring Boot在Spring基础上添加了更多的自动配置和便捷功能,简化了应用程序的开发和部署。而Spring Cloud进一步在Spring Boot的基础上提供了一系列的分布式系统工具和组件,使得开发者可以轻松构建和管理分布式系统和微服务架构。
通过使用Spring、Spring Boot和Spring Cloud,开发者可以享受到一系列强大的功能和便捷的开发工具,极大地提高了开发效率并降低了系统复杂性。无论是构建单体应用程序还是分布式系统,这三者的奇妙关系都为开发者提供了一个全面而综合的解决方案。本系列文章将深入探索这三者之间的关系,帮助大家更好地理解和应用它们。
欢迎大家订阅《Java技术栈高级攻略》专栏,一起学习,一起涨分!
目录
一、前言
二、Spring、Spring Boot和Spring Cloud的关系
2.1 Spring Boot和Spring的关系
2.2 Spring Cloud和Spring Boot的关系
2.3 Spring Cloud和Spring的关系
三、如何使用Spring、Spring Boot和Spring Cloud
3.1 使用Spring构建Java应用程序
3.2 使用Spring Boot构建独立的、自包含的应用程序
3.3 使用Spring Cloud构建分布式系统和微服务架构
四、案例分析:实例演示如何使用Spring、Spring Boot和Spring Cloud
4.1 案例一:使用Spring构建一个简单的Web应用程序
4.2 案例二:使用Spring Boot构建一个RESTful API服务
4.3 案例三:使用Spring Cloud构建一个微服务架构
五、结语
一、前言
Spring、Spring Boot和Spring Cloud三者之间存在着紧密的关系。Spring是一个强大的基础框架,提供了丰富的功能和扩展点;Spring Boot是在Spring基础上构建的,简化了Spring应用的开发和部署;Spring Cloud是在Spring Boot基础上构建的,提供了分布式系统开发所需的工具和组件。通过使用这三个框架,开发者可以更加高效地构建出优秀的Java应用,并实现分布式系统的架构。在接下来的文章中,我们将会深入探索这三位宝藏的奇妙关系,带你进入Java世界的无限可能。
本文将跟随《探索Spring、Spring Boot和Spring Cloud的奇妙关系(一)》的进度,继续介绍三者的关系。希望通过本系列文章的学习,您将能够更好地理解三者的内部工作原理,掌握三者的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化三者的潜力,为系统的高效运行提供有力保障。
二、Spring、Spring Boot和Spring Cloud的关系
2.1 Spring Boot和Spring的关系
Spring Boot是一个用来简化Spring应用程序的开发的框架,它基于Spring框架。Spring框架是一个开源的Java应用程序框架,它提供了一种轻量级的解决方案来创建和管理企业级Java应用程序。Spring Boot在Spring框架的基础上,封装了很多常见的配置和功能,让开发者可以更快速、更便捷地构建Spring应用程序。它提供了自动配置功能,可以根据项目的依赖和配置文件进行自动配置,无需手动进行繁琐的配置。同时,Spring Boot也提供了一些额外的功能,例如内嵌的服务器和运行时监控等。总的来说,Spring Boot是Spring框架的扩展和增强,使得开发者可以更高效地开发Spring应用程序。
2.2 Spring Cloud和Spring Boot的关系
Spring Cloud和Spring Boot是两个独立的项目,它们之间有密切的关系。
Spring Boot是一个用于快速构建独立的、基于Spring的应用程序的框架。它简化了Spring框架的配置和部署,并提供了许多开箱即用的功能,如自动配置、嵌入式服务器等。Spring Boot的目标是使开发人员能够更轻松地构建Spring应用程序,而无需为配置和繁琐的依赖项管理而烦恼。
Spring Cloud是一个用于构建分布式系统的框架。它提供了一系列的工具和组件,帮助开发人员快速构建和部署云原生应用程序。Spring Cloud通过提供服务发现、负载均衡、配置管理、断路器等功能,简化了构建分布式系统的复杂性。Spring Cloud可以与Spring Boot一起使用,借助Spring Boot的快速开发特性,更快地构建和部署分布式系统。
因此,可以说Spring Cloud是建立在Spring Boot之上的一个框架,它利用了Spring Boot的快速开发特性,提供了更多用于构建分布式系统的功能和工具。在实际项目中,通常会同时使用Spring Cloud和Spring Boot来开发和部署分布式系统。
2.3 Spring Cloud和Spring的关系
Spring Cloud是基于Spring框架的一套分布式系统开发工具集,它提供了一些开箱即用的分布式系统功能,比如服务注册与发现、配置管理、负载均衡、断路器、网关等。Spring Cloud通过集成和扩展Spring框架的功能,进一步简化了分布式系统的开发。
Spring框架是一个用于构建企业级应用的开源框架,提供了一套全面的Java开发工具和库。它可以帮助开发人员快速构建高效、可扩展、可维护的应用程序。Spring框架主要包括核心容器、数据访问/集成、Web开发、AOP和测试等模块,通过这些模块提供的功能,开发人员可以更加方便地开发各种类型的应用。
Spring Cloud是基于Spring框架构建的,它与Spring框架紧密结合,通过集成Spring框架的各种功能模块,提供了一套完整的分布式系统开发工具集。同时,Spring Cloud也提供了一些独立于Spring框架的功能,比如服务注册与发现、配置管理等。通过Spring Cloud,开发人员可以更加便捷地构建分布式系统,并提供一些常见的分布式系统功能。
因此,可以说Spring Cloud是Spring框架在分布式系统开发领域的扩展和增强。它通过集成和扩展Spring框架的功能,提供了一套更加完善的分布式系统开发工具集。同时,Spring Cloud也是Spring框架的一部分,使用Spring Cloud的开发人员仍然可以享受到Spring框架的诸多好处。
三、如何使用Spring、Spring Boot和Spring Cloud
3.1 使用Spring构建Java应用程序
要使用Spring构建Java应用程序,您可以遵循以下步骤:
-
引入Spring依赖:在您的项目中添加Spring框架的依赖项。您可以使用构建工具(如Maven或Gradle)来自动管理这些依赖。您需要至少包含Spring核心库的依赖项。
-
创建Spring配置文件:创建一个XML文件,用于配置Spring容器和相关的Bean。在配置文件中,您可以定义Bean的名称、类别和依赖关系。
-
编写业务逻辑:在Java类中编写您的业务逻辑代码。这些类将成为Spring容器中的Bean。
-
注解配置(可选):使用Spring的注解来简化配置。您可以使用注解来指示Spring自动装配Bean,并定义依赖关系。
-
创建Spring应用程序上下文:在您的应用程序中创建一个Spring应用程序上下文。这将加载并管理您的Bean。
-
访问Bean:通过应用程序上下文从Spring容器中获取Bean,并在您的应用程序中使用它们。
-
运行应用程序:运行您的Java应用程序并测试Spring配置是否正确。
这是一个基本的Spring应用程序创建过程的概述。您可以根据您的需要进一步学习和使用Spring的其他特性,如AOP、事务管理、数据访问等。Spring框架提供了广泛的功能和灵活性,可帮助您构建可扩展和易于维护的Java应用程序。
3.2 使用Spring Boot构建独立的、自包含的应用程序
使用Spring Boot构建独立的、自包含的应用程序非常简单。
下面是一些步骤:
1. 首先,确保你已经安装了Java和Maven。
2. 创建一个新的Maven项目,并在pom.xml中添加以下依赖项:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
这个依赖项将为你的应用程序提供基本的Web功能。
3. 创建一个Spring Boot应用程序类。这是一个带有@SpringBootApplication注解的类。这个注解整合了@Configuration、@EnableAutoConfiguration和@ComponentScan,使应用程序变为一个Spring Boot应用程序。
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
4. 创建Controller类来处理HTTP请求和响应。
@RestController
public class MyController {@RequestMapping("/")public String home() {return "Hello, World!";}
}
5. 运行应用程序。你可以使用Maven命令mvn spring-boot:run或者直接运行MyApp类的main方法。你的应用程序将在默认端口(8080)上运行。
6.打开浏览器,访问http://localhost:8080,你将看到输出Hello, World!。
通过遵循以上步骤,你可以使用Spring Boot构建独立的、自包含的应用程序。Spring Boot将为你处理许多常见的配置和依赖项,让你专注于编写业务逻辑。
3.3 使用Spring Cloud构建分布式系统和微服务架构
Spring Cloud是一个开源的、轻量级的分布式系统开发工具,它基于Spring框架,并提供了一系列的组件和工具,帮助开发者构建分布式系统和微服务架构。
使用Spring Cloud可以实现以下功能和特性:
-
服务注册与发现:Spring Cloud提供了服务发现组件,例如Eureka和Consul,可以帮助开发者将服务注册到注册中心,并通过服务名进行服务发现。
-
负载均衡:Spring Cloud集成了Ribbon负载均衡组件,可以在多个服务实例之间实现负载均衡,提高系统的稳定性和性能。
-
断路器:Spring Cloud通过集成Hystrix组件,提供了断路器模式的支持,可以实现服务的容错和降级处理。
-
分布式配置:Spring Cloud提供了分布式配置组件,例如Config Server和Config Client,可以将配置信息集中管理,并动态刷新配置。
-
服务网关:Spring Cloud集成了Zuul组件,可以实现统一的API网关,对外提供服务路由、鉴权和监控等功能。
-
分布式跟踪:Spring Cloud提供了Sleuth组件,可以实现分布式系统的请求链路跟踪和监控。
-
消息总线:Spring Cloud集成了消息总线组件,例如Spring Cloud Bus和Kafka,可以实现服务之间的消息传递和事件驱动。
通过使用Spring Cloud,开发者可以方便地构建分布式系统和微服务架构,提高系统的可扩展性、可靠性和灵活性。同时,Spring Cloud还提供了丰富的文档和示例,帮助开发者快速上手和解决常见问题。
四、案例分析:实例演示如何使用Spring、Spring Boot和Spring Cloud
4.1 案例一:使用Spring构建一个简单的Web应用程序
下面是一个使用Spring构建简单Web应用程序的示例代码:
- 创建一个Maven项目,添加以下依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
2. 创建一个Controller类,处理HTTP请求并返回响应:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloWorldController {@GetMapping("/hello")public String helloWorld() {return "Hello, World!";}
}
3. 创建一个Spring Boot应用程序的入口类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
4. 运行应用程序,访问http://localhost:8080/hello即可看到"Hello, World!"的响应。
这是一个简单的使用Spring构建Web应用程序的示例,你可以根据自己的需求进行扩展和修改。
4.2 案例二:使用Spring Boot构建一个RESTful API服务
下面是一个简单的使用Spring Boot构建RESTful API服务的示例:
首先,需要在你的Java开发环境中安装Spring Boot。可以在Spring官网(https://spring.io/projects/spring-boot)上找到相关的安装教程。
接下来,创建一个Java类作为你的主应用程序类。这个类需要使用@SpringBootApplication注解来标记,表示它是一个Spring Boot应用程序。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
然后,创建一个控制器类来处理RESTful API的请求和响应。这个类需要使用@RestController注解来标记,表示它是一个处理REST请求的控制器。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class ApiController {@GetMapping("/hello")public String hello() {return "Hello, World!";}
}
在上面的示例中,我们使用@RequestMapping注解定义了控制器的根路径为"/api",然后使用@GetMapping注解定义了一个处理GET请求的方法,路径为"/hello"。这个方法会返回一个字符串"Hello, World!"作为响应。
最后,运行MyApp类的main方法启动应用程序。然后,你就可以使用任何HTTP客户端(例如浏览器或curl命令)发送GET请求到"http://localhost:8080/api/hello"路径,你将会收到"Hello, World!"作为响应。
这只是一个简单的示例,你可以根据你的需求来自定义更多的RESTful API,例如处理POST、PUT、DELETE等请求,以及使用数据库或其他外部服务进行数据交互等。
4.3 案例三:使用Spring Cloud构建一个微服务架构
首先,我们需要创建一个Spring Boot项目作为微服务架构的主入口。
- 创建一个新的Spring Boot项目,打开IDE(如IntelliJ IDEA),选择File -> New -> Project。
- 在新建项目的窗口中,选择"Spring Initializr",然后点击“Next”。
- 在下一个页面中,填写以下内容:
- 选择Java版本(如Java 8)
- 输入项目的Group和Artifact名称(如com.example)
- 选择项目的依赖(至少选择Spring Web和Spring Cloud Nacos Discovery)
- 点击“Next”
- 在下一个页面中,选择项目的名称和保存路径,然后点击“Finish”。
- 项目创建完成后,打开pom.xml文件,添加以下依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
6. 创建一个Spring Boot Application类,作为项目的主入口。
@SpringBootApplication
@EnableDiscoveryClient
public class MicroserviceApplication {public static void main(String[] args) {SpringApplication.run(MicroserviceApplication.class, args);}
}
7. 创建一个Controller类,用于处理HTTP请求。
@RestController
public class HelloController {@Value("${spring.application.name}")private String serviceName;@RequestMapping("/")public String hello() {return "Hello from " + serviceName;}
}
8. 在application.properties或application.yml文件中,配置应用的名称和Nacos的地址。
spring.application.name=microservice
spring.cloud.nacos.discovery.server-addr=localhost:8848
9. 启动应用,访问http://localhost:8080/,可以看到返回的信息为"Hello from microservice"。
以上就是一个简单的使用Spring Cloud和Nacos构建的微服务架构示例。你可以根据自己的需求,扩展和修改这个示例。
五、结语
文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!
相关文章:
探索Spring、Spring Boot和Spring Cloud的奇妙关系(二)
本系列文章简介: 在当今快节奏、高竞争的软件开发世界中,构建可靠、高效的应用程序是至关重要的。而Spring框架一直以来都是业界领先的Java开发框架之一,帮助开发者简化了复杂的任务,并提供了丰富的功能和强大的支持。 然而&#…...
Mysql的事务隔离级别以及事务的四大特性。
MySQL 的事务隔离级别是数据库管理系统中的一个重要概念,它决定了事务如何隔离和影响其他并发事务。MySQL 支持四种事务隔离级别,分别是:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)…...
人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理_对话服务创建---人工智能工作笔记0159
先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…...
锁策略总结
锁策略 悲观锁和乐观锁 乐观锁和悲观锁不是具体类型的锁而是指两种不同的对待加锁的态度,这两个锁面对锁冲突的态度是相反的。 乐观锁:认为不存在很多的并发操作,因此不需要加锁。悲观锁:认为存在很多并发操作,因此需…...
蓝桥杯备考day2
1.1 map及其函数 map 提供一对一的数据处理能力,由于这个特性,它完成有可 能在我们处理一对一数据的时候,在编程上提供快速通道。map 中的第一 个值称为关键字(key),每个关键字只能在 map 中出现一次,第二个称为该 关…...
Mac电脑安装蚁剑
1: github 下载源码和加载器:https://github.com/AntSwordProjectAntSwordProject GitHubAntSwordProject has 12 repositories available. Follow their code on GitHub.https://github.com/AntSwordProject 以该图为主页面:antSword为源码…...
品牌百度百科词条创建多少钱?
百度百科作为国内最具权威和影响力的知识型平台,吸引了无数品牌和企业争相入驻。一个品牌的百度百科词条,不仅是对品牌形象的一种提升,更是增加品牌曝光度、提高品牌知名度的重要途径。品牌百度百科词条创建多少钱,这成为了许多企…...
Linux安装及管理程序
目录 一.Linux应用程序基础 1.应用程序与系统命令的关系 2.典型应用程序的目录结构 3.常见的Linux软件包封装类型 二.RPM 软件包管理工具 1.RPM 软件包管理器 Red-Hat Package Manger 2.RPM软件包 3.RPM命令 三.源代码编译安装 1. yum 软件包管理器: 配…...
Mybatis generate xml 没有被覆盖
添加插件即可 <plugin type"org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/>...
MercadoLibre(美客多)入仓预约系统操作流程-自动化约号(开篇)
目录 一、添加货件信息 二、输入货件信息 三、选择发货 四、填写交货日期 五、注意事项 MercadoLibre(美客多)于2021年10月18号上线了新预约入仓系统,在MercadoLibre美客多平台上,新入仓预约系统是一项非常重要的功能&#x…...
Unity TextMeshProUGUI 获取文本尺寸·大小
一般使用ContentSizeFitter组件自动变更大小 API 渲染前 Vector2 GetPreferredValues(string text)Vector2 GetPreferredValues(string text, float width, float height)Vector2 GetPreferredValues(float width, float height) 渲染后 Vector2 GetRenderedValues()Vector…...
Sonar下启动发生错误,elasticsearch启动错误
Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 ,java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql,且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启…...
Git常用命令以及异常信息汇总
常用命令: 查看本地分支: git branch 创建一个新仓库 git clone 仓库地址xxxxx cd 目标目录 git switch -c main touch README.md git add README.md git commit -m "add README" git push -u origin main 推送现有文件夹 cd 目标目录 git in…...
解释Python中的RESTful API设计和实现
解释Python中的RESTful API设计和实现 RESTful API,即符合REST(Representational State Transfer,表述性状态转移)架构风格的Web服务接口,已成为现代Web应用程序通信的标准。Python作为一种灵活且强大的编程语言&…...
一、Nginx部署
Nginx部署 一、Docker部署1.复制Nginx配置文件2.启动Nginx容器 一、Docker部署 1.复制Nginx配置文件 # 1.拉取镜像 docker pull nginx # 2.启动nginx容器 docker run --restartalways --namenginx -p 80:80 -d nginx # 3.宿主机创建挂载目录 mkdir /root/docker/nginx -p # 4…...
C语言基础---指针的基本语法
概述 内存地址 在计算机内存中,每个存储单元都有一个唯一的地址(内存编号)。通俗理解,内存就是房间,地址就是门牌号 指针和指针变量 指针(Pointer)是一种特殊的变量类型,它用于存储内存地址。指针的实…...
记录--病理切片图像处理
简介 数字病理切片,也称为全幻灯片成像(Whole Slide Imaging,WSI)或数字切片扫描,是将传统的玻片病理切片通过高分辨率扫描仪转换为数字图像的技术。这种技术对病理学领域具有革命性的意义,因为它允许病理…...
Android使用shape属性绘制边框内渐变色
目录 先上效果图实现方法shape属性介绍代码结果 先上效果图 这是使用AndroidStudio绘制的带有渐变色的边框背景色 实现方法 项目中由于UI设计需求,需要给按钮、控件设置带有背景色效果的。以下是UI效果图。 这里我们使用shape属性来绘制背景效果。 shape属性介…...
分类算法(数据挖掘)
目录 1. 逻辑回归(Logistic Regression) 2. 支持向量机(Support Vector Machine, SVM) 3. 决策树(Decision Tree) 4. 随机森林(Random Forest) 5. K近邻(K-Nearest …...
scaling laws for neural language models
关于scaling law 的正确认识 - 知乎最近scaling law 成了最大的热词。一般的理解就是,想干大模型,清洗干净数据,然后把数据tokens量堆上来,然后搭建一个海量H100的集群,干就完了。训练模型不需要啥技巧,模型…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
