Spring核心接口:BeanFactory接口

news2024/11/18 21:49:19

一图胜千言

在这里插入图片描述

BeanFactory 属性&方法解析

  • 点击展开注意:以上代码仅供参考,可能存在不完整或不准确的情况。

    public interface BeanFactory {
    
        // 根据Bean名称返回Bean实例。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        Object getBean(String name) throws BeansException;
    
        // 根据Bean名称和构造函数参数返回Bean实例。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        Object getBean(String name, Object... args) throws BeansException;
    
        // 根据Bean名称和期望的类型返回Bean实例。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        // 如果Bean的类型与期望的类型不兼容,则抛出BeanNotOfRequiredTypeException异常。
        <T> T getBean(String name, Class<T> requiredType) throws BeansException;
    
        // 根据期望的类型返回Bean实例。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        // 如果Bean的类型与期望的类型不兼容,则抛出BeanNotOfRequiredTypeException异常。
        <T> T getBean(Class<T> requiredType) throws BeansException;
    
        // 判断是否存在指定名称的Bean。
        boolean containsBean(String name);
    
        // 判断指定名称的Bean是否是单例的。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
    
        // 判断指定名称的Bean是否是原型的。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
    
        // 返回指定名称的Bean定义。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        BeanDefinition getBeanDefinition(String name) throws NoSuchBeanDefinitionException;
    
        // 返回所有Bean名称。
        String[] getBeanDefinitionNames();
    
        // 返回指定类型的Bean名称。
        <T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;
    
        // 返回指定类型的Bean名称,但不包括子Bean工厂中定义的Bean。
        <T> Map<String, T> getBeansOfType(Class<T> type, boolean includeNonSingletons, boolean allowEagerInit)
                throws BeansException;
    
        // 返回Bean的类型。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        Class<?> getType(String name) throws NoSuchBeanDefinitionException;
    
        // 判断指定名称的Bean是否是某个类型或其子类型。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
    
        // 判断指定名称的Bean是否是某个类型或其子类型。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
    
        // 返回Bean的依赖关系。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        String[] getDependenciesForBean(String name) throws NoSuchBeanDefinitionException;
    
        // 返回Bean的依赖关系。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        String[] getDependenciesForBean(String name, Class<?> dependentBeanType)
                throws NoSuchBeanDefinitionException;
    
        // 返回Bean的依赖关系。
        // 如果Bean不存在,则抛出NoSuchBeanDefinitionException异常。
        Set<String> getDependenciesForBean(String name, Class<?> dependentBeanType, boolean recursive)
                throws NoSuchBeanDefinitionException;
    
        // 返回Bean是否在当前Bean工厂中定义。
        boolean containsLocalBean(String name);
    
        // 将Bean注册到Bean工厂中。
        void registerSingleton(String beanName, Object singletonObject) throws IllegalStateException;
    
        // 将Bean定义注册到Bean工厂中。
        void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
                throws BeanDefinitionStoreException;
    
        // 返回Bean工厂的父Bean工厂。
        @Nullable
        BeanFactory getParentBeanFactory();
    
        // 添加Bean后处理器。
        void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);
    
        // 返回所有Bean后处理器。
        List<BeanPostProcessor> getBeanPostProcessors();
    
        // 判断是否存在指定名称的Bean后处理器。
        boolean hasBeanPostProcessor(String beanPostProcessorName);
    
        // 返回指定名称的Bean后处理器。
        BeanPostProcessor getBeanPostProcessor(String beanPostProcessorName);
    
        // 添加嵌入式Bean定义读取器。
        void addEmbeddedValueResolver(StringValueResolver valueResolver);
    
        // 返回所有嵌入式Bean定义读取器。
        StringValueResolver getEmbeddedValueResolver();
    
        // 判断是否存在嵌入式Bean定义读取器。
        boolean hasEmbeddedValueResolver();
    
        // 返回Bean的资源描述信息。
        Resource getResource(String location);
    
        // 转换类型。
        <T> T convertIfNecessary(Object value, Class<T> requiredType) throws BeanNotOfRequiredTypeException;
    
        // 转换类型。
        <T> T convertIfNecessary(Object value, Class<T> requiredType, MethodParameter methodParam)
                throws BeanNotOfRequiredTypeException;
    
        // 解析嵌入式值。
        String resolveEmbeddedValue(String value);
    
        // 设置Bean类加载器。
        void setBeanClassLoader(ClassLoader classLoader);
    
        // 返回Bean类加载器。
        ClassLoader getBeanClassLoader();
    	// 设置临时ClassLoader。
    	void setTempClassLoader(ClassLoader tempClassLoader);
    
    	// 返回临时ClassLoader。
    	ClassLoader getTempClassLoader();
    
    	// 注册BeanFactoryPostProcessor。
    	void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor);
    
    	// 返回所有BeanFactoryPostProcessor。
    	List<BeanFactoryPostProcessor> getBeanFactoryPostProcessors();
    
    	// 判断是否存在指定名称的BeanFactoryPostProcessor。
    	boolean hasBeanFactoryPostProcessor(String beanFactoryPostProcessorName);
    
    	// 返回指定名称的BeanFactoryPostProcessor。
    	BeanFactoryPostProcessor getBeanFactoryPostProcessor(String beanFactoryPostProcessorName);
    
    	// 销毁Bean实例。
    	void destroyBean(String name);
    
    	// 销毁所有单例Bean实例。
    	void destroySingletons();
    
    	// 注册DestroyAwareBeanPostProcessor。
    	void registerDestroyAwareBeanPostProcessors(DestroyAwareBeanPostProcessor... postProcessors);
    
    	// 返回所有DestroyAwareBeanPostProcessor。
    	List<DestroyAwareBeanPostProcessor> getDestroyAwareBeanPostProcessors();
    
    	// 判断是否存在指定名称的DestroyAwareBeanPostProcessor。
    	boolean hasDestroyAwareBeanPostProcessor(String destroyAwareBeanPostProcessorName);
    
    	// 返回指定名称的DestroyAwareBeanPostProcessor。
    	DestroyAwareBeanPostProcessor getDestroyAwareBeanPostProcessor(String destroyAwareBeanPostProcessorName);
    
    	// 注册DisposableBean实例。
    	void registerDisposableBean(String beanName, DisposableBean disposableBean);
    
    	// 注册DisposableBean实例。
    	void registerDisposableBean(String beanName, Runnable disposableBean);
    
    	// 返回所有DisposableBean实例。
    	Set<String> getDisposableBeans();
    
    	// 判断是否存在指定名称的DisposableBean实例。
    	boolean hasDisposableBean(String disposableBeanName);
    
    	// 返回指定名称的DisposableBean实例。
    	DisposableBean getDisposableBean(String disposableBeanName);
    
    	// 注册BeanFactoryAware实例。
    	void autowireBeanFactoryAware(BeanFactoryAware instance);
    
    	// 注册BeanNameAware实例。
    	void autowireBeanNameAware(BeanNameAware instance, String beanName);
    
    	// 注册BeanClassLoaderAware实例。
    	void autowireBeanClassLoaderAware(BeanClassLoaderAware instance);
    
    	// 注册ApplicationContextAware实例。
    	void autowireApplicationContextAware(ApplicationContextAware instance);
    
    	// 注册ResourceLoaderAware实例。
    	void autowireResourceLoaderAware(ResourceLoaderAware instance);
    
    	// 注册ApplicationEventPublisherAware实例。
    	void autowireApplicationEventPublisherAware(ApplicationEventPublisherAware instance);
    
    	// 注册MessageSourceAware实例。
    	void autowireMessageSourceAware(MessageSourceAware instance);
    
    	// 注册ApplicationContextMessageSource实例。
    	void autowireApplicationContextMessageSource(ApplicationContextMessageSource messageSource);
    
    	// 注册EnvironmentAware实例。
    	void autowireEnvironmentAware(EnvironmentAware instance);
    
    	// 注册EmbeddedValueResolverAware实例。
    	void autowireEmbeddedValueResolverAware(EmbeddedValueResolverAware instance);
    
    	// 注册ResourcePatternResolverAware实例。
    	void autowireResourcePatternResolverAware(ResourcePatternResolverAware instance);
    
    	// 注册ApplicationStartupAware实例。
    	void autowireApplicationStartupAware(ApplicationStartupAware instance);
    
    	// 注册ApplicationArgumentAware实例。
    	void autowireApplicationArgumentAware(ApplicationArgumentAware instance);
    
    	// 注册ApplicationReadyEvent实例。
    	void autowireApplicationReadyEvent(ApplicationReadyEvent event);
    
    	// 注册ApplicationFailedEvent实例。
    	void autowireApplicationFailedEvent(ApplicationFailedEvent event);
    
    	// 注册ApplicationEnvironmentPreparedEvent实例。
    	void autowireApplicationEnvironmentPreparedEvent(ApplicationEnvironmentPreparedEvent event);
    
    	// 注册ApplicationPreparedEvent实例。
    	void autowireApplicationPreparedEvent(ApplicationPreparedEvent event);
    
    	// 注册ContextClosedEvent实例。
    	void autowireContextClosedEvent(ContextClosedEvent event);
    
    	// 注册ContextRefreshedEvent实例。
    	void autowireContextRefreshedEvent(ContextRefreshedEvent event);
    
    	// 注册RequestHandledEvent实例。
    	void autowireRequestHandledEvent(RequestHandledEvent event);
    
    	// 注册SessionStartedEvent实例。
    	void autowireSessionStartedEvent(SessionStartedEvent event);
    
    	// 注册SessionDestroyedEvent实例。
    	void autowireSessionDestroyedEvent(SessionDestroyedEvent event)
    
     }
    

