摘要:
前言:Qt实时绘图的需求,一般都是接收某些传感器的数据并实时显示到界面上。相关的方法有很多,如利用库Qwt, QCustomerPlot。由于本人对于Qt不是很熟悉,想着添加第三方库也需学习新的库函数,所以就一直在寻找直接利用QtChart实现实时绘图的方法。由于网上没有找到相关资料,在此记录本人的 阅读全文
摘要:
PS:关于设计模式,推荐参考电子书:设计模式。本博客代码均参考以上电子书,仅供查阅,不便于学习。 1. 单例模式 1.1 概念及实现方法 单例模式保证一个类只存在一个实例,同时提供访问该实例的全局节点,该全局节点仅在首次访问的时候初始化。为了实现单例模式,需要做以下操作: (1) 构造函数均声明为p 阅读全文
摘要:
在C++的一个类中,有几种常见的构造函数,默认构造函数,拷贝构造函数,赋值运算构造函数以及移动构造函数。单独讲解每一个构造函数的概念都比较清晰,结合函数引用和赋值,理解起来就存在许多问题。本文重点不在于概念讲解,侧重于对各种函数不同特性的理解。 1. 函数参数和返回值 对于一个函数,如下定义: in 阅读全文
摘要:
1. 图的构造部分 采用邻接矩阵存储边。节点编号为数字,从0~n-1,n为节点个数 class Graphs { public: Graphs(int n){ m_VeticeNum = n; m_Edge.resize(n); m_Edge[0].resize(n); } void InitEdg 阅读全文
摘要:
1. 基本概念 max_heap,min_heap是一颗堆树。其定义如下: (1) 堆树是一颗完全二叉树; (2) 根节点的值大于子节点(max_heap);对于·min_heap,根节点的值小于子节点; (3) 左右子树也是一颗堆树。 比如下面的完全二叉树,就是一个max_heap: 回想完全二叉 阅读全文
摘要:
信号量通常用于进程并发控制,此处并发有两个含义:进程共享资源的互斥,进程时序关系控制。这两种方式也是信号量最常见的应用。互斥量作为共享资源互斥最常用的方式,只能用于单一进程(要实现多进程,可以采用共享内存映射某个互斥量,但一般不这么做)。在Linux操作系统中,有两种类型的信号量:XSI信号量和PO 阅读全文
摘要:
消息队列是消息的链接表,存储在内核中,用队列标识符标识(XSI的标识符)。消息队列的每个消息对象至少两个对象:消息类型(长整型表示)和消息主体。结构体定义如下: struct msg { long type; char data[50]; };//此消息结构体由用户定义,开头一定是消息类型 每个消息 阅读全文
摘要:
1. 共享内存简介 在Linux系统中,进程可以通过共享内存实现进程间通信。共享内存主要有两种实现方法:XSI共享存储(通过shmget,shmat,shmdt等函数实现)和内存映射(mmap实现)。两者的主要区别是前者没有相关的文件,共享的是内存匿名段;而后者通常需要指定一个文件路径,调用open 阅读全文
摘要:
popen和pclose调用后实现的操作是:创建一个管道,fork一个子进程,关闭未使用的管道端,在子进程执行shell命令。函数原型如下: #include <stdio.h> FILE* popen(const char* cmdstring,const char* type) cmdstrin 阅读全文
摘要:
注:看到一篇讲解epoll原理的文章,写得非常详细,建议阅读:epoll实现原理 之前分别记录了epoll(并发程序设计3:多路IO复用技术(2)),select和poll(并发程序设计2:多路IO复用技术(1))的用法,本节比较一下它们各自的特点。 1. select和poll的不同 (1) se 阅读全文