当前位置: 首页 > news >正文

QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

输入类控件既可以进行显示,也能让用户输入一些内容!

文章目录

  • 1.Line Edit
    • 1.1 用户输入个人信息
    • 1.2 基于正则表达式的文本限制
    • 1.3 验证两次输入的密码是否一致
    • 1.4 让输入的密码可以被查看
  • 2.Text Edit
    • 2.1 输入和显示同步
    • 2.1 其他信号出发情况
  • 3.ComboBox
    • 3.1 模拟高考志愿选择
    • 3.2 通过加载文件的方式填充下拉框
  • 4.SpinBox
  • 5.DateEdit &TimeEdit & DateTimeEdit
    • 时间计算器(两个时间相隔多少天/多少小时)
  • 6.Dial
    • 通过Dial修改窗口的透明度
  • 7.Slider
    • 7.1利用滑动条调整窗口的大小
    • 7.2利用滑动条调整窗口的大小(利用快捷键)
  • 总结


1.Line Edit

QLineEdit ⽤来表⽰单⾏输⼊框.可以输⼊⼀段⽂本,但是不能换⾏.

属性说明
text输⼊框中的⽂本
inputMask输⼊内容格式约束
maxLength最⼤⻓度
frame是否添加边框
echoMode显⽰⽅式.(比如输入密码那种,输入的文本会被*代替!)
cursorPosition光标所在位置
alignment⽂字对⻬⽅式,设置⽔平和垂直⽅向的对⻬.
dragEnabled是否允许拖拽
readOnly是否是只读的(不允许修改)
placeHolderText当输⼊框内容为空的时候,显⽰什么样的提⽰信息
clearButtonEnabled是否会⾃动显⽰出"清除按钮".

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
void cursorPositionChanged(int old, int new)当⿏标移动时发出此信号,old为先前的位置,new为新位置。
void editingFinished()当按返回或者回⻋键时,或者⾏编辑失去焦点时,发出此信号。
void returnPressed()当返回或回⻋键按下时发出此信号.如果设置了验证器,必须要验证通过,才能触发.
void selectionChanged()当选中的⽂本改变时,发出此信号。
void textChanged(const QString &text)当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改能够触发这个信号.
void textEdited(const QString &text))当QLineEdit中的⽂本改变时,发出此信号,text是新的⽂本。代码对⽂本的修改不能触发这个信号.

1.1 用户输入个人信息

在这里插入图片描述

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//第一个学校输入框ui->lineEdit_school->setPlaceholderText("请输入你的学校级别(985,211,一本,二本,专科,其他)");ui->lineEdit_school->setClearButtonEnabled(true);  //输入信息后最后面有个叉叉,可以取消输入内容//第二个专业输入框ui->lineEdit_major->setPlaceholderText("请输入你的所学专业(例:通信工程、计算机技术与科学)");ui->lineEdit_major->setClearButtonEnabled(true);//第三个输入框ui->lineEdit_money->setPlaceholderText("请输入你的期望薪资,我们将对此保密");ui->lineEdit_money->setEchoMode(QLineEdit::Password);//第五个输入框ui->lineEdit_tel->setPlaceholderText("请输入你的电话(11位)");ui->lineEdit_tel->setClearButtonEnabled(true);ui->lineEdit_tel->setInputMask("000-0000-0000");//设置输入格式,0代表只能输入数字,严格限制11位
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QString gender = ui->radioButton_man->isChecked()?"男":"女";qDebug() << "学校级别:" << ui->lineEdit_school->text() << "\n"<<  "所学专业:" << ui->lineEdit_major->text() << "\n"<<  "期望薪资:" << ui->lineEdit_money->text() << "\n"<< "性别:" << gender << "\n"<< "电话"  << ui->lineEdit_tel->text();
}

1.2 基于正则表达式的文本限制