BeanFactory接口中定义了许多方法,用于管理Bean的生命周期、依赖关系和配置。这些方法可以分为以下几类:

  • 获取Bean实例:getBean()、getBeanDefinition()、getType()、isSingleton()、isPrototype()等。
  • 查找Bean:containsBean()、getBeanDefinitionNames()、getBeansOfType()等。
  • 注册Bean:registerSingleton()、registerBeanDefinition()等。
  • 处理Bean后处理器:addBeanPostProcessor()、getBeanPostProcessors()等。
  • 处理嵌入式值:addEmbeddedValueResolver()、getEmbeddedValueResolver()等。
  • 类型转换:convertIfNecessary()等。
  • 资源加载:getResource()等。
  • 销毁Bean:destroyBean()、destroySingletons()等。
  • 注册各种感知接口:autowireBeanFactoryAware()、autowireBeanNameAware()、autowireBeanClassLoaderAware()、autowireApplicationContextAware()等。

这些方法为Spring IoC容器提供了基础的依赖注入功能,使得用户可以通过BeanFactory接口来管理Bean的生命周期、依赖关系和配置。

一些实体类的介绍

好的,以下是一个表格形式的 Spring BeanFactory 接口和实现类的层次结构:

编号接口/实现类名称描述
1BeanFactory (接口)Spring IoC 容器的基础接口,提供了最基本的依赖注入功能
2ListableBeanFactory (接口)BeanFactory 的子接口,提供了查找 Bean 定义和 Bean 实例的功能
3HierarchicalBeanFactory (接口)BeanFactory 的子接口,提供了层次化 Bean 工厂的功能
4ConfigurableBeanFactory (接口)HierarchicalBeanFactory 的子接口,提供了配置 Bean 工厂的功能
5AutowireCapableBeanFactory (接口)ConfigurableBeanFactory 的子接口,提供了自动装配 Bean 的功能
6DefaultListableBeanFactory (实现类)Spring 内部使用的一个实现类,它是 Spring 中最常用的 Bean 工厂实现。它扩展了 AbstractAutowireCapableBeanFactory 类,实现了 DefaultSingletonBeanRegistry 接口和 ConfigurableListableBeanFactory 接口。DefaultListableBeanFactory 提供了完整的 Bean 生命周期管理功能,包括创建 Bean 实例、设置 Bean 属性、初始化 Bean 实例和销毁 Bean 实例等
7XmlBeanFactory (实现类)一个已经过时的实现类,它使用 XML 文件来配置 Bean。它扩展了 DefaultListableBeanFactory 类,实现了 ResourceLoaderAware 接口和 BeanDefinitionRegistry 接口。XmlBeanFactory 已经不再推荐使用,取而代之的是使用 ApplicationContext 接口和它的实现类
8ApplicationContext (接口)一个扩展了 BeanFactory 接口的接口,它提供了更多的功能,例如国际化支持、事件发布、资源加载等。ApplicationContext 接口有多个实现类,例如 ClassPathXmlApplicationContext、FileSystemXmlApplicationContext 和 AnnotationConfigApplicationContext 等。这些实现类都扩展了 DefaultListableBeanFactory 类,实现了 ApplicationContext 接口和 ApplicationEventPublisher 接口
9ConfigurableApplicationContext (接口)ApplicationContext 接口的子接口,提供了对 Spring 容器的配置管理功能。它扩展了 ApplicationContext 接口,实现了 Lifecycle 接口和 ConfigurableBeanFactory 接口
10AbstractApplicationContext (实现类)ConfigurableApplicationContext 接口的实现类,提供了对 Spring 容器的基本配置管理功能,例如刷新容器、发布事件、加载资源等。它扩展了 DefaultResourceLoader 类,实现了 ConfigurableApplicationContext 接口
11ClassPathXmlApplicationContext (实现类)AbstractApplicationContext 的子类,它从类路径中加载 XML 配置文件,创建并管理 Spring 容器。它扩展了 AbstractXmlApplicationContext 类,实现了 ApplicationContext 接口
12FileSystemXmlApplicationContext (实现类)AbstractApplicationContext 的子类,它从文件系统中加载 XML 配置文件,创建并管理 Spring 容器。它扩展了 AbstractXmlApplicationContext 类,实现了 ApplicationContext 接口
13AnnotationConfigApplicationContext (实现类)AbstractApplicationContext 的子类,它使用 Java 配置类来创建并管理 Spring 容器。它扩展了 AbstractRefreshableConfigApplicationContext 类,实现了 ApplicationContext 接口

