讲之前,先唠点5毛钱的基础小知识。我们都知道 MySQL 有全局锁、表记锁和行级别锁,其中行级锁加锁规则比较复杂,不同的场景,加锁的形式还不同。
需要明确的是:对记录加锁时,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是前开后闭区间,而间隙锁是前开后开区间。而 next-key lock 在一些场景下会退化成记录锁或间隙锁。
前置概念
脏读
又称无效数据的读出,是指在数据库访问中,事务 T1 将某一值修改但是还未提交,然后事务 T2 读取该值,此后 T1 因为某种原因撤销对该值的修改并提交,这就导致了 T2 所读取到的数据是无效的,值得注意的是,脏读一般是针对于 update 操作的。
在 视图处理 和异步编程中,管理请求上下文的数据是一个常见的需求。在这篇博客中,我们将探讨如何使用 Python 的 contextvars
模块中的 Context
和 ContextVar
来实现请求上下文的缓存数据。我们将使用FastAPI
通过一个具体的代码示例来演示其用法,并对每个部分进行详细解释。
在 Python 中,方法重载是一个比较常见的需求,尤其当我们需要根据不同类型的参数执行不同的逻辑时。虽然 Python 本身并不支持传统意义上的方法重载,但我们可以通过类型注解、条件判断以及 @overload
装饰器来实现类似的功能。本文将通过一个简单的例子来演示如何处理不同参数类型的重载。
在面向对象编程中,基类通常定义了一般性的行为,而子类则可以对这些行为进行扩展或细化。利用范型(Generic) ,我们可以编写更加灵活、可重用的代码。在这种情况下,子类不仅可以继承基类的方法,还可以对方法的参数类型进行进一步限制或缩小,从而提高代码的安全性和可读性。
在容器化应用中,Docker 和 Podman 是两种常见的容器运行时工具。它们提供了非常相似的 CLI 接口,但 Podman 的无守护进程和 rootless 模式使其在某些场景下更加灵活和安全。本文将介绍如何在远程机器上安装 Podman 和 Docker,并通过 SSH 连接到远程的容器服务进行本地管理。
binfmt-misc(Miscellaneous Binary Format)是 Linux 内核提供的一种类似 Windows 上文件关联的功能,但比文件关联更强大的是,它不仅可以根据文件后缀名判断,还可以根据文件内容 (Magic Bytes) 使用不同的程序打开。一个典型的使用场景就是:使用qemu
运行其它架构平台上的二进制文件。
在实际项目中,遇到一个问题,fastapi请求的视图函数中,已经将耗时任务通过BackgroundTasks
放到后台任务去执行,但是还是会超时kill当前线程。因此,简单记录一下。
本文主要介绍了TCP协议中的连接建立(三次握手)与连接终止(四次挥手)的过程。通过具体的步骤说明,展示了TCP如何确保在网络环境中可靠地传输数据。此外,文档还介绍了TCP报文段的结构,包括端口号、序号、确认序号等字段的作用,并探讨了SYN洪泛攻击及SYN Cookies防御技术。
本文主要介绍了计算机网络中常用的两种网络协议模型——OSI七层模型和TCP/IP四层模型。其中,OSI模型包括七个层次,分别为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,每个层次都有其特定的功能和任务。而TCP/IP模型则是将OSI模型的七层简化为了四层,即应用层、传输层、网络层和网络接口层,更具有实用性和可操作性。