- 博客(11)
- 收藏
- 关注
原创 JAVA面试题:ConcurrentHashMap的扩容机制
在JDK1.7版本中,ConcurrentHashMap使用了Segment分段锁机制,每个Segment相当于一个小的HashMap,它们各自判读和执行扩容,当需要扩容时,生成一个新的数组,将元素重新分配到新的数组中。到了JDK1.8版本中,Segment机制被取消了,直接使用了细颗粒度的锁机制,当需要扩容时,如果已有线程在扩容,其它的线程会参与扩容,提升效率,扩容时,生成新数组并将元素分组,多个线程并行完成元素的迁移工作。这样提高了并发性能和扩容速度。
2024-08-21 09:51:12
1263
原创 JAVA面试题:SpringBoot怎么做自动配置
编写配置类创建一个带有注解的类,定义所需的Bean。通过结合使用条件注解,可以根据实际需要控制这些Bean的加载条件。在中注册在META-INF/目录下创建文件,并在其中注册自定义配置类。这样,Spring Boot在启动时就能够自动发现并加载这些配置类。使用条件注解灵活使用条件注解(如)来防止重复装配Bean,确保配置类在不同的条件下都能表现出正确的行为。例如,可以根据环境变量、配置文件属性或类路径中的依赖情况,来动态调整配置。
2024-08-19 10:51:51
460
原创 JAVA面试题:什么是一级缓存,什么是二级缓存?
一级缓存是 `SqlSession` 级别的缓存,仅在同一个 `SqlSession` 中有效,用于提高单次会话内的查询效率;二级缓存则是 `SqlSessionFactory` 级别的缓存,多个 `SqlSession` 可以共享,减少数据库查询次数。一级缓存会在 `SqlSession` 关闭或执行增删改操作时失效,二级缓存则根据配置的清除策略或增删改操作来管理缓存有效性。
2024-08-12 13:16:25
532
原创 JAVA面试题:Mybatis中使用${}和#{}的区别
在使用 MyBatis 进行数据库操作时,`#{} 用于参数绑定,会生成预处理语句,使用?占位符,可以防止 SQL 注入;而 ${} 是直接字符串替换,会将参数值直接嵌入到 SQL 语句中,无法防止 SQL 注入,要谨慎使用。
2024-08-08 16:49:38
289
原创 JAVA面试题:MyBatis和Hibernate的区别
MyBatis和Hibernate都是Java持久层框架,但它们在自动化程度、DAO层处理、框架重量和性能以及SQL优化方面存在显著差异。Hibernate是全自动化ORM框架,简化了DAO层的开发,不需要手写SQL语句,但由于大量的反射操作,可能会影响性能,并且不便于SQL优化和复杂查询的处理。MyBatis则是半自动化ORM框架,虽然需要手动编写SQL语句和结果映射,但提供了更大的灵活性和控制权,且性能更高,便于进行SQL优化。
2024-08-07 09:54:49
1012
原创 JAVA面试题:String、Stringbuffer、StringBuilder的区别
String类一旦创建了一个String对象,它的值就不能改变,对String进行操作时,都会创建一个新的String对象,此外,String是线程安全的。StringBuffer对象可变,可以对其内容进行修改而不产生新的对象,StringBuffer是线程安全的,适用于多线程的环境。StringBuilder在进行字符串拼接和修改时效率比StringBuffer更高,因为它的方法不是同步的,所以它也是线程不安全的。
2024-07-25 14:20:32
536
原创 JAVA面试题:HashMap和HashTable的区别
HashMap 和 HashTable 都是基于哈希(Hash)原理的 Map 接口实现类,它们利用哈希函数将键(Key)映射到表中的位置,从而实现快速的查找、插入和删除操作。
2024-07-23 13:57:12
1029
原创 JAVA面试题:ArrayList和LinkedList的区别
集合(Collection)是一个存储多个对象的数据结构。集合的主要目的是为了高效地管理、操作和存取这些对象。集合可以是有限的,也可以是无限的,它们可以包含不同类型的对象,通常提供各种操作方法来添加、删除、查找、遍历和排序这些对象。
2024-07-22 21:42:57
1058
原创 JAVA面试题:重载和重写的区别
多态(Polymorphism)是面向对象编程中的一个重要概念,它允许不同类的对象通过相同的接口调用而表现出不同的行为。多态性使程序具有更好的灵活性和可扩展性,减少代码的冗余。编译时多态性(静态多态性):通过方法重载实现。在编译阶段确定调用哪个方法。运行时多态性(动态多态性):通过方法重写和接口实现。在运行阶段根据对象的实际类型决定调用哪个方法。
2024-07-20 13:27:00
450
原创 JAVA面试题:数据库的存储引擎 InnoDB和MyISAM的区别
数据库存储引擎是数据库的底层组件,负责数据的存储和访问,直接影响数据库的性能、可靠性和扩展性。常见的存储引擎有InnoDB、MyISAM等。不同的存储引擎具有各自的特性和优缺点,MySQL允许我们根据具体使用场景为数据库表选择合适的存储引擎。
2024-07-19 13:40:32
491
原创 使用Java解压RAR和ZIP文件:详细指南
在开发过程中,我们经常需要处理压缩文件,如ZIP和RAR文件。本文将介绍如何使用Java解压这两种常见的压缩文件格式,具体包括使用。以下是完整的Java代码示例,展示了如何解压RAR和ZIP文件。
2024-07-12 00:14:45
991
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人