inputMask的功能比较有限,只能进行简单的验证
如果想要更好的约束文本,就需要使用到正则表达式
正则表达式本质上就是一个带有特殊字符的字符串,特殊字符用来表示另一个字符串的特征。借助正则表达式就可以描述出具有一定特点的字符串。
正则表达式文档:https://learn.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/ae5bf541(v=vs.90)?redirectedfrom=MSDN
链接: 正则表达式文档
正则表达式测试工具: https://regextester.buyaocha.com/
链接: 正则表达式测试工具

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#include <QRegExpValidator>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//需要给输入框设置验证器,基于正则表达式完成验证QRegExp regExp("^1\\d{10}$");ui->lineEdit->setValidator(new QRegExpValidator(regExp));//设置验证器
}Widget::~Widget()
{delete ui;
}void Widget::on_lineEdit_textEdited(const QString &text)
{QString content = text;int pos = 0;if(ui->lineEdit->validator()->validate(content,pos) == QValidator::Acceptable){//验证通过ui->pushButton->setEnabled(true);}else{//验证不通过ui->pushButton->setEnabled(false);}
}

1.3 验证两次输入的密码是否一致

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//初始化两个密码框ui->lineEdit->setEchoMode(QLineEdit::Password);ui->lineEdit_2->setEchoMode(QLineEdit::Password);ui->label_title->setText("请输入密码!");
}Widget::~Widget()
{delete ui;
}void Widget::compare()
{const QString& s1 = ui->lineEdit->text();const QString& s2 = ui->lineEdit_2->text();if(s1.isEmpty() && s2.isEmpty()) {ui->label_title->setText("密码为空");}else if(s1 == s2) {ui->label_title->setText("密码设置成功!");}else{ui->label_title->setText("两次密码不一致,请检查!");}
}void Widget::on_lineEdit_textEdited(const QString &arg1)
{this->compare();
}void Widget::on_lineEdit_2_textEdited(const QString &arg1)
{this->compare();
}

在这里插入图片描述

1.4 让输入的密码可以被查看

在这里插入图片描述
只需要在1.3代码的基础上加入一个checkBox的槽函数即可!

void Widget::on_checkBox_toggled(bool checked)
{if(checked){ui->lineEdit->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit->setEchoMode(QLineEdit::Password);}
}void Widget::on_checkBox_2_toggled(bool checked)
{if(checked){ui->lineEdit_2->setEchoMode(QLineEdit::Normal);}else{ui->lineEdit_2->setEchoMode(QLineEdit::Password);}
}

2.Text Edit

QTextEdit表⽰多⾏输⼊框.也是⼀个富⽂本&markdown编辑器.
并且能在内容超出编辑框范围时⾃动提供滚动条.

属性说明
markdown输⼊框内持有的内容.⽀持markdown格式.能够⾃动的对markdown⽂本进⾏渲染成html
html输⼊框内持有的内容.可以⽀持⼤部分html标签.包括img和table等.
placeHolderText输⼊框为空时提⽰的内容.
readOnly是否是只读的
undoRedoEnable是否开启undo/redo功能.;按下ctrl+z触发undo;按下ctrl+y触发redo
autoFormating开启⾃动格式化.
tabstopWidth按下缩进占多少空间
overwriteMode是否开启覆盖写模式
acceptRichText是否接收富⽂本内容
verticalScrollBarPolicy垂直⽅向滚动条的出现策略
horizontalScrollBarPolicy⽔平⽅向滚动条的出现策略

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
textChanged()⽂本内容改变时触发
selectionChanged()选中范围改变时触发
cursorPositionChanged()光标移动时触发
undoAvailable(bool)可以进⾏undo操作时触发
redoAvailable(bool)可以进⾏redo操作时触发
copyAvaiable(bool)⽂本被选中/取消选中时触发

2.1 输入和显示同步

即在多行输入框中输入什么,标签lebel就显示什么
这里主要展示了textChanged信号的触发情况,即文本改变时就会触发!
在这里插入图片描述

void Widget::on_textEdit_textChanged()
{const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);
}

2.1 其他信号出发情况

这里展示了其他信号的情况
比如撤销,恢复,文字是否被选中,选择的范围,光标的位置等等。

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_textEdit_textChanged()
{const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);
}void Widget::on_textEdit_selectionChanged()
{//选择范围的提示,cursor对象得到当前光标的相关情况QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "选择范围改变:"<< cursor.selectedText();
}void Widget::on_textEdit_cursorPositionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "光标到位置变到:" << cursor.position();
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "撤销情况:" << b;
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "恢复情况:" << b;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "文本被选中情况:" << b;
}

