【W26/2024】算子&索引&谓词下推

开发中经常听到算子下推,索引下推、谓词下推,名字那么像,它们之间有什么联系吗?本位对此进行了区分与总结。

【W26/2024】Caffeine 性能高效的秘密(Kimi)

在业务开发中,Caffeine 基本上是默认的缓存库,为什么它会这么快?为什么它这么受开开发者推崇?

【W26/2024】Redis 底层数据结构

Redis的高效离不开它底层的数据结构设计,本文对其做一个简单的汇总。

【W26/2024】MySQL&ES 深翻页

在数据库中,深翻页问题一直是程序运行中的性能杀手,本文将简要分析深翻页的原因,以及如何避免深翻页问题。

【W23/2024】Java 中的线程同步

Java 中的线程同步方式令人眼花撩乱,JDK提供的工具与方法学习与使用起来容易混淆,本文通过Object、Thread、Lock、Lock Support几个类类帮你梳理这些概念,希望对你有帮助。

【W20/2024】摸排各种“规则“引擎

作为一个开发者,在架构设计与代码优化中,可能会听到一些高大上的名词,比如说规则引擎,流程引擎,工作流程引擎等,我被这些技术弄的眼花缭乱,这几种引擎是做什么的?它们有什么区别?有这些问题,我马上去网上查找资料,去问 ChatGPT,但是网上的博客也只是对这几个“引擎”做了分别介绍,没有做一个统一的归纳,本文就是对这些概念做一次梳理,并指出它们的的设计理念与背后的设计模式,希望对你在学习规则引擎的时候有帮助。

【W20/2024】RPC调用中的序列化问题

在使用 SpringBoot 的默认序列化方式 Jackson 时,如果在执行 RPC,并且参数中含有 Map 类型的字段时,如果不做特别的处理,会抛出异常,提示参数不能是 LinkedHashMap,这遍文章将探寻报错的原因与解决方法。

【W18/2024】SATB 和 TLAB

在学习JVM 的过程中,会出现两个长的很像的概念 SATB(Snapshot At The Beginning)和 TLAB(Thread Local Allocation Buffer),但是它们却有不同的功能,为了更好地理解它们,让我们对这两个概念进行详细的梳理和记录。

【W08/2024】Java 网络编程中的一些概念

这篇文章简单介绍一些在 Java 网络编程中,经常遇到的一些概念,比如 Socket、Select、Selector 等,避免在具体使用它们的时候,混淆它们的作用。

【W07/2024】Dubbo 调用流程源码简要梳理

最近在梳理 Dubbo 是怎么跟 Netty 结合在一起,响应来自客户端的网络请求的,针对 Dubbo 3.3 版本的 Triple 协议做了一个简要分析。

【W02/2024】NIO 中的 ByteBuffer 梳理

在学习和使用 Netty 框架时,许多资料都会指出 Netty 的 ByteBuf 相较于Java 原生的 ByteBuffer,有不少优化和性能提升,但是一般是片面的指出其中几点,没有对它们之间的差异做全知全貌的解释,这篇博客,就带你完整得认识它们的不同。

【W02/2024】火焰图(ChatGPT)

如何查看 Java 程序运行时的火焰图,看完这篇博客,相信你会有答案。

【W02/2024】延时双删与双重检测锁模式

标题的这两个概念相信你都听过,延时双删与双重检测锁模式。然而,由于它们的名称相似,可能导致对它们的概念混淆。现在让我们集中梳理一下这两个概念。

【W01/2024】消息队列的高可用架构

消息队列是我们在日常业务开发中频繁使用的中间件,我们对它的使用方式、功能特性和基本原理都有一定的了解。但是消息队列服务端身为一个分布式系统,它也就一定满足CAP理论,我们也不得不考虑它运行时的可用性与可靠性,接下来就介绍一下各大主流消息队列中间件在可用性这方面的取舍。