适合录制视频的博客文章清单
适合录制视频的博客文章清单
筛选标准:不过时、讲基础、讲算法、讲架构、当前技术价值高
按优先级从高到低排列
一、🔥 高优先级 —— 与 2026 年 Tokio 系列直接联动
这些文章可以和今年正在写的 Tokio 源码分析(sleep、I/O Driver、mio、ScheduledIo)形成系列,剪辑成连贯的视频。
| 文章 |
年份 |
原文标题 |
推荐视频选题 |
2023-05-30-tracing.md |
2023 |
The RESTEasy Tracing Feature Has Been Integrated Into WildFly |
「给 epoll_wait 装上行车记录仪:用 tracing 看 tokio 内部」。tracing 的 span/trace 可视化效果极好,可以把 tokio 的 park_internal → epoll_wait → process_at_time 链路用日志可视化跑一遍,屏幕左边代码右边 trace,视觉冲击力强 |
2018-01-05-async.md |
2018 |
并发与异步 |
「Rust async/await 从 2018 到 2026」。对比八年前的 Rust async 设计和 today’s tokio 实现,有历史纵深感。B 站用户吃这种 “演变” 类内容 |
2018-01-25-future.md |
2018 |
Java:「Future」与「FutureTask」 |
同上,可合并一期 |
2022-03-02-my-axum-playground.md |
2022 |
My Axum Playground |
「从 HTTP 请求到 epoll_wait:axum + tokio 的全链路追踪」。带一个 demo 从 axum 路由到 http handler,一直拆到 epoll_wait,实操性很强 |
2023-02-18-axum.md |
2023 |
Upgrade the axum-playground project to use axum 0.6 |
同上,可合并 |
二、🔴 高优先级 —— 语言基础 & 并发模型(永远不过时)
| 文章 |
年份 |
原文标题 |
推荐视频选题 |
根目录 go-vs-rust-concurrency-comparison.md |
— |
Go vs Rust 并发模型对比分析 |
「Goroutine vs async Task:两种并发的设计哲学」。对比 Go 的 M:N 调度器 vs tokio 的 work-stealing + epoll,受众面广,不依赖特定语言也能理解 |
根目录 source-code-comparison-goroutine-future-virtualthread.md |
— |
Goroutine / Future / Virtual Thread 源码对比 |
「三个世界,三种并发:Goroutine、async/await、Virtual Thread 的源码对比」。Go → Rust → Java 21 三种方案,从源码级别拆解。适合 B 站的 “硬核技术对比” 品类 |
2020-04-22-rust.md |
2020 |
基于 Rust 的 TCP 通信场景 |
「Rust 的所有权和生命周期:用图解讲清楚借用检查器」。基础内容,但任何时候都有新人需要学 |
2021-05-06-rust-deref.md |
2021 |
Rust Deref Example |
「Rust 的 Deref / DerefMut:自动解引用的秘密」。小而精的语言特性,适合做 10 分钟短篇 |
2017-12-21-concurrency.md |
2017 |
关于并发编程的一些思考(一) |
「并发编程的基础模型:从线程到协程」。不绑定具体语言,纯概念讲解,适合做系列的第一期 |
2017-12-22-concurrency.md |
2017 |
关于并发编程的一些思考(二) |
「并发编程:从事务到 Sequentially Consistent」续集,可做第二期 |
三、🟡 中优先级 —— Linux / 操作系统 / 网络
这些内容讲的是操作系统底层原理,不依赖具体版本,永远不会过时。
| 文章 |
年份 |
原文标题 |
推荐视频选题 |
2017-12-13-linux-driver.md(系列 4 篇) |
2017 |
Linux 驱动开发入门(一)~(四) |
「从零写一个 Linux 内核模块」。八年过去,Linux 模块的框架基本没变。做 “写一个 hello world 内核模块” 的实操视频,配合现在的 blog 里 hrtimer 和 epoll 的分析,形成 “用户态 → 内核态” 的全景 |
2018-03-08-tcp.md |
2018 |
TCP Server 与 Client,应该由谁负责关闭连接? |
「TCP 三次握手:从代码到网络包」。配合 Wireshark 抓包,展示 TCP 连接建立和 epoll 的关系。对应 blog 中的 “网卡中断 → 协议栈 → socket buffer → 就绪通知” 这一段 |
2021-08-25-Using Wireshark And jSSLKeyLog... |
2021 |
Using Wireshark And jSSLKeyLog To Capture Java SSL |
「用 Wireshark 看 SSL/TLS 握手」。实操视频,画面丰富(网络包列表、协议树、hex dump),B 站用户喜欢这类 “真实抓包” 内容 |
2023-06-20-wireshark.md |
2023 |
Using Wireshark To Analyze GRPC/ProtoBuf Messages |
同上,可合并 |
2019-12-05-http.md |
2019 |
HTTP 的 chunked 传输 |
「HTTP 协议:从 1.0 到 3.0」。基础中的基础,任何时候都需要 |
2019-12-12-http.md |
2019 |
HTTP 的客户端 chunked transfer |
同上 |
2019-12-13-http.md |
2019 |
HTTP 的 chunked transfer 协议分析 |
同上,三篇成系列 |
2020-02-07-graalvm.md |
2020 |
使用 sdkman 安装 GraalVM |
「GraalVM Native Image:AOT 编译原理」。当前 Spring Boot 3 + GraalVM 正热门,新旧皆可 |
2023-06-19-grpc.md |
2023 |
Using gRPC generated Java classes with IntelliJ |
「gRPC 的底层协议:HTTP/2 + Protobuf」。讲协议本身,不过时 |
2023-07-09-grpc-struct.md |
2023 |
The structure of the generated Java gRPC classes |
同上,可合并 |
四、🟢 中低优先级 —— JVM / 字节码 / 编译器
这些内容语言平台相关,但讲的是编译器原理和 JVM 底层,不会随版本交替过时。
| 文章 |
年份 |
原文标题 |
推荐视频选题 |
2017-06-11-invokedynamic-is-a-linking-scheme.md |
2017 |
Lambda is a linking scheme |
「invokedynamic:Java 最优雅的链接机制」。lambda 和 invokedynamic 的关系到现在没变,适合做一期 “JVM 字节码是怎么调用 lambda 的” 的拆解视频 |
2017-06-11-reading-notes-of-invokedynamic-101.md |
2017 |
Reading notes of ‘Invokedynamic 101’ |
同上,可合并 |
2019-05-02-asm.md(系列 3 篇) |
2019 |
配置基于容器的汇编环境 |
「字节码注入实战:用 ASM 改写 class」。实操 + 原理,代码跑起来的画面感好 |
2019-04-02-jit.md |
2019 |
Just-in-time Compiler 的实现原理 |
「JIT 编译器是怎么把热点代码变快的」。JIT 的基本原理十年没变,现在还可以讲 |
2018-09-09-volatile.md |
2018 |
通过 Java 的 volatile 来看 CPU Multi-core 的 Cache Line |
「volatile 和 Java 内存模型」。基础,不过时 |
2018-01-24-executors.md |
2018 |
Java:「Executors」与「Thread Group」 |
「Java 线程池原理:Executor 框架拆解」。面试高频考点,做一期有流量 |
2020-04-02-nio.md |
2020 |
Java NIO 代码阅读笔记「MappedBuffer」 |
「Java NIO:从 Buffer/Channel 到 Selector」。和 blog 里的 epoll 分析形成跨语言对比 |
五、🟢 低优先级 —— 算法 & 纯概念
这些不依赖任何技术栈,永远不过时。适合做 “休息区” 内容或系列之间的过渡。
| 文章 |
年份 |
原文标题 |
推荐视频选题 |
2017-03-04-Dijkstra-algorithm.md |
2017 |
A Java Implementation of Dijkstra’s Algorithm |
「Dijkstra 最短路径:从公式到代码」。白板讲解 + 代码动画,算法类视频在 B 站的播放量天花板很高 |
2017-03-20-fibonacci.md |
2017 |
A Non-recursive Approach To The Fibonacci |
「斐波那契:递归 vs 非递归」。讲递归的代价和迭代的优化,纯思维类内容 |
2017-12-06-git.md |
2017 |
Git 项目当中的 Windows/Linux 文件编码处理 |
「Git 内部原理:.git 目录里有什么」。git 的基础概念不会变 |
2017-12-06-regexp.md |
2017 |
正则表达式的边界 |
「正则表达式的两种引擎:NFA vs DFA」。自动机理论,纯算法,不依赖任何语言 |
2017-12-08-autotools.md |
2017 |
使用 Autotools 编译项目(上) |
「从 Makefile 到 autotools:C 项目的构建系统演化」。比较小众,但做一期 “为什么现代 Rust 不需要 autotools” 的角度很独特 |
六、📋 分类总览:三类视频定位
| 定位 |
目标观众 |
推荐选题 |
制作成本 |
| “源码拆解” 类 |
有经验的 Rust/后端开发者 |
Tokio 系列联动、tracing、Wireshark + epoll |
中高(需要准备代码和画图) |
| “对比分析” 类 |
全栈 / 多语言开发者 |
Goroutine vs Task vs VirtualThread、HTTP 版本对比 |
中(PPT 为主,少量代码) |
| “基础原理” 类 |
学生 / 初级开发者 |
Dijkstra、Git 内部原理、TCP 握手、堆内存 |
低(白板/PPT 即可) |
建议的发布节奏
- 每 2-3 期 “源码拆解”(联动博客,深度维护现有粉丝)
- 中间穿插 1 期 “对比分析”(拉新,扩受众)
- 偶尔 1 期 “基础原理”(休息区,降低制作成本)
七、🧩 扩展选题 —— 博客里没有专题文章,但你现在的积累可以录
这部分选题不来自单篇博客文章,而是来自你多年积累的技术深度和当前的 tokio 源码研究方向。每一个都和你已有的内容积累直接衔接。
| # |
选题 |
思路 |
和博客的衔接点 |
制作难度 |
| 1 |
「一条 volatile 在三门语言里:从 Java 到 Rust 到 C」 |
从 CPU 的 MESI 协议讲起,对比 Java volatile、Rust Ordering::AcqRel、C11 atomic_thread_fence。三个语言的三种写法背后是同一套硬件模型 |
复用到 tokio StateCell 的 AcqRel 分析、blog 里 2018-09-09-volatile.md 的 cache line 分析。素材现成的 |
中(PPT + 少量代码演示) |
| 2 |
「从 .await 到 epoll_wait:一条用户态到内核态的完整链路」 |
把 tokio sleep + I/O driver 两篇博客串联起来,从 Sleep::poll() 开始,经过 Driver 堆叠、mio::Poll、epoll_wait、最后到 LAPIC 时钟中断。适合做一期 “源码拆解” 的超长合辑 |
两篇 tokio 博客的完整内容。图都是现成的 |
高(需要剪辑和动画) |
| 3 |
「抽象零开销:Rust 的零成本抽象到底零在哪」 |
Iterator、Option/Result、async fn、trait monomorphization——Rust 承诺零成本抽象,到底在哪些环节真正零开销、在哪些环节有取舍 |
blog 里 2021-05-06-rust-deref.md(Deref 自动解引用)、tokio 系列的侵入式链表分析(TimerShared.pointers 无分配设计) |
中(代码为主) |
| 4 |
「用 Wireshark 验证 tokio 的行为」 |
实操:启动一个 tokio TcpListener,用 Wireshark 抓 TCP 三次握手、数据包的到达时间,对比用 epoll_wait timeout 设置的 5 秒是否准确 |
直接复用 tokio I/O blog 的 echo server 和 epoll 分析。Wireshark 抓包操作在 blog 2021-08-25 和 2023-06-20 都有基础 |
低(已有 demo 代码) |
| 5 |
「从锁到 CAS:并发控制的三代演化」 |
Mutex(OS 挂起)→ 自旋锁(busy-loop)→ CAS/Atomic(无锁)。用 tokio StateCell(CAS)+ Linux hrtimer(Mutex 加 waitqueue)+ Rust spin_loop_hint 做三个真实案例 |
tokio StateCell 的 compare_exchange 强 CAS、Linux hrtimer 的 spinlock + waitqueue。素材都是刚写过的 |
中(PPT + 代码) |
| 6 |
「巨量 timer 的两种管理哲学:Linux 内核 vs Tokio」 |
对比 Linux hrtimer 的红黑树 (O(log n)) 和 tokio 时间轮的 6 层 bucket (O(1))。讨论两种设计的不同取舍——内核需要纳秒精度、Tokio 需要海量并发 |
两篇博客的重合地带:tokio sleep blog 讲时间轮,hrtimer blog 讲内核红黑树。素材全部写好了 |
低(PPT 为主) |
| 7 |
「侵入式链表为什么快:从 Tokio Timer 到 Linux kernel 的同一选择」 |
侵入式链表(intrusive linked list)的节点自身包含 prev/next 指针,节点即元素,没有额外分配。Tokio 的 TimerShared 和 Linux 内核的 list_head 都用它 |
blog 里 TimerShared.pointers 就是侵入式链表,Slot EntryList 也是。内核 hrtimer 的 timerqueue_node 也是 list_head |
中(代码对比 + 白板) |
| 8 |
「调试 tracing:给分布式系统装行车记录仪」 |
从 Rust tracing crate 的 span/trace 可视化出发,讲如何在 tokio 应用里用 tracing-subscriber 看到每个 .await 的执行时间 |
blog 2023-05-30-tracing.md,结合 tokio 的 tracing instrument |
低(demo 为主) |
| 9 |
「多线程的三层博弈:从 CPU 到 OS 到 Runtime」 |
用同一个”两线程写同一个变量”的例子,在裸 C(无保护)→ pthread(互斥锁)→ Rust tokio(async lock)三个层次上跑,展示每层差异 |
blog 里 2017-12-21 和 2017-12-22 的并发系列。加上 go-vs-rust-concurrency-comparison.md |
中(多语言 demo) |
| 10 |
「Rust unsafe 的常见模式:从 Tokio 源码看 unsafe 的正确使用」 |
统计 tokio 运行时里最常见的 unsafe 模式:NonNull(指针包装)、侵入式链表、UnsafeCell(内部可变性)、Pin 的 get_unchecked_mut。不讲”unsafe 多可怕”,讲”unsafe 在干什么” |
tokio sleep blog 中 TimerHandle(NonNull<TimerShared>)、StateCell(UnsafeCell)、take_entries(侵入式链表) |
高(需要收集统计) |
选题矩阵
技术深度
↑
4/6/7 │ 2/3/5
PPT为主 │ 源码拆解
│
──────────┼────────→ 视频制作难度
│
1/9/10 │ 8
跨语言 │ demo
对比 │ 实操
│
| 象限 |
选题 |
适合场景 |
| 高深度 + 低制作 |
6、7 |
独白类,白板 + PPT,不讲 demo,纯概念输出 |
| 高深度 + 高制作 |
2、3、5 |
你最擅长的源码拆解类型,需要画流程图/动画 |
| 低深度 + 低制作 |
1、8、9 |
休息区内容,恢复更新节奏时用 |
| 低深度 + 高制作 |
4 |
实操视频,抓包 + 双屏,但准备麻烦 |
生成日期:2026-05-28
博客根目录:/Users/weli/works/liweinan.github.io
总梳理文章数:462 篇(2017-2025)