当前位置: 首页 > news >正文

扩展点都不知道不要说你用了Spring Boot

文章目录

  • 前言
  • 1.扩展点
    • 1.1. 应用程序生命周期扩展点
      • 1.1.1 SpringApplicationRunListener
      • 1.1.2 ApplicationEnvironmentPreparedEvent
      • 1.1.3 ApplicationPreparedEvent
      • 1.1.4 ApplicationStartedEvent
      • 1.1.5 ApplicationReadyEvent
      • 1.1.6 ApplicationFailedEvent
    • 1.2. 容器扩展点
      • 1.2.1 BeanFactoryPostProcessor
      • 1.2.2 BeanPostProcessor
      • 1.2.3 BeanDefinitionRegistryPostProcessor
    • 1.3. 自动配置扩展点
      • 1.3.1 AutoConfigurationImportSelector
      • 1.3.2 EnableAutoConfiguration
      • 1.3.3 ConditionalOnClass
      • 1.3.4 ConditionalOnBean
      • 1.3.5 ConditionalOnMissingBean
    • 1.4. Web扩展点
      • 1.4.1 WebMvcConfigurer
      • 1.4.2 HandlerInterceptor
      • 1.4.3 HandlerMethodArgumentResolver
      • 1.4.4 HandlerMethodReturnValueHandler
    • 1.5. 数据库扩展点
      • 1.5.1 DataSource
      • 1.5.2 TransactionManager
      • 1.5.3 JdbcTemplate
      • 1.5.4 JpaVendorAdapter
    • 1.6. 安全扩展点
      • 1.6.1 SecurityConfigurerAdapter
      • 1.6.2 WebSecurityConfigurerAdapter
      • 1.6.3 AuthenticationProvider
      • 1.6.4 UserDetailsService
    • 1.7. 其他扩展点
      • 1.7.1 CommandLineRunner
      • 1.7.2 ApplicationRunner
      • 1.7.3 CommandLinePropertySource
      • 1.7.4 EmbeddedServletContainerCustomizer
      • 1.7.5 HealthIndicator
      • 1.7.6 ErrorController
  • 2. 参考文档

前言

哈哈,本次有点标题党的嫌疑了,话又说回来,如果只停留在Spring Boot的基本的CRUD层面,未免也太过局限了,当需要去扩展一些功能,写一些组件的时候,就感觉无从下手了,所以本次,我们从一个标题党开始,了解一下Spring Boot 的扩展点,可以系统的了解记忆一下,此文不是八股文,希望大家能学以致用

Spring Boot是一个基于Spring框架的快速开发框架,做java开发的同学基本上都使用过,它通过提供一系列的自动配置和快速开发的特性,帮助我们快速搭建和开发高效、可扩展的应用程序。然而,为了满足不同开发需求的多样性,Spring Boot也提供了丰富的扩展点,开发人员可以通过扩展点来实现自定义的应用程序功能和行为。本文将介绍Spring Boot的扩展点分类和特点,帮助大家更好地理解和应用Spring Boot的扩展点。无论您是初学者还是有一定经验的开发人员,本文都将为您提供一些有用的信息和思路,帮助您更好地使用Spring Boot。
在这里插入图片描述

冰点出品,必属精品


1.扩展点

根据Spring Boot官方文档,可以将Spring Boot的扩展点分为以下几类:
这里面的每一类都事

1.1. 应用程序生命周期扩展点

应用程序生命周期扩展点是指在Spring Boot应用程序的生命周期中,提供了一系列的扩展点,开发人员可以通过实现这些扩展点来对应用程序的生命周期进行控制和定制。这些扩展点主要包括以下几个:
在这里插入图片描述
此图来自网络

1.1.1 SpringApplicationRunListener

它是一个监听器接口,用于在Spring应用程序的运行生命周期中监听和响应相关事件。可以通过实现该接口来自定义应用程序的启动和关闭行为。

1.1.2 ApplicationEnvironmentPreparedEvent

该事件在应用程序启动前触发,用于在环境准备阶段执行一些操作,例如:加载配置文件、设置系统属性等。

1.1.3 ApplicationPreparedEvent

该事件在应用程序上下文创建完成后触发,用于在应用程序准备阶段执行一些操作,例如:创建和初始化Bean等。

1.1.4 ApplicationStartedEvent

该事件在应用程序启动完成后触发,用于在应用程序启动后执行一些操作,例如:向日志中输出启动信息等。

1.1.5 ApplicationReadyEvent