在这里插入图片描述

3.ComboBox

QComboBox 表⽰下拉框.

属性说明
currentText当前选中的⽂本
currentIndex当前选中的条⽬下标.
editable是否允许修改
frame是否添加边框
iconSize下拉框图标(⼩三⻆)的⼤⼩
maxCount最多允许有多少个条⽬

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心方法说明
addItem(constQString&)添加⼀个条⽬
currentIndex()获取当前条⽬的下标从0开始计算.如果当前没有条⽬被选中,值为-1
currentText()获取当前条⽬的⽂本内容.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
activated(int),activated(constQString&text)当⽤⼾选择了⼀个选项时发出.这个时候相当于⽤⼾点开下拉框,并且⿏标划过某个选项.此时还没有确认做出选择.
currentIndexChanged(int),currentIndexChanged(constQString&text)当前选项改变时发出.此时⽤⼾已经明确的选择了⼀个选项.⽤⼾操作或者通过程序操作都会触发这个信号.
editTextChanged(constQString& text)当编辑框中的⽂本改变时发出(editable为true时有效)

3.1 模拟高考志愿选择

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->comboBox->addItem("清华大学");ui->comboBox->addItem("北京大学");ui->comboBox->addItem("国防科技大学");ui->comboBox->addItem("上海交通大学");ui->comboBox_2->addItem("计算机学院");ui->comboBox_2->addItem("通信与信息工程学院");ui->comboBox_2->addItem("微电子学院");ui->comboBox_2->addItem("人工智能学院");ui->comboBox_3->addItem("计算机技术与科学");ui->comboBox_3->addItem("通信工程");ui->comboBox_3->addItem("物联网技术");ui->comboBox_3->addItem("电子信息工程");ui->comboBox_3->addItem("人工智能技术");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << ui->comboBox->currentText()<< ","<< ui->comboBox_2->currentText()<< ","<< ui->comboBox_3->currentText();
}

在这里插入图片描述

下拉框还可以直接在ui界面内添加内容!
在这里插入图片描述

3.2 通过加载文件的方式填充下拉框

下拉框里的内容,很多时候不是代码写死的,而是通过网络/文件/加载数据得到的!
在这里插入图片描述

4.SpinBox

使⽤QSpinBox 或者QDoubleSpinBox 表⽰"微调框",它是带有按钮的输⼊框.可以⽤来输⼊整数/浮点数.通过点击按钮来修改数值⼤⼩.

属性说明
value存储的数值.
singleStep每次调整的"步⻓".按下⼀次按钮数据变化多少.
displayInteger数字的进制.例如displayInteger设为10,则是按照10进制表⽰.设为2则为2进制表⽰
minimum最⼩值
maximum最⼤值
suffix后缀
prefix前缀
wrapping是否允许换⾏
frame是否带边框
alignment⽂字对⻬⽅式.
readOnly是否允许修改
buttonSymbol按钮上的图标.
accelerated(加速的)按下按钮时是否为快速调整模式
correctionMode输⼊有误时如何修正.
keyboardTrack是否开启键盘跟踪.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
textChanged(QString)微调框的⽂本发⽣改变时会触发.参数QString带有前缀和后缀.
valueChanged(int)微调框的⽂本发⽣改变时会触发.参数int,表⽰当前的数值.

针对上面第三部分的内容李荣SpinBox选择学制:
在这里插入图片描述

5.DateEdit &TimeEdit & DateTimeEdit

在这里插入图片描述
这几个空间用法都一样,我们选择一个进行说明即可,以DateTimeEdit为例:

属性说明
dateTime时间⽇期的值.形如2025/1/1 0:00:00
date单纯⽇期的值.形如2025/1/1
time单纯时间的值.形如0:00:00
displayFormat时间⽇期格式.形如yyyy/M/d H:mm
minimumDateTime最⼩时间⽇期
maximumDateTime最⼤时间⽇期
timeSpec1.Qt::LocalTime:显⽰本地时间。2. Qt::UTC:显⽰协调世界时(UTC)。3. Qt::OffsetFromUTC:显⽰相对于UTC的偏移量(时差).

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
dateChanged(QDate)⽇期改变时触发.
timeChanged(QTime)时间改变时触发.
dateTimeChanged(QDateTime)时间⽇期任意⼀个改变时触发.

