- 博客(27)
- 收藏
- 关注
原创 C++智能指针
允许多个智能指针共享同一个对象的所有权。内部使用引用计数来追踪共享对象的所有权。当最后一个shared_ptr被销毁时,它所指向的对象才会被删除。(离开作用域即减少依次引用计数)。
2024-12-11 22:04:16
1026
原创 QFuture、QFutureWatcher的简单使用,实现任务的异步执行和监视
在执行异步操作时,可以使用 QtConcurrent 模块提供的函数 (QFuture QtConcurrent::run(Function function, …)等等)来进行封装和管理。QProcess类可以用于启动异步**start()**或者同步execute()的外部程序,甚至可以独立于本程序来启动外部程序startDetached()。但是要注意,调用start异步启动后,若在调用waitForFinished(),就会阻塞主线程,知道Process执行完成。
2024-12-01 18:28:44
382
原创 QT中动态库开发时的常用规则
这样可以将函数实现隐藏起来,增强了封装性;一般来说,.h用于声明 .cpp用于定义,实现声明与定义的分离;而这里声明在抽象类ISalVisit.h内,定义则写在了实现类SqlVisit.cpp内,也符合分离与定义特性;本质上,C++的编译过程分为编译和链接编译阶段:编译器只检查函数的声明是否符合调用时的签名,编译器不需要知道函数的具体实现;链接阶段:该阶段会根据函数的声明找到对应的函数实现,并将函数调用与实现连接起来;
2024-11-26 21:28:36
350
原创 回调函数Demo
回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。回调函数就是将A1操作的函数指针传递给B程序,在B程序中的信息不定期更新时,直接调用A1函数指针,从而在表象上呈现B程序信息更新时,A程序就获取该信息进行A1操作。这里要注意,*pf(int)意味着pf()是一个返回指针的函数,而(*pf)(int)才意味着pf是一个指向函数的指针。由于pam是函数,因此(*pf)也是函数,则pf为指针。:1.获取函数的地址;
2024-11-26 21:14:40
358
原创 GDB调试在QT软件开发中的使用(X86架构、WIN/LINUX平台)
GNU Debugger,简称GDB,是一个程序调试工具。GDB具备各种调试功效,能针对计算机程序的执行进行追踪与警告,使用GDB的调试人员可以监督及修改程序的内部变量值,甚至监督与修改独立于主程序运作外,以独立个体类型调用(调用使用)的函数。
2024-11-26 21:05:54
1289
原创 QToolTip添加样式显示不全、Windows下QPalette不生效BUG记录
2.用QPalette进行背景,字体颜色设置时,要注意windows下要加app.setStyle(“Fusion”),QPalette的颜色设置才能生效。1.样式设置qss,但是要注意,字体大小用QFont设置,否则有可能会有显示不完全的问题;需要注意的是,QPalette 设置在Windows下不生效,要使其生效,需要进行如下设置。
2024-11-26 21:01:19
289
原创 WIN32_LEAN_AND_MEAN宏的含义与使用场景
使用场景:适用于任何需要在Windows平台上进行开发的C++项目,特别是那些需要优化编译时间和最终可执行文件大小的项目。
2024-11-10 16:06:43
493
原创 所谓编译、动/静态库
借鉴:在程序开发中,使用高级语言编写的代码被称为源代码,比如用C语言编写的后缀名为.c的文件,或者C++编写的后缀名为.cpp的文件。源代码不能被机器执行,必须转换成二进制的机器代码(指令+数据)才能被CPU执行。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成。QT自带编译器为QMake,也可以安装CMake当做编译器。编译器对源代码进行语法检查,只有没有语法错误的源代码才能被编译通过。
2024-08-18 19:29:43
782
原创 设计模式-单例模式
缺点:存在线程安全问题,即多线程同时第一次调用该对象时,此时判断都为空,则会导致创建多个实例化对象,造成内存泄露。:在开发中,若是对内存要求非常高,则使用懒汉式单例模式,可在特定时候才创建对象;若是对内存要求不高,则使用饿汉式单例模式,因为简单不易出错,且无并发性能与安全的问题。堆:动态申请的内存空间,有程序员进行分配和释放,若程序执行结束未释放,则会由操作系统自动回收。(即程序中存在的内存泄露,会在程序执行结束后,由操作系统进行回收)。常量存储区:存放常量,不允许修改,程序运行结束自动释放。
2024-01-30 19:59:53
456
1
原创 卷积神经网络在无参考图像质量评价中的应用
Convolutional Neural Networks for No-Reference Image Quality Assessment(卷积神经网络在无参考图像质量评价中的应用)最近在学图像质量评价(无参考),所以计划找一些demo学习一下。下面是我找到的一个基于卷积神经网络的源代码,我在自学之后添加了一些注释,以便自己更好的理解。理解肯定不足,甚至有错,这里就做个分享Github代码IQADataset:import torchimport osfrom torch.utils.da
2022-06-22 16:53:17
958
2
原创 LC动态规划-GT
框架# 初始化 base casedp[0][0][...] = base# 进⾏状态转移for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态2][...] = 求最值(选择1,选择2...)⾸先,动态规划问题的⼀般形式就是求最值。求解动态规划的核⼼问题是穷举;⾸先,动态规划的穷举有点特别,因为这类问题存在「重叠⼦问题」,如果暴⼒穷举的话效率会极其低下, 所以需要「备忘录」或者「DP table」来优化穷举过程,避
2022-06-22 16:52:37
274
原创 LC回溯—GT
介绍其实回溯算法其实就是我们常说的 DFS 算法,本质上就是⼀种暴⼒穷举算法。解决⼀个回溯问题,实际上就是⼀个决策树的遍历过程。站在回溯树的⼀个节点上,你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树底层,⽆法再做选择的条件。其核⼼就是 for 循环⾥⾯的递归,在递归调⽤之前「做选择」,在递归调⽤之后「撤销选择」BFS模板:深度优先+回溯模板:result = []void backtrack(路径, 选择列
2022-05-20 16:25:34
393
原创 LC刷题笔记2-GT
二叉树94.⼆叉树的中序遍历中序:左中右前序:中左右后序:左右中x序:“中”就在x处。1.递归: //递归函数:用于返回传入节点的中序遍历 public List<Integer> inorderTraversal(TreeNode root) { // if(root == null) return null; List<Integer> list = new ArrayList<Integer>();
2022-05-20 16:25:11
353
原创 Java-Socket长连接实现
服务端package learnsocket.demo2;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class ServerDemo2 { public static v
2022-05-20 16:24:32
1712
1
原创 图像评价——项目记录
1.基于SpringBoot,MybatisPlus的图像数据库管理SpringBoot整合SSMP案例学习数据库存储图像2.SpringBoot整合JavaFX的BS架构3.Socket通信建立全网最全的Java Socket通讯例子Java的Socket连接同时传输图片、文本等多种信息这里选用的是:使用Java的对象流。自定义一个类用于传输数据Serializable 序列化:什么是Serializable接口:一个对象序列化的接口,一个类只有实现了Serializable接口,它的对
2022-05-19 19:19:40
184
原创 JavaFx使用及问题记录
IDEA中使用配置借鉴:查了很多,这个最详细,且解决了我的问题:借鉴这里:Intellij IDLE 中javafx使用与配置(其中,最关键一步:点击Add VM options→在输入框输入–module-path “自己的javafx的lib文件夹路径” --add-modules javafx.controls,javafx.fxml)...
2022-05-19 18:55:23
544
原创 VGG16代码注释
原版代码在这:神经网络学习小记录52——Pytorch搭建孪生神经网络(Siamese network)比较图片相似性VGG注释:import torchimport torch.nn as nnfrom torchvision.models.utils import load_state_dict_from_urlclass VGG(nn.Module): def __init__(self, features, num_classes=1000): # features:14*
2021-11-18 15:44:46
927
原创 Pytorch深度学习入门
学习通道:https://www.bilibili.com/video/BV1Y7411d7Ys?p=5https://blog.csdn.net/bit452/category_10569531.html时间段任务重:这里也就复制别人代码自己看+自己多注释来理解:线性模型:'''import numpy as npimport matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]# 数据输入x与
2021-11-03 17:07:54
1786
原创 QT串口助手编写
ui界面:widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QSerialPort>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = nullptr); ~Widget();
2021-10-12 10:36:34
232
原创 QT的OpenGL进行模型的3D展示
QT的OpenGL进行模型的3D展示由于项目需要,我需要实现一个模型3D展示的功能。这里采用的是QT的OpenGL进行实现(无材质!!!)。由于本人也是第一次接触这方面知识,所以这里就将自己的学习历程记录一下。主要内容1.QT的OpenGL相关知识;这里包括QT的OpenGL类继承,着色器,材质,光照,桌标变换等知识;2.模型文件在QT中的加载;3.移植到虚拟机linux,Cent-OS7遇到的多个问题;最终成果在虚拟机下实现如下功能:(模型文件是我在SolidWork中自行画的并保存为ST
2021-06-03 21:30:08
2073
7
原创 Linux下实现QT OpenGL的3D展示(各类问题及解决)
QT OpenGL代码移植到Linux 下遇到的各类问题:软件下载地址:QT5.9.9CentOS安装这里不赘述了,网上有很多。CentOS与Windows共享文件夹如何设置我找到的可用教程简单来说就是:虚拟机-设置-选项-共享文件夹总是启用-添加主机文件夹-启用完成确定之后进入CentOS,进入mnt文件夹创建共享文件夹:mkdir share挂载:mount -t fuse.vmhgfs-fuse .host:/ /mnt/share/ -o allow_other永久挂载设置:vi
2021-06-03 21:27:45
1294
原创 QT OpenGL加载STL模型文件并旋转放缩
加载模型文件模型文件有很多种格式,有一种方法是利用Assimp库来加载各类格式的模型,也就是众生平等!但是本人太菜,网上搜索的各种方法我都没能成功在QT中实现,而且本人项目需求不高,所以我选择了简单的方法来加载模型文件——STL模型文件加载,也就是说我这个只能加载一个格式的模型文件,但对我来说够用了。STL文件格式文件格式如上图:STL格式是将模型保存为一个又一个的小三角形,精度越高,三角形数量越多。其中fact-endfact之间是一个三角形的信息,包括facet normal后面的是该面的.
2021-06-03 21:27:03
5163
33
原创 QT OpenGL基础学习——旋转立方体
第一个QOpenGLWidget程序学习内容:创建OpenGL窗口创建并编写着色器程序为着色器程序装配顶点数据启动渲染管线进行绘图这个小程序我是在该博主这里学的:QT中创建OpenGL窗口学习网址:VAO与VBO着色器运行结果...
2021-06-03 21:26:29
1349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人