2025

159 posts

向量空间

向量空间的定义如下:一个向量空间是一个由“向量”组成的集合,在这个集合中,我们进行如下运算: 1. 向量加法:空间内的任意两个向量相加,结果仍然在这个空间内。 2...

使用装饰器模式设计一个 Web 框架

在讲解了装饰器模式后,下面我们基于这个模式来设计一个简单的 Web 框架。框架基于 Exoress、加入了装饰器模式的设计。 > 之所以选择 Web 框架是因为问 AI 问题的时候它举了这个的例子,因此就试着写了一个简单的。 基于装饰器模式的核心思想是**使用装饰器将核心逻辑托管给元数据**,然后在最终的应用层中系统地处理这些元数据、从而实现 Web 逻辑。 下面是 Application...

TypeScript as const

在理解 `as const` 的优点前,我们先看看如何分别用枚举和字面量类型来表示一个 `LogLevels`。 我们可以这样枚举 `LogLevels`: ```typescript enum LogLevelEnum { Debug = "DEBUG", Info = "INFO", } ``` 这样做的好处是:`LogLevelEnum`...

TypeScript: Type vs. Interface

在 TypeScript 中,`type` 和 `interface` 是两种定义类型的主要方式。它们在很多情况下功能相似,但在关键方面存在差异。下面系统梳理一下它们的相同点与不同点,以及使用的最佳实践。 在定义对象的形状或函数签名时,`type` 和 `interface` 的语法和功能几乎相同。两者都可以用来描述一个对象应该包含哪些属性和方法与定义一个函数的类型签名。。...

TypeScript 泛型

在开发过程中,我们经常会遇到需要编写功能相同、但处理的数据类型不同的组件(如函数或类)。比如下面的队列: ```typescript class QueueOfNumbers { private queue: number[] = []; public push(value: number): void { this. push(value); } public pop(): number...

线性方程

在前面的线性代数基础中,我们提到了下面的方程: $$ \begin{aligned} x - 2y &= 1\\ 3x + 2y &= 11 \end{aligned} $$ 可以写作向量的线性组合: $$ \begin{aligned} x\begin{bmatrix}1\\[4pt]3\end{bmatrix} +...

线性代数基础

在行图像中,每一个方程都代表一个几何图形。以二维空间为例,下面的方程: $$ \begin{aligned} 2x - y &= 0\\ -x + 2y &= 3 \end{aligned} $$ 在行图像的视角可以如下理解: - 第一个方程 $2x - y = 0$ 是 $x$-$y$ 平面上代表一条直线。 - 第二个方程 $-x + 2y = 3$ 是平面上的另一条直线。 -...

TypeScript Mixin

在经典的面向对象编程中,我们经常使用继承的方法:创建一个通用的基类,然后扩展它以创建更特化的类。然而,这种模型有其局限性。如果我们想从两个或多个不相关的类中组合功能,该怎么办?TypeScript 和 JavaScript 一样,**只允许一个类扩展单个父类**。这就是“**组合优于继承**”原则发挥作用的地方。而 Mixin 即是实现这一目标的强大模式。...

TypeScript 装饰器

装饰器模式是一种结构型设计模式,它允许我们**在运行时动态地向一个对象添加新的行为和职责**,同时又不改变其结构。 这种模式的核心优势在于它遵循了“开闭原则”:对扩展开放,对修改关闭。我们可以在不修改现有代码的情况下,为其增添新功能。 在 TypeScript 和 JavaScript (ES2022+) 中,装饰器是这一设计模式的语法糖。它是一种特殊的函数,以 `@expression`...

lr-shedule

Write your blog post content here. This is a new blog post...