自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++链接FTP服务器并下载数据(在qt中编写)

点击列出文件则会将此目录下的文件显示到list中,下载全部没问题,单个下载需要选择文件,进行处理(未完全实现)

2024-07-16 16:52:27 458

原创 Qt 中的多线程管理方法详解及示例

在 Qt 中进行多线程编程有多种方式,每种方式都有其独特的特点和适用场景。

2024-07-15 20:55:59 725

原创 Qt加载第三方程序并将其显示在主界面中

embedExternalWindow(HWND hwnd, QWidget *parentWidget): 将外部窗口嵌入到Qt窗口中,设置外部窗口的父窗口和大小、位置。Widget(QWidget *parent = nullptr): 构造函数,设置窗口标题和大小,启动外部程序,并创建WindowChecker对象和子线程。EnumWindowsProc(HWND hwnd, LPARAM lParam): 回调函数,用于枚举所有顶层窗口,检查窗口是否属于目标进程并发出信号。

2024-07-15 14:58:32 874

原创 在线程中执行数据库的增删改查等操作(Qt)

【代码】在线程中执行数据库的增删改查等操作(Qt)

2024-07-15 14:32:32 177

原创 使用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

原创 Qt Creator 中 快捷键

基本编辑快捷键:代码导航和编辑:调试:项目和文件管理:窗口管理:

2024-07-06 16:11:31 1042

原创 常见的 Visual Studio 快捷键

基本编辑快捷键:代码导航和编辑:调试:窗口管理:代码重构和管理:项目和解决方案:窗口查看和调整:多光标和选择:

2024-07-06 16:09:22 979

原创 qmake 中常见的变量

这些变量在 qmake 项目文件中可以用来简化路径管理。这样可以确保项目在不同环境中的一致性和可移植性。

2024-07-06 16:03:42 270

原创 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

原创 插入排序(insertionSort)

插入排序是一种简单直观的排序算法,

2024-04-21 19:04:46 279

原创 选择排序(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语言读写文件和C++读写文件

C语言读取文件示例:(有文件则读取,将文件中的大写字母转换为小写字母,没有则创建,写入,在转换)

2024-04-21 00:58:30 509

原创 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如何加载飞行计划加载步骤

2022-11-10 15:36:41 325

原创 FlightGear航路点文件格式

FlightGear飞行计划文件格式

2022-11-10 15:21:52 355

原创 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

原创 配置xml文件来实现FlightGear通信,接收与发送数据

flightgear通信

2022-07-05 20:23:54 2483 8

QSSH编译的动态库,静态库,MSVC2017-64h和32,minGW64和32

QT5.14.2 MSVC2017 示例:sftp连接服务器并下载文件 QSSH源码

2024-07-23

FlightGear通信变量地址(里面附中文注释)

将文件内的变量与地址一一对应,配置在xml文件,将其放在FlightGear->data->Protocol目录下,在FlightGear操作界面的设置命令行中输入以下命令: --generic=socket,in,10,,8000,tcp,input(配置的输入xml文件) --generic=socket,out,10,192.168.3.125,8000,tcp,outfile(配置的输出xml文件) 可以通过udp/tcp等多种协议来与FlightGear进行通信,可以输出文件内变量的值,也可以通过输入指令来远程操控飞机以及改变其内部的一些参数

2022-07-07

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

TA关注的人

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