Spring相关面试题(三)

news2025/1/2 3:24:37
29 如何在所有的BeanDefinition注册完成后,进行扩展

Bean工厂的后置处理器,在所有的Bean注册完成后,就被执行。

public class A implements BeanFactoryPostProcessor {
    private String name = "a class";
    private B b;
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
        //在所有的BeanDefinition注册完成之后调用
        for (String beanDefinitionName : configurableListableBeanFactory.getBeanDefinitionNames()) {
            System.out.println(beanDefinitionName);
        }
    }
}

30 Bean的生产顺序由什么决定的?

创建一个ApplicationContext,会调用refresh方法,再去调用finishBeanFactoryInitialization(),完成BeanFactory的初始化,创建所有的BeanDefinitionNames,是个ArrayList,按照注册顺序,进行创建,依赖关系也会影响Bean的创建顺序。

BeanDefinition的注册顺序的由来?

主要是由注解(配置)的解析顺序进行的。

  1. @Configuration

  2. @Component

  3. @Import 导入的一个类

  4. @Bean

  5. @Import——ImportBeanDefinitionRegister

也可以使用@Order来决定顺序,后面注册的会覆盖掉前面的注册的。

BeanDefinitionRegistryPostProcessor

31 Spring有哪几种配置方式?
  1. 注解 Spring 2.5 +

    1. Spring.xml

  2. XML

    1. Spring.xml <component-scan base-package=""/> @Component @Autowired

  3. 基于Java配置

    1. JavaConfig Spring 3.0+

    2. @Configuration @Component

32 JavaConfig 如何替代 Spring.XML的配置方式的

应用

  1. 以前XML

    1. Spring容器是new ClassPathXMLApplicationContext()

    2. Spring.XML

    3. <Bean scope="" >

    4. <component-scan />

    5. 引入外部属性配置文件:<property-placeHodeler resource="">

    6. 指定其他配置文件 @PropertySource("classpath:db.properties")

    7. <property name="pass" value="${mysql.password}"></property>

  2. JavaConfig

    1. Spring容器是 nw AnnotationConfigApplicationContext(javaConfig.class)

    2. JavaConfig.java ===> @Configuration

    3. @Bean @Scope @Lazy

    4. @ComponentScan("")

    5. 引入外部配置文件@PropertySource() 外部属性配置文件。

    6. @Import 使用配置比较灵活 @Import({Config.class})

    7. @Value("${mysql.pass}")

源码

总的来说,整体的执行步骤都是一样的

即:读取配置文件或配置文件XML,解析配置文件或者XML配置文件,后面的步骤就是相同的,注册BeanDefinition,生产Bean.

29 如何在所有的BeanDefinition注册完成后,进行扩展

Bean工厂的后置处理器,在所有的Bean注册完成后,就被执行。

public class A implements BeanFactoryPostProcessor {
    private String name = "a class";
    private B b;
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
        //在所有的BeanDefinition注册完成之后调用
        for (String beanDefinitionName : configurableListableBeanFactory.getBeanDefinitionNames()) {
            System.out.println(beanDefinitionName);
        }
    }
}

30 Bean的生产顺序由什么决定的?

创建一个ApplicationContext,会调用refresh方法,再去调用finishBeanFactoryInitialization(),完成BeanFactory的初始化,创建所有的BeanDefinitionNames,是个ArrayList,按照注册顺序,进行创建,依赖关系也会影响Bean的创建顺序。

BeanDefinition的注册顺序的由来?

主要是由注解(配置)的解析顺序进行的。

  1. @Configuration

  2. @Component

  3. @Import 导入的一个类

  4. @Bean

  5. @Import——ImportBeanDefinitionRegister

也可以使用@Order来决定顺序,后面注册的会覆盖掉前面的注册的。

BeanDefinitionRegistryPostProcessor

31 Spring有哪几种配置方式?
  1. 注解 Spring 2.5 +

    1. Spring.xml

  2. XML

    1. Spring.xml <component-scan base-package=""/> @Component @Autowired

  3. 基于Java配置

    1. JavaConfig Spring 3.0+

    2. @Configuration @Component

32 JavaConfig 如何替代 Spring.XML的配置方式的

