views

Recent Posts

Go 并发模式

> 在写连接池的时候遇到了一些并发的问题,在这里记录一下。 假设我们有一个管理 Docker 连接的连接池,我们需要检查池子是否需要补充新的容器。下面是一个最简单的实现: ```go func (p *Pool) maintainPool() { p. Lock() currentCount := len(p...

TypeScript Dispatch Map

> 在写 React Query 的时候遇到了一个神奇的结构,这里记录一下。 Discriminated Dispatch Map / Type-safe Lookup Table 是一种利用联合类型+映射类型的数据类型,它在编译期强制保证:每一种 discriminator 都必须有一个处理逻辑,而且永远不会取到...

SVD 分解

我们前面介绍了矩阵的对角化分解: $$ A = X\Lambda X^{-1} $$ 但是这种分解有下面的问题: 1. 正交性问题:对角化分解中的特征向量矩阵 $X$ 通常不是正交的(除非 $A$ 是对称矩阵)。这使得计算和几何解释变得复杂。 2...

特征值与特征向量

通常情况下,当我们用一个矩阵 $A$ 去乘一个向量 $x$ 时,得到的向量 $Ax$ 会改变方向。但是存在一些特殊的向量$x$,它们被 $A$ 乘过之后,方向不改变,只是被拉长、缩短或者反向了,也即: $$ Ax = \lambda x $$...

行列式

对于 2x2 矩阵 $$ A=\begin{bmatrix}a & b\\ c & d\end{bmatrix} $$ 它的行列式为: $$ \det A = ad - bc $$ 行列式具有如下性质: 1. 交换矩阵的任意两行,行列式的值乘以 -1。 2...

正交

- 正交向量 (Orthogonal Vectors):如果两个向量 $v$ 和 $w$ 正交,那么它们的点积为0: $$ v^Tw=0 $$ - 正交子空间 (Orthogonal Subspaces):如果子空间 $V$ 和子空间 $W$ 是正交的,则 $V$ 中的**每一个向量都必须垂直于 $W$ 中的每一个向量**。 >...

前后端类型对齐设计

> 这几天在写一个项目的前后端部分时,因为之前没定义好类型后面写得很痛苦,现在整理一下自己重构后采用的一些设计。 Service 只负责定义自己需要的 DTO,如: ```typescript interface FileUploadDTO { userId: string; folderId: string; fileBuffer: Buffer; fileSize: number;...