Redis底层数据结构

Redis底层数据结构 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度的需要通过运算 非二进

手写MyBatis ORM框架(七)

引言 在这篇文章之中,我们会详细介绍一下MyBatis中反射工具类的详细设计。 开始 在 MyBatis 中,反射工具类主要用于高效操作 Java 对象的属性、方法和类型信息,其核心目标是支持动态 SQL 参数绑定和结果集映射。以下是 MyBatis 反射工具类的核心实现及其原理的详细说明: 反射工

手写MyBatis ORM框架(六)

引言 上一部分我们创建了数据库连接池,这个连接池指定是我们在执行SQL的时候才用到的,这一部分我们就实现这个。 开始 Executor 的作用 1. SQL 执行调度 核心职责: Executor 是 MyBatis 执行 SQL 的入口,负责调用底层组件(如 StatementHandler、Pa

手写MyBatis ORM框架(九)

引言 这篇文章我们来实现一下这个MyBatis的插件功能。 开始 介绍 Mybatis Plugin 的插件功能是非常重要的一个功能点,包括我们可以结合插件的扩展;分页、数据库表路由、监控日志等。而这些核心功能的扩展,都是来自于 Mybatis Plugin 提供对类的代理扩展,并在代理中调用我们自

手写MyBatis ORM框架(十)

引言 在这篇文章,我们会实现MyBatis的一级缓存。 开始 介绍 MyBatis 的一级缓存(SqlSession 级别缓存)通过 缓存键生成、缓存存储 和 缓存失效机制 实现,核心逻辑在 BaseExecutor 中完成。

手写MyBatis ORM框架(十一)

引言 在这篇文章,我们详细解释一下二级缓存的实现原理。 开始 介绍 MyBatis 的二级缓存是 Mapper 命名空间级别 的缓存,它的核心设计目标是通过共享缓存数据,减少跨会话的重复查询。与一级缓存不同,二级缓存的作用域不再局限于单个 SqlSession,而是扩展到同一个 Mapper 的命名

手写MyBatis ORM框架(八)

引言 在我们上一篇文章,完成了反射工具类,在这篇文章,我们要实现对xml文件中SQL的解析。 实现目标 在XMLConfigBuilder中完成对SQL的解析。 在我们之间,已经把环境解析完成了,我们这回就在这里完成SQL解析。 // 环境 environmentsElement(root.elem

JDK动态代理、Cglib动态代理及Spring AOP

引言 讲解JDK动态代理以及CGLib动态代理。 1. JDK动态代理 1.1 创建代理类及返回代理对象 jdk动态代理通过 proxy 类的静态方法 newProxyInstance 来创建代理类 并且 返回代理类 对象 static Object newProxyIns

每日算法(三)

引言:这次是链表的题 1.创建一个链表 public class ListNode { // 结点的值 int val; // 下一个结点 ListNode next; // 节点的构造函数(无参) public ListNode() {

Mysql主从怎么配置

引言 在这篇文章呢,我打算讲解一下mysql的主从配置,实现读写分离,提高数据库的性能。 Windows版 1.下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ 下载下来解压复制两个

IDEA Maven Helper插件

引言: 在写Java代码的时候,我们可能会出现Jar包的冲突的问题,这时候就需要我们去解决依赖冲突了,而解决依赖冲突就需要先找到是那些依赖发生了冲突,当项目比较小的时候,还比较依靠IEDA的【Diagrams】查看依赖关系,当项目比较大依赖比较多后就比较难找了,这时候就需要一款IDEA插件实现快速解

通义灵码

引言: 在这篇文章我想介绍一个可以便利我们工作的一个插件---通义灵码 开始 这个插件可以在idea里面下载,如上图。 这个除了ChatGPT 3.5 以外的功能,还可以 这点主要是相对于ChatGPT更加便捷。 特别是在解释代码的时候

将Dubbo服务打包成Jar包

引言 这编文章是我在使用Dubbo给其他服务提供调用接口的时候用到的,希望可以帮助到大家。 开始 Dubbo 是一款流行的 Java RPC 框架,它提供了高性能、透明化的 RPC 远程服务调用方案。在开发基于 Dubbo 的服务时,我们通常需要将服务代码打包成可发布的 JAR 包,以便在不同的环境