
C++
文章平均质量分 69
鸿儒517
积跬步以至千里,积小流以成江海!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ Qt插件开发样例
这部分主要是为成员变量QWidget *m_MyWidget的实例化来做准备,也是插件开发的实际业务部分插入一个QT设计师界面类,自定义类名:MyJX_Widget为了简化区分,在Widget窗口中拖入一个按钮,做一个标识,这个插件就开发完了。原创 2025-07-15 16:30:56 · 888 阅读 · 0 评论 -
docker运行程序Killed异常排查
摘要:开发者在封装Docker镜像后提交给客户的C++多线程程序出现不定时异常中断,发现存在"Killed"提示。经排查发现是Docker内存限制导致的问题。针对Windows版Docker Desktop的解决方案:1)通过docker stats监控资源使用;2)在Docker Desktop设置界面调整Resources中的内存限制(需考虑主机实际内存),而非使用命令行参数。文中还提供了Docker Desktop的监控技巧,可通过容器界面直接查看实时资源使用情况。原创 2025-06-02 21:16:29 · 894 阅读 · 0 评论 -
linux ceres库编译注意事项及测试demo
最近linux编译了ceres库,因为要涉及到一个程序源代码的编译,但是反复测试,一直各种错误,所以一个个问题排除;虽然前面ceres库编译成功了,但是版本自定义扔进去的,所以在进行代码编译的时候各种报错。原创 2025-04-16 00:16:19 · 988 阅读 · 0 评论 -
Window代码向Linux平台移植问题汇总
亲自测试将__int64 替换成 int64_t 比较好,如果换成long long 编译可能还存在问题。注意:头文件要更改,函数名要更改,在使用mkdir命令的时候Linux平台还要增加权限参数。主要原因是windows开发偷懒,只写了一个#include <string>注意:头文件要更换,函数名也要更换。所以最终直接增加两个头文件即可。原创 2025-04-10 16:42:07 · 300 阅读 · 0 评论 -
x86 Linux ceres库编译(麒麟V10 SP1)
由于开始在老机器上编译,gcc版本和cmake版本过老,导致无法编译。升级这些又很麻烦,所以更换了最新操作系统,重新编译,中间走的弯路详见后面的“附:老麒麟系统上的弯路”篇章。因为更换系统后,编译期间遇到了很多问题一直没有解决,所以这个博客没有办法继续,通过不断努力,花了大半个星期不断尝试,终于在新的麒麟操作系统上编译成功了,特此记录中间弯路原创 2025-04-10 16:03:23 · 1137 阅读 · 0 评论 -
记录Qgis编译过程及弯路
将“C:\cygwin64\bin”、“C:\OSGeo4W\bin”和“C:\OSGeo4W\apps\Qt5\bin”(三个文件路径)下所有dll文件,拷贝到“%构建目录%\output\bin\RelWithDebInfo”下,即“qgis.exe”所在目录下。其中,%构建目录%是指CMake的“Where to build the binaries”指向的目录。原创 2025-03-03 18:45:40 · 887 阅读 · 0 评论 -
QT编译,无法打开corecrt.h头文件问题解决
随便选择一个目录,在工程中设置该目录即可,在QT工程的*.pro文件中新增下面两句话即可。设置后正常编译运行,如果编译的是exe文件,程序要正常运行可能需要对应的动态库文件、编译QT工程出现无法打开corecrt.h头文件。原创 2025-02-22 11:57:45 · 360 阅读 · 0 评论 -
C++ OpenGL学习笔记(4、绘制贴图纹理)
通过前面几章,彩色三角形也可以画出来进行显示了。现在我有一张图片,我想把图像显示绘制出来,怎么操作。这里就需要openGL纹理绘制相关知识了,最终效果如下图。原创 2024-12-23 11:17:33 · 1024 阅读 · 0 评论 -
C++ OpenGL学习笔记(3、绘制彩色三角形、绘制彩色矩形)
可是新的问题来了,一个三角形中有三个顶点数据,两个三角形有多少个顶点数据,6个?在上个章节中,单个颜色的三角形绘制成功了,甚至随着时间变化颜色也随着变化的三角也绘制成功了,那么我想在不同的角点设置不同的颜色值,中间内插出来,输出的三角形就是彩色的了,这个彩色三角形怎么绘制呢,通过我的学习,绘制出来了。要实现这种效果,我们在输入顶点数据的时候,就将颜色信息与顶点数据进行绑定,解析完顶点数据后就解析颜色数据,最后将颜色数据通过管线自动传到下一步进行影像绘制即可。1、定义带颜色信息的顶点,定义四个顶点;原创 2024-12-21 09:00:00 · 625 阅读 · 0 评论 -
C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)
openGL 2: 绘制橙色三角形、绘制绿色随时间变化的三角形。三角形是最基础的一个面图形,要在一个空的窗口上绘制三角形,就需要在上一节代码基础上进行修改。原创 2024-12-20 11:59:43 · 1131 阅读 · 0 评论 -
C++ OpenGL学习笔记(1、Hello World空窗口程序)
终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。需下载glfw库、glad库1、glfw库:官方下载地址2、glad库:官方下载地址访问官网后,根据下图配置下载的版本等信息,点击右下角的按钮进入下载界面在下载界面,下载压缩包即可,如下图这里我也提供一下云盘下载地址,方便学习使用1.2、库的选择及安装1、glad.zip文件解压后如下图看看文件树如下图,里面没有lib文件,都是源码文件。所以glad.c文件后续跟着工程项目进行加载即可。2、glf原创 2024-12-19 09:51:21 · 484 阅读 · 0 评论 -
C++ QT 无边框设计之<拖拽窗体>
无边框设计后,窗体的移动是个首要问题,要么点击窗体进行移动,要么点击标题栏进行移动原创 2024-12-13 17:19:22 · 628 阅读 · 0 评论 -
C++ Linux调试(无IDE)
跨平台IDE编译调试C++很方便,如QTCreate 、VSCode、Eclipse等,但是如果只能使用Shell控制台呢,gdb调试的优势就很明显了,在没有IDE的情况下,这个方式最有效。因为上手不是很难,特此整理参考链接。原创 2024-07-03 14:37:17 · 1254 阅读 · 0 评论 -
C++多线程编程(第四章 案例1:base16编码,C++11和C++17 多核并行计算样例)
release版本优化的比较多,之所以C++17耗时较长原因是进入多线程次数远远大于C++11,C++11只进入了12次,而C++17采用lambda表达式函数,进入了TestNumber次。原创 2023-10-16 18:52:00 · 313 阅读 · 0 评论 -
GDAL Linux离线源码编译(附源码及编译步骤)
参考链接:gdal-3.1.2 linux(Ubuntu) 编译 附SQLite3 PROJ6编译工作中经常会进行程序部署,软硬件系统变化程序都需要重新编译进行适配:armCPU、X86CPU 、Ubuntu系统、Redhat、CentOS系统等等都需要重新编译库安装包源码下载点击【这里(免积分下载)】包含:1、sqlite-autoconf-3360000.tar.gz2、tiff-4.2.0.tar.gz3、curl-7.71.1.tar.gz4、proj-7.1.0.tar.gz5、原创 2023-09-26 17:19:01 · 1516 阅读 · 0 评论 -
C++多线程编程(第四章 多线程future相关)
ackaged_task包装函数为一个对象,用于异步调用,其返回值能通过std::future对象访问。C++11 异步运行一个函数,并返回保有其结果的std::future。与bind的区别,可以不调用,函数访问和获取返回值分开调用。std::future提供访问异步操作结果的机制。promise用于异步传输变量。下面代码中还包含了是否超时判断。原创 2023-09-08 18:12:07 · 214 阅读 · 0 评论 -
C++多线程编程(第三章 案例3:把案例1改装成案例2的条件变量多线程方式)
由于案例1采用等待循环方式进行写入,如果更换成案例2的条件多线程方式,效率会大大增加,下面开始写出新的代码吧。原创 2023-09-08 17:49:10 · 420 阅读 · 0 评论 -
C++多线程编程(第三章 案例2,条件变量,生产者-消费者模型)
1、获取std::mutex(常用std::unique_lock)消费者阻塞等待信号,获取信号后消费产品(取出list队列中数据)期间出差了一个月,没有时间学习,今天开始又继续学习和做笔记了…上工作的std::condition_variable。等待中,增加了时延和开销,用条件变量就很快及时处理。生产者和消费者共享资源变量(list队列);生产者生产一个产品,通知消费者消费;只在std::unique_lock。2、在获取锁时进行修改;3、释放锁并通知读取线程。原创 2023-09-08 08:59:18 · 726 阅读 · 0 评论 -
C++多线程编程(第三章 案例1,使用互斥锁+ list模拟线程通信)
代码包含了XThread类(基类)、XMsgSever类(消息)、测试主程序。3、通过Unique_lock和mutex互斥方位list 消息队列。主线程和子线程进行list通信,要用到互斥锁,避免同时操作。2、模拟消息服务器线程,接收字符串消息,并模拟处理;1、封装线程基类XThread控制线程启动和停止;4、主线程定时发送消息给子线程;原创 2023-07-28 10:58:40 · 997 阅读 · 0 评论 -
C++多线程编程(第三章 利用栈特性自动释放锁RALL,锁管理器、控制器)
RALL(resource Acquisition Is Initialization )C++ 之父Bjarne Stroustrup 提出;使用局部对象来管理资源的技术称为资源获取即初始化;它的生命周期是由操作系统来管理的,无需人工介入;资源的销毁容易忘记,造成死锁或者内存泄漏。原创 2023-07-28 10:01:50 · 553 阅读 · 0 评论 -
C++多线程编程(第二章 多线程通信和同步)
阻塞(Blocked):该线程被阻塞挂起,Blocked状态包括:pend(锁、事件、信号量等阻塞)、suspend(主动pend)、delay(延时阻塞)、pendtime(因为锁、事件、信号量时间等超时等待)共享锁中包含了共享锁和互斥锁,当互斥锁被锁定,所有共享锁都进不去;共享锁中的共享锁,只要在没有锁定共享锁中的互斥锁,共享锁中的共享锁都能进入;可以记录锁获取情况,多次超时,可以记录日志,获取错误情况。解锁后等待1毫秒,让其他线程可以获取到锁,运行结果如下。运行(Running):该线程正在运行;原创 2023-07-27 09:08:09 · 164 阅读 · 0 评论 -
C++多线程编程(第一章 多线程基本使用)
C++ 11;C++ 14;C++ 17;C++ 20;代码主要为:第一章01~07内容。原创 2023-07-26 12:13:01 · 156 阅读 · 0 评论 -
C++ 优先级队列的vector实现
队列大家很熟悉,可以用vector数据结构存储,优先队列可能新手不怎么熟悉(老兵可以略过本文)原创 2023-01-13 10:10:25 · 1207 阅读 · 0 评论 -
C++ map 非常量引用得初始值必须为左值
具体原因没有深究,但由于该错误发生了两次,为了长记性,特此记录!——辉 2022.12.8。解决方案:将属性 -> C/C++ -> 符合模式 -> 否。原创 2022-12-08 15:45:40 · 429 阅读 · 1 评论 -
编译支持JPEG2000压缩格式的GDAL(ECW库、OpenJPEG)
默认编译的GDAL不能解析JPG2000格式的影像,由于工作需要,我们的程序需要支持*.jp2格式,需要使用其他库来编译到GDAL里面进行辅助解析原创 2022-11-10 18:07:32 · 2999 阅读 · 2 评论 -
C++ Linux安装gdal及测试demo注意的问题
根据上面的参考链接进行安装gdal没有啥问题,编译后可以输出可执行程序,但是在运行的时候出现提示libgdal.so没有找到。原创 2022-09-05 13:21:34 · 1004 阅读 · 0 评论 -
C++ string replace操作
C++ string replace操作本来网上有很多,但是按其操作有坑,编译提示语法错误。原创 2022-08-05 13:08:17 · 5426 阅读 · 0 评论 -
C++ 二分法算法查找返回Array最近的值
使用二分法进行查找返回Array最近值,支持float类型、int类型等各种数据类型。原创 2022-07-22 17:01:41 · 737 阅读 · 0 评论 -
HDF5 windows编译 release版本、Debug版本
由于最近急需的一个项目,需要hdf5库,误打误撞,编译成功。特此记录官网下载地址:https://portal.hdfgroup.org/display/support/HDF5+1.12.2#files找到如下地址,本人电脑有cmake软件,我下载了Cmake版本和源代码版本同时进行了,事实上我也下载了源码进行cmake手工编译,但是不如直接下载CMake版本的来的方便,所以这里我直接记录了Cmake版本的编译方法如果下载不了,可以通过该链接进行下载如果不想看怎么编译,可以从这里下载我编译好的库1、下原创 2022-07-10 15:16:52 · 1287 阅读 · 0 评论 -
直方图均衡化算法、直方图匹配算法 C++ 代码
这两天一直在研究云光匀色算法才了解到了直方图匹配算法,想要了解这个算法又要先了解直方图均衡化算法,通过网上查找了很多资料,没有现成C++代码,经过仔细思考和实验后大概复现了该算法。特此记录,以备查阅参考链接如下:1、匀光匀色–直方图匹配算法实现与应用2、基于OpenCV的直方图匹配3、直方图均衡化的数学原理先介绍一下基本概念原始数据底图影像直方图匹配匀光匀色效果从上图可以看出原始影像与模板颜色不一致,经过直方图匹配匀光匀色后颜色一致性较好。先看看直方图均衡算法原理知识:先在根据上原创 2022-06-18 17:31:51 · 3595 阅读 · 13 评论 -
已知四角经纬度判断是否有重叠(不用geos库)
已知四角经纬度判断是否有重叠。本来以前有一个依赖geos库的代码,但是现在用的gdal又没有geos库,无赖之下网上搜索了一些资料重新写了一个。四角经纬度的多边形可以分为两种类型:1、四角为矩形,这个判断比较简单;2、四角不为矩形,可能是平行四边形或者其他形状的四边形;两个四角为平行四边形或者其他多边形,判断是否重叠这里我参考了一个链接:判断两条线段是否相交以及点是否在四边形内的C++算法上面文章里面有判断线是否有相交算法、点是否在面内算法。据此我整理了一下下面代码是上面博客的核心代码,我增加了一个.原创 2022-06-08 16:44:15 · 835 阅读 · 0 评论 -
使用OpenCV Mat对图片低频信息、高频信息提取及无损还原(高斯模糊、做差、求和)
为了还原一篇论文。里面用到了提取图像的低频信息、高频信息、及还原技术。现在使用opencv进行复现,里面有一些注意事项特此记录参考链接:OpenCV中对Mat矩阵加、减、乘、除、转置等操作的总结OpenCV两个Mat相减的隐藏秘密opencv学习笔记(四)——模糊(均值,高斯,双边)其实提取一张图像的低频、高频信息原理比较简单,但是不注意的时候还原出来的影像总有一些像素值对不上(特别是边缘像素)。影像的低频和高频信息可用如下数学模型表述:I=L+H其中I表示影像,L和H分别表示影像对应的低频原创 2022-05-19 11:21:20 · 4350 阅读 · 0 评论 -
利用gdal的RasterIO进行最近邻、双线性、三次卷积重采样的重采样
下面是根据《GDAL源码剖析与开发指南》上面对RasterIO的常规用法,该书使用的gdal版本比较老,新版的gdal版本已经可以支持RasterIO进行最近邻、双线性、三次卷积重采样的重采样(具体从哪个版本改的我也不知道),具体方法在文末。先根据该书介绍gdal常规的做法:根据上面描述,我们进行第七个参数和第八个参数的更改则可以进行调整输出影像大小,如果不设置算法参数,我测试也可以输出大影像,但是效果不是很好。但是怎么指定是使用最近邻、双线性、三次卷积重采样在新版本是有方法的,具体如下:1、定义原创 2022-05-11 10:04:54 · 2900 阅读 · 0 评论 -
gdal、geos的 windows编译 openCL加速
由于最近在使用gdal的纠正功能,发现自带方法特别慢,经过研究发现以前的编译没有使用OpenGL的GPU加速功能,不得己重新编译一次完整的gdal库,特此记录。gdal官方下载地址:http://download.osgeo.原创 2022-05-04 22:00:10 · 2344 阅读 · 0 评论 -
C++中关于宏定义函数需注意的
C++ 中宏定义函数使用比较方便,主要优点:代码量少,执行速度快,其原理就是用所定义的数字进行替换得到,看下面例子#include <stdio.h>#define pow2(x) x*x#define pow3(x) (x)*(x)int main(){ printf("4的平方:%d\n", pow2(4)); printf("3+1的平方:%d\n", pow2(3+1)); printf("3+1的平方:%d\n", pow3(3+1));}运行结果:如果原创 2022-03-13 17:04:58 · 913 阅读 · 0 评论 -
C++ string获取文件路径文件名、文件路径、文件后缀(两种方式)
windows路径有两种方式,一种正斜杠,一种反斜杠都可以表示路径,该方法可以支持这两种表达方法string path1 = "D:/datas/FusionTestData/datas/GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"string path2 = "D:\datas\FusionTestData\datas\GF6_PMS_E111.2_N27.6_20180719_L1A1119837939-PAN.tiff"stri原创 2022-02-23 18:28:38 · 11820 阅读 · 1 评论 -
CUDA编程上的OpenMP异步
CU文件上的openMP 设置原创 2022-02-23 15:14:49 · 417 阅读 · 0 评论 -
CUDA编程学习<2>——归约算法的7种优化方法详解
参考链接:CUDA学习(归约算法)根据上面文章中的PPT链接,进行了深入研究。原文章只介绍了归约算法的一般形式,而PPT中则对比了几种归约算法,但是PPT写的不够完整,不便于系统的运行起来。为了学习CUDA及其优化技巧,特此整理Nvidia官网归约ppt (英文)中文PPT关于代码核函数的部分可以参阅我的博客:CUDA编程学习——关于核函数ID获取公式硬件信息实验机器硬件:通过硬件信息可以看出几个重要信息:理论带宽(bandwidth):192GB/s此显卡每秒渲染像素数量(Pixe原创 2022-02-16 11:05:31 · 2510 阅读 · 5 评论 -
CUDA编程学习——关于核函数ID获取公式
最近在学习CUDA编程,主要阅读了下面一些文章1、CUDA编程十篇(重要的看前八篇就差不多了)2、cuda从入门到精通(三)之核函数和参数配置3、CUDA 线程ID 计算方式通过第一个链接的学习,可以简单写出CUDA代码,但其ID号只是一维的。在实战方面,多用三维,所以为了整理清ID的意思,为此看下面两个链接。现在根据我自己的理解和测试,进行了整理核函数的线程定义方式1、1维核函数ID定义方式1.1、核函数定义及调用:hello_from_gpu << <2, 4 >原创 2022-01-11 14:32:05 · 1306 阅读 · 0 评论 -
C++关注内存及硬盘占用情况
今天测试多线程异步处理数据,发现程序很容易崩溃掉。主要原因事在异步的时候加载数据,加载的总数据量远远大于本身内存导致的。所以搜索找到一些关注内存占用的代码,以后在处理多线程的时候可能用到条件锁,防止爆内存情况代码如下:#include<windows.h>BOOL CheckResource(){ MEMORYSTATUSEX statex; statex.dwLength = sizeof(statex); GlobalMemoryStatusEx(&statex);原创 2021-12-22 16:16:06 · 725 阅读 · 0 评论