总之,Spring 的 Bean 工厂有多个层次结构,每个层次结构都提供了不同的功能。这些层次结构从基础的 BeanFactory 接口开始,逐渐扩展为更高级的功能,最终实现为 DefaultListableBeanFactory 类。这种层次结构使得 Spring 的 Bean 工厂具有非常强大和灵活的功能。同时,Spring 还提供了更高级的 ApplicationContext 接口,进一步扩展了 BeanFactory 接口的功能。

这里只介绍一些比较常用的实现类和接口

  1. ListableBeanFactory
  2. HierarchicalBeanFactory
  3. ConfigurableBeanFactory
  4. AutowireCapableBeanFactory

ListableBeanFactory介绍

用于枚举、检索容器中所有bean

好的,以下是ListableBeanFactory接口中的每个方法的示例及其使用方式的说明:

  1. String[] getBeanDefinitionNames():返回当前BeanFactory中所有Bean定义的名称数组。
// 获取所有Bean定义的名称数组
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
for (String beanName : beanDefinitionNames) {
    System.out.println(beanName);
}
  1. int getBeanDefinitionCount():返回当前BeanFactory中所有Bean定义的数量。
// 获取Bean定义的数量
int count = beanFactory.getBeanDefinitionCount();
System.out.println("Bean定义的数量:" + count);
  1. boolean containsBeanDefinition(String beanName):判断当前BeanFactory中是否包含指定名称的Bean定义。