时间计算器(两个时间相隔多少天/多少小时)

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{//先获取到两个时间QDateTime oldtime = ui->dateTimeEdit->dateTime();QDateTime newtime = ui->dateTimeEdit_2->dateTime();//利用QT内置函数daysto和secsto计算时间差值int days = oldtime.daysTo(newtime);int seconds = oldtime.daysTo(newtime);//因为已经计算了days了,所以要把seconds(秒)换算成小时int hours = (seconds/3600) % 24;//只需要换算成24小时内的时间即可//将结果显示到label中ui->label->setText(QString("计算结果:")+QString::number(days)+QString("天")+QString::number(hours)+QString("小时"));
}

在这里插入图片描述

6.Dial

使⽤QDial 表⽰⼀个旋钮.有些程序,通过⿏标拖动旋钮旋转,即可完成⼀些相关的设置.

属性说明
value持有的数值.
minimum最⼩值
maximum最⼤值
singleStep按下⽅向键的时候改变的步⻓.
pageStep按下pageUp/pageDown的时候改变的步⻓.
sliderPosition界⾯上旋钮显⽰的初始位置
tracking外观是否会跟踪数值变化.默认值为true.⼀般不需要修改.
wrapping是否允许循环调整.即数值如果超过最⼤值,是否允许回到最⼩值.
notchesVisible是否显⽰刻度线.
notchTarget刻度线之间的相对位置.数字越⼤,刻度线越稀疏.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发.

通过Dial修改窗口的透明度

void Widget::on_dial_valueChanged(int value)
{qDebug() << value;//不透明度是一个小数,将dial的数值也化为100份,调节就更有规律this->setWindowOpacity((double)value/100);
}

在这里插入图片描述

7.Slider

使⽤QSlider 表⽰⼀个滑动条.
QSlider和QDial都是继承⾃QAbstractSlider ,因此⽤法上基本相同.

属性说明
value持有的数值.
minimum最⼩值
maximum最⼤值
singleStep按下⽅向键的时候改变的步⻓.
pageStep按下pageUp/pageDown的时候改变的步⻓.
sliderPosition滑动条显⽰的初始位置
tracking外观是否会跟踪数值变化.默认值为true.⼀般不需要修改.
orientation滑动条的⽅向是⽔平还是垂直.
invertedAppearance是否要翻转滑动条的⽅向.
tickPosition刻度的位置.
tickInterval刻度的密集程度.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

核心信号说明
valueChanged(int)数值改变时触发
rangeChanged(int, int)范围变化时触发.

7.1利用滑动条调整窗口的大小

  ui->horizontalSlider->setMinimum(100);//最小ui->horizontalSlider->setMaximum(2000);//最大ui->horizontalSlider->setValue(800);//初始值ui->horizontalSlider->setSingleStep(50);//步长ui->verticalSlider->setMinimum(100);//最小ui->verticalSlider->setMaximum(1500);//最大ui->verticalSlider->setValue(600);//初始值ui->verticalSlider->setSingleStep(50);//步长void Widget::on_horizontalSlider_valueChanged(int value)
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), value, rect.height());
}void Widget::on_verticalSlider_valueChanged(int value)
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), rect.width(), value);
}

在这里插入图片描述

7.2利用滑动条调整窗口的大小(利用快捷键)

//利用快捷键,需要用到QShortcutQShortcut* shortcut1 = new QShortcut(this);shortcut1->setKey(QKeySequence("-"));QShortcut* shortcut2 = new QShortcut(this);shortcut2->setKey(QKeySequence("+"));//使用信号槽,感知快捷键被按下connect(shortcut1,&QShortcut::activated,this,&Widget::subValue);connect(shortcut2,&QShortcut::activated,this,&Widget::addValue);void Widget::subValue()
{// 获取当前值int value = ui->horizontalSlider->value();value -= ui->horizontalSlider->singleStep();if (value < ui->horizontalSlider->minimum()) {value = ui->horizontalSlider->minimum();}ui->horizontalSlider->setValue(value);
}void Widget::addValue()
{int value = ui->horizontalSlider->value();value += ui->horizontalSlider->singleStep();if (value > ui->horizontalSlider->maximum()) {value = ui->horizontalSlider->maximum();}ui->horizontalSlider->setValue(value);
}void Widget::on_horizontalSlider_valueChanged(int value)//可以用快捷键控制
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), value, rect.height());
}void Widget::on_verticalSlider_valueChanged(int value)//不可以用快捷键控制
{const QRect& rect = this->geometry();this->setGeometry(rect.x(), rect.y(), rect.width(), value);
}

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关文章:

QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

输入类控件既可以进行显示&#xff0c;也能让用户输入一些内容&#xff01; 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…...

计算机网络 (59)无线个人区域网WPAN

前言 无线个人区域网&#xff08;WPAN&#xff0c;Wireless Personal Area Network&#xff09;是一种以个人为中心&#xff0c;采用无线连接方式的个人局域网。 一、定义与特点 定义&#xff1a;WPAN是以个人为中心&#xff0c;实现活动半径小、业务类型丰富、面向特定群体的无…...

Python Typing: 实战应用指南

文章目录 1. 什么是 Python Typing&#xff1f;2. 实战案例&#xff1a;构建一个用户管理系统2.1 项目描述2.2 代码实现 3. 类型检查工具&#xff1a;MyPy4. 常见的 typing 用法5. 总结 在 Python 中&#xff0c;静态类型检查越来越受到开发者的重视。typing 模块提供了一种方式…...

Redis存储③Redis基本命令+内部编号和架构

目录 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 1.2 set 和 get 命令 2. 基本全局命令 2.1 keys 2.2 exists 2.3 del 2.4 expire 2.5 ttl 2.6 type 3. 数据结构和内部编码 4. 单线程架构 本篇完。 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 根据上篇…...

Vivado生成X1或X4位宽mcs文件并固化到flash

1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型&#xff0c;相关配置步骤可参考下图。 注意&#xff1a;Flash数据传输位宽如果需要选择X4位宽&am…...

07 区块链安全技术

概述 区块链的安全特性 区块链解决了在不可靠网络上可靠地传输信息的难题&#xff0c;由于不依赖与中心节点的认证和管理&#xff0c;因此防止了中心节点被攻击造成的数据泄露和认证失败的风险。 区块链安全防护的三大特点 共识机制代替中心认证机制数据篡改“一发动全身”…...

第84期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…...

柔性数组与c/c++程序中内存区域的划分

1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的&#xff0c;其大小在编译时未确定&#xff0c;而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下&#xff1a; struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...

react页面定时器调用一组多个接口,如果接口请求返回令牌失效,清除定时器不再触发这一组请求

为了实现一个React页面使用定时器调用一组多个接口&#xff0c;并在任意一个接口请求返回令牌失效时清除定时器且不再触发这一组请求&#xff0c;可以遵循以下步骤&#xff1a; 1. 定义API调用函数&#xff1a;创建一个函数来处理一组API调用。每个API调用都应该检查响应状态以…...

使用 .NET Core 6.0 Web API 上传单个和多个文件

示例代码&#xff1a; https://download.csdn.net/download/hefeng_aspnet/90138968 介绍 我们将在 IFormFile 接口和 .NET 提供的其他接口的帮助下&#xff0c;逐步讨论单个和多个文件上传。 .NET 提供了一个 IFormFile 接口&#xff0c;代表 HTTP 请求中传输的文件。 此外…...

AJAX笔记入门篇

黑马程序员视频地址&#xff1a; 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2 目录 AJAX 概念和axios 使用 什么是AJAX&#xff1f; …...

RoHS 简介

RoHS&#xff08;Restriction of Hazardous Substances Directive&#xff0c;限制有害物质指令&#xff09;是欧盟制定的一项环保法规&#xff0c;旨在限制电气和电子设备中某些有害物质的使用&#xff0c;以减少这些产品对环境和人体健康的危害。 RoHS限制的有害物质及其限量…...

C# 中 default 使用详解

总目录 前言 在C#中&#xff0c;default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型&#xff0c;并返回该类型的默认值。随着C#版本的发展&#xff0c;default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一…...

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步&#xff0c;无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势&#xff0c;正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…...

