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

Spring - Spring 注解相关面试题总结

文章目录

      • 01. Spring 配置方式有几种?
      • 02. Spring 如何实现基于xml的配置方式?
      • 03. Spring 如何实现基于注解的配置?
      • 04. Spring 如何基于注解配置bean的作用范围?
      • 05. Spring @Component, @Controller, @Repository, @Service 注解有何区别?
      • 06. Spring 如何实现bean依赖注入注解开发?
      • 07. Spring @Value注解注入基本类型数据?
      • 08. Spring @Autowired注解注入引用类型数据?
      • 09. Spring @Autowired注解自动装配的过程是怎样的?
      • 10. Spring @Autowired注解注入多个匹配类型的Bean?
      • 11. Spring @Qualifier 注解的作用?
      • 12. Java @Resource 注解的作用?
      • 13. Spring @Autowired注解的使用方式有哪些?
      • 14. Spring @Autowired和 Java @Resource之间的区别?
      • 15. Spring @Bean注解实现非自定义bean的注入?
      • 16. Spring 基于配置类的注解开发?
      • 17. Spring 如何开启基于注解的自动写入?
      • 18. Spring 基于Java的注解配置是什么?
      • 19. Spring @Primary注解的作用?
      • 20. 一个类不加任何注解和配置会被Spring容器注册吗?
      • 21. 一个类不加任何注解和配置会依赖注入吗?

01. Spring 配置方式有几种?

Spring除了xml配置文件进行配置之外,还可以使用注解方式进行配置,注解方式慢慢成为xml配置的替代方案。

(1) 基于XML的配置方式:Spring的诞生
(2) 基于注解的配置方式:2.5时代,Spring的Bean配置可以使用注解完成
(3) 基于Java的配置方式:3.0时代,Spring其他配置也可以使用注解完成,我们进入全注解时代

02. Spring 如何实现基于xml的配置方式?

使用XML文件来配置Spring应用程序,包括Bean的定义、依赖关系、AOP等。这是Spring最早的配置方式,也是最常用的一种方式。

public class UserDaoImpl implements UserDao{@Overridepublic void show(){System.out.println("执行show....");}
}public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao){this.userDao = userDao;}
}
<bean id="userService" class="com.service.impl.UserServiceImpl"><property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/>

03. Spring 如何实现基于注解的配置?

第一步:使用@Component注解将其标记在一个类上,表示该类是一个Spring容器中的Bean。可以使用value属性指定Bean的名称,如果没有指定名称,则默认使用类名的首字母小写作为Bean的名称。

@Component
public class UserDaoImpl implements UserDao{@Overridepublic void show(){System.out.println("执行show....");}
}@Component
public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao){this.userDao = userDao;}
}

第二步:使用<context:component-scan> 标签用于指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<!--注解组件扫描-->
<context:component-scan base-package="com.hh"/>

使用context:component-scan指定了要扫描的包路径为"com.hh",这样就可以自动扫描该包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

第三步:测试

public class ApplicationContextTest {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = applicationContext.getBean(UserDao.class);userDao.show();System.out.println(userDao);}
}

04. Spring 如何基于注解配置bean的作用范围?

在这里插入图片描述

