springboot学习笔记(三)

深度学习CV八股文 深度学习CV八股文一、深度学习中解决过拟合方法L1和L2正则化DropoutDropout正则化Inverted Dropout(反向随机失活)Dropout起到正则化效果的原因:Dropout的缺点eargstopping ( 早停法 )二、深度学习中解决欠拟合方法三、梯度消失和梯度爆炸解决梯度消失的方法解决梯度爆炸的方法四、神经网络权重初始化方法Xavier指数加权移动平均数五、梯度下降法梯度下降SGD(随机梯度下降法)Momentum(动量梯度下降)Nesterov Momentum自适应学习率算法A 阅读详情

六、配置嵌入式servlet

SpringBoot默认使用tomcat作为嵌入式的servlet容器;
在这里插入图片描述
发现在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类被WebServerFactoryCustomizer替代

	/**
     * 配置嵌入式的servlet容器
     * @return
     */
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
            //定制嵌入式的servlet容器相关的规则
            @Override
            public void customize(ConfigurableWebServerFactory factory) {
                factory.setPort(8083);
            }
        };
    }

6.1需要考虑的问题?

6.2如何定制和修改servlet容器的相关配置;

(一)、修改和server有关的配置(ServerProperties)
server.port=8081
server.context-path=/crud
server.tomcat.uri-encoding=utf-8

//通用的servlet容器设置
server.xxx
//Tomcat的设置
server.tomcat.xxx
(二)、编写一个EmbeddedServletContainerCustomizer;嵌入式的servlet容器的定制器;

6.3注册Servlet三大组件【Servlet、Filter、Listener】

由于Springboot默认是以jar包的方式启动嵌入式的servlet容器来启动Springboot的web应用,没有web.xml文件;

注册三大组件用以下方式:

ServletRegistrationBean

@Bean
    public ServletRegistrationBean myServlet(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");

        return registrationBean;
    }

FilterRegistrationBean

@Bean
    public FilterRegistrationBean myFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new MyFilter());
        bean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
        return bean;
    }

ServletListenerRegistrationBean

@Bean
    public ServletListenerRegistrationBean myListener(){
        ServletListenerRegistrationBean<MyListener> bean = new ServletListenerRegistrationBean<>(new MyListener());
        return bean;
    }

springboot帮助我们自动SpringMVC的时候,自动的注册SpringMVC前端控制器,DispatcherServlet;

@Bean(name = DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME)
		@ConditionalOnBean(value = DispatcherServlet.class, name = DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
		public DispatcherServletRegistrationBean dispatcherServletRegistration(DispatcherServlet dispatcherServlet,
				WebMvcProperties webMvcProperties, ObjectProvider<MultipartConfigElement> multipartConfig) {
			DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean(dispatcherServlet,
					webMvcProperties.getServlet().getPath());
			//默认拦截。/所有请求:包含静态资源 但是不拦截jsp请求; /*会拦截jsp
			//可以通过server.servletPath来修改SpringMVC前端控制器默认拦截的请求路径
			registration.setName(DEFAULT_DISPATCHER_SERVLET_BEAN_NAME);
			registration.setLoadOnStartup(webMvcProperties.getServlet().getLoadOnStartup());
			multipartConfig.ifAvailable(registration::setMultipartConfig);
			return registration;
		}

6.4使用其他Servlet容器

Tomcat(默认使用)
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	//引入web模块默认就是使用嵌入式的tomcat作为servlet容器
</dependency>
Jetty(长连接)
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
<!--引入其他的servlet-->
<dependency>
	<artifactId>spring-boot-starter-jetty</artifactId>
	<groupId>org.springframework.boot</groupId>
</dependency>

Undertow

<!--引入其他的servlet-->
<dependency>
	<artifactId>spring-boot-starter-undertow</artifactId>
	<groupId>org.springframework.boot</groupId>
</dependency>

6.5嵌入式servlet容器自动配置原理:

尚硅谷48节

步骤:

1)、SpringBoot根据导入的依赖情况,给容器中添加相应的嵌入式容器工厂EmbeddedServletContainerFactory[TomcatEmbeddedServletContainerFactory]
2)、容器中某个组件要创建对象就会惊动后置处理器;EmbeddedServletContainerCustomizerBeanPostProcessor;只要嵌入式的Servlet容器工厂,后置处理器就工作;
3)、后置处理器,从容器中获取所有的EmbeddedServletContainerCustomizer调用定制器的定制方法

