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内才会生效。
相关文章:
![](https://img-blog.csdnimg.cn/7b841d600a76443184a7e4f4545f933f.png)
Spring - Spring 注解相关面试题总结
文章目录01. Spring 配置方式有几种?02. Spring 如何实现基于xml的配置方式?03. Spring 如何实现基于注解的配置?04. Spring 如何基于注解配置bean的作用范围?05. Spring Component, Controller, Repository, Service 注解有何区别…...
![](https://img-blog.csdnimg.cn/754b5da49e7b45bd80e158b85dc2974d.png)
【数据结构】实现二叉树的基本操作
目录 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的元素是否…...
![](https://img-blog.csdnimg.cn/9ce333f454d14b8d8ab0804fff10cc6f.png)
代码随想录算法训练营第五十二天| ● 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…...
![](https://img-blog.csdnimg.cn/3d648ea4ba694254b365888be9027fba.png)
手机验证发送及其验证(基于springboot+redis)保姆级
在Java开发中,发送手机验证码时需要考虑以下几个问题: 验证码的有效期:验证码应该有一定的有效期,一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的,不能用于验证用户身份。手机号码格式的校验…...
![](https://img-blog.csdnimg.cn/img_convert/f8e7a0aeba56e14310d16b9f71ad4e25.png)
【JavaScript 逆向】数美滑块逆向分析
声明本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!案例目标验证码:aHR0cHM6Ly93d3cuaXNodW1laS5jb20vbmV3L3Byb2R1Y3QvdHcvY29kZQ以上均做了脱敏处理,Base64 编码及解码方…...
![](https://img-blog.csdnimg.cn/189488a3d7524258bd689fc58250788d.png#pic_center)
多任务之线程
文章目录一、多任务是什么?二、多任务-线程四、通过继承Tread类完成创建线程五、资源竞争六、同步与互斥锁七、对峙与避免死锁一、多任务是什么? 多个函数同时执行一件事情就是多任务,没有多任务的时候任务执行都是按照顺序的,而…...
![](https://img-blog.csdnimg.cn/6f660b53c13f48128ac16aef80c37c3a.png)
(数字图像处理MATLAB+Python)第二章数字图像处理基础-第二节:色度学基础与颜色模型
文章目录一:颜色匹配二:CIE 1931-RGB系统三:CIE 1931标准色度系统四:CIE 1976Lab均匀颜色空间五:孟塞尔表色系统(1)孟塞尔明度(Value,记为V)(2)孟塞尔彩度(Ch…...
![](https://www.ngui.cc/images/no-images.jpg)
【华为OD机试 2023最新 】 网上商城优惠活动(C++)
文章目录 题目描述输入描述输出描述备注用例题目解析C++题目描述 某网上商场举办优惠活动,发布了满减、打折、无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100199元可以使用1张减10元,200299可使用2张减20元,以此类推;92折券,1次限使用1张,如100元,…...
![](https://www.ngui.cc/images/no-images.jpg)
记一次CentOS 8 部署packstack部署OpenStack失败案例,请直接看最后
首先你需要一台安装好CentOS8 的虚拟机,相关参数如图。两块网卡,网卡1 NAT IP 192.168.100.100 GW192.168.100.2 网卡2 可不做配置。能ping通百度。创建完成虚拟机记得打好快照。 开机编辑基本配置环境变量 [rootlocalhost ~]# nmcli connection show NA…...
![](https://www.ngui.cc/images/no-images.jpg)
【2023春招】美团技术岗笔试10min+AK
随手投递了前端&移动端,笔试2道算法+选择+行测题(为什么笔试会有行测题?) 目录 T1-火车栈结构 题意 输入描述 输出描述 样例 AC_Code T2-春游...
![](https://www.ngui.cc/images/no-images.jpg)
Echarts实现图表自适应屏幕分辨率
一:简介 之前做项目的时候要实现echarts图表随浏览器窗口大小变化而改变,echarts本身提供了一个resize()方法,然后我们需要用一个函数实现浏览器窗口监听,最初我选用的是window.onresize方法,当页面只有一个图表时可以…...
![](https://img-blog.csdnimg.cn/6a6894a3d7dc43a9a43b295ab94e2fc9.png)
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
相关链接 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二 1 题目 一.问题…...
![](https://img-blog.csdnimg.cn/be8693689e1c4c3ab8ec63923c800607.png)
【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解
题1 概念题。 USRAT:异步串口通信,常用于数据传输;SW-DP:SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口,是 >ARM 目前支持的两种调试端口之一;JTAG-DP:另一个调试…...
![](https://www.ngui.cc/images/no-images.jpg)
java中Map遍历的4种方式
目录 1、map.entrySet()方式 2、map.keySet()方式 3、map.values()方式 4、forEach方式 本文以如下map案例: Map<String, String> map new HashMap<>(); map.put("student1", "张三"); map.put("student2", "…...
![](https://img-blog.csdnimg.cn/5cf9e6b0e5b2480999a72347f9111155.png)
GCC 编译器的主要组件和编译过程
主要组件: 分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。 汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。 …...
![](https://www.ngui.cc/images/no-images.jpg)
蓝桥杯冲刺 - week2
文章目录💬前言🌲day1最大和 (DP质因数分解)901. 滑雪 - 记忆化搜索🌲day21227. 分巧克力 - 二分🌲day31221. 四平方和 - 空间换时间1230. K倍区间🌲day41076. 迷宫问题 - 路径2017-迷宫-填空🌲day5848. 有…...
第十四届蓝桥杯三月真题刷题训练——第 20 天
目录 第 1 题:纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 代码: 解析: 第 2 题:最大数字 第 3 题:全排列的价值_递推公式 问题描述 输入格式 输出格式…...
![](https://img-blog.csdnimg.cn/3f8ccdd2c64c4954afa94e7e058d02ce.png)
【C++】科普:C++中的浮点数怎么在计算机中表示?
这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的: float a 8.25;引言 1. 所占位数 首先,明确一个概念,float类型的数据在常规计算机中通常占4个字节,也就是32位。其内存分布如图: 位字段说明所占位…...
![](https://img-blog.csdnimg.cn/292e170d643e4c2cba1d72e6307a6412.jpeg#pic_center)
Linux 多线程:多线程和多进程的对比
目录一、多进程优缺点二、多线程优缺点三、使用多执行流的场景在多任务处理中,我们既可以使用多进程,也可以使用多线程。但多进程和多线程并不是随意选择的,因为它们应对的场景不同,优缺点也不同。 一、多进程优缺点 多进程就是在…...
![](https://img-blog.csdnimg.cn/img_convert/d736ed7db8184b36e5e12597e4321d85.png)
IO流你了解多少
IO流你了解多少 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…...
![](https://www.ngui.cc/images/no-images.jpg)
【C++】C++ 11 新特性之auto关键字
文章目录类型别名的思考auto简介auto关键字的特性类型别名的思考 随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在: 类型难于拼写含义不明确导致容易出错 #include <string> #include <map> int main() {std::ma…...
![](https://www.ngui.cc/images/no-images.jpg)
nodejs的后端框架egg,thinkjs,nestjs,nuxtjs,nextjs对比
1. Egg.js:优点:Egg.js是一个基于Koa的Node.js企业级应用开发框架,它提供了完整的开发规范和一套稳定性和安全性较高的架构体系,能够帮助开发者快速构建高可用、高性能的应用程序。同时,Egg.js还提供了很多自定义插件和…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot @SpringBootTest 无法启动服务
这几天在看Hikari、Druid连接池。按照网上代码写Junit测试类。当时代码如下: package com.ceaning.crudp.utils;import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; impo…...
![](https://img-blog.csdnimg.cn/img_convert/a06ad62832e5490dae8b02076c28ffa6.jpeg)
PyTorch深度学习实战 | 神经网络的优化难题
即使我们可以利用反向传播来进行优化,但是训练过程中仍然会出现一系列的问题,比如鞍点、病态条件、梯度消失和梯度爆炸,对此我们首先提出了小批量随机梯度下降,并且基于批量随机梯度下降的不稳定的特点,继续对其做出方…...
![](https://img-blog.csdnimg.cn/img_convert/c6f18d87dc4b758c0cb125f32433a903.jpeg)
如何缩小pdf文件的大小便于上传?在线压缩pdf工具推荐
平时在工作、学习时我们经常都需要用到pdf文件,那么当遇上需要将pdf压缩大小的时候,该使用哪种pdf压缩(https://www.yasuotu.com/pdfyasuo)方式呢?今天分享一个在线压缩pdf的方法,需要的小伙伴一起来了解…...
![](https://img-blog.csdnimg.cn/a1c560979c734ecf93214f44bed9090e.png)
使用C++编写一个AVL的增删改查代码并附上代码解释
//qq460219753提供其他代码帮助 #include <iostream> using namespace std;struct Node {int data;Node *left;Node *right;int height; };// 获取结点高度 int height(Node *node) {if (node nullptr){return 0;}return node->height; }// 获取两个数中较大的一个 i…...
![](https://www.ngui.cc/images/no-images.jpg)
React/ReactNative 状态管理: redux-toolkit 如何使用
有同学反馈开发 ReactNative 应用时状态管理不是很明白,接下来几篇文章我们来对比下 React 及 ReactNative 状态管理常用的几种框架的使用和优缺点。 上一篇文章介绍了 redux 的使用,这篇文章我们来看下 redux 的升级版:redux-toolkit。 下…...
![](https://img-blog.csdnimg.cn/e85741140a59462fbe016e6188e462e6.png)
14基于双层优化的电动汽车优化调度研究
说明书 MATLAB代码:基于双层优化的电动汽车优化调度研究 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》中文版 《A bi-layer optimization based temporal and sp…...
![](https://www.ngui.cc/images/no-images.jpg)
古茗科技面试:为什么 ElasticSearch 更适合复杂条件搜索?
文章目录 ElasticSearch 简介倒排索引联合索引查询跳表合并策略Bitset 合并策略MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤。 上述这种处理复杂条件查询的方式因为只能通过一个索引进行过滤,所以需要进行大量的 I/O 操作来读取行…...
![](https://img-blog.csdnimg.cn/c3eb759563fe4e9e9eb550ea8f5bf1ec.png)
【数据结构】哈希表
目录 1、哈希表 1.1 哈希表的简介 1.2 降低哈希冲突率 1.3 解决哈希冲突 1.3.1 闭散列 1.3.2 开散列(哈希桶) 1、哈希表 1.1 哈希表的简介 假设我们目前有一组数据,我们要从这组数据中找到指定的 key 值,那么咱们目…...
![](https://images2015.cnblogs.com/blog/640481/201704/640481-20170412184549939-1526543986.png)
哪一家做网站好/aso优化违法吗
题意: 有\(n(1 \leq n \leq 10^5)\)个点,\(q(1 \leq q \leq 10^5)\)条路和起点\(s\) 路有三种类型: 从点\(v\)到点\(u\)需要花费\(w\)从点\(v\)到区间\([l,r]\)中的点花费为\(w\)从区间\([l,r]\)中的点到点\(v\)花费为\(w\)求起点到各个点的最…...
![](/images/no-images.jpg)
网站友情链接模板/在线生成网页网站
Web端自动化元素定位方法 随着互联网的快速发展,版本迭代周期越来越短?需求越来越多?测试工作量越来越大?怎么保证质量?怎么保证上线周期?。如何实现既提高测试效率和覆盖率,又节约测试成本&…...
![](/images/no-images.jpg)
html5 微网站模版/今日国内重大新闻事件
1.【未证实】在S2SH框架中Spring对Session中对象的维护,在select出数据对象后,如果对该对象进行set新值,Spring会自动更新该对象使数据库与其保持一致,而就程序自身来说是不需要该更新立马进行的: a.可能会放到某个更新…...
![](/images/no-images.jpg)
网站服务器迁移步骤/小说推广平台有哪些
代理模式的定义是:为一个对象提供代理,来控制对这个对象的访问。 在某些情况下,直接访问对象不方便或者对访问对象增强一些功能,可以使用到代理模式。比如想请一个明星来办一场商业演出,一般都是联系明星的经纪人&…...
![](/images/no-images.jpg)
泉州市建设工程质量监督站网站/关键词优化seo外包
图片替换主要是指将文字替换成图片的技术,即在html语句中使用文字,浏览器显示时用对应的图片显示。其意义在于便于做网站优化(SEO),因为文字才是搜索引擎寻找的主要对象。 https://www.cnblogs.com/wmhuang/p/image_ch…...
![](https://img-blog.csdnimg.cn/6b4927988d1d473882434b25fcfb37eb.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTgwMDE0NA==,size_16,color_FFFFFF,t_70)
房门户网站如何做优化/app如何推广以及推广渠道
springboot mybatis项目,想要打印sql语句,可以直接下载Mybatis Log Plugin插件,下载后重启下idea,然后配置文件中添加logging.level.cndebug配置即可。注意,这里的cn,是个包名,如果你的包名是co…...