C++单例模式 单例:一个类只能创建一个对象实现步骤:1.将构造函数声明为类的私有成员 private;2.通过静态成员函数申请对象空间 ,并返回地址;3.定义一个静态变量标记,记录对象的个数,该静态成员变量是开关变量,通过控制这个静态标记达到控制只创建一个对象的目的;4.在析构函数中,将静态变量标记置成1,达到重复利用该静态变量标记目的;源代码:#include <iostream>using namespace std;// 单例模式,一个类只能创建一个对象class
Qt 多线程实现网络发送文件小功能 客户端给服务器发送文件,服务器进行接收文件的简单操作1. 服务器 1. 创建QTcpServer 类的对象QTcpServer * server = new QTcpServer(this); 2. 进行监听bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0) 3. 通过接收 QTcpServer 发出的...
Qt 简易版群聊器小功能 1. 群成员界面设计:在 signin.cpp 中的构造函数中 创建按钮// 1. 设置窗口名字、图标 this->setWindowTitle("QQ群聊器"); this->setWindowIcon(QIcon(":/img/qq_副本.png")); // 创建两个容器 分别存放网名 图片名 QList<QString> nameList; // 网名列表 nameList << "星..
Qt 视频播放器 1. 界面布局:2. 调用 API 播放视频加载视频播放模板在 widget.h 中widget.cpp 中// 在构造函数处编写代码 // 实例化播放视频对象 this->player = new QMediaPlayer(this); // 实例化播放视频框框 this->videoWidget = new QVideoWidget(this); // 设置播放视频框框的大小 this->video...
Qt 制作简易版音乐播放器 1. 界面设计:2. 设置背景图片// 1.重写绘图事件void Widget::paintEvent(QPaintEvent *event){ // 声明画家 QPainter painter(this); QPixmap pix = QString(":/img/002.jpeg"); // 设置图片伸缩 pix.scaled(this->width(), this->height()); // 贴背景图片 paint
两个栈实现一个队列的功能 1. 栈:是限制的线性表插入删除必须在同一端完成。栈的特点:先进后出:入栈将数据沉入栈底,最上面的一个数据是栈顶,获取栈顶元素Top,之后要进行Pop 删除栈顶,才可以取到第二个数据。2. 队列:也是对线性表的一种限定,规定插入删除数据必须在异端完成。队列的特点: 先进先出,存数据的一端叫队尾,出数据的一端叫队头;入队:存数据; 出队:删除数据3. 利用两个栈实现一个队列的功能 -- 思路:...
平衡二叉树 4种旋转操作:1. 左左旋(LL)2. 左右旋(LR)3. 右右旋(RR)4. 右左旋(RL)创建二叉树实现下图操作:实现代码:#include <stdio.h>#include <stdlib.h>// 平衡二叉树,首先是有序二叉树,任意子树的高度差都小于等于1。// 定义二叉树节点结构体 typedef struct TreeNode{ int data; // 数据域 int height; // 记录...
UDP/IP 异步选择模型 实现步骤:异步选择模型是基于Windows消息机制的,也就是消息队列,Windows操作系统会为每个窗口创建一个消息队列并且维护1. 创建窗口: 创建窗口步骤: 第一步:创建窗口结构体:typedef struct tagWNDCLASSEXW { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int ...
二叉树遍历 有二叉树如下图:实现前序遍历(根左右): 1 2 4 3 5 7 8 9 6实现中序遍历(左根右): 4 2 1 7 5 9 8 3 6实现后序遍历(左右根): 4 2 7 9 8 5 6 3 1实现层...
UDP/IP 事件选择模型 事件选择模型核心:为每一个socket创建一个事件对象,将socket和对应的事件对象绑定到一起,并投递给操作系统,由操作系统帮我们进行监视,当对应的socket有响应,该对应的事件会被置成有信号,我们获取该信号,进行分类处理。UDP/IP 事件选择模型:UDP/IP 是面向非连接的,不可靠的,基于数据报的传输层协议;对于服务端只有一个socket(服务端socket),直接创建一个事件对象,将该socket和对应的事件对象进行绑定,并投递给系统,之后等待信号,获取信号,之后进行分类处理。
UDP/IP select模型 select模型服务端代码:UDP/IP: UDP/IP协议的C/S模型不存在傻等的问题,而select模型只是能让recvfrom更灵活一些 select 代码逻辑: 1.所有的socket装进一个集合FD_SET UDP只有一个socket即将服务端的socket装进集合中就可以了 2.通过select函数,检测中的socket集合中...
二叉树实现 中序遍历实现数组元素排序struct data arr[6] = { 100, "aa", 50, "bb", 40, "cc", 120, "dd", 110, "oo", 130, "qq" };实现输出:arr[6] = { 40, "cc", 50, "bb",100, "aa", 110, "oo", 120, "dd", 130, "qq" };代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#in.
UDP/IP 基本C/S模型 UDP/IP 与 TCP/IP的区别:TCP/IP协议的特点: 面向连接的,可靠的,基于字节流的传输层协议。UDP/IP协议的特点: 面向非连接的,不可靠的,基于数据报的传输层协议。基本C/S模型 TCP/IP 服务端与客户端是 1对1关系;UDP/IP 服务端与客户端 可以是1对1,1对多 关系。基本C/S模型中服务端代码: UDP/IP: 是面向非连接的,所以不进行listen、a...
二叉树的存与遍历 实现如下图的中序遍历利用栈实现中序遍历:声明二维数组 类型为 struct treeNode* 定义一个移动的指针节点,记录要遍历的节点进行入栈、出栈代码:#include <stdio.h>#include <stdlib.h>/* 二叉树:是树形结构的一个重要类型 二叉树特点:是每个节点最多只能有两颗子树,且有左右之分 二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root) 的元素以及两不相交的、被分别称为左子树和.
队列 -- 双向循环链表实现 代码:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>/* 队列--双向循环链表实现 通过对线性表的插入删除操作在异端完成 比如: 头插入对应的是尾删除 尾插入对应的是头删除 出数据的一端是队头,进数据的是队尾 栈: 先进后出 队列: 先进先出*/// 创建双向循环链表节点struct Node{ int a; struct Node* pPr.
TCP/IP 完成端口 完成端口是对重叠IO的直接优化在重叠IO上进行优化:1.创建完成端口HANDLE WINAPI CreateIoCompletionPort( _In_ HANDLE FileHandle, // 填 INVALID_HANDLE_VALUE _In_opt_ HANDLE ExistingCompletionPort, // 对现有i/o完成端口或空的句柄。 填NULL _In_ ULONG_PTR CompletionKey, // 填0
栈--双向循环链表实现 代码:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>/* 栈 用双向循环链表实现栈 栈:是通过对线性表的插入删除操作在同一端完成(头添加,头删除 或者 尾添加,尾删除) 栈的特点: 先进先出 操作的一端叫栈顶,另一端叫栈底 栈的功能: 1.创建栈 stack 【C语言就是一个栈指针,相当于链表的头或者尾指针】 2.判断栈是否为空 isEmpty 【一.