// 判断Bean定义是否存在
boolean exists = beanFactory.containsBeanDefinition("myBean");
System.out.println("Bean定义是否存在:" + exists);
  1. BeanDefinition getBeanDefinition(String beanName):返回当前BeanFactory中指定名称的Bean定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1514789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为机考:HJ43 迷宫问题

华为机考&#xff1a;HJ43 迷宫问题 描述 DFS 从迷宫入口开始进行dfs搜索&#xff0c;每次进入一个点&#xff0c;将其加入临时路径数组中&#xff0c;把该位改成0表示不能进入&#xff0c;然后依次搜索该位下、右、上、左四个方向的点&#xff0c;如果搜索的这个点可以进入则…

【机器学习智能硬件开发全解】(二)—— 政安晨:嵌入式系统基本素养【处理器原理】

嵌入式系统的基本素养包括以下几个方面&#xff1a; 硬件知识&#xff1a;嵌入式系统通常由硬件和软件组成&#xff0c;了解和熟悉硬件的基本知识&#xff0c;包括微处理器、存储器、外设等&#xff0c;并了解它们的工作原理和特性。 软件编程&#xff1a;熟悉至少一种编程语言…

STM32模拟I2C控制TM1650数码管显示电压电流

模拟I2C控制TM1650数码管显示电压电流 数码管的逻辑TM1650 原理模拟I2C的实现TM1650驱动电压电流显示 数码管的逻辑 通过数码管来表示字符。 数码管的abcdefg和dp分别对应这发送过去的8位数据位比如0x3F -> 0011 1111 表示0字符。 如果要加上小数点则在最高位加一&#xf…

同步整流芯片 支持12V降5V 24V降5V 24V降12V 降压芯片 H4122

惠海H4122降压恒压芯片的工作原理&#xff1a; 主要是通过内部电路和算法来控制和调节输出电压&#xff0c;使其保持恒定。 输入电压&#xff1a;芯片接收一个较高的输入电压&#xff0c;如12V、24V或36V。 开关电源转换器&#xff1a;芯片内部通常包含一个或多个开关电源转…

【python pyinstaller库】pyinstaller介绍、安装、以及相关重点知识

PyInstaller是一个在Windows、GNU/Linux、macOS等平台下将Python程序冻结&#xff08;打包&#xff09;为独立可执行文件的工具, 用于在未安装Python的平台上执行Python编写的应用程序。 相比类似工具&#xff0c;它的主要优点是 PyInstaller 与 Python 3.7-3.10 一起工作&…