6.6嵌入式Servlet容器启动原理

什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat?
1)、springboot启动运行run方法;
2)、refreshContext(context);SpringBoot刷新IOC容器【创建IOC容器对象,并初始化容器,创建容器中的每一个组件】如果是web应用创建AnnotationConfigEmbeddedWebApplicationContext,否则AnnotationConfigApplicationContext
3)、refresh(context);刷新刚创建好的IOC容器;
4)、onRefresh();web的IOC容器重写了onRefresh方法;
5)、webioc容器会创建嵌入式的servlet容器;createEmbeddedServletContainer();

6)、获取嵌入式的servlet容器工厂:
EmbeddedServletContainerFactory containerFactory = getEmbeddedServletcontainerFactory();
从IOC容器中获取EmbeddedServletContainerFactory组件;
TomcatEmbeddedServletContainerFactory创建对象,后置处理器一个是这个对象,就获取所有的定制器来先制定Servlet容器的相关配置;

7)、使用容器工厂获取嵌入式的Servlet容器:this.embeddedServletContainer = containerFactory.getEmbeddedServletContainer(getSelfInitializer());

8)、嵌入式的Servlet容器创建对象并启动Servlet容器
先启动servlet 容器,再将ioc容器中没有创建出来的对象获取出来;
IOC容器启动创建嵌入式的servlet容器

七、使用外置的Servlet容器

嵌入式servlet容器:jar
优点:简单、便捷
缺点:默认不支持jsp、优化定制比较复杂(使用定制器【ServerProperties、自定义EmbeddedServletContainerCustomizer】,自己编写嵌入式Servlet容器的创建工厂【EmbeddedServletContainerFactory】);

外置的Servlet就应用而生了

7.1创建一个新的项目,打成war包

在这里插入图片描述

7.1.1目录结构

在这里插入图片描述

7.1.3将嵌入式的Tomcat指定为provided;
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <scope>provided</scope>
 </dependency>
7.1.4必须编写一个SpringBootServletInitializer的子类,并调用configure方法
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    	//传入SpringBoot应用的主程序
        return application.sources(SpringBoot04WebJspApplication.class);
    }
}

7.2原理

jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的servlet容器;
war包:启动服务器,服务器启动Springboot应用【SpringBootServletInitializer】,启动ioc容器;

7.2.1servlet3.0(Spring注解版)

8.2.4 Shared libraries/runtimes pluggability;

规则:
1)、服务器启动(web应用启动)会创建当前web应用里面的每一个jar包里面ServletContainerInitializer实例;
2)、ServletContainerInitializer的实例放在jar包的META-INF/servies文件夹下,有一个名为javax.servlet.ServletContainerinitializer的文件,内容就是ServletContainerInitializer的实体类的全类名
3)、还可以使用@HandlesTypes,在应用启动的时候加载我们感兴趣的类;

流程:
1)、启动tomcat
2)、

MCU-内部flash模拟成EepRom(重新梳理) 通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0; 阅读详情

相关推荐

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

springboot-嵌入式Servlet容器自动配置原理

一、在springboot-autoconfigure的jar包下查找嵌入式的Servlet容器自动配置类 org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration.class   @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @C...

Javap 指令集 1027

R语言笔记十:独立性检验函数

1.独立性检验函数        独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验。所谓独立性就是指变量之间是独立的,没有关系。 独立性检验算法:卡方检验、Fisher检验、Cochran-Mantel-Haenszel检验 2.假设检验 假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。 原假设——没有发生 备择假设——发生了 具体做法:根据问题的需要对所研究的总体作

weixin_44384631的博客 4111

Springboot 接口 EmbeddedServletContainerFactory : 嵌入式servlet容器工厂

