- 博客(22)
- 收藏
- 关注
原创 从 0 到完全掌握二叉树:从“看懂结构”到“在工程里用对”
学完二叉树之后,最有价值的不是背结论,而是形成判断方法。当问题天然存在层级和分支时,先考虑树,不要硬用线性结构去想。二叉树不是一种固定用途的结构,而是一整个家族;先判断你要的是形态约束、顺序约束、优先级约束,还是计算结构。二叉树只是“每个节点最多两个孩子”的结构,它本身不保证查找快。想利用大小关系做动态查找时,要用的是二叉搜索树,而不是随便一棵二叉树。想稳定得到较好的查找效率,工程里通常要进一步使用平衡树或标准库容器。
2026-04-15 19:08:45
332
原创 从 0 到解决 Windows 下 AI Coding 写入失败:先把项目设为 trusted,再避开坏掉的沙箱链路
这篇文章只讲一件事:Windows 下做 AI Coding 时,明明能读文件、能分析代码,但一到真正写文件就失败,到底该怎么解决。它不会绕很大一圈,而是直接告诉你:配置里该加什么、这一步到底解决了什么、如果还报相关错误,真正该怎么处理。
2026-04-15 19:00:16
648
原创 我是怎么用 Codex 做 AI 辅助开发的:从需求拆解到代码生成,再到联调测试,全流程提效实践
这两年,AI 编程工具已经不只是“帮你补全几行代码”了。如果只是把它当成一个高级代码补全器,其实有点低估它的价值。在我的实际开发过程中,我更愿意把这类工具,当成一种工程协作助手。需求拆解方案分析代码生成重构优化接口联调测试用例补全文档整理也就是说,AI 真正提高的,不只是“写代码的速度”,而是从需求到交付的整体效率。这篇文章就结合我自己的使用方式,以Codex为例,聊聊我是怎么做AI 辅助开发的。
2026-04-10 15:56:13
551
原创 Qt/C++ 多线程实践:从 mutex、shared_mutex 到 UI 线程刷新,我是怎么选型的
如果你让我把整篇文章压缩成几句话,我会这样说:第一,不要把“多线程”理解成“到处加锁”。真正稳定的项目,应该先有清晰的共享状态边界,再去讨论锁。这个结论属于工程方法论,但本质上是为了让同步原语服务于明确的资源边界。第二,默认优先mutex + 快照 + UI 线程消费。它简单、稳、容易维护,特别适合 Qt 界面刷新链路。这个方案和 Qt 的对象线程归属、事件循环、queued 调用机制天然匹配。Qt 文档第三,只有在读特别多、写特别少、而且全量快照成本明显偏高时,再考虑。
2026-04-10 15:34:54
269
原创 WebSocket 不是“实时系统”的答案:理解连接、时序与背压
后来再看WebSocket,我们越来越少问“这个技术适不适合实时”,而会先问下面五个问题。这五个问题不只适用于WebSocket,拿去看SSE、消息队列、,甚至很多异步系统都一样有用。如果还沿用最早那个直觉模型,WebSocket让系统变实时的一根网线可只要把前面的推导走完,那个印象就会慢慢变掉。它更像是一种持续协商中的会话通道它让双方不用每次重新建立一次性请求边界它适合承载持续、频繁、双向的交互它把很多原本藏在请求-响应模型背后的问题,直接摊到系统设计面前也正因为这样,
2026-04-09 08:48:40
349
原创 从 0 到完全掌握 WebSocket:从“会用”到“工程里用对”
最怕的不是消息多,而是消息多起来之后系统没有立场。一个连接允许排队多少消息?排队满了之后丢旧的、丢新的,还是断开?消息能不能合并?服务端是否允许按客户端能力降频?这些决策一定和业务语义绑定,而不是只靠底层库默认行为。最后把整篇文章收束成一组你可以直接带走的判断原则。
2026-04-09 08:41:24
387
原创 UDP 不是更快的 TCP:理解时效性、语义和工程边界
如果只把 UDP 理解成“不可靠协议”,其实还不够深。UDP 几乎不替应用做语义决定。它只做一件很克制的事:把一个报文尽力从这里送到那里。是否一定要到是否允许晚到是否允许重复是否必须按顺序处理如果丢了要不要补如果太快了该不该限速这些问题,UDP 都不回答。先比较序号或时间戳如果比当前旧,就直接丢掉如果更近,就覆盖当前状态引入确认机制设计幂等标识明确重试边界必要时切换到可靠通道是否需要小型抖动缓冲多久之后旧帧应直接废弃如何在连续性和延迟之间做平衡。
2026-04-08 22:41:43
403
1
原创 微服务为什么会走到 RPC,以及 gRPC 到底解决了什么
很多人对 RPC 的理解停在一句老话上:让远程调用像本地调用。这句话不能说错,但它只说对了一半。真正更关键的一半是:远程调用永远不可能真的等同于本地调用,所以系统必须显式表达“远程边界”的成本和语义。这才是 RPC 真正的工程价值。gRPC 不是先写接口代码,再补文档;它更推崇先写契约,再生成代码。这段.proto的意义远大于“省几行样板代码”。它的真正价值是:调用双方围绕同一份契约协作,接口描述不再散落在 wiki、注释、口头约定和多个语言实现里。
2026-04-08 21:55:42
371
原创 一篇读懂 TCP:为什么它可靠?为什么会粘包?它和 HTTP 到底是什么关系?
如果说三次握手是在“建立共同状态”,那四次挥手就是在“确认双方都结束了”。TCP 是全双工的。也就是说,两个方向都可以独立发数据。所以关闭连接时,不能粗暴地一刀切。必须分别关闭这两个方向。一方说:我这边发完了对方回应:我知道了对方再说:我这边也发完了最后一方回应:我知道了“我不再发送” 和 “我也不再发送” 是两个独立动作。这也是 TCP 区别于很多简单通信模型的地方。双方剩余数据都处理完,再优雅退出。消息 A消息 B结果接收方一次recv,读出来的是:A + B。
2026-04-06 18:07:35
1403
1
原创 为什么 Nginx 和 Redis 能扛住高并发:从设计巧思看高性能系统的底层哲学
一个连接一个线程线程阻塞等待线程多了再加锁、再调度一个 worker 管很多连接谁就绪了处理谁用多进程换隔离和稳定用 epoll 换高连接承载能力它把“连接并发”做轻了。多线程同时操作共享数据再靠锁、CAS、同步协议去兜住一致性共享状态只让一个执行流推进网络并发交给事件循环慢操作交给后台 fork让核心路径保持极短它把“共享状态并发”做轻了。Nginx 和 Redis 最打动人的地方,不是它们用了多少炫技,而是它们都非常克制。
2026-04-03 21:16:46
289
原创 一篇吃透 C++ 数据类型、结构体与类型系统
structclassenumunionusingtypedef起的别名C++ 类型系统├─ 基本类型│ ├─ 布尔│ ├─ 字符│ ├─ 整数│ ├─ 浮点│ ├─ void├─ 复合类型│ ├─ 指针│ ├─ 引用│ ├─ 数组│ └─ 函数类型└─ 用户自定义类型├─ enum└─ union类型不只是语法标签,它决定了数据表示、操作规则和对象语义。C++ 类型系统可以先分成基本类型、复合类型、用户自定义类型三层。
2026-04-02 17:58:49
366
原创 从零理解 C++ 网络编程:把核心原理真正串起来
C++ 网络编程,本质上是在使用操作系统提供的 socket 接口做进程间网络通信。socket 是接口,TCP/UDP 是协议,不要混淆。。阻塞模型简单但不适合高并发,所以会发展到非阻塞和 I/O 多路复用。的核心价值,是让一个线程管理多个连接。TCP 是字节流,业务上必须自己处理消息边界,也就是常说的“粘包拆包”问题。自己动手写一个回显服务器,再改成epoll版本。当你把这两步走通,C++ 网络编程的主干就真的立起来了。一篇更偏“面试复习版”的 C++ 网络编程博客。
2026-04-02 17:49:32
369
原创 榨干CPU的每一滴性能:C++多线程实战通关指南
掌握 C++ 多线程,不是一朝一夕的事,但只要你吃透了“共享与竞争”的底层逻辑,并熟练运用现代 C++ 提供的标准库工具(<thread><mutex><atomic>),你就能写出极其彪悍、榨干硬件最后一滴性能的后端代码。你的下一个高并发项目,准备好起飞了吗?
2026-04-01 10:59:14
318
原创 Claude Code MCP 服务器配置实战指南
MCP (Model Context Protocol) 是 Anthropic 推出的模型上下文协议,让 Claude Code 能够连接外部工具和服务。本文记录了我在 Claude Code 中配置 4 个实用 MCP 服务器的完整过程,包括踩坑和解决方案。找到正确的包名- 这是最大的坑,很多教程使用过时的包名安装依赖- Python 环境、浏览器等耐心等待首次启动- npx 需要下载,Python 需要创建虚拟环境验证连接- 使用检查状态。
2026-03-28 15:09:57
390
原创 Everything Claude Code:打造高效 AI 编程助手的终极配置指南
Everything Claude Code 不仅是一套配置,更是一个经过 10+ 个月实战打磨的 AI Agent 性能优化系统。效率问题:通过 agents、commands、skills 提升开发效率安全问题:通过 AgentShield 保障配置安全学习问题:通过 continuous-learning 持续进化规范问题:通过 rules 强制执行编码标准如果你正在使用 Claude Code 或其他 AI 编程助手,强烈推荐尝试这个项目。
2026-03-28 13:52:06
969
原创 用 Outlook OAuth + IMAP/SMTP 获取邮箱操作权限的完整指南
用 Outlook OAuth + IMAP/SMTP 获取邮箱操作权限的完整指南
2026-03-26 15:09:43
488
原创 C++ 回调:为什么 lambda、functor、std::function 最后都绕不开它?
回调 = 把将来要执行的逻辑交给别人,由别人决定什么时候调用。普通函数 / 函数指针:最传统的回调方式functor:对象也可以充当回调,而且还能带状态lambda:最适合写临时回调逻辑:统一包装各种回调对象bind:把已有函数改造成更适合回调接口的形式这里大概率是在“把行为交出去”,也就是在用回调。说到底,现代 C++ 里很多语法工具看起来花样很多,如何更方便地描述和传递“将来由别人调用的逻辑”。
2026-03-25 15:29:12
384
原创 解决windows上codex不能跑本地应用的问题
PowerShell能启动,但gitnodenpm这些平时正常可用的命令却全部失效了。一开始看起来像是软件没装好,但排查下来,真正的问题并不是git或node本身,而是 Codex 启动出来的 shell 环境缺少关键的 Windows 环境变量。这篇文章记录一下完整的排查过程和最终修复方案,方便以后自己查,也方便遇到同类问题的人直接解决。
2026-03-22 11:45:04
2508
1
原创 解决dependent ‘\Qt\6.7.3\msvc2022_64\include\QtWidgets\QMainWindow‘ does not exist
**子项目管理**:在大型 Qt 项目中,可能存在多个子项目,每个子项目都有自己的 `.pro` 文件。设置 `QMAKE_PROJECT_DEPTH = 0` 后,在自定义脚本中可以通过读取这个变量的值,判断当前是顶层项目,进而执行特定的操作,比如设置一些只有顶层项目才需要的编译选项。- **资源查找**:对于项目中使用的各种资源(如图片、配置文件等),qmake 可以根据项目深度信息,从顶层项目开始按照正确的路径去查找这些资源,确保资源能被正确加载。### 与自定义构建规则配合。
2025-09-26 11:50:37
653
原创 解决Qt6.7.3使用QProtobuf cmake无法正确查找的问题
如果没有安装原生库,即使 Qt 组件本身安装了,也会识别失败。最快捷的方式是删除不使用的组件;1. **vcpkg已正确安装protobuf**:通过`vcpkg list protobuf`确认库已存在。以下是一个真实的问题解决过程,展示了如何在Qt项目中正确配置vcpkg和protobuf。2. **CMake路径配置问题**:CMake无法找到vcpkg安装的库的配置文件。### 实际问题解决案例:Qt项目中vcpkg集成protobuf。3. **目标链接名称错误**:使用了错误的链接库目标名称。
2025-09-22 00:05:02
297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