StarRocks实战——云览科技存算分离实践

目录 背景 一、平台现状&痛点 1.1 使用组件多&#xff0c;维护成本高 1.2 链路冗长&#xff0c;数据时效性难以保证 1.3 服务稳定性不足 二、StarRocks 存算分离调研 2.1 性能对比 2.2 易用性 2.3 存储成本 三、StarRocks 存算分离实践 3.1 查询优化 3.1.1 物化…

SyntaxError: Unexpected end of JsON input J50N.parse....报错

const userInfoJSON.parse(uni.getStorageSync(userInfo))改成 const userInfouni.getStorageSync(userInfo)&& JSON.parse(uni.getStorageSync(userInfo)) //不报错

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…

深入理解Python中的面向对象编程(OOP)【第129篇—Scikit-learn的入门】

深入理解Python中的面向对象编程&#xff08;OOP&#xff09; 在Python编程领域中&#xff0c;面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种强大而灵活的编程范式&#xff0c;它允许开发者以对象为中心组织代码&#xff0c;使得…

Redis7.2.4分片集群搭建

Redis分片集群搭建 1.集群结构 分片集群需要的节点数量较多&#xff0c;这里我们搭建一个最小的分片集群&#xff0c;包含3个master节点&#xff0c;每个master包含一个slave节点&#xff0c;结构如下&#xff1a; 信息如下&#xff1a; IPPORT角色glnode036379slaveglnode0…

JavaEE:文件IO

硬盘 文件指的是硬盘/磁盘上的文件 ⚠硬盘 ≠ 磁盘 磁盘属于外存的一种&#xff1b;而软盘&#xff0c;硬盘&#xff08;机械硬盘&#xff09;这种属于用磁性介质来存储二进制数据 ssd硬盘&#xff08;固态硬盘&#xff09;&#xff0c;内部完全是集成电路&#xff0c;和磁…

手写简易操作系统(七)--加载操作系统内核

前情提要 上一节中&#xff0c;我们开启了内存分页&#xff0c;这一节中&#xff0c;我们将加载内核&#xff0c;内核是用C语言写的&#xff0c;C语言编译完了是一段ELF可加载程序&#xff0c;所以我们需要学会解析ELF格式文件&#xff0c;并将内核加载到内存 一、ELF格式 程…

(黑马出品_高级篇_04)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_高级篇_04&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——可靠性消息服务 今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallbac…

【LeetCode热题100】2. 两数相加(链表)

一.题目要求 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数…

论文阅读——RemoteCLIP

RemoteCLIP: A Vision Language Foundation Model for Remote Sensing 摘要——通用基础模型在人工智能领域变得越来越重要。虽然自监督学习&#xff08;SSL&#xff09;和掩蔽图像建模&#xff08;MIM&#xff09;在构建此类遥感基础模型方面取得了有希望的结果&#xff0c;但…

深度学习系列62:Agent入门

1 anget介绍和openai标准接口 agent的核心是其代理协同工作的能力。每个代理都有其特定的能力和角色&#xff0c;你需要定义代理之间的互动行为&#xff0c;即当一个代理从另一个代理收到消息时该如何回复。 agent目前大多使用openai标准接口调用LLM服务&#xff0c;说明如下。…

Java集合基础知识总结(绝对经典)

List接口继承了Collection接口&#xff0c;定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理&#xff0c;还添加了面向位置的操作。 实际上有两种list&#xff1a;一种是基本的ArrayList&#xff0c;其优点在于随机访问元素&#xff0c;另一种是更强大的L…

PYTHON 自动化办公:更改图片后缀

1、前言 在之前的文章中&#xff0c;介绍了图片的压缩技术&#xff0c;这里讲解如何利用python批量将图片改为指定后缀的格式。当然&#xff0c;也可以为深度学习批量更改文件后缀&#xff0c;例如在分割中&#xff0c;可能需要img和mask的图片名称完全一致等等 PYTHON 自动化…

掌握FilterOutputStream类!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java IO相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

谈谈Darknet53为啥这么难训练

在我使用Imagenet2012对Darknet53进行预训练的时候&#xff0c;往往训练到一半&#xff0c;就会出现过拟合&#xff0c;导致无法继续向下训练&#xff0c;尝试了很多方法&#xff0c;最后发现问题出现在下图红框的部分。 得出这个结论是因为当我使用Resnet中&#xff0c;包含有…