位于包 org.springframework.boot.context.embedded接口定义如下 : /** * 用于创建EmbeddedServletContainer的工厂接口定义。可能的话,建议实现类扩展自 * AbstractEmbeddedServletContainerFactory 。 * * Factory interface that can be used to

Details Inside Spring 1万+

【Rcode】生存分析: KM & COX回归& 随机森林& nomogram

本文使用了R——survival包下的lung数据进行方法测试: 1)KM 2) Cox回归:多因素 3)随机森林因子(根据cox回归结果) 4)nomogram ( 根据cox回归结果,建立了中位生存时间,1年5年生存率的概率计算) -------------------????????‍♀️本文只有干货,非常干!????----------------------------- 一、数据加载 #生存分析 library("survival") library("survminer") data("

weixin_43172152的博客 9273

深度理解嵌入(embedding)层

首先从one_hot开始: one_hot的优点:计算方便快捷、表达能力强。 one_hot的缺点:过于稀疏,过于占用资源,尤其是在数据量特别大时;数据之间完全独立。

weixin_44441131的博客 5659

【报错记录】解决无法找到EmbeddedServletContainerAutoConfiguration导致项目无法启动的问题

解决java.lang.IllegalArgumentException: Could not find class [org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration]这个问题,并给出一个方法解决这个共性问题,能给使用SpringBoot的同行们一些建议

DCTANT的博客 2382

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6035

错误:missing EmbeddedServletContainerFactory bean.

错误日志:org.springframework.context.ApplicationContextException: Unable to start embedded container;  nested exception is org.springframework.context.ApplicationContextException:  Unable to start Embedde...

freehappyness的博客 2958

Python爬虫实战:利用最新技术爬取B站视频信息

本文详细介绍了如何使用Python最新技术构建一个功能完善的B站视频信息爬虫。我们从基础爬取开始,逐步深入到反反爬策略、异步处理、数据存储和分析等高级主题。更智能的反反爬策略:使用机器学习识别验证码更高效的分布式架构:结合Kubernetes实现弹性伸缩实时数据管道:将爬取的数据实时推送到数据分析平台多平台支持:扩展支持抖音、YouTube等其他视频平台。

2201_76125261的博客 1040

vLLM 显存泄漏与 OOM 深度排查:从日志到火焰图

系统性地排查 vLLM 运行中的显存泄漏和 OOM 问题,包括 CUDA 内存快照、PyTorch 内存分析器、火焰图工具。

kaixin110a的博客 187

EmbeddedServletContainerFactory 找不到?

在springboot使用https协议的时候一到了一个坑,EmbeddedServletContainerFactory找不到,之前以为是jar包的版本低了,结果发现是springboot2.X之后改了写法。 如下: // 在某配置类中添加如下内容 // 监听的http请求的端口,需要在application配置中添加http.port=端口号 如80 @Value...

l4642247的专栏 2万+

基于转录逆转的药物重定向 GPS 模型

GPS是一个基于分子结构预测基因表达扰动的开源平台,由三个模块组成:RCL(在LINCS扰动数据上训练抗噪MLP)、GPS4Drugs(预测新化合物的基因表达谱并进行逆转评分)、MolSearch(基于MCTS的分子优化)。平台使用Morgan指纹和Gene Ontology注释作为特征输入,将基因表达扰动离散为三分类标签。训练数据来自LINCS Phase I的18,746个化合物和978个landmark基因,支持四细胞系独立训练,可用于药物重定向与化合物筛选。

听雨草堂 83

Spring Boot学习笔记【三】——使用springboot【基础】

13. 构建系统 强烈建议您选择支持依赖关系管理且可以使用发布到“Maven Central”存储库的工件的构建系统。 我们建议您选择Maven或Gradle。 可以让Spring Boot与其他构建系统(例如Ant)一起工作,但它们并没有得到特别好的支持。 13.1 Dependency Management 每个版本的Spring Boot都提供了它支持的依赖项的精选列表。 实际上,您不需要为...

茨时代べ 的博客 442

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SpringBoot2 学习笔记(三)——使用Spring Boot Admin监控服务

简介 使用Actuator来监控Spring Boot应用,其提供了许多REST接口来查看应用的信息。但其返回的是大量的JSON格式数据,信息看上去不直观也不易于理解。而Spring Boot Admin(SBA)是一款基于Actuator开发的开源软件:https://github.com/codecentric/spring-boot-admin,以图形化界面的方式展示Spring Boot应...

haliaddel的博客 300

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringBoot2.0学习笔记:(三) Profiles在Spring Boot中的使用

一、简单介绍 在项目的开发中,有些配置文件在开发、测试或者生产等不同环境中可能是不同的,例如数据库连接、redis的配置等等。那我们如何在不同环境中自动实现配置的切换呢?Spring给我们提供了profiles机制,下面看看在Spring Boot中是如何使用Profiles功能的。 在Spring Boot中多环境配置文件名需要使用application-{profile}.properti...

第二庄 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

springboot学习笔记三

Profile 如果我们的项目中有多个配置文件,如下的格式: ​ application-{profile}.properties 比如有application-dev.yml、application-pro.yml等等 那我们如何选择激活那个配置文件呢? 激活方式 多profile文件使用上面的配置文件生效 yaml的多代码块配置 server: port: 8081 spring: profiles: active: dev --- server: port: 8083 spr

yuyuyu_623的博客 241

SpringBoot学习笔记(三)

SpringBoot学习笔记(三) SpringBoot热部署(ctrl+s保存后自动编译),导入以下jar包即可: <!--支持热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId&g...

程序人生 235

springBoot学习笔记三

日志 1、日志框架 小张;开发一个大型系统; ​ 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件? ​ 2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar; ​ 3、高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? ​ 4、将以前框架卸下来?换上新的框架,重新修改之前相关的API;zhanglogging-prefect.jar; ​ 5、JDBC—数据库驱动; ​

qq_33879627的博客 123

SpringBoot学习笔记三

SpringBoot项目程序打包 (Windows-version) 1 对SpringBoot项目打包(执行Maven构建指令package) 2 运行项目 java -jar springboot.jar TIPS:jar支持命令行启动需要依赖maven插件支持,打包时确认SpringBoot对应的插件 在pom文件中 spring-boot-maven-plugin Linux-version 安装JDK 安装包保存在/usr/locar自定义目录或$HOME下 使用jar命令启动SpringBoo

Just For Learning 463

SpringBoot学习笔记(三)

SpringBoot学习笔记(三) 一、SpringBoot项目常用注解 1、@RestController @RestController注解,对具有返回类型的controller类使用。相当于@ResponseBody + @Controller。 使用@RestController的目的在于使用传统方法是返回数据格式都为json,需要使用@ResponseBody注解,但是@Rest...

懂你意思啊的博客 297

Spring Boot 学习笔记(三)

Spring Boot 学习笔记(三) @PropertySource()&ImportResource @PropertySource:加载指定的配置文件; /** * ClassName: Person * Description: * 将配置文件中配置的每一个属性的值,映射到这个组件中 * date: 2019/11/29 16:17 *@ConfigurationProp...

DramaLifes的博客 194

Spring Boot学习笔记总结(三)

1. SpringBoot 应该如何编写 2. Lombok常用注解 3. SpringBoot的 dev-tools开发者工具 4. Spring Initializr(Spring 初始化器) 5. yaml6. web场景 静态资源规则与定制化7. web场景 欢迎页与favicon功能8. web场景 静态资源的配置原理

探索技术与实践的旅程,分享编程经验与工具使用心得,助力开发者提升技能。 4765

springboot(三):springboot学习笔记

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有哪些 Spring Boot 的面试题,这是我经常拿来问面试者的,希望对你有帮助。 1、什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 S...

养只狗名叫猫 361

【SpringBoot学习笔记】三、日志

1、日志框架 小张;开发一个大型系统; ​ 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件? ​ 2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar; ​ 3、高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? ​ 4、将以前框架卸下来?换上新的框架,重新修改之前相...

illusion 201
上一篇: Vue3实战总结
下一篇: springboot学习笔记(四)Docker
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值