该事件在应用程序准备就绪后触发,用于在应用程序运行期间执行一些操作,例如:启动定时任务、初始化缓存等。

1.1.6 ApplicationFailedEvent

该事件在应用程序启动失败后触发,用于在应用程序启动失败时执行一些操作,例如:记录日志、发送告警等。


1.2. 容器扩展点

我们来先看一张图,大概了解一下。Spring Boot容器扩展点主要用于自定义Spring容器的创建和配置,提供了一种灵活的方式来增强和定制Spring容器的功能,进而实现应用程序的定制化需求。
在这里插入图片描述
此图来自网络

Spring Boot的容器扩展点主要用于自定义Spring容器的创建和配置,通过这些扩展点,开发人员可以对Spring容器进行更加细粒度的控制和定制,以满足特定的应用场景和需求。具体来说,容器扩展点的作用包括:

  1. 修改Bean的定义信息
    BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor接口可以在Spring容器实例化Bean之前或之后修改Bean的定义信息,例如:修改Bean的属性值、增加或删除Bean的定义等。这些扩展点可以让开发人员在Bean实例化之前或之后对Bean的定义进行修改,以满足特定的需求。

  2. 修改Bean的属性值或执行其他操作
    BeanPostProcessor接口可以在Spring容器实例化Bean后修改Bean的属性值或执行其他操作,例如:修改Bean的属性值、添加Bean的初始化方法等。这些扩展点可以让开发人员在Bean实例化后对Bean的属性值进行修改或执行其他操作,以满足特定的需求。

  3. 自定义Bean的创建、配置、解析等
    通过实现BeanFactoryPostProcessor和BeanPostProcessor接口,开发人员可以自定义Bean的创建、配置和解析等过程,以满足特定的需求。例如,可以自定义BeanFactoryPostProcessor接口来修改Bean定义信息,自定义BeanPostProcessor接口来修改Bean的属性值或执行其他操作。

1.2.1 BeanFactoryPostProcessor

  • 用于在Spring容器实例化Bean之前修改Bean的定义信息。通过实现该接口,开发人员可以自定义Bean的配置和解析,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean之前对Bean的定义进行修改,从而实现更加灵活的配置和定制。

1.2.2 BeanPostProcessor

_ 用于在Spring容器实例化Bean后修改Bean的属性值或执行其他操作。通过实现该接口,开发人员可以自定义Bean的初始化逻辑,例如:修改Bean的属性值、添加Bean的初始化方法等。这种方式可以在Spring容器实例化Bean之后对Bean的属性值进行修改,从而实现更加灵活的初始化逻辑。_

1.2.3 BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,用于在Spring容器实例化Bean定义之前修改Bean定义信息。通过实现该接口,开发人员可以自定义Bean的创建和解析逻辑,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean定义之前对Bean定义进行修改,从而实现更加灵活的配置和定制。


1.3. 自动配置扩展点

在这里插入图片描述

Spring Boot提供了多种自动配置扩展点,通过这些扩展点可以实现自动配置类的选择、条件筛选等功能。以下是几个常用的自动配置扩展点:

1.3.1 AutoConfigurationImportSelector

AutoConfigurationImportSelector是一个接口,用于实现自动配置类的选择逻辑。在Spring Boot应用程序启动时,会自动加载AutoConfigurationImportSelector接口的实现类,实现类会根据条件进行筛选,选择符合条件的自动配置类并加载。

1.3.2 EnableAutoConfiguration

EnableAutoConfiguration是一个注解,用于开启自动配置功能。在应用程序中添加该注解后,Spring Boot会自动加载符合条件的自动配置类,实现自动配置的功能。该注解可以通过exclude属性排除一些自动配置类,也可以通过excludeName属性排除一些自动配置类的名称。

1.3.3 ConditionalOnClass

ConditionalOnClass是一个注解,用于在类路径中存在指定的类时才会加载自动配置类或Bean。可以使用该注解来检查类的可用性,如果类存在,则加载自动配置类或Bean,否则跳过。

1.3.4 ConditionalOnBean

ConditionalOnBean是一个注解,用于在容器中存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean存在,则加载自动配置类或Bean,否则跳过。

1.3.5 ConditionalOnMissingBean

ConditionalOnMissingBean是一个注解,用于在容器中不存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean不存在,则加载自动配置类或Bean,否则跳过。

