<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kongwei1234的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kongwei1234</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kongwei1234]]></copyright><item><title><![CDATA[Qt程序唯一实例，避免重复开启程序，基于windows下互斥体实现]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/108352080</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/108352080</guid><author>kongwei1234</author><pubDate>Tue, 01 Sep 2020 22:44:39 +0800</pubDate><description><![CDATA[网上有很多Qt程序单实例的的博客，大多都是基于共享内存，共享内存实现的思路就是程序开启时创建一块共享内存，然后关闭时释放。每次程序开启的时候检是否有共享内存存在，如果有说明程序已经运行，则新实例不启动。
但是共享内存的方案有一个弊端，就是程序异常退出时，没办法释放掉这块共享内存，导致程序再也无法正常开启。
目前看到过几种比较靠谱的方法，如下：
1.利用udp或者tcp
2.利用QLocalserver
这俩种都是在程序初始化时，去连接服务器，如果连接不上，说明程序没有运行，这时会监听本地端口开启服务。
但是]]></description><category></category></item><item><title><![CDATA[IDEA常用快捷键记录]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105599652</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105599652</guid><author>kongwei1234</author><pubDate>Sat, 18 Apr 2020 15:44:03 +0800</pubDate><description><![CDATA[快捷键
描述




Alt+Enter
代码出现问题时（导入包，自动修正代码）


Ctrl+Y
代删除光标所在行


Ctrl+D
复制光标所在行的内容，插入光标位置下面


Ctrl+/
单行注释


Ctrl+Shift+/
选中代码注释，多行注释，再按取消注释


Alt+Ins
自动生成代码，toString，get，set等方法


Alt+Shift+ 上下箭头
移动当前代...]]></description><category></category></item><item><title><![CDATA[MySQL 外键的级联操作]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105391465</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105391465</guid><author>kongwei1234</author><pubDate>Wed, 08 Apr 2020 16:59:24 +0800</pubDate><description><![CDATA[上一篇博客说到外键约束时提到了：

https://blog.youkuaiyun.com/kongwei1234/article/details/105369762

我们将雇员表中的dep_id字段的外键设为部门表中的id字段，那么这时，如果我再去试图删除部门表中的id为1的行时就会报错，原因是再雇员表中引用了部门表中的id。
并且，由于雇员表中的dep_id字段设置了外键为部门表中的id,那么我们在对雇...]]></description><category></category></item><item><title><![CDATA[MySQL中的约束：非空约束、主键约束、自动增长、唯一约束、外键约束]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105369762</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105369762</guid><author>kongwei1234</author><pubDate>Tue, 07 Apr 2020 18:31:58 +0800</pubDate><description><![CDATA[在SQL中约束就是对表中的数据进行一些限定，保证数据的正确性、有效性和完整性。	
约束有四类：
1.主键约束：primary key
2.非空约束：not null
3.唯一约束：unique
4.外键约束：foreign key
一、非空约束
添加了非空约束的列，列中的值不能为null
#非空约束
CREATE TABLE stu(
	id INT,
	NAME VARCHAR(20) NOT ...]]></description><category></category></item><item><title><![CDATA[MySQL分组查询与分页查询]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105367918</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105367918</guid><author>kongwei1234</author><pubDate>Tue, 07 Apr 2020 16:51:37 +0800</pubDate><description><![CDATA[一、分组查询
语法：group by 分组字段；
直接上例子
#按照性别分组，查询男女平均分
SELECT sex,AVG(math) FROM student GROUP BY sex;

结果如下：

#按照性别分组，分别查询男女平均分、人数
SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;

结果如下：
注意：分组查询时要么加...]]></description><category></category></item><item><title><![CDATA[MySQL排序查询与聚合语句（对列求和、求取列数、取列平均数等）]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105366773</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105366773</guid><author>kongwei1234</author><pubDate>Tue, 07 Apr 2020 16:15:37 +0800</pubDate><description><![CDATA[一、排序查询
排序查询的基本语法为：
order by 排序字段1 排序方式1 ，  排序字段2 排序方式2...

排序方式：ASC：升序。
DESC：降序。
注意：
1.这里如果有多个排序条件，则当前边的条件值一样时，才会判断第二条件。
2.默认的排序方式是升序
例子如下：
#按照数学成绩排序
SELECT * FROM student ORDER BY math ; #默认的排序方式是升序
...]]></description><category></category></item><item><title><![CDATA[MySQL中的基本查询语句，条件查询与模糊查询]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105366066</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105366066</guid><author>kongwei1234</author><pubDate>Tue, 07 Apr 2020 15:40:28 +0800</pubDate><description><![CDATA[本篇博客是看黑马培训视频的笔记，用了视频中的代码，如侵可删。
一、条件查询
首先创建一张表，并插入一些数据，SQL代码如下：
CREATE TABLE student (
 id INT, -- 编号
 NAME VARCHAR(20), -- 姓名
 age INT, -- 年龄
 sex VARCHAR(5), -- 性别
 address VARCHAR(100), -- 地址
 math ...]]></description><category></category></item><item><title><![CDATA[记录mysql数据库的基本操作，增删查改等]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105347502</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105347502</guid><author>kongwei1234</author><pubDate>Mon, 06 Apr 2020 18:03:11 +0800</pubDate><description><![CDATA[博主最近在系统的学习mysql，开个专栏记录学习的一些内容，里面大多数都是看网课的笔记，方便用到时查询。
一、MySQL命令行登录与退出
MySQL登录（三种方式）：
1. mysql -uroot -p密码
2. mysql -hip -uroot -p连接目标的密码
3. mysql --host=ip --user=root --password=连接目标的密码

其中，root为用户名，i...]]></description><category></category></item><item><title><![CDATA[【数据结构】C++实现跳跃表，原理思路和详细实现步骤]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/105030351</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/105030351</guid><author>kongwei1234</author><pubDate>Sun, 22 Mar 2020 17:47:50 +0800</pubDate><description><![CDATA[博主在学习跳跃表的时候，在网上看了好几篇博客，内容和方法都有着差别，甚至有的博客还有明显的错误，耽误了很多时间。其间自己也产生了许多疑惑，然后对比了好几篇博客，结合跳跃表的目的（减少链表查询时间）自己思考了一下，慢慢解开了这些疑惑。这里会把跳跃表的思路已经刚看跳跃表的人需要直到和注意的点写下来。
一、为什么要用跳跃表
我们知道单链表在存储长度未知的动态数据是非常合适的选择（数组长度在定义时旧的确定...]]></description><category></category></item><item><title><![CDATA[【数据结构】java实现数据结构单循环双向链表类，泛型能添加任意类型，增删查改，头插法和尾插法]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104979420</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104979420</guid><author>kongwei1234</author><pubDate>Thu, 19 Mar 2020 23:08:19 +0800</pubDate><description><![CDATA[最近在自学java，刚写了C++的双链表，试着实现一下java版本的。话说C++程序员学java不得不感慨，不用释放内存是真方便。java和C++写起来感觉差不多，java的new出来的类对象是引用类型，实际上也就等于C++的指针，把它当作指针用就好了。还有JAVA居然不能运算符重载，泛型也不能传递int这样的基本类型，太坑。。。。
完整代码如下
节点类：
public class Node &l...]]></description><category></category></item><item><title><![CDATA[【数据结构】c++实现双向循环链表，含模板，类型可随意指定，实现增删查改]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104976382</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104976382</guid><author>kongwei1234</author><pubDate>Thu, 19 Mar 2020 20:58:57 +0800</pubDate><description><![CDATA[相比于单链表，双向循环链表的插入操作还是比较饶人的，初学者一开始可能会比较难理解，可以画个图会比较理解。
一.从头部插入元素（头插法）
1.将当前新增节点的前驱节点指向头节点的前驱节点
2.将当前新增节点的后继节点指向头节点
3.头节点的前驱节点的后继节点指向当前新增节点
4.头节点的前驱节点指向当前新增节点
//从头部插入元素
	void push_front(valueType value)
...]]></description><category></category></item><item><title><![CDATA[【数据结构】C++实现数据结构单链表类，含模板能添加任意类型，增删查改，头插法和尾插法]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104971563</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104971563</guid><author>kongwei1234</author><pubDate>Thu, 19 Mar 2020 17:06:17 +0800</pubDate><description><![CDATA[自己实现的单链表类，函数接口类似于STL的list，实现了头插法和尾插法，我觉得链表核心就是指针的使用，指针理解透了，实现起来就很简单。
#include &lt;iostream&gt;
//单链表节点
template&lt;class T&gt;
class node1 {
public:
	T m_data;           //数据域
	node1 *m_nextNode;  //指...]]></description><category></category></item><item><title><![CDATA[Qt5.7 MingW和MSVC（vs2015）编译器编译opencv，编译好的库文件, 可以直接使用]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104926968</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104926968</guid><author>kongwei1234</author><pubDate>Wed, 18 Mar 2020 14:38:28 +0800</pubDate><description><![CDATA[博主之前做图像处理项目时学习了一下opencv,当时用Qt5.7 mingw编译了opencv3.0，用mingw编译器编译真的超级麻烦，参考网上的方法有各种报错，博主花了俩天时间才编译完成。相比之下用VS的编译器也就是MSVC就容易很多了，很快就能搞定，博主用VS2015编译了opencv3.4.4在Qt msvc中使用。
具体编译方法网上很多，但是特麻烦，这里博主直接把自己编译好的库放上来，你...]]></description><category></category></item><item><title><![CDATA[基于Boost::asio的多线程异步TCP服务器，实现了io_service线程池，测试了1万左右的并发访问，读写无压力]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104778613</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104778613</guid><author>kongwei1234</author><pubDate>Wed, 11 Mar 2020 17:37:41 +0800</pubDate><description><![CDATA[asio

]]></description><category></category></item><item><title><![CDATA[Qt实现的流式布局，20行代码实现]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104666769</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104666769</guid><author>kongwei1234</author><pubDate>Thu, 05 Mar 2020 02:02:04 +0800</pubDate><description><![CDATA[在我们进行应用程序开发时，流式布局是很常见 的一种布局。Qt中自带的布局并没有实现流式布局，因此我们需要自己实现。写之前看了网上几篇流式布局的博客，感觉实现的比较麻烦，代码不够简洁，不太能满足博主的需要，于是决定自己实现,本篇博客中实现的流式布局应该是全网代码量最少的流式布局了，代码比较简单，但是效果还是不错的。
博主在项目中实现的效果如下图所示：


思路比较简单：
利用栅格布局和scrollA...]]></description><category></category></item><item><title><![CDATA[线程池的使用，以及类的非静态成员函数当作形参传递的问题]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104665659</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104665659</guid><author>kongwei1234</author><pubDate>Thu, 05 Mar 2020 00:19:14 +0800</pubDate><description><![CDATA[在上一篇博客中，实现了线程池类的设计，由于博主做线程池是为了在Qt编写的应用程序中使用，于是在Qt中新建的窗体程序进行测试，测试时为了获取任务完成时的数据，这里我们可以：
1.利用std::future中的get()成员函数，获取任务的返回值。但是这里用线程池处理的任务耗时大概在200ms左右，且任务生产速度较快，利用get()获取返回值时，在任务完成前，get()所在的线程都会被阻塞，即GUI线...]]></description><category></category></item><item><title><![CDATA[基于C++11实现的线程池，任务队列满和池中线程满时做了简单处理]]></title><link>https://blog.youkuaiyun.com/kongwei1234/article/details/104664010</link><guid>https://blog.youkuaiyun.com/kongwei1234/article/details/104664010</guid><author>kongwei1234</author><pubDate>Wed, 04 Mar 2020 23:08:34 +0800</pubDate><description><![CDATA[在我们进行实际编程时，经常会碰到数量级大、耗时长的任务，尤其在网络服务中，可能有几万个用户同时访问你的服务器，不可能进来一个用户我们就开辟一个线程，这样做的后果是当用户量大的时候线程数量过多，线程间的调度效率就很低下了，反而会影响程序的效率。因此这时候，我们可以通过线程池，对一定数量的线程进行复用，提高应用的效率。线程池的结构是根据设计模式中的生产者消费者模式进行设计的，感兴趣的朋友可以百度学习一...]]></description><category></category></item></channel></rss>