应用

  1. 以前XML

    1. Spring容器是new ClassPathXMLApplicationContext()

    2. Spring.XML

    3. <Bean scope="" >

    4. <component-scan />

    5. 引入外部属性配置文件:<property-placeHodeler resource="">

    6. 指定其他配置文件 @PropertySource("classpath:db.properties")

    7. <property name="pass" value="${mysql.password}"></property>

  2. JavaConfig

    1. Spring容器是 nw AnnotationConfigApplicationContext(javaConfig.class)

    2. JavaConfig.java ===> @Configuration

    3. @Bean @Scope @Lazy

    4. @ComponentScan("")

    5. 引入外部配置文件@PropertySource() 外部属性配置文件。

    6. @Import 使用配置比较灵活 @Import({Config.class})

    7. @Value("${mysql.pass}")

源码

总的来说,整体的执行步骤都是一样的

即:读取配置文件或配置文件XML,解析配置文件或者XML配置文件,后面的步骤就是相同的,注册BeanDefinition,生产Bean.

33 @Component @Controller @Repository @Service 有何区别?

Controller、Repository和Service都是基于Component注解。

@Controller 放在控制层

@Service 放在业务层

@Repository 放在数据层

提高代码可阅读性。

34 @Import有几种用法。
  1. 直接指定类(如果配置类会按配置类正常解析、如果是个普通类就会解析成Bean)

  2. 写个实现ImportSelector的实现类

    public class MyInportSelector implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{"com.xing.Import.heihei"};
        }
    }

    一次性可以注册多个。

  3. 实现ImportBeanDefinitionRegistrar,RegisterBeanDefinitions方法中,创建BeanDefinition。

35 如何让自动注入没有找到依赖Bean时不报错

@Autowired(required = false)

36 如何让找到多个依赖Bean的时候不报错

可以是在主要Bean上加入:@Primary注解。

37 @Autowired的作用

@Autowired的是自动注入,先按照类型,再按照名字注入。

38 @Autowired和@Resource的区别
  1. Autowired是Spring提供的,Resource是JDK提供的。

  2. Autowired默认根据类型匹配注入,Resource根据名字进行匹配,然后再根据类型进行匹配。

39 @Autowired注解自动装配的过程是怎样的

记住:@Autowired是通过Bean的后置处理器,进行解析的,可以用在:构造方法、普通方法、参数、字段和注解上。

  1. 核心方法:buildAutowiringMetadata

    1. 通过反射获取该类的每一个字段和方法,并且分别用 findAutowiredAnnotation方法遍历每一个字段和方法,如果有@Autowired注解修饰,则返回注解相关属性。最后这个方法返回的就是包含所有带有autowire注解修饰的一个InjectionMetadata集合。

  2. InjectionMetadata类,这个类由两部分组成: targetClass目标类和我们要获得的injectedElements集合。

  3. 实现注入逻辑:调用InjectionMetadata中的公共inject方法遍历调用protect的inject方法

  4. 调用InjectionMetadata中的公共inject

  5. 遍历调用protect的inject方法

40 @Configuration作用及原理解析

作用

  1. @Configuration用来代替xml配置方式spring.xml配置文件<bean>

  2. 但是没有@Configuration也可以配置@Bean

    1. 那加和不加有什么区别呢?

    2. 加了@Configuration会为配置类创建一个cblib动态代理(保证配置类中的@Bean是单例),@Bean方法的调用就会通过容器的getBean获取。

原理

  1. 创建Spring上下文的时候会注册一个解析配置类的处理器:ConfigurationClassPostProcessor(实现了BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor)

  2. 调用invokeBeanFactoryPostProcessor方法,就会去调用ConfigurationClassPostProcessor的对应的方法(postProcessBeanDefinitionRegistry)进行解析配置(解析配置类说白了就是去解析各种注解(@Bean,@Configuration,@Import ),就是注册BeanDefinition)

  3. ConfigurationClassPostProcessor.postProcessorBeanFactory创建cblib动态代理。

@Bean怎么保证Bean的单例的。

@Configuration如何保证@Bean单例语义?_@bean 单例-CSDN博客

  1. @Bean方法返回的对象是单例的,需要在类上加上@Configuration

