服务端2月17日 20:39
Python 内存管理是怎样的?引用计数、分代 GC 和内存池原理Python 内存管理分三层:引用计数(主要)、垃圾回收(处理循环引用)、内存池(减少 malloc 开销)。日常开发不需要手动管理内存,但理解机制能帮你排查内存泄漏。
## 引用计数:核心机制
每个对象维护一个引用计数 `ob_refcnt`。引用增加时 +1,引用减少时 -1,归零时立即释放。
```python
import sys
a = [1, 2, 3] # 引用计数 1
b = a # 引用计数 2
c = a # 引用计数 3
print(sys.getrefcount(a)) # 4(多 1 是因为 getre...服务端2月17日 20:42
Python 异常处理怎么写?try/except/else/finally 和自定义异常详解Python 用 try/except 捕获异常,else 放无异常时执行的代码,finally 放无论如何都执行的清理逻辑。自定义异常继承 Exception,让错误类型可区分。
## 基本结构
```python
try:
result = 10 / 0
except ZeroDivisionError:
print("除零错误")
except (TypeError, ValueError) as e:
print(f"类型或值错误: {e}")
else:
print("没有异常时执行")
finally:
print("无论如何都执行...服务端2月17日 21:44
Python 装饰器高级用法有哪些?带参数装饰器、类装饰器和 functools.wraps 详解装饰器的高级用法围绕三个问题:怎么传参数、怎么保持被装饰函数的元信息、什么时候用类而不是函数写装饰器。
## 带参数的装饰器
普通装饰器只能装饰函数,不能接收额外参数。需要参数时,加一层嵌套:
```python
def retry(max_attempts=3, delay=1):
def decorator(func):
def wrapper(*args, **kwargs):
for attempt in range(max_attempts):
try:
...服务端2月17日 21:45
Python 元类是什么?type 怎么创建类?元类什么时候该用?元类是创建类的类。普通类创建实例,元类创建类。Python 里 `class` 语句本质上是调用 `type()` 来创建类对象,元类让你拦截这个过程,在类创建时自动修改类的属性、方法、继承关系。
## Python 类的创建过程
```python
class Foo:
x = 1
```
这行代码执行时,Python 做了这件事:
```python
Foo = type('Foo', (object,), {'x': 1})
```
`type(类名, 父类元组, 属性字典)` 就是创建类的底层调用。`type` 本身就是一个元类——所有类都是 `type` 的实...服务端2月17日 22:20
NestJS 是什么?和 Express 有什么区别?核心概念和应用场景NestJS 是一个 Node.js 后端框架,底层用 Express(或 Fastify)做 HTTP 处理,上层加了模块化架构、依赖注入、装饰器语法。你可以把 NestJS 理解为 Node.js 版的 Spring Boot——同样的分层架构、同样的开箱即用。
## NestJS vs Express
Express 是一个极简的 HTTP 路由库,给你一个 `app.get()` 然后自由发挥。项目小的时候很爽,项目大了没有约束——路由、中间件、数据库连接、业务逻辑全混在一起,没人知道代码应该放哪。
NestJS 解决的是"团队协作时的代码组织"问题:
- **Module...服务端2月17日 22:21
NestJS 依赖注入是怎么工作的?Module、Provider 和注入机制详解NestJS 的依赖注入(DI)是从 Angular 借鉴的核心机制。你不需要手动创建实例和传递依赖——在 Provider 里声明,在构造函数里接收,Nest 容器自动装配。Module 是组织 Provider 的边界,控制哪些可以对外暴露、哪些只在内部使用。
## 依赖注入基本原理
没有 DI 的写法:手动创建依赖,耦合度高。
```typescript
// 没有 DI
const repo = new UserRepository();
const service = new UserService(repo);
const controller = new UserCo...服务端2月17日 22:28
NestJS 怎么写测试?单元测试、E2E 测试和 Mock 实战NestJS 内置 Jest 支持,开箱即用。测试分两层:单元测试(测 Service/Controller 的逻辑)和 E2E 测试(测整个请求链路)。关键是学会 Mock 依赖——单元测试不应该依赖数据库或外部服务。
## 单元测试:测 Service
```typescript
// users/users.service.spec.ts
describe('UsersService', () => {
let service: UsersService;
let repo: Repository<User>;
beforeEach(async () ...服务端2月17日 22:30
NestJS 怎么做实时通信?WebSocket Gateway 和 Socket.IO 集成NestJS 的 WebSocket 支持基于 Socket.IO,用装饰器风格的 Gateway 替代传统的事件监听写法。和 HTTP Controller 几乎一样的开发体验,底层自动处理连接、重连、房间管理。
## 基本 Gateway
```bash
npm install @nestjs/websockets @nestjs/platform-socket.io socket.io
```
```typescript
// chat/chat.gateway.ts
@Gateway({ cors: { origin: '*' } })
export class ChatG...服务端2月17日 22:31
NestJS 微服务怎么设计?Transport 层、消息模式和架构选型NestJS 的微服务支持不是"把单体拆成微服务"的完整方案,而是提供了跨服务通信的 Transport 层。你可以用同样的 Controller/Service 写法,底层换成 Redis/RabbitMQ/Kafka/gRPC 通信,应用代码几乎不用改。
## 微服务模式 vs 单体
NestJS 应用默认是 HTTP 单体。改成微服务只需要换一个传输层:
```typescript
// main.ts - HTTP 单体
const app = await NestFactory.create(AppModule);
await app.listen(3000);
// ...