自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (8)
  • 收藏
  • 关注

原创 【调试记录】QT中使用多线程导致的死锁

子线程在第17行获取到锁,主线程刚好运行到24行准备获取锁。此时子线程执行第18行,阻塞调用等待主线程执行。子线程已经获取到锁,主线程等待获取锁,子线程又等待主线程事件循环执行函数,由此产生死锁。方案二:在锁外调用(仅适用于无数据竞争的情况,或采用原子变量),即去掉第17行的加锁。原因在于第18行采用阻塞队列的连接方式。方案一:将18行阻塞调用改为非阻塞调用。

2023-04-15 22:54:57 625

原创 由QCustomplot引发drawPolyline和drawLine的区别

标题一、起因二、原因分析2.1 测试2.1 查看QCustomplot中绘制源码三、解决方法四、drawPolyline和drawLine的区别五、对QCharts进行测试一、起因最近在使用QCustomplot绘制曲线图时,遇到性能低下(卡顿甚至无响应)。测试的功能为用rand()函数动态生成1000个数据点,其数据值范围为0<=X<1000, 0<=Y<100, X步进=0.1,其代码如下:#include <QApplication>#include &lt

2022-01-16 16:55:32 2051

原创 OpenSSL之Diffie-Hellman

// diffie_hellman.hpp#pragma once#include <openssl/dh.h>#include <memory>#include <vector>namespace crypto{ class diffie_hellman { public: diffie_hellman(); ~diffie_hellman() = default; bool create_p_g(); bool set_p_g(c

2021-11-29 22:17:29 777

原创 FFmpeg将图像数据编码为H264视频

图片数据编码为视频的步骤如下:1、 BGR数据转换为YUV格式;2.、YUV格式进行编码;其中对YUV格式进行编码又分为以下步骤:通过avcodec_find_encoder函数找到需要的编码器;通过avcodec_alloc_context3初始化编码器上下文,并设置编码器上下文的参数(包括码率、时间基、视频宽高等);通过avcodec_open2函数打开编码器;通过avformat_alloc_output_context2函数初始化输出文件上下文;通过avformat_new_str

2021-09-25 22:50:00 4198 2

原创 C++11模板元编程—std::enable_if使用说明

std::enable_if 顾名思义,满足条件时类型有效。作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程中。它的定义也非常的简单:// STRUCT TEMPLATE enable_iftemplate <bool _Test, class _Ty = void>struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty>struct enable_if<true, _

2021-08-29 13:52:02 3880

原创 C++模板元实现序列化

