自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 C++11 初始化列表&构造函数内初始化的区别

这个Member成员变量被创建了2次!第1次是用空构造函数创建的,然后在执行A的构造函数的时候又用Member的带参数的构造函数创建了一遍。显然,这种方式的性能是比较低的,因此在C++中,应尽量使用初始化列表的方式初始化成员变量。(initializer list)的方式初始化成员变量,这两者之间有什么区别吗?看起来符合预期,对不对?在其他很多语言(比如Java、C#)中,但是C++中提倡的是通过。的初始化应该都是放在。

2025-03-27 10:04:20 277

原创 deepseek+在线markdown生成pdf文件

本文档主要是将deepseek搜索的内容生成一个pdf格式的文件进行发布的过程。2.4 将2.2步骤中的内容拷贝到markdown编辑器中。2.1 打开deepseek,并在线搜索关键字。2.2 copy deepseek中搜索到的内容。2.5 转换成pdf格式的文件。

2025-03-24 15:16:03 436

原创 QtCreator默认快捷键

qtcreator调试效率

2025-03-19 11:06:47 328

原创 OSGEarth

MapNode是继承自osg的Node,是osgEarth中地球节点,你所添加的影像,DEM,模型都包含在MapNode中,因为它们都加入到Map中,Map则类似二维中的Map可以添加各种图层。矢量数据,最好尽可能的简化,因为大的矢量会十分影响渲染速度,当然也可以对矢量栅格化处理加快速度,对于模型的话,大数据量一定要做LOD或者pageLod。,filesystem等),再结合一套地理投影转换插件,这样就能够实现高效处理加载调度地理数据在三维地球上的显示,实现三维虚拟地球。

2025-03-18 16:45:19 429

原创 OSG简介

OpenSceneGraph (简称 OSG) 是一个开源的高性能。

2025-03-18 16:29:35 273

原创 设计模式比较好理解的文档 c++

C++ 抽象工厂模式讲解和代码示例 (refactoringguru.cn)

2024-12-04 10:23:20 378

原创 OCC系列-框架分析

