<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[黑塞的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sinat_14854721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_14854721]]></copyright><item><title><![CDATA[Qt deleteLater 延迟删除原理]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/149838568</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/149838568</guid><author>sinat_14854721</author><pubDate>Fri, 01 Aug 2025 18:01:14 +0800</pubDate><description><![CDATA[文章摘要: Qt中deleteLater的实现原理 Qt中的deleteLater()方法通过事件循环机制实现延迟删除。当调用deleteLater()时，会发送一个QDeferredDeleteEvent事件到事件队列中。事件循环处理该事件时，会检查当前循环级别(loopLevel)和事件级别(eventLevel)，只有满足条件才会实际执行删除操作。否则事件会被重新放入队列尾部等待下次处理。这种机制确保了对象在当前执行上下文结束后才被安全删除，避免了在事件处理过程中删除对象可能导致的访问问题。]]></description><category></category></item><item><title><![CDATA[微信二维码扫描登录流程详解]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/149519174</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/149519174</guid><author>sinat_14854721</author><pubDate>Mon, 21 Jul 2025 23:58:39 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[package_tsak 和 promise 的区别]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/149359534</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/149359534</guid><author>sinat_14854721</author><pubDate>Tue, 15 Jul 2025 16:49:19 +0800</pubDate><description><![CDATA[摘要： std::packaged_task和std::promise均用于异步操作的结果传递，但设计目标不同。 packaged_task：绑定可调用对象，自动存储返回值到关联的future，适合任务队列、线程池等场景（如分解子任务）。 promise：需手动调用set_value设置结果，灵活性更高，适用于分散回调或复杂控制流（如跨线程/函数设置结果）。 关键区别：packaged_task集成任务与结果传递，而promise仅管理结果通道，需外部驱动逻辑。根据任务集中性选择工具：集中任务用packag]]></description><category></category></item><item><title><![CDATA[https交互原理]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/149311523</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/149311523</guid><author>sinat_14854721</author><pubDate>Sun, 13 Jul 2025 16:26:11 +0800</pubDate><description><![CDATA[HTTPS 通信中结合 RSA 和 AES 加密的流程，本质是利用 RSA 的安全特性交换 AES 密钥，再用高效的 AES 加密实际数据传输。客户端发送支持的功能列表：TLS 版本、支持的加密套件（如。客户端用 CA 公钥验证证书合法性（防中间人攻击）。解密获得 Pre-Master Secret。（如 AES-256 密钥）和 MAC 密钥。客户端和服务器分别用以下三个参数生成相同的。消息，宣告后续通信使用协商的密钥加密。消息，验证握手过程是否一致且未被篡改。解密响应，获得明文内容。]]></description><category></category></item><item><title><![CDATA[Effective C++ 条款：32 （避免遮挡继承而来的名称）]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/149151309</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/149151309</guid><author>sinat_14854721</author><pubDate>Sun, 06 Jul 2025 12:05:45 +0800</pubDate><description><![CDATA[在C++中，派生类（子类）中的成员函数会隐藏基类（父类）中同名的成员函数，即使基类中的函数有不同的参数列表。这被称为“或“函数隐藏在给定的代码中，基类Base定义了两个重载的mf1函数：一个没有参数，另一个带有一个int参数。派生类Driver中定义了一个mf1函数（没有参数）。这会导致基类中所有名为mf1的函数（包括重载版本）在Driver类的作用域中被隐藏。]]></description><category></category></item><item><title><![CDATA[Vscode 编写Markdown支持 plantuml书写]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/148809419</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/148809419</guid><author>sinat_14854721</author><pubDate>Sat, 21 Jun 2025 13:46:23 +0800</pubDate><description><![CDATA[本文介绍了在VSCode中配置PlantUML绘图环境的完整步骤：1)安装PlantUML插件；2)下载并配置Java运行环境；3)安装Graphviz可视化工具；4)获取plantuml.jar文件；5)设置系统环境变量并配置Markdown Preview Enhanced插件；6)通过.puml文件和Markdown文档两种方式进行测试验证。整个流程包含详细的下载链接和配置截图，帮助用户快速搭建UML图表绘制环境。（98字）]]></description><category></category></item><item><title><![CDATA[C++ Pimpl（Pointer to Implementation）设计思想]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/147834941</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/147834941</guid><author>sinat_14854721</author><pubDate>Tue, 20 May 2025 22:42:46 +0800</pubDate><description><![CDATA[Pimpl（Pointer to Implementation）是一种通过将类的实现细节隐藏在一个私有指针背后的设计模式，旨在实现接口与实现的解耦。其核心思想是：原始：声明前置类：在公有类的头文件中，仅声明实现类的前置类型，并用智能指针（如）管理其生命周期。


原始：实现类定义：在源文件中定义实现类的具体成员和方法：


优化：声明前置类  实现类定义：



3. 优缺点分析

优点：

减少编译依赖：修改实现类不会触发依赖该头文件的代码重新编译。
信息隐藏：对外仅暴露接口，保护内部实现细节。


缺点]]></description><category></category></item><item><title><![CDATA[观察者模式（行为模式）]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/147235650</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/147235650</guid><author>sinat_14854721</author><pubDate>Mon, 14 Apr 2025 23:54:59 +0800</pubDate><description><![CDATA[观察者模式（Observer Pattern）的使用场景主要围绕，当一个对象（被观察者）的状态变化需要自动通知其他多个对象（观察者）时，该模式能有效解耦代码。]]></description><category></category></item><item><title><![CDATA[dynamic_cast的理解]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/146463684</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/146463684</guid><author>sinat_14854721</author><pubDate>Thu, 27 Mar 2025 00:14:42 +0800</pubDate><description><![CDATA[C++ 中用于 安全的类层次结构转换 的类型转换运算符，主要用于 多态类型（即包含虚函数的类）的指针或引用之间的转换。，而 RTTI 是通过虚函数表（vtable）实现的。]]></description><category></category></item><item><title><![CDATA[map和hash_map 的区别差异]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/146299659</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/146299659</guid><author>sinat_14854721</author><pubDate>Sun, 16 Mar 2025 19:33:20 +0800</pubDate><description><![CDATA[通过合理选择数据结构，可以显著优化程序的性能和内存效率。]]></description><category></category></item><item><title><![CDATA[25年读书笔记：第三周 智能指针share_ptr理解]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/146298988</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/146298988</guid><author>sinat_14854721</author><pubDate>Sun, 16 Mar 2025 18:58:43 +0800</pubDate><description><![CDATA[element_type:模板元素类型boost::detail::shared_count pn：引用计数类型
sp_counted_impl_p 引用计数实现类

sp_counted_base 引用计数抽象基类


shared_ptr 实现内部结构（大概uml图）




特点：

单次内存分配：减少内存分配次数，提高性能。
内存连续：对象和控制块在内存中连续，提高缓存局部性。
生命周期绑定：对象内存和控制块内存同时分配和释放。



示例代码：


2. 通过  显式创建

内存分配方式：对象内存]]></description><category></category></item><item><title><![CDATA[25年第二周：读书笔记]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/145817576</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/145817576</guid><author>sinat_14854721</author><pubDate>Sun, 02 Mar 2025 21:54:25 +0800</pubDate><description><![CDATA[两个类相互包含对方作为成员的情况，比如类A有一个类B的对象成员，而类B又有一个类A的对象成。]]></description><category></category></item><item><title><![CDATA[25年第一周：读书笔记]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/145521189</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/145521189</guid><author>sinat_14854721</author><pubDate>Sat, 08 Feb 2025 18:35:33 +0800</pubDate><description><![CDATA[接口隔离原则的核心是避免将过多的责任压在一个接口上，通过拆分接口，使每个类只依赖于它所需要的功能，提升系统的灵活性、可维护性并降低复杂度。]]></description><category></category></item><item><title><![CDATA[开发笔记4]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/145242506</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/145242506</guid><author>sinat_14854721</author><pubDate>Sun, 19 Jan 2025 16:25:59 +0800</pubDate><description><![CDATA[虽然不需要构造函数，但是编译器还是会默认生成一个，这个和抽象类不能实例化没有必然联系。（所以构造函数使用delete是不对的）个人理解：抽象类默认有构造函数编译器会检测类中是否有纯虚函数，检测有纯虚函数，就会阻止实例化。]]></description><category></category></item><item><title><![CDATA[Qt 开发笔记2]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/144471107</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/144471107</guid><author>sinat_14854721</author><pubDate>Sat, 14 Dec 2024 16:27:41 +0800</pubDate><description><![CDATA[>//自定义数据结构 需要注册绑定。]]></description><category></category></item><item><title><![CDATA[Qt Qt::UniqueConnection 底层调用]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/144015119</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/144015119</guid><author>sinat_14854721</author><pubDate>Sun, 24 Nov 2024 22:28:56 +0800</pubDate><description><![CDATA[在这里插入图片描述。]]></description><category></category></item><item><title><![CDATA[Qt 开发笔记]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/143957828</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/143957828</guid><author>sinat_14854721</author><pubDate>Fri, 22 Nov 2024 00:20:07 +0800</pubDate><description><![CDATA[工作中遇到的一些小问题记录]]></description><category></category></item><item><title><![CDATA[Qt 界面无边框 拖拽移动 问题处理：setMouseTracking(true)无法跟踪鼠标事件]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/143663256</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/143663256</guid><author>sinat_14854721</author><pubDate>Sun, 10 Nov 2024 18:17:04 +0800</pubDate><description><![CDATA[Qt 无边框问题处理]]></description><category></category></item><item><title><![CDATA[effective c++ 读书笔记]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/143269543</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/143269543</guid><author>sinat_14854721</author><pubDate>Sun, 27 Oct 2024 15:41:34 +0800</pubDate><description><![CDATA[effective c++ 笔记]]></description><category></category></item><item><title><![CDATA[Qt 使用原生 opengl 遇到的问题 OpenGL header already included, remove this include, glad already provi]]></title><link>https://blog.youkuaiyun.com/sinat_14854721/article/details/139050204</link><guid>https://blog.youkuaiyun.com/sinat_14854721/article/details/139050204</guid><author>sinat_14854721</author><pubDate>Sun, 19 May 2024 22:58:30 +0800</pubDate><description><![CDATA[【代码】Qt 使用原生 opengl 遇到的问题 OpenGL header already included, remove this include, glad already provi。]]></description><category></category></item></channel></rss>