自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt程序唯一实例,避免重复开启程序,基于windows下互斥体实现

网上有很多Qt程序单实例的的博客,大多都是基于共享内存,共享内存实现的思路就是程序开启时创建一块共享内存,然后关闭时释放。每次程序开启的时候检是否有共享内存存在,如果有说明程序已经运行,则新实例不启动。但是共享内存的方案有一个弊端,就是程序异常退出时,没办法释放掉这块共享内存,导致程序再也无法正常开启。目前看到过几种比较靠谱的方法,如下:1.利用udp或者tcp2.利用QLocalserver这俩种都是在程序初始化时,去连接服务器,如果连接不上,说明程序没有运行,这时会监听本地端口开启服务。但是

2020-09-01 22:44:39 1200 1

原创 IDEA常用快捷键记录

快捷键描述Alt+Enter代码出现问题时(导入包,自动修正代码)Ctrl+Y代删除光标所在行Ctrl+D复制光标所在行的内容,插入光标位置下面Ctrl+/单行注释Ctrl+Shift+/选中代码注释,多行注释,再按取消注释Alt+Ins自动生成代码,toString,get,set等方法Alt+Shift+ 上下箭头移动当前代...

2020-04-18 15:44:03 137

原创 MySQL 外键的级联操作

上一篇博客说到外键约束时提到了:https://blog.csdn.net/kongwei1234/article/details/105369762我们将雇员表中的dep_id字段的外键设为部门表中的id字段,那么这时,如果我再去试图删除部门表中的id为1的行时就会报错,原因是再雇员表中引用了部门表中的id。并且,由于雇员表中的dep_id字段设置了外键为部门表中的id,那么我们在对雇...

2020-04-08 16:59:24 704

原创 MySQL中的约束:非空约束、主键约束、自动增长、唯一约束、外键约束

在SQL中约束就是对表中的数据进行一些限定,保证数据的正确性、有效性和完整性。 约束有四类:1.主键约束:primary key2.非空约束:not null3.唯一约束:unique4.外键约束:foreign key一、非空约束添加了非空约束的列,列中的值不能为null#非空约束CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT ...

2020-04-07 18:31:58 1375

原创 MySQL分组查询与分页查询

一、分组查询语法:group by 分组字段;直接上例子#按照性别分组,查询男女平均分SELECT sex,AVG(math) FROM student GROUP BY sex;结果如下:#按照性别分组,分别查询男女平均分、人数SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;结果如下:注意:分组查询时要么加...

2020-04-07 16:51:37 710

原创 MySQL排序查询与聚合语句(对列求和、求取列数、取列平均数等)

一、排序查询排序查询的基本语法为:order by 排序字段1 排序方式1 , 排序字段2 排序方式2...排序方式:ASC:升序。DESC:降序。注意:1.这里如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。2.默认的排序方式是升序例子如下:#按照数学成绩排序SELECT * FROM student ORDER BY math ; #默认的排序方式是升序...

2020-04-07 16:15:37 1419

原创 MySQL中的基本查询语句,条件查询与模糊查询