/* 序列化说明 * 1.包组成: * ----------------------- * | 包长度 | 数据 | * |-----------------------| * | int | char[] | * ----------------------- * 2.数据组成 * ------------------------------------------------------------------------.

2021-06-20 15:42:50 679

原创 C++虚函数实现模拟

目录前言虚函数表分析虚函数模拟实现虚函数原理分析前言虚函数的实现包含两个重要部分,虚函数表和虚函数表指针。虚函数表:一个类如果有虚函数,则针对这个类会产生一个虚函数表;虚函数表属于类。虚函数表指针:生成这个类的对象时,对象里就包含了一个指针(虚函数指针),用来指向这个虚函数表的起始地址;虚函数表指针属于对象,一般位于对象内存的起始位置。虚函数表分析看如下示例代码(代码1),父类Base包含三个虚函数f、g、h,子类Derive重写了其中两个虚函数f、g:class Base{pub

2020-11-15 23:00:29 251

原创 C++大量线程等待与唤醒

一、线程唤醒方法C++11之后提供了thread线程类,可以很方便的编写多线程程序。线程的等待和唤醒使用条件变量condition_variable和锁mutex结合实现,其中条件变量提供了wait(), notify(), notifyAll()等方法。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前条件变量上的等待线程;notify()是随机唤醒单个等待的线程,而notifyAll()是唤醒

2020-06-20 18:01:36 10918 2

原创 QtCharts图形移动和缩放

功能实现QtCharts曲线图移动和缩放:按住鼠标左键拖动曲线可移动曲线;滚动鼠标滚轮实现图形X轴方向的缩放;安装Ctrl,滚动鼠标滚轮实现图形Y轴方向的缩放;按鼠标右键恢复图形初始状态;缩放过程以鼠标当前位置为缩放中心;鼠标移动过程中会在左上角显示当前坐标。实现继承QChartView,主要重新实现鼠标事件和键盘事件。移动图形利用QChart的scroll函数;voi...

2020-04-27 22:30:42 11086 5

原创 C++虚函数实现原理

C++虚函数实现原理前言实现机制实例分析测试代码及输入结果结果分析前言C++中的虚函数的作用主要是实现了多态的机制。基类定义虚函数,子类可以重写该函数。实现机制每个类对象添加一个成员,该成员中保存了一个指向函数地址数组的指针,称为虚表指针(vptr),该数组称为虚函数表(virtual function table, vtbl),即,每个类使用一个虚函数表,每个类对象用一个虚表指针。实例...

2020-04-26 23:12:15 236

原创 QtXlsx编译安装

一.下载QtXlsx类,地址:https://github.com/VSRonin/QtXlsxWriter二.安装Perl5方式一:官网下载安装。下载Perl5地址:https://www.perl.org/get.html,根据你Qt版本(编译器版本)下载对应版本(32bit或64bit),我采用QtCreator编译器mingw53_32,所以下载strawberry-perl-5....

2019-12-23 11:22:52 2463 1

原创 单链表反转原理及实现

1 节点定义单链表节点的数据结构定义如下:/* 定义结节点 */typedef struct _Node{ int value; Node* next;}Node;2 方法:迭代法2.1 思路遍历整个链表,并把当前节点的next指向上一节点。2.2 分析1.初始链表状态如下图所示。2.定义节点指针①定义前向节点指针,并初始化为head。Node*...

2019-12-19 17:37:23 609

原创 CUDA求序列最大值

