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

2023/9/18 -- C++/QT

作业

完善登录框

点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:消息对话框,对象版和静态成员函数版至少各实现一个

【免费】2023/9/18-C++/QT实现简易登录资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/weixin_54147737/88354416

一、信号与槽机制

1.1 简介

1> 信号与槽机制,是qt引以为傲的、能够立于编程界而不倒的核心机制

2> 作用:实现多个组件之间的互相通信,一个组件发信号,另一个组件接收信号后,做相应的响应

3> 原理类似于IO中的两个进程间通过信号通信,但是,这里的信号,是可以传递信息的

1.2 信号与槽

1> 信号:信号函数,定义在类体内signals权限下的特殊成员函数,该函数是不完整的函数,只有声明,没有定义,返回值为void,参数就是传递的信息

2> 槽:槽函数,定义在类体内slots权限下的成员函数,该函数是完整的函数,既有声明也有定义,返回值为void类型,参数就是接收信号的信息

3> 槽函数可以被当作普通函数一样调用,但是普通函数不能当作槽函数一样连接信号

4> 信号函数和槽函数,不是标准的C++代码,通过moc.exe工具将其自动转化为标准的C++代码

5> 信号函数和槽函数可以是组件自带的,也可以由用户自定义,系统提供的每个组件都会自带信号与槽

6> 包含信号与槽的类体定义

class Widget : public QWidget
{Q_OBJECT            //有关信号与槽的元对象signals:                    //该权限下定义属于自己的信号void my_signal();           //自定义一个无参无返回值的信号函数private slots:void my_slot();                //自定义无参无返回值的槽函数public:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};
#endif // WIDGET_H

1.3 信号与槽的连接

1> 基于ui界面的,手动选中信号与槽的连接,该连接只适用于系统提供的信号与槽的连接,连接函数也是由系统实现

2> 也是基于ui界面,在组件上右键转到槽,手动实现槽函数的内容,该方法只能更改槽函数逻辑,信号、连接都是由系统实现

3> qt4版本手动连接信号与槽,该连接是不友好的连接,因为两个宏的原因,它会将所有传递的数据都改成字符串类型

[static] QMetaObject::Connection               //返回值:是建立的信号与槽的连接,是一个静态成员函数QObject::connect(                          //函数名const QObject *sender,                 //信号发射者,是组件的指针const char *signal,                    //要发射的信号函数,函数是函数指针,要的是字符串类型,所以需要使用SIGNAL()宏进行转换后使用const QObject *receiver,                 //信号接收者,是组件的指针const char *method)                       //接收信号后,接收者要处理的槽函数,函数是函数指针,要的是字符串类型,所以需要使用SLOT()宏进行转换后使用
举个例子:QLabel *label = new QLabel;QScrollBar *scrollBar = new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label,  SLOT(setNum(int)));

4> qt5版本的信号与槽的连接

[static] QMetaObject::Connection            //返回值:是建立的信号与槽的连接,是一个静态成员函数QObject::connect(                 //函数名const QObject *sender,       //信号发射者,是组件的指针PointerToMemberFunction signal,    //信号函数的指针,要指定是哪个类中的哪个成员函数const QObject *receiver,              //信号接收者,是组件的指针PointerToMemberFunction method)    //槽函数的指针,要指定是哪个类中的哪个成员函数
举个例子:QLabel *label = new QLabel;QLineEdit *lineEdit = new QLineEdit;QObject::connect(lineEdit, &QLineEdit::textChanged,label,  &QLabel::setText);

5> 信号连接功能函数

[static] QMetaObject::Connection          //返回值:是建立的信号与槽的连接,是一个静态成员函数QObject::connect(               //函数名const QObject *sender,          //信号发射者,是组件的指针PointerToMemberFunction signal,    //信号函数的指针,要指定是哪个类中的哪个成员函数Functor functor)            //功能函数:全局函数作为功能函数、仿函数作为功能函数、lambda表达式作为功能函数
举个例子1,全局函数作为功能函数:void someFunction();QPushButton *button = new QPushButton;QObject::connect(button, &QPushButton::clicked, someFunction);举个例子2:lambda作为功能函数QByteArray page = ...;QTcpSocket *socket = new QTcpSocket;socket->connectToHost("qt-project.org", 80);QObject::connect(socket, &QTcpSocket::connected, [=] () {socket->write("GET " + page + "\r\n");});