@Scope(value = "singleton")
@Lazy(value = false)
@Component
public class UserDaoImpl implements UserDao{@Overridepublic void show(){System.out.println("执行show....");}
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>

05. Spring @Component, @Controller, @Repository, @Service 注解有何区别?

在这里插入图片描述

@Component、@Controller、@Repository和@Service都是Spring框架中的注解,用于标记一个类为Spring容器中的Bean,用于替代<bean>标签。它们的区别在于使用场景和语义上的差异。

@Component注解:用于标记一个类为Spring容器中的Bean,通常用于标记中立的组件,没有明确的角色。
@Controller注解:用于标记一个类为Spring MVC中的Controller,通常用于处理HTTP请求和响应。
@Repository注解:用于标记一个类为数据访问层(DAO)中的组件,通常用于访问数据库或其他持久化存储。
@Service注解:用于标记一个类为业务逻辑层(Service)中的组件,通常用于封装业务逻辑和调用DAO层的方法。

这些注解的作用是相似的,都是用于标记一个类为Spring容器中的Bean,并且可以使用@Autowired注解进行自动装配。但是它们的语义和使用场景是不同的,使用不同的注解可以更加清晰地表达代码的意图,也有助于代码的维护和扩展。

需要注意的是,@Controller、@Repository和@Service注解都是@Component注解的派生注解,它们都可以被视为@Component注解的特殊情况。因此,如果一个类没有明确的角色,可以使用@Component注解来标记。

06. Spring 如何实现bean依赖注入注解开发?

在这里插入图片描述

07. Spring @Value注解注入基本类型数据?

Spring中的@Value注解用于将属性值注入到Spring管理的Bean中。它可以用于注入简单的值,如字符串、数字和布尔值,也可以用于注入复杂的对象,如数组、集合和自定义对象。

@Value注解可以用在字段、方法和构造函数上。它支持SpEL表达式,可以从配置文件、环境变量、系统属性等多种来源获取属性值。

@Component
public class UserDaoImpl implements UserDao{public UserDaoImpl(){}// 用于字段上@Value("zhangsan")private String username;// 从配置文件中取值@Value("${jdbc.driver}")private String driver;private String password;private int age;// 用于方法上@Value("lisi")public void setPassword(String password){this.password = password;}// 用于构造方法上public UserDaoImpl(@Value("18") int age){this.age = age;}@Overridepublic void show(){System.out.println(username);System.out.println(password);System.out.println(age);System.out.println(driver);}
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>
<context:property-placeholder location="jdbc.properties"/>

在上面的示例中,@Value注解用于将username的属性值注入到username字段中,将配置文件中的jdbc.driver属性值注入到driver字段中。

08. Spring @Autowired注解注入引用类型数据?

@Autowired注解是Spring框架中的一个注解,用于自动装配Bean。它可以自动在Spring容器中查找匹配类型的Bean,并将其注入到目标对象中。@Autowired注解也可以用于构造函数、Setter方法和字段上,用于不同的自动装配方式。

下面是一个使用@Autowired注解的示例:

@Component
public class MyController {@Autowiredprivate MyService myService;// ...
}

在上面的示例中,我们使用@Autowired注解自动装配了MyService对象,并将其注入到MyController中。这样,我们就可以在MyController中使用MyService对象了。

09. Spring @Autowired注解自动装配的过程是怎样的?

Spring的@Autowired注解是一种自动装配的方式,它可以自动将一个Bean的依赖项注入到另一个Bean中。@Autowired注解的自动装配过程如下:

① Spring容器在初始化Bean时,会扫描所有的Bean,查找与依赖项类型相同的Bean。

② 如果找到了与依赖项类型相同的Bean,则将其注入到目标Bean中。如果找到了多个与依赖项类型相同的Bean,则会寻找与依赖项名称相同的Bean。

③ 如果找到了与依赖项名称相同的Bean,则将其注入到目标Bean中。如果找到了多个与依赖项名称相同的Bean,则会抛出异常。

④ 如果没有找到与依赖项名称相同的Bean,则会抛出异常。

需要注意的是,@Autowired注解默认使用byType自动装配模式,如果需要使用byName自动装配模式,可以结合@Qualifier注解来使用。@Qualifier注解可以指定要注入的Bean的名称,以解决byName自动装配模式下的歧义性问题。

另外,@Autowired注解还可以用于构造函数、Setter方法和字段上,以实现不同的自动装配方式。在构造函数和Setter方法上使用@Autowired注解,可以实现构造函数和Setter方法的自动装配;在字段上使用@Autowired注解,可以实现字段的自动装配。

10. Spring @Autowired注解注入多个匹配类型的Bean?

容器中存在3个UserDao类型的bean :

@Repository 
public class UserDaoImpl implements UserDao{
}@Repository 
public class UserDaoImpl1 implements UserDao{
}@Repository 
public class UserDaoImpl2 implements UserDao{
}
@Component
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>

因为容器中存在多个与依赖项类型相同,依赖项名称相同的bean,因此抛出异常:

在这里插入图片描述

此时如果想要成功注入,可以指定容器中依赖项bean的名称:

@Repository("userDao")
public class UserDaoImpl implements UserDao{
}@Repository("userDao1")
public class UserDaoImpl1 implements UserDao{
}@Repository("userDao2")
public class UserDaoImpl2 implements UserDao{
}
@Component
public class UserServiceImpl implements UserService {// 存在多个类型相同的bean时,根据名称注入,属性名称和bean的名称相同即可@Autowiredprivate UserDao userDao;
}
@Component
public class UserServiceImpl implements UserService {// 存在多个类型相同的bean时,根据名称注入,属性名称和bean的名称相同即可@Autowiredprivate UserDao userDao1;
}

11. Spring @Qualifier 注解的作用?

@Qualifier注解是Spring框架中的一个注解,用于指定要注入的Bean的名称。它通常与@Autowired注解一起使用,用于解决自动装配时存在多个匹配类型的Bean的问题。

容器中存在3个类型相同的bean,名称分别为userDao、userDao1、userDao2

@Repository("userDao")
public class UserDaoImpl implements UserDao{
}@Repository("userDao1")
public class UserDaoImpl1 implements UserDao{
}@Repository("userDao2")
public class UserDaoImpl2 implements UserDao{
}
@Component
public class UserServiceImpl implements UserService {// 存在多个类型相同的bean时,根据名称注入,属性名称和bean的名称可以不同// 使用@Qualifier指定注入bean的名称@Autowired@Qualifier("userDao1")private UserDao userDao;
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>

@Qualifier注解也可以用于构造函数、Setter方法和字段上,用于不同的自动装配方式。

12. Java @Resource 注解的作用?

@Resource注解是Java EE中的一个注解,用于自动装配Bean。它可以自动在Java EE容器中查找匹配名称或类型的Bean,并将其注入到目标对象中。

使用@Resource注解时,可以指定要注入的Bean的名称或类型。如果指定了名称,则容器会查找名称匹配的Bean进行注入;如果没有指定名称,则容器会查找类型匹配的Bean进行注入。如果容器中存在多个匹配的Bean,则会抛出异常。

下面是一个使用@Resource注解的示例:

@Repository("userDao")
public class UserDaoImpl implements UserDao{
}@Repository("userDao1")
public class UserDaoImpl1 implements UserDao{
}@Repository("userDao2")
public class UserDaoImpl2 implements UserDao{
}
@Component
public class UserServiceImpl implements UserService {@Resource(name="userDao1")private UserDao userDao;
}
<context:component-scan base-package="com.hh"/>

需要注意的是,@Resource注解只能用于字段和Setter方法上,不能用于构造函数上。

13. Spring @Autowired注解的使用方式有哪些?

@Autowired注解可以用于构造函数、Setter方法和字段上,用于不同的自动装配方式。通常情况下,我们会在字段上使用@Autowired注解进行自动装配。

@Repository("userDao")
public class UserDaoImpl implements UserDao{
}@Repository("userDao1")
public class UserDaoImpl1 implements UserDao{
}@Repository("userDao2")
public class UserDaoImpl2 implements UserDao{
}
@Component
public class UserServiceImpl implements UserService {private UserDao userDao;// 根据参数的类型进行匹配,如果类型相同,则再根据参数的名称注入@Autowiredpublic void setUserDao(UserDao userDao2){System.out.println(userDao2);}// 根据参数的类型进行匹配,将容器中UserDao类型的bean注入到集合userDaoList中@Autowiredpublic void setXXX(List<UserDao> userDaoList){System.out.println(userDaoList);}
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>

com.dao.impl.UserDaoImpl2@62bd765
[com.dao.impl.UserDaoImpl@44a664f2, com.dao.impl.UserDaoImpl1@7f9fcf7f, com.dao.impl.UserDaoImpl2@62bd765]

14. Spring @Autowired和 Java @Resource之间的区别?

Spring框架中的@Autowired注解和Java EE中的@Resource注解都是用于自动装配Bean的注解,它们的作用类似,但是在使用方式和功能上有一些区别。

(1) 使用方式:@Autowired注解可以用于构造函数、Setter方法和字段上,而@Resource注解只能用于字段和Setter方法上。

(2) 自动装配方式:@Autowired注解默认是按照类型进行自动装配的,如果容器中存在多个匹配类型的Bean,可以使用@Qualifier注解指定Bean的名称。而@Resource注解默认是按照名称进行自动装配的,如果指定了名称,则容器会查找名称匹配的Bean进行注入;如果没有指定名称,则容器会查找类型匹配的Bean进行注入。

(3) 作用范围:@Autowired注解是Spring框架中的注解,只能用于Spring应用程序中;而@Resource注解是Java EE中的注解,可以用于Java EE应用程序中。

(4) 兼容性:@Autowired注解是Spring框架中的注解,不兼容Java EE应用程序;而@Resource注解是Java EE中的注解,可以与Spring框架进行集成。

需要注意的是,@Autowired注解和@Resource注解都可以用于自动装配Bean,但是在使用时需要根据具体的场景进行选择。如果是在Spring应用程序中使用,建议使用@Autowired注解;如果是在Java EE应用程序中使用,建议使用@Resource注解。

15. Spring @Bean注解实现非自定义bean的注入?

@Component
public class OtherBean {@Bean("dataSource")public DataSource dataSource(){DruidDataSource dataSource = new DruidDataSource();return dataSource;}
}

用指定Spring容器扫描的包路径。它可以自动扫描指定包及其子包下的所有类,并将标记为@Component、@Controller、@Service、@Repository等注解的类注册为Spring容器中的Bean。

<context:component-scan base-package="com.hh"/>
<context:property-placeholder location="jdbc.properties"/>

如果不加@Component注解,那么OtherBean就不会被Spring容器扫描注册,dataSource也不会注册为Spring容器的bean了。

如果@Bean工厂方法需要参数的话,则有如下几种注入方式:
1、使用@Autowired 根据类型自动进行Bean的匹配,@Autowired可以省略 ;
2、使用@Qualifier 根据名称进行Bean的匹配;
3、使用@Value 根据名称进行普通数据类型匹配。

@Component
public class OtherBean {@Bean("dataSource")public DataSource dataSource(@Value("${jdbc.username}") String username,@Qualifier("userDao2") UserDao userDao,UserService userService){System.out.println(username);System.out.println(userDao);return new DruidDataSource();}
}
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

16. Spring 基于配置类的注解开发?

<context:property-placeholder location="classpath:jdbc.properties"/>
<context:component-scan base-package="com.itheima"/>
<import resource="classpath:beans.xml"/>

@Component等注解替代了<bean>标签,但是像<import><context:componentScan> 等非<bean> 标签怎
样去使用注解替代呢?

@ComponentScan(basePackages = "com.hh")
@PropertySource("classpath:jdbc.properties")
@Configuration
public class AppConfig {}

<bean>标签以外的标签,一般都是在配置类上使用注解完成的:

① @Configuration 注解来标记一个类为配置类,替代原有xml配置文件,该注解第一个作用是标识该类是一个配置类,第二个作用是具备@Component作用;

② @ComponentScan 组件扫描配置;