[ACTF2020 新生赛]Upload1

题目 以为是前端验证&#xff0c;试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…...

ASP.NET代码审计 SQL注入篇(简单记录)

sql注入&#xff0c;全局搜索 Request QueryString ToString() select select * aspx是设计页面&#xff0c;而aspx.cs是类页面&#xff0c;也就是说设计页面用到的类信息在这个页面里面&#xff0c;其实就是把设计和实现分离开来。 源码 using System; using System.Collect…...

数据结构 链表2

目录 前言&#xff1a; 一&#xff0c;反转一个链表(迭代) 二&#xff0c;打印一个链表&#xff08;递归&#xff09; 三&#xff0c;反转一个链表(递归) 四&#xff0c;双向链表 总结 前言&#xff1a; 我们根据 [文章 链表1] 可以知道链表相比较于数组的优缺点和计算机…...

【leetcode100】二叉树的层序遍历

1、题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 2、初始思路…...

MyBatis进阶

1. 动态SQL 1.1 <if>标签的使用(xml版本) 动态 SQL 是Mybatis的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 现在有一个需求.注册分为两种字段&#xff1a;必填字段和⾮必填字段&#xff0c;那如果在添加用户的时候有不确定的字段传⼊&#xff0c;程…...

迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

在前面的章节中我们从0开始编写了一个mcp2515的驱动程序&#xff0c;而跟I2C设备类似&#xff0c;在Linux内核中也有着通用SPI设备驱动&#xff0c;在本章节将会讲解通用SPI设备驱动的使用&#xff0c;并讲解如何在应用程序中通过ioctl对SPI进行配置和使用。 硬件&#xff1a;迅…...

DDD架构实战第五讲总结:将领域模型转化为代码

云架构师系列课程之DDD架构实战第五讲总结:将领域模型转化为代码 一、引言 在前几讲中,我们讨论了领域模型的重要性及其在业务分析中的渐进获得方法。本讲将聚焦于如何将领域模型转化为代码,使得开发人员能够更轻松地实现用户的领域模型。 二、从模型到代码:领域驱动设计…...

C++----STL(list)

介绍 list的数据结果是一个带头双向链表。 使用 有了前面string、vector的基础&#xff0c;后续关于list使用的讲解主要提及与string和vector的不同之处。 使用文档&#xff1a;cplusplus.com/reference/list/list/?kwlist 迭代器问题 insert以后迭代器不失效 #include…...

软件测试 —— 性能测试(jmeter)

软件测试 —— 性能测试&#xff08;jmeter&#xff09; 什么是jmeter安装jmeterjmeter常用组件线程组取样器结果树 我们之前学习了接口测试工具Postman&#xff0c;我们今天要学习的是性能测试工具——jmeter 什么是jmeter Apache JMeter 是一个开源的性能测试工具&#xff…...

Zemax 非序列模式下的颜色检测器和颜色混合

在 Zemax 的非序列模式中&#xff0c;探测器用于捕获系统中射线的信息。可以使用各种类型的探测器来捕获光学系统性能的不同方面&#xff0c;例如矩形探测器&#xff0c;它存储撞击它的 NSC 源射线的能量数据。 另一种经常使用的探测器类型是 Detector Color&#xff0c;它是一…...

DBO优化最近邻分类预测matlab

蜣螂优化算法&#xff08;Dung Beetle Optimizer&#xff0c;简称 DBO&#xff09;作为一种新兴的群智能优化算法&#xff0c;于 2022 年末被提出&#xff0c;其灵感主要来源于蜣螂的滚球、跳舞、觅食、偷窃以及繁殖等行为。 本次使用的数据为 Excel 格式的分类数据集。该数据…...

【第二天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-五种常见的排序算法(持续更新)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的排序算法1.排序算法的介绍2.五种详细的排序算法代码 总结 前言 提示&#xff1a;这里可以添加本文要记…...

合并两个有序数组(Leetcode)

解题思路&#xff1a; 三个指针&#xff1a; $p1: 指向 nums1 中的最后一个非零元素。$p2: 指向 nums2 的最后一个元素。$p: 指向 nums1 的最后一位&#xff0c;用于存储合并后的元素。 从后往前填充&#xff1a; 比较 nums1[$p1] 和 nums2[$p2]&#xff0c;较大的放入 nums1[…...

