HashMap的底层结构
HashMap
在 Java 中是基于散列算法实现的,其底层主要由数组和链表(Java 8 后加入了红黑树)构成。当一个元素被加入到 HashMap
中时,会使用散列函数计算出该元素的存储索引,然后将元素存储到对应索引的位置。如果两个元素的存储索引相同(发生了哈希碰撞),则会通过链表或红黑树(当链表长度超过阈值时转换)来处理碰撞。
HashMap的存值与取值
- 存值 :当向
HashMap
中存入一个键值对时,HashMap
会首先计算键的hashCode
,然后根据散列函数找到数组中对应的位置。如果该位置上没有元素,就直接存入;如果有元素(即发生哈希碰撞),则通过链表或红黑树来解决碰撞,将新的键值对添加到链表的末尾或红黑树中。 - 取值 :取值时,同样首先计算键的
hashCode
,然后使用散列函数定位到数组的具体位置。如果该位置上的第一个元素就是所需的键,则直接返回其值;如果不是,则遍历链表或红黑树,直到找到匹配的键。
Spring Boot修改启动端口
在 Spring Boot 应用中,可以通过在 application.properties
或 application.yml
文件中设置 server.port
属性来修改启动端口。例如:
properties
# application.properties
server.port=8081
或者
yaml
# application.yml
server:
port: 8081
修改Tomcat的版本号
Spring Boot 使用内嵌的 Tomcat 作为默认的 Servlet 容器。要修改 Tomcat 的版本,你需要在项目的 pom.xml
文件中覆盖 Tomcat 的依赖版本,例如:
xml
<properties>
<tomcat.version>9.0.41</tomcat.version>
</properties>
Spring Boot配置Redis
要在 Spring Boot 应用中配置 Redis,首先需要添加 Spring Data Redis 的依赖。然后,在 application.properties
或 application.yml
文件中配置 Redis 服务器的地址、端口和其他参数。例如:
properties
# application.properties
spring.redis.host=localhost
spring.redis.port=6379
MySQL左联接与右联接
- 左联接(LEFT JOIN):返回左表中的所有记录和右表中联结字段相等的记录。如果左表的行在右表中没有匹配,则结果中右表的部分会显示为 NULL。
- 右联接(RIGHT JOIN):返回右表中的所有记录和左表中联结字段相等的记录。如果右表的行在左表中没有匹配,则结果中左表的部分会显示为 NULL。
MySQL内连接中没有配置上的值
内连接(INNER JOIN)只返回两个表中联结字段相匹配的行。如果某个表中的行在另一个表中没有对应的匹配行,则这些行不会出现在内连接的结果集中。
学习Spring Cloud
面对Spring Cloud的学习,你可以采取以下策略:
- 官方文档:Spring Cloud的官方文档是学习的最好起点,它提供了详细的指南和介绍。
- 在线教程和课程:网上有许多优秀的Spring Cloud教程和课程,可以帮助你从基础到高级逐步学习。
- 实践项目:通过实际项目来应用所学知识,可以加深对Spring Cloud各组件如Eureka、Hystrix、Zuul等的理解。
- 加入社区:参与Spring Cloud社区,
比如Stack Overflow、GitHub或者专门的论坛,可以让你及时获得帮助并保持最新的技术动态。
面试中提到的Java知识生疏,说明需要在基础知识和新技术的学习上投入更多的时间和精力。持续学习和实践是提升技术水平的关键。