66
⚡ C++
69
🔵 Qt
66
🏗️ 架构/设计
24
👥 管理/成长
74
📖 总计
2026年09月29日 周二 NEW

Day 33:类型擦除(Type Erasure)

今日主题:一句话定义

Day 33:类型擦除(Type Erasure)——把虚函数表从被包装类型身上搬到外壳身上,用「外部多态」换取值语义、异构容器与零侵入;它正是 std::function、std::any、QVariant、QMetaObject 的共同底层机制。含手写 Concept/Model/Wrapper 三层实现与 Qt6 类型擦除动作总线。

2026年09月28日 周一

跨平台桌面架构:平台抽象层(QPA / QNativeInterface)、原生集成与发布矩阵 | 每日技术学习

今日主题:为什么跨平台是桌面架构的第一个硬约束

今日学习内容,点击查看详情

2026年09月27日 周日

Day 32:依赖注入(Dependency Injection)

今日主题

Day 32:依赖注入(Dependency Injection, DI)——把「我需要的依赖」从内部 new 改为从外部传入,是 DIP 的落地手段,也是可测试架构的地基。

2026年09月25日 周五

Day 31:PIMPL 模式(Pointer to Implementation / 编译防火墙)

今日主题

今日学习内容,点击查看详情

2026年09月25日 周五

客户端状态管理架构:单向数据流、状态机与「状态爆炸」的治理 | 每日技术学习

今日主题:为什么状态管理值得单独拿出来学

今日学习内容,点击查看详情

2026年09月23日 周三

Day 30:模型

今日主题:一句话定义

今日学习内容,点击查看详情

2026年09月22日 周二

技术领导力与架构决策体系:ADR、三层评审与团队能力梯队

01今日主题:从代码贡献者到决策负责人

2026-09-22 · 每日技术导师 · 接续 09-19《Qt Model/View 架构深潜》与 09-04《插件化架构》,从「技术深度」转向「让技术深度在团队中复利」

2026年09月21日 周一

Day 29:状态机架构(State Machine / QStateMachine)

今日主题

Day 29:状态机架构(State Machine / QStateMachine)——把「在什么状态下能响应什么事件、响应后去哪里、进出状态做什么」从散落的 if-else 与 bool 标志里抽出来,建模成状态集合 + 事件集合 + 转移规则(含守卫与动作)。含 C++17 表格驱动 FSM 最小实现(转移表 / 守卫 / 非法事件统计),以及 Qt6 分层状态机完整工程(QStateMachine + 嵌套状态 + QHistoryState 深历史 + 转移动作 + 守卫),并与 Day 19 状态模式做架构对比。

2026年09月19日 周六

Qt Model/View 架构深潜:数据驱动 UI 的通知粒度

01今日主题:UI 与数据之间那条契约

2026-09-19 · 每日技术导师 · 接续 09-16《Qt 元对象系统内幕》与 09-04《插件化架构》,从「框架替我刷新」走到「我必须亲手声明变更」

2026年09月19日 周六

Day 28:撤销/重做架构(Undo/Redo Architecture)

今日主题

Day 28:撤销/重做架构(Undo/Redo Architecture)——把每一次数据改动封装成「可逆命令」,用命令栈 + 游标统一管理历史,从而实现任意步撤销、重做、脏标记与合并。含 C++17 手写命令栈最小实现(带 mergeWith 合并)与 Qt6 QUndoCommand/QUndoStack/QUndoView 完整可编译工程(双击添加、拖动合并、宏命令、脏标记)。

2026年09月17日 周四

Day 27:插件架构模式(Plugin Architecture)

今日主题

Day 27:插件架构模式(Plugin Architecture)——宿主只依赖抽象接口,具体功能以独立动态库在运行期被发现、校验、加载与卸载;含 C++17 手写注册表实现与 Qt6 QPluginLoader + Q_DECLARE_INTERFACE + Q_PLUGIN_METADATA 完整可编译工程。

2026年09月16日 周三

Qt 元对象系统内幕:MOC 生成的代码、信号槽的真实实现与 QMetaObject 反射

