Windows图形界面(GUI)-QT-C/C++ - QT 对话窗口
- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
模态对话框
非模态对话框
文件对话框
基本概念
静态函数
常见属性
颜色对话框
基本概念
静态函数
常见属性
字体对话框
基本概念
静态函数
常见属性
输入对话框
基本概念
静态函数
消息对话框
基本概念
静态函数
-
模态对话框
-
模态对话框是指在打开后,用户必须与该对话框交互并关闭它,才能返回到主窗口或其他窗口进行操作。在模态对话框打开期间,主窗口和其他窗口都不可用。
-
模态对话框通常用于需要用户立即处理的情况,如确认对话框、错误提示、设置窗口等。
-
在 Qt 中,可以通过
QDialog
类实现模态对话框。你可以使用exec()
方法来显示模态对话框。
-
void MainWindow::on_pushButton_clicked()
{QDialog dlg(this);QPushButton* btn = new QPushButton("on_pushButton_clicked", &dlg);dlg.exec();
}void MainWindow::on_pushButton_3_clicked()
{Dialog1 dlg(this);dlg.exec();
}
-
非模态对话框
-
非模态对话框是指在打开后,用户可以自由地与主窗口或其他窗口交互,而不必首先关闭该对话框。
-
非模态对话框适用于不需要立即处理的情况,如工具窗口、搜索窗口等。
-
在 Qt 中,可以通过
QDialog
类实现非模态对话框。你可以使用show()
方法来显示非模态对话框。
-
void MainWindow::on_pushButton_2_clicked()
{QDialog* dlg = new QDialog(this);dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();
}void MainWindow::on_pushButton_4_clicked()
{Dialog2* dlg = new Dialog2(this);dlg->show();
}
-
文件对话框
-
基本概念
-
QFileDialog:一个用于选择文件或目录的对话框。
-
静态函数:
QFileDialog
提供了一些静态函数,可以快速创建和显示文件对话框。 -
模式:文件对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
-
getOpenFileName
:选择一个文件进行打开。 -
getSaveFileName
:选择一个文件进行保存。 -
getExistingDirectory
:选择一个目录。 -
getOpenFileNames
:选择多个文件进行打开。
-
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setDirectory:设置对话框的初始目录。
-
setNameFilter:设置文件过滤器。
-
setFileMode:设置文件模式(例如,选择单个文件、多个文件、目录等)。
-
setOption:设置对话框的选项(例如,显示隐藏文件、不解析符号链接等)。
-
-
getOpenFileName
用于选择一个文件进行打开。-
函数原型
QString QFileDialog::getOpenFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_5_clicked() {QString fileName = QFileDialog::getOpenFileName(this,"Open File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName; }
-
-
-
getSaveFileName
用于选择一个文件进行保存。-
函数原型
QString QFileDialog::getSaveFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_7_clicked()
{QString fileName = QFileDialog::getSaveFileName(this,"Save File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}
-
getExistingDirectory
用于选择一个目录。-
函数原型
QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),Options options = ShowDirsOnly )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
options
:对话框选项,例如QFileDialog::ShowDirsOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_8_clicked()
{QString dir = QFileDialog::getExistingDirectory(this,"Open Directory","D:\\Debug",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);qDebug() << dir;
}
-
getOpenFileNames
用于选择多个文件进行打开。-
函数原型
QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_6_clicked()
{QStringList fileName = QFileDialog::getOpenFileNames(this,"Open Files","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}
-
颜色对话框
-
基本概念
-
QColorDialog:一个用于选择颜色的对话框。
-
静态函数:
QColorDialog
提供了一些静态函数,可以快速创建和显示颜色对话框。 -
模式:颜色对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
getColor
:选择一个颜色。
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setCurrentColor:设置初始颜色。
-
currentColor:获取当前选中的颜色。
-
-
getColor
函数获取颜色-
函数原型
QColor QColorDialog::getColor(const QColor &initial = Qt::white,QWidget *parent = nullptr,const QString &title = QString(),ColorDialogOptions options = ColorDialogOptions() )
-
参数说明
-
initial
:初始颜色。默认为Qt::white
。 -
parent
:父窗口,用于模态对话框的父窗口。 -
title
:对话框的标题。默认为空字符串。 -
options
:对话框选项。可以是QColorDialog::ShowAlphaChannel
或其他选项的组合。
-
-
示例代码
-
void MainWindow::on_pushButton_9_clicked()
{QColor color = QColorDialog::getColor(Qt::white, this, "Select Color");if(color.isValid()){ui->pushButton_9->setStyleSheet("color:" + color.name() + ";");qDebug() << color.name();}}
-
字体对话框
-
基本概念
-
QFontDialog:一个用于选择字体的对话框。
-
静态函数:
QFontDialog
提供了一些静态函数,可以快速创建和显示字体对话框。 -
模式:字体对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
getFont
:选择一个字体。
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setCurrentFont:设置初始字体。
-
currentFont:获取当前选中的字体。
-
-
getFont
:选择一个字体。-
函数原型
QFont QFontDialog::getFont(bool *ok,const QFont &initial = QFont(),QWidget *parent = nullptr,const QString &title = QString(),FontDialogOptions options = FontDialogOptions() )
-
参数说明
-
ok
:一个布尔指针,用于指示用户是否确认了选择。如果用户确认了选择,*ok
将被设置为true
,否则为false
。 -
initial
:初始字体。默认为空字体(QFont()
)。 -
parent
:父窗口,用于模态对话框的父窗口。 -
title
:对话框的标题。默认为空字符串。 -
options
:对话框选项。可以是QFontDialog::NoButtons
或其他选项的组合。
-
-
示例代码
-
void MainWindow::on_pushButton_10_clicked()
{bool ok;QFont font = QFontDialog::getFont(&ok,QFont("Helvetica [Cronyx]", 10),this,"Select Font");if(ok){ui->pushButton_10->setFont(font);qDebug() << font.family();}}
-
输入对话框
-
基本概念
-
QInputDialog:一个用于获取用户输入的对话框。
-
输入类型:可以输入的类型包括字符串(text)、整数(int)、浮点数(double)等。
-
-
静态函数
-
getText:获取字符串输入。
-
函数原型
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags() )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
mode
:输入框的回显模式,例如普通模式(QLineEdit::Normal
)或密码模式(QLineEdit::Password
)。 -
text
:输入框的初始文本。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
-
getInt:获取整数输入。
int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()
)
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
value
:输入框的初始值。 -
min
:输入的最小值。 -
max
:输入的最大值。 -
step
:输入框的步长。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
getDouble:获取浮点数输入。
-
函数原型
-
double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags() )
-
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
value
:输入框的初始值。 -
min
:输入的最小值。 -
max
:输入的最大值。 -
decimals
:输入框的小数位数。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
getItem:从一个项目列表中获取选择。
-
函数原型
QString QInputDialog::getItem( QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags() )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
items
:项目列表,用户可以从中选择。 -
current
:初始选中的项目索引。 -
editable
:是否允许用户输入自定义文本。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
- 示例代码
-
void MainWindow::on_pushButton_11_clicked() {bool ok;QString text = QInputDialog::getText(this,"input dialog","please input your name:",QLineEdit::Normal,"0xCC",&ok );if(ok && !text.isEmpty()){qDebug() << text;}}void MainWindow::on_pushButton_12_clicked() {bool ok;int value = QInputDialog::getInt(this,"input dialog","please input your age:",18,0,120,1,&ok);if(ok) qDebug() << value; }void MainWindow::on_pushButton_13_clicked() {bool ok;QStringList items;items << "apple" << "banana";QString item = QInputDialog::getItem(this,"input dialog","please select a fruit",items,1,false,&ok);if(ok) qDebug() << item; }
-
-
-
消息对话框
-
基本概念
-
QMessageBox:一个用于显示消息的对话框。
-
消息类型:包括信息(Information)、警告(Warning)、错误(Critical)、询问(Question)等。
-
-
静态函数
-
information:显示信息消息。
-
函数原型
int QMessageBox::information(QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
warning:显示警告消息。
-
函数原型
int QMessageBox::warning( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
-
critical:显示错误消息。
-
函数原型
int QMessageBox::critical( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
question:显示询问消息。
-
函数原型
int QMessageBox::question( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口,可以是nullptr
表示没有父窗口。 -
title
:对话框的标题。 -
text
:对话框中显示的主要消息文本。 -
button0
:对话框中的第一个按钮,使用QMessageBox::StandardButton
枚举值。 -
button1
:对话框中的第二个按钮(可选),使用QMessageBox::StandardButton
枚举值。 -
button2
:对话框中的第三个按钮(可选),使用QMessageBox::StandardButton
枚举值。
-
-
示例代码
-
void MainWindow::on_pushButton_14_clicked() {QMessageBox::information(this, "information", "This is a information message", QMessageBox::Ok); }void MainWindow::on_pushButton_15_clicked() {QMessageBox::warning(this, "warning", "This is a warning message"); }void MainWindow::on_pushButton_16_clicked() {QMessageBox::critical(this, "critical", "This is a critical message"); }void MainWindow::on_pushButton_17_clicked() {int ret = QMessageBox::question(this, "question", "Are you want to continue?");if(ret == QMessageBox::Yes){QMessageBox::information(this, "information", "your chose yes");}else{QMessageBox::information(this, "information", "your chose no");} }
-
相关文章:
Windows图形界面(GUI)-QT-C/C++ - QT 对话窗口
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 模态对话框 非模态对话框 文件对话框 基本概念 静态函数 常见属性 颜色对话框 基本概念 静态函数 常见属性 字体对话框 基本概念 静态函数 常见属性 输入对话框 基本概念 …...
Java语言的数据结构
Java语言中的数据结构 引言 在计算机科学中,数据结构是指一种特定的方式来组织和存储数据,以便能够高效地进行访问和修改。Java作为一种广泛使用的编程语言,其内置的数据结构和集合框架为程序员提供了便利的工具来管理数据。本文将深入探讨…...

【12】Word:张老师学术论文❗
目录 题目 NO2 NO3 NO4 NO5 NO6 NO7.8 题目 NO2 布局→页面设置→纸张:A4→页边距:上下左右边距→文档网格:只指定行网格→版式:页眉和页脚:页脚距边界:1.4cm居中设置论文页码:插入…...

大疆最新款无人机发布,可照亮百米之外目标
近日,DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列,包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起,DJI Matrice 4T价格为38888元起。 图片来源:大疆官网 DJI Matrice 4E DJI Matrice 4T D…...

《小迪安全》学习笔记05
目录 读取: 写入: (其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互) 好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始…...

56_多级缓存实现
1.查询Tomcat 拿到商品id后,本应去缓存中查询商品信息,不过目前我们还未建立Nginx、Redis缓存。因此,这里我们先根据商品id去Tomcat查询商品信息。此时商品查询功能的架构如下图所示。 需要注意的是,我们的OpenResty是在虚拟机,Tomcat是在macOS系统(或Windows系统)上,…...

每日进步一点点(网安)
今日练习题目是PHP反序列化,也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式,以便在不同系统和应用程序之间进行传输或存储 在PHP中&…...

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常
宝塔的依赖问题导致的问题,最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语~ 建议:不要一直升级宝塔版本,升级前备份或者开服务商的实例镜像,方便恢复,不然,可就GG了࿵…...
SDL2:PC端编译使用
SDL2:PC端编译使用 1. SDL2:PC端编译使用1.1 安装必要的依赖1.2 下载编译SDL21.3 SDL2使用示例:Audio1.4 运行示例程序 1. SDL2:PC端编译使用 1.1 安装必要的依赖 首先,确保安装了编译SDL2所需的依赖库: …...

Windows 蓝牙驱动开发-蓝牙设备栈
蓝牙设备栈 蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 有了这个堆栈,已启用蓝牙的设备可以彼此定位并建立连接。 在此类连接中,设备可以通过各种应用程序交换数据并彼此交互。 下图显示了蓝牙驱动程序堆栈中的模块,以…...

docker一张图理解
1、push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。参数说明: –disable-content-trust : 忽略镜像的校验,默认开启 # 上传本地镜像myapache:v1到镜像仓库中。 docker push myapache:v1 1.2、search 从Docker Hub查找镜像。参数说明: –…...
RocketMQ、Kafka、RabbitMQ,如何选型?
如何根据应用场景选择合适的消息中间件? 分布式、微服务、高并发架构中,消息队列(Message Queue,简称MQ)扮演着至关重要的角色。 消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。 目前常见的MQ实现包括RabbitMQ、Rock…...

RabbitMQ故障全解析:消费、消息及日常报错处理与集群修复
文章目录 前言:1 消费慢2 消息丢失3 消息重复消费4 日常报错及解决4.1 报错“error in config file “/etc/rabbitmq/rabbitmq.config” (none): no ending found”4.2 生产者发送消息报错4.3 浏览器打开IP地址,无法访问 RabbitMQ(白屏没有结…...

无公网IP 实现外网访问本地 Docker 部署 Navidrome
Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…...
pnpm add 和 pnpm install 的区别?
文章目录 1. pnpm add2. pnpm install3. 总结应用场景示例 在使用 pnpm 管理项目依赖时, pnpm add 和 pnpm install 是两个常用的命令,但它们的功能和使用场景有所不同。以下是详细的解释: 1. pnpm add 功能:用于向项目的 pack…...

Linux:文件描述符fd、系统调用open
目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说,如果在电脑上新建了一个空白文档࿰…...

CPU负载与CPU使用率之区别
在日常的性能测试与系统监控中,CPU负载和CPU使用率是两个常见的指标,它们经常被提及,但也经常被混淆。本文将为你深入解析两者的区别,以及它们各自的意义和应用场景,让你更清楚地掌握这些关键性能指标。 存储、内存和 …...
C++实现设计模式---外观模式 (Facade)
外观模式 (Facade) 外观模式 是一种结构型设计模式,为子系统中的一组接口提供一个一致的界面。外观模式定义了一个更高层次的接口,使得子系统更容易使用。 意图 简化复杂子系统的接口。为客户端提供一个统一的入口,屏蔽子系统的内部细节。 …...

仿射密码实验——Python实现(完整解析版)
文章目录 前言实验内容实验操作步骤1.编写主程序2.编写加密模块3.编写解密模块4.编写文件加解密模块 实验结果实验心得实验源码scirpt.pyusefile.py 前言 实验目的 1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换…...

【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)
按钮控件继承自抽象类QAbstractButton。 抽象类不允许实例化对象,内部定义纯虚函数。只能通过子类继承,重写纯虚函数的方式使用。 1. QPushButton 1.1 QAbstractButton中和QPushButton相关的属性 text按钮显示文本icon按钮图标iconSize按钮图标尺寸s…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...