这些自动配置扩展点可以帮助开发人员实现自动配置类的选择、条件筛选等功能,从而实现更加灵活、可扩展的应用程序。通过使用这些扩展点,开发人员可以自定义自动配置的功能和条件,以满足特定的需求。


1.4. Web扩展点

Spring Boot提供了多种扩展点用于自定义Web应用程序的配置和行为。其中,以下四个扩展点用于处理Web请求和响应相关的操作:

1.4.1 WebMvcConfigurer

WebMvcConfigurer是一个接口,用于自定义Spring MVC的配置。通过实现该接口,可以添加拦截器、消息转换器等,以满足特定的需求。例如,可以添加拦截器来验证请求的安全性,或者添加消息转换器来支持自定义的数据格式。

1.4.2 HandlerInterceptor

HandlerInterceptor是一个接口,用于自定义拦截器。拦截器可以在请求处理前或处理后执行自定义的逻辑,例如:验证用户权限、记录请求日志等。通过实现该接口,可以实现自定义的拦截器,以满足特定的需求。

1.4.3 HandlerMethodArgumentResolver

HandlerMethodArgumentResolver是一个接口,用于自定义请求参数解析器。在处理请求时,Spring会将请求中的参数解析为对应的Java对象。通过实现该接口,可以自定义请求参数解析器,以支持自定义的参数类型或数据格式。

1.4.4 HandlerMethodReturnValueHandler

HandlerMethodReturnValueHandler是一个接口,用于自定义请求返回值处理器。在处理请求时,Spring会将Java对象转换为响应结果并返回给客户端。通过实现该接口,可以自定义请求返回值处理器,以支持自定义的数据格式或响应结果。

总之,这些扩展点可以帮助开发人员自定义Web应用程序的配置和行为,以满足特定的需求。通过实现这些扩展点,可以添加拦截器、消息转换器等,实现自定义的请求参数解析器和返回值处理器,从而实现更加灵活、可扩展的Web应用程序。


1.5. 数据库扩展点

Spring Boot提供了多种数据访问相关的扩展点,以下是几个常用的扩展点:

1.5.1 DataSource

DataSource是一个接口,用于定义数据源的配置信息。数据源是应用程序与数据库之间的连接池,通过数据源可以配置数据库驱动、连接池大小等属性,与数据库建立连接。

1.5.2 TransactionManager

TransactionManager是一个接口,用于定义事务管理器的配置信息。事务管理器用于管理应用程序中的事务,例如:事务隔离级别、超时时间等。通过实现TransactionManager接口,可以自定义事务管理器的配置信息,以满足特定的需求。

1.5.3 JdbcTemplate

JdbcTemplate是Spring提供的数据访问模板,用于简化JDBC操作。通过JdbcTemplate,可以更加方便地进行数据库操作,例如:执行SQL语句、执行存储过程等。JdbcTemplate封装了大量的JDBC操作,提供了更加简单、易用的API,可以大大提高开发效率。

1.5.4 JpaVendorAdapter

JpaVendorAdapter是一个接口,用于定义JPA厂商适配器的配置信息。JPA厂商适配器用于适配不同的JPA实现,例如:Hibernate、EclipseLink等。通过实现JpaVendorAdapter接口,可以自定义JPA厂商适配器的配置信息,例如:数据库方言、JPA实现等。


1.6. 安全扩展点

Spring Boot提供了多种安全相关的扩展点 我们基本上用的很少,大家只需要了解一下。后续我会从这个里面挑选两个,写个项目真实使用的示例,供大家参考。

安全扩展点可以帮助开发人员实现更加灵活、可扩展的安全功能,从而满足特定的需求。通过使用这些扩展点,可以自定义Spring Security的配置信息、Web应用程序的安全配置信息,以及自定义用户认证方式、用户信息获取方式等,以实现更加定制化的安全功能。

1.6.1 SecurityConfigurerAdapter

SecurityConfigurerAdapter是一个类,用于定义Spring Security的配置信息。通过继承该类,可以实现用户认证和授权、添加安全过滤器等功能。SecurityConfigurerAdapter提供了一系列的方法,用于配置Spring Security的不同方面,例如:配置用户认证、授权、添加过滤器等。

1.6.2 WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapter是一个类,用于定义Web应用程序的安全配置信息。通过继承该类,可以实现定义安全规则、设置用户认证和授权等功能。WebSecurityConfigurerAdapter提供了一系列的方法,用于配置Web应用程序的安全性,例如:配置HTTP安全规则、配置表单登录、配置用户认证等。

1.6.3 AuthenticationProvider

