TOCTOU问题

TOCTOU问题

TOCTOU(Time-Of-Check to Time-Of-Use)是一类典型的竞态条件问题,指程序在“检查资源状态”和“实际使用该资源”之间存在时间窗口,状态可能被其他线程或进程悄悄改掉,从而引发逻辑错误或安全漏洞。本文通过 Redisson 分布式锁unlock的实际案例,说明 TOCTOU 在业务代码中的具体表现。

Explore categories

Explore the categories

System

5+ articles

System

思维

3+ articles

思维

Lang

18+ articles

Lang

Database

14+ articles

Database

Other

6+ articles

Other

Distributed

7+ articles

Distributed

Web

2+ articles

Web

DevPractice

1+ articles

DevPractice

生活

1+ articles

生活

Latest articles 🎈

Check out our latest articles

MySQL MVCC、Undo Log 与 Read View 实现原理深度解析

本文系统介绍了 MySQL InnoDB 中 MVCC(多版本并发控制)的工作机制,包括快照读与当前读的区别、MVCC 解决的典型问题(读写不阻塞、降低死锁、实现一致性读),以及 InnoDB 通过 undo log 版本链与 Read View 来判断「当前事务能看到哪一个数据版本」的完整过程。通过多组事务时序示例,文章直观展示了在可重复读与读已提交隔离级别下,事务为何能看到不同的数据版本,从而帮助读者从实现层面真正理解 MySQL 的事务隔离与并发控制。

·#MySQL
0
12 min read

macOS上docker启动SQL Server

本文介绍如何在 macOS 上使用 Docker 快速启动并运行 SQL Server,包括镜像选择、端口映射、密码配置等关键步骤,帮助开发者在本地搭建测试环境。

·#Tools/docker/macOS
0
1 min read

在M1上使用CMake编译redis6.2.14

本文介绍了如何在 macOS M1 系统上使用 CMake 编译 Redis 6.2.14 版本的详细步骤。由于 Redis 官方在 6.2.14 版本之前对 ARM 架构的支持存在问题,因此推荐使用 6.2.14 或更高版本进行编译。文章提供了从创建 CMakeLists.txt 文件到编译和安装 Redis 的完整流程,包括各个依赖库(如 hdr_histogram、hiredis、linenoise、lua)的 CMake 配置。通过本文的指南,读者可以在 macOS M1 系统上顺利编译并安装 Redis 6.2.14。

0
3 min read

数据库分页查询性能优化

深入分析 MySQL 在使用 LIMIT OFFSET 进行深度分页时的性能瓶颈,从执行器的真实行为入手,给出基于主键 ID、二级索引、游标分页和全局索引表的多种优化方案,并附带实际耗时对比与适用场景说明。

·#MySQL
0
9 min read

使用Colima在Apple Silicon上运行Oracle容器镜像

在Apple Silicon(M 系列)Mac上部署Oracle容器存在架构兼容性难题。本教程介绍如何通过Colima 配置 x86_64虚拟机并启用Rosetta支持,轻松在ARM macOS上运行 Oracle数据库镜像。

·#docker/Tools
0
2 min read

使用datagrip连接DynamoDB

本文将介绍如何在 DataGrip 中配置 DynamoDB 连接,包括所需的驱动、连接设置,以及常见问题的解决方案,帮助你更高效地管理 DynamoDB 数据。

·#Tools
0
1 min read