1.hashmap底层是什么?
在 JDK 1.7及以前 底层实现是一个 数组 + 链表 的形式,
而在 JDK 1.7以后 底层是 数组 + 链表 + 红黑树 。
2.ES为什么查询速度快
https://blog.csdn.net/weixin_42588555/article/details/129565314
Elasticsearch (ES) 是一种分布式搜索引擎,它的查询速度快的原因有很多。
首先,ES使用了倒排索引这种数据结构来快速查找文档。倒排索引是一种针对文本搜索而优化的数据结构,它将每个词与出现这个词的文档列表关联起来,这样就可以快速查找包含某些词的文档。
其次,ES使用了分布式系统的优势,可以利用多台机器的计算能力来处理查询。它将索引分成若干个分片,并在多台机器上进行分布式存储,这样就可以并行处理查询,提升查询效率。
另外,ES还有很多优化查询的功能,比如布尔查询、聚合查询、嵌套查询等,这些功能都可以帮助快速定位符合查询条件的文档。
3.List和Set的区别是什么?
(1) list方法能够允许重复的对象,但是,set方法和list方法不同,set方法不允许重复对象
(2) list的话,它是一个有序的容器,它保持了每个元素的插入顺序,也就是输出顺序就是输入顺序。
但是set方法是无序容器,它不可以保证每个元素的存储顺序,TreeSet通过Comparator或者是Comparable维护了一个排序顺序。
(3)list和set不同,list能够插入多个null元素,但是,set只允许插入一个null元素。
(4)list方法常用的实现类:
ArrayList、LinkedList 和 Vector。
Set方法:
HashSet、LinkedHashSet 以及 TreeSet。
在这当中,最流行是HashSet,HashSet是基于HashMap实现。
4.vue的生命周期
Vue 的实例从创建到销毁的过程 ,就是生命周期 ,
也就是从开始创建 ,初始化数据 ,编译模板 ,挂载Dom到渲染DOM ,
更新数据再到渲染 ,卸载等一系列的过程 ,我们称这是Vue的生命周期
5.spring 中的依赖注入有几种方式?
https://juejin.cn/post/7248898395884224568
(1)构造器注入
public class ExampleService {
private Dependency dependency;
public ExampleService(Dependency dependency) {
this.dependency = dependency;
}
// ...
}
(2)Setter方法注入
public class ExampleService {
private Dependency dependency;
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
// ...
}
(3)接口注入
public interface DependencyInjection {
void setDependency(Dependency dependency);
}
public class ExampleService implements DependencyInjection {
private Dependency dependency;
@Override
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
// ...
}
(4) 自动装配(Autowiring)
自动装配是Spring框架提供的一种便捷的依赖注入方式。
通过自动装配,Spring容器可以自动识别和解析Bean之间的依赖关系,并将相应的依赖注入到目标Bean中。
自动装配可以根据不同的规则进行,包括按类型、按名称、按注解等。示例代码如下:
public class ExampleService {
@Autowired
private Dependency dependency;
// ...
}
(5)注解注入
Spring框架提供了多个注解用于依赖注入,简化了配置和代码的编写。常用的注解包括:
@Autowired:自动装配依赖项。
@Qualifier:在存在多个候选Bean时,指定要注入的具体Bean。
@Resource:指定要注入的Bean,并可以通过名称或类型进行查找。
@Value:注入简单的值,如基本类型、字符串等。
@Inject:与@Autowired类似,用于依赖注入。
示例代码如下:
java复制代码public class ExampleService {
@Autowired
@Qualifier("dependency")
private Dependency dependency;
// ...
}
(6) Java配置
除了XML配置,Spring还支持使用Java配置类来进行依赖注入。
通过编写Java配置类,可以更加灵活地定义和管理Bean之间的依赖关系。示例代码如下:
@Configuration
public class AppConfig {
@Bean
public ExampleService exampleService() {
ExampleService service = new ExampleService();
service.setDependency(dependency());
return service;
}
@Bean
public Dependency dependency() {
return new Dependency();
}
}
在配置文件中,通过<context:annotation-config>启用注解支持,并使用<bean>标签引用Java配置类:
<context:annotation-config />
<bean class="com.example.AppConfig" />
@Autowired和@Resource到底有什么区别?
https://blog.csdn.net/xhbzl/article/details/126765893
(1) 来源不同
@Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。
(2) 依赖查找顺序不同
@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找
@Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找