HashMap为什么通过(n - 1) & hash 获取哈希桶数组下标?
使用OpenFeign时LocalDateTime反序列化失败的解决方法
Redis实现缓存及解决缓存产生的问题
Eureka中的负载均衡
Eureka中的负载均衡
前言
Eureka是Netflix开发的一种用于构建分布式系统中的微服务架构的服务发现组件。
Ribbon是一个基于HTTP和TCP协议的客户端负载均衡工具,它是Netflix开源的一个组件,旨在提供客户端侧负载均衡算法和服务实例的自动发现功能,以实现对服务调用的负载均衡。
Spring官方提供了一个Spring Cloud LoadBalancer来替代Ribbon它是基于Netflix Ribbon的一个新的客户端负载均衡组件,提供更加灵活的扩展性和可配置性。
而在我们的Eureka中实现服务的远程调用则是通过Spring Cloud LoadBalancer来完成。本文将结合源码分析一下Euraka拉取服务以及远程调用服务的过程。
Java 多线程编程中的等待和休眠:wait() 和 sleep() 方法解析
背景
在Java多线程中,线程的状态如上图所示(图来自JavaGuide),可以发现,当前线程调用wait(long time)
方法或者执行Thread.sleep(long time)
方法都会进入到一个TIMED_WAITING
的状态。那么,这个状态下的线程的锁资源是怎么样的呢?
Spring Boot如何实现基于注解配置
前言
我们在使用Spring注册Bean时,有很多方式,其中两种常用的配置方式如下
基于注解的配置:使用注解来定义 bean,如 @Component
、 @Autowired
、 @Configuration
等。这种方式相比于基于 XML 的配置更加简洁、易于阅读和维护,也是目前比较流行的一种方式。
基于 Java 配置类的配置:使用 Java 类来定义 bean 和它们之间的依赖关系,如 @Bean
、 @Configuration
、 @Import
等。这种方式也是基于注解的配置方式的一种扩展形式,它允许我们使用 Java 代码来定义 bean,从而更加灵活地控制应用程序的配置。
不难发现,上述两种配置方式的核心都是基于注解实现的,只是应用场景不同。
而我在使用基于Java配置类的配置时,发现在Spring中需要直接或间接实现AnnotationConfigRegistry
接口时才能应用基于注解的配置方式;于是我便开始思考:Spring Boot是怎么实现的呢?通过查阅资料以及源码后,以下是我的拙见。