[{"data":1,"prerenderedAt":65},["ShallowReactive",2],{"blog-list":3},[4,16,24,31,41,48,55],{"path":5,"title":6,"description":7,"date":8,"category":9,"tags":10},"\u002Fblog\u002Fwsl2-clash-huorong-troubleshooting","WSL2 + Clash + 火绒 踩坑排查记录","代理开着 WSL2 就断网，关掉又访问不了外网。记录一次从 ARP 拦截日志追到 TUN 模式冲突的完整排查过程，以及重建 Hyper-V 网络栈的正确恢复步骤。","2026-05-28","devops",[11,12,13,14,15],"wsl2","proxy","network","troubleshooting","debugging",{"path":17,"title":18,"description":19,"date":20,"category":9,"tags":21},"\u002Fblog\u002Fwsl2-port-forwarding-guide","WSL2 端口转发完整指南","WSL2 里跑起 dev server 本机能开、同事却访问不到？讲透 NAT 网络拓扑、portproxy 方案、防火墙放行与开机自动化脚本。","2026-05-27",[11,13,22,23,14],"port-forwarding","guide",{"path":25,"title":26,"description":27,"date":20,"category":9,"tags":28},"\u002Fblog\u002Fwsl2-setup-guide","WSL2 初始使用与开发环境配置指南","从安装发行版到搭好可用的前端开发环境，涵盖磁盘迁移、镜像加速、终端配置与常见初始化陷阱。",[11,29,30,23],"linux","windows",{"path":32,"title":33,"description":34,"date":35,"category":36,"tags":37},"\u002Fblog\u002Fvue-reactivity-principle","Vue 响应式原理源码解析","从 Vue 初始化流程切入，逐层剖析 initState 如何将 props 与 data 转为响应式，讲清依赖收集与派发更新的完整链路。","2025-03-08","source-code",[38,36,39,40],"vue","reactivity","javascript",{"path":42,"title":43,"description":44,"date":35,"category":36,"tags":45},"\u002Fblog\u002Fvue-router-source-code-analysis","VueRouter 源码深度解析","拆解 hash 与 history 两种路由模式的底层差异，跟读路由注册、匹配与导航守卫的源码实现。",[38,46,36,47],"vue-router","browser",{"path":49,"title":50,"description":51,"date":35,"category":36,"tags":52},"\u002Fblog\u002Fvuex-source-code-analysis","Vuex 源码深度解析","从单例模式与单向数据流的设计思想入手，跟读 install 函数、store 构造与响应式状态的实现细节。",[38,53,36,54],"vuex","design-pattern",{"path":56,"title":57,"description":58,"date":59,"category":9,"tags":60},"\u002Fblog\u002Fnvm-pnpm-notes","nvm 版本管理与 pnpm 对比笔记","解决 nvm list available 返回空的镜像配置问题，并对比 pnpm 与 npm 在依赖存储与安装速度上的差异。","2024-07-13",[61,62,63,64,14],"nvm","npm","pnpm","nodejs",1788337377802]