~/blog
5 年 · 29 篇文章
2026 11 篇
C++ 设计模式实战:RAII、观察者、工厂 用现代 C++(C++17/20)实现三种高频设计模式:RAII 资源管理、观察者模式事件系统、工厂模式插件架构。每种模式给出问题场景、实现代码和真实工程案例。
#cpp
#设计模式
→ 数据结构基础:从数组到红黑树 系统梳理常用数据结构的核心原理、时间复杂度和适用场景。数组、链表、栈、队列、哈希表、二叉树、堆、图,每种结构附实现要点和 C++ 代码片段。
#数据结构
#算法
→ OpenClaw vs Hermes Agent:两个本地优先 Agent 的设计差异 OpenClaw(Novita AI)和 Hermes Agent(Nous Research)都是本地运行的个人 AI Agent,但在记忆系统、技能学习、运行环境和模型生态上走了不同的路。深入对比两种架构的核心差异。
#AI
#agent
→ AI Agent 的记忆系统:从上下文窗口到长期记忆 深入拆解 AI Agent 的四种记忆类型、上下文窗口压缩策略、RAG 向量检索原理,以及三种典型失败模式和工程选型建议。
#AI
#agent
→ 什么是 AI Agent?从 LLM 到自主执行 LLM 本身是无状态问答机,Agent 是什么让它’动’起来的?本文深入解析 Agent 的四个核心能力、ReAct 框架、工具调用原理,以及主流框架横向对比。
#AI
#agent
→ 二分查找:永远写不对?记住这个模板 彻底搞清楚二分查找的边界问题:闭区间和左闭右开两套模板、三道经典 LeetCode 题目完整 C++ 实现,以及二分答案的进阶思路。
#算法
#二分查找
→ 滑动窗口算法:从暴力到 O(n) 的思维跃迁 系统讲解滑动窗口算法的核心模板、适用题型,配合三道经典 LeetCode 题目的完整 C++ 实现,彻底理解双指针收缩思路。
#算法
#滑动窗口
→ Clash / Mihomo 配置详解:规则、策略组与分流 深入解析 Clash/Mihomo 的核心配置结构,包括代理节点、策略组类型、规则优先级、DNS fake-ip 模式,以及一份实用的完整配置模板。
#网络
#clash
→ 代理与翻墙技术原理:从 HTTP 代理到现代协议 深入解析代理与 VPN 的本质区别,梳理从 SOCKS5 到 Shadowsocks、V2Ray/Xray、Hysteria2 的协议演进,以及机场订阅的技术本质。
#网络
#代理
→ HID 设备热插拔检测:从 udev 到 node-hid 在 Linux 上用 node-hid + usb 库实现可靠的 USB HID 设备热插拔检测,踩坑记录
#cpp
#hid
→ Electron IPC 类型安全:从 any 到完全类型化 用 TypeScript 泛型封装 Electron IPC,彻底消灭 any,preload 契约集中管理
#electron
#typescript
→ 2024 5 篇
手动关闭多个 el-popover(不用 v-model:visible) 通过 ref + Reflect.get 调用 hide() 方法手动关闭 Element Plus Popover,解释 Vue3 Proxy 导致无法直接调用实例方法的原因。
#vue
#element-plus
→ 用 Vite+(vp)从零搭建 Vue3 + TypeScript + Element Plus + Pinia + Vue Router 使用 Vite+ 统一工具链(vp)一条命令搭建 Vue3 全家桶,涵盖按需导入、Pinia store、路由配置,以及常见坑的解决方案。
#vue
#vite
→ CEF LNK2038:解决 _ITERATOR_DEBUG_LEVEL 不匹配错误 分析 CEF(Chromium Embedded Framework)集成时出现的 LNK2038 _ITERATOR_DEBUG_LEVEL 链接错误,从根本原因到解决方案的完整指南。
#C++
#CEF
→ 彻底解决 npm 安装 Electron 失败的问题 分析 npm install electron 失败的根本原因(下载二进制超时/被墙),通过国内镜像(npmmirror)彻底解决,并介绍多种备选方案和常见错误排查。
#Electron
#npm
→ 解决 git 报错:Fatal: Out of memory, malloc failed 分析 git 大仓库操作时出现 Out of memory malloc failed 的根本原因,通过调整 pack.windowMemory、http.postBuffer 和 git repack 彻底解决。
#Git
#性能
→ 2023 7 篇
在 VMware 虚拟机中安装 open-vm-tools 完整指南 详解 VMware Tools 的作用、open-vm-tools 与官方 VMware Tools 的区别,以及在 Ubuntu 虚拟机中安装并生效的完整步骤和常见问题排查。
#VMware
#Linux
→ 负载均衡算法完全指南:从轮询到一致性哈希 系统梳理静态与动态负载均衡算法,涵盖轮询、随机、权重、IP Hash、一致性 Hash、最少连接、最快响应等,并对比 Nginx、Dubbo、Spring Cloud LoadBalancer 的实现差异。
#分布式
#负载均衡
→ C# 通过 SendMessage 向 C++ 窗口发送消息与字符串 使用 P/Invoke 调用 user32.dll 的 SendMessage,从 C# 发送自定义 WM_USER 消息及字符串指针给 C++ 原生窗口,并在 C++ 侧正确接收和转换。
#C#
#C++
→ ATL 字符串转换:CW2A 与 CA2W 完全指南 详解 ATL 宏 CW2A/CA2W 在 Unicode 与 ANSI 之间的字符串转换用法、头文件依赖、USES_CONVERSION 宏的作用与常见陷阱。
#C++
#Windows
→ C++ 现代随机数生成:用 mt19937 彻底告别 rand() 深入讲解为什么 rand() 不够用,以及如何用 C++11 的 <random> 库正确生成高质量随机数,涵盖 mt19937、各种分布和线程安全。
#cpp
#c++11
→ 将 EXE 和 DLL 打包成单一可执行文件 介绍两种将 exe 和依赖 dll 打包成单文件的方案:Enigma Virtual Box 和 WinRAR 自解压,适合发布 Windows 桌面程序时简化分发流程。
#windows
#cpp
→ Windows PostMessage 跨线程传递 std::vector 指针 通过 PostMessage 在 Windows 消息队列中传递 std::vector 指针,使用 reinterpret_cast 将指针装入 LPARAM,并在接收方正确释放内存。
#C++
#Windows
→ 2022 5 篇
C++ 实现程序开机自启动:注册表方式详解 通过操作 Windows 注册表 Run 键实现程序开机自启动,包括 HKCU 与 HKLM 区别、完整封装代码、工作目录问题和 UAC 权限处理。
#windows
#cpp
→ MFC 中 CString 与 WPARAM 之间的转换 详解 MFC 消息传递中 CString 无法直接强转为 WPARAM 的原因,以及两种正确的转换方案,并介绍结构体指针传递的正确姿势。
#mfc
#cpp
→ 正确编译 Duilib 静态库:避免 ATL 依赖和链接错误 详解如何用 DuiLib_Static.vcxproj 编译 Duilib 静态库,解决 VARIANT 未定义、Unicode 配置不匹配和 ATL 依赖等常见问题。
#cpp
#duilib
→ MFC 界面自适应不同分辨率 MFC 对话框程序实现控件和字体随分辨率自动缩放的完整方案,附 DPI Awareness 配置说明
#mfc
#cpp
→ MFC 无标题栏窗口客户区拖动:三种方法对比 MFC 对话框去掉标题栏后如何实现拖动移动窗口,三种方案完整实现与适用场景分析
#mfc
#cpp
→ 2021 1 篇