- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 C++链接FTP服务器并下载数据(在qt中编写)
点击列出文件则会将此目录下的文件显示到list中,下载全部没问题,单个下载需要选择文件,进行处理(未完全实现)
2024-07-16 16:52:27
458
原创 Qt加载第三方程序并将其显示在主界面中
embedExternalWindow(HWND hwnd, QWidget *parentWidget): 将外部窗口嵌入到Qt窗口中,设置外部窗口的父窗口和大小、位置。Widget(QWidget *parent = nullptr): 构造函数,设置窗口标题和大小,启动外部程序,并创建WindowChecker对象和子线程。EnumWindowsProc(HWND hwnd, LPARAM lParam): 回调函数,用于枚举所有顶层窗口,检查窗口是否属于目标进程并发出信号。
2024-07-15 14:58:32
874
原创 使用QPointer和D指针:在Qt中编写更安全、更模块化的代码
QPointer是一个智能指针,用于追踪Qt对象。它的主要功能是防止悬空指针(dangling pointer)问题。当所指向的对象被销毁时,QPointer会自动变为nullptr。D指针(也叫Pimpl idiom,Private Implementation)是一种用于实现信息隐藏和减少编译依赖的方法。在Qt中,D指针通常用来实现类的私有成员,以隐藏实现细节。myclass.h。
2024-07-14 12:20:48
355
原创 常见的 Visual Studio 快捷键
基本编辑快捷键:代码导航和编辑:调试:窗口管理:代码重构和管理:项目和解决方案:窗口查看和调整:多光标和选择:
2024-07-06 16:09:22
979
原创 Visual Studio 预定义宏
解决方案和项目目录相关宏:解决方案文件(.sln)所在的目录。:解决方案文件的完整路径。:解决方案文件的名称。:解决方案的名称(不包括扩展名)。:项目文件(.vcxproj)所在的目录。:项目文件的完整路径。:项目文件的名称。:项目的名称(不包括扩展名)。输出目录和文件相关宏$(OutDir):输出目录,通常是bin或build目录。$(IntDir):中间目录,通常是obj目录,用于存放中间文件(如对象文件)。:目标目录,即最终生成的文件(如可执行文件或库文件)所在的目录。
2024-07-06 15:47:10
1076
原创 归并排序(Merge Sort)
归并排序的关键步骤在于合并操作,通过不断比较和合并两个有序的子数组,最终得到一个排好序的数组。归并排序采用分治法思想,将原始数组分解为较小的子数组,然后递归地对子数组进行排序,最后将排好序的子数组合并成一个有序数组。归并排序采用分治法思想,将原始数组分解为较小的子数组,然后递归地对子数组进行排序,最后将排好序的子数组合并成一个有序数组。在合并过程中,需要比较两个子数组的元素大小,并依次将较小的元素添加到新的数组中,直到两个子数组全部合并完成。
2024-04-21 23:17:23
261
原创 快速排序(Quick Sort)
快速排序通过选择基准值,并通过分区操作将数组划分为左右两个子数组,然后对子数组进行递归排序,最终实现整个数组的排序。虽然快速排序在最坏情况下的时间复杂度较高,但在平均情况下具有较好的性能表现,因此被广泛地使用在各种排序场景中。快速排序的平均时间复杂度为O(n log n),其中n是待排序数组的长度。快速排序采用分治法思想,将原始数组划分为较小的子数组,然后递归地对子数组进行排序。通过分治法(Divide and Conquer)将原始数组划分为较小的子数组,然后递归地对子数组进行排序。
2024-04-21 22:52:31
290
原创 选择排序(selectionSort)
选择排序是一种简单直观的排序算法,其基本思想是:每次从未排序的元素中选取最小(或最大)的元素,放到已排序序列的末尾。
2024-04-21 18:49:41
355
原创 冒泡排序(Bubble Sort):
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序序列,依次比较相邻的两个元素,如果顺序不正确就交换它们,直到整个序列有序为止。第一轮遍历结束,最大的元素8已经移动到序列的末尾。接下来进行第二轮遍历,重复上述过程。举例说明: 考虑待排序序列:[5, 3, 8, 4, 2]冒泡排序虽然简单,但是效率较低,特别是对于大规模数据的排序。时间复杂度:O(n^2)。
2024-04-21 18:32:05
261
原创 C语言实现单链表
存储每个学生的学号、姓名和成绩,并使用单链表将学生信息连接起来。每个节点表示一个学生,包含学生信息和指向下一个节点的指针。通过调用不同的函数来实现不同的操作,如添加、删除、查找和修改学生信息。最后,主函数演示了如何使用这些功能来管理学生信息。
2024-04-18 13:34:58
272
原创 Map与Set容器的对比
综上所述,Map容器适用于需要维护键值对关系和快速查找键对应值的场景,而Set容器适用于存储一组唯一元素并进行快速查找和排序的场景。选择合适的容器取决于具体的需求和性能要求。5. map中的值可以重复,键不能重复,set中的值不能重复。
2024-04-18 13:04:16
299
原创 Map容器简介
Map是C++标准模板库(STL)中的一种关联容器,用于存储一组键值对(key-value)的数据。Map容器中的键是唯一的,而值可以重复。
2024-04-18 12:48:50
552
原创 Set容器简介
Set是C++标准模板库(STL)中的一种关联容器,用于存储一组不重复的元素,并且会自动对元素进行排序。Set容器的特点是元素不重复且有序。
2024-04-18 12:44:19
464
原创 Stack简介
简介: 在C++的标准模板库(STL)中,Stack(栈)是一种常用的容器,它遵循后进先出(LIFO)的原则,即最后进入栈的元素最先被移出栈。Stack提供了一种简单而高效的方式来管理数据,是处理后进先出数据流的理想选择。使用方法: 使用Stack容器非常简单,只需要包含头文件,然后通过创建Stack对象并调用其成员函数来进行操作。
2024-04-18 12:27:26
310
原创 Queue(队列)与Deque(双端队列)对比区别
Queue容器: Queue是一种基于FIFO(先进先出)原则的容器,它只支持在队尾添加元素和在队首删除元素的操作。Queue通常基于其他底层容器实现,如Deque或List。Deque容器: Deque是一种双端队列容器,支持在队头和队尾进行插入和删除操作,同时也支持随机访问元素。
2024-04-17 19:58:52
759
原创 Queue容器简介
使用方法: 使用Queue容器非常简单,只需要包含头文件<queue>,然后通过创建Queue对象并调用其成员函数来进行操作。简介: 在C++的标准模板库(STL)中,Queue(队列)是一种常用的容器,它遵循先进先出(FIFO)的原则,即最先进入队列的元素最先被移出队列。
2024-04-17 19:51:14
226
原创 Deque(双端队列)简介
/ 构造函数,创建一个空的deque容器deque();// 构造函数,创建一个包含n个元素的deque容器,每个元素的值都是value// 将另一个deque容器的元素拷贝到当前容器中// 析构函数,释放deque容器所占用的资源~deque();// 从deque容器中删除所有元素,使其大小变为0// 返回当前deque容器中的元素个数// 返回当前deque容器是否为空// 在deque容器的尾部插入一个元素// 在deque容器的头部插入一个元素。
2024-04-17 19:39:24
917
原创 UDP与TCP网络传输协议的区别
UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种常用的网络传输协议,它们各自具有不同的特性和适用场景。本文将深入比较UDP和TCP协议的特点、优缺点以及适用场景,帮助读者更好地选择合适的协议来满足需求。
2024-04-17 17:38:40
573
1
原创 Udp网络通信协议(windows)
UDP(用户数据报协议)与TCP(传输控制协议)相比具有以下优缺点:优点:1.UDP不涉及连接的建立和断开,因此通常具有比TCP更低的延迟,适用于对延迟要求较高的应用场景,如实时音视频传输、在线游戏等。2.UDP是一种无连接的协议,不需要在通信的开始阶段进行三次握手,也不需要在通信结束时进行四次挥手,因此通信开销较小,更适用于频繁发送小量数据的场景。3.UDP协议本身非常简单,实现起来比TCP更加轻量,可以更容易地集成到嵌入式系统或性能要求较高的应用中。缺点:1.
2024-04-17 17:33:17
1659
原创 Vector和List容器的区别
是两种常用的容器,各有优缺点,适用于不同的场景。了解它们的特性和适用场景,可以帮助我们更好地选择合适的容器来解决问题。在实际开发中,可以根据需求综合考虑性能、内存占用等因素,选择最合适的容器。
2024-04-17 17:26:01
559
原创 List容器简介
在C++的标准模板库(STL)中,list是一个双向链表实现的容器,它提供了高效的插入和删除操作,但在随机访问方面性能较差。本文将深入探讨list容器的特性、优点、缺点以及使用方法。
2024-04-17 17:17:12
1122
原创 Vector容器简介
容器是C++中非常常用的动态数组实现,它提供了高效的随机访问、尾部插入/删除等特性,适用于许多不同的场景。但是,在进行大规模中间插入/删除操作时,需要注意性能开销。是一个非常常用的容器,它提供了一种动态数组的实现,允许快速地随机访问元素,并在尾部进行高效地插入和删除操作。对象并调用其成员函数来进行操作。容器的特性和使用方法,可以帮助我们更好地利用它来解决问题。容器的特性、优点、缺点以及使用方法。在C++的标准模板库(STL)中,容器非常简单,只需要包含头文件。
2024-04-17 17:10:10
851
原创 基于windowns下的TCP网络通信编程
函数接受客户端的连接请求,并创建一个新的套接字用于与客户端通信。在接受连接之前,服务器会阻塞在这一步,直到有客户端连接上来。创建一个 sockaddr_in 结构体,并设置其中的地址族、IP地址和端口号,用于连接服务器。结构体,并设置其中的地址族、IP地址和端口号,用于绑定服务器的地址和端口。连接的建立和断开过程,确保了可靠的数据传输和连接状态的正确管理。),表示确认客户端的请求,并表示自己也想建立连接。),表示确认收到服务器的确认,连接建立成功。),表示确认收到服务器的请求,连接断开。
2024-04-17 16:50:21
2035
原创 select模型与epoll模型的相同点与不同点
模型都是基于事件驱动的网络编程模型,可以在有事件发生时通知程序进行处理,而不需要程序轮询检查。模型来说在性能和灵活性方面更加优越,特别适用于高并发的网络编程场景。相对复杂,调用方式更加灵活,需要使用多个系统调用函数来完成操作,而。模型,都可以用于实现高并发的服务器程序,处理大量并发连接。模型使用事件驱动的方式,在有事件发生时触发通知,而。模型需要轮询检查所有的文件描述符,效率较低。模型没有这个限制,可以支持更多的文件描述符。模型是跨平台的,几乎所有的操作系统都支持。特有的,不支持在其他操作系统上使用。
2024-04-17 16:31:58
288
原创 epoll模型简介(Linux)
模型可以提高网络编程的性能和并发能力,特别适用于需要处理大量并发连接的服务器端程序。使用事件驱动的方式,只在有事件发生时才触发通知,避免了轮询的开销,提高了效率。支持零拷贝技术,可以将数据从内核空间直接拷贝到用户空间,减少了数据复制的开销。允许将文件描述符和事件信息存储在用户空间,减少了系统调用的次数,提高了性能。在处理多线程编程时需要使用线程同步机制,比如互斥锁或信号量,编程复杂度较高。根据事件的类型进行相应的处理,比如接受新连接、接收数据等。支持同时监视大量的文件描述符,适用于高并发的网络编程场景。
2024-04-17 16:27:15
413
原创 select模型简介(windowns系统下的编程)
模型在大规模并发的场景下效率较低,因为需要遍历所有的文件描述符,性能随着监视的文件描述符数量增加而下降。模型适用于简单的网络编程需求,但在处理大规模并发连接时效率较低,不适合高性能的网络编程场景。模型每次都需要将监视的所有文件描述符传递给内核,效率较低,特别是在文件描述符数量较大时。模型支持监视多个文件描述符,并且可以通过设置超时参数来实现超时等待,具有一定的灵活性。函数,具有较好的可移植性,适用于各种不同平台的开发。函数,持续监视文件描述符的状态,直到程序结束。函数进行文件描述符的监视,等待有事件发生。
2024-04-17 16:17:51
380
原创 线程池的编程步骤(基于Windows下的编程)
线程池模型的服务器通常用于处理并发连接,它通过预先创建一组线程来处理传入的连接请求,从而避免了频繁创建和销毁线程的开销。当不再需要服务器时,关闭监听套接字,停止接受新的连接请求,并等待线程池中的所有任务执行完成后,释放资源并关闭线程池。线程池中的线程从任务队列中取出任务,并执行相应的处理,例如处理客户端连接或执行其他任务。开始监听传入的连接请求。创建一个包含固定数量线程的线程池。创建一个任务队列,用于存储客户端的连接请求或需要处理的任务。线程池需要管理线程的生命周期,包括线程的创建、销毁和复用等。
2024-04-17 16:10:52
403
原创 Vscode编译C++代码报错undefined reference to `WinMain@16‘
使用g++编译代码报错:解决办法:先保存代码后编译。
2023-11-30 18:40:58
381
原创 VScode配置C/C++编译环境
1.下载安装VScode;2.下载安装MinGW编译器;3.将安装好的MinGW编译器中的bin文件夹配置为环境变量;
2023-02-03 00:27:29
1013
1
原创 FlightGear命令行参数
如果需要重复使用一些命令,可以将他们放在一个参数选择文件中。由于不同人有不同的需要,所以这些参数设置没有被放在FlightGear中,但是可以用文本编辑器(记事本等)来创建它们。下面内容是关于FlightGear 各种命令行参数的详细解释和介绍。大部分命令都可在Windows 下的FlightGear 向导程序中完成。各种输入输出参数的详细描述可以在FlightGea安装目录的Docs文件夹README.IO中找到。...
2022-09-01 08:38:03
1548
原创 编写QT代码实现与FlightGear通信
QT文件的创建此处略过,qt网络通信需在pro文件中添QT += network这个命令,否则找不到网络通信相关的头文件不会配置FlightGear通信配置的请查看下面章节:配置xml文件来实现FlightGear通信,接收与发送数据_残梦5314的博客-优快云博客 .cpp文件.........
2022-07-11 17:10:36
1142
4
FlightGear通信变量地址(里面附中文注释)
2022-07-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人