41 要将一个第三方的类配置成为Bean有哪些方式
  1. @Bean

  2. @Import(DruidDataSource.class) 和@ImportSelector不能干预实例化过程。

  3. 写个类实现ImportBeanDefinitionRegistrar

    1. 实现registerBeanDefinitions

      public class index implements ImportBeanDefinitionRegistrar {
      ​
          @Override
          public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
              RootBeanDefinition A = new RootBeanDefinition(A.class);
              //拿到props values
              A.getPropertyValues().addPropertyValue("name","wangxing");
              registry.registerBeanDefinition("a",A);
          }
      }
    2. 这样可以干涉bean的创建

  4. 实现BeanDefinitionRegistryPostProcessor

    1. 也是拿到注册器,和上面一样。

  5. 后两种方法都是在SpringIOC的扩展点拿到BeanDefinitionRegistrar,然后注入BeanDefinition。

42 为什么@ComponentScan 不设置basePackage也会扫描?

因为Spring在解析@ComponentScan的时候,拿到basePackage,如果没有涉及basePackage会把当前所在类的位置,作为扫描包。

43 什么是AOP,能做什么?

AOP(Aspect - Originted Proaramming),一般称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理等。 -

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。0OP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清浙高效的逻辑单元划分。而AOP作为面向对象的一种补充,则是针对业务处理过程中的切面进行提取,已达到业务代码和公共行为代码之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

44 在Spring中AOP如何使用?

链接:Spring中使用AOP的几种方式_doaround-CSDN博客

XML方式

XML + 注解

注解方式

45 Spring AOP 中常见的名词
  1. 切面(Aspect):在Spring AOP指的就是切面类,切面类会管理着通知和切入点。

  2. 连接点(Join point) :被增强的业务方法。

  3. 通知(Advice) : 就是需要增强到业务方法中的公共代码,通知有很多种类分别可以在需要增强的业务方法不同位置进行(前置,后置,异常,返回,环绕通知)。

  4. 切入点(Pointcut):由切点表达式决定需要增强的方法,通常通过切点表达式进行。

  5. 目标对象(Target Object):增强的对象。

  6. 顾问:Advisor的一个包装,Advisor是Pointcut以及Advice的一个结合,用来管理Advice和Pointcut。

  7. 织入(Weaving) :AspectJ中独有的内容,Spring AOP :动态代理。为目标对象创建动态代理的过程叫做织入。

    1. 编译期:切面在目标类编译时被织入。AspectJ的织入编译器是以这种

    2. 类加载期:切面在目标类加载到JVM时被织入。需要特殊的类加载器之可以在目标类被引入应用之前增强该目标类的字节码。AspectJ5的加载时织入就支持以这种方式织入切面。

    3. 运行期:切面在应用运行的某个时刻被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代理对象。SpringAOP就是以这种方式织入切面。

46 Spring通知有哪些类型?

AOP:在某个特定的连接点(方法),执行的动作(代码)。

  1. 前置通知(Before)

  2. 后置通知(After)

  3. 返回通知(After-returning)

  4. 异常通知(After-throwing)

  5. 环绕通知(Around)

执行顺序

正常: 前置 -> 方法 -> 后置 -> 返回。

异常:前置 -> 方法 -> 后置 -> 异常

Spring 5.2.7 之后

正常: 前置 -> 方法 -> 返回 -> 后置

异常: 前置 -> 方法 -> 异常 -> 后置

47 SpringAOP和AspectJ AOP有什么区别?

AspectJ AOP也是一个面向切面的开源框架,如果要使用Spring中的AOP功能,需要引入对应的AspectJ AOP 依赖,但SpringAOP使用的仅仅是AspectJ AOP 的切点解析和匹配,AspectJ AOP 中的一些注解。

  • AspectJ AOP 使用的静态代理。

    • AspectJ是静态代理的增强,所谓静态代理,就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强,他会在编译阶段将Aspect(切面)织入到Java字节码中,运行的时候就是增强之后的AOP对象。

  • Spring AOP 使用的是动态代理。

    • 如果实现接口,是JDK的动态代理

    • 没有实现接口就是CGLIB实现动态代理

SpringAOP致力解决企业中开发的普遍问题,AspectJ是AOP编程的完全解决方案。还有SpringAOP的性能不如AspectJ,因为SpringAOP做的是动态代理,会在容器初始化的时候加载,会加深调用栈。

