Files
zhuangang/catalog.json
T

3884 lines
87 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": 1,
"generated_by": "tools/build_catalog.py",
"stacks": [
{
"stack": "agent-ops",
"domain": "ai",
"title": "Agent 记忆、评测与可观测性",
"index": "topics/ai/agent-ops/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "function-calling",
"domain": "ai",
"title": "Function Calling 工具调用",
"index": "topics/ai/function-calling/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "langchain",
"domain": "ai",
"title": "LangChain",
"index": "topics/ai/langchain/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "langgraph",
"domain": "ai",
"title": "LangGraph",
"index": "topics/ai/langgraph/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "lowcode",
"domain": "ai",
"title": "Dify / Coze 低代码平台",
"index": "topics/ai/lowcode/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "mcp",
"domain": "ai",
"title": "MCP 模型上下文协议",
"index": "topics/ai/mcp/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "prompt-engineering",
"domain": "ai",
"title": "提示词与上下文工程",
"index": "topics/ai/prompt-engineering/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "rag",
"domain": "ai",
"title": "RAG 检索增强生成",
"index": "topics/ai/rag/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "vector-db",
"domain": "ai",
"title": "向量数据库",
"index": "topics/ai/vector-db/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "gin",
"domain": "backend",
"title": "Gin Web 框架",
"index": "topics/backend/gin/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/gin/examples/unified-api"
]
},
{
"stack": "go",
"domain": "backend",
"title": "Go 语言",
"index": "topics/backend/go/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/go/examples/batch-fetch"
]
},
{
"stack": "grpc-microservices",
"domain": "backend",
"title": "gRPC 与微服务",
"index": "topics/backend/grpc-microservices/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/grpc-microservices/examples/grpc-user",
"topics/backend/grpc-microservices/examples/resilience"
]
},
{
"stack": "mq",
"domain": "backend",
"title": "消息队列(RabbitMQ / Kafka)",
"index": "topics/backend/mq/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/mq/examples/delay-cancel",
"topics/backend/mq/examples/outbox"
]
},
{
"stack": "mysql",
"domain": "backend",
"title": "MySQL",
"index": "topics/backend/mysql/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/mysql/examples/deep-pagination"
]
},
{
"stack": "postgresql",
"domain": "backend",
"title": "PostgreSQL",
"index": "topics/backend/postgresql/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/postgresql/examples/order-state"
]
},
{
"stack": "redis",
"domain": "backend",
"title": "Redis",
"index": "topics/backend/redis/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/redis/examples/stock-lock-ratelimit"
]
},
{
"stack": "cicd",
"domain": "devops",
"title": "CI/CD",
"index": "topics/devops/cicd/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/cicd/examples/pipeline"
]
},
{
"stack": "docker",
"domain": "devops",
"title": "Docker 与 Compose",
"index": "topics/devops/docker/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/docker/examples/go-api-compose"
]
},
{
"stack": "git",
"domain": "devops",
"title": "Git",
"index": "topics/devops/git/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/git/examples/git-lab"
]
},
{
"stack": "linux",
"domain": "devops",
"title": "Linux 运维基础",
"index": "topics/devops/linux/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/linux/examples/log-analysis"
]
},
{
"stack": "nginx",
"domain": "devops",
"title": "Nginx",
"index": "topics/devops/nginx/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/nginx/examples/gateway"
]
},
{
"stack": "fe-testing-perf",
"domain": "frontend",
"title": "前端测试与性能",
"index": "topics/frontend/fe-testing-perf/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "react",
"domain": "frontend",
"title": "React",
"index": "topics/frontend/react/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "ssr",
"domain": "frontend",
"title": "SSR(Nuxt / Next.js)",
"index": "topics/frontend/ssr/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "typescript",
"domain": "frontend",
"title": "TypeScript",
"index": "topics/frontend/typescript/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "vite",
"domain": "frontend",
"title": "Vite",
"index": "topics/frontend/vite/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "vue",
"domain": "frontend",
"title": "Vue 3 + Pinia + Router",
"index": "topics/frontend/vue/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "webpack",
"domain": "frontend",
"title": "Webpack",
"index": "topics/frontend/webpack/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "asyncio",
"domain": "python",
"title": "asyncio 异步编程",
"index": "topics/python/asyncio/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "fastapi",
"domain": "python",
"title": "FastAPI",
"index": "topics/python/fastapi/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "python",
"domain": "python",
"title": "Python 语言",
"index": "topics/python/python/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
}
],
"items": [
{
"id": "ai.agent-ops.index",
"title": "Agent 记忆、评测与可观测性",
"type": "index",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
12,
13
],
"order": null,
"path": "topics/ai/agent-ops/index.md",
"sections": []
},
{
"id": "ai.function-calling.index",
"title": "Function Calling 工具调用",
"type": "index",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10
],
"order": null,
"path": "topics/ai/function-calling/index.md",
"sections": []
},
{
"id": "ai.langchain.index",
"title": "LangChain",
"type": "index",
"domain": "ai",
"stack": [
"langchain"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
6,
11
],
"order": null,
"path": "topics/ai/langchain/index.md",
"sections": []
},
{
"id": "ai.langgraph.index",
"title": "LangGraph",
"type": "index",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
11,
12
],
"order": null,
"path": "topics/ai/langgraph/index.md",
"sections": []
},
{
"id": "ai.lowcode.index",
"title": "Dify / Coze 低代码平台",
"type": "index",
"domain": "ai",
"stack": [
"lowcode"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
13
],
"order": null,
"path": "topics/ai/lowcode/index.md",
"sections": []
},
{
"id": "ai.mcp.index",
"title": "MCP 模型上下文协议",
"type": "index",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10,
11
],
"order": null,
"path": "topics/ai/mcp/index.md",
"sections": []
},
{
"id": "ai.prompt-engineering.index",
"title": "提示词与上下文工程",
"type": "index",
"domain": "ai",
"stack": [
"prompt-engineering"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
11,
13
],
"order": null,
"path": "topics/ai/prompt-engineering/index.md",
"sections": []
},
{
"id": "ai.rag.index",
"title": "RAG 检索增强生成",
"type": "index",
"domain": "ai",
"stack": [
"rag"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
6
],
"order": null,
"path": "topics/ai/rag/index.md",
"sections": []
},
{
"id": "ai.vector-db.index",
"title": "向量数据库",
"type": "index",
"domain": "ai",
"stack": [
"vector-db"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
6
],
"order": null,
"path": "topics/ai/vector-db/index.md",
"sections": []
},
{
"id": "backend.gin.index",
"title": "Gin Web 框架",
"type": "index",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Go",
"Gin",
"REST",
"中间件"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
2,
3
],
"order": null,
"path": "topics/backend/gin/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.gin.interview",
"title": "Gin 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"Web",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.gin.routing-binding",
"backend.gin.middleware-auth",
"backend.gin.scenario.unified-api-response"
],
"est_hours": null,
"week": [
1,
2,
3,
16
],
"order": null,
"path": "topics/backend/gin/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.gin.middleware-auth",
"title": "中间件、JWT 鉴权和统一错误处理",
"type": "lesson",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"中间件",
"JWT",
"鉴权",
"错误处理"
],
"level": "intermediate",
"prerequisites": [
"backend.gin.routing-binding",
"backend.go.errors-concurrency"
],
"related": [
"backend.gin.scenario.unified-api-response",
"backend.gin.interview"
],
"est_hours": 3,
"week": [
2,
3
],
"order": 2,
"path": "topics/backend/gin/02-middleware-auth.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.gin.routing-binding",
"title": "路由、参数绑定和校验",
"type": "lesson",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"路由",
"参数校验",
"REST"
],
"level": "basic",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.gin.middleware-auth",
"backend.gin.interview"
],
"est_hours": 3,
"week": [
1
],
"order": 1,
"path": "topics/backend/gin/01-routing-binding.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.gin.scenario.unified-api-response",
"title": "企业后台接口规范:统一响应、错误码、请求 ID 和参数校验",
"type": "scenario",
"domain": "backend",
"stack": [
"gin",
"go"
],
"tags": [
"接口规范",
"错误码",
"请求ID",
"可观测性",
"参数校验"
],
"level": "intermediate",
"prerequisites": [
"backend.gin.middleware-auth"
],
"related": [
"backend.gin.interview"
],
"est_hours": 2,
"week": [
2,
3
],
"order": null,
"path": "topics/backend/gin/scenarios/unified-api-response.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.go.basics-types",
"title": "语法、类型和接口(对照 TypeScript)",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"切片",
"map",
"结构体",
"接口"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.go.interview"
],
"est_hours": 4,
"week": [
1
],
"order": 1,
"path": "topics/backend/go/01-basics-types.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.go.errors-concurrency",
"title": "错误处理和并发:goroutine、channel、context",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"错误处理",
"goroutine",
"channel",
"context",
"并发"
],
"level": "intermediate",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.go.scenario.batch-third-party-calls",
"backend.go.interview"
],
"est_hours": 4,
"week": [
1,
3
],
"order": 2,
"path": "topics/backend/go/02-errors-concurrency.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.go.index",
"title": "Go 语言",
"type": "index",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"后端",
"并发"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
2,
3,
14
],
"order": null,
"path": "topics/backend/go/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.go.interview",
"title": "Go 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.go.basics-types",
"backend.go.errors-concurrency",
"backend.go.testing-engineering"
],
"est_hours": null,
"week": [
1,
3,
16
],
"order": null,
"path": "topics/backend/go/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.go.scenario.batch-third-party-calls",
"title": "批量调用第三方接口:并发控制、超时和部分失败",
"type": "scenario",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"并发",
"超时",
"第三方接口",
"限流",
"重试"
],
"level": "intermediate",
"prerequisites": [
"backend.go.errors-concurrency"
],
"related": [
"backend.go.interview",
"backend.redis.lock-ratelimit"
],
"est_hours": 2,
"week": [
3
],
"order": null,
"path": "topics/backend/go/scenarios/batch-third-party-calls.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.go.testing-engineering",
"title": "测试和工程化:表格驱动测试、httptest、模块、项目结构",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"测试",
"httptest",
"go mod",
"项目结构"
],
"level": "intermediate",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.go.interview",
"backend.gin.routing-binding"
],
"est_hours": 3,
"week": [
1,
2,
3
],
"order": 3,
"path": "topics/backend/go/03-testing-engineering.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.governance",
"title": "服务治理:超时、重试、熔断、限流、注册发现、链路追踪、分布式事务",
"type": "lesson",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"超时",
"重试",
"熔断",
"限流",
"服务发现",
"链路追踪",
"Saga",
"分布式事务"
],
"level": "advanced",
"prerequisites": [
"backend.grpc-microservices.grpc-proto"
],
"related": [
"backend.grpc-microservices.scenario.monolith-split",
"backend.mq.reliability",
"backend.grpc-microservices.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/backend/grpc-microservices/02-governance.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.grpc-proto",
"title": "gRPC 和 Protobuf:IDL、四种调用方式、错误码、超时、拦截器",
"type": "lesson",
"domain": "backend",
"stack": [
"grpc-microservices",
"go"
],
"tags": [
"gRPC",
"Protobuf",
"HTTP/2",
"拦截器",
"deadline"
],
"level": "intermediate",
"prerequisites": [
"backend.go.errors-concurrency"
],
"related": [
"backend.grpc-microservices.governance",
"backend.grpc-microservices.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/backend/grpc-microservices/01-grpc-proto.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.index",
"title": "gRPC 与微服务",
"type": "index",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"gRPC",
"Protobuf",
"微服务",
"服务治理"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/grpc-microservices/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.grpc-microservices.interview",
"title": "gRPC 与微服务面试题",
"type": "interview",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"gRPC",
"微服务",
"服务治理",
"分布式事务",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"backend.grpc-microservices.grpc-proto",
"backend.grpc-microservices.governance"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/grpc-microservices/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.grpc-microservices.scenario.monolith-split",
"title": "单体拆分:从单体到“订单 + 用户”两个服务",
"type": "scenario",
"domain": "backend",
"stack": [
"grpc-microservices",
"go",
"mq"
],
"tags": [
"单体拆分",
"绞杀者模式",
"数据拆分",
"gRPC",
"灰度"
],
"level": "advanced",
"prerequisites": [
"backend.grpc-microservices.governance"
],
"related": [
"backend.grpc-microservices.interview",
"backend.mq.reliability"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/grpc-microservices/scenarios/monolith-split.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mq.index",
"title": "消息队列(RabbitMQ / Kafka)",
"type": "index",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"消息队列",
"RabbitMQ",
"Kafka",
"异步",
"削峰"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
14
],
"order": null,
"path": "topics/backend/mq/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.mq.interview",
"title": "消息队列面试题",
"type": "interview",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"RabbitMQ",
"Kafka",
"可靠性",
"幂等",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.mq.rabbitmq",
"backend.mq.kafka",
"backend.mq.reliability"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/mq/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.mq.kafka",
"title": "Kafka:主题、分区、消费组、位移和顺序",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"Kafka",
"分区",
"消费组",
"offset",
"顺序消息",
"ISR"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.reliability",
"backend.mq.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/backend/mq/02-kafka.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.rabbitmq",
"title": "RabbitMQ:交换机、队列、确认机制、死信和延迟",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"RabbitMQ",
"AMQP",
"交换机",
"ACK",
"死信",
"延迟队列"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.mq.reliability",
"backend.mq.scenario.delayed-order-cancel",
"backend.mq.interview"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 1,
"path": "topics/backend/mq/01-rabbitmq.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.reliability",
"title": "可靠性:不丢消息、幂等消费、发件箱模式、积压处理",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"可靠投递",
"幂等",
"发件箱",
"Outbox",
"消息积压",
"最终一致性"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.kafka",
"backend.mq.scenario.delayed-order-cancel",
"backend.mq.interview",
"backend.postgresql.scenario.order-state-audit"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 3,
"path": "topics/backend/mq/03-reliability.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.scenario.delayed-order-cancel",
"title": "订单超时自动取消:延迟消息、幂等和兜底扫描",
"type": "scenario",
"domain": "backend",
"stack": [
"mq",
"redis",
"mysql"
],
"tags": [
"延迟消息",
"死信",
"订单超时",
"幂等",
"定时任务"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.reliability",
"backend.redis.scenario.stock-reservation",
"backend.mq.interview"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/mq/scenarios/delayed-order-cancel.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mysql.index",
"title": "MySQL",
"type": "index",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"数据库",
"SQL",
"MySQL",
"InnoDB"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
2,
14
],
"order": null,
"path": "topics/backend/mysql/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.mysql.index-explain",
"title": "InnoDB 索引:B+ 树、聚簇索引、回表、最左前缀和 EXPLAIN",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"索引",
"B+树",
"聚簇索引",
"回表",
"EXPLAIN"
],
"level": "basic",
"prerequisites": [
"backend.postgresql.schema-sql"
],
"related": [
"backend.mysql.tx-locks-mvcc",
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": 3,
"week": [
2
],
"order": 1,
"path": "topics/backend/mysql/01-index-explain.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mysql.interview",
"title": "MySQL 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"MySQL",
"InnoDB",
"索引",
"事务",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.mysql.index-explain",
"backend.mysql.tx-locks-mvcc",
"backend.mysql.ops-scale",
"backend.postgresql.interview"
],
"est_hours": null,
"week": [
2,
14,
16
],
"order": null,
"path": "topics/backend/mysql/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.mysql.ops-scale",
"title": "运维与扩展:慢查询、主从复制、读写分离、分库分表",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"慢查询",
"主从复制",
"读写分离",
"分库分表",
"在线 DDL"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.tx-locks-mvcc"
],
"related": [
"backend.mysql.scenario.deep-pagination",
"backend.mysql.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 3,
"path": "topics/backend/mysql/03-ops-scale.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mysql.scenario.deep-pagination",
"title": "大表深分页和历史数据:游标分页、延迟关联、归档",
"type": "scenario",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"深分页",
"游标分页",
"延迟关联",
"归档",
"大表"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.index-explain"
],
"related": [
"backend.mysql.ops-scale",
"backend.mysql.interview"
],
"est_hours": 2,
"week": [
2,
14
],
"order": null,
"path": "topics/backend/mysql/scenarios/deep-pagination.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mysql.tx-locks-mvcc",
"title": "事务、隔离级别、MVCC 和锁(行锁、间隙锁、死锁)",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"事务",
"隔离级别",
"MVCC",
"间隙锁",
"死锁",
"undo log",
"redo log"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.index-explain"
],
"related": [
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": 4,
"week": [
2,
14
],
"order": 2,
"path": "topics/backend/mysql/02-tx-locks-mvcc.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.postgresql.index",
"title": "PostgreSQL",
"type": "index",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"数据库",
"SQL",
"PostgreSQL"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
2,
3,
6
],
"order": null,
"path": "topics/backend/postgresql/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.postgresql.index-tx-mvcc",
"title": "索引、EXPLAIN、事务、隔离级别和 MVCC",
"type": "lesson",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"索引",
"EXPLAIN",
"事务",
"隔离级别",
"MVCC",
"锁"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.schema-sql"
],
"related": [
"backend.postgresql.scenario.order-state-audit",
"backend.mysql.tx-locks-mvcc",
"backend.postgresql.interview"
],
"est_hours": 4,
"week": [
2,
3
],
"order": 2,
"path": "topics/backend/postgresql/02-index-tx-mvcc.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.postgresql.interview",
"title": "PostgreSQL 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"PostgreSQL",
"SQL",
"事务",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.postgresql.schema-sql",
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": null,
"week": [
2,
16
],
"order": null,
"path": "topics/backend/postgresql/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.postgresql.scenario.order-state-audit",
"title": "订单状态机:状态流转、乐观锁和审计日志",
"type": "scenario",
"domain": "backend",
"stack": [
"postgresql",
"go"
],
"tags": [
"状态机",
"乐观锁",
"审计",
"并发",
"事务"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.index-tx-mvcc"
],
"related": [
"backend.postgresql.interview",
"backend.mq.reliability"
],
"est_hours": 2,
"week": [
2,
3
],
"order": null,
"path": "topics/backend/postgresql/scenarios/order-state-audit.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.postgresql.schema-sql",
"title": "表设计和 SQL:约束、JOIN、CTE、窗口函数、JSONB、UPSERT",
"type": "lesson",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"SQL",
"表设计",
"约束",
"JOIN",
"窗口函数",
"JSONB"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.postgresql.index-tx-mvcc",
"backend.postgresql.interview"
],
"est_hours": 4,
"week": [
2
],
"order": 1,
"path": "topics/backend/postgresql/01-schema-sql.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.cache-patterns",
"title": "缓存模式:旁路缓存、穿透 / 击穿 / 雪崩、一致性",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"旁路缓存",
"缓存穿透",
"缓存击穿",
"缓存雪崩",
"一致性",
"singleflight"
],
"level": "intermediate",
"prerequisites": [
"backend.redis.data-structures"
],
"related": [
"backend.redis.lock-ratelimit",
"backend.redis.interview"
],
"est_hours": 3,
"week": [
3,
6
],
"order": 2,
"path": "topics/backend/redis/02-cache-patterns.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.data-structures",
"title": "数据结构和常用命令:String、Hash、List、Set、ZSet、Stream",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"String",
"Hash",
"ZSet",
"Stream",
"过期时间"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.redis.cache-patterns",
"backend.redis.interview"
],
"est_hours": 2,
"week": [
3
],
"order": 1,
"path": "topics/backend/redis/01-data-structures.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.index",
"title": "Redis",
"type": "index",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"缓存",
"Redis",
"分布式锁",
"限流"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
6,
14
],
"order": null,
"path": "topics/backend/redis/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.redis.interview",
"title": "Redis 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"Redis",
"缓存",
"分布式锁",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.redis.data-structures",
"backend.redis.cache-patterns",
"backend.redis.lock-ratelimit"
],
"est_hours": null,
"week": [
3,
14,
16
],
"order": null,
"path": "topics/backend/redis/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.redis.lock-ratelimit",
"title": "分布式锁和限流:SET NX、Lua、令牌释放、固定窗口与滑动窗口",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"分布式锁",
"Lua",
"限流",
"滑动窗口",
"令牌桶"
],
"level": "intermediate",
"prerequisites": [
"backend.redis.data-structures"
],
"related": [
"backend.redis.scenario.stock-reservation",
"backend.redis.interview",
"backend.gin.middleware-auth"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 3,
"path": "topics/backend/redis/03-lock-ratelimit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.scenario.stock-reservation",
"title": "抢购库存预扣:Lua 原子扣减、防重复下单、异步落库",
"type": "scenario",
"domain": "backend",
"stack": [
"redis",
"mq",
"mysql"
],
"tags": [
"秒杀",
"库存",
"Lua",
"防超卖",
"削峰"
],
"level": "advanced",
"prerequisites": [
"backend.redis.lock-ratelimit"
],
"related": [
"backend.redis.lock-ratelimit",
"backend.mq.reliability",
"backend.redis.interview"
],
"est_hours": 3,
"week": [
14
],
"order": null,
"path": "topics/backend/redis/scenarios/stock-reservation.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.cicd.index",
"title": "CI/CD",
"type": "index",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"CI/CD",
"持续集成",
"持续部署",
"流水线",
"发布"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
7,
14
],
"order": null,
"path": "topics/devops/cicd/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.cicd.interview",
"title": "CI/CD 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"CI/CD",
"发布",
"回滚",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"devops.cicd.pipeline",
"devops.cicd.release-rollback"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/devops/cicd/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.cicd.pipeline",
"title": "流水线设计:触发、阶段、缓存、服务容器、密钥",
"type": "lesson",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"流水线",
"GitHub Actions",
"缓存",
"服务容器",
"密钥管理"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.cicd.release-rollback",
"devops.cicd.interview",
"devops.git.index"
],
"est_hours": 2,
"week": [
3,
7
],
"order": 1,
"path": "topics/devops/cicd/01-pipeline.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.cicd.release-rollback",
"title": "发布与回滚:镜像标签、环境、滚动 / 蓝绿 / 金丝雀、数据库迁移",
"type": "lesson",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"发布策略",
"回滚",
"蓝绿发布",
"金丝雀",
"数据库迁移",
"特性开关"
],
"level": "intermediate",
"prerequisites": [
"devops.cicd.pipeline"
],
"related": [
"devops.cicd.scenario.multi-lang-pipeline",
"devops.nginx.https-stream-limit",
"devops.cicd.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/devops/cicd/02-release-rollback.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.cicd.scenario.multi-lang-pipeline",
"title": "多语言仓库的流水线:Go + Python + 前端,按改动构建、自动部署和回滚",
"type": "scenario",
"domain": "devops",
"stack": [
"cicd",
"docker",
"go",
"python",
"vue"
],
"tags": [
"Monorepo",
"流水线",
"路径过滤",
"自动部署",
"回滚"
],
"level": "intermediate",
"prerequisites": [
"devops.cicd.pipeline"
],
"related": [
"devops.cicd.release-rollback",
"devops.cicd.interview",
"devops.docker.scenario.compose-dev-env"
],
"est_hours": 2,
"week": [
14,
15
],
"order": null,
"path": "topics/devops/cicd/scenarios/multi-lang-pipeline.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.docker.compose-network-volume",
"title": "Compose、网络和数据卷:多服务编排、健康检查、环境变量",
"type": "lesson",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Compose",
"网络",
"数据卷",
"健康检查",
"环境变量"
],
"level": "basic",
"prerequisites": [
"devops.docker.image-dockerfile"
],
"related": [
"devops.docker.scenario.compose-dev-env",
"devops.docker.interview"
],
"est_hours": 2,
"week": [
3,
6,
13
],
"order": 2,
"path": "topics/devops/docker/02-compose-network-volume.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.docker.image-dockerfile",
"title": "镜像和 Dockerfile:分层缓存、多阶段构建、非 root、信号处理",
"type": "lesson",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Dockerfile",
"多阶段构建",
"镜像分层",
"构建缓存",
"distroless"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.docker.compose-network-volume",
"devops.docker.interview"
],
"est_hours": 3,
"week": [
3,
6
],
"order": 1,
"path": "topics/devops/docker/01-image-dockerfile.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.docker.index",
"title": "Docker 与 Compose",
"type": "index",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Docker",
"容器",
"Compose",
"镜像"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
6,
13,
14
],
"order": null,
"path": "topics/devops/docker/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.docker.interview",
"title": "Docker 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Docker",
"容器",
"Compose",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.docker.image-dockerfile",
"devops.docker.compose-network-volume"
],
"est_hours": null,
"week": [
3,
14,
16
],
"order": null,
"path": "topics/devops/docker/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.docker.scenario.compose-dev-env",
"title": "一条命令拉起开发环境:Go API + Python AI 服务 + PostgreSQL + Redis",
"type": "scenario",
"domain": "devops",
"stack": [
"docker",
"go",
"fastapi",
"postgresql",
"redis"
],
"tags": [
"Compose",
"开发环境",
"多语言",
"健康检查",
"配置管理"
],
"level": "intermediate",
"prerequisites": [
"devops.docker.compose-network-volume"
],
"related": [
"devops.docker.interview",
"devops.nginx.index"
],
"est_hours": 2,
"week": [
3,
13,
14
],
"order": null,
"path": "topics/devops/docker/scenarios/compose-dev-env.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.git.branch-commit",
"title": "分支模型和提交规范:主干开发、Git Flow、Conventional Commits、代码评审",
"type": "lesson",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"分支模型",
"Git Flow",
"主干开发",
"提交规范",
"Code Review"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.git.merge-rebase-recovery",
"devops.cicd.pipeline",
"devops.git.interview"
],
"est_hours": 1.5,
"week": [
1,
8
],
"order": 1,
"path": "topics/devops/git/01-branch-commit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.git.index",
"title": "Git",
"type": "index",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"Git",
"版本控制",
"分支",
"协作"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
8,
15
],
"order": null,
"path": "topics/devops/git/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.git.interview",
"title": "Git 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"Git",
"分支",
"撤销",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.git.branch-commit",
"devops.git.merge-rebase-recovery"
],
"est_hours": null,
"week": [
15,
16
],
"order": null,
"path": "topics/devops/git/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.git.merge-rebase-recovery",
"title": "合并、变基和撤销:merge / rebase / cherry-pick、revert / reset、reflog 找回",
"type": "lesson",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"merge",
"rebase",
"cherry-pick",
"revert",
"reset",
"reflog",
"stash"
],
"level": "intermediate",
"prerequisites": [
"devops.git.branch-commit"
],
"related": [
"devops.git.scenario.hotfix-and-leaked-secret",
"devops.git.interview"
],
"est_hours": 2,
"week": [
8,
15
],
"order": 2,
"path": "topics/devops/git/02-merge-rebase-recovery.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.git.scenario.hotfix-and-leaked-secret",
"title": "线上紧急修复和密钥误提交:热修复分支、cherry-pick、清理历史和轮换密钥",
"type": "scenario",
"domain": "devops",
"stack": [
"git",
"cicd"
],
"tags": [
"热修复",
"cherry-pick",
"密钥泄露",
"历史清理",
"安全"
],
"level": "intermediate",
"prerequisites": [
"devops.git.merge-rebase-recovery"
],
"related": [
"devops.git.interview",
"devops.cicd.pipeline"
],
"est_hours": 1.5,
"week": [
8,
15
],
"order": null,
"path": "topics/devops/git/scenarios/hotfix-and-leaked-secret.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.linux.commands",
"title": "常用命令:文件、文本处理、进程、端口、权限、systemd",
"type": "lesson",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"grep",
"awk",
"ps",
"ss",
"chmod",
"systemd",
"journalctl"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.linux.troubleshooting",
"devops.linux.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/devops/linux/01-commands.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.linux.index",
"title": "Linux 运维基础",
"type": "index",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"Linux",
"命令行",
"运维",
"线上排查"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/devops/linux/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.linux.interview",
"title": "Linux 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"Linux",
"命令",
"排查",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.linux.commands",
"devops.linux.troubleshooting"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/devops/linux/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.linux.scenario.incident-troubleshooting",
"title": "线上故障排查:接口变慢、磁盘写满、进程被 OOM 杀掉",
"type": "scenario",
"domain": "devops",
"stack": [
"linux",
"go",
"nginx"
],
"tags": [
"故障排查",
"OOM",
"磁盘满",
"pprof",
"复盘"
],
"level": "intermediate",
"prerequisites": [
"devops.linux.troubleshooting"
],
"related": [
"devops.linux.interview",
"devops.nginx.interview"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/devops/linux/scenarios/incident-troubleshooting.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.linux.troubleshooting",
"title": "线上排查:CPU、内存、磁盘、网络、日志的定位思路",
"type": "lesson",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"排查",
"top",
"负载",
"OOM",
"磁盘",
"TIME_WAIT",
"pprof"
],
"level": "intermediate",
"prerequisites": [
"devops.linux.commands"
],
"related": [
"devops.linux.scenario.incident-troubleshooting",
"devops.linux.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/devops/linux/02-troubleshooting.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.https-stream-limit",
"title": "HTTPS、SSE / WebSocket、限流和灰度",
"type": "lesson",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"HTTPS",
"TLS",
"SSE",
"WebSocket",
"limit_req",
"灰度发布"
],
"level": "intermediate",
"prerequisites": [
"devops.nginx.proxy-static"
],
"related": [
"devops.nginx.scenario.ai-gateway-sse-canary",
"devops.nginx.interview"
],
"est_hours": 3,
"week": [
7,
14
],
"order": 2,
"path": "topics/devops/nginx/02-https-stream-limit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.index",
"title": "Nginx",
"type": "index",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"Nginx",
"反向代理",
"HTTPS",
"负载均衡",
"SSE"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
7,
14
],
"order": null,
"path": "topics/devops/nginx/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.nginx.interview",
"title": "Nginx 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"Nginx",
"反向代理",
"负载均衡",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.nginx.proxy-static",
"devops.nginx.https-stream-limit"
],
"est_hours": null,
"week": [
7,
14,
16
],
"order": null,
"path": "topics/devops/nginx/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.nginx.proxy-static",
"title": "反向代理、负载均衡和静态资源:location 匹配、proxy_pass、SPA 回退",
"type": "lesson",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"反向代理",
"location",
"proxy_pass",
"upstream",
"try_files",
"gzip"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.nginx.https-stream-limit",
"devops.nginx.interview"
],
"est_hours": 2,
"week": [
3,
7
],
"order": 1,
"path": "topics/devops/nginx/01-proxy-static.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.scenario.ai-gateway-sse-canary",
"title": "AI 应用网关:流式输出不卡顿、按用户灰度新版本",
"type": "scenario",
"domain": "devops",
"stack": [
"nginx",
"fastapi"
],
"tags": [
"SSE",
"流式输出",
"灰度发布",
"限流",
"网关"
],
"level": "intermediate",
"prerequisites": [
"devops.nginx.https-stream-limit"
],
"related": [
"devops.nginx.interview",
"devops.docker.scenario.compose-dev-env"
],
"est_hours": 2,
"week": [
7,
13,
14
],
"order": null,
"path": "topics/devops/nginx/scenarios/ai-gateway-sse-canary.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.fe-testing-perf.index",
"title": "前端测试与性能",
"type": "index",
"domain": "frontend",
"stack": [
"fe-testing-perf"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/fe-testing-perf/index.md",
"sections": []
},
{
"id": "frontend.react.index",
"title": "React",
"type": "index",
"domain": "frontend",
"stack": [
"react"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/react/index.md",
"sections": []
},
{
"id": "frontend.ssr.index",
"title": "SSR(Nuxt / Next.js)",
"type": "index",
"domain": "frontend",
"stack": [
"ssr"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/ssr/index.md",
"sections": []
},
{
"id": "frontend.typescript.index",
"title": "TypeScript",
"type": "index",
"domain": "frontend",
"stack": [
"typescript"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/typescript/index.md",
"sections": []
},
{
"id": "frontend.vite.index",
"title": "Vite",
"type": "index",
"domain": "frontend",
"stack": [
"vite"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vite/index.md",
"sections": []
},
{
"id": "frontend.vue.index",
"title": "Vue 3 + Pinia + Router",
"type": "index",
"domain": "frontend",
"stack": [
"vue"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vue/index.md",
"sections": []
},
{
"id": "frontend.webpack.index",
"title": "Webpack",
"type": "index",
"domain": "frontend",
"stack": [
"webpack"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/webpack/index.md",
"sections": []
},
{
"id": "plan.index",
"title": "转岗计划总纲",
"type": "index",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "plan/README.md",
"sections": [
"1. 背景、起点和目标",
"2. 技术栈(已确定)",
"3. 十六周总路线",
"4. 岗位要求对照",
"5. 学习原则和每周文件的写法",
"6. 时间不够怎么砍",
"7. 阶段 0~4 和五个学习重点",
"8. 案例卡模板(直接复制)",
"9. 每周节奏和戒律",
"10. 脱敏和保密",
"11. 简历和投递建议",
"12. 仓库结构、文件清单和换设备",
"13. 进度记录",
"14. 终点验收清单(全部勾选才算完结)"
]
},
{
"id": "plan.week01",
"title": "第 1 周:Go 基础 + Gin 写 REST 接口",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
1
],
"order": 1,
"path": "plan/week01-go-gin.md",
"sections": [
"本周最终目录",
"第 1 天:环境、变量、函数和错误返回",
"第 2 天:切片、map、结构体、方法、接口",
"第 3 天:错误包装、并发、单元测试",
"第 4 天:从 net/http 到 Gin",
"第 5 天:分层:model / store / handler",
"第 6 天:中间件和接口测试",
"第 7 天:配置、优雅关机、接前端",
"本周自查清单"
]
},
{
"id": "plan.week02",
"title": "第 2 周:数据库(PostgreSQL 为主,兼顾 MySQL)+ 注册登录与 JWT",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"postgresql",
"mysql"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
2
],
"order": 2,
"path": "plan/week02-db-auth.md",
"sections": [
"本周最终目录(在上周 `todo-api/backend` 基础上新增)",
"第 1 天:用 Docker 跑 PostgreSQL,写基础 SQL 和表设计",
"第 2 天:多表查询、索引、EXPLAIN",
"第 3 天:迁移和 Go 访问数据库(pgx)",
"第 4 天:事务、隔离级别、幂等写入",
"第 5 天:密码哈希和 JWT",
"第 6 天:注册、登录、鉴权中间件",
"第 7 天:配置切换、接口测试、集成测试、收尾",
"本周自查清单"
]
},
{
"id": "plan.week03",
"title": "第 3 周:项目一“团队任务看板”:权限 + Redis + 消息队列 + Docker 部署",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"postgresql",
"redis",
"mq",
"docker",
"nginx",
"cicd"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
3
],
"order": 3,
"path": "plan/week03-project1.md",
"sections": [
"本周最终目录",
"第 1 天:看板建模和权限",
"第 2 天:看板和任务接口、拖动排序的事务",
"第 3 天:Redis 基础和缓存",
"第 4 天:限流和分布式锁",
"第 5 天:消息队列入门(Redis Streams),了解 RabbitMQ / Kafka",
"第 6 天:Docker、Compose、Nginx",
"第 7 天:部署到服务器 + CI + 收尾",
"本周自查清单"
]
},
{
"id": "plan.week04",
"title": "第 4 周:Python 速成(给 JS 开发者)+ FastAPI 基础",
"type": "week",
"domain": "plan",
"stack": [
"python",
"asyncio",
"fastapi"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
4
],
"order": 4,
"path": "plan/week04-python.md",
"sections": [
"本周最终目录",
"第 1 天:包管理和基础语法",
"第 2 天:类型标注、dataclass、Protocol、pytest",
"第 3 天:异常、上下文管理器、文件和日志",
"第 4 天:asyncio(本周最重要)",
"第 5 天:pydantic 和配置",
"第 6 天:httpx 异步请求、重试、测试替身",
"第 7 天:FastAPI(Uvicorn、依赖注入、中间件、鉴权、生命周期、SSE)",
"本周自查清单"
]
},
{
"id": "plan.week05",
"title": "第 5 周:RAG 知识库问答(上)——手写主流程",
"type": "week",
"domain": "plan",
"stack": [
"asyncio",
"fastapi",
"rag",
"vector-db",
"prompt-engineering"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
5
],
"order": 5,
"path": "plan/week05-rag-1.md",
"sections": [
"项目二总览",
"第 1 天:RAG 概念、项目初始化、模型客户端",
"第 2 天:加载和切分",
"第 3 天:向量库和幂等入库",
"第 4 天:检索、提示词、带引用的生成",
"第 5 天:FastAPI 接口和流式输出",
"第 6 天:命令行、接入真实模型、人工试验",
"第 7 天:整理、README、复盘",
"本周自查清单"
]
},
{
"id": "plan.week06",
"title": "第 6 周:RAG 知识库问答(下)——评测、混合检索、重排、记忆、缓存、LangChain、部署",
"type": "week",
"domain": "plan",
"stack": [
"postgresql",
"redis",
"docker",
"rag",
"vector-db",
"langchain"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
6
],
"order": 6,
"path": "plan/week06-rag-2.md",
"sections": [
"第 1 天:评测集和指标",
"第 2 天:BM25 关键词检索 + RRF 混合检索",
"第 3 天:重排(Rerank)",
"第 4 天:多轮追问——问题改写 + 会话短期记忆(Redis)",
"第 5 天:缓存、配置组装、多轮对话接口",
"第 6 天:LangChain 对照实现 + Milvus / pgvector",
"第 7 天:Docker Compose 部署 + 复盘",
"本周自查清单"
]
},
{
"id": "plan.week07",
"title": "第 7 周:前端工程化查漏补缺 + 两个项目的界面",
"type": "week",
"domain": "plan",
"stack": [
"nginx",
"cicd",
"vue",
"react",
"typescript",
"vite",
"webpack",
"ssr",
"fe-testing-perf"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
7
],
"order": 7,
"path": "plan/week07-frontend.md",
"sections": [
"本周最终目录",
"第 1 天:pnpm monorepo、TS 严格配置、ESLint + Prettier、共享请求封装",
"第 2 天:SSE 流式解析(fetch + ReadableStream)",
"第 3 天:Vue 3 应用——项目一的任务看板",
"第 4 天:React 应用——项目二的知识库问答界面",
"第 5 天:构建工具和性能优化",
"第 6 天:SSR 基础(Nuxt / Next.js)",
"第 7 天:前端 CI、构建产物部署、复盘",
"本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求)"
]
},
{
"id": "plan.week08",
"title": "第 8 周:阶段 0 盘点 + 阶段 1 读通与画图",
"type": "week",
"domain": "plan",
"stack": [
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
8
],
"order": 8,
"path": "plan/week08-inventory-architecture.md",
"sections": [
"第 1 天:阶段 0——盘点",
"第 2 天:脱敏机制——提交前自动检查",
"第 3 天:阶段 1——怎么读一个大项目",
"第 4 天:画架构图,标出断点",
"第 5 天:接口职责表",
"第 6 天:把流程画成状态机,并用代码验证思路",
"第 7 天:阶段 1 验收 + 口述初稿",
"本周自查清单"
]
},
{
"id": "plan.week09",
"title": "第 9 周:阶段 2——五个重点 A~E 深挖 + 案例卡",
"type": "week",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
9
],
"order": 9,
"path": "plan/week09-case-cards.md",
"sections": [
"第 1 天:A 多 Agent 编排",
"第 2 天:C 流式与长任务",
"第 3 天:B 状态与权威源",
"第 4 天:D 人机协作",
"第 5 天:E 与业务系统集成",
"第 6 天:补写和打磨案例卡",
"第 7 天:汇总设计输入",
"本周自查清单"
]
},
{
"id": "plan.week10",
"title": "第 10 周:项目三 M1——手写工具调用循环 + 手写多 Agent 循环 + MCP 服务",
"type": "week",
"domain": "plan",
"stack": [
"mcp",
"function-calling"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
10
],
"order": 10,
"path": "plan/week10-agent-m1-tools-mcp.md",
"sections": [
"项目三总览",
"第 1 天:初始化 + 支持工具调用的最小模型客户端",
"第 2 天:手写工具调用循环",
"第 3 天:手写多 Agent 循环",
"第 4 天:MCP 概念 + 写一个 MCP 服务",
"第 5 天:在 Cursor 和自己的 Agent 里用 MCP",
"第 6 天:真实模型试跑 + 对照文档(上半)",
"第 7 天:M1 验收"
]
},
{
"id": "plan.week11",
"title": "第 11 周:项目三 M2——用 LangGraph 实现多 Agent 编排",
"type": "week",
"domain": "plan",
"stack": [
"langchain",
"langgraph",
"mcp",
"prompt-engineering"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
11
],
"order": 11,
"path": "plan/week11-agent-m2-langgraph.md",
"sections": [
"第 1 天:LangGraph 基础",
"第 2 天:State、结构化决定、路由规则",
"第 3 天:模型、工具、提示词、节点",
"第 4 天:组装图 + 测试",
"第 5 天:MCP 工具接入 LangGraph + 命令行",
"第 6 天:真实模型试跑和调提示词",
"第 7 天:对照文档 + M2 验收"
]
},
{
"id": "plan.week12",
"title": "第 12 周:项目三 M3——检查点续跑、人机协作、后台作业、SSE、长期记忆",
"type": "week",
"domain": "plan",
"stack": [
"asyncio",
"fastapi",
"langgraph",
"agent-ops"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
12
],
"order": 12,
"path": "plan/week12-agent-m3-persistence.md",
"sections": [
"核心设计:两层状态",
"第 1 天:检查点和续跑",
"第 2 天:长期记忆(Store)",
"第 3 天:业务表和租约",
"第 4 天:后台运行器(RunManager)和报告",
"第 5 天:FastAPI 接口和 SSE",
"第 6 天:页面 + 崩溃恢复演示",
"第 7 天:走查 + M3 验收"
]
},
{
"id": "plan.week13",
"title": "第 13 周:项目三 M4——评测集、可观测性、文档、Docker + Dify / Coze 体验",
"type": "week",
"domain": "plan",
"stack": [
"docker",
"prompt-engineering",
"agent-ops",
"lowcode"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
13
],
"order": 13,
"path": "plan/week13-agent-m4-eval-lowcode.md",
"sections": [
"第 1 天:评测集和规则检查",
"第 2 天:评测脚本、回归测试、用评测驱动改进",
"第 3 天:可观测性(回调、LangSmith / Langfuse)",
"第 4 天:文档(架构、设计取舍、映射表)",
"第 5 天:README、Docker、从零验证、讲解稿",
"第 6~7 天:Dify / Coze 体验(低代码平台)"
]
},
{
"id": "plan.week14",
"title": "第 14 周:后端补强——消息队列、gRPC、Redis / MySQL 专题、全部项目部署、CI/CD",
"type": "week",
"domain": "plan",
"stack": [
"go",
"mysql",
"redis",
"mq",
"grpc-microservices",
"docker",
"nginx",
"linux",
"cicd"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
14
],
"order": 14,
"path": "plan/week14-backend-extend-deploy.md",
"sections": [
"本周最终目录",
"第 1 天:消息队列——RabbitMQ 动手 + Kafka 概念",
"第 2 天:微服务概念 + gRPC",
"第 3 天:Redis 面试专题——锁、缓存三大问题、限流",
"第 4 天:MySQL 面试专题——索引、EXPLAIN、事务和隔离级别",
"第 5 天:把三个项目部署到一台服务器",
"第 6 天:CI/CD——测试、构建镜像、自动部署",
"第 7 天(可选):用 Go 写一个鉴权网关",
"本周验收"
]
},
{
"id": "plan.week15",
"title": "第 15 周:阶段 4(上)——作品集、简历、STAR 经历、口述稿",
"type": "week",
"domain": "plan",
"stack": [
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
15
],
"order": 15,
"path": "plan/week15-package-resume.md",
"sections": [
"本周最终目录",
"第 1 天:整理作品集(3 个公开仓库)",
"第 2 天:简历结构、学历和技能栏",
"第 3 天:项目经历怎么写",
"第 4 天:工作经历——3 条 STAR",
"第 5 天:针对岗位调整简历(关键词对照)",
"第 6 天:口述稿和演示视频",
"第 7 天:自查、请人审阅、阶段 4(上)验收"
]
},
{
"id": "plan.week16",
"title": "第 16 周:阶段 4(下)——面试准备、终点验收、投递",
"type": "week",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
16
],
"order": 16,
"path": "plan/week16-interview.md",
"sections": [
"本周最终目录",
"第 1 天:面试笔记(上)——Python 和 FastAPI",
"第 2 天:面试笔记(中)——RAG 和 Agent",
"第 3 天:面试笔记(下)——后端、前端、Go",
"第 4 天:项目深挖和系统设计",
"第 5 天:模拟面试和抽题练习",
"第 6 天:终点验收",
"第 7 天:开始投递,建立复盘循环"
]
},
{
"id": "python.asyncio.index",
"title": "asyncio 异步编程",
"type": "index",
"domain": "python",
"stack": [
"asyncio"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4,
5,
12
],
"order": null,
"path": "topics/python/asyncio/index.md",
"sections": []
},
{
"id": "python.fastapi.index",
"title": "FastAPI",
"type": "index",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4,
5,
12
],
"order": null,
"path": "topics/python/fastapi/index.md",
"sections": []
},
{
"id": "python.python.index",
"title": "Python 语言",
"type": "index",
"domain": "python",
"stack": [
"python"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4
],
"order": null,
"path": "topics/python/python/index.md",
"sections": []
},
{
"id": "scenarios.index",
"title": "跨技术栈企业服务场景",
"type": "index",
"domain": "cross",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "scenarios/index.md",
"sections": []
},
{
"id": "topics.index",
"title": "专项学习总目录",
"type": "index",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "topics/index.md",
"sections": [
"后端(`backend`)",
"运维与工程(`devops`)",
"Python(`python`)",
"AI 应用(`ai`)",
"前端(`frontend`)"
]
}
]
}