结构化并发:为什么不该再用 GlobalScope
从一次并行请求写错导致的「页面关了请求还在跑」说起,讲清 CoroutineScope、Job 层级、异常传播,以及 supervisorScope 到底什么时候用。
从一次并行请求写错导致的「页面关了请求还在跑」说起,讲清 CoroutineScope、Job 层级、异常传播,以及 supervisorScope 到底什么时候用。
一份可以照着做的 Compose 性能排查清单:先确认重组范围,再逐个检查稳定性、lambda 捕获、derivedStateOf、key 和 Modifier 顺序。
一次真实的冷启动优化记录:怎么度量启动时间、找出启动路径上的隐形耗时、用 Baseline Profile 让首屏更快,以及哪些优化其实是白费力。
一年里写了六个非 Android 的小工具,四种技术栈都用过。这篇是我总结的选型决策表,以及每个选择事后是否后悔。
从「同一个 Flow 被两处收集,接口却被请求了两次」说起,讲清冷流与热流的本质区别、底层实现(SafeCollector、缓冲与 replay),以及 shareIn / stateIn 的三种启动策略怎么选。
为什么放弃现成的博客框架,改用 Astro 手写一套:构建只要几秒、几乎没有客户端 JS、Markdown 写完 git push 就自动发布。
从一次并行请求写错导致的「页面关了请求还在跑」说起,讲清 CoroutineScope、Job 层级、异常传播,以及 supervisorScope 到底什么时候用。
一份可以照着做的 Compose 性能排查清单:先确认重组范围,再逐个检查稳定性、lambda 捕获、derivedStateOf、key 和 Modifier 顺序。
一次真实的冷启动优化记录:怎么度量启动时间、找出启动路径上的隐形耗时、用 Baseline Profile 让首屏更快,以及哪些优化其实是白费力。
从 Clikt 搭骨架到 GraalVM native-image 打包成单文件二进制,记录用 Kotlin 写 CLI 的完整链路,以及 native-image 上的几个反射坑。
Android · 2025
把 logcat 变成能按业务维度过滤的实时面板,支持正则高亮与崩溃聚类。
命令行 · 2025
一组 adb 快捷命令:批量装包、抓取堆栈、清理应用数据、一键录屏。
桌面端 · 2024
跨平台资源打包工具:把设计给的图批量转 WebP / AVIF,并生成 Android 多密度目录。