48 JDK动态代理和CGLIB动态代理的区别
  • 如果实现接口,是JDK的动态代理

    • JDK会在运行的时候,为目标类生成一个动态代理类$proxy*.class

    • 该代理类是实现了接目标类接口,并且代理类会实现接口所有的方法增强代码。

    • 调用时 通过代理类先去调用处理类进行增强,再通过反射的方式进行调用目标方法。从而实现AOP

  • 没有实现接口就是CGLIB实现动态代理

    • 并且会重写父类所有的方法增强代码,CGLIB的底层是通过ASM在运行时动态的生成目标类的一个子类。 (还有其他相关类,主要是为增强调用时效率)会生成多个

    • 调用时先通过代理类进行增强,再直接调用父类对应的方法进行调用目标方法。从而实现AOP。

      • final标记的类是无法实现CGLIB代理的。

JDK生成的快,调用慢;CGLIB生产慢,调用快,但是在JDK老版本中,CGLIB的速度会比JDK快,但是随着JDK的更新,JDK是要比CGLIB快

33 @Component @Controller @Repository @Service 有何区别?

Controller、Repository和Service都是基于Component注解。

@Controller 放在控制层

@Service 放在业务层

@Repository 放在数据层

提高代码可阅读性。

34 @Import有几种用法。
  1. 直接指定类(如果配置类会按配置类正常解析、如果是个普通类就会解析成Bean)

  2. 写个实现ImportSelector的实现类

    public class MyInportSelector implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{"com.xing.Import.heihei"};
        }
    }

    一次性可以注册多个。

  3. 实现ImportBeanDefinitionRegistrar,RegisterBeanDefinitions方法中,创建BeanDefinition。

35 如何让自动注入没有找到依赖Bean时不报错

@Autowired(required = false)

36 如何让找到多个依赖Bean的时候不报错

可以是在主要Bean上加入:@Primary注解。

37 @Autowired的作用

@Autowired的是自动注入,先按照类型,再按照名字注入。

38 @Autowired和@Resource的区别
  1. Autowired是Spring提供的,Resource是JDK提供的。

  2. Autowired默认根据类型匹配注入,Resource根据名字进行匹配,然后再根据类型进行匹配。

39 @Autowired注解自动装配的过程是怎样的

记住:@Autowired是通过Bean的后置处理器,进行解析的,可以用在:构造方法、普通方法、参数、字段和注解上。

  1. 核心方法:buildAutowiringMetadata

    1. 通过反射获取该类的每一个字段和方法,并且分别用 findAutowiredAnnotation方法遍历每一个字段和方法,如果有@Autowired注解修饰,则返回注解相关属性。最后这个方法返回的就是包含所有带有autowire注解修饰的一个InjectionMetadata集合。

  2. InjectionMetadata类,这个类由两部分组成: targetClass目标类和我们要获得的injectedElements集合。

  3. 实现注入逻辑:调用InjectionMetadata中的公共inject方法遍历调用protect的inject方法

  4. 调用InjectionMetadata中的公共inject

  5. 遍历调用protect的inject方法

40 @Configuration作用及原理解析

作用

  1. @Configuration用来代替xml配置方式spring.xml配置文件<bean>

  2. 但是没有@Configuration也可以配置@Bean

    1. 那加和不加有什么区别呢?

    2. 加了@Configuration会为配置类创建一个cblib动态代理(保证配置类中的@Bean是单例),@Bean方法的调用就会通过容器的getBean获取。

原理

  1. 创建Spring上下文的时候会注册一个解析配置类的处理器:ConfigurationClassPostProcessor(实现了BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor)

  2. 调用invokeBeanFactoryPostProcessor方法,就会去调用ConfigurationClassPostProcessor的对应的方法(postProcessBeanDefinitionRegistry)进行解析配置(解析配置类说白了就是去解析各种注解(@Bean,@Configuration,@Import ),就是注册BeanDefinition)

  3. ConfigurationClassPostProcessor.postProcessorBeanFactory创建cblib动态代理。

@Bean怎么保证Bean的单例的。

@Configuration如何保证@Bean单例语义?_@bean 单例-CSDN博客

  1. @Bean方法返回的对象是单例的,需要在类上加上@Configuration

