minster's Blog

记录学习以及生活~

前言

Neo4j是一个可以构建节点关系的非关系型的图数据库,通过使用Neo4j存储数据,我们可以很好地实现一些节点关系数据,比如物流中的运输路线等。

对于第一次使用Neo4j的朋友来说,解析查询记录是很痛苦的,本文记录了几种常用的处理查询结果的方法,以便不时之需。

Read more »

前言

看过HashMap源码的应该都知道HashMap是如何根据hash值来计算哈希桶数组下标的,就是通过(n - 1) & hash来计算的,为什么用的是位运算(&)而不是取模运算(hash % n)呢?

获取hash桶数组下标源码

1
2
3
if ((p = tab[i = (n - 1) & hash]) == null){
tab[i] = newNode(hash, key, value, null);
}
Read more »

前言

本文将以查询商铺信息业务为主线,使用Redis做缓存逐步提升查询商铺的效率。

同时提供使用Redis缓存过程中遇到的数据一致性、缓存击穿、缓存穿透、缓存雪崩等问题的解决思路。

Read more »

Eureka中的负载均衡

前言

Eureka是Netflix开发的一种用于构建分布式系统中的微服务架构的服务发现组件。

Ribbon是一个基于HTTP和TCP协议的客户端负载均衡工具,它是Netflix开源的一个组件,旨在提供客户端侧负载均衡算法和服务实例的自动发现功能,以实现对服务调用的负载均衡。

Spring官方提供了一个Spring Cloud LoadBalancer来替代Ribbon它是基于Netflix Ribbon的一个新的客户端负载均衡组件,提供更加灵活的扩展性和可配置性。

而在我们的Eureka中实现服务的远程调用则是通过Spring Cloud LoadBalancer来完成。本文将结合源码分析一下Euraka拉取服务以及远程调用服务的过程。

Read more »

moon

前言

以下是我对Java高频面试题的一个总结,后面我会持续更新,希望对你有所帮助。
当然,如果有哪道题目我理解错误了,或者是你有更好的见解,非常欢迎你在评论区中留下宝贵的意见!

Read more »

前言

我们在使用Spring注册Bean时,有很多方式,其中两种常用的配置方式如下

基于注解的配置:使用注解来定义 bean,如 @Component@Autowired@Configuration 等。这种方式相比于基于 XML 的配置更加简洁、易于阅读和维护,也是目前比较流行的一种方式。

基于 Java 配置类的配置:使用 Java 类来定义 bean 和它们之间的依赖关系,如 @Bean@Configuration@Import 等。这种方式也是基于注解的配置方式的一种扩展形式,它允许我们使用 Java 代码来定义 bean,从而更加灵活地控制应用程序的配置。

不难发现,上述两种配置方式的核心都是基于注解实现的,只是应用场景不同。

而我在使用基于Java配置类的配置时,发现在Spring中需要直接或间接实现AnnotationConfigRegistry接口时才能应用基于注解的配置方式;于是我便开始思考:Spring Boot是怎么实现的呢?通过查阅资料以及源码后,以下是我的拙见。

Read more »