AuthenticationProvider是一个接口,用于自定义用户认证方式。通过实现该接口,可以实现自定义的用户名和密码认证方式、OAuth2认证方式等。AuthenticationProvider提供了一系列的方法,用于实现用户认证的不同方面,例如:验证用户密码、获取用户权限等。

1.6.4 UserDetailsService

UserDetailsService是一个接口,用于自定义用户信息获取方式。通过实现该接口,可以从数据库或其他数据源中获取用户信息。UserDetailsService提供了一个方法,用于根据用户名获取用户信息,开发人员可以根据实际需求进行自定义实现。


1.7. 其他扩展点

下面这些扩展点不知道怎么归类,有点杂,我们暂且归类为其他扩展点吧,但是都是比较常用的一些扩展点。可以帮助开发人员实现更加灵活、可扩展的应用程序功能,从而满足特定的需求。通过使用这些扩展点,可以自定义命令行操作、命令行参数处理方式、嵌入式Servlet容器的配置信息、健康检查指标以及异常处理方式等,以实现更加定制化的应用程序功能。

1.7.1 CommandLineRunner

CommandLineRunner是一个接口,用于在Spring Boot应用程序启动后执行一些命令行操作。例如:初始化数据、启动定时任务等。通过实现CommandLineRunner接口,可以自定义需要执行的命令行操作。

1.7.2 ApplicationRunner

ApplicationRunner是一个接口,与CommandLineRunner类似,也用于在Spring Boot应用程序启动后执行一些命令行操作。但其提供了更灵活的参数处理方式,可以接收一个ApplicationArguments对象,从而更加方便地处理命令行参数。

1.7.3 CommandLinePropertySource

CommandLinePropertySource是一个接口,用于将命令行参数转换为Spring环境中的属性值。例如:将命令行参数–server.port=8080转换为spring.server.port=8080的属性值。通过实现CommandLinePropertySource接口,可以自定义命令行参数的处理方式,以满足特定的需求。

1.7.4 EmbeddedServletContainerCustomizer

EmbeddedServletContainerCustomizer是一个接口,用于自定义嵌入式Servlet容器的配置信息。例如:自定义端口号、设置SSL证书等。通过实现EmbeddedServletContainerCustomizer接口,可以实现嵌入式Servlet容器的自定义配置。

1.7.5 HealthIndicator

HealthIndicator是一个接口,用于定义应用程序的健康检查指标。例如:检查数据库连接是否正常、检查磁盘使用情况等。通过实现HealthIndicator接口,可以自定义应用程序的健康检查指标,以便及时发现和解决应用程序的问题。

1.7.6 ErrorController

ErrorController是一个接口,用于自定义应用程序的异常处理方式。例如:自定义404页面、重定向到错误页面等。通过实现ErrorController接口,可以自定义应用程序的异常处理方式,以提高用户的体验。

2. 参考文档

  1. Spring Boot官方文档:https://spring.io/projects/spring-boot
  2. Spring Boot Reference Guide:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  3. Spring Boot官方文档相关 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-customizing-bean-definitions
  4. Spring Boot 自动配置 https://docs.spring.io/spring-boot/docs/3.1.2/reference/html/auto-configuration-classes.html#appendix.auto-configuration-classes

在这里插入图片描述

👏好了,本次的Spring Boot 的扩展点分享就到这儿,我是冰点,下次见。如果我的文章对你有所收获,可以给个赞。如果有疑问可以在评论区留言。
在这里插入图片描述

相关文章:

扩展点都不知道不要说你用了Spring Boot

文章目录 前言1.扩展点1.1. 应用程序生命周期扩展点1.1.1 SpringApplicationRunListener1.1.2 ApplicationEnvironmentPreparedEvent1.1.3 ApplicationPreparedEvent1.1.4 ApplicationStartedEvent1.1.5 ApplicationReadyEvent1.1.6 ApplicationFailedEvent 1.2. 容器扩展点1.2…...

LangChain大型语言模型(LLM)应用开发(五):评估

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…...

Angular:动态依赖注入和静态依赖注入

问题描述: 自己写的服务依赖注入到组件时候是直接在构造器内初始化的。 直到看见代码中某大哥写的 private injector: Injector 动态依赖注入和静态依赖注入 在 Angular 中,使用构造函数注入的方式将服务注入到组件中是一种静态依赖注入的方式。这种方…...

Java前后端交互long类型溢出的解决方案