6> 信号与槽的断开

只需将之前的连接函数的connect改成disconnect即可,参数不变

1.4 信号的定义与发射

1、在类体的signals权限下,定义属于自己的信号

2、信号函数只有声明,没有定义,返回值为void,可用有参数

3、在程序所需处,使用关键字emit发射自定义的信号,格式:emit 信号名(实参);

4、信号函数可以连接到槽函数中,也可以连接另一个信号函数,表明发射第一个信号时,第二个信号跟着发射

1.5 信号与槽的总结

1> 一个信号可以连接多个槽函数

2> 一个槽函数可以连接多个信号函数

3> 一个信号函数可以连接到槽函数中,也可以连接另一个信号

4> 信号函数和槽函数参数个数

    1、信号函数和槽函数进行链接时,一般要求信号函数和槽函数的参数保持一致connect(信号发送者, SIGNAL(signalFun()),信号接收者, SLOT(slotFun()));     //Okconnect(信号发送者, SIGNAL(signalFun(int)),信号接收者, SLOT(slotFun(int)));     //Okconnect(信号发送者, SIGNAL(signalFun(int, char)),信号接收者, SLOT(slotFun(int, char)));     //Okconnect(信号发送者, SIGNAL(signalFun(char, int)),信号接收者, SLOT(slotFun(int, char)));     //Falseconnect(信号发送者, SIGNAL(signalFun(int)),信号接收者, SLOT(slotFun(char)));     //False2、当信号函数的参数大于槽函数的参数时connect(信号发送者, SIGNAL(signalFun(int, char)),信号接收者, SLOT(slotFun()));     //Okconnect(信号发送者, SIGNAL(signalFun(int, char)),信号接收者, SLOT(slotFun(int)));     //Okconnect(信号发送者, SIGNAL(signalFun(int, char)),信号接收者, SLOT(slotFun(char)));     //False3、当信号函数的参数小于槽函数的参数时connect(信号发送者, SIGNAL(signalFun(int)),信号接收者, SLOT(slotFun(int, char)));     //Falseconnect(信号发送者, SIGNAL(signalFun(int)),信号接收者, SLOT(slotFun(int, char=0)));     //Ok

1.6 使用信号与槽实现简单的页面跳转

1> 准备两个界面

2> 在第一个界面中,定义跳转的信号函数,第二个界面定义槽函数

3> 可以在主程序中实例化两个界面,第一个界面调用show函数,第二个不调用,并且在主调函数中将第一个界面的信号与第二个界面的槽函数连接

1) 头文件

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include"second.h"QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jump();           //自定义跳转信号函数private slots:void on_loginBtn_clicked();private:Ui::Widget *ui;Second *s1;             //定义另一个界面的指针
};
#endif // WIDGET_H

second.h

#ifndef SECOND_H
#define SECOND_H#include <QWidget>namespace Ui {
class Second;
}class Second : public QWidget
{Q_OBJECTpublic slots:void jump_slot();         //接收跳转信号的槽函数public:explicit Second(QWidget *parent = nullptr);~Second();private:Ui::Second *ui;
};#endif // SECOND_H

2) 源文件

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);s1 = new Second;            //给另一个界面实例化空间//将当前界面的信号,与s1界面的槽函数进行连接connect(this,&Widget::jump, s1, &Second::jump_slot);
}Widget::~Widget()
{delete ui;
}void Widget::on_loginBtn_clicked()
{emit jump();this->hide();        //将当前界面隐藏
}

second.cpp

#include "second.h"
#include "ui_second.h"Second::Second(QWidget *parent) :QWidget(parent),ui(new Ui::Second)
{ui->setupUi(this);
}Second::~Second()
{delete ui;
}//接收跳转信号对应的槽函数
void Second::jump_slot()
{this->show();            //将自己界面进行展示
}

3) 主程序

#include "widget.h"
#include"second.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();//Second s;           //定义第二个界面//连接w的信号与s的槽//QObject::connect(&w, &Widget::jump, &s, &Second::jump_slot);return a.exec();
}

二、对话框

2.1 消息对话框(QMessageBox)

1> 该类提供的消息对话框,用于提高用户的交互性,可以提供问题对话框、信息对话框、警告对话框、错误对话框。。。

2> 实现该对话框的方式有两种:基于属性版本、静态成员函数版本