OCCT库分组成六个模块,最小的模块Foundation Classes包含两个库,最大的模块Modeling Algorithms,包含八个库。(可能是早期版本,最新版本的库的数量有变化。

2024-11-15 11:16:39 988

原创 数据结果与算法应用: 数组一

链接:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。

2024-11-14 15:06:56 132

原创 数据结果与算法应用: 哈希表3

给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。4最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。9。

2024-11-14 11:16:27 220

原创 数据结果与算法应用: 哈希表2

给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的所有字母得到的一个新单词。

2024-11-14 10:23:41 228

原创 数据结果与算法应用: 哈希表1

给一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。[1,2][0,1]

2024-11-14 09:54:36 362

原创 [[nodiscard]] 使用说明

属性:这个属性可以用于函数或者返回类型。它的作用是告诉编译器:调用这个函数时,它的返回值不应被忽略。如果程序员调用了这样的函数但没有使用它的返回值,编译器会发出警告。这对于那些返回重要状态或错误码的函数特别有用。

2024-11-13 17:43:53 162

原创 最适合初学者的数据结构与算法的资料

Releases · krahets/hello-algo

2024-11-12 16:41:18 225

原创 VS2017打开新项目编译报错:设置环境变量 TRACEDESIGNTIME = true 并重启 Visual Studio 以进行调查

2024-11-04 17:48:54 252

原创 VS+QT开发 找不到宏$(Qt_INCLUDEPATH_) $(Qt_LIBS_)

问题:在VS+QT开发环境,项目右键->属性->C/C++->常规->附加包含目录->宏(位置在右下角)->右侧新弹出的属性框内搜索Qt_INCLUDEPATH_ 找不到的场景的解决办法。

2024-11-04 17:46:13 385

原创 qt connect中信号函数和槽函数的参数为自定义类型

qRegisterMetaType 多线程

2024-10-31 16:29:44 298

原创 Thread使用

多线程

2024-10-30 17:36:08 229

原创 RDMA技术六:数据流过程

WQE:Work Queue Element,工作队列元素,WQE可以认为是一种“任务说明”,这个工作请求是软件下发给硬件的,这份说明中包含了软件所希望硬件去做的任务以及有关这个任务的详细信息。比如,某一份任务是这样的:“我想把位于地址0x12345678(虚拟内存地址,并非实际内存地址)的长度为10字节的数据发送给对面的节点”,硬件接到任务之后,就会通过DMA去内存中取数据,组装数据包,然后发送。CQE中描述了某个任务是被正确无误的执行,还是遇到了错误,如果遇到了错误,那么错误的原因是什么。

2024-10-29 16:46:39 358

原创 RMDA技术五:NetworkDirect

服务器:2台网卡:Intel Ethernet Network Adapter E810-XXV-4 (具备RDMA能力)

2024-10-29 11:35:27 474

原创 RDMA技术三:NetworkDirect

其中,RDMA功能由具备RDMA能力的网络适配器提供,NetworkDirect可以基于ib、iwarp或roce三种协议中的一种,而NetworkDirect允许应用程序开发人员,通过访问和使用具备RDMA能力的网卡制造商通过提供的接口, 实现使用网卡的硬件功能。NetworkDirect的Provider不是真正的COM对象,NetworkDirect的Provider不会再系统中注册特定的对象。能找到计算机上所有的Provider,通过对比实例化时的参数,找到注册过的Provider。

2024-10-29 10:36:03 959

原创 RDMA技术二:编程

Verbs API提供了一套完整的RDMA操作函数,包括内存注册、队列对(Queue Pair, QP)的创建和管理、数据发送和接收等。以上代码只是示例性质的伪代码,真实的RDMA编程需要更多的初始化和配置工作,包括设备查询、内存注册、队列对的创建和配置等。具体的RDMA编程细节可以参考相关的RDMA编程指南和文档。基于infiniband协议实现的示例:不管是基于协议中的哪一种协议,接口都是一样的,却别在于不同的电脑的硬件不同,协议不同而已。

2024-10-28 21:55:14 290

原创 RDMA技术一

RDMA( Remote Direct Memory Access )即Remote + DMA,意为远程直接地址访问。所谓“Remote”,本端节点可以访问“远端”节点的内存。所谓“Direct”,指的是可以像访问本地内存一样,绕过传统以太网复杂的TCP/IP网络协议栈读写远端内存,而这个过程对端是不感知的,而且这个读写过程的大部分工作是由硬件而不是软件完成的,即不需要内核参与。

2024-10-28 21:45:35 1033

原创 RDMA技术零:windows+Socket编程

通过socket编程的代码,分析用户空间、内核空间和硬件在网络编程中的特点,引入 RDMA编程。

2024-10-28 17:33:34 588

原创 RDMA技术四:Network Direct

2.2.3 获取接Network Direct Adapter的接口,然后根据需求(send/recv或write/read)实现功能。中的方法:在一定条件下注册Network Direct Provider(NdV1Provider或者NdProvider)。2.2.1 注册Network Direct Provider。,找到所有的protocols,比较protocol中的。信息,找到Network Direct provider;来注册Network Direct Provider。

2024-10-24 14:51:24 525

原创 VS引用ws2def.h minwindef.h WinSock2.h时编译错误

涉及到windows网络编程,就引用了几个windows相关的库ws2def.h minwindef.h WinSock2.h,结果报错了,我就把所有cpp文件中除了#include 、#include 、#include (按照这个顺序包含头文件)以外的其他地方都注释掉,还是会报错。

2024-10-22 11:46:37 246

原创 DMA&RDMA

DMA全称为Direct Memory Access,即直接内存访问。意思是外设对内存的读/写过程可以不用CPU参与而直接进行。注意,并不是完全没有,cpu对读/写本身不控制,但是对读/写进行整体过程关注,而不是细节。2台电脑之间通过网路相连,相互之间发送大文件,就是RDMA的应用场景。传统网络的数据传输(如数据从电脑A到电脑B)的流程如下:电脑A上,在内存用户空间中的数据,需要经过CPU拷贝到内核空间的缓冲区中;

2024-10-18 21:14:51 860

原创 VS项目在release环境下开发时支持调试

项目在开发过程中,可能会使用各种各样的开发工具,例如VS,VS在编译生成EXE的过程中会默认编译的环境,release在默认的环境下是不支持开启调试功能(如下图),如果要开启调试功能,就需要修改VS在release环境下的配置。

2024-10-18 10:49:04 317

原创 win10+qt编译生成的exe文件在win server2019上发布时遇到的问题

解决办法:在qt的安装目录下找到对应的跨平台相关的文件,放在.exe相同的目录下。解决办法:在qt的安装目录下找到对应的dll文件,并放在exe相同的目录下。解决办法:在qt的安装目录下找到对应的dll文件,并放在exe相同的目录下。注意:不同的exe依赖的dll不同,根据报错的情况找到对应的dll。注意:不同的exe依赖的dll不同,根据报错的情况找到对应的dll。原因:exe依赖qt跨平台所需的库所在的文件。原因:exe依赖VC++相关的库。原因:exe依赖qt的库。

2024-10-17 16:08:28 308

原创 QT有用的资源

https://github.com/XMuli/QtExamples

2024-10-09 15:44:24 119

原创 qt5.9.9+vs2017环境配置

2种方法:一种是VS上直接搜索关于QT的插件;另一种是QT官网上下载。下找到vsaddin目录,然后进行下载后缀名为vsix的文件。

2024-10-08 15:57:20 459

原创 几种排序算法的比较

1.分类:非线性时间比较类排序:通过比较来决定元素间的相对位置关系,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间比较类排序:不通过比较来决定元素间的相对位置关系,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间比较类排序。2.复杂度3.算法相关概念稳定:如果arr[i] = arr[j],i < j,排序后arr[i],arr[j]位置没变化。不稳定:如果arr[i] = arr[j],i < j,排序后arr

2020-09-13 22:22:33 182

原创 插入排序

1.时间复杂度n*n2.逻辑分析总的来说,是将数组分为2个部分,一个是有序部分,另一个是无序部分。将无序部分的数据依次取出,插入到有序部分,最终形成排序后的数组。3.代码template <class T>void InsertArr(T* arr, int len){ for (int i = 1; i < len; ++i) { T temp = arr[i]; // 取出被比较值 int j = i - 1; for (; j >= 0

2020-09-13 18:43:17 96

原创 排序算法之冒泡排序

1.特点冒泡排序是实现起来最简单,运算复杂度为n^2的算法。2.代码template <class T>void printArr(T* arr, int len){ for (int i = 0; i < len; ++i) { cout << arr[i] << " "; } cout << endl;}template <class T>void BubbleSort(T* arr, int len

2020-09-09 00:08:40 109

原创 几种链表比较

1.链表分类链表可分为单链表,双链表,循环链表,双向循环链表和静态链表四大类。2.链表比较

2020-09-08 23:42:34 850

原创 链表之双链表

1.定义双链表是由一系列节点连接起来的数据结构,通过当前节点都可以找到前一个节点和下一个节点。2.特点使用方法,组成和内存存储方式等和单链表一样优点:可以找到某个节点的前驱和后继,可进可退。缺点:增加,删除节点复杂;因为每个节点的数据结构中多一个指针,所以多占一个指针的内存空间;3.实现template<class T> struct DNode {public: T value; DNode *prev; DNode *next;public: D

2020-09-08 23:33:16 444

原创 链表之单链表

1.定义单链表是由一系列连接在一起的节点构成,其中的每个节点都是一个数据结构。 2.使用方法单链表的节点通常是动态分配,使用和删除的,即单链表在程序运行时允许增大或缩小。3.组成非空单链表的第一个节点为单链表的头;每个节点由一个数据成员和一个指向下一个节点的指针(也被称为后继指针)组成,最后一个节点的后继指针被设置为nullptr表示链表的结束。 ...

2020-09-07 00:41:34 156

原创 数组

线性表之数组1.存储方式数组在内存中开辟一段连续的空间,按照先后顺序存储,前后相邻的两个元素之间的地址相邻。 2.数据的操作2.1读取找到需要读取的数据的位置pos,直接根据pos取值。2.2增加获取数组的大小,在数组的最后添加一个数据...

2020-09-06 18:13:53 90

原创 数据结构与算法的基本概念

书籍:c++数据结构与算法(第四版) Adam Drozdek著章节:第3章 链表3 综述:数组是程序设计语言自带的一种有效的组织数据的数据结构。但存在两个缺点,其一,程序在编译时需要知道数组的大小;其二,数据相邻,且连续存放,插入数据时,会移动部分其他的数据。相比之下,链表不存在上述两个缺点,因为链表存放的多个节点,每个节点的位置不固定,且每个节点信息里只有数据项和下个节点位置的指针...

2020-09-06 16:58:00 317

原创 超级指针的使用

一般来说,计算机程序分配内存在堆和栈上。在堆上的内存系统不会自动释放,需要人工释放,而在栈上的内存会自动释放。而,堆上的内存人工释放不是一件容易的事情,什么时刻释放和是否释放完全都是问题。本文模仿osg中osg::ref_ptr类,写了一个指针,自动释放分配的内存。// 声明一个类class Derive{public: Derive(){ std::cout <<...

2019-05-14 09:57:51 475

原创 基于g指针,d指针的数据隐藏

来自Qt源码中有关g指针和d指针的相关代码实例:// 第一段class Q_CORE_EXPORT QCoreApplication#ifndef QT_NO_QOBJECT: public QObject#endif{……Q_DECLARE_PRIVATE(QCoreApplication)public:……~QCoreApplication();……protect...

2019-05-13 21:06:42 114

空空如也

空空如也

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

TA关注的人

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