问题描述: 前端根据id发起请求查找对象的时候一直返回找不到对象,然后查看了请求报文,发现前端传给后台的数据id不对,原本的id是1435421253099634623,可前端传过来的id是 1435421253099634700,后三位变成了…...

Lua学习-1 基础数据类型

文章目录 基础数据类型分类nilbooleannumberstringfunctionuserDatathreadtable 如何判断类型(type)不同类型数据常见操作nilnumberstring(字符串)function普通函数匿名函数不定参数函数 table 基础数据类型分类 nil 表示无效值 boolean 只有 true 和…...

普通的计算机专业大学生如何学习才能找到好offer

2023年已经将近8月份了,回想到开始努力提高自己的时候还是在今年1月1号。开学就要大二了。 一、目标达成情况总结: 一月份,无意间在网上刷到鹏哥的C语言课程,在鸡汤实力课程已拿到大厂offer的同学喜报 ,让我萌发了学技…...

iOS私钥证书和证书profile文件的生成攻略

在使用uniapp打包ios app的时候,要求我们提供一个私钥证书和一个证书profile文件,私钥证书可以使用mac电脑的钥匙串访问程序来生成,也可以使用香蕉云编来生成。证书profile文件可以直接在苹果开发者中心生成。 有部分刚接触ios开发的同学们&…...

前端 | ( 十二)CSS3简介及基本语法(中)| 变换、过渡与动画 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 系列笔记: 【HTML4】(一)前端简介【HTML4】(二)各种各样的常用标签【HTML4】(三)表单及HTML4收尾…...

【BOOST程序库】时间日期库

基本概念这里不再浪费时间介绍了&#xff0c;这里给出时间日期库的常见使用方法&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <boost/version.hpp> #include <boost/config.hpp>//时间库&#xff1…...

Windows 命令提示符 (cmd. exe) 命令行字符串长度限制

在Windows中&#xff0c;命令提示符 (cmd. exe) 命令行字符串是有长度限制的&#xff0c;本文帮助你了解命令行中的字符串长度限制&#xff0c;以免你的批处理脚本踩坑。 &#xff08;以下在Win10环境测试过&#xff09; 字符串长度限制 可在命令提示符处使用的字符串的最大长…...

Kafka 入门到起飞系列

Kafka 入门到起飞系列 [Kakfa 为什么牛&#xff1f; 为什么这么火&#xff1f;有什么优势呢&#xff1f;](https://blog.csdn.net/FightingITPanda/article/details/131941293)[工欲善其事&#xff0c;必先利其器 - 核心概念&#xff08;术语解释&#xff09;](https://blog.cs…...

[RabbitMQ] RabbitMQ简单概述,用法和交换机模型

MQ概述&#xff1a; Message Queue(消息队列)&#xff0c;实在消息的传输过程中保存消息的容器&#xff0c;都用于分布式系统之间进行通信 分布式系统通信的两种方式&#xff1a;直接远程调用 和 借助第三昂 完成间接通信 发送方称谓生产者&#xff0c;接收方称为消费者 MQ优…...

Oracle 多条记录根据某个字段获取相邻两条数据间的间隔天数,小于31天的记录都筛选出来

需求描述&#xff1a;在Oracle中 住院记录记录表为v_hospitalRecords&#xff0c;表中FIHDATE入院时间&#xff0c;FBIHID是住院号&#xff0c; 我想查询出每个患者在他们的所有住院记录中是否在一个月内再次入院(相邻的两条记录进行比较)&#xff0c;并且住院记录大于一的患者…...

【数据挖掘】如何修复时序分析缺少的日期

一、说明 我撰写本文的目的是通过引导您完成一个示例来帮助您了解 TVF 以及如何使用它们&#xff0c;该示例解决了时间序列分析中常见的缺失日期问题。 我们将介绍&#xff1a; 如何生成日期以填补数据中缺失的空白如何创建 TVF 和参数的使用如何呼叫 TVF我们将考虑扩展我们的日…...

CDN、P2P、PCDN的区别是什么

本篇文章为大家介绍一下与网络加速有关的几个重要概念&#xff0c;一起了解一下CDN,P2P和PCDN究竟是什么吧&#xff01; 1. CDN CDN即Content Delivery Network&#xff0c;中文全称为内容分发网络。 如果内容离用户远&#xff0c;用户可能无法获得及时的响应&#xff0c;那…...

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案&#xff1a; 1、查询商品库存等于50的所有商品&#xff0c;显示商品编号&#xff0c;商 品名称&#xff0c;商品售价&#xff0c;商品库存。 SQL语句 select good_no,good…...

路由器(第二十五课)

路由器的深入学习 一、路由 1、路由 1) 什么是路由:路由就是数据包从一个网络到另外一外网络的过程 2)支持路由功能的设备:路由器、三层交换机、防火墙 3 路由器转发数据包的依据: -每一台路由器都维护着一张路由表 -路由器是依靠这张路由表来转发数据的 -这张路由表就…...