01为什么今天必须拆开这个黑盒

2026-09-16 · 每日技术导师 · 接续 08-31《客户端架构:分层、依赖注入与信号槽解耦》,从「会用」走到「知道它怎么跑」

2026年09月15日 周二

Day 26:事件总线模式(Event Bus / Publish

今日主题

Day 26:事件总线模式(Event Bus / Publish-Subscribe)——用发布-订阅把模块之间的直接依赖换成向总线广播,实现跨模块解耦通信;含 C++17 最小实现与 Qt6 类型安全总线。

2026年09月13日 周日

现代 CMake 工程体系:从 npm/webpack 思维到 target

01为什么今天必须啃构建系统

2026-09-13 · 每日技术导师 · 接续 08-22《编译、链接与 ABI》,从「原理」走到「工程落地」

2026年09月13日 周日

Day 25:模型

今日主题

Day 25:MVVM 架构模式——ViewModel 把界面状态与行为从 View 中抽离出来,用数据绑定做到“改状态即改界面”,是 Qt/QML 桌面客户端架构的主流选择。

2026年09月11日 周五

Day 24:模型

今日主题

Day 24:MVC 架构模式——把数据(Model)、界面(View)与调度逻辑(Controller)彻底分层,它既是 GUI 架构的思想源头,也是 Qt Model/View 框架的直接前身。

2026年09月10日 周四

今日学习:一次网络请求的完整旅程——TCP、TLS 1.3 与 QUIC 的协议栈解剖

01为什么今天要啃协议栈

2026-09-10 · 每日技术导师 · 接续 08-07《Qt 网络编程》,从 API 下沉到协议栈原理

2026年09月09日 周三

Day 23:解释器模式(Interpreter Pattern)

① 今日主题:一句话定义

2026-09-09 · C++17 / Qt 6 · 全文约 5200 字,阅读约 21 分钟

2026年09月07日 周一

Day 22:访问者模式(Visitor Pattern)

① 今日主题:一句话定义

2026-09-07 · C++17 / Qt 6 · 全文约 5000 字,阅读约 20 分钟

2026年09月07日 周一

今日学习:C++20 协程——从 JS async/await 到无栈协程

01为什么今天学协程

2026-09-07 · 每日技术导师 · 接续 08-26 事件循环与 08-28 多线程并发之后的异步编程进阶篇

2026年09月05日 周六

Day 21:模板方法模式(Template Method Pattern)

① 今日主题

模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

2026年09月04日 周五

今日学习:插件化架构——从 QPluginLoader 到大型客户端扩展体系

为什么今天学这个

作为前端架构师,你对插件化其实"天生熟悉"——VSCode 的插件市场、Chrome 的扩展生态、webpack 的 loader/plugin 机制,都是你日常依赖的扩展体系。但当你转向 C++/Qt 桌面客户端时会发现:这里没有解释器、...

2026年09月03日 周四

Day 20:策略模式(Strategy Pattern)

①今日主题

策略模式(Strategy Pattern):定义一族算法(或业务规则),将每一个算法分别封装成独立的对象并使它们实现同一个抽象接口,从而让它们可以在运行时互相替换——算法的变化独立于使用算法的客户端。它属于 GoF 23 种设计模式中的行...

2026年09月01日 周二

今日学习:C++/Qt 性能优化——剖析驱动、内存分配与缓存友好

今日主题:为什么现在学性能优化

前面几期解决了"怎么渲染、怎么跑事件循环、怎么并发、怎么分层"——这些是把功能做出来;而性能是在资源约束下把体验做出来。前端架构师对性能并不陌生:长列表虚拟化、bundle 体积、首屏时间,但你熟悉的优化手段大多建立在浏览器和 JS 引擎替...

2026年09月01日 周二

Day 19:状态模式(State Pattern)

①今日主题

状态模式(State Pattern)是 GoF 二十三种设计模式中的行为型模式。它把"对象在不同状态下表现出的不同行为"封装成一组独立的状态类,让对象在内部状态发生改变时自动切换自己的行为——对客户端而言,对象仿佛"换了一个自己":同一个...

2026年08月31日 周一

今日学习:客户端架构——分层、依赖注入与信号槽解耦

今日主题:为什么现在学架构

前面几期我们解决了"怎么渲染、怎么跑事件循环、怎么并发"——这些都是技术问题;而架构师每天真正面对的是组织问题:这段代码该放哪个模块?谁允许依赖谁?为什么加一个缓存要改五个文件?在 Web 世界里,浏览器替你划好了边界(DOM、渲染、网络、...

2026年08月31日 周一

Day 18:观察者模式(Observer Pattern)

①今日主题

定义对象间一对多的依赖关系:当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新 —— 事件驱动世界的基石

2026年08月29日 周六

Day 17:备忘录模式(Memento Pattern)

①今日主题

在不破坏封装的前提下,把对象的内部状态"拍成照片"存到外面,想回到过去时再"洗出来"——状态的时间旅行,由对象自己掌控。

2026年08月28日 周五

Day 16:中介者模式(Mediator Pattern)

①今日主题

用一个"协调中枢"封装对象间的交互,让同事对象之间不再互相认识——网状依赖变星形依赖。

2026年08月28日 周五

今日学习:C++/Qt 多线程并发——从 std::jthread 到 QThread、内存序与线程模型

今日主题:为什么现在学并发

上一期我们吃透了 Qt 事件循环:UI 必须活在主线程,事件循环一旦被阻塞,界面就冻结。那么问题立刻来了——耗时任务(网络请求、磁盘 IO、图像处理、数据库查询)到底该放哪里跑?答案就是多线程。对从 Web 迁移过来的你,这是知识模型变化最...

2026年08月27日 周四

Day 15:迭代器模式(Iterator Pattern)

① 今日主题

在不暴露集合内部结构的前提下,提供统一方式顺序访问集合元素 —— C++/Qt 每日设计模式 · 2026-08-27

2026年08月27日 周四

今日学习:Qt Quick 与 QML——声明式 UI 的 C++ 落地

今日主题:为什么现在学 QML

作为前端架构师,你熟悉 Vue 的响应式、React 的渲染模型、浏览器的合成器——而 QML 恰好是这些概念在原生 C++ 世界的完整映射:声明式语法、依赖驱动的属性绑定、GPU 场景图渲染。Qt Quick(QML 的 UI 框架)是 ...

2026年08月26日 周三

Day 14:命令模式(Command Pattern)

① 今日主题

命令模式(Command Pattern):把"一个请求 / 一次操作"封装成一个对象——这个对象携带了做什么、对谁做、需要哪些参数的全部信息,从而让"发起请求的人"(按钮、菜单、快捷键)与"真正干活的人"(业务对象)彻底解耦。一句话:把操...

2026年08月26日 周三

今日学习:Qt 事件循环与异步编程

今日主题:为什么现在学事件循环

你在 Node.js 里早就和事件循环朝夕相处——libuv 是每个 Node 进程的心脏,浏览器里的宏任务/微任务队列也是同一套思想。Qt 同样建立在事件循环之上:QEventLoop 是所有 GUI 交互、定时器、跨线程通信与信号槽投递...

2026年08月25日 周二

今日学习:Qt 渲染体系——QPainter 绘制管线、双缓冲与 GPU 合成

今日主题:为什么要把「画」这件事讲透

你在前端早已熟悉 style → layout → paint → composite 这条浏览器渲染管线,但桌面客户端的像素究竟是怎么产生的?Qt Widgets 的 paintEvent 与 Qt Quick 的 Scene Graph...

2026年08月25日 周二

Day 13:责任链模式(Chain of Responsibility Pattern)

① 今日主题

责任链模式(Chain of Responsibility):把"谁能处理这个请求"的判定从调用方剥离出来,将多个处理者串成一条链,请求沿着链依次传递,直到某个处理者接管并处理,或到达链尾被兜底拒绝。一句话:请求像接力棒,谁能接谁接,没人接...

2026年08月24日 周一

Day 12:代理模式(Proxy Pattern)

① 今日主题

给真实对象找一个「替身」:接口一字不改,访问权限、加载时机、网络传输全部由替身代劳。

2026年08月24日 周一

今日学习:性能剖析与优化——从 Chrome DevTools 到 perf 与 Qt Creator Profiler

今日主题:为什么必须学它

2026-08-24 · 每日技术学习 · 前端架构师 → C++/Qt 客户端架构师

2026年08月23日 周日

今日学习:C++ 错误处理策略——异常、错误码与 std::expected

今日主题:为什么必须学它

2026-08-23 · 每日技术学习 · 前端架构师 → C++/Qt 客户端架构师

2026年08月23日 周日

Day 11:享元模式(Flyweight Pattern)

① 今日主题

用「共享」对抗「海量」:把对象的内部状态抽出来共用,把外部状态交给使用者。

2026年08月22日 周六

Day 10:外观模式(Facade Pattern)

今日主题

给复杂子系统配一个前台接待员——客户端只点单,不进后厨。

2026年08月22日 周六

今日学习:编译、链接与 ABI

今日主题:为什么必须理解编译与链接

今日学习内容,点击查看详情

2026年08月21日 周五

今日学习:移动语义与右值引用

今日主题:为什么必须理解移动语义

今日学习内容,点击查看详情

2026年08月21日 周五

Day 9:装饰器模式(Decorator Pattern)

① 今日主题

装饰器模式(Decorator Pattern):在不修改原有类代码、不改变对外接口的前提下,通过包装(组合)的方式,动态地为单个对象附加新的职责。它被 GoF 称为"继承的一种更灵活的替代方案"。

2026年08月20日 周四

Day 8:组合模式(Composite Pattern)

①今日主题

2026-08-20 · 把"单个对象"和"组合对象"放进同一棵树,让叶子与枝干共用一张脸

2026年08月20日 周四

今日学习:命令模式与撤销重做——从 QUndoStack 到大型编辑器架构

① 今日主题:为什么学它

2026-08-20 · 每日技术学习 · 第 22 期

2026年08月19日 周三

Day 7:桥接模式(Bridge Pattern)

①今日主题

2026-08-19 · 把"抽象"与"实现"拆成两座独立的山,再用一座组合的桥连起来

2026年08月19日 周三

今日学习:CPU Cache 与内存布局

今日主题:为什么现在学它

2026-08-19 · 每日技术学习 · 从 Web 架构师到桌面客户端架构师 · 总第 21 期

2026年08月18日 周二

今日学习:C++ 对象模型——虚函数、vtable 与多态的代价

今日主题:为什么今天学它

2026-08-18 · 每日技术学习 · 面向 Web 架构师转型 C++/Qt

2026年08月18日 周二

Day 6:适配器模式(Adapter Pattern)|C++/Qt 每日设计模式

① 今日主题

Day 6:适配器模式(Adapter Pattern)——将一个类的接口转换成客户端期望的另一个接口,使原本因接口不匹配而无法协作的类能够一起工作。

2026年08月17日 周一

今日学习:Qt 绘制系统与自定义控件——从 paintEvent 到渲染管线

2026-08-17 · 每日技术学习 · 面向 Web 架构师 → C++/Qt 客户端架构师

2026年08月17日 周一

Day 5:原型模式(Prototype Pattern)

① 今日主题

学习路线位置:创建型模式收官之战。前四天分别解决了「全局唯一」「一个产品一个工厂」「一族产品配一个工厂」「分步构建复杂对象」,今天解决创建对象的最后一个难题——复制一个现成的对象。

2026年08月16日 周日

今日学习:Qt MVVM 与依赖注入——从 Model/View 到大型客户端架构

为什么今天学这个主题

今日学习内容,点击查看详情

2026年08月16日 周日

Day 4:建造者模式(Builder Pattern)

① 今日主题

把一个复杂对象的构建过程与它的内部表示分离,让同样的构建流程能造出不同的产品。—— 创建型模式第四站,前三天依次学完单例、工厂方法、抽象工厂,今天解决的是"对象太复杂、构造函数参数爆炸"的问题。

2026年08月15日 周六

今日学习:Qt 事件循环——从浏览器 Event Loop 到 QCoreApplication

今日主题:为什么必须吃透事件循环

前端架构师 → C++/Qt 桌面架构师 · 成长系列

2026年08月15日 周六

Day 3:抽象工厂模式(Abstract Factory)

今日主题

Day 3:抽象工厂模式(Abstract Factory)——用产品族工厂一键生成配套对象,从创建单个对象升级为创建一整族对象。

2026年08月14日 周五

Day 2:工厂方法模式(Factory Method)

今日主题

Day 2:工厂方法模式(Factory Method)——把new从调用方剥离,创建型模式家族第一步。

2026年08月14日 周五

今日学习:Qt 信号与槽——发布订阅模型的 C++ 落地

今日主题:为什么是信号与槽

2026-08-14 · 面向 Web 架构师转型 C++/Qt 桌面客户端

2026年08月13日 周四

从数据到像素:深入 Qt Model/View 架构 — 每日技术学习 2026

今日学习内容,点击查看详情

2026年08月13日 周四

Day 1:单例模式(Singleton Pattern)

今日学习内容,点击查看详情

2026年08月12日 周三

每日技术导师

每日技术导师 2026-08-12:Qt 插件系统与插件化架构——用 QPluginLoader 构建可扩展的大型客户端。从 Web 微前端迁移视角深入理解接口契约、IID、元数据与生命周期管理。

2026年08月11日 周二

每日技术导师

今日学习内容,点击查看详情

2026年08月10日 周一

今日学习:Qt 多线程——QThread 与线程亲和性

今日学习:Qt 多线程——QThread 与线程亲和性。从 std::thread 到 QThread:理解线程亲和性、事件循环与跨线程信号槽,写出不卡界面的桌面应用。

2026年08月09日 周日

今日学习:锁与并发原语

今日学习:锁与并发原语——数据竞争、std::mutex、std::atomic、条件变量与 Qt 线程同步。从 Web 单线程世界到 C++ 并发世界。

2026年08月08日 周六

今日学习:Modern CMake 工程化

今日学习内容,点击查看详情

2026年08月07日 周五

每日技术导师

今日学习:Qt 网络编程——QNetworkAccessManager 与异步网络层设计。从请求调度、连接池到事件循环驱动的异步回调,与 Web 的 fetch/Node 模型同构。

2026年08月06日 周四

每日技术导师

今日学习内容,点击查看详情

2026年08月05日 周三

今日学习:Qt Model/View 架构

今日学习:Qt Model/View 架构——数据与界面解耦的引擎,理解虚拟化渲染与信号契约。

2026年08月04日 周二

今日学习:C++ 内存管理

今日学习:C++内存管理——从栈到堆,从new/delete到智能指针,理解内存布局与生命周期。

2026年08月03日 周一

今日学习:STL 容器与算法

今日学习:STL 容器与算法——从JavaScript数组思维迁移到C++值语义容器。vector/map/unordered_map的底层原理、迭代器失效、erase-remove惯用法、算法库与Qt6容器对比,以及高频词统计实战。

2026年08月02日 周日

今日学习:模板与泛型编程

今日学习:模板与泛型编程——从TypeScript泛型到C++模板。编译期代码生成与类型擦除的本质区别、静态多态与动态多态、STL与Qt6容器/connect的模板基石,以及scope_exit实战。

2026年08月01日 周六

今日学习:Lambda 表达式与函数式编程

今日学习:Lambda 表达式与函数式编程——从JS箭头函数到C++闭包。捕获语义、生命周期、std::function性能真相,以及Qt6信号槽为什么离不开lambda。

2026年07月31日 周五

今日学习:移动语义与右值引用

今日学习:移动语义与右值引用——为什么std::move不移动任何东西?从vector扩容到Qt6容器改造,理解C++所有权转移之道。

2026年07月30日 周四

今日学习:RAII与智能指针

今日学习:RAII与智能指针——C++资源管理的核心思想。从Web GC到C++ RAII,理解为什么C++不需要垃圾回收。