  • 指定一个或多个包名:扫描指定包及其子包下使用注解的类;
  • 不配置包名:扫描当前@componentScan注解配置类所在包及其子包下的类;

③ @PropertySource 注解用于加载外部properties资源配置;

④ @Import 用于加载其他配置类;

17. Spring 如何开启基于注解的自动写入?

在Spring中,可以通过在配置类上添加@ComponentScan注解来开启基于注解的自动装配。@ComponentScan注解会扫描指定的包及其子包中的所有类,将其中被@Component、@Service、@Repository、@Controller等注解标记的类自动注册为Bean。

以下是一个示例:

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {// 配置其他Bean
}

在上面的示例中,@ComponentScan注解指定了要扫描的包为com.example,Spring容器会自动扫描该包及其子包中的所有类,并将其中被@Component、@Service、@Repository、@Controller等注解标记的类自动注册为Bean。

需要注意的是,开启基于注解的自动装配时,需要确保被注解标记的类已经被正确地扫描到,并且注解的作用范围和生命周期符合预期。如果出现了无法自动装配的情况,可以通过调整@ComponentScan注解的参数或添加其他注解来解决问题。

18. Spring 基于Java的注解配置是什么?

基于Java的Spring注解配置是一种使用Java代码来配置Spring应用程序的方式,它使用注解来代替传统的XML配置文件。通过使用注解,我们可以更加简洁和直观地配置Spring应用程序,同时也可以减少配置文件的数量和复杂度。

在基于Java的Spring注解配置中,我们可以使用一些特定的注解来配置Spring应用程序,例如:

@Configuration:用于标记配置类,相当于传统的XML配置文件。
@Bean:用于标记方法,表示该方法返回的对象将被注册为Spring容器中的一个Bean。
@ComponentScan:用于自动扫描指定包下的所有组件,并将其注册为Spring容器中的Bean。
@Autowired:用于自动装配Bean,可以在需要使用Bean的地方直接使用该注解进行注入。

下面是一个简单的基于Java的Spring注解配置的示例:

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}@Beanpublic MyController myController() {return new MyControllerImpl(myService());}
}

在上面的示例中,我们使用@Configuration注解标记了一个配置类,并使用@ComponentScan注解自动扫描了com.example包下的所有组件。同时,我们还使用@Bean注解标记了两个方法,分别返回MyService和MyController对象,并将其注册为Spring容器中的Bean。最后,我们在MyController的构造函数中使用@Autowired注解自动装配了MyService对象。

19. Spring @Primary注解的作用?

在 Spring 中,当存在多个相同类型的 Bean 时,如果没有指定优先级或者限定符,Spring 将无法确定应该使用哪个 Bean。这时可以使用 @Primary 注解来指定一个 Bean 为首选 Bean,当存在多个相同类型的 Bean 时,Spring 将优先选择被 @Primary 注解标记的 Bean。

public interface UserDao {void show();
}@Repository
public class UserDaoImpl implements UserDao{@Overridepublic void show() {System.out.println("UserDaoImpl....");}
}@Repository
@Primary
public class UserDaoImpl2 implements UserDao {@Overridepublic void show() {System.out.println("UserDaoImpl2....");}
}
@Service
public class UserServiceImpl {@Autowiredprivate UserDao userDao;public UserServiceImpl(UserDao userDao){this.userDao = userDao;}public void test(){userDao.show();}
}

在上面的示例中,UserDaoImpl2 类被标记为 @Primary,表示它是首选的 Bean。当我们在其他组件中注入 UserDao 类型的 Bean 时,Spring 将优先选择 UserDaoImpl2 类型的 Bean:

@ComponentScan(basePackages = "com.hh")
@Configuration
public class AppConfig {}
public class ApplicationContextTest {public static void main(String[] args) throws Exception {AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);UserServiceImpl userService = (UserServiceImpl)applicationContext.getBean("userServiceImpl");userService.test();}
}

UserDaoImpl2…

AnnotationConfigApplicationContext 是 Spring 框架中的一个应用上下文(ApplicationContext)实现,它可以通过 Java 配置类来加载 Spring 应用程序上下文。

在使用 AnnotationConfigApplicationContext 时,我们可以通过传入一个或多个 Java 配置类的 Class 对象来加载 Spring 应用程序上下文。这些配置类中可以包含 @Configuration、@ComponentScan、@Import 等注解,用于配置 Spring 应用程序上下文中的 Bean。

20. 一个类不加任何注解和配置会被Spring容器注册吗?

如果一个类没有任何注解和配置,它不会被Spring容器自动注册。Spring容器只会自动扫描带有特定注解的类,例如@Component、@Service、@Controller、@Repository等。如果一个类没有这些注解,也没有在配置文件中进行手动配置,那么它就不会被Spring容器注册。

21. 一个类不加任何注解和配置会依赖注入吗?

如果一个类没有任何注解和配置,它不会被Spring容器自动注册,也就不会进行依赖注入。依赖注入是通过Spring容器来实现的,只有被Spring容器管理的Bean才能进行依赖注入。如果一个类没有被Spring容器管理,那么它就无法进行依赖注入。因此,如果想要进行依赖注入,必须要将类注册到Spring容器中,可以通过在类上添加@Component、@Service、@Controller、@Repository等注解来实现。

public class I18nUtils {private static MessageSource messageSource;@Autowiredpublic void setMessageSource(MessageSource messageSource) {I18nUtils.messageSource = messageSource;}public static String i18n(String code, Object... args) {return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());}
}