41 要将一个第三方的类配置成为Bean有哪些方式
  1. @Bean

  2. @Import(DruidDataSource.class) 和@ImportSelector不能干预实例化过程。

  3. 写个类实现ImportBeanDefinitionRegistrar

    1. 实现registerBeanDefinitions

      public class index implements ImportBeanDefinitionRegistrar {
      ​
          @Override
          public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
              RootBeanDefinition A = new RootBeanDefinition(A.class);
              //拿到props values
              A.getPropertyValues().addPropertyValue("name","wangxing");
              registry.registerBeanDefinition("a",A);
          }
      }
    2. 这样可以干涉bean的创建

  4. 实现BeanDefinitionRegistryPostProcessor

    1. 也是拿到注册器,和上面一样。

  5. 后两种方法都是在SpringIOC的扩展点拿到BeanDefinitionRegistrar,然后注入BeanDefinition。

42 为什么@ComponentScan 不设置basePackage也会扫描?

因为Spring在解析@ComponentScan的时候,拿到basePackage,如果没有涉及basePackage会把当前所在类的位置,作为扫描包。

43 什么是AOP,能做什么?

AOP(Aspect - Originted Proaramming),一般称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理等。 -

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。0OP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清浙高效的逻辑单元划分。而AOP作为面向对象的一种补充,则是针对业务处理过程中的切面进行提取,已达到业务代码和公共行为代码之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

44 在Spring中AOP如何使用?

链接:Spring中使用AOP的几种方式_doaround-CSDN博客

XML方式

XML + 注解

注解方式

45 Spring AOP 中常见的名词
  1. 切面(Aspect):在Spring AOP指的就是切面类,切面类会管理着通知和切入点。

  2. 连接点(Join point) :被增强的业务方法。

  3. 通知(Advice) : 就是需要增强到业务方法中的公共代码,通知有很多种类分别可以在需要增强的业务方法不同位置进行(前置,后置,异常,返回,环绕通知)。

  4. 切入点(Pointcut):由切点表达式决定需要增强的方法,通常通过切点表达式进行。

  5. 目标对象(Target Object):增强的对象。

  6. 顾问:Advisor的一个包装,Advisor是Pointcut以及Advice的一个结合,用来管理Advice和Pointcut。

  7. 织入(Weaving) :AspectJ中独有的内容,Spring AOP :动态代理。为目标对象创建动态代理的过程叫做织入。

    1. 编译期:切面在目标类编译时被织入。AspectJ的织入编译器是以这种

    2. 类加载期:切面在目标类加载到JVM时被织入。需要特殊的类加载器之可以在目标类被引入应用之前增强该目标类的字节码。AspectJ5的加载时织入就支持以这种方式织入切面。

    3. 运行期:切面在应用运行的某个时刻被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代理对象。SpringAOP就是以这种方式织入切面。

46 Spring通知有哪些类型?

AOP:在某个特定的连接点(方法),执行的动作(代码)。

  1. 前置通知(Before)

  2. 后置通知(After)

  3. 返回通知(After-returning)

  4. 异常通知(After-throwing)

  5. 环绕通知(Around)

执行顺序

正常: 前置 -> 方法 -> 后置 -> 返回。

异常:前置 -> 方法 -> 后置 -> 异常

Spring 5.2.7 之后

正常: 前置 -> 方法 -> 返回 -> 后置

异常: 前置 -> 方法 -> 异常 -> 后置

47 SpringAOP和AspectJ AOP有什么区别?

AspectJ AOP也是一个面向切面的开源框架,如果要使用Spring中的AOP功能,需要引入对应的AspectJ AOP 依赖,但SpringAOP使用的仅仅是AspectJ AOP 的切点解析和匹配,AspectJ AOP 中的一些注解。

  • AspectJ AOP 使用的静态代理。

    • AspectJ是静态代理的增强,所谓静态代理,就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强,他会在编译阶段将Aspect(切面)织入到Java字节码中,运行的时候就是增强之后的AOP对象。

  • Spring AOP 使用的是动态代理。

    • 如果实现接口,是JDK的动态代理

    • 没有实现接口就是CGLIB实现动态代理

SpringAOP致力解决企业中开发的普遍问题,AspectJ是AOP编程的完全解决方案。还有SpringAOP的性能不如AspectJ,因为SpringAOP做的是动态代理,会在容器初始化的时候加载,会加深调用栈。

