RabbitMQ 是什么? RabbitMQ 是一个在 AMQP(Advanced Message Queuing Protocol )基础上实现的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。它支持多种客户端如:Python、Ruby、.NET、Ja
什么是消息队列? 我们可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列 Queue 是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为 生产者 和 消费者 ,生产者负责发送消息,消费者负责处理消息。
在spring cloud 2023.0.2, seata2.0版本中会遇到如下问题: 业务逻辑抛出自定义异常后,上层捕获不到业务原始异常信息,只能看到类似: java.lang.RuntimeException: try to proceed invocation error
at io.seat
虚拟线程在 Java 21 正式发布,这是一项重量级的更新。 什么是虚拟线程? 虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统
前言 使用过 Spring 的小伙伴,一定有被 XML 配置统治的恐惧。即使 Spring 后面引入了基于注解的配置,我们在开启某些 Spring 特性或者引入第三方依赖的时候,还是需要用 XML 或 Java 进行显式配置。 举个例子。没有 Spring Boot 的时候,我们写一个 RestFu
什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。 我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,
IoC (Inversion of control ) 什么是 IoC? IoC (Inversion of Control )即控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。 例如:现有类 A 依赖于类 B 传统的开发方式 :往往是在类 A
使用缓存的时候,我们经常需要对内存中的数据进行持久化也就是将内存中的数据写入到硬盘中。大部分原因是为了之后重用数据(比如重启机器、机器故障之后恢复数据),或者是为了做数据同步(比如 Redis 集群的主从节点通过 RDB 文件同步数据)。 Redis 不同于 Memcached 的很重要一点就是,R
很多小伙伴简历上写了“熟练使用缓存”,但是被问到“缓存常用的 3 种读写策略”的时候却一脸懵逼。 在我看来,造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单写了一些 Demo,并没有去关注缓存的读写策略,或者说压根不知道这回事。 但是,搞懂 3 种常见的缓存读写策略对于实际工作中使用
除了 5 种基本的数据类型之外,Redis 还支持 3 种特殊的数据类型:Bitmap、HyperLogLog、GEO。 Bitmap (位图) 介绍 根据官网介绍: Bitmaps are not an actual data type, but a set of bit-oriented ope