3> 基于属性版本实现消息对话框:公共该类实例化对象,调用exec函数进入执行态,该函数返回值时用户点击的按钮

QMessageBox::QMessageBox(                             //构造函数函数名QMessageBox::Icon icon,                             //图标const QString &title,                                 //对话框标题const QString &text,                                    //对话框提示文本内容QMessageBox::StandardButtons buttons = NoButton,         //对话框提供的按钮,如果有多个按钮,则使用位或隔开QWidget *parent = nullptr)                                //父组件参数1介绍,对话框提供的图标,该类中的枚举值ConstantValueDescription
QMessageBox::NoIcon0the message box does not have any icon.//不提供任何图标
QMessageBox::Question4an icon indicating that the message is asking a question.//提供一个问号图标
QMessageBox::Information1an icon indicating that the message is nothing out of the ordinary.//提供一个i符号图标
QMessageBox::Warning2an icon indicating that the message is a warning, but can be dealt with.//提供一个感叹号图标
QMessageBox::Critical3an icon indicating that the message represents a critical problem.  //提供一个叉号图标参数4介绍,对话框上提供的标准按钮,时类中的枚举值,如果有多个按钮,中间有位或隔开 
ConstantValueDescription
QMessageBox::Ok0x00000400An "OK" button defined with the AcceptRole.  //提供一个ok按钮
QMessageBox::Open0x00002000An "Open" button defined with the AcceptRole. //提供一个open按钮
QMessageBox::Save0x00000800A "Save" button defined with the AcceptRole.  //提供一个保存按钮
QMessageBox::Cancel0x00400000A "Cancel" button defined with the RejectRole. //提供一个取消按钮
QMessageBox::Close0x00200000A "Close" button defined with the RejectRole.  //提供一个关闭按钮
QMessageBox::Discard0x00800000A "Discard" or "Don't Save" button, depending on the platform, defined with the DestructiveRole.//不保存
举个例子:QMessageBox msgBox;               //实例化对象msgBox.setText("The document has been modified.");msgBox.setInformativeText("Do you want to save your changes?");msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);msgBox.setDefaultButton(QMessageBox::Save);int ret = msgBox.exec();               //展示对话框//判断用户点击的结果switch (ret) {case QMessageBox::Save:// Save was clickedbreak;case QMessageBox::Discard:// Don't Save was clickedbreak;case QMessageBox::Cancel:// Cancel was clickedbreak;default:// should never be reachedbreak;}

4> 基于静态成员函数版本:无需实例化对象,但是只能设置有限的信息

[static] QMessageBox::StandardButton             //函数返回值类型,是用户点击的标准按钮,该函数是静态成员函数QMessageBox::warning(                //函数名QWidget *parent,                  //父组件const QString &title,            //对话框标题const QString &text,             //对话框文本内容QMessageBox::StandardButtons buttons = Ok,     //提供的标准按钮,多个按钮用位或隔开QMessageBox::StandardButton defaultButton = NoButton)    //默认选中的按钮举个例子:int ret = QMessageBox::warning(this, tr("My Application"),tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QMessageBox::Discard| QMessageBox::Cancel,QMessageBox::Save);其余的静态成员函数QMessageBox::StandardButton 
critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton 
information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton 
question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)

5> 案例

1) 头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QMessageBox>            //消息对话框类
#include<QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_quesBtn_clicked();void on_warnBtn_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

2) 源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//问题按钮对应的槽函数
void Widget::on_quesBtn_clicked()
{//1、调用构造函数实例化对象QMessageBox box(QMessageBox::Question,            //图标"问题",                           //对话框标题"晚上约不?",                       //对话框文本内容QMessageBox::Yes | QMessageBox::No,   //提供的按钮this);                                 //父组件box.setDetailedText("有上好的飞天茅台");         //提供详细文本内容box.setDefaultButton(QMessageBox::No);          //将no设置成默认按钮box.setButtonText(QMessageBox::Yes, "好的");box.setButtonText(QMessageBox::No, "没空");//2、调用exec函数运行对话框int ret = box.exec();//3、对结果进行判断if(ret == QMessageBox::Yes){qDebug()<<"木的问题,老地方见";}else if(ret == QMessageBox::No){qDebug()<<"下次一定";}
}//警告按钮对应的槽函数
void Widget::on_warnBtn_clicked()
{//直接调用静态成员函数完成对话框的实现int ret = QMessageBox::warning(this,                      //父组件"警告",                     //对话框标题"放学等着,别走",               //对话框文本内容QMessageBox::Yes|QMessageBox::No,   //对话题提供的按钮QMessageBox::No);                 //默认选中的按钮//对用户选中的按钮进行判断if(ret == QMessageBox::Yes){qDebug()<<"行,荤的还是素的,文的还是武的任你挑";}else if(ret == QMessageBox::No){qDebug()<<"你永远是我大哥";}
}