特殊类设计

[本节目标] 掌握常见特殊类的设计方式 1.请设计一个类&#xff0c;不能被拷贝 拷贝只会放生在两个场景中&#xff1a;拷贝构造函数以及赋值运算符重载&#xff0c;因此想要让一个类禁止拷贝&#xff0c;只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构…...

2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计

题目来源&#xff1a;buuctf [RCTF2015]EasySQL1 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;初步思路为二次注入&#xff0c;在页面进行操作 step 2&#xff1a;尝试二次注入 step 3&#xff1a;已知双引号类型的字符型注入&#xff0c;构造…...

【esp32-uniapp】uniapp小程序篇02——引入组件库

一、引入组件库&#xff08;可自行选择其他组件库&#xff09; 接下来介绍colorUI、uview plus的安装&#xff0c;其他的安装可自行查找教程 1.colorUI weilanwl/coloruicss: 鲜亮的高饱和色彩&#xff0c;专注视觉的小程序组件库 下载之后解压&#xff0c;将\coloruicss-ma…...

基于单片机的智能小区门禁系统设计(论文+源码)

1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心&#xff0c;STM32单片机作为主控单元&#xff0c;通过WiFi模块实现与手机APP的连接&#xff0c;构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…...

tkinter绘制组件(44)——浮出ui控件

tkinter绘制组件&#xff08;44&#xff09;——浮出ui控件 引言布局函数结构ui框架对齐方向绑定已有控件出现和隐藏逻辑出现和隐藏动画完整代码函数 效果测试代码最终效果 github项目pip下载 引言 TinUI的浮出ui控件&#xff08;flyout&#xff09;其实是一个之间创建在UI框架…...

CDSN 2024博客之星总评选-主题文章创作,我的AI之路-起手篇

CDSN 2024博客之星总评选-主题文章创作&#xff0c;我的AI之路-起手篇 一. 回顾自己的机器学习之路二. 2024年的大模型学习三. 对自己的期望 一. 回顾自己的机器学习之路 自2019年起&#xff0c;我开始涉足机器学习领域&#xff0c;最初接触的是通过模型实现自动化的任务&…...

LLM基础知识

代替你的不是ai&#xff0c;而是会使用ai的人。而在这之上还有会打造ai的人。 1、大语言模型的大体现在哪里 LLM&#xff08;Large Language Model 大语言模型&#xff09;的大不仅仅是指训练数据巨大&#xff0c;更指参数数量巨大。 参数即模型内部的变量&#xff0c;…...

Linux 网络:交换芯片 EDSA 以太网帧简介

文章目录 1. 前言2. EDSA 协议以太网帧的发送和接收2.1 什么是 EDSA &#xff1f;2.2 EDSA 以太网帧的发送2.3 EDSA 以太网帧的接收 3. 验证 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. EDS…...

【Git版本控制器--3】Git的远程操作

目录 理解分布式版本控制系统 创建远程仓库 仓库被创建后的配置信息 克隆远程仓库 https克隆仓库 ssh克隆仓库 向远程仓库推送 拉取远程仓库 忽略特殊文件 为什么要忽略特殊文件&#xff1f; 如何配置忽略特殊文件&#xff1f; 配置命令别名 标签管理 理…...

深入理解GPT底层原理--从n-gram到RNN到LSTM/GRU到Transformer/GPT的进化

从简单的RNN到复杂的LSTM/GRU,再到引入注意力机制,研究者们一直在努力解决序列建模的核心问题。每一步的进展都为下一步的突破奠定了基础,最终孕育出了革命性的Transformer架构和GPT大模型。 1. 从n-gram到循环神经网络(RNN)的诞生 1.1 N-gram 模型 在深度学习兴起之前,处理…...

【2024年华为OD机试】 (E卷,200分) - 最优资源分配芯片资源占用(JavaScriptJava PythonC/C++)

一、问题描述 题目解析 题目描述 某块业务芯片的最小容量单位为 1.25G&#xff0c;总容量为 M * 1.25G。芯片资源编号为 1, 2, …, M。该芯片支持 3 种不同的配置&#xff0c;分别为 A、B、C&#xff1a; 配置 A&#xff1a;占用容量为 1.25G&#xff08;1 个单位&#xff…...

Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题