物联网网关模块可以带几台plc设备吗?可以接几个modbus设备?

随着物联网技术的快速发展&#xff0c;物联网网关模块已经成为了实现物联网应用的重要工具。很多客户在选择物联网网关模块时想了解物联网网关模块的设备接入能力&#xff0c;一个物联网网关模块可以带几台PLC设备&#xff1f;可以接几个Modbus设备&#xff1f; 物联网网关模块…...

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…...

结构化思维:高效能项目经理人的底层能力

大家好&#xff0c;我是老原。 我们经常会说「高效能」&#xff0c;那怎么成为高效能人士&#xff1f;其实除了拼体力和心力以外&#xff0c;高效能更重要的是脑力&#xff0c;这里的脑力不是指智力&#xff0c;而是结构化思维。 随着你在职场中不断成长和进阶&#xff0c;级…...

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…...

vue3+ts+elementui-plus二次封装树形表格

复制粘贴即可&#xff1a; 一、定义table组件 <template><div classmain><div><el-table ref"multipleTableRef" :height"height" :default-expand-all"isExpend" :data"treeTableData"style"width: 100%…...

机器学习/深度学习常见算法实现(秋招版)

包括BN层、卷积层、池化层、交叉熵、随机梯度下降法、非极大抑制、k均值聚类等秋招常见的代码实现。 1. BN层 import numpy as npdef batch_norm(outputs, gamma, beta, epsilon1e-6, momentum0.9, running_mean0, running_var1)::param outputs: [B, L]:param gamma: mean:p…...

京东技术专家首推:Spring 微服务架构设计,GitHub 星标 128K

前言 本书提供了实现大型响应式微服务的实用方法和指导原则&#xff0c;并通过示例全面 讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、 Docker、Mesos 和 Marathon&#xff0c;还会教授如何用 Spring Boot 部署自治服务&#xff0c;而 无须使用重量级应用服…...

R语言--森林图制作

#数据准备- data5 #install.packages("rmda")rm(list=ls())library(MASS)library(rmda)library(dplyr) #mutate依赖环境library(magrittr) #%>%依赖setwd("D:/R/nomo5new2")data...

Tomcat中利用war包部署

在Tomcat中利用war包部署Web应用程序时&#xff0c;默认情况下&#xff0c;应用程序的上下文路径&#xff08;也称为项目名称&#xff09;将是war文件的名称&#xff08;去除.war扩展名&#xff09;。这意味着您在访问Web应用程序时必须在URL中包含项目名称。例如&#xff0c;如…...

[JAVAee]线程安全

目录 线程安全的理解 线程不安全的原因 ①非原子性 ②可见性 ③代码重排序 体会何为不安全的线程 保证线程安全 一个代码在多线程的环境下就很容易出现错误. 线程安全的理解 线程安全是什么呢?通俗的来讲,线程安全就是在多线程的环境下,代码的结果是符合我们预期的,就…...

ELK环境搭建——概况

Elastic Stack,核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 目录 一:Elasticsearch: 1.1 从数据中探寻各种问题的答案 1.1.1 定义您自己的搜索方式...

面试知识点整理

计算机的物理内存是有限的&#xff0c;所以操作系统在遇到内存不足时&#xff0c;会通过换页机制暂时把 某个进程未使用的内存中的数据搬移到硬盘上&#xff08;比如 Linux 的 swap 分区&#xff09;&#xff0c;并在系统页表中 删除相应的表项。当该进程访问数据已经被搬移到硬…...

腾讯云服务器CVM计算型c6/c5实例CPU型号、处理器主频大全

腾讯云服务器CVM计算型C6、C5、C4、CN3、C3和C2实例&#xff0c;计算型C6云服务器CPU采用Intel Xeon Ice Lake处理器&#xff0c;主频3.2GHz&#xff0c;睿频3.5GHz&#xff0c;腾讯云服务器网分享更多计算型CVM云服务器CPU型号、处理器主频性能说明&#xff1a; 目录 云服务…...