本篇博客是看黑马培训视频的笔记,用了视频中的代码,如侵可删。一、条件查询首先创建一张表,并插入一些数据,SQL代码如下:CREATE TABLE student ( id INT, -- 编号 NAME VARCHAR(20), -- 姓名 age INT, -- 年龄 sex VARCHAR(5), -- 性别 address VARCHAR(100), -- 地址 math ...

2020-04-07 15:40:28 427

原创 记录mysql数据库的基本操作,增删查改等

博主最近在系统的学习mysql,开个专栏记录学习的一些内容,里面大多数都是看网课的笔记,方便用到时查询。一、MySQL命令行登录与退出MySQL登录(三种方式):1. mysql -uroot -p密码2. mysql -hip -uroot -p连接目标的密码3. mysql --host=ip --user=root --password=连接目标的密码其中,root为用户名,i...

2020-04-06 18:03:11 265

原创 【数据结构】C++实现跳跃表,原理思路和详细实现步骤

博主在学习跳跃表的时候,在网上看了好几篇博客,内容和方法都有着差别,甚至有的博客还有明显的错误,耽误了很多时间。其间自己也产生了许多疑惑,然后对比了好几篇博客,结合跳跃表的目的(减少链表查询时间)自己思考了一下,慢慢解开了这些疑惑。这里会把跳跃表的思路已经刚看跳跃表的人需要直到和注意的点写下来。一、为什么要用跳跃表我们知道单链表在存储长度未知的动态数据是非常合适的选择(数组长度在定义时旧的确定...

2020-03-22 17:47:50 1072

原创 【数据结构】java实现数据结构单循环双向链表类,泛型能添加任意类型,增删查改,头插法和尾插法

最近在自学java,刚写了C++的双链表,试着实现一下java版本的。话说C++程序员学java不得不感慨,不用释放内存是真方便。java和C++写起来感觉差不多,java的new出来的类对象是引用类型,实际上也就等于C++的指针,把它当作指针用就好了。还有JAVA居然不能运算符重载,泛型也不能传递int这样的基本类型,太坑。。。。完整代码如下节点类:public class Node &l...

2020-03-19 23:08:19 227

原创 【数据结构】c++实现双向循环链表,含模板,类型可随意指定,实现增删查改

相比于单链表,双向循环链表的插入操作还是比较饶人的,初学者一开始可能会比较难理解,可以画个图会比较理解。一.从头部插入元素(头插法)1.将当前新增节点的前驱节点指向头节点的前驱节点2.将当前新增节点的后继节点指向头节点3.头节点的前驱节点的后继节点指向当前新增节点4.头节点的前驱节点指向当前新增节点//从头部插入元素 void push_front(valueType value)...

2020-03-19 20:58:57 197

原创 【数据结构】C++实现数据结构单链表类,含模板能添加任意类型,增删查改,头插法和尾插法

自己实现的单链表类,函数接口类似于STL的list,实现了头插法和尾插法,我觉得链表核心就是指针的使用,指针理解透了,实现起来就很简单。#include <iostream>//单链表节点template<class T>class node1 {public: T m_data; //数据域 node1 *m_nextNode; //指...

2020-03-19 17:06:17 229

原创 Qt5.7 MingW和MSVC(vs2015)编译器编译opencv,编译好的库文件, 可以直接使用

博主之前做图像处理项目时学习了一下opencv,当时用Qt5.7 mingw编译了opencv3.0,用mingw编译器编译真的超级麻烦,参考网上的方法有各种报错,博主花了俩天时间才编译完成。相比之下用VS的编译器也就是MSVC就容易很多了,很快就能搞定,博主用VS2015编译了opencv3.4.4在Qt msvc中使用。具体编译方法网上很多,但是特麻烦,这里博主直接把自己编译好的库放上来,你...

2020-03-18 14:38:28 980

原创 基于Boost::asio的多线程异步TCP服务器,实现了io_service线程池,测试了1万左右的并发访问,读写无压力

asio

2020-03-11 17:37:41 4115 6

原创 Qt实现的流式布局,20行代码实现

在我们进行应用程序开发时,流式布局是很常见 的一种布局。Qt中自带的布局并没有实现流式布局,因此我们需要自己实现。写之前看了网上几篇流式布局的博客,感觉实现的比较麻烦,代码不够简洁,不太能满足博主的需要,于是决定自己实现,本篇博客中实现的流式布局应该是全网代码量最少的流式布局了,代码比较简单,但是效果还是不错的。博主在项目中实现的效果如下图所示:思路比较简单:利用栅格布局和scrollA...

2020-03-05 02:02:04 1714

原创 线程池的使用,以及类的非静态成员函数当作形参传递的问题

在上一篇博客中,实现了线程池类的设计,由于博主做线程池是为了在Qt编写的应用程序中使用,于是在Qt中新建的窗体程序进行测试,测试时为了获取任务完成时的数据,这里我们可以:1.利用std::future中的get()成员函数,获取任务的返回值。但是这里用线程池处理的任务耗时大概在200ms左右,且任务生产速度较快,利用get()获取返回值时,在任务完成前,get()所在的线程都会被阻塞,即GUI线...

2020-03-05 00:19:14 580 1

原创 基于C++11实现的线程池,任务队列满和池中线程满时做了简单处理

在我们进行实际编程时,经常会碰到数量级大、耗时长的任务,尤其在网络服务中,可能有几万个用户同时访问你的服务器,不可能进来一个用户我们就开辟一个线程,这样做的后果是当用户量大的时候线程数量过多,线程间的调度效率就很低下了,反而会影响程序的效率。因此这时候,我们可以通过线程池,对一定数量的线程进行复用,提高应用的效率。线程池的结构是根据设计模式中的生产者消费者模式进行设计的,感兴趣的朋友可以百度学习一...

2020-03-04 23:08:34 2180 1

asioServer.rar

代码的使用说明在我的博客里有,测试了1万的并发访问是没问题的,代码修改一下即可应用到实际的项目中. 博主在写这个服务器时,是想用它代替FTP服务器进行文件传输,因此,这里实现了自定义协议头,这里的协议头只为了测试,因此比较粗糙。这里再解析时,在读取到协议头大小的数据后,只对数据进行了打印,正常我们项目中,这里需要先解析协议头,再根据协议头中的包体大小对包体进行读取,读取到的数据可以利用回调函数回调到应用层(数据回调的方法这里没有实现,但是实现了异常回调,方法都一样,大家可以参考)。 这个代码基本的框架都写好了,但只是框架,其中细节部分还需要大家根据自己的需求进行修改添加即可。其中接收到协议头后,可以根据协议头读取包体,然后用异步写的方法回复数据包。

2020-03-17

Qt中可直接使用的编译好的opencv3.0(mingw)和3.4.4(msvc VS2015)

资源压缩包里有opencv3.0用Mingw编译好的库和opencv3.4.4用VS2015编译好的库,点开我的博客,里面有一篇博文有库的使用方法,按照博客里的方法进行配置即可。

2020-03-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除