48 JDK动态代理和CGLIB动态代理的区别
  • 如果实现接口,是JDK的动态代理

    • JDK会在运行的时候,为目标类生成一个动态代理类$proxy*.class

    • 该代理类是实现了接目标类接口,并且代理类会实现接口所有的方法增强代码。

    • 调用时 通过代理类先去调用处理类进行增强,再通过反射的方式进行调用目标方法。从而实现AOP

  • 没有实现接口就是CGLIB实现动态代理

    • 并且会重写父类所有的方法增强代码,CGLIB的底层是通过ASM在运行时动态的生成目标类的一个子类。 (还有其他相关类,主要是为增强调用时效率)会生成多个

    • 调用时先通过代理类进行增强,再直接调用父类对应的方法进行调用目标方法。从而实现AOP。

      • final标记的类是无法实现CGLIB代理的。

JDK生成的快,调用慢;CGLIB生产慢,调用快,但是在JDK老版本中,CGLIB的速度会比JDK快,但是随着JDK的更新,JDK是要比CGLIB快

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

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

相关文章

如何使用ig507金融数据库的股票接口,股票API来获取MACD指标

一、MACD指标简介 MACD&#xff08;Moving Average Convergence Divergence&#xff0c;移动平均收敛/发散&#xff09;是一种趋势跟踪动量指标&#xff0c;用于分析股票或其他金融产品的价格趋势。MACD由两部分组成&#xff1a;差离值&#xff08;DIF&#xff09;和信号线&am…

麒麟系统安装MySQL

搞了一整天&#xff0c;终于搞定了&#xff0c;记录一下。 一、背景 项目的原因&#xff0c;基于JeecgBoot开发的系统需要国产化支持&#xff0c;这就需要在电脑上安装MySQL等支撑软件。 国产化项目的操作系统多是麒麟系统&#xff0c;我的系统如下&#xff1a; arm64架构。…

杀手级AI应用前瞻,一文带你了解8个ai大语言模型

一、大模型解析&#xff08;LLM、MLLM、GLM&#xff09; 基础概念&#xff1a; Transformer&#xff1a;ChatGPT的核心结构是Transformer&#xff0c;这是一种采用自注意力机制的深度学习模型。通过自注意力机制&#xff0c;Transformer能够理解输入文本的上下文信息&#xf…

当中年男人的觉越来越少 他突然半夜买台电脑(30+岁仿真工程师买电脑心得)

仿真工程师的购机分析&#xff0c;游戏本、移动工作站还是台式机&#xff1f; 认清自己的需求。 现状。现在有一个19年买的华为matebook14、i5第八代低压U&#xff0c;8G内存。还好有SSD当虚拟内存&#xff0c;要不开网页估计都得卡住。媳妇还有台i7、16G的matebook&#xff…

劳易测安全技术速递:滑动式输送系统出入口安全防护

汽车总装车间的滑动式输送系统用于搬运可以调整高度和位置的工作平台&#xff0c;大幅提升了汽车装配线的作业效率。但传统的安全解决方案在面对物料尺寸变动时&#xff0c;往往无法精准检测到人员位置&#xff0c;导致安全隐患。 针对滑动式输送系统出入口的安全防护&#xff…

OpenCV使用forEach的方式来遍历像素值

opencv 4.x新增了forEach的方式遍历像素值&#xff0c;比传统方式略快一些。因为它本身是使用多线程并行的方法来遍历的。从opencv源码能看到这句话&#xff1a; parallel_for_(cv::Range(0, LINES), PixelOperationWrapper(reinterpret_cast<Mat_<_Tp>*>(this), …

Spring框架学习笔记(本地印象笔记搬运)(整理中)

1、背景 Spring作为Java Web开发使用最频繁的框架&#xff0c;具有非常高的学习价值&#xff0c;在Spring框架源码中包含了很多设计模式&#xff08;单例、原型、代理、观察者等&#xff09;&#xff0c;读懂这些源码有助于拓宽开发思路&#xff0c;同时也能提高后端排查错误的…

QQ等级评估源码+软件

今天&#xff0c;我将和大家探讨一个与直播、撸礼物相关的主题&#xff0c;它涉及到的是一种特殊的软件及其源码——QQ等级评估工具。在我们的生活中&#xff0c;直播已经成为了一种越来越流行的娱乐方式。不论是音乐会、电子竞技&#xff0c;还是日常生活分享&#xff0c;你都…