I18nUtils类没有加注解bean的注解,也就不会被Spring容器注册,因此messageSource即使使用了@Autowired注解也不会被注入,@Autowired注解只有在Spring Bean内才会生效。

相关文章:

Spring - Spring 注解相关面试题总结

文章目录01. Spring 配置方式有几种&#xff1f;02. Spring 如何实现基于xml的配置方式&#xff1f;03. Spring 如何实现基于注解的配置&#xff1f;04. Spring 如何基于注解配置bean的作用范围&#xff1f;05. Spring Component, Controller, Repository, Service 注解有何区别…...

【数据结构】实现二叉树的基本操作

目录 1. 二叉树的基本操作 2. 具体实现 2.1 创建BinaryTree类以及简单创建一棵树 2.2 前序遍历 2.3 中序遍历 2.4 后序遍历 2.5 层序遍历 2.6 获取树中节点的个数 2.7 获取叶子节点的个数 2.8 获取第K层节点的个数 2.9 获取二叉树的高度 2.10 检测值为val的元素是否…...

代码随想录算法训练营第五十二天| ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 看完题后的思路 dp[i] [0,i]子数组中,以nums[i]结尾的子序列的长度 dp[i]dp[j]1 j从i-1向0遍历,在所有nums[j]<nums[i]中dp[j]最大 初始化 dp[0]1 代码 class Solution {public int lengthOfLIS(int[] nums) {if (nums.length0){return 0;}int[] dpne…...

手机验证发送及其验证(基于springboot+redis)保姆级

在Java开发中&#xff0c;发送手机验证码时需要考虑以下几个问题&#xff1a; 验证码的有效期&#xff1a;验证码应该有一定的有效期&#xff0c;一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的&#xff0c;不能用于验证用户身份。手机号码格式的校验&#xf…...

【JavaScript 逆向】数美滑块逆向分析

声明本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01;案例目标验证码&#xff1a;aHR0cHM6Ly93d3cuaXNodW1laS5jb20vbmV3L3Byb2R1Y3QvdHcvY29kZQ以上均做了脱敏处理&#xff0c;Base64 编码及解码方…...

多任务之线程

文章目录一、多任务是什么&#xff1f;二、多任务-线程四、通过继承Tread类完成创建线程五、资源竞争六、同步与互斥锁七、对峙与避免死锁一、多任务是什么&#xff1f; 多个函数同时执行一件事情就是多任务&#xff0c;没有多任务的时候任务执行都是按照顺序的&#xff0c;而…...

(数字图像处理MATLAB+Python)第二章数字图像处理基础-第二节:色度学基础与颜色模型

文章目录一&#xff1a;颜色匹配二&#xff1a;CIE 1931-RGB系统三&#xff1a;CIE 1931标准色度系统四&#xff1a;CIE 1976Lab均匀颜色空间五&#xff1a;孟塞尔表色系统&#xff08;1&#xff09;孟塞尔明度(Value&#xff0c;记为V)&#xff08;2&#xff09;孟塞尔彩度(Ch…...

【华为OD机试 2023最新 】 网上商城优惠活动(C++)

文章目录 题目描述输入描述输出描述备注用例题目解析C++题目描述 某网上商场举办优惠活动,发布了满减、打折、无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100199元可以使用1张减10元,200299可使用2张减20元,以此类推;92折券,1次限使用1张,如100元,…...

记一次CentOS 8 部署packstack部署OpenStack失败案例,请直接看最后

首先你需要一台安装好CentOS8 的虚拟机&#xff0c;相关参数如图。两块网卡&#xff0c;网卡1 NAT IP 192.168.100.100 GW192.168.100.2 网卡2 可不做配置。能ping通百度。创建完成虚拟机记得打好快照。 开机编辑基本配置环境变量 [rootlocalhost ~]# nmcli connection show NA…...

【2023春招】美团技术岗笔试10min+AK

随手投递了前端&移动端,笔试2道算法+选择+行测题(为什么笔试会有行测题?) 目录 T1-火车栈结构 题意 输入描述 输出描述 样例 AC_Code T2-春游...

Echarts实现图表自适应屏幕分辨率

一&#xff1a;简介 之前做项目的时候要实现echarts图表随浏览器窗口大小变化而改变&#xff0c;echarts本身提供了一个resize()方法&#xff0c;然后我们需要用一个函数实现浏览器窗口监听&#xff0c;最初我选用的是window.onresize方法&#xff0c;当页面只有一个图表时可以…...

【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一

相关链接 【2023年第十一届泰迪杯数据挖掘挑战赛】B题&#xff1a;产品订单的数据分析与需求预测 建模及python代码详解 问题一 【2023年第十一届泰迪杯数据挖掘挑战赛】B题&#xff1a;产品订单的数据分析与需求预测 建模及python代码详解 问题二 1 题目 一&#xff0e;问题…...

【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解

题1 概念题。 USRAT&#xff1a;异步串口通信&#xff0c;常用于数据传输&#xff1b;SW-DP&#xff1a;SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口&#xff0c;是 >ARM 目前支持的两种调试端口之一&#xff1b;JTAG-DP&#xff1a;另一个调试…...

java中Map遍历的4种方式

目录 1、map.entrySet()方式 2、map.keySet()方式 3、map.values()方式 4、forEach方式 本文以如下map案例&#xff1a; Map<String, String> map new HashMap<>(); map.put("student1", "张三"); map.put("student2", "…...

GCC 编译器的主要组件和编译过程

主要组件&#xff1a; 分析器&#xff1a;分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式&#xff08;C到汇编&#xff09;&#xff0c;所以分析器需要知道目标机器的汇编语言。 汇编器&#xff1a;汇编器将汇编语言代码转换为CPU可以执行字节码。 …...

蓝桥杯冲刺 - week2

文章目录&#x1f4ac;前言&#x1f332;day1最大和 (DP质因数分解)901. 滑雪 - 记忆化搜索&#x1f332;day21227. 分巧克力 - 二分&#x1f332;day31221. 四平方和 - 空间换时间1230. K倍区间&#x1f332;day41076. 迷宫问题 - 路径2017-迷宫-填空&#x1f332;day5848. 有…...

第十四届蓝桥杯三月真题刷题训练——第 20 天

目录 第 1 题&#xff1a;纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 代码&#xff1a; 解析&#xff1a; 第 2 题&#xff1a;最大数字 第 3 题&#xff1a;全排列的价值_递推公式 问题描述 输入格式 输出格式…...

【C++】科普:C++中的浮点数怎么在计算机中表示?

这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的&#xff1a; float a 8.25;引言 1. 所占位数 首先&#xff0c;明确一个概念&#xff0c;float类型的数据在常规计算机中通常占4个字节&#xff0c;也就是32位。其内存分布如图&#xff1a; 位字段说明所占位…...

Linux 多线程:多线程和多进程的对比

目录一、多进程优缺点二、多线程优缺点三、使用多执行流的场景在多任务处理中&#xff0c;我们既可以使用多进程&#xff0c;也可以使用多线程。但多进程和多线程并不是随意选择的&#xff0c;因为它们应对的场景不同&#xff0c;优缺点也不同。 一、多进程优缺点 多进程就是在…...

IO流你了解多少

IO流你了解多少 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...