SpringBoot入门4——热部署

参考:Spring Boot热部署

参考代码:https://img.mukewang.com/down/5a73fba7000110f900000000.zip

1、热部署与热加载的联系和区别

2、热部署的原理与实现

3、构建Spring Boot项目的流程

4、Spring Boot热部署的实现与发布方式

使用场景

本地调试

线上发布

热部署与热加载

1、联系和区别

联系:不重启服务器编译/部署项目

          基于Java的类加载器实现

部署方式:热部署在服务器运行时重新部署项目。

               热加载在运行时重新加载class

实现原理:热部署直接重新加载整个应用

                 热加载

 热部署热加载
编译/部署项目不重启服务器不重启服务器
实现基于Java的类加载器实现基于Java的类加载器实现
部署方式在服务器运行时重新部署项目在运行时重新加载class
实现原理直接重新加载整个应用在运行时重新加载class
使用场景更多的是在生产环境中使用更多的是在开发环境使用

热部署原理解析

Java类的加载过程

1初始化JVM 
2产生启动类加载器子类,自动加载
3标准扩展类加载器子类,自动加载
4系统类加载器 
5加载class文件交给其父类加载

类加载的5个阶段:

序号阶段备注
1加载 
2验证 
3准备 
4解析 
5初始化 

Java类加载器的特点:

1、由AppClassLoader(系统类加载器),开始加载指定的类

2、类加载器将加载任务交给其父,如果其父找不到,再由自己去加载

3、Bootstrap Loader(启动类加载器)是最顶级的类加载器。

Java类的热部署:

1、类的热加载

2、配置Tomcat

通过类的热加载实现热部署

通过配置Tomcat实现热部署

1、直接把项目web文件夹放在webapps里。

2、在tomcat\conf\server.xml中的<host>内部添加<context/>标签。

<Context debug="0" docBase="D:/Imooc/web" path="/hot" privileged="true" reloadable="true"/>

3、在%tomcat_home%\conf\Catalina\localhost中添加一个XML

hot.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context  docBase="D:/Imooc/web"   reloadable="true"/>

JAVA类热加载案例分析

 *.java介绍
1MyClassLoader.java核心类。自定义Java类加载器来实现Java类的热加载。继承于ClassLoader
2BaseManager.java接口。实现这个接口的子类需要动态更新
3MyManager.javaBaseManager的子类。此类需要实现java类的热加载功能
4LoadInfo.java封装加载类的信息
5ManagerFactory.java加载manager的工厂
6MsgHandler.java后台启动一条现场不断刷新重新加载实现了热加载的类
7ClassLoaderTest.java测试java类的热加载

 

我没有实现热加载的现象。

SpringBoot创建项目

创建一个项目,并打印“Hello!”

过程略。

SpringBoot热部署的实现

1、Spring Loaded

2、spring-boot-devtools

Springloaded热部署实现

1、Maven启动方式,在pom.xml添加依赖

1) 在pom.xml的build中添加dependency

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>

				<dependencies>
					<dependency>
						<groupId>org.springframework</groupId>
						<artifactId>springloaded</artifactId>
						<version>1.2.6.RELEASE</version>
					</dependency>
				</dependencies>

			</plugin>
		</plugins>
	</build>

2) window的CMD窗口,到项目的目录下,运行命令:mvn spring-boot:run

启动的好慢。

运行项目正常,但是没有热启动的现象。

IDEA自动编译参考:https://www.cnblogs.com/jiangbei/p/8439394.html

仍然没有热启动的现象。

2、run as -java application

1)下载jar包

2)run configuration

VM options: -javaagent:D:\mvnrepo\repository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar -noverify

-->Apply->RUN

运行项目正常,运行项目正常,刷新URL然后报错。

HTTP Status 500 – Internal Server Error

 

spring-boot-devtools热部署实现

pom.xml添加依赖:

<dependency><!-- 热部署依赖 -->
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
</dependency>

运行正常,热部署正常。

发布方式

1、构建Jar包,命令行运行Spring Boot程序

2、构建War包,发布到Tomcat

构建Jar包

1、IDEA:右边的Maven Projects->install

Eclipse: Run As->Maven install

2、运行jar包:到目录下,运行: java -jar demo.jar

构建War包

1、添加tomcat依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-core</artifactId>
</dependency>

2、修改代码HotbuilderApplication.java

@SpringBootApplication
public class HotbuilderApplication extends SpringBootServletInitializer{
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(HotbuilderApplication.class);
	}

	public static void main(String[] args) {
		SpringApplication.run(HotbuilderApplication.class, args);
	}
}

3、IDEA:右边的Maven Projects->install

生成WAR包,

将此WAR包放到apache-tomcat-9.0.11\webapps\里。

启动tomcat:apache-tomcat-9.0.11\bin\start.bat

URL:http://localhost:8080/say

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值