从 AI 算法到系统型工程师 · 168 天完整课程目录
每天 3–6 个核心概念 · 教材章节密度 · 工作日 ~4500 字 / 周末 ~7000 字 · 生成于 2026-05-13
Phase 1 · 操作系统 + 网络(Week 1-4)
Week 01 · 操作系统 Part 1:进程、线程、调度
Day 01 Mon
计算机系统大图 + 进程的本质
- 计算机系统的 4 层架构:硬件 / 内核 / 用户空间 / 应用
- 操作系统的三大职责:资源管理、抽象、隔离
- 内核态 vs 用户态、ring 0/3 保护环
- 系统调用 syscall 是什么、怎么发生(int 0x80、syscall 指令)
- 进程的本质:地址空间 + 资源 + PCB
- 进程地址空间布局:text / data / bss / heap / stack
- 一个 hello world 从源码到运行的完整旅程
Day 02 Tue
进程深入:生命周期与状态机
- PCB / Linux task_struct 关键字段
- 进程状态机:R / S / D / T / Z / X 完整含义
- 进程创建 fork() 与写时复制 COW 语义
- exec() 替换地址空间机制
- wait() 与僵尸进程回收
- exit() 与孤儿进程;init/systemd 的收养角色
- 进程组、会话、控制终端
Day 03 Wed
线程模型与 Python GIL
- 用户线程 vs 内核线程 vs 混合模型(1:1, M:1, M:N)
- Linux NPTL 实现:clone() 系统调用与 CLONE_VM 等标志
- 线程的私有数据:栈、寄存器、TLS(thread-local storage)
- pthread API 速览(create/join/detach)
- Python GIL 的实现原理:字节码级互斥
- GIL 对 CPU-bound vs IO-bound 的不同影响
- 协程(coroutine)的本质:用户态调度的轻量级执行流
Day 04 Thu
CPU 调度
- 为什么需要调度器、调度的目标函数
- 抢占式 vs 协作式调度
- 调度类:批处理、交互式、实时
- Linux O(1) 调度器历史与缺陷
- CFS 完全公平调度器:vruntime、红黑树
- nice / renice / SCHED_FIFO / SCHED_RR
- CPU 亲和性 taskset、isolcpus
- 负载均衡 load average 的含义
Day 05 Fri 🔧
LAB:进程与调度动手
- top / htop 全字段解读、按键命令
- ps 高级用法(-o 自定义列、--sort)
- 用 time / vmstat 测量上下文切换次数
- perf stat / perf record 性能事件初步
- strace 跟踪一个 Python 程序的所有 syscall
- 用 Python 实现 fork-exec-wait 完整流程
- 观察 ps 中 STAT 列变化(R/S/D/Z)
Day 06 Sat 🔐
Linux 权限与提权基础
- Unix 权限模型:rwx、ugo、umask、chmod 数字记号
- 特殊位:SUID / SGID / Sticky bit
- sudo 工作原理与 /etc/sudoers 配置
- Linux capabilities 模型(细粒度权限拆分)
- PAM 认证框架
- 常见提权路径:misconfigured SUID、可写 PATH、cron 写权限、内核 exploit
- 用 GTFOBins 查可滥用的 binary
- 动手:搭一个简易提权 lab,跑通从 user → root
Day 07 Sun 🌐
同步原语 + IPC + 周复盘
- 同步原语:mutex、自旋锁、读写锁、信号量、条件变量
- 原子操作 atomic / CAS
- 死锁四条件 + 避免/检测/恢复
- 进程间通信六大方式:匿名管道、命名管道、消息队列、共享内存、socket、文件锁
- 信号 signal:SIGTERM/SIGKILL/SIGCHLD/SIGPIPE/SIGUSR1 等
- 信号处理的不安全函数(async-signal-safe)
- 与 LLM 服务连结:vLLM 多进程为何用共享内存通信
- 本周复盘 + Week 2 预告
Week 02 · 操作系统 Part 2:内存、I/O、文件系统
Day 08 Mon
虚拟内存与页表
- 物理内存层级:寄存器 / L1 / L2 / L3 / DRAM / SSD / HDD 的延迟与带宽数量级
- 物理内存 vs 虚拟内存:为什么需要虚拟化
- MMU 内存管理单元、地址翻译
- 多级页表:x86_64 的 4 级 / 5 级页表
- TLB 快表:原理、命中率、刷新
- 大页 hugepage 与 transparent hugepage
- /proc/meminfo 全字段解读
Day 09 Tue
内存分配器
- 内核 buddy allocator 算法
- 内核 slab/slub allocator 与对象缓存
- 用户态 malloc 的实现路径:brk vs mmap
- glibc ptmalloc 设计
- jemalloc vs tcmalloc vs mimalloc 对比
- 内存碎片:内部 vs 外部
- OOM killer 选择算法、oom_score_adj 调节
Day 10 Wed
虚拟内存进阶
- 缺页中断 page fault:minor / major / invalid (segfault)
- 写时复制 COW:fork+exec 为何省内存
- mmap 完全解析:file-backed / anonymous, shared / private
- swap 机制、swappiness、zswap
- page cache、buffer cache、dirty page 回写
- madvise 提示符
- mlock 锁页(用于安全敏感数据)
Day 11 Thu
I/O 模型完整谱系
- 同步 vs 异步、阻塞 vs 非阻塞(区分两组维度)
- 5 种 I/O 模型:blocking / nonblocking / multiplexing / signal-driven / async
- select / poll 原理与局限
- epoll 内部:红黑树 + 就绪链表,LT vs ET 触发模式
- kqueue(BSD/macOS)对比
- Reactor 模式 vs Proactor 模式
- io_uring:环形队列设计、内核轮询
- POSIX aio 与 libaio
Day 12 Fri 🔧
LAB:内存与 I/O 动手
- 用 Python selectors 模块写 epoll 回声服务器
- 测试 1000 并发连接
- 用 mmap 加速大文件处理(模拟模型权重加载)
- /proc/[pid]/maps 与 /proc/[pid]/smaps 详读
- vmstat / free / sar 命令解读
- 用 valgrind 检测内存泄漏
Day 13 Sat 🔐
系统调用追踪与 eBPF 入门
- strace 深入:-f 跟踪子进程、-e 过滤、-c 统计
- ltrace 跟踪动态库函数
- ftrace 内核函数追踪
- eBPF 是什么、与 kprobe/uprobe 关系
- bpftrace 第一个程序:统计 open() 调用
- bcc 工具包导览(execsnoop / opensnoop / tcpconnect / biosnoop)
- eBPF 在安全监控的前景
- 动手:写 bpftrace 监控可疑 exec
Day 14 Sun 🌐
文件系统 + 零拷贝 + 周复盘
- VFS 抽象层、操作表
- inode、目录项 dentry、硬链接 vs 软链接
- ext4 / xfs / btrfs / zfs 简介与取舍
- 磁盘 I/O 路径全景:syscall → VFS → fs → block → scheduler → device
- 块设备调度器:noop / deadline / cfq / mq-deadline
- 零拷贝技术:sendfile / splice / MSG_ZEROCOPY 原理
- fsync / O_DIRECT 何时用
- 为什么大模型 checkpoint 加载慢;如何加速
- 周复盘 + Week 3 预告
Week 03 · 网络 Part 1:TCP/IP 与 HTTP
Day 15 Mon
网络分层与 IP
- OSI 7 层 vs TCP/IP 4 层模型对比
- 物理层 + 数据链路层(以太网帧、MAC 地址、交换机)
- 网络层:IP 头格式、TTL、分片
- ICMP(ping、traceroute 原理)
- ARP 协议、ARP 缓存
- IPv4 寻址、子网掩码、CIDR 记号
- 私有 IP 范围、NAT 工作原理
- IPv6 概览
Day 16 Tue
TCP 深入
- TCP 头格式 + 关键字段
- 三次握手为什么不是两次或四次
- 四次挥手与 TIME_WAIT 的 2MSL
- TCP 状态机完整图
- 序列号、确认号、滑动窗口
- 拥塞控制:慢启动 / 拥塞避免 / 快重传 / 快恢复
- 算法演进:Reno / Cubic / BBR
- Nagle 算法 vs 延迟 ACK 之争
- SO_REUSEADDR / SO_REUSEPORT
Day 17 Wed
UDP + HTTP 协议演进
- UDP 头与典型应用(DNS、QUIC、视频)
- HTTP/1.0:请求-响应、短连接
- HTTP/1.1:keep-alive、pipelining、chunked
- HTTP/2:二进制分帧、多路复用、Server Push、HPACK 头压缩
- HTTP/3 与 QUIC:UDP-based、0-RTT、连接迁移
- HTTP 方法语义、状态码体系
- 关键 Header:Content-Type、Host、Authorization、Cookie
- CORS 跨域机制
Day 18 Thu
TLS / HTTPS
- 对称加密 vs 非对称加密回顾
- PKI 体系:CA、证书链、Root CA
- X.509 证书结构
- TLS 1.2 握手完整流程
- TLS 1.3 改进:1-RTT 握手、0-RTT 恢复
- SNI 服务器名指示
- ALPN 协议协商
- mTLS 双向认证
- 经典漏洞:Heartbleed、BEAST、POODLE、降级攻击
Day 19 Fri 🔧
LAB:网络动手
- curl 高级用法:-v、--trace、-w 自定义输出
- tcpdump 基础抓包语法
- Wireshark 看 TCP 三次握手、TLS 握手
- ss / netstat / lsof -i 看连接状态
- nc 工具:建 TCP/UDP、传文件、端口扫描
- dig / nslookup 查询 DNS 各类记录
- traceroute 看路径、mtr 实时监控
Day 20 Sat 🔐
网络抓包与协议分析
- tcpdump 表达式语法(host/port/proto/and/or/not)
- 过滤特定流量、保存 pcap
- Wireshark 显示过滤器
- 跟踪 TCP 流、HTTP 重组
- TLS 解密:SSLKEYLOGFILE 环境变量
- 中间人攻击:ARP 欺骗 + sslstrip
- DNS 投毒原理
- DoH / DoT 隐私保护
- 动手:抓自己机器的 HTTPS,解密看明文
Day 21 Sun 🌐
DNS + CDN + 周复盘
- DNS 完整协议:报文格式、UDP/TCP、端口 53
- 记录类型:A、AAAA、CNAME、MX、TXT、NS、SOA、SRV
- 递归查询 vs 迭代查询
- 权威 DNS vs 缓存 DNS
- DNS over UDP 的 512 字节限制与 EDNS
- CDN 原理:边缘节点、回源、缓存策略
- Anycast 路由
- HTTP 缓存:Cache-Control / ETag / Last-Modified / Vary
- 周复盘 + Week 4 预告
Week 04 · 网络 Part 2:服务通信与中间件
Day 22 Mon
应用层协议全景
- REST 设计原则(无状态、资源、HATEOAS)
- RESTful API 最佳实践与反模式
- gRPC:基于 HTTP/2、Protobuf 编码
- gRPC 4 种调用模式(unary/stream)
- GraphQL 概览与适用场景
- WebSocket:升级握手、帧格式、心跳
- SSE(Server-Sent Events)与 LLM 流式输出
- 长轮询 / 长连接 / WebSocket / SSE 取舍
Day 23 Tue
负载均衡
- L4(传输层)vs L7(应用层)负载均衡
- 调度算法:轮询、加权轮询、最少连接、随机、源 IP 哈希
- 一致性哈希在 LB 中的应用
- 健康检查机制(主动/被动)
- 会话保持 sticky session
- LVS 内核态 LB(DR/TUN/NAT 模式)
- HAProxy vs Nginx vs Envoy 对比
- 云负载均衡产品:AWS ELB/ALB/NLB
Day 24 Wed
Nginx 深入
- master / worker 进程模型
- 事件驱动 + epoll
- 配置文件层级:http / server / location
- 反向代理 vs 正向代理
- upstream 模块与 LB 算法
- 静态资源、gzip、缓存配置
- 限流:limit_req(令牌桶)、limit_conn
- SSL 终止与 SSL passthrough
Day 25 Thu
服务通信进阶
- 服务发现:客户端发现 vs 服务端发现
- 注册中心:Consul / etcd / Nacos / Eureka 对比
- 心跳与健康检查协议
- 容错三剑客:超时、重试、熔断
- 降级策略
- 限流算法:计数器 / 漏桶 / 令牌桶 / 滑动窗口
- 限流的层级(接入层、应用层、用户级)
Day 26 Fri 🔧
LAB:服务通信动手
- 用 Python grpcio 写 server + client
- 定义 .proto、生成代码
- 用 Nginx 反向代理两个后端
- 用 ab / wrk 压测,观察 P50/P95/P99
- 给 LLM API 加流式 SSE 输出
Day 27 Sat 🔐
反弹 shell 与 C2 框架
- bind shell vs reverse shell 概念
- 各种语言的 reverse shell payload(bash / python / nc / powershell)
- 为什么 reverse shell 能绕过防火墙(egress 通常开放)
- 出网技巧:DNS tunnel、ICMP tunnel、HTTPS C2
- C2 框架设计:Beacon、心跳、jitter
- 主流 C2:Cobalt Strike / Sliver / Mythic / Havoc
- 检测思路:异常出网、长连接、域名特征、JA3 指纹
- 动手:在本地起 nc listener,用 Python payload 反弹
Day 28 Sun 🌐
综合:一个 HTTP 请求的完整旅程 + 周复盘
- 从浏览器到 K8s 后端的完整链路追踪
- 各层延迟分布(DNS / TCP / TLS / 应用)
- 常见性能瓶颈定位
- 网络故障诊断方法论
- 与 Agent 安全:用户请求 → 网关 → 推理服务 → 工具调用的攻击面
- 周复盘 + Phase 1 总结 + Phase 2 预告
Phase 2 · 硬件 + LLM 推理(Week 5-8)
Week 05 · CPU 架构
Day 29 Mon
CPU 工作原理
- 冯诺依曼模型与哈佛架构
- CPU 内部组件:ALU / 寄存器 / 控制单元
- 指令周期:fetch / decode / execute / writeback
- 时钟频率、IPC、性能公式
- x86 vs ARM 指令集架构对比
- CISC vs RISC 哲学
- 32 位 vs 64 位
Day 30 Tue
流水线、分支预测、乱序
- 5 级经典流水线
- 流水线冒险:结构冒险 / 数据冒险 / 控制冒险
- 转发 forwarding 与气泡
- 分支预测:静态 / 动态 / BTB
- 超标量 superscalar
- 乱序执行 OoO、保留站、重排序缓冲
- 推测执行 speculative execution
- 推测执行的安全代价(Spectre 根源)
Day 31 Wed
缓存层级
- L1 / L2 / L3 缓存的延迟与大小
- 缓存行 cache line(典型 64 字节)
- 映射方式:直接、组相联、全相联
- 替换策略:LRU / Random / LFU
- 写策略:write-through vs write-back,write-allocate
- false sharing 与对齐填充
- 缓存友好的数据结构设计
- 预取 prefetch
Day 32 Thu
SIMD + 多核 + 内存一致性
- SIMD 思想,SSE / AVX / AVX-512 演进
- 向量化是怎么加速矩阵运算的
- SMP / UMA / NUMA 概览
- MESI 缓存一致性协议
- 内存屏障:编译屏障 vs CPU 屏障
- happens-before 关系
- x86 vs ARM 内存模型对比(强 vs 弱)
- 双重检查锁定 DCL 的陷阱
Day 33 Fri 🔧
LAB:CPU 性能动手
- perf top 看热点函数
- perf stat 看 cache miss / branch miss
- 实验:缓存友好 vs 缓存不友好的矩阵遍历(行优先 vs 列优先)
- 用 numpy 看 SIMD 加速倍率
- cpuinfo 解读:CPU 特性、缓存大小
- 用 dmidecode 看硬件信息
Day 34 Sat 🔐
侧信道攻击
- Spectre 攻击原理:训练分支预测器 + cache timing
- Meltdown:乱序执行 + 权限检查时机
- cache timing 攻击家族(Prime+Probe、Flush+Reload)
- Rowhammer 硬件级位翻转攻击
- 缓解措施:retpoline、KPTI、microcode 更新
- 云上多租户 GPU 的侧信道关注点
- 动手:跑一个 cache-timing PoC
Day 35 Sun 🌐
CPU 与 LLM 推理的关系 + 周复盘
- LLM 推理中 CPU 扮演什么角色(tokenization、scheduling、preprocessing)
- 为什么 transformer 推理瓶颈通常不在 CPU
- CPU 优化对吞吐的影响(数据预处理 pipeline)
- 异构计算的协调成本
- 周复盘 + Week 6 预告
Week 06 · 内存层级 + NUMA + LLM memory-bound 分析
Day 36 Mon
内存系统全貌
- 内存延迟与带宽的数量级
- DDR4 vs DDR5 vs HBM
- 内存控制器、内存通道
- 带宽与延迟的关系
- Roofline 模型:compute-bound vs memory-bound 的判断
- 算术强度 arithmetic intensity 概念
Day 37 Tue
NUMA 架构
- 为什么有 NUMA:多 socket 系统的现实
- 本地节点 vs 远程节点访问代价
- NUMA 拓扑查看:numactl --hardware、lstopo
- numactl 工具:进程绑定 NUMA
- 内存分配策略:local / preferred / interleave / bind
- 多卡训练中的 NUMA 影响
- GPU 与 CPU NUMA 节点的拓扑关系
Day 38 Wed
为什么 LLM 推理是 memory-bound
- decoder-only 推理的两个阶段:prefill vs decode
- decode 阶段的算术强度推导
- KV cache 的内存消耗公式
- batching 为何能提升 GPU 利用率(提升算术强度)
- 量化为何能加速 decode(降低 memory bandwidth 需求)
- 分析 LLama-2 7B / 70B 的理论吞吐上限
Day 39 Thu
内存优化技术
- 大页 huge page / 1GB page 的应用
- 预取 prefetch 指令
- 内存对齐与 SIMD 加速
- 数据布局:AoS vs SoA、对模型推理的影响
- cache-oblivious 算法思路
- NUMA-aware 内存分配
- 透明大页 THP 与性能抖动
Day 40 Fri 🔧
LAB:内存性能动手
- STREAM benchmark 测内存带宽
- 用 mlock 锁定页面
- 用 numactl 改变进程的 NUMA 策略
- perf 测 cache miss / TLB miss / page fault
- vmstat 解读 si/so/buff/cache
- 实验:跨 NUMA 节点访问的性能损失
Day 41 Sat 🔐
内存安全攻防
- 栈帧结构、函数调用约定
- 经典栈溢出 + shellcode 注入
- 缓解机制:Stack canary、NX/DEP、ASLR、PIE、CFI
- ROP / JOP 绕过 NX
- 堆溢出、UAF(use-after-free)、double free
- C/C++ 不安全的根源;Rust 借用检查器如何解决
- fuzzing 工具:AFL++ / libFuzzer 概念
- 动手:跑一个简单的栈溢出 PoC(DEP/ASLR 关闭的环境)
Day 42 Sun 🌐
内存视角看 vLLM PagedAttention + 周复盘
- 传统 KV cache 的内存碎片问题
- PagedAttention 的核心思想(借鉴 OS 虚拟内存)
- block table 数据结构
- preemption 与 swap 机制
- prefix caching 实现
- 周复盘 + Week 7 预告
Week 07 · GPU 架构
Day 43 Mon
GPU 基础
- GPU vs CPU 设计哲学:高并行 vs 低延迟
- NVIDIA GPU 演进:V100 → A100 → H100 → H200 → B200
- 流式多处理器 SM 内部结构
- CUDA core vs Tensor core 用途
- SIMT 执行模型
- warp(32 线程)调度
- FP32 / TF32 / FP16 / BF16 / FP8 / INT8 / INT4 单元
Day 44 Tue
CUDA 编程模型
- thread / warp / block / grid 层级
- kernel 启动语法 <<<blocks, threads>>>
- GPU 内存层级:register / shared / L1 / L2 / global / HBM
- cudaMalloc / cudaMemcpy / cudaFree
- 第一个 CUDA kernel:向量加
- cooperative groups
- CUDA stream 与异步
Day 45 Wed
GPU 性能要点
- occupancy 概念与计算
- memory coalescing(合并访存)
- shared memory bank conflict
- warp divergence 性能代价
- kernel fusion 思想
- Profiler:Nsight Compute / Nsight Systems
- 看 SM 利用率 vs HBM 带宽利用率
Day 46 Thu
GPU 互联
- PCIe 历史与带宽(Gen3/4/5)
- NVLink 与 NVSwitch 拓扑
- GPUDirect RDMA
- NCCL:AllReduce / AllGather / Broadcast 原理
- Ring vs Tree AllReduce 算法
- 多机多卡通信:InfiniBand / RoCE
- nvidia-smi topo -m 看拓扑
Day 47 Fri 🔧
LAB:GPU 动手
- nvidia-smi 完整字段解读(温度、功耗、显存、利用率)
- nvtop / nvitop 实时监控
- PyTorch profiler 看 GPU kernel
- 用 nsight systems 看 transformer 推理 timeline
- 对比 PyTorch eager vs torch.compile 性能
Day 48 Sat 🔐
GPU 多租户安全
- MIG(Multi-Instance GPU)硬件级隔离
- MPS(Multi-Process Service)软件共享
- 时间片共享模式风险
- 显存残留与清零
- CUDA context 隔离边界
- 已知 GPU 漏洞案例(CVE)
- 侧信道在 GPU 上的可能性
- 多租户推理服务的隔离设计建议
Day 49 Sun 🌐
GPU 选型与成本分析 + 周复盘
- 为什么大模型推理推荐 H100 而不是 A100(FP8 + HBM3)
- H100 vs H200 关键差异
- 各种 GPU 的成本/性能比
- 推理 vs 训练对 GPU 的不同需求
- 租赁 vs 自建
- 周复盘 + Week 8 预告
Week 08 · LLM 推理工程深入
Day 50 Mon
推理基础
- autoregressive 生成完整流程
- prefill vs decode 阶段差异
- logits 处理 pipeline
- sampling 算法:greedy / temperature / top-k / top-p / typical
- repetition penalty / frequency penalty
- beam search 与 LLM 取舍
- stop tokens / EOS 处理
Day 51 Tue
KV cache 全解
- KV cache 的本质:避免重复 attention 计算
- 内存占用公式:2 × layer × head × dim × seq × batch × bytes
- PagedAttention 实现细节
- prefix sharing / prefix caching
- KV cache offload 到 CPU/SSD
- KV cache 压缩与量化
- 大上下文窗口(128K+)的挑战
Day 52 Wed
量化技术
- 数值类型回顾:FP32 / FP16 / BF16 / FP8 / INT8 / INT4
- PTQ vs QAT
- 权重量化 vs 激活量化 vs KV cache 量化
- GPTQ 算法原理
- AWQ activation-aware 量化
- SmoothQuant 思路
- 精度评估方法
- 实际选型建议
Day 53 Thu
批处理、调度与解码加速
- static batching 的局限
- continuous batching / in-flight batching 原理
- chunked prefill
- speculative decoding 算法
- medusa / lookahead decoding
- FlashAttention v1/v2/v3
- vLLM、SGLang、TensorRT-LLM、TGI 取舍
Day 54 Fri 🔧
LAB:vLLM 部署动手
- 装 vLLM,启动 7B 模型
- OpenAI 兼容 API 测试
- 压测:TTFT、TPOT、throughput
- 参数调优:max-model-len、gpu-memory-utilization、max-num-seqs
- 看 vLLM 调度日志
- 对比不同 batching 策略
Day 55 Sat 🔐
AI 推理服务攻击面
- 模型权重窃取:API 推断 + 蒸馏
- 对抗输入攻击:jailbreak / 越权 prompt
- 资源耗尽:超长 prompt、循环、重复 token
- 时间侧信道:通过响应时间推断对方 prompt
- 模型水印技术
- API 滥用监控
- 速率限制与配额管理
Day 56 Sun 🌐
Phase 2 综合 + Phase 3 预告
- 一次推理请求的完整生命周期(从硬件视角)
- 性能调优 cheat sheet
- 常见瓶颈快速诊断流程
- 本阶段复盘 + 容器章节预告
Phase 3 · 容器 + K8s(Week 9-12)
Week 09 · Linux 进阶 + 容器原理
Day 57 Mon
cgroups
- cgroups v1 vs v2 架构差异
- 资源子系统:cpu / memory / blkio / pids / net_cls
- 层次结构
- 资源配额的实现机制
- systemd 与 cgroups 的关系
- 用 systemd-run 创建临时 cgroup
- 实操:用 cgroup 限制进程 CPU/内存
Day 58 Tue
namespaces
- 6 大 namespace:PID / NET / MNT / UTS / IPC / USER(+ cgroup, time)
- 每种 namespace 隔离什么
- clone() / unshare() / setns() 系统调用
- unshare 命令
- nsenter 进入命名空间
- /proc/[pid]/ns 目录
- 动手:用 namespaces 手搓 mini container
Day 59 Wed
capabilities + seccomp + LSM
- Linux capabilities 完整列表
- cap_drop / cap_add / cap_set_file
- seccomp-bpf 系统调用过滤
- seccomp profile 编写
- AppArmor 路径策略
- SELinux MAC 强制访问控制
- LSM (Linux Security Modules) 框架
Day 60 Thu
容器 = namespaces + cgroups + 镜像
- 容器与虚拟机的本质差异
- rootfs 与 overlay 文件系统
- OverlayFS 工作原理
- 镜像分层与共享
- runc / containerd / Docker 三层架构
- OCI 镜像规范 + 运行时规范
- CRI 接口
Day 61 Fri 🔧
LAB:手搓容器
- 用 unshare + chroot 跑一个隔离环境
- 挂载 /proc 让 ps 工作
- 用 cgroups 限制资源
- 用 dive 工具拆解 Docker 镜像
- 用 ctr 直接操作 containerd
Day 62 Sat 🔐
namespace / cgroup 滥用
- --privileged 容器风险全解
- 挂载 host /proc 的危险
- 挂载 docker.sock 的逃逸路径
- host PID / NET namespace 风险
- cgroups v1 的信息泄露
- release_agent 逃逸(CVE-2022-0492)
- 检测方法:Falco 规则
Day 63 Sun 🌐
容器中的同步与 IPC + 周复盘
- 容器间网络通信
- 容器共享 volume
- 容器间共享 IPC namespace
- 容器 PID 1 问题(信号处理、僵尸收割)
- tini / dumb-init 解决方案
- 周复盘 + Week 10 预告
Week 10 · Docker 深入
Day 64 Mon
Docker 镜像
- Dockerfile 完整指令集
- BuildKit 现代构建
- 多阶段构建模式
- 镜像优化:distroless / alpine / scratch / chainguard
- 缓存层与构建效率
- 镜像签名 cosign / sigstore
- 镜像扫描 trivy
Day 65 Tue
Docker 运行时
- docker run 关键参数全解
- 容器生命周期管理
- 资源限制:--cpus、--memory、--pids-limit
- HEALTHCHECK 指令
- restart policy 完整语义
- 容器日志驱动
- docker exec / docker attach
Day 66 Wed
Docker 网络
- 网络驱动:bridge / host / none / overlay / macvlan
- bridge 模式 + iptables 端口映射原理
- 容器互联与内置 DNS
- 用户自定义网络
- 跨主机网络 overlay 原理
- CNM 标准
Day 67 Thu
Docker 存储
- 数据卷 volume 完整管理
- 绑定挂载 bind mount
- tmpfs 挂载
- OverlayFS / devicemapper / btrfs storage driver
- 存储驱动选择
- 数据备份恢复
Day 68 Fri 🔧
LAB:Docker 实战
- 把 Python LLM 服务 dockerize
- 多阶段构建优化镜像大小
- docker-compose 起多服务栈(应用 + Redis + PG)
- docker stats 监控
- 用 trivy 扫描镜像漏洞
Day 69 Sat 🔐
容器逃逸
- 经典 runc 逃逸 CVE-2019-5736 详解
- CVE-2022-0492 cgroups release_agent
- --privileged 模式逃逸路径全解
- docker.sock 暴露逃逸
- 内核漏洞类:Dirty Pipe / Dirty Cow
- 防御纵深:rootless / user ns remap / seccomp / AppArmor
- 动手:在 vuln 镜像里复现逃逸
Day 70 Sun 🌐
容器最佳实践 + 周复盘
- 12-factor app 原则
- 容器内日志策略(stdout vs 文件 + sidecar)
- 信号处理 + 优雅停机
- 镜像版本管理
- CI/CD 中的镜像构建
- 周复盘 + Week 11 预告
Week 11 · K8s 核心
Day 71 Mon
K8s 架构总览
- control plane vs data plane
- apiserver / etcd / scheduler / controller-manager
- kubelet / kube-proxy / container runtime(CRI)
- CNI / CSI / CRI 接口
- 一次 kubectl apply 的完整路径
- 声明式 API 与 reconcile loop
Day 72 Tue
Pod 与生命周期
- Pod 是最小调度单位的设计动机
- 多容器 Pod 模式:sidecar / init / ambassador / adapter
- Pod 生命周期与重启策略
- liveness / readiness / startup probe
- 资源请求 vs 限制(requests vs limits)
- QoS class:Guaranteed / Burstable / BestEffort
- Pod 调度过程
Day 73 Wed
控制器家族
- ReplicaSet 基础
- Deployment:滚动更新 / 回滚 / 暂停
- StatefulSet:有序、稳定的网络标识、持久存储
- DaemonSet:每节点一份
- Job 与 CronJob
- HorizontalPodAutoscaler
Day 74 Thu
网络与 Service
- Service 类型:ClusterIP / NodePort / LoadBalancer / ExternalName
- Endpoints 与 EndpointSlice
- kube-proxy 模式:iptables vs IPVS
- Ingress 与 Ingress Controller
- Gateway API 新标准
- Network Policy 东西向流量控制
- headless Service 与 StatefulSet 配合
Day 75 Fri 🔧
LAB:K8s 实战
- minikube / kind 起本地集群
- 部署 Deployment + Service + Ingress
- 滚动更新与回滚演练
- kubectl 高级用法(jsonpath、--watch、port-forward)
- 用 k9s 提升效率
- 排错三板斧:describe / logs / events
Day 76 Sat 🔐
K8s 安全
- RBAC:Role / ClusterRole / RoleBinding / ClusterRoleBinding
- ServiceAccount token 工作原理
- SA token 滥用案例
- Pod Security Admission (PSA) 替代 PSP
- Network Policy 最小权限设计
- etcd 加密静态数据
- API audit log
- kube-bench CIS benchmark
Day 77 Sun 🌐
调度 + HPA + 周复盘
- 调度器原理:filter + score 两阶段
- nodeSelector / nodeAffinity / podAffinity
- taints / tolerations 隔离机制
- HPA 完整工作流(metrics-server + 自定义指标)
- VPA、Cluster Autoscaler 简介
- 周复盘 + Week 12 预告
Week 12 · K8s 生态 + 可观测性
Day 78 Mon
GPU 调度
- nvidia-device-plugin 工作原理
- GPU 资源声明 nvidia.com/gpu
- GPU 拓扑感知调度
- MIG 分配策略
- 批调度器:Volcano / Kueue / Yunikorn
- 多租户 GPU 集群设计
Day 79 Tue
配置与密钥
- ConfigMap 完整用法
- Secret 与 base64(注意不是加密!)
- 挂载方式:env / volume / projected
- External Secrets Operator + Vault/AWS Secrets
- Sealed Secrets(GitOps 友好)
- 密钥轮转策略
Day 80 Wed
存储
- Volume / PersistentVolume / PVC / StorageClass
- CSI 驱动机制
- 动态供应
- 访问模式:RWO / ROX / RWX
- StatefulSet 与 PVC 模板
- 有状态服务的备份恢复
Day 81 Thu
Operator + Helm
- CRD 自定义资源定义
- Controller 模式 + reconcile
- Operator SDK / Kubebuilder 简介
- Helm chart 结构
- Helm 模板语法
- Operator 案例:cert-manager / prometheus-operator / kubevirt
Day 82 Fri 🔧
LAB:可观测性栈
- 部署 prometheus-operator
- ServiceMonitor 抓 LLM 服务指标
- Grafana 看 P99 延迟、QPS、GPU 利用率
- Loki + promtail 日志聚合
- Jaeger 链路追踪初步
- 告警规则 + Alertmanager
Day 83 Sat 🔐
运行时安全检测
- Falco 基于 syscall 的检测
- Falco 规则编写
- Tetragon 基于 eBPF 的检测
- Cilium + Tetragon 协同
- 检测规则示例:exec 异常、文件访问、网络
- kube-bench 基线扫描
- kube-hunter 主动测试
Day 84 Sun 🌐
Phase 3 综合 + Phase 4 预告
- 一个完整 LLM 推理服务在 K8s 上的部署形态
- GPU 节点池 + Cluster Autoscaler
- Service Mesh + 监控 + 安全完整栈
- 本阶段复盘
Phase 4 · Go + 服务化(Week 13-16)
Week 13 · Go 语言 i
Day 85 Mon
为什么学 Go + 入门
- Go 设计哲学:简洁、并发、工程化
- 与 Python / Java / Rust 对比
- 在云原生生态的地位
- 安装与开发环境(VSCode + gopls)
- go.mod / go.sum / GOPATH / GOPROXY
- hello world + 命令行参数
- 编译与跨平台构建
Day 86 Tue
Go 基础语法
- 类型系统:基本类型、值类型 vs 引用类型
- 变量声明(var / :=)、零值
- 控制流:if / for / switch / for-range
- 函数:多返回值、命名返回值、可变参数
- 错误处理:error 接口与惯例
- defer / panic / recover
- 数组 vs slice vs map
Day 87 Wed
struct + interface + 组合
- struct 定义与方法
- 指针接收者 vs 值接收者
- interface:鸭子类型 + 隐式实现
- 空接口 interface{} / any
- 类型断言与 type switch
- 嵌入式组合(没有继承)
- 包管理与可见性(首字母大小写)
Day 88 Thu
并发:goroutine + channel
- goroutine 是什么(用户态轻量线程)
- Go runtime GMP 调度模型
- channel:无缓冲 vs 有缓冲
- channel 方向、关闭信号
- select 多路复用
- 经典并发模式:fan-out / fan-in / pipeline / worker pool
- "Don't communicate by sharing memory; share memory by communicating"
Day 89 Fri 🔧
LAB:Go 实战
- 写并发 web 爬虫
- 用 channel + worker pool 控制并发数
- 用 go test 写单元测试
- pprof 性能分析(CPU、内存、goroutine)
- race detector 检测数据竞争
Day 90 Sat 🔐
Go 安全编码
- SSRF 模式(net/http 客户端误用)
- 反序列化风险(gob、json、xml)
- SQL 注入 + 参数化查询
- 命令注入(exec.Command vs system shell)
- goroutine 泄漏排查
- unsafe 包的危险
- 静态分析工具:gosec / staticcheck
Day 91 Sun 🌐
sync + context + 周复盘
- sync.Mutex / sync.RWMutex / sync.Once
- sync.WaitGroup / sync.Map / sync.Pool
- 原子操作 sync/atomic
- context.Context:取消、超时、传值
- 错误处理最佳实践(errors.Is / As / Wrap)
- 周复盘 + Week 14 预告
Week 14 · Go 语言 ii + 微服务基础
Day 92 Mon
HTTP 服务
- net/http 包基础
- handler 与 ServeMux
- 中间件模式
- 路由库:gin / chi / echo
- JSON 编解码 + struct tag
- 请求验证 validator
- 优雅停机
Day 93 Tue
gRPC 服务
- Protobuf 定义、IDL
- protoc 生成 Go 代码
- server / client 完整写法
- 4 种调用模式实战
- interceptor(拦截器)
- 错误码 / 元数据 / 超时
- gRPC reflection
Day 94 Wed
数据库访问
- database/sql 包
- 连接池配置
- sqlx 增强
- GORM ORM
- 事务管理
- migration 工具(goose、migrate)
Day 95 Thu
服务注册与发现
- 注册中心:Consul / etcd / Nacos
- 客户端发现 vs 服务端发现
- 心跳与健康检查
- 配置中心模式
- 分布式配置热更新
- k8s 内置服务发现(DNS + Service)
Day 96 Fri 🔧
LAB:完整微服务
- 写一个 Go HTTP + gRPC 双协议服务
- 调另一个 service
- 接 PostgreSQL
- 单元测试 + 集成测试
- 构建 Docker 镜像
- 本地 docker-compose 联调
Day 97 Sat 🔐
内网渗透概览
- 红队 kill chain:侦察 → 武器化 → 投递 → 利用 → 持久化 → 横向移动 → 目标达成
- 信息收集:端口扫描、服务识别(nmap / masscan)
- 横向移动:SOCKS 代理(frp / Stowaway / nps)
- SSH tunneling 技巧
- 持久化:cron / systemd unit / SSH key
- 痕迹清理思路
- 蓝队视角的检测点(异常进程、可疑出网、日志异常)
Day 98 Sun 🌐
Go + Python 协作 + 周复盘
- 典型架构:Go 写网关 + Python 写推理
- 跨语言通信选择(gRPC vs HTTP vs IPC)
- 共享数据结构(protobuf 作为契约)
- 性能对比与场景选型
- 周复盘 + Week 15 预告
Week 15 · 消息中间件
Day 99 Mon
为什么用消息队列
- 同步 vs 异步通信
- 四大用途:解耦、削峰、广播、缓冲
- 消息语义:at-most-once / at-least-once / exactly-once
- 消息一致性难题
- 选型决策树
Day 100 Tue
Kafka 深入
- 架构:Producer / Broker / Consumer / Topic / Partition / Replica
- 持久化机制(log segment)
- Consumer group 与分区分配策略
- offset 管理
- ISR、Leader Election
- Exactly-once 实现(事务 + 幂等 producer)
- 性能调优要点
Day 101 Wed
RabbitMQ + Pulsar
- AMQP 0.9.1 协议
- Exchange / Queue / Binding / Routing key
- 4 种 Exchange 路由模式
- 消息确认与重试
- 死信队列 DLX
- Pulsar 与 Kafka 对比(存算分离)
Day 102 Thu
Redis 作为消息队列
- Pub/Sub 模式(at-most-once)
- Stream 类型:XADD / XREAD / XGROUP
- Consumer group + 确认机制
- 与专业 MQ 的取舍
- 典型场景:异步任务、实时消息
Day 103 Fri 🔧
LAB:Kafka 实战
- 起 KRaft 模式的单机 Kafka
- 用 Go / Python 写 producer + consumer
- 测试消息重放
- 观察 consumer lag
- 用 kafdrop 看 broker 状态
Day 104 Sat 🔐
API 安全
- 认证:API Key / OAuth 2.0 / OIDC / JWT
- JWT 误用案例:none 算法、key confusion、未验签
- IDOR(Insecure Direct Object Reference)
- SSRF 完整分类与利用
- 签名机制:HMAC、时间戳防重放
- BOLA / BFLA(API1-API2 OWASP API Top 10)
- 速率限制策略
Day 105 Sun 🌐
LLM 异步服务设计 + 周复盘
- 同步推理 vs 异步任务的取舍
- 队列削峰用于 LLM
- 批量推理任务架构
- Webhook 回调模式
- 周复盘 + Week 16 预告
Week 16 · API 网关 + 服务网格
Day 106 Mon
API 网关
- 网关的 5 大职责:路由 / 鉴权 / 限流 / 日志 / 协议转换
- Kong / APISIX / Traefik / Envoy 对比
- 插件机制
- 灰度发布与金丝雀
- 蓝绿部署
- 多租户网关设计
Day 107 Tue
限流 + 熔断 + 降级
- 限流算法对比与实现
- 分布式限流(Redis + Lua)
- 熔断器模式:closed / open / half-open
- Hystrix / Resilience4j / Sentinel
- 降级策略与默认值
- 客户端限流 vs 服务端限流
Day 108 Wed
Service Mesh 与 Istio
- Service Mesh 是什么
- 数据平面(Envoy)vs 控制平面(istiod)
- Sidecar 模式
- Istio 资源:VirtualService / DestinationRule / Gateway
- 流量切分与灰度
- 策略与遥测
- Linkerd 对比
Day 109 Thu
可观测性进阶
- OpenTelemetry 标准
- tracing 数据模型:span / trace / context
- 三大支柱:metrics / logs / traces
- 采样策略(head-based vs tail-based)
- 关联三大信号
- eBPF 观测:Pixie / Parca
Day 110 Fri 🔧
LAB:网关 + 监控
- 用 APISIX 起网关
- 配置 JWT 鉴权 + 限流插件
- 接 Prometheus 抓指标
- 压测触发限流
- 看 Grafana 面板
Day 111 Sat 🔐
零信任 + mTLS
- 零信任理念:never trust, always verify
- BeyondCorp 模型
- mTLS 工作原理与实现
- SPIFFE / SPIRE 工作负载身份
- 服务身份 vs 用户身份
- 身份联邦
- K8s 中的零信任落地
Day 112 Sun 🌐
Phase 4 综合 + Phase 5 预告
- 一个完整的微服务架构图绘制
- 从 ingress → 网关 → mesh → 服务 → 数据库的完整路径
- 本阶段复盘 + 数据库章节预告
Phase 5 · 数据库与存储(Week 17-20)
Week 17 · PostgreSQL
Day 113 Mon
关系数据库基础
- 关系模型与集合理论基础
- SQL 关键语法快速过
- 范式:1NF / 2NF / 3NF / BCNF
- 反范式的取舍
- PostgreSQL vs MySQL 对比
- 常见数据类型与选型
Day 114 Tue
索引
- B-tree 索引原理(多叉平衡树)
- Hash / GIN(全文 + 数组)/ GiST(几何) / BRIN
- 聚簇 vs 非聚簇索引
- 覆盖索引、回表
- 联合索引最左前缀原则
- 索引失效场景
- 部分索引、表达式索引
Day 115 Wed
事务 + 隔离 + MVCC
- ACID 完整含义
- 隔离级别:read uncommitted / committed / repeatable read / serializable
- 4 大异常:脏读 / 不可重复读 / 幻读 / 写偏
- MVCC 原理(PG 多版本实现)
- WAL 预写日志
- VACUUM 与表膨胀
- 死锁检测
Day 116 Thu
查询优化
- EXPLAIN / EXPLAIN ANALYZE 解读
- 统计信息 ANALYZE
- 优化器原理
- Join 算法:nested loop / hash join / merge join
- 常见慢查询模式
- pg_stat_statements 找慢查询
Day 117 Fri 🔧
LAB:PG 实战
- 本地起 PG,建表
- 百万行数据生成
- 对比有无索引的查询性能
- 看执行计划演变
- pgbench 压测
- 用 pgcli 提升体验
Day 118 Sat 🔐
SQL 注入深入
- 经典 union-based 注入
- boolean-based 盲注
- time-based 盲注
- 二阶注入
- ORM 绕过案例
- NoSQL 注入
- 防御:参数化查询、最小权限、WAF
- sqlmap 工具用法
Day 119 Sun 🌐
复制 + 备份 + 周复盘
- 流复制(物理复制)
- 逻辑复制:发布订阅
- 同步 vs 异步复制
- 读写分离架构
- PITR 时间点恢复
- pg_dump / pg_basebackup
- 周复盘 + Week 18 预告
Week 18 · Redis
Day 120 Mon
Redis 基础 + 数据结构
- 5 大基础类型:string / list / hash / set / sorted set
- 高级类型:HyperLogLog / Bitmap / Stream / GEO
- 内部实现:SDS / 跳表 / ziplist / intset
- 单线程模型 + IO 多路复用
- 6.0+ 多线程网络
- 过期策略
Day 121 Tue
持久化
- RDB 快照原理
- AOF 日志(append-only file)
- AOF 重写
- 混合持久化(4.0+)
- 持久化选择权衡
- 故障恢复流程
Day 122 Wed
集群
- 主从复制(PSYNC)
- 哨兵 Sentinel:failover、quorum
- Cluster 模式:16384 槽位、CRC16
- 客户端路由(MOVED / ASK)
- 一致性哈希 vs 槽位映射
- 跨槽位事务限制
Day 123 Thu
使用模式与陷阱
- 缓存模式:cache-aside / read-through / write-through / write-behind
- 缓存穿透 / 击穿 / 雪崩 + 各自方案
- 分布式锁:SET NX EX + Lua + token 校验
- Redlock 算法及争议
- 限流:固定窗口 / 滑动窗口 / 令牌桶(Lua 实现)
- 大 key / 热 key 问题
Day 124 Fri 🔧
LAB:Redis 实战
- 起 3 主 3 从 cluster
- 性能测试 redis-benchmark
- 模拟缓存雪崩 + 验证缓解方案
- 写 Lua 脚本实现分布式限流
- 用 RedisInsight 看数据
Day 125 Sat 🔐
Redis 安全
- 未授权访问漏洞历史(默认无密码)
- 主从复制 RCE 漏洞详解
- 恶意 Lua 脚本
- 缓存投毒攻击场景
- 慢查询 DoS
- 防御:ACL(6.0+)、bind、protected-mode、密码、rename-command
Day 126 Sun 🌐
LLM 服务中的 Redis + 周复盘
- 用 Redis 做 LLM 限流 + 配额
- 会话存储(多轮对话上下文)
- KV cache 元数据
- 实时排行榜(Tool 调用统计)
- 周复盘 + Week 19 预告
Week 19 · 向量数据库 + RAG
Day 127 Mon
向量数据库基础
- 为什么需要向量数据库(embedding 时代)
- 向量空间与相似度度量:cosine / dot product / Euclidean
- 暴力检索的代价
- 近似最近邻 ANN 算法概览
- HNSW 算法详解(分层导航图)
- IVF 倒排索引
- PQ 乘积量化压缩
- 召回率 vs 速度的权衡
Day 128 Tue
主流向量数据库对比
- FAISS(Meta,库非服务)
- Milvus(云原生、分布式)
- pgvector(PG 扩展、SQL 友好)
- Qdrant(Rust 实现)
- Weaviate(带 schema、混合检索)
- Chroma(轻量、开发友好)
- 选型决策矩阵
Day 129 Wed
RAG 架构
- RAG pipeline 全景
- chunking 策略:固定大小 / 语义 / 递归
- embedding 模型选择
- 检索 + reranker 两阶段
- hybrid search(向量 + BM25)
- context 拼接策略
- 评估指标:召回@k、MRR、答案准确率
Day 130 Thu
Embedding 工程
- 常用 embedding 模型对比(OpenAI、BGE、E5、Cohere)
- 向量维度选择
- 量化 embedding(节省存储)
- 多模态 embedding(CLIP 等)
- 领域适配与微调
- 批量 embedding 优化
Day 131 Fri 🔧
LAB:RAG 端到端
- 用 pgvector 建本地 RAG
- chunk + embed + 索引化
- 查询 + 测召回率
- 加入 reranker(cohere-rerank 或开源)
- 评测一组 ground truth
Day 132 Sat 🔐
检索投毒 + indirect prompt injection(重点)
- 知识库投毒攻击模型
- 恶意文档构造(SEO style + prompt 注入)
- indirect prompt injection 完整案例库
- 跨用户信息泄露场景
- 工具调用劫持
- 防御:内容过滤、来源标记、prompt 隔离、输出审查
- SecGPT 等防御框架
Day 133 Sun 🌐
向量数据库性能调优 + 周复盘
- 索引参数调优(HNSW M / ef)
- 分片与副本
- 预热与冷启动
- 更新策略
- 周复盘 + Week 20 预告
Week 20 · 对象存储 + 时序数据库 + 数据安全
Day 134 Mon
对象存储
- 对象存储 vs 块存储 vs 文件存储
- S3 协议核心 API
- 桶 / 对象 / 版本
- 多部分上传 multipart upload
- 预签名 URL(临时访问授权)
- 生命周期策略
- 跨区复制
- MinIO 自建
Day 135 Tue
时序数据库
- 时序数据特性(时间维度、追加为主)
- Prometheus TSDB 内部结构
- InfluxDB / VictoriaMetrics / TimescaleDB 对比
- 压缩算法:delta-of-delta、Gorilla
- 下采样 + 保留策略
- PromQL 入门
- 用于 LLM 监控的指标设计
Day 136 Wed
大数据存储概览
- HDFS 设计基础
- Parquet / ORC 列式存储
- 数据湖 vs 数据仓库 vs 湖仓一体
- Delta Lake / Iceberg / Hudi
- LLM 训练数据 pipeline 视角
- 对象存储 + 元数据 表的现代架构
Day 137 Thu
存储选型实战
- OLTP vs OLAP vs 时序 vs 向量 vs 对象 决策树
- Agent 安全产品的完整存储栈设计
- 会话数据 / 审计日志 / 知识库 / 模型权重各自落地
- 成本与性能权衡
Day 138 Fri 🔧
LAB:MinIO + Prometheus
- 起 MinIO 单机
- 用 boto3 操作 S3 API
- 生命周期策略实验
- 起 Prometheus 抓自定义 metrics
- 用 Thanos / Mimir 实现长期存储
Day 139 Sat 🔐
数据脱敏 + 密钥管理
- 数据分类分级(公开 / 内部 / 机密 / 高度机密)
- 脱敏策略:masking / tokenization / pseudonymization / 差分隐私
- 加密:传输中(TLS)+ 静态(KMS / SSE)
- 密钥管理:Vault / AWS KMS / GCP KMS
- SOPS GitOps 友好密钥
- 密钥轮转
- BYOK / HYOK 模式
Day 140 Sun 🌐
Phase 5 综合 + Phase 6 预告
- Agent 安全产品的完整数据栈
- 用户数据流 / 审计流 / 模型流
- 本阶段复盘 + 分布式章节预告
Phase 6 · 分布式 + 综合实战(Week 21-24)
Week 21 · 分布式系统理论
Day 141 Mon
分布式系统基础
- 为什么分布式系统难
- 8 大错误假设(Fallacies of Distributed Computing)
- 时钟问题(绝对时间不可靠)
- 逻辑时钟 / 向量时钟 / TrueTime
- 故障模型:crash-stop / crash-recovery / 拜占庭
- 网络分区与脑裂
Day 142 Tue
CAP + 一致性模型
- CAP 定理精确表述
- BASE 哲学
- 一致性模型谱系:linearizability / sequential / causal / eventual
- PACELC 扩展
- 读写一致性配置:N / R / W
- 典型系统的 CAP 选择
Day 143 Wed
共识算法
- 原子提交:2PC / 3PC 及其问题
- Paxos 概念性理解(不必死磕证明)
- Raft:leader / log / term 三大概念
- Raft leader 选举完整流程
- Raft 日志复制
- 拜占庭容错算法概览(PBFT)
- etcd 内部用 Raft 的实战
Day 144 Thu
分布式存储
- 复制策略:单主 / 多主 / 无主
- 分片策略:hash / range / lookup
- 一致性哈希深入
- Gossip 协议
- 反熵机制
- Cassandra / DynamoDB 设计借鉴
Day 145 Fri 🔧
LAB:Raft 实战
- 起 3 节点 etcd 集群
- 观察 leader election
- 模拟节点故障
- 看日志复制过程
- 用 etcdctl 操作
- 制造网络分区
Day 146 Sat 🔐
分布式系统攻击面
- 拜占庭故障与防御
- Eclipse 攻击(围攻单节点)
- Sybil 攻击(伪造多身份)
- 共识层攻击
- 时钟攻击
- LLM 分布式推理的潜在攻击
Day 147 Sun 🌐
综合 + Week 22 预告
- 典型分布式系统案例梳理
- 分布式系统设计中的常见陷阱
- 本周复盘
Week 22 · 高可用 + 混沌工程
Day 148 Mon
可用性指标
- SLI / SLO / SLA 完整定义
- 错误预算 error budget
- 不同 9 数对应的允许停机时长
- MTBF / MTTR / MTTF
- SLO 的多窗口告警(burn rate)
- 谷歌 SRE 实践
Day 149 Tue
高可用模式
- 主备 / 主主 / 多活
- 同城双活 / 异地多活
- 异地容灾
- 灾难恢复 RTO / RPO
- 金丝雀部署
- 蓝绿部署
- 定期演练(DR drill)
Day 150 Wed
混沌工程
- 混沌工程 4 大原则
- Netflix Chaos Monkey 历史
- 故障注入工具:chaos-mesh / Litmus / ChaosBlade / Gremlin
- 常见故障注入:网络延迟 / 丢包 / 杀进程 / 磁盘满
- 稳态假设的建立
- 实验的 blast radius 控制
Day 151 Thu
系统设计案例
- 设计 URL shortener
- 设计 chat 服务(千万用户)
- 设计 LLM gateway(多模型 + 限流 + 计费)
- 容量估算方法
- 瓶颈分析方法论
Day 152 Fri 🔧
LAB:混沌实验
- K8s 上部署 chaos-mesh
- 对 LLM 推理服务注入网络延迟
- 杀 Pod 测试 readiness
- 磁盘填满测试
- 观察服务降级表现
Day 153 Sat 🔐
供应链 + log4shell 复盘
- log4shell 漏洞机制深入(JNDI + LDAP)
- 影响范围与教训
- 依赖混淆攻击(dependency confusion)
- typosquatting / namespace hijack
- SBOM(软件物料清单)
- 镜像投毒
- 模型权重供应链风险
- SLSA framework
Day 154 Sun 🌐
综合 + Week 23 预告
- SRE 视角的服务运行
- 事故复盘文化(blameless postmortem)
- 本周复盘
Week 23 · LLM 服务化深入 + Agent 架构
Day 155 Mon
LLM 推理引擎全景
- vLLM 详解
- SGLang(RadixAttention)
- TensorRT-LLM
- TGI (HuggingFace)
- llama.cpp / MLC-LLM(端侧)
- 选型决策矩阵
- 性能对比
Day 156 Tue
推理网关
- 多模型路由(按 model / 按用户 / 按 cost)
- 模型版本管理与 A/B
- fallback 策略
- 计费与配额
- 缓存层(前置 KV cache)
- LiteLLM / OneAPI 类网关
Day 157 Wed
Agent 系统架构
- Agent 核心组件:planner / executor / memory / tools
- tool calling 协议(OpenAI function calling、MCP)
- 沙箱设计(语言级 vs 进程级 vs VM)
- 记忆系统:short-term / long-term / episodic
- 计划-执行-反思循环
- 错误恢复
Day 158 Thu
多 Agent 协同
- Agent-to-Agent 通信协议(A2A)
- 共享内存模式 vs 消息传递
- 编排框架:LangGraph / CrewAI / AutoGen
- 多 Agent 一致性
- 角色分工模式
Day 159 Fri 🔧
LAB:完整 Agent 服务
- 实现一个有 tool calling 的 Agent(vLLM + 自写网关)
- 接 pgvector 做 RAG
- 用 Docker 沙箱执行 code tool
- 部署到本地 K8s
- 压测 + 监控
Day 160 Sat 🔐
LLM / Agent 攻击面综述(你本职的本职)
- prompt injection 完整分类:direct / indirect / multimodal
- jailbreak 技术演进史
- tool abuse 攻击
- code execution 沙箱逃逸
- memory poisoning(长程记忆攻击)
- multi-agent 攻击(社工链)
- data exfiltration(通过 tool / response)
- 防御纵深策略:input filter / instruction hierarchy / output filter / human in the loop
Day 161 Sun 🌐
综合 + Week 24 预告
- 典型 Agent 安全产品形态梳理
- 本周复盘 + 毕业项目预告
Week 24 · 毕业项目:10 万用户 Agent 安全平台
Day 162 Mon
需求与目标
- 核心功能:实时检测 / 策略管理 / 审计 / 告警
- 非功能:10 万 DAU、P99 < 200ms、99.9% 可用
- 合规要求
- 核心场景拆解
Day 163 Tue
架构设计
- 容量估算(QPS、存储、带宽)
- 技术栈选型(综合应用前 23 周知识)
- 组件交互图
- 关键决策点
Day 164 Wed
数据流设计
- 推理路径(同步、低延迟)
- 审计路径(异步、高吞吐)
- 监控路径
- 反馈/学习路径
Day 165 Thu
部署架构
- K8s 集群规划(多 AZ)
- GPU 节点池设计
- 数据库部署模式
- CI/CD 流水线
- 灰度发布策略
Day 166 Fri 🔧
LAB:写设计文档
- 完整一份 system design doc
- 包含组件图、时序图、数据模型
- 容量计算
- 降级方案
- 渐进式上线计划
Day 167 Sat 🔐
威胁建模 + 红蓝对抗
- STRIDE 方法应用
- 攻击树构建
- 红蓝演练流程设计
- 表格化威胁清单
- 对应防御措施
Day 168 Sun 🎓
毕业总结
- 24 周完整回顾
- 你现在能做什么(能力评估)
- 下一步学习方向建议
- 推荐进阶资源
- 结业证书 :)