CUDA并行计算中,求最大值和求和原理一样,都属于规约算法。我是求复数模长的最大值。核函数如下:__global__ void array_max(const Complex* __restrict__ in, float* __restrict__ blockMax, const int in_len){ extern __shared__ float sha_partialMax...

2018-11-26 19:38:58 5825

原创 C++ 11实现信号量

/************************************//* 文件名:CSemaphore.h *//* 功 能:C++11信号量 *//************************************/#ifndef _CSEMAPHORE_H_#define _CSEMAPHORE_H_#include &lt;mutex&g...

2018-11-26 19:24:29 3086

原创 Ubuntu 嵌入式交叉编译环境搭建

仅以一个arm-linux-gcc讲解交叉编译工具安装配置,许多用户安装后编译或者查看gcc时出现: not found,出现这种情况是环境配置有问题。当然网上也有许多配置说明,但许多都只能在root用户下使用,切换为普通用户后会又出现: not found,其实还是环境配置不完整,只配置了root用户下的环境变量,而没有配置当前普通用户的环境变量。下面我将介绍一下我的配置方法:一、解压...

2018-06-28 16:34:39 2153

原创 解决C++调用Python中文乱码

C++调用Python,包括参数传递及返回值的处理的教程都很多。但是对于中文字符作为参数传递时,会遇到编码问题而乱码甚至崩溃。经过搜集资料,终于解决乱码问题,特记录在此:1、参数传递一般采用PyObject* objArg = Py_BuildValue("s", "Hello")构建参数,当输入参数为中文时,objArg则返回为空指针。原因是:Python为UTF-8编码,而C++中中文大多采用...

2018-04-09 22:40:37 3799 6

原创 C语言读写二进制文件

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int main( ){ //要写入文件的数字 double num1 = 76.54321; int num2 = -1234567; FILE* fpw = NULL; if ((fpw = fopen("test.dat", "wb")) == NULL) { fprin...

2018-04-09 21:18:48 9853

原创 Qt应用程序文字显示不全

用Qt写了一个模拟购票系统,在自己电脑(Windows10,分辨率:1366*768)上运行界面正常。当在别人电脑(windows7、windows10,分辨率都为:1920*1080)上运行时就出现了一些文字被遮挡覆盖的现象。查阅了大量资料,发现没有具体讲述是什么原因的(可能查阅资料能力有限),于是自己分析了几天,终于有了结果,在这里给大家分享一下。一、测试过程:我又找了...

2017-10-27 19:16:04 13245 4

原创 U盘无法识别读取

U盘插进电脑里有提示音,但是打开我的电脑却没有U盘,点击桌面右下角的小三角,里面也有U盘图标,该怎么让它显示读取出来呢?第1步:在此电脑上点击鼠标右键,选择管理第2步:点击左侧存储下面的磁盘管理,在右侧显示了当前系统的所有磁盘,其中可移动磁盘列有一个磁盘(就是未显示出来的磁盘,因为没有驱动器号)  第3步:选择该移动磁盘,点击鼠标右键选择更改驱动器号和路径....

2017-10-24 18:17:31 2752 1

QtCharts图形移动和缩放

实现QtCharts曲线图移动和缩放(重新实现QChartView部分函数),主要功能如下: 1. 按住鼠标左键拖动曲线可移动曲线; 2. 滚动鼠标滚轮实现图形X轴方向的缩放; 3. 安装Ctrl,滚动鼠标滚轮实现图形Y轴方向的缩放; 4. 按鼠标右键恢复图形初始状态; 5. 缩放时以鼠标当前位置为缩放中心; 6. 鼠标移动过程中会在左上角显示当前坐标。

2022-11-28

二进制文件转CSV文件

采用Qt实现二进制文件转CSV文件,主要功能如下: 1.包含操作界面; 2.适用于小端模式的数据格式; 3.可读取的数据文件格式为char、short、int、float、double以及无符号型数据; 4.可实现多通道数据分列存储; 5.输出为标准的CSV文件

2020-04-27

C++读取CSV文件

采用C++实现CSV文件读取,不依赖任何第三方库,可设置所读取的文件是否包含标题; 内部包含CSVReader类、使用示例代码以及一个测试数据文件

2020-04-27

QtCharts图形移动和缩放

实现QtCharts曲线图移动和缩放(重新实现QChartView部分函数),主要功能如下: 1. 按住鼠标左键拖动曲线可移动曲线; 2. 滚动鼠标滚轮实现图形X轴方向的缩放; 3. 安装Ctrl,滚动鼠标滚轮实现图形Y轴方向的缩放; 4. 按鼠标右键恢复图形初始状态; 5. 缩放过程以鼠标当前位置为缩放中心; 6. 鼠标移动过程中会在左上角显示当前坐标。

2020-04-27

Qt中嵌入Excel

采用Qt中QAxObject和QAxWidget实现Excel表格嵌入进Qt程序中,实现Excel的读写操作

2019-09-17

DBSCAN-1D密度聚类

c++实现一维数据密度聚类算法DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

2019-09-17

简易计算器(UI版 完整工程)

计算器界面使用Qt开发,采用简单工厂模式架构,实现的计算器的四则运算和括号等,可计算长串表达式。此为简易计算器完整代码(Qt5+vs2017)。

2018-06-08

C++调用Python脚本

完整的C++调用Python脚本源码,包含参数传递和函数返回值处理等,且解决传递中文参数出现乱码等问题

2018-04-09

C++二进制文件读写

C/C++实现简单的二进制文件读取和写入示例 1.包含如何读取和写入数字,以及用缓存按字节读取 2.采用标准输入和输出函数创建、打开、关闭文本文件或二进制文件

2018-04-09

空空如也

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

TA关注的人

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