<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[冷崖的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_33248019</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_33248019]]></copyright><item><title><![CDATA[网络通信-心跳包机制]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/163646328</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/163646328</guid><author>qq_33248019</author><pubDate>Mon, 10 Aug 2026 22:54:41 +0800</pubDate><description><![CDATA[本文介绍了游戏开发中常用的心跳消息机制。心跳消息是长连接中定期发送的特殊数据包，用于维持连接有效性，主要解决客户端异常断开和防火墙超时断开问题。文章分析了心跳间隔的最佳实践（3-5秒），并比较了TCP自带心跳机制不适用游戏场景的原因。在实现方面，推荐使用异步IO配合InvokeRepeating定时器，提供了完整的C#代码示例，包含连接管理、心跳发送与超时检测等核心功能。该方案通过双端心跳检测确保连接可靠性，同时避免阻塞主线程，适合各类实时网络游戏开发。]]></description><category></category></item><item><title><![CDATA[消息队列-kafka的操作(三)]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157613164</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157613164</guid><author>qq_33248019</author><pubDate>Sun, 01 Feb 2026 11:44:55 +0800</pubDate><description><![CDATA[本文介绍了如何使用librdkafka库操作Kafka，主要内容包括： librdkafka的安装步骤：通过git克隆源码，执行configure、make和make install进行编译安装。 消费者程序分析： 运行消费者程序需要指定broker地址、消费组ID、再平衡协议和主题 程序结构包含参数解析、关键配置项设置和消息处理循环 关键配置包括bootstrap servers、消费组ID、再平衡协议和偏移量重置策略 生产者程序特点： 采用异步发送机制，使用rd_kafka_producev()函数 消]]></description><category></category></item><item><title><![CDATA[消息队列-kafka的安装(二)]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157613033</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157613033</guid><author>qq_33248019</author><pubDate>Sun, 01 Feb 2026 11:41:31 +0800</pubDate><description><![CDATA[本文详细介绍了Kafka在Linux环境下的安装与基本使用方法。首先需要安装Java环境并配置环境变量，然后下载解压Kafka安装包。启动Kafka前需先配置并启动Zookeeper服务，修改server.properties文件后启动Kafka服务。文章演示了创建Topic、查看Topic列表和属性、发送和消费消息等基本操作，并提供了删除Topic的方法。最后建议通过查看帮助手册获取更多命令使用方法。整个过程包括环境准备、服务配置、基础操作等关键步骤，为Kafka初学者提供了清晰的安装和使用指南。]]></description><category></category></item><item><title><![CDATA[VMware workstation 未能启动 VMware Authorization Service]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157585508</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157585508</guid><author>qq_33248019</author><pubDate>Sat, 31 Jan 2026 18:14:10 +0800</pubDate><description><![CDATA[打开Windows下的服务管理器，然后找到 VMware相关的启动服务，将其打开；后续如果觉得麻烦，就设置为自动。]]></description><category></category></item><item><title><![CDATA[消息队列-kafka(一)]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157580339</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157580339</guid><author>qq_33248019</author><pubDate>Sat, 31 Jan 2026 11:25:17 +0800</pubDate><description><![CDATA[摘要：Kafka是一种分布式消息队列系统，具有解耦、缓冲、异步通信等特点。其架构包含生产者、消费者、Broker集群、Topic和Partition等核心组件，通过分区和副本机制实现高可用和负载均衡。Kafka支持多种分区策略（轮询、随机、键值等）和消费者组机制，灵活适应点对点和发布/订阅模型。分区分配策略（如Range、RoundRobin等）确保消息均匀分布。Kafka依赖Zookeeper进行元数据管理和故障恢复，适用于大数据处理和实时数据分析场景。（150字）]]></description><category></category></item><item><title><![CDATA[消息队列-前言]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157580300</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157580300</guid><author>qq_33248019</author><pubDate>Sat, 31 Jan 2026 11:17:53 +0800</pubDate><description><![CDATA[消息队列(MQ)是一种异步通信中间件，采用队列结构实现FIFO消息传递。它主要用于进程/服务间通信，具有异步处理、流量控制、服务解耦等功能。传统直接调用方式存在强耦合、系统脆弱等问题，MQ通过解耦生产者和消费者来解决这些痛点。MQ包含生产者、消费者、Broker代理等核心组件，支持点对点(任务分发)和发布订阅(事件广播)两种模型。主流产品如RabbitMQ(功能丰富)、Kafka(高吞吐)、RocketMQ(低延迟)各有特点，适用于不同场景。MQ显著提升了系统扩展性、可靠性和性能，是现代分布式系统的重要基础]]></description><category></category></item><item><title><![CDATA[装饰器模式-结构型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157356845</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157356845</guid><author>qq_33248019</author><pubDate>Sun, 25 Jan 2026 10:54:14 +0800</pubDate><description><![CDATA[装饰器模式是一种结构型设计模式，允许动态地为对象添加新功能而不改变其结构。该模式通过组合而非继承的方式扩展对象功能，遵循开闭原则和单一职责原则。以星巴克咖啡为例，传统继承方式会导致类爆炸和维护困难，而装饰器模式通过抽象组件、具体组件、抽象装饰器和具体装饰器的层级结构，实现了灵活的功能扩展。应用场景包括游戏角色时装系统等需要动态添加功能的场景。该模式有效解决了类数量爆炸、维护困难等问题，提高了代码的可扩展性和灵活性。]]></description><category></category></item><item><title><![CDATA[适配器模式-结构型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157356769</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157356769</guid><author>qq_33248019</author><pubDate>Sun, 25 Jan 2026 10:51:06 +0800</pubDate><description><![CDATA[摘要：适配器模式是一种结构型设计模式，主要用于接口兼容，使原本不兼容的类能够协同工作。它分为三种类型：类适配器（通过继承）、对象适配器（通过组合，最推荐）和接口适配器（简化接口实现）。适配器模式在国产化替代、遗留系统集成等场景中发挥重要作用。文章通过PostgreSQL兼容Oracle、文件系统转云存储等实际案例，展示了三种适配器模式的UML图和C++实现代码，说明了如何通过适配器降低重构成本、提高开发效率。]]></description><category></category></item><item><title><![CDATA[无锁队列-SPSC]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157328691</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157328691</guid><author>qq_33248019</author><pubDate>Sat, 24 Jan 2026 16:30:25 +0800</pubDate><description><![CDATA[环形队列是一种逻辑数据结构，并非物理数据结构，实际上没有环形的内存空间。无锁队列为什么要使用环形队列？环形队列可以充分利用内存空间，避免内存碎片(的开销)对于原子操作友好，如果使用STL队列，比如，入队可能会涉及到内存分配、节点构造、指针修改等操作，这些操作很难进行原子化，一般都是加锁。对于常用的STL-vector，在push_back时，如果空间不足，会进行扩容，扩容会触发重新分配内存；无法保证环形访问；而且删除效率低下。无锁队列性能对比类型时间复杂度适用场景性能。]]></description><category></category></item><item><title><![CDATA[桥模式-结构型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/157328524</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/157328524</guid><author>qq_33248019</author><pubDate>Sat, 24 Jan 2026 16:25:33 +0800</pubDate><description><![CDATA[抽象和实现分离，增强系统扩展性：桥接模式将抽象部分与实现部分分离，使得它们可以独立变化。抽象部分和实现部分都可以独立扩展，而不需要修改其他部分。符合开闭原则：通过桥接模式，可以在不修改原有代码的情况下，增加新的抽象层和实现层，从而实现系统的扩展。符合合成复用原则：桥接模式通过将抽象部分和实现部分分离，使得抽象部分和实现部分可以独立变化，从而实现系统的复用。]]></description><category></category></item><item><title><![CDATA[原子锁操作]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/156129793</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/156129793</guid><author>qq_33248019</author><pubDate>Sun, 21 Dec 2025 15:12:43 +0800</pubDate><description><![CDATA[本文摘要：文章详细介绍了原子操作与锁的概念，包括原子操作的底层实现原理、CPU缓存读写策略及缓存一致性协议（MESI）。通过分析多线程环境下共享变量的访问问题，阐述了内存序的不同规则及其应用场景。最后以游戏在线人数统计为例，展示了非原子操作可能导致的并发问题，为后续原子操作实践提供基础。全文从硬件到软件层面系统性地讲解了保证数据一致性的关键技术。]]></description><category></category></item><item><title><![CDATA[原型模式-创建型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/156108679</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/156108679</guid><author>qq_33248019</author><pubDate>Sat, 20 Dec 2025 12:04:33 +0800</pubDate><description><![CDATA[原型模式摘要 原型模式通过复制现有对象（原型）来创建新对象，而非使用new实例化。核心思想是克隆机制，适用于需要高效创建大量相似对象的场景。以孙悟空分身为例，传统方式每次创建分身都需重新初始化技能和装备，存在性能低下、灵活性差和浅拷贝问题。原型模式解决方案包括：1）定义抽象原型类提供克隆接口；2）具体原型类实现深拷贝，确保装备等引用类型被正确复制。该模式显著提升对象创建效率，同时避免内存管理问题。]]></description><category></category></item><item><title><![CDATA[排序--基数排序]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/156108549</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/156108549</guid><author>qq_33248019</author><pubDate>Sat, 20 Dec 2025 11:54:28 +0800</pubDate><description><![CDATA[本文介绍了两种非比较型排序算法：计数排序和基数排序。重点讲解了基数排序的实现原理，包括按位分配收集的方法，以及如何处理负数和不同位数的数字。通过LeetCode 164题示例，展示了基数排序在解决需要线性时间复杂度问题中的应用。文章提供了完整的C++实现代码，包括获取数字位数、基数排序核心逻辑以及处理负数情况的方法。这些排序算法适用于特定场景，如数据具有进制特性或需要稳定排序时。]]></description><category></category></item><item><title><![CDATA[建造者模式-创建型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/155990345</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/155990345</guid><author>qq_33248019</author><pubDate>Tue, 16 Dec 2025 21:37:20 +0800</pubDate><description><![CDATA[建造者模式通过分离复杂对象的构建与表示，解决了多参数构造函数的可读性和维护性问题。该模式包含产品类、抽象建造者和具体建造者三个核心组件：产品类定义最终对象；抽象建造者声明构建步骤；具体建造者实现构建逻辑并计算价格。使用建造者模式后，用户可以清晰指定每个配置参数，无需记忆复杂构造函数的参数顺序，同时支持灵活扩展新属性。]]></description><category></category></item><item><title><![CDATA[排序-堆排序]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/155990184</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/155990184</guid><author>qq_33248019</author><pubDate>Tue, 16 Dec 2025 21:30:21 +0800</pubDate><description><![CDATA[堆排序是一种基于完全二叉树的高效排序算法，时间复杂度为O(nlogn)。文章详细介绍了堆的基本概念、数组表示方法以及核心操作（向上调整heapInsert和向下调整heapify）。通过实例演示了堆排序过程，并对比了C++ STL中的堆操作。特别强调了手写堆结构的必要性，指出系统堆的局限性。最后给出了堆排序的实际应用场景，包括解决LeetCode 506相对名次问题。文章还包含优化建堆过程的方法，以及处理几乎有序数组的特殊堆排序技巧。]]></description><category></category></item><item><title><![CDATA[工厂模式-创建型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/155893108</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/155893108</guid><author>qq_33248019</author><pubDate>Sat, 13 Dec 2025 21:52:10 +0800</pubDate><description><![CDATA[工厂模式是一种创建型设计模式，核心思想是将对象创建封装在工厂内部，避免客户端直接依赖具体类。简单工厂模式通过一个工厂类根据参数返回不同产品实例，解决了客户端与具体类紧耦合的问题，但违反开闭原则。工厂方法模式则进一步将创建逻辑分散到子类，使实例化延迟到子类实现。简单工厂适用于产品较少且稳定的场景，如支付系统、日志系统等；当产品较多时，可采用注册表等变种优化。工厂方法模式更适合需要灵活扩展的场景，两者都实现了创建逻辑与使用逻辑的分离。]]></description><category></category></item><item><title><![CDATA[单例模式-创建型]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/155864300</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/155864300</guid><author>qq_33248019</author><pubDate>Fri, 12 Dec 2025 22:57:10 +0800</pubDate><description><![CDATA[摘要： 单例模式确保类仅有一个实例并提供全局访问点，解决多实例导致的数据不一致问题。实现方式包括基础懒汉式（线程不安全）、加锁懒汉式（线程安全但低效）及C++11静态局部变量（线程安全高效）。典型应用场景包括日志系统、数据库连接池等需全局唯一实例的情况。优点包括严格控制实例数量、全局访问便利和资源节约，但也存在全局状态修改风险、测试困难等缺点。使用时需权衡利弊，选择适合场景的实现方案。]]></description><category></category></item><item><title><![CDATA[异步IO(io_uring)性能测试]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/154600099</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/154600099</guid><author>qq_33248019</author><pubDate>Sun, 09 Nov 2025 10:03:11 +0800</pubDate><description><![CDATA[本文对比了 io_uring 和 epoll 的性能差异，通过设计客户端/服务端测试程序，测量不同数据量下的 QPS 指标。测试结果显示，随着数据量的增大，io_uring 的性能优势逐渐显现。文章详细介绍了测试程序的设计思路、关键数据结构、线程执行流程以及数据验证方法，并提供了完整的性能对比数据表和测试代码。通过控制发送数据的字节数，可以准确测试两种 I/O 模型在不同负载下的表现，为系统性能优化提供参考依据。]]></description><category></category></item><item><title><![CDATA[QML-Model-View]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/154367589</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/154367589</guid><author>qq_33248019</author><pubDate>Mon, 03 Nov 2025 23:08:36 +0800</pubDate><description><![CDATA[Qt Quick中的Model-View模式将数据与显示分离，包含Model（数据模型）、View（视图容器）和Delegate（可视化代理）三部分。常见的View组件有ListView（列表视图）、GridView（网格视图）、TableView（表格视图）和PathView（路径视图）。Repeater组件可重复渲染数据项，但会创建所有项可能影响性能。ListView支持滑动且可设置项间距，GridView则以网格形式布局。Delegate作为桥梁实现数据可视化并响应状态变化，支持添加/移除动画效果。示]]></description><category></category></item><item><title><![CDATA[QML-动画]]></title><link>https://blog.youkuaiyun.com/qq_33248019/article/details/154252570</link><guid>https://blog.youkuaiyun.com/qq_33248019/article/details/154252570</guid><author>qq_33248019</author><pubDate>Sat, 01 Nov 2025 21:12:40 +0800</pubDate><description><![CDATA[本文介绍了QML中的动画实现方式，主要包括四种动画类型（PropertyAnimation、NumberAnimation、ColorAnimation、RotationAnimation）和三种动画触发方式（属性上的动画、属性上的行为、独立动画）。文章详细讲解了每种动画的使用语法和特性，并通过代码示例展示了如何实现平移、旋转、颜色渐变等动画效果。此外，还介绍了动画分组方法（ParallelAnimation并行执行和SequentialAnimation顺序执行）。最后通过对比表格总结了不同触发方式的适用]]></description><category></category></item></channel></rss>