<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xd6905的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xd6905</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xd6905]]></copyright><item><title><![CDATA[Qt-connect总结]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/141288925</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/141288925</guid><author>xd6905</author><pubDate>Sun, 18 Aug 2024 00:08:09 +0800</pubDate><description><![CDATA[总共有五个参数，从左到右分别为为发送的对象指针、发送信号、接收对象指针、接收对象的槽函数、连接类型。]]></description><category></category></item><item><title><![CDATA[MFC与QT中禁用Esc、Alt+F4、关闭图标]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/140656059</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/140656059</guid><author>xd6905</author><pubDate>Wed, 24 Jul 2024 14:34:58 +0800</pubDate><description><![CDATA[但是由于我使用keyPressEvent检测alt+f4不成功，使用closeEvent又会把确定按钮的离开也禁用了。于是新方案可以使用在上层界面的closeEvent中调用该窗口，输入密码不正确即为ignore，正确即为accept。前两种是windows下常用的关闭按键，回车键也可一并禁用，因为有的场景误触回车，可能会触发按钮点击，按钮中调用了OnOK()这样的函数也会导致页面关闭。在业务中，我们需要按指定的方式才能关闭当前对话框。如下图需输入密码点击确认后，界面才能关闭。]]></description><category></category></item><item><title><![CDATA[VS+QT连接mysql]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/139142904</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/139142904</guid><author>xd6905</author><pubDate>Thu, 23 May 2024 11:37:29 +0800</pubDate><description><![CDATA[1.将mysql安装目录中的库文件拷贝到qt的bin目录下，windows下拷贝dll后缀，linux拷贝lib后缀。2.在qt模块中添加sql模块。或者在.pri文件中加上。]]></description><category></category></item><item><title><![CDATA[vs2013使用qt Linguist以及tr不生效问题]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/139119306</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/139119306</guid><author>xd6905</author><pubDate>Wed, 22 May 2024 14:40:13 +0800</pubDate><description><![CDATA[qt语言家使用以及tr函数不生效问题]]></description><category></category></item><item><title><![CDATA[protobuf用法（C++）]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/131631716</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/131631716</guid><author>xd6905</author><pubDate>Mon, 10 Jul 2023 10:14:54 +0800</pubDate><description><![CDATA[protobuf（protocal buffer）是一种序列化数据结构的方法。其特点有：1.支持多种语言（本文使用的是C++），多个平台。2.类比于XML更小、更快、更简单。3.扩展性、兼容性好。可以更新数据结构，而不破坏原有的结构和程序。]]></description><category></category></item><item><title><![CDATA[IO多路转接]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/126794152</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/126794152</guid><author>xd6905</author><pubDate>Sat, 10 Sep 2022 17:28:08 +0800</pubDate><description><![CDATA[多路转接个人学习总结]]></description><category></category></item><item><title><![CDATA[特殊类设计、单例模式]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125702189</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125702189</guid><author>xd6905</author><pubDate>Sun, 10 Jul 2022 12:44:42 +0800</pubDate><description><![CDATA[特殊类的设计及单例模式简单总结]]></description><category></category></item><item><title><![CDATA[智能指针简单模拟实现]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125671144</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125671144</guid><author>xd6905</author><pubDate>Fri, 08 Jul 2022 09:58:39 +0800</pubDate><description><![CDATA[智能指针简单总结]]></description><category></category></item><item><title><![CDATA[网络套接字（socket）]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125652889</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125652889</guid><author>xd6905</author><pubDate>Fri, 08 Jul 2022 08:46:56 +0800</pubDate><description><![CDATA[在linux下的socket编程学习]]></description><category></category></item><item><title><![CDATA[右值引用及移动语义]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125160040</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125160040</guid><author>xd6905</author><pubDate>Tue, 07 Jun 2022 11:02:34 +0800</pubDate><description><![CDATA[右值引用、在移动构造和移动赋值的应用]]></description><category></category></item><item><title><![CDATA[unordered_set和unordered_map模拟实现]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125042994</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125042994</guid><author>xd6905</author><pubDate>Mon, 30 May 2022 12:12:57 +0800</pubDate><description><![CDATA[目录

1 哈希表实现

1.1 字符串处理

1.2 节点

1.3 迭代器

1.4 表

2 unordered_map

3 unordered_set

1 哈希表实现

采用开散列哈希表，映射方法为除留余数法。

1.1 字符串处理

使用仿函数对字符串类型的值转换为可以取余的整数。


	template&lt;class K&gt;
	struct Hash
	{
		size_t operator()(const K&amp; key)
		{
			return key;...]]></description><category></category></item><item><title><![CDATA[哈希表概念及简单实现]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/125040495</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/125040495</guid><author>xd6905</author><pubDate>Mon, 30 May 2022 10:42:53 +0800</pubDate><description><![CDATA[目录

1 什么是哈希表

2 哈希冲突

2.1 冲突解决

2.1.1 重新设计哈希函数

2.1.2 闭散列（开放地址法）

2.1.3 开散列（拉链法）

2.2 哈希表扩容

3 代码实现

3.1闭散列

3.1.1 查找

3.1.2 插入

3.1.3 删除

3.2 开散列

3.2.1 查找

3.2.2 插入

3.2.3 删除



1 什么是哈希表

哈希表的数据结构是一个顺序表，在存储内容时通过数组下标与数据值一一映射的方式记录。这里的一一映射关系可以用函数来表示，这样的函数叫.]]></description><category></category></item><item><title><![CDATA[线程池简单实现]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124911514</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124911514</guid><author>xd6905</author><pubDate>Sun, 22 May 2022 20:27:13 +0800</pubDate><description><![CDATA[目录



1 什么是线程池

2 普通模式

3 单例模式



1 什么是线程池

线程池（thread pool）：一种线程使用模式。线程池维护了多个已经创建好的线程。当有大量短时任务需要处理时，不用一个个创建进程去执行任务。避免了频繁创建销毁线程的消耗，同时也提高了任务处理的效率。

原理：在线程池中创建并初始化固定数量的线程。使用一个阻塞队列作为任务队列，利用锁和条件变量保证接任务和取任务之间的互斥和同步。

2 普通模式

    在InitThreadP...]]></description><category></category></item><item><title><![CDATA[生产消费模型]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124910646</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124910646</guid><author>xd6905</author><pubDate>Sun, 22 May 2022 15:15:24 +0800</pubDate><description><![CDATA[目录

1 模型简介

2 基于BlockingQueue的生产者消费者模型

代码实现

3基于环形队列的生产消费模型

代码实现

1 模型简介

以现实中的生产消费为例。工厂作为生产者生产的产品被批发到商场，普通民众作为消费者到商场购买产品。在这之间生产者与消费者并不需要交互，而是通过商场这一个媒介完成整个生产消费的过程。

那么在我们的程序中也可以应用这个模型，一个线程产生数据作为生产者，一个线程处理数据作为消费者，中间使用阻塞队列来作为缓冲区。这样做的好处就是将...]]></description><category></category></item><item><title><![CDATA[线程概念及控制]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124906876</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124906876</guid><author>xd6905</author><pubDate>Sun, 22 May 2022 11:02:01 +0800</pubDate><description><![CDATA[目录

1 线程概念

1.1 什么是线程

1.2 轻量级进程（LWP）

1.3 线程特点

1.4 线程和进程

1.5 线程安全

1.5.1 线程不安全的情况

1.5.2 常见不可重入的情况

2 线程控制

2.1 创建线程

2.2 线程id

2.3 线程终止

2.4 线程等待

2.5 线程分离

3 互斥量

3.1 互斥量相关概念

3.2 初始化

3.3 销毁

3.4 加锁和解锁

4 条件变量

4.1 相关概念

4.2 相关接口

5 信号量

1 线程概念

1.1 ]]></description><category></category></item><item><title><![CDATA[简单实现map和set]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124823715</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124823715</guid><author>xd6905</author><pubDate>Tue, 17 May 2022 16:30:08 +0800</pubDate><description><![CDATA[一、红黑树

1 红黑树迭代器

难点是Increament和DeIncreament函数，用来实现迭代器的加加减减。下面讲解一下Increament的思路，DeIncreament思路与其大致思路相同，不过就是一个相反的关系。

    红黑树按照中序遍历，当前节点加加就应该要到当前节点的右子树找最左节点，但是右节点有可能为null。因此就需要分右节点是否为空两种情况。

    当右节点不为空，到右子树找最左节点。当右节点为空，说明以该节点为根的子树已经遍历完了，向上找父...]]></description><category></category></item><item><title><![CDATA[数据结构 - 红黑树]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124782796</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124782796</guid><author>xd6905</author><pubDate>Sun, 15 May 2022 16:17:06 +0800</pubDate><description><![CDATA[目录

一、红黑树概念

二、代码实现

1 节点定义

2 树的定义

3 插入

3.1 情况一：u节点存在且为红

3.2 情况二：u节点不存在或存在且为黑。

3.3 代码实现部分

4 验证

一、红黑树概念

红黑树，是一种二叉搜索树，但在每个结点上增加一个存储位表示结点的颜色，可以是Red或Black。红黑树就能保证其最长路径中节点个数不会超过最短路径节点个数的两倍。

满足性质：

1. 每个结点不是红色就是黑色
2. 根节点是黑色的
3. 如果一个节点是红色的，则它的两...]]></description><category></category></item><item><title><![CDATA[数据结构 - AVLTree]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124680241</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124680241</guid><author>xd6905</author><pubDate>Tue, 10 May 2022 11:03:50 +0800</pubDate><description><![CDATA[目录

一、概念

二、实现

 2.1 节点

2.2 树

2.3 插入

2.4 旋转

2.4.1 左旋

2.4.2 右旋

2.4.3 右左双旋

2.4.4 左右双旋

2.5 验证

一、概念

AVL树来源于二叉搜索树。当二叉搜索树是以下单支的情况下，搜索效率退化为O(n)。为了解决这个问题，我们通过一些手段将二叉搜索树左右平衡（每一个节点的左右子树高度差不大于1），这样平衡的二叉搜索树就是AVL树。



为了更好地实现AVL树，我们引入平衡因子（bal...]]></description><category></category></item><item><title><![CDATA[Linux - 信号]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124536814</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124536814</guid><author>xd6905</author><pubDate>Mon, 02 May 2022 14:48:01 +0800</pubDate><description><![CDATA[目录

1 信号概念

1.1 查看信号

1.2 信号常见处理方式

2 产生信号

2.1 通过终端按键

2.2 调用系统函数向进程发信号

2.3 由软件条件产生信号

2.4硬件异常产生信号

3 信号阻塞

3.1 信号在内核中的示意图​

3.2sigset_t

3.3sigprocmask

3.4sigpending

4 信号捕捉

4.1 signal

4.2 sigaction、

4.3 信号捕捉过程



1 信号概念

信号是进程中事件异步通知的一种...]]></description><category></category></item><item><title><![CDATA[进程通信（管道、共享内存）]]></title><link>https://blog.youkuaiyun.com/xd6905/article/details/124338812</link><guid>https://blog.youkuaiyun.com/xd6905/article/details/124338812</guid><author>xd6905</author><pubDate>Fri, 22 Apr 2022 11:23:16 +0800</pubDate><description><![CDATA[总结管道和共享内存等两种进程通信方法]]></description><category></category></item></channel></rss>