[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fZdOweLMeiTa0OP1vWbsb11p3TB_1BjRMNR5_Zlk9lMw":3,"$f21LeezRrK3wbHWhnt6QKNvf5g41ERCc3fmxOI9PVFek":419},[4,18,29,41,51,58,65,72,79,86,96,105,115,124,132,140,149,158,167,177,184,194,200,207,213,222,229,236,244,254,263,272,282,292,302,310,320,331,341,350,358,364,372,380,388,396,404,411],{"slug":5,"title":6,"description":7,"pub_date":8,"tags":9,"draft":16,"word_count":17},"ide-skills-guide","Agent Skills 完全指南：21 款第三方 Skill 深度评测与使用心得","全面评测 21 款第三方 Agent Skills，涵盖 Vue 生态、前端设计、构建工具、实用工具四大分类。从安装配置到实际使用场景，带你了解每个 Skill 的功能特点、最佳实践与使用心得。","2026-06-15",[10,11,12,13,14,15],"agent","skills","AI","效率工具","前端","Vue",false,4169,{"slug":19,"title":20,"description":21,"pub_date":22,"tags":23,"draft":16,"word_count":28},"linux-kernel-skeleton-struct-funcptr-container_of","Linux 内核骨架：struct、函数指针与 container_of","读懂 Linux 内核源码的三件套：巨大的 struct 组合代替继承、函数指针表实现虚派发、container_of 宏从嵌入成员找回完整对象。","2026-05-09",[24,25,26,27],"linux","kernel","C","container_of",1369,{"slug":30,"title":31,"description":32,"pub_date":33,"tags":34,"draft":16,"word_count":40},"astro-complete-guide-2025","Astro 5 深度剖析：Islands 架构原理、构建优化与 Cloudflare Workers 边缘部署","从编译器视角解析 Astro 5 的 Islands 架构实现原理，Content Layer API 的 Vite 插件机制，Server Islands 的流式渲染，以及如何在 Cloudflare Workers + D1 边缘环境下榨干性能。","2026-05-08",[35,36,37,38,39],"astro","frontend","cloudflare","performance","architecture",3663,{"slug":42,"title":43,"description":44,"pub_date":45,"tags":46,"draft":16,"word_count":50},"llm-prompt-engineering","Prompt Engineering 实战：让 LLM 真正听话的技巧","System prompt 怎么写、Few-shot 怎么设计、Chain-of-Thought 原理，以及常见失败模式和调试方法。","2026-05-03",[47,48,49],"ai","llm","工程实践",1723,{"slug":52,"title":53,"description":54,"pub_date":45,"tags":55,"draft":16,"word_count":57},"rag-system-design","RAG 系统设计：从 naive 到 production-ready","Retrieval-Augmented Generation 不只是「向量数据库 + LLM」，分块策略、召回质量、重排序、缓存才是工程核心。",[47,56,48,49],"rag",1613,{"slug":59,"title":60,"description":61,"pub_date":45,"tags":62,"draft":16,"word_count":64},"git-advanced-workflow","Git 进阶工作流：rebase、cherry-pick、bisect 的正确使用","merge 会了，但 rebase 总搞错？bisect 找 bug 提交？interactive rebase 整理历史？这篇一次说清楚。",[63,49],"git",1396,{"slug":66,"title":67,"description":68,"pub_date":45,"tags":69,"draft":16,"word_count":71},"docker-practical-guide","Docker 实战：从会用到用好","会 docker run 不够，Dockerfile 最佳实践、多阶段构建、Compose 编排、镜像瘦身才是日常真正需要的。",[70,24,49],"docker",1268,{"slug":73,"title":74,"description":75,"pub_date":45,"tags":76,"draft":16,"word_count":78},"anthropics-skills-guide","anthropics\u002Fskills：Anthropic 官方 Agent Skills 仓库解析","Anthropic 官方开源的 Agent Skills 标准仓库，127k stars，解析 SKILL.md 规范、17 个示例 skill 的设计模式，以及如何在 Claude Code \u002F Claude.ai \u002F API 中使用",[47,77,10,11],"Claude",2090,{"slug":80,"title":81,"description":82,"pub_date":45,"tags":83,"draft":16,"word_count":85},"karpathy-claude-code-guidelines","Karpathy 的 LLM 编码批评与 CLAUDE.md 最佳实践","基于 Andrej Karpathy 对 LLM 编程助手的观察，forrestchang 提炼出一个 CLAUDE.md 文件，4 条原则解决 AI 编码的典型失控问题：乱猜假设、过度设计、乱改代码、目标不清",[47,77,84,49],"Claude Code",2699,{"slug":87,"title":88,"description":89,"pub_date":45,"tags":90,"draft":16,"word_count":95},"typescript-advanced-patterns","TypeScript 高级模式：让类型系统为你工作","基础 TS 会了但类型总是 any？条件类型、映射类型、模板字面量类型、infer 关键字才是 TS 的真正威力。",[91,92,93,94],"typescript","类型系统","前端工程","高级模式",1419,{"slug":97,"title":98,"description":99,"pub_date":45,"tags":100,"draft":16,"word_count":104},"linux-performance-tuning","Linux 性能调优实战：从 top 到 perf 的完整工具链","遇到性能问题不知道从哪下手？这篇建立系统化的排查思路，从 CPU\u002F内存\u002FIO\u002F网络逐层分析。",[24,101,102,103],"性能","运维","系统编程",1524,{"slug":106,"title":107,"description":108,"pub_date":45,"tags":109,"draft":16,"word_count":114},"python-functional-programming","Python 函数式编程：map\u002Ffilter\u002Freduce 之外","Python 不是纯函数式语言，但 functools、itertools、偏函数、闭包这些工具用好了能让代码简洁一个量级。",[110,111,112,113],"python","函数式","闭包","装饰器",1867,{"slug":116,"title":117,"description":118,"pub_date":45,"tags":119,"draft":16,"word_count":123},"python-oop-guide","Python 面向对象：__init__ 之外你需要知道的","Python OOP 不只是 class + __init__，魔术方法、描述符、元类才是真正的武器。",[110,120,121,122],"OOP","面向对象","魔术方法",1792,{"slug":125,"title":126,"description":127,"pub_date":45,"tags":128,"draft":16,"word_count":131},"python-data-structures","Python 内置数据结构深度解析","list、dict、set、tuple 不只是数据容器，搞懂它们的底层实现和时间复杂度，才能写出高性能 Python。",[110,129,101,130],"数据结构","算法",1517,{"slug":133,"title":134,"description":135,"pub_date":45,"tags":136,"draft":16,"word_count":139},"python-basics-quick-start","Python 快速上手：写给有编程基础的人","已经会其他语言，想快速掌握 Python 的语法特性和思维方式，这篇是捷径。",[110,137,138],"入门","基础",1607,{"slug":141,"title":142,"description":143,"pub_date":45,"tags":144,"draft":16,"word_count":148},"python-dataclass-pydantic","Python dataclass vs Pydantic：数据类选型指南","dataclass 是标准库的轻量选择，Pydantic v2 是带验证的重武器，什么时候用哪个，这篇说清楚。",[110,145,146,147],"dataclass","pydantic","数据验证",1323,{"slug":150,"title":151,"description":152,"pub_date":45,"tags":153,"draft":16,"word_count":157},"python-asyncio-practical","Python asyncio 实战：从回调地狱到协程优雅","asyncio 是 Python 异步编程的核心，搞懂 event loop、Task、gather 这些概念才能写出真正高效的异步代码。",[110,154,155,156],"asyncio","并发","网络编程",1258,{"slug":159,"title":160,"description":161,"pub_date":45,"tags":162,"draft":16,"word_count":166},"python-type-hints-guide","Python 类型注解完全指南：从入门到实践","Python 3.5+ 引入类型注解，配合 mypy\u002Fpyright 让 Python 也能享受静态类型检查的好处。",[110,163,164,165],"typescript-style","type-hints","工具链",1102,{"slug":168,"title":169,"description":170,"pub_date":171,"tags":172,"draft":16,"word_count":176},"pwa-install-update-button","PWA 踩坑：为什么安装按钮从来不出现","从 beforeinstallprompt 到 Service Worker waiting，把 PWA 的安装与更新提示真正做对","2026-05-02",[173,174,175],"pwa","javascript","web",1683,{"slug":178,"title":179,"description":180,"pub_date":181,"tags":182,"draft":16,"word_count":183},"openclaw-vs-hermes-agent","OpenClaw vs Hermes Agent：两个本地优先 Agent 的设计差异","OpenClaw（Novita AI）和 Hermes Agent（Nous Research）都是本地运行的个人 AI Agent，但在记忆系统、技能学习、运行环境和模型生态上走了不同的路。深入对比两种架构的核心差异。","2026-05-01",[47,10,48],1679,{"slug":185,"title":186,"description":187,"pub_date":181,"tags":188,"draft":16,"word_count":193},"cpp-random-design-patterns","C++ 设计模式实战：RAII、观察者、工厂","用现代 C++（C++17\u002F20）实现三种高频设计模式：RAII 资源管理、观察者模式事件系统、工厂模式插件架构。每种模式给出问题场景、实现代码和真实工程案例。",[189,190,191,192],"cpp","设计模式","c++17","工程",2613,{"slug":195,"title":196,"description":197,"pub_date":181,"tags":198,"draft":16,"word_count":199},"data-structures-fundamentals","数据结构基础：从数组到红黑树","系统梳理常用数据结构的核心原理、时间复杂度和适用场景。数组、链表、栈、队列、哈希表、二叉树、堆、图，每种结构附实现要点和 C++ 代码片段。",[129,130,189,138],3004,{"slug":201,"title":202,"description":203,"pub_date":204,"tags":205,"draft":16,"word_count":206},"ai-agent-what-is","什么是 AI Agent？从 LLM 到自主执行","LLM 本身是无状态问答机，Agent 是什么让它’动’起来的？本文深入解析 Agent 的四个核心能力、ReAct 框架、工具调用原理，以及主流框架横向对比。","2026-04-30",[47,10,48],2116,{"slug":208,"title":209,"description":210,"pub_date":204,"tags":211,"draft":16,"word_count":212},"ai-agent-memory","AI Agent 的记忆系统：从上下文窗口到长期记忆","深入拆解 AI Agent 的四种记忆类型、上下文窗口压缩策略、RAG 向量检索原理，以及三种典型失败模式和工程选型建议。",[47,10,56],2052,{"slug":214,"title":215,"description":216,"pub_date":204,"tags":217,"draft":16,"word_count":221},"network-proxy-vpn-guide","代理与翻墙技术原理：从 HTTP 代理到现代协议","深入解析代理与 VPN 的本质区别，梳理从 SOCKS5 到 Shadowsocks、V2Ray\u002FXray、Hysteria2 的协议演进，以及机场订阅的技术本质。",[218,219,220],"网络","代理","协议",2148,{"slug":223,"title":224,"description":225,"pub_date":204,"tags":226,"draft":16,"word_count":139},"algorithm-binary-search","二分查找：永远写不对？记住这个模板","彻底搞清楚二分查找的边界问题：闭区间和左闭右开两套模板、三道经典 LeetCode 题目完整 C++ 实现，以及二分答案的进阶思路。",[130,227,228,189],"二分查找","leetcode",{"slug":230,"title":231,"description":232,"pub_date":204,"tags":233,"draft":16,"word_count":235},"algorithm-sliding-window","滑动窗口算法：从暴力到 O(n) 的思维跃迁","系统讲解滑动窗口算法的核心模板、适用题型，配合三道经典 LeetCode 题目的完整 C++ 实现，彻底理解双指针收缩思路。",[130,234,228,189],"滑动窗口",1943,{"slug":237,"title":238,"description":239,"pub_date":204,"tags":240,"draft":16,"word_count":243},"network-clash-config","Clash \u002F Mihomo 配置详解：规则、策略组与分流","深入解析 Clash\u002FMihomo 的核心配置结构，包括代理节点、策略组类型、规则优先级、DNS fake-ip 模式，以及一份实用的完整配置模板。",[218,241,219,242],"clash","配置",1292,{"slug":245,"title":246,"description":247,"pub_date":248,"tags":249,"draft":16,"word_count":253},"hid-hotplug","HID 设备热插拔检测：从 udev 到 node-hid","在 Linux 上用 node-hid + usb 库实现可靠的 USB HID 设备热插拔检测，踩坑记录","2026-04-28",[189,250,24,251,252],"hid","nodejs","electron",2039,{"slug":255,"title":256,"description":257,"pub_date":258,"tags":259,"draft":16,"word_count":262},"electron-ipc-types","Electron IPC 类型安全：从 any 到完全类型化","用 TypeScript 泛型封装 Electron IPC，彻底消灭 any，preload 契约集中管理","2026-04-25",[252,91,260,261],"ipc","vue",1446,{"slug":264,"title":265,"description":266,"pub_date":267,"tags":268,"draft":16,"word_count":271},"element-plus-popover-hide","手动关闭多个 el-popover（不用 v-model:visible）","通过 ref + Reflect.get 调用 hide() 方法手动关闭 Element Plus Popover，解释 Vue3 Proxy 导致无法直接调用实例方法的原因。","2024-10-25",[261,269,270],"element-plus","vue3",1321,{"slug":273,"title":274,"description":275,"pub_date":276,"tags":277,"draft":16,"word_count":281},"vite-vue3-ts-elementplus-pinia","用 Vite+（vp）从零搭建 Vue3 + TypeScript + Element Plus + Pinia + Vue Router","使用 Vite+ 统一工具链（vp）一条命令搭建 Vue3 全家桶，涵盖按需导入、Pinia store、路由配置，以及常见坑的解决方案。","2024-08-27",[261,278,91,269,279,280],"vite","pinia","vite-plus",1960,{"slug":283,"title":284,"description":285,"pub_date":286,"tags":287,"draft":16,"word_count":291},"cef-lnk2038-iterator-debug-level","CEF LNK2038：解决 _ITERATOR_DEBUG_LEVEL 不匹配错误","分析 CEF（Chromium Embedded Framework）集成时出现的 LNK2038 _ITERATOR_DEBUG_LEVEL 链接错误，从根本原因到解决方案的完整指南。","2024-05-07",[189,288,289,290],"CEF","Visual Studio","链接错误",1509,{"slug":293,"title":294,"description":295,"pub_date":296,"tags":297,"draft":16,"word_count":301},"npm-electron-install-fix","彻底解决 npm 安装 Electron 失败的问题","分析 npm install electron 失败的根本原因（下载二进制超时\u002F被墙），通过国内镜像（npmmirror）彻底解决，并介绍多种备选方案和常见错误排查。","2024-03-01",[252,298,299,300],"npm","前端工具链","国内镜像",1494,{"slug":303,"title":304,"description":305,"pub_date":306,"tags":307,"draft":16,"word_count":309},"git-out-of-memory","解决 git 报错：Fatal: Out of memory, malloc failed","分析 git 大仓库操作时出现 Out of memory malloc failed 的根本原因，通过调整 pack.windowMemory、http.postBuffer 和 git repack 彻底解决。","2024-01-31",[63,24,308],"工具",2244,{"slug":311,"title":312,"description":313,"pub_date":314,"tags":315,"draft":16,"word_count":319},"vmware-tools-install","在 VMware 虚拟机中安装 open-vm-tools 完整指南","详解 VMware Tools 的作用、open-vm-tools 与官方 VMware Tools 的区别，以及在 Ubuntu 虚拟机中安装并生效的完整步骤和常见问题排查。","2023-11-21",[316,24,317,318],"VMware","Ubuntu","虚拟机",2523,{"slug":321,"title":322,"description":323,"pub_date":324,"tags":325,"draft":16,"word_count":330},"load-balancing-algorithms","负载均衡算法完全指南：从轮询到一致性哈希","系统梳理静态与动态负载均衡算法，涵盖轮询、随机、权重、IP Hash、一致性 Hash、最少连接、最快响应等，并对比 Nginx、Dubbo、Spring Cloud LoadBalancer 的实现差异。","2023-11-15",[326,327,328,329],"分布式","负载均衡","Nginx","微服务",1764,{"slug":332,"title":333,"description":334,"pub_date":335,"tags":336,"draft":16,"word_count":340},"win-cw2a-ca2w","ATL 字符串转换：CW2A 与 CA2W 完全指南","详解 ATL 宏 CW2A\u002FCA2W 在 Unicode 与 ANSI 之间的字符串转换用法、头文件依赖、USES_CONVERSION 宏的作用与常见陷阱。","2023-06-09",[189,337,338,339],"windows","ATL","字符串",1665,{"slug":342,"title":343,"description":344,"pub_date":335,"tags":345,"draft":16,"word_count":349},"csharp-sendmessage-cpp","C# 通过 SendMessage 向 C++ 窗口发送消息与字符串","使用 P\u002FInvoke 调用 user32.dll 的 SendMessage，从 C# 发送自定义 WM_USER 消息及字符串指针给 C++ 原生窗口，并在 C++ 侧正确接收和转换。",[346,189,337,347,348],"C#","互操作","PInvoke",1554,{"slug":351,"title":352,"description":353,"pub_date":354,"tags":355,"draft":16,"word_count":357},"win-postmessage-vector","Windows PostMessage 跨线程传递 std::vector 指针","通过 PostMessage 在 Windows 消息队列中传递 std::vector 指针，使用 reinterpret_cast 将指针装入 LPARAM，并在接收方正确释放内存。","2023-05-26",[189,337,356],"WinAPI",1823,{"slug":359,"title":360,"description":361,"pub_date":354,"tags":362,"draft":16,"word_count":363},"exe-dll-single-package","将 EXE 和 DLL 打包成单一可执行文件","介绍两种将 exe 和依赖 dll 打包成单文件的方案：Enigma Virtual Box 和 WinRAR 自解压，适合发布 Windows 桌面程序时简化分发流程。",[337,189,308],1619,{"slug":365,"title":366,"description":367,"pub_date":354,"tags":368,"draft":16,"word_count":371},"cpp-random-mt19937","C++ 现代随机数生成：用 mt19937 彻底告别 rand()","深入讲解为什么 rand() 不够用，以及如何用 C++11 的 \u003Crandom> 库正确生成高质量随机数，涵盖 mt19937、各种分布和线程安全。",[189,369,370],"c++11","random",1549,{"slug":373,"title":374,"description":375,"pub_date":376,"tags":377,"draft":16,"word_count":379},"win-startup-registry","C++ 实现程序开机自启动：注册表方式详解","通过操作 Windows 注册表 Run 键实现程序开机自启动，包括 HKCU 与 HKLM 区别、完整封装代码、工作目录问题和 UAC 权限处理。","2022-12-26",[337,189,378],"registry",1201,{"slug":381,"title":382,"description":383,"pub_date":384,"tags":385,"draft":16,"word_count":387},"mfc-cstring-wparam","MFC 中 CString 与 WPARAM 之间的转换","详解 MFC 消息传递中 CString 无法直接强转为 WPARAM 的原因，以及两种正确的转换方案，并介绍结构体指针传递的正确姿势。","2022-11-25",[386,189,337],"mfc",1546,{"slug":389,"title":390,"description":391,"pub_date":392,"tags":393,"draft":16,"word_count":395},"duilib-static-build","正确编译 Duilib 静态库：避免 ATL 依赖和链接错误","详解如何用 DuiLib_Static.vcxproj 编译 Duilib 静态库，解决 VARIANT 未定义、Unicode 配置不匹配和 ATL 依赖等常见问题。","2022-08-24",[189,394,337,386],"duilib",2639,{"slug":397,"title":398,"description":399,"pub_date":400,"tags":401,"draft":16,"word_count":403},"mfc-dpi-adaptive","MFC 界面自适应不同分辨率","MFC 对话框程序实现控件和字体随分辨率自动缩放的完整方案，附 DPI Awareness 配置说明","2022-08-17",[386,189,337,402],"dpi",1414,{"slug":405,"title":406,"description":407,"pub_date":408,"tags":409,"draft":16,"word_count":410},"mfc-drag-window","MFC 无标题栏窗口客户区拖动：三种方法对比","MFC 对话框去掉标题栏后如何实现拖动移动窗口，三种方案完整实现与适用场景分析","2022-08-16",[386,189,337],1633,{"slug":412,"title":413,"description":414,"pub_date":415,"tags":416,"draft":16,"word_count":418},"algorithm-number-complement","整数的补数：位运算掩码解法","LeetCode 476 题，用掩码 XOR 实现整数补数，附 C++\u002FPython\u002FJava 三种实现及补数与补码的区别","2021-03-08",[130,417,228],"位运算",1374,{"ai":420,"agent":421,"rag":422,"llm":423,"算法":421,"二分查找":424,"leetcode":425,"cpp":426,"位运算":424,"滑动窗口":424,"CEF":424,"Visual Studio":424,"链接错误":424,"设计模式":424,"c++17":424,"工程":424,"c++11":424,"random":424,"C#":424,"windows":427,"互操作":424,"PInvoke":424,"数据结构":422,"基础":422,"duilib":424,"mfc":423,"electron":425,"typescript":425,"ipc":424,"vue":425,"element-plus":422,"vue3":424,"工具":422,"git":422,"linux":428,"hid":424,"nodejs":424,"分布式":424,"负载均衡":424,"Nginx":424,"微服务":424,"dpi":424,"网络":422,"clash":424,"代理":422,"配置":424,"协议":424,"npm":424,"前端工具链":424,"国内镜像":424,"pwa":424,"javascript":424,"web":424,"vite":424,"pinia":424,"vite-plus":424,"VMware":424,"Ubuntu":424,"虚拟机":424,"ATL":424,"字符串":424,"WinAPI":424,"registry":424,"python":420,"typescript-style":424,"type-hints":424,"工具链":424,"asyncio":424,"并发":424,"网络编程":424,"dataclass":424,"pydantic":424,"数据验证":424,"入门":424,"性能":422,"OOP":424,"面向对象":424,"魔术方法":424,"函数式":424,"闭包":424,"装饰器":424,"工程实践":421,"运维":424,"系统编程":424,"docker":424,"类型系统":424,"前端工程":424,"高级模式":424,"Claude":422,"skills":422,"Claude Code":424,"astro":424,"frontend":424,"cloudflare":424,"performance":424,"architecture":424,"kernel":424,"C":424,"container_of":424,"AI":424,"效率工具":424,"前端":424,"Vue":424},7,5,2,4,1,3,16,9,6]