~/blog
5 年 · 48 篇文章
Agent Skills 完全指南:21 款第三方 Skill 深度评测与使用心得
全面评测 21 款第三方 Agent Skills,涵盖 Vue 生态、前端设计、构建工具、实用工具四大分类。从安装配置到实际使用场景,带你了解每个 Skill 的功能特点、最佳实践与使用心得。
Linux 内核骨架:struct、函数指针与 container_of
读懂 Linux 内核源码的三件套:巨大的 struct 组合代替继承、函数指针表实现虚派发、container_of 宏从嵌入成员找回完整对象。
Astro 5 深度剖析:Islands 架构原理、构建优化与 Cloudflare Workers 边缘部署
从编译器视角解析 Astro 5 的 Islands 架构实现原理,Content Layer API 的 Vite 插件机制,Server Islands 的流式渲染,以及如何在 Cloudflare Workers + D1 边缘环境下榨干性能。
Prompt Engineering 实战:让 LLM 真正听话的技巧
System prompt 怎么写、Few-shot 怎么设计、Chain-of-Thought 原理,以及常见失败模式和调试方法。
RAG 系统设计:从 naive 到 production-ready
Retrieval-Augmented Generation 不只是「向量数据库 + LLM」,分块策略、召回质量、重排序、缓存才是工程核心。
Git 进阶工作流:rebase、cherry-pick、bisect 的正确使用
merge 会了,但 rebase 总搞错?bisect 找 bug 提交?interactive rebase 整理历史?这篇一次说清楚。
Docker 实战:从会用到用好
会 docker run 不够,Dockerfile 最佳实践、多阶段构建、Compose 编排、镜像瘦身才是日常真正需要的。
anthropics/skills:Anthropic 官方 Agent Skills 仓库解析
Anthropic 官方开源的 Agent Skills 标准仓库,127k stars,解析 SKILL.md 规范、17 个示例 skill 的设计模式,以及如何在 Claude Code / Claude.ai / API 中使用
Karpathy 的 LLM 编码批评与 CLAUDE.md 最佳实践
基于 Andrej Karpathy 对 LLM 编程助手的观察,forrestchang 提炼出一个 CLAUDE.md 文件,4 条原则解决 AI 编码的典型失控问题:乱猜假设、过度设计、乱改代码、目标不清
TypeScript 高级模式:让类型系统为你工作
基础 TS 会了但类型总是 any?条件类型、映射类型、模板字面量类型、infer 关键字才是 TS 的真正威力。
Linux 性能调优实战:从 top 到 perf 的完整工具链
遇到性能问题不知道从哪下手?这篇建立系统化的排查思路,从 CPU/内存/IO/网络逐层分析。
Python 函数式编程:map/filter/reduce 之外
Python 不是纯函数式语言,但 functools、itertools、偏函数、闭包这些工具用好了能让代码简洁一个量级。
Python 面向对象:__init__ 之外你需要知道的
Python OOP 不只是 class + __init__,魔术方法、描述符、元类才是真正的武器。
Python 内置数据结构深度解析
list、dict、set、tuple 不只是数据容器,搞懂它们的底层实现和时间复杂度,才能写出高性能 Python。
Python 快速上手:写给有编程基础的人
已经会其他语言,想快速掌握 Python 的语法特性和思维方式,这篇是捷径。
Python dataclass vs Pydantic:数据类选型指南
dataclass 是标准库的轻量选择,Pydantic v2 是带验证的重武器,什么时候用哪个,这篇说清楚。
Python asyncio 实战:从回调地狱到协程优雅
asyncio 是 Python 异步编程的核心,搞懂 event loop、Task、gather 这些概念才能写出真正高效的异步代码。
Python 类型注解完全指南:从入门到实践
Python 3.5+ 引入类型注解,配合 mypy/pyright 让 Python 也能享受静态类型检查的好处。
PWA 踩坑:为什么安装按钮从来不出现
从 beforeinstallprompt 到 Service Worker waiting,把 PWA 的安装与更新提示真正做对
OpenClaw vs Hermes Agent:两个本地优先 Agent 的设计差异
OpenClaw(Novita AI)和 Hermes Agent(Nous Research)都是本地运行的个人 AI Agent,但在记忆系统、技能学习、运行环境和模型生态上走了不同的路。深入对比两种架构的核心差异。
C++ 设计模式实战:RAII、观察者、工厂
用现代 C++(C++17/20)实现三种高频设计模式:RAII 资源管理、观察者模式事件系统、工厂模式插件架构。每种模式给出问题场景、实现代码和真实工程案例。
数据结构基础:从数组到红黑树
系统梳理常用数据结构的核心原理、时间复杂度和适用场景。数组、链表、栈、队列、哈希表、二叉树、堆、图,每种结构附实现要点和 C++ 代码片段。
什么是 AI Agent?从 LLM 到自主执行
LLM 本身是无状态问答机,Agent 是什么让它’动’起来的?本文深入解析 Agent 的四个核心能力、ReAct 框架、工具调用原理,以及主流框架横向对比。
AI Agent 的记忆系统:从上下文窗口到长期记忆
深入拆解 AI Agent 的四种记忆类型、上下文窗口压缩策略、RAG 向量检索原理,以及三种典型失败模式和工程选型建议。
代理与翻墙技术原理:从 HTTP 代理到现代协议
深入解析代理与 VPN 的本质区别,梳理从 SOCKS5 到 Shadowsocks、V2Ray/Xray、Hysteria2 的协议演进,以及机场订阅的技术本质。
二分查找:永远写不对?记住这个模板
彻底搞清楚二分查找的边界问题:闭区间和左闭右开两套模板、三道经典 LeetCode 题目完整 C++ 实现,以及二分答案的进阶思路。
滑动窗口算法:从暴力到 O(n) 的思维跃迁
系统讲解滑动窗口算法的核心模板、适用题型,配合三道经典 LeetCode 题目的完整 C++ 实现,彻底理解双指针收缩思路。
Clash / Mihomo 配置详解:规则、策略组与分流
深入解析 Clash/Mihomo 的核心配置结构,包括代理节点、策略组类型、规则优先级、DNS fake-ip 模式,以及一份实用的完整配置模板。
HID 设备热插拔检测:从 udev 到 node-hid
在 Linux 上用 node-hid + usb 库实现可靠的 USB HID 设备热插拔检测,踩坑记录
Electron IPC 类型安全:从 any 到完全类型化
用 TypeScript 泛型封装 Electron IPC,彻底消灭 any,preload 契约集中管理
手动关闭多个 el-popover(不用 v-model:visible)
通过 ref + Reflect.get 调用 hide() 方法手动关闭 Element Plus Popover,解释 Vue3 Proxy 导致无法直接调用实例方法的原因。
用 Vite+(vp)从零搭建 Vue3 + TypeScript + Element Plus + Pinia + Vue Router
使用 Vite+ 统一工具链(vp)一条命令搭建 Vue3 全家桶,涵盖按需导入、Pinia store、路由配置,以及常见坑的解决方案。
CEF LNK2038:解决 _ITERATOR_DEBUG_LEVEL 不匹配错误
分析 CEF(Chromium Embedded Framework)集成时出现的 LNK2038 _ITERATOR_DEBUG_LEVEL 链接错误,从根本原因到解决方案的完整指南。
彻底解决 npm 安装 Electron 失败的问题
分析 npm install electron 失败的根本原因(下载二进制超时/被墙),通过国内镜像(npmmirror)彻底解决,并介绍多种备选方案和常见错误排查。
解决 git 报错:Fatal: Out of memory, malloc failed
分析 git 大仓库操作时出现 Out of memory malloc failed 的根本原因,通过调整 pack.windowMemory、http.postBuffer 和 git repack 彻底解决。
在 VMware 虚拟机中安装 open-vm-tools 完整指南
详解 VMware Tools 的作用、open-vm-tools 与官方 VMware Tools 的区别,以及在 Ubuntu 虚拟机中安装并生效的完整步骤和常见问题排查。
负载均衡算法完全指南:从轮询到一致性哈希
系统梳理静态与动态负载均衡算法,涵盖轮询、随机、权重、IP Hash、一致性 Hash、最少连接、最快响应等,并对比 Nginx、Dubbo、Spring Cloud LoadBalancer 的实现差异。
ATL 字符串转换:CW2A 与 CA2W 完全指南
详解 ATL 宏 CW2A/CA2W 在 Unicode 与 ANSI 之间的字符串转换用法、头文件依赖、USES_CONVERSION 宏的作用与常见陷阱。
C# 通过 SendMessage 向 C++ 窗口发送消息与字符串
使用 P/Invoke 调用 user32.dll 的 SendMessage,从 C# 发送自定义 WM_USER 消息及字符串指针给 C++ 原生窗口,并在 C++ 侧正确接收和转换。
Windows PostMessage 跨线程传递 std::vector 指针
通过 PostMessage 在 Windows 消息队列中传递 std::vector 指针,使用 reinterpret_cast 将指针装入 LPARAM,并在接收方正确释放内存。
将 EXE 和 DLL 打包成单一可执行文件
介绍两种将 exe 和依赖 dll 打包成单文件的方案:Enigma Virtual Box 和 WinRAR 自解压,适合发布 Windows 桌面程序时简化分发流程。
C++ 现代随机数生成:用 mt19937 彻底告别 rand()
深入讲解为什么 rand() 不够用,以及如何用 C++11 的 <random> 库正确生成高质量随机数,涵盖 mt19937、各种分布和线程安全。
C++ 实现程序开机自启动:注册表方式详解
通过操作 Windows 注册表 Run 键实现程序开机自启动,包括 HKCU 与 HKLM 区别、完整封装代码、工作目录问题和 UAC 权限处理。
MFC 中 CString 与 WPARAM 之间的转换
详解 MFC 消息传递中 CString 无法直接强转为 WPARAM 的原因,以及两种正确的转换方案,并介绍结构体指针传递的正确姿势。
正确编译 Duilib 静态库:避免 ATL 依赖和链接错误
详解如何用 DuiLib_Static.vcxproj 编译 Duilib 静态库,解决 VARIANT 未定义、Unicode 配置不匹配和 ATL 依赖等常见问题。
MFC 界面自适应不同分辨率
MFC 对话框程序实现控件和字体随分辨率自动缩放的完整方案,附 DPI Awareness 配置说明
MFC 无标题栏窗口客户区拖动:三种方法对比
MFC 对话框去掉标题栏后如何实现拖动移动窗口,三种方案完整实现与适用场景分析