摘要: 原子性操作 Lua 脚本可以在 Redis 中原子性地执行,保证了一系列操作要么全部执行成功,要么全部不执行。这是通过 Redis 的EVAL或EVALSHA命令实现的,在执行脚本的过程中,不会被其他命令打断。而使用 Java 与 Redis 交互时,要实现原子性操作通常需要借助 Redis 的事务 阅读全文
posted @ 2025-03-25 23:56 蒟蒻00 阅读(43) 评论(0) 推荐(0)
摘要: 基本原理 令牌桶算法以恒定的速率向桶中放入令牌,令牌的数量代表了可以发送的数据量。当有数据需要发送时,必须先从桶中获取令牌,只有拿到令牌的数据才能被发送出去。如果桶中没有令牌,数据就需要等待,直到有令牌可用为止。 实现方式 1、数据结构定义:需要定义一个数据结构来表示令牌桶,通常包含桶的容量(即最多 阅读全文
posted @ 2025-03-25 23:23 蒟蒻00 阅读(128) 评论(0) 推荐(0)
摘要: JDK(Java Development Kit,Java 开发工具包) 定义:::Java 开发工具包,是 Java 开发人员用于开发 Java 程序的工具集合。它包含了 JRE 和一系列开发工具,如编译器(javac)、调试器、打包工具(jar)等。 功能范围:功能最为全面,不仅可以运行 Jav 阅读全文
posted @ 2025-03-25 20:32 蒟蒻00 阅读(42) 评论(0) 推荐(0)
摘要: 普通索引 定义:最基本的索引类型,没有任何限制,主要用于提高查询效率。 创建语法: -- 在表的某列上创建普通索引 CREATE INDEX index_name ON table_name (column_name); 使用场景:适用于经常用于查询条件的列,例如在用户表中,经常根据用户的姓名进行查 阅读全文
posted @ 2025-03-25 20:12 蒟蒻00 阅读(45) 评论(0) 推荐(0)
摘要: 索引(Index) 是一种用于快速定位和访问数据的数据结构。 常见的索引结构有:B树,B+树,哈希表。 B树 vs B+树对比总结 MySQL InnoDB的B+树索引 主键索引(聚簇索引):叶子节点存储完整数据行,物理有序。 二级索引(非聚簇索引):叶子节点存储主键值,查询需回表。 联合索引:按最 阅读全文
posted @ 2025-03-25 19:46 蒟蒻00 阅读(45) 评论(0) 推荐(0)
摘要: 1、读未提交 定义:这是最低的隔离级别,一个事务可以读取另一个未提交事务的数据。 优点:并发性能最高,因为它几乎不进行任何隔离。 缺点: 2. 读已提交(Read Committed) 定义:一个事务只能读取另一个已经提交事务的数据。 优点:避免了脏读问题,提高了数据的一致性。 缺点:会产生不可重复 阅读全文
posted @ 2025-03-25 19:31 蒟蒻00 阅读(38) 评论(0) 推荐(0)
摘要: MySQL中的事务(Transaction)是一组数据库操作的逻辑单元,确保这些操作要么全部成功提交,要么全部失败回滚,从而维护数据的一致性。事务具备四个关键特性,即 ACID 特性。 ACID 特性 原子性(Atomicity):事务里的所有操作要么全部成功,要么全部失败回滚。就像银行转账,从一个 阅读全文
posted @ 2025-03-25 16:41 蒟蒻00 阅读(30) 评论(0) 推荐(0)
摘要: 过滤器(Filter)和拦截器(Interceptor)在 Java Web 开发里是常用的组件,二者都能对请求进行预处理和后处理。 过滤器(Filter) 定义:过滤器是 Servlet 规范的一部分,属于 Servlet 容器提供的功能。它能够对所有进入 Servlet 容器的请求进行过滤,也能 阅读全文
posted @ 2025-03-25 16:28 蒟蒻00 阅读(977) 评论(0) 推荐(0)
摘要: 定义和目的 MySQL 事务 是由一组 SQL 语句组成的逻辑单元,这些语句要么全部执行成功,要么全部回滚,以保证数据库的一致性。例如,在一个银行转账的场景中,从一个账户扣款和向另一个账户存款这两个操作必须作为一个事务来处理,确保不会出现只完成部分操作的情况,从而避免数据不一致。 多线程安全 主要关 阅读全文
posted @ 2025-03-25 12:24 蒟蒻00 阅读(30) 评论(0) 推荐(0)
摘要: 在 Java 中,CAS(Compare and Swap)是一种无锁的原子操作机制,它可以在不加锁的情况下实现对共享变量的原子更新。 原理 CAS 操作包含三个操作数:内存位置(V)、预期原值(A)和新值(B)。CAS 操作会将内存位置 V 中的值与预期原值 A 进行比较,如果相等,则将内存位置 阅读全文
posted @ 2025-03-25 09:57 蒟蒻00 阅读(43) 评论(0) 推荐(0)
摘要: SETNX 使用方法:SETNX(SET if Not eXists)是 Redis 中一个经典的用于设置分布式锁的命令。它的作用是当指定的键不存在时,才会设置该键的值,如果键已经存在则不做任何操作。但 SETNX 本身不支持直接设置过期时间。 坏处:为了避免死锁(例如持有锁的客户端崩溃而未释放锁) 阅读全文
posted @ 2025-03-25 09:39 蒟蒻00 阅读(116) 评论(0) 推荐(0)
摘要: Lock 和分布式锁概述 Lock:这是 Java 里的一个接口,它提供了比synchronized关键字更为灵活的锁机制。Lock接口的常见实现类有ReentrantLock,借助lock()方法来获取锁,使用unlock()方法释放锁。它主要用于单个 JVM 内的线程同步。 分布式锁:在分布式系 阅读全文
posted @ 2025-03-25 09:13 蒟蒻00 阅读(32) 评论(0) 推荐(0)
摘要: synchronized 是 Java 中用于实现线程同步的关键字,它可以保证在同一时刻只有一个线程能够访问被 synchronized 修饰的代码块或方法,从而避免多线程环境下的数据竞争和不一致问题。 实现机制 1、同步方法:当一个方法被 synchronized 修饰时,它被称为同步方法。在字节 阅读全文
posted @ 2025-03-25 08:30 蒟蒻00 阅读(52) 评论(0) 推荐(0)