三、加载资源文件

相关文章:

2023/9/18 -- C++/QT

作业 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两…...

vue柱状图+折线图组合

<template><div id"main" style"width: 100%;height: 500px; padding-top: .6rem"></div> </template>data() {return {weekData: ["1周","2周","3周","4周","5周","6周&…...

js中如何实现一个简单的防抖函数?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 防抖函数⭐ 使用示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏…...

mysq 主从同步错误之 Error_code 1032 handler error HA_ERR_KEY_NOT_FOUND

错误说明&#xff1a; MySQL主从同步的1032错误&#xff0c;一般是指要更改的数据不存在&#xff0c;SQL_THREAD提取的日志无法应用故报错&#xff0c;造成同步失败 &#xff08;Update、Delete、Insert一条已经delete的数据&#xff09;。 1032的错误本身对数据一致性没什么影…...

蓝桥杯 题库 简单 每日十题 day4

01 津津上初中了。妈妈认为津津应该更加用功学习&#xff0c;所以津津除了上学之外&#xff0c;还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴&#xff0c;而且上得越久就会越不高兴。假设津津…...

l8-d21 域名解析与http服务器实现原理

一、域名解析gethostbyname函数 主机结构在 <netdb.h> 中定义如下&#xff1a; struct hostent { char *h_name; /* 官方域名 */ char **h_aliases; /* 别名*/ int h_addrtype; /* 地址族&#xff08;地址类型&#xff09; */ int h_l…...

网络安全(黑客技术)自学规划

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性…...

阻止用邮件不停注册wordpress账户的方法

您可以使用多种不同的策略来阻止垃圾邮件注册。以下是一些策略供您参考&#xff1a;第1个最好用 1.完全禁用WordPress注册&#xff1a;如果您不需要在您的WordPress网站上公开注册&#xff0c;最好完全禁用注册&#xff0c;而不是试图打击垃圾邮件注册。要完全禁用WordPress上…...

低代码工具大比拼:哪个最适合你?

低代码开发平台正日益流行&#xff0c;成为企业和开发者们的首选。但是&#xff0c;面对市场上众多的低代码工具&#xff0c;你是否感到困惑呢&#xff1f;今天&#xff0c;就和数聚股份一起探讨一下&#xff0c;究竟应该选择哪个低代码工具才能最好地满足你的需求。 首先&…...

用Python实现链式调用

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 我们在使用Django的models查询数据库时&#xff0c;可以看到有这种写法&#xff1a; form app.models import XXX query XXX.objects.all() query query.filter(name123, age456).filter(salary999)在这种写法里面&#xf…...

基于SSM的汽车租赁后台管理系统

基于SSM的汽车租赁后台管理系统 介绍 包括登录、首页、客户管理、车辆管理、汽车出租、出租单管理、汽车入库、检查单管理、系统管理等功能&#xff0c;适合二次开发课程设计、毕业设计等 软件架构 SSM 运行环境 数据库 mysql 安装教程输入链接说明 端口&#xff1a;3306…...

Word 文档转换 PDF、图片

工作有需要 Word 文档转换 PDF、图片 的场景&#xff0c;我们来看看 Java 开发中怎么解决这个问题的。 Word 转 PDF Word 转 PDF 分为商用 Aspose 方案和开源 Apache POIiText 方案。 Aspose 方案 这种方式在目前来看应该是最好的&#xff0c;无论是转换的速度还是成功的概…...

解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose

参考&#xff1a;Docker官网-Install Docker Engine on Ubuntu 一、 Install using the Apt repository 1.1 Set up Docker’s Apt repository 1.1.1 Add Docker’s official GPG key # Add Dockers official GPG key: sudo apt-get updatesudo apt-get install ca-certifi…...

[ABC118D] Match Matching

题目传送门 引 题目的描述很形象&#xff0c;梦回童年&#xff0c;注意一下火柴全部都用完 解法 显然 DP , 设计状态&#xff1a; f i : 用完 i 根木棒凑出的最大数 f_i:用完i根木棒凑出的最大数 fi​:用完i根木棒凑出的最大数 状态转移&#xff1a; f i → f i c n t …...

程序员必须掌握哪些算法?

目录 简介1. 冒泡排序&#xff08;Bubble Sort&#xff09;思想 2. 快速排序&#xff08;Quick Sort&#xff09;思想 3. 二分查找&#xff08;Binary Search&#xff09;思想 4. 归并排序&#xff08;Merge Sort&#xff09;思想 5. 插入排序&#xff08;Insertion Sort&#…...

Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流

第13章 IO流 文章目录 一、File类的使用1.1、如何创建File类的实例1.2、常用方法1.2.1、File类的获取功能1.2.2、File类的重命名功能1.2.3、File类的判断功能1.2.4、File类的创建功能1.2.5、File类的删除功能 二、IO流原理及流的分类2.1、Java IO原理2.2、流的分类/体系结构 三…...

解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

解决WSL2占用内存过多问题&#xff08;Docker on WSL2: VmmemWSL&#xff09; 一、问题描述二、问题解决2.1 创建.wslconfig文件2.2 重启wsl2 一、问题描述 安装完WSL2后&#xff0c;又安装了Docker&#xff0c;使用了一段时间&#xff0c;发现电脑变卡&#xff0c;进一步查看…...

华为云云耀云服务器L实例评测|了解配置和管理L型云服务器

华为云云耀云服务器L实例配置和管理教程 华为云云耀云服务器L实例的介绍概述特点优势与弹性云服务器&#xff08;ECS&#xff09;的对比 注册和创建L型云服务器注册华为云账号创建L型云服务器实例配置实例参数配置其他参数尝试登录 远程登录 L实例查看公网ip通过本地shell远程连…...

【面试题】——Java基础篇(33题)

文章目录 1. 八大基本数据类型分类2. 重写和重载的区别3. int和integer区别4. Java的关键字5. 什么是自动装箱和拆箱&#xff1f;6. 什么是Java的多态性&#xff1f;7. 接口和抽象类的区别&#xff1f;8. Java中如何处理异常&#xff1f;9. Java中的final关键字有什么作用&…...

记一次 .NET 某电力系统 内存暴涨分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他生产上的程序有内存暴涨情况&#xff0c;让我帮忙看下怎么回事&#xff0c;最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来&#xff0c;看一看大概就知道咋回事了。 二&#xff1a;Windbg 分…...

1.SpringEL初始

SpringEL初始 文章目录 SpringEL初始什么是SpringELSpring BeansSpring EL以XML形式Spring EL以注解形式启用自动组件扫描 执行输出 什么是SpringEL Spring EL与OGNL和JSF EL相似&#xff0c;计算评估或在bean创建时执行。此外&#xff0c;所有的Spring表达式都可以通过XML或注…...

HTTP 状态码

状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议&#xff0c;例如&#xff0c;切换到HTTP的新版本协议200OK请求成功。一般用于GET与POST请求201Created已创建。成功…...

ddtrace 系列篇之 dd-trace-java 项目编译

dd-trace-java 是 Datadog 开源的 java APM 框架&#xff0c;本文主要讲解如何编译 dd-trace-java 项目。 环境准备 JDK 编译环境(三个都要&#xff1a;jdk8\jdk11\jdk17) Gradle 8 Maven 3.9 (需要 15G 以上的存储空间存放依赖) Git >2 (低于会出现一想不到的异常&#xf…...

华为aarch64架构的泰山服务器EulerOS 2.0 (SP8)系统离线安装saltstack3003.1实践

华为泰山服务器的CPU芯片架构为aarch64&#xff0c;所装系统为EulerOS 2.0 (SP8)aarch64系统&#xff0c;安装saltstack比较困难。本文讲解通过pip安装方式离线安装saltstack3003.1以进行集中化管理和维护。 一、系统环境 1、操作系统版本 [rootlocalhost ~]# cat /etc/os-r…...

C#中的方法

引言 在C#编程语言中&#xff0c;方法是一种封装了一系列可执行代码的重要构建块。通过方法&#xff0c;我们可以将代码逻辑进行模块化和复用&#xff0c;提高代码的可读性和可维护性。本文将深入探讨C#中的方法的定义、参数传递、返回值、重载、递归等方面的知识&#xff0c;…...

【Flowable】使用UEL整合Springboot从0到1(四)

前言 在前面我们介绍了Springboot简单使用了foleable以及flowableUI的安装和使用&#xff0c;在之前我们分配任务的处理人的时候都是通过Assignee去指定固定的人的。这在实际业务中是不合适的&#xff0c;我们希望在流程中动态的去解析每个节点的处理人&#xff0c;当前flowab…...

WebGL 计算点光源下的漫反射光颜色

目录 点光源光 逐顶点光照&#xff08;插值&#xff09; 示例程序&#xff08;PointLightedCube.js&#xff09; 代码详解 示例效果 逐顶点处理点光源光照效果时出现的不自然现象 更逼真&#xff1a;逐片元光照 示例程序&#xff08;PointLightedCube_perFragment.js…...

Java精品项目源码第61期垃圾分类科普平台(代号V061)

Java精品项目源码第61期垃圾分类科普平台(代号V061) 大家好&#xff0c;小辰今天给大家介绍一个垃圾分类科普平台&#xff0c;演示视频公众号&#xff08;小辰哥的Java&#xff09;对号查询观看即可 文章目录 Java精品项目源码第61期垃圾分类科普平台(代号V061)难度指数&…...

【Unity3D】资源管理

1 前言 Unity 中资源管理方案主要有 Resources、TextAsset、ScriptableObject 、AssetDatabase、PlayerPrefs、Addressables、AssetBundle、SQLite&#xff0c;本文将介绍其中大部分方案。 2 Resources Resources 主要用于加载资源&#xff0c;被加载的资源需要放在 Resources…...

数据结构-----队列

目录 前言 队列 定义 队列的定义和操作方法 队列节点的定义 操作方式 顺序表实现队列&#xff08;C/C代码&#xff09; 链表实现队列&#xff08;C/C代码&#xff09; Python语言实现队列 前言 排队是我们日常生活中必不可少的一件事&#xff0c;去饭堂打饭的时候排队&a…...

做视频最全的网站/培训机构还能开吗

Hibernate一级缓存 缓存就是你去小卖铺买东西&#xff0c;不用再去生产车间里买东西&#xff0c;当小卖铺倒闭了&#xff0c;也就是session缓存生命周期结束。hibernate一级缓存的声明周期很短&#xff0c;和session的生命周期一致&#xff0c;hibernate的一级缓存也叫做sessio…...

公司网站在哪里做/十大广告公司排名

author&#xff1a;咔咔 wechat&#xff1a;fangkangfk function xmltoarr($path){//xml字符串转数组$xml $path;//XML文件$objectxml simplexml_load_string($xml);//将文件转换成 对象$xmljson json_encode($objectxml );//将对象转换个JSON$xmlarrayjson_decode($xmljson,…...

上海网站设计找哪家/搜索引擎营销分析

原文地址为&#xff1a; visual studio 2015 key vs2015密钥Visual Studio Professional 2015简体中文版&#xff08;专业版&#xff09; KEY&#xff1a;HMGNV-WCYXV-X7G9W-YCX63-B98R2 Visual Studio Enterprise 2015简体中文版&#xff08;企业版&#xff09; KEY&#xff1…...

哈尔滨搜索引擎建站/nba交易最新消息

rem set pathset path%path%;C:\program files\vss\win32rem set sourcesafes db pathset SSDIRe:\vss-crmrem set current projectss cp $/test -Ymachinerem get codes by label ver1.0ss get -i-y -VVer1.0 -gwr -gf *.*...

代理上网/武安百度seo

紧接着上一篇博客&#xff0c;接着复习Android的知识点。一个暑假的时间自己在学车&#xff0c;即使每天都看了一点点知识&#xff0c;但是效率不高&#xff0c;现在需要在图书馆里给他补起来&#xff01; 第五个知识点&#xff1a;如何利用Handle处理 在默认情况下&#xff…...

怎么在网站做直播间/百度推广开户公司

1.源码下载首先是下载 git for windows&#xff1a;Git-2.14.1-64-bit.exe。然后新建D:mangos文件夹&#xff0c;在该文件夹下右键选择"Git Bash Here"&#xff0c;打开Git命令行。下载Mangos Zero源码&#xff1a;git clone https://github.com/mangoszero/server.g…...