C++
文章平均质量分 61
关于C++的博文
E404
这个作者很懒,什么都没留下…
展开
-
Qt程序唯一实例,避免重复开启程序,基于windows下互斥体实现
网上有很多Qt程序单实例的的博客,大多都是基于共享内存,共享内存实现的思路就是程序开启时创建一块共享内存,然后关闭时释放。每次程序开启的时候检是否有共享内存存在,如果有说明程序已经运行,则新实例不启动。但是共享内存的方案有一个弊端,就是程序异常退出时,没办法释放掉这块共享内存,导致程序再也无法正常开启。目前看到过几种比较靠谱的方法,如下:1.利用udp或者tcp2.利用QLocalserver这俩种都是在程序初始化时,去连接服务器,如果连接不上,说明程序没有运行,这时会监听本地端口开启服务。但是原创 2020-09-01 22:44:39 · 1248 阅读 · 1 评论 -
【数据结构】C++实现跳跃表,原理思路和详细实现步骤
博主在学习跳跃表的时候,在网上看了好几篇博客,内容和方法都有着差别,甚至有的博客还有明显的错误,耽误了很多时间。其间自己也产生了许多疑惑,然后对比了好几篇博客,结合跳跃表的目的(减少链表查询时间)自己思考了一下,慢慢解开了这些疑惑。这里会把跳跃表的思路已经刚看跳跃表的人需要直到和注意的点写下来。一、为什么要用跳跃表我们知道单链表在存储长度未知的动态数据是非常合适的选择(数组长度在定义时旧的确定...原创 2020-03-22 17:47:50 · 1161 阅读 · 0 评论 -
【数据结构】c++实现双向循环链表,含模板,类型可随意指定,实现增删查改
相比于单链表,双向循环链表的插入操作还是比较饶人的,初学者一开始可能会比较难理解,可以画个图会比较理解。一.从头部插入元素(头插法)1.将当前新增节点的前驱节点指向头节点的前驱节点2.将当前新增节点的后继节点指向头节点3.头节点的前驱节点的后继节点指向当前新增节点4.头节点的前驱节点指向当前新增节点//从头部插入元素 void push_front(valueType value)...原创 2020-03-19 20:58:57 · 212 阅读 · 0 评论 -
【数据结构】C++实现数据结构单链表类,含模板能添加任意类型,增删查改,头插法和尾插法
自己实现的单链表类,函数接口类似于STL的list,实现了头插法和尾插法,我觉得链表核心就是指针的使用,指针理解透了,实现起来就很简单。#include <iostream>//单链表节点template<class T>class node1 {public: T m_data; //数据域 node1 *m_nextNode; //指...原创 2020-03-19 17:06:17 · 241 阅读 · 0 评论 -
线程池的使用,以及类的非静态成员函数当作形参传递的问题
在上一篇博客中,实现了线程池类的设计,由于博主做线程池是为了在Qt编写的应用程序中使用,于是在Qt中新建的窗体程序进行测试,测试时为了获取任务完成时的数据,这里我们可以:1.利用std::future中的get()成员函数,获取任务的返回值。但是这里用线程池处理的任务耗时大概在200ms左右,且任务生产速度较快,利用get()获取返回值时,在任务完成前,get()所在的线程都会被阻塞,即GUI线...原创 2020-03-05 00:19:14 · 605 阅读 · 1 评论 -
基于Boost::asio的多线程异步TCP服务器,实现了io_service线程池,测试了1万左右的并发访问,读写无压力
asio原创 2020-03-11 17:37:41 · 4609 阅读 · 6 评论 -
基于C++11实现的线程池,任务队列满和池中线程满时做了简单处理
在我们进行实际编程时,经常会碰到数量级大、耗时长的任务,尤其在网络服务中,可能有几万个用户同时访问你的服务器,不可能进来一个用户我们就开辟一个线程,这样做的后果是当用户量大的时候线程数量过多,线程间的调度效率就很低下了,反而会影响程序的效率。因此这时候,我们可以通过线程池,对一定数量的线程进行复用,提高应用的效率。线程池的结构是根据设计模式中的生产者消费者模式进行设计的,感兴趣的朋友可以百度学习一...原创 2020-03-04 23:08:34 · 2264 阅读 · 1 评论