使用AI技术实现语言练习

使用人工智能技术实现语言场景练习&#xff0c;可以有效地提高学习者的语言能力&#xff0c;包括口语、听力、阅读和写作。以下是一些常见的应用场景。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 口语练习 虚拟对话伙伴: 利用…

基于最优滑膜控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 最优滑模面的选取 假定系统初始位于滑模面上&#xff0c;可得&#xff1a; 通过设计c(t)使如下积分性能指标达到最小: T为到达滑模面的终值时间&#xff0c;求解方程: a为系统初始条件参数。设cmc(0)为c(t)变…

软件协同开发是一种通过团队合作来创建软件的开发方法

软件协同开发是一种通过团队合作来创建软件的开发方法。与传统的瀑布模型相比&#xff0c;软件协同开发强调团队成员之间的合作和沟通&#xff0c;以实现更高效的开发过程和更优质的软件产品。 在软件协同开发中&#xff0c;团队成员通过一系列工具和技术来协同工作。这些工具…

Ubuntu-22.04 安装Confulence

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

昇思25天学习打卡营第4天|onereal

今天学习的内容是&#xff1a;ResNet50迁移学习 以下内容拷贝至教程&#xff0c;实话实话看不懂&#xff0c;迷迷糊糊都运行jupyter里的代码。走完程序&#xff0c;训练生成了一些图片。 ResNet50迁移学习 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少…

[MYSQL] MYSQL表的操作

前言 由图可以看出,表是库的一部分,所以有库才能使用表 show databases; 查看已有的库 create database db_name ; 创建库 使用 use bd_name 使用库,之后对标进行增删查改就只会操作这个库里的而不影响其他库 创建表 create table [if not exists] table_name( d…

vue的学习--day2

如有错误&#xff0c;烦请指正~ 目录 一、什么是单页面应用程序 二、使用工具&#xff1a;node.js 三、工具链 易错点 一、什么是单页面应用程序 多个组件&#xff08;例如登录、注册等以vue结尾的都叫做组件&#xff09;在一个页面显示&#xff0c;叫单页面应用…

如何用亚马逊合作伙伴网络快速上线跨境电商

目前跨境电商已成为行业发展主流&#xff0c;如何快速、低成本打造品牌海外独立站和智能客服营销中心、构建全链路跨境电商体系是出海电商商家都会遇到的难题。亚马逊云科技凭借与亚马逊电商平台易于集成的先天优势成为首选的电商解决方案平台。本文介绍了如何用亚马逊云科技平…

ONLYOFFICE8.1新版本桌面编辑器测评

什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一套功能强大的文档编辑器&#xff0c;支持编辑处理文本文档、电子表格、演示文稿、可填写的表单、PDF&#xff0c;可多人在线协作&#xff0c;支持 AI 集成。 该套件可在 Windows、Linux、Android 和 iOS上使用&#xff0c;包括网页…

【Hive中常见的优化手段----数据采集!Join 优化!Hive索引!数据倾斜!mapreduce本地模式!map和reduce数量调整!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天主要和大家分享一下Hive中常见的优化手段----数据采集&#xff01;常见的Join 优化有哪几种&#xff01;什么是Hive索引&#xff01;数据怎么发生倾斜&#xff01;什么是mapreduce的本…

2024年6月24日 (周一) 叶子游戏新闻

图吧工具箱: 全名图拉丁吧硬件检测工具箱,是开源、免费、绿色、纯净的硬件检测工具合集,专为图钉及所有DIY爱好者制作,包含常用硬件测试和检测工具,月工JS必备! 土豆录屏: 免费、无录制时长限制、无水印的录屏软件 高手在民间 粉丝玩家打造精美《黄金树幽影》巨大插画虽然不是专…

私接路由器导致部分终端(电脑、手机等)无法上网问题分析

目录 【1】私接路由器场景 【2】进行网络基本配置&#xff0c;模拟终端可以正常上网 【2.1】Http-Server配置 【2.2】ISP配置 【2.3】R-hefa配置 【2.4】Client1配置 【2.5】PC配置 【2.6】测试验证上网是否正常 【3】私接路由器后再测试验证公司内网各终端访问外网是…