一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中&#xff0c;我们常常会遇到各种有趣且具有挑战性的问题。今天&#xff0c;我们就来深入探讨一个在实际开发中较为常见的问题&#xff1a;当连续快速发送 Post 请求时&#xff0c;前端会弹出 “数据正在处理&#xff0c;请…...

【开源免费】基于Vue和SpringBoot的常规应急物资管理系统(附论文)

本文项目编号 T 159 &#xff0c;文末自助获取源码 \color{red}{T159&#xff0c;文末自助获取源码} T159&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

差分进化算法 (Differential Evolution) 算法详解及案例分析

差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...

优选算法——哈希表

目录 1. 哈希表简介 2. 两数之和 3. 判定是否为字符重排 4. 存在重复元素 5. 字母异位词分组 1. 哈希表简介 2. 两数之和 题目链接&#xff1a;1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a; 大家来看上面的图&…...

【前端SEO】使用Vue.js + Nuxt 框架构建服务端渲染 (SSR) 应用满足SEO需求

Nuxt.js 是一个基于 Vue.js 的通用应用框架&#xff0c;它简化了使用 Vue 构建服务端渲染 (SSR) 应用的流程。除了 SSR 之外&#xff0c;Nuxt.js 还支持静态站点生成&#xff08;Static Site Generation, SSG&#xff09;&#xff0c;渐进式网络应用&#xff08;Progressive We…...

AI学习指南Ollama篇-Ollama简介

一、定义 大语言模型(LLM)是一种基于深度学习的自然语言处理模型,能够生成文本、回答问题、翻译语言、撰写代码等。这些模型通过海量的文本数据进行训练,学习语言的模式和结构,从而能够生成自然流畅的文本内容。随着技术的不断进步,大语言模型在各个领域都展现出了巨大的…...

Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用

在人工智能的浩瀚宇宙中&#xff0c;深度学习犹如一颗璀璨的星辰&#xff0c;引领着机器学习和计算机视觉领域的前沿探索。而神经网络&#xff0c;作为深度学习的核心架构&#xff0c;更是以其强大的数据建模能力&#xff0c;成为解决复杂问题的重要工具。今天&#xff0c;我们…...

《最优化理论基础》8课时层次化教案

《最优化理论基础》8课时层次化教案 课程总目标 掌握最优化核心理论&#xff08;最优性条件、凸分析、对偶理论&#xff09;&#xff1b;能独立实现经典优化算法&#xff08;梯度法、牛顿法、约束优化建模&#xff09;&#xff1b;理解优化理论与机器学习模型的关联&#xff…...

从源码深入理解One-API框架:适配器模式实现LLM接口对接

1. 概述 one-api 是一个开源的 API 框架&#xff0c;基于go语言开发&#xff0c;旨在提供统一的接口调用封装&#xff0c;支持多种 AI 服务平台的集成。通过 Gin 和 GORM 等框架&#xff0c;框架简化了多种 API 服务的调用流程。通过适配器模式实现了与多种 大模型API 服务的集…...

2025年国产化推进.NET跨平台应用框架推荐

2025年国产化推进.NET跨平台应用框架推荐 1. .NET MAUI NET MAUI是一个开源、免费&#xff08;MIT License&#xff09;的跨平台框架&#xff08;支持Android、iOS、macOS 和 Windows多平台运行&#xff09;&#xff0c;是 Xamarin.Forms 的进化版&#xff0c;从移动场景扩展到…...

Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作3 理解 shape, stride, storage, view&#xff0c;is_contiguous 和 reshape 操作 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started Tensor 基本使用 索引 indexing示例代码 加减…...

图扑 2024 全年精彩回顾 | 稳步向前

2024 年即将过去&#xff0c;回顾这一年&#xff0c;图扑软件在多个领域取得了显著成就&#xff0c;我们斩获多项行业奖项&#xff0c;稳步提升了市场地位&#xff0c;并在产品创新上推出了一系列新功能&#xff0c;提升了用户体验。与此同时&#xff0c;通过与合作伙伴紧密协作…...