QT学习笔记17Socket通信
Qt中提供的所有的Socket类都是非阻塞的。
Qt中常用的用于socket通信的套接字类:
-
QTcpServer
用于TCP/IP通信, 作为服务器端套接字使用
-
QTcpSocket
用于TCP/IP通信,作为客户端套接字使用。
-
QUdpSocket
用于UDP通信,服务器,客户端均使用此套接字。
1 TCP/IP
在Qt中实现TCP/IP服务器端通信的流程:
-
创建套接字
-
将套接字设置为监听模式
-
等待并接受客户端请求
可以通过QTcpServer提供的void newConnection()信号来检测是否有连接请求,如果有可以在对应的槽函数中调用nextPendingConnection函数获取到客户端的Socket信息(返回值为QTcpSocket*类型指针),通过此套接字与客户端之间进行通信。
-
接收或者向客户端发送数据
-
接收数据:使用read()或者readAll()函数
-
发送数据:使用write()函数
-
客户端通信流程:
-
创建套接字
-
连接服务器
可以使用QTcpSocket类的connectToHost()函数来连接服务器。
-
向服务器发送或者接受数据
下面例子为简单的TCP/IP通信的实现:
服务器端
通过Qt提供的QTcpServer类实现服务器端的socket通信:
//---------- tcpserver.h ------------
class TCPServer : public QMainWindow
{
Q_OBJECT
public:
explicit TCPServer(QWidget *parent = 0);
~TCPServer();
public slots:
void slotNewConnection();
void slotReadyRead();
private:
Ui::TCPServer *ui;
// 负责监听的套接字
QTcpServer* m_server;
// 负责通信的套接字
QTcpSocket* m_client;
};
//---------- tcpserver.cpp ------------
TCPServer::TCPServer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::TCPServer),
m_server(NULL),
m_client(NULL)
{
ui->setupUi(this);
//创建套接字对象
m_server = new QTcpServer(this);
//将套接字设置为监听模式
m_server->listen(QHostAddress::Any, 9999);
//通过信号接收客户端请求
connect(m_server, &QTcpServer::newConnection,
this, &TCPServer::slotNewConnection);
}
TCPServer::~TCPServer()
{
delete ui;
}
void TCPServer::slotNewConnection()
{
if(m_client == NULL)
{
//处理客户端的连接请求
m_client = m_server->nextPendingConnection();
//发送数据
m_client->write("服务器连接成功!!!");
//连接信号, 接收客户端数据
connect(m_client, &QTcpSocket::readyRead,
this, &TCPServer::slotReadyRead);
}
}
void TCPServer::slotReadyRead()
{
//接收数据
QByteArray array = m_client->readAll();
QMessageBox::information(this, "Client Message", array);
}
客户端
客户端通过使用Qt提供的QTcpSocket类可以方便的实现与服务器端的通信。
//------------- tcpclient.h ------------
class TCPClient : public QMainWindow
{
Q_OBJECT
public:
explicit TCPClient(QWidget *parent = 0);
~TCPClient();
public slots:
void slotReadyRead();
void slotSendMsg();
private:
Ui::TCPClient *ui;
QTcpSocket* m_client;
};
//------------- tcpclient.cpp --------------
TCPClient::TCPClient(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::TCPClient)
{
ui->setupUi(this);
//创建套接字
m_client = new QTcpSocket(this);
//连接服务器
m_client->connectToHost(QHostAddress("127.0.0.1"), 9999);
//通过信号接收服务器数据
connect(m_client, &QTcpSocket::readyRead,
this, &TCPClient::slotReadyRead);
//发送按钮
connect(ui->btnSend, &QPushButton::clicked,
this, &TCPClient::slotSendMsg);
}
TCPClient::~TCPClient()
{
delete ui;
}
void TCPClient::slotReadyRead()
{
//接收数据
QByteArray array = m_client->readAll();
QMessageBox::information(this, "Server Message", array);
}
void TCPClient::slotSendMsg()
{
QString text = ui->textEdit->toPlainText();
//发送数据
m_client->write(text.toUtf8());
ui->textEdit->clear();
}
综合示例:
#ifndef CLIENTWIDGET_H
#define CLIENTWIDGET_H#include <QWidget>
#include <QTcpSocket> //通信套接字namespace Ui {
class ClientWidget;
}class ClientWidget : public QWidget
{Q_OBJECTpublic:explicit ClientWidget(QWidget *parent = 0);~ClientWidget();private slots:void on_buttonConnect_clicked();void on_buttonSend_clicked();void on_buttonClose_clicked();private:Ui::ClientWidget *ui;QTcpSocket *tcpSocket; //通信套接字
};#endif // CLIENTWIDGET_H
#include "clientwidget.h"
#include "ui_clientwidget.h"
#include <QHostAddress>ClientWidget::ClientWidget(QWidget *parent) :QWidget(parent),ui(new Ui::ClientWidget)
{ui->setupUi(this);tcpSocket = NULL;//分配空间,指定父对象tcpSocket = new QTcpSocket(this);setWindowTitle("客户端");connect(tcpSocket, &QTcpSocket::connected,[=](){ui->textEditRead->setText("成功和服务器建立好连接");});connect(tcpSocket, &QTcpSocket::readyRead,[=](){//获取对方发送的内容QByteArray array = tcpSocket->readAll();//追加到编辑区中ui->textEditRead->append(array);});}ClientWidget::~ClientWidget()
{delete ui;
}void ClientWidget::on_buttonConnect_clicked()
{//获取服务器ip和端口QString ip = ui->lineEditIP->text();qint16 port = ui->lineEditPort->text().toInt();//主动和服务器建立连接tcpSocket->connectToHost(QHostAddress(ip), port);}void ClientWidget::on_buttonSend_clicked()
{//获取编辑框内容QString str = ui->textEditWrite->toPlainText();//发送数据tcpSocket->write( str.toUtf8().data() );}void ClientWidget::on_buttonClose_clicked()
{//主动和对方断开连接tcpSocket->disconnectFromHost();tcpSocket->close();
}
#ifndef SERVERWIDGET_H
#define SERVERWIDGET_H#include <QWidget>
#include <QTcpServer> //监听套接字
#include <QTcpSocket> //通信套接字namespace Ui {
class ServerWidget;
}class ServerWidget : public QWidget
{Q_OBJECTpublic:explicit ServerWidget(QWidget *parent = 0);~ServerWidget();private slots:void on_buttonSend_clicked();void on_buttonClose_clicked();private:Ui::ServerWidget *ui;QTcpServer *tcpServer; //监听套接字QTcpSocket *tcpSocket; //通信套接字};#endif // SERVERWIDGET_H
#include "serverwidget.h"
#include "ui_serverwidget.h"ServerWidget::ServerWidget(QWidget *parent) :QWidget(parent),ui(new Ui::ServerWidget)
{ui->setupUi(this);tcpServer = NULL;tcpSocket = NULL;//监听套接字,指定父对象,让其自动回收空间tcpServer = new QTcpServer(this);tcpServer->listen(QHostAddress::Any, 8888);setWindowTitle("服务器: 8888");connect(tcpServer, &QTcpServer::newConnection,[=](){//取出建立好连接的套接字tcpSocket = tcpServer->nextPendingConnection();//获取对方的IP和端口QString ip = tcpSocket->peerAddress().toString();qint16 port = tcpSocket->peerPort();QString temp = QString("[%1:%2]:成功连接").arg(ip).arg(port);ui->textEditRead->setText(temp);connect(tcpSocket, &QTcpSocket::readyRead,[=](){//从通信套接字中取出内容QByteArray array = tcpSocket->readAll();ui->textEditRead->append(array);});});}ServerWidget::~ServerWidget()
{delete ui;
}void ServerWidget::on_buttonSend_clicked()
{if(NULL == tcpSocket){return;}//获取编辑区内容QString str = ui->textEditWrite->toPlainText();//给对方发送数据, 使用套接字是tcpSockettcpSocket->write( str.toUtf8().data() );}void ServerWidget::on_buttonClose_clicked()
{if(NULL == tcpSocket){return;}//主动和客户端端口连接tcpSocket->disconnectFromHost();tcpSocket->close();tcpSocket = NULL;
}
2 UDP
使用Qt提供的QUdpSocketQUdpSocket进行UDP通信。在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据。类似的服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端的数据的到达。
传统UDP通信过程:
在UDP通信中,服务器端和客户端的概念已经显得有些淡化,两部分做的工作都大致相同:
-
创建套接字
-
绑定套接字
在UDP中如果需要接收数据则需要对套接字进行绑定,只发送数据则不需要对套接字进行绑定。
通过调用bind()函数将套接字绑定到指定端口上。
-
接收或者发送数据
-
接收数据:使用readDatagram()接收数据,函数声明如下:
qint64 readDatagram(char * data, qint64 maxSize,
QHostAddress * address = 0, quint16 * port = 0)
-
参数:
-
data: 接收数据的缓存地址
-
maxSize: 缓存接收的最大字节数
-
address: 数据发送方的地址(一般使用提供的默认值)
-
port: 数据发送方的端口号(一般使用提供的默认值)
QT中的UDP通信过程
使用pendingDatagramSize()可以获取到将要接收的数据的大小,根据该函数返回值来准备对应大小的内存空间存放将要接收的数据。
-
发送数据: 使用writeDatagram()函数发送数据,函数声明如下:
qint64 writeDatagram(const QByteArray & datagram,
const QHostAddress & host, quint16 port)
参数:
-
datagram:要发送的字符串
-
host:数据接收方的地址
-
port:数据接收方的端口号
头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QUdpSocket> //UDP套接字namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void dealMsg(); //槽函数,处理对方发过来的数据private slots:void on_buttonSend_clicked();private:Ui::Widget *ui;QUdpSocket *udpSocket; //UDP套接字
};#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//分配空间,指定父对象udpSocket = new QUdpSocket(this);//绑定//udpSocket->bind(8888);udpSocket->bind(QHostAddress::AnyIPv4, 8888);//加入某个组播//组播地址是D类地址udpSocket->joinMulticastGroup( QHostAddress("224.0.0.2") );//udpSocket->leaveMulticastGroup(); //退出组播setWindowTitle("服务器端口为:8888");//当对方成功发送数据过来//自动触发 readyRead()connect(udpSocket, &QUdpSocket::readyRead, this, &Widget::dealMsg);
}void Widget::dealMsg()
{//读取对方发送的内容char buf[1024] = {0};QHostAddress cliAddr; //对方地址quint16 port; //对方端口qint64 len = udpSocket->readDatagram(buf, sizeof(buf), &cliAddr, &port);if(len > 0){//格式化 [192.68.2.2:8888]aaaaQString str = QString("[%1:%2] %3").arg(cliAddr.toString()).arg(port).arg(buf);//给编辑区设置内容ui->textEdit->setText(str);}}Widget::~Widget()
{delete ui;
}//发送按钮
void Widget::on_buttonSend_clicked()
{//先获取对方的IP和端口QString ip = ui->lineEditIP->text();qint16 port = ui->lineEditPort->text().toInt();//获取编辑区内容QString str = ui->textEdit->toPlainText();//给指定的IP发送数据udpSocket->writeDatagram(str.toUtf8(), QHostAddress(ip), port);}
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer> //定时器对象namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_buttonStart_clicked();void on_buttonStop_clicked();private:Ui::Widget *ui;QTimer *myTimer; //定时器对象int i;
};#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);myTimer = new QTimer(this);i = 0;connect(myTimer, &QTimer::timeout,[=](){i++;ui->lcdNumber->display(i);});}Widget::~Widget()
{delete ui;
}void Widget::on_buttonStart_clicked()
{//启动定时器//时间间隔为100ms//每隔100ms,定时器myTimer自动触发timeout()//如果定时器没有激活,才启动if(myTimer->isActive() == false){myTimer->start(100);}}void Widget::on_buttonStop_clicked()
{if(true == myTimer->isActive()){myTimer->stop();i = 0;}
}
广播
在使用QUdpSocket类的writeDatagram()函数发送数据的时候,其中第二个参数host应该指定为广播地址:QHostAddress::Broadcast此设置相当于QHostAddress("255.255.255.255")
使用UDP广播的的特点:
-
使用UDP进行广播,局域网内的其他的UDP用户全部可以收到广播的消息
-
UDP广播只能在局域网范围内使用
组播
我们再使用广播发送消息的时候会发送给所有用户,但是有些用户是不想接受消息的,这时候我们就应该使用组播,接收方只有先注册到组播地址中才能收到组播消息,否则则接受不到消息。另外组播是可以在Internet中使用的。
在使用QUdpSocket类的writeDatagram()函数发送数据的时候,其中第二个参数host应该指定为组播地址,关于组播地址的分类:
-
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
-
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
-
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
-
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
注册加入到组播地址需要使用QUdpSocket类的成员函数:
bool joinMulticastGroup(const QHostAddress & groupAddress)
3 TCP/IP 和 UDP的区别
TCP/IP |
UDP |
|
是否连接 |
面向连接 |
无连接 |
传输方式 |
基于流 |
基于数据报 |
传输可靠性 |
可靠 |
不可靠 |
传输效率 |
效率低 |
效率高 |
能否广播 |
不能 |
能 |
TCP传送文件
用一个应用程序进行测试(发送接收都是同一个程序):
主体框架:
#include "serverwidget.h"
#include <QApplication>
#include "clientwidget.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);ServerWidget w;w.show();ClientWidget w2;w2.show();return a.exec();
}
客户端
头文件
#ifndef CLIENTWIDGET_H
#define CLIENTWIDGET_H#include <QWidget>
#include <QTcpSocket>
#include <QFile>namespace Ui {
class ClientWidget;
}class ClientWidget : public QWidget
{Q_OBJECTpublic:explicit ClientWidget(QWidget *parent = 0);~ClientWidget();private slots:void on_buttonConnect_clicked();private:Ui::ClientWidget *ui;QTcpSocket *tcpSocket;QFile file; //文件对象QString fileName; //文件名字qint64 fileSize; //文件大小qint64 recvSize; //已经接收文件的大小bool isStart; //标志位,是否为头部信息
};#endif // CLIENTWIDGET_H
实现文件
#include "clientwidget.h"
#include "ui_clientwidget.h"
#include <QDebug>
#include <QMessageBox>
#include <QHostAddress>ClientWidget::ClientWidget(QWidget *parent) :QWidget(parent),ui(new Ui::ClientWidget)
{ui->setupUi(this);tcpSocket = new QTcpSocket(this);isStart = true;ui->progressBar->setValue(0); //当前值setWindowTitle("客户端");connect(tcpSocket, &QTcpSocket::connected,[=](){//提示连接成功ui->textEdit->clear();ui->textEdit->append("和服务器连接成功,等待服务器传送文件……");});connect(tcpSocket, &QTcpSocket::readyRead,[=](){//取出接收的内容QByteArray buf = tcpSocket->readAll();if(true == isStart){//接收头isStart = false;//解析头部信息 QString buf = "hello##1024"// QString str = "hello##1024#mike";// str.section("##", 0, 0)//初始化//文件名fileName = QString(buf).section("##", 0, 0);//文件大小fileSize = QString(buf).section("##", 1, 1).toInt();recvSize = 0; //已经接收文件大小//打开文件//关联文件名字file.setFileName(fileName);//只写方式方式,打开文件bool isOk = file.open(QIODevice::WriteOnly);if(false == isOk){qDebug() << "WriteOnly error 49";tcpSocket->disconnectFromHost(); //断开连接tcpSocket->close(); //关闭套接字return; //如果打开文件失败,中断函数}//弹出对话框,显示接收文件的信息QString str = QString("接收的文件: [%1: %2kb]").arg(fileName).arg(fileSize/1024);//QMessageBox::information(this, "文件信息", str);ui->textEdit->append(str);ui->textEdit->append("正在接收文件……");//设置进度条ui->progressBar->setMinimum(0); //最小值ui->progressBar->setMaximum(fileSize/1024); //最大值ui->progressBar->setValue(0); //当前值}else //文件信息{qint64 len = file.write(buf);if(len >0) //接收数据大于0{recvSize += len; //累计接收大小qDebug() << len;}//更新进度条ui->progressBar->setValue(recvSize/1024);if(recvSize == fileSize) //文件接收完毕{//先给服务发送(接收文件完成的信息)tcpSocket->write("file done");ui->textEdit->append("文件接收完成");QMessageBox::information(this, "完成", "文件接收完成");file.close(); //关闭文件//断开连接tcpSocket->disconnectFromHost();tcpSocket->close();}}});}ClientWidget::~ClientWidget()
{delete ui;
}void ClientWidget::on_buttonConnect_clicked()
{//获取服务器的ip和端口QString ip = ui->lineEditIP->text();quint16 port = ui->lineEditPort->text().toInt();//主动和服务器连接tcpSocket->connectToHost(QHostAddress(ip), port);isStart = true;//设置进度条ui->progressBar->setValue(0);
}
服务器
头文件
#ifndef SERVERWIDGET_H
#define SERVERWIDGET_H#include <QWidget>
#include <QTcpServer> //监听套接字
#include <QTcpSocket> //通信套接字
#include <QFile>
#include <QTimer>namespace Ui {
class ServerWidget;
}class ServerWidget : public QWidget
{Q_OBJECTpublic:explicit ServerWidget(QWidget *parent = 0);~ServerWidget();void sendData(); //发送文件数据private slots:void on_buttonFile_clicked();void on_buttonSend_clicked();private:Ui::ServerWidget *ui;QTcpServer *tcpServer; //监听套接字QTcpSocket *tcpSocket; //通信套接字QFile file; //文件对象QString fileName; //文件名字qint64 fileSize; //文件大小qint64 sendSize; //已经发送文件的大小QTimer timer; //定时器};#endif // SERVERWIDGET_H
实现文件
#include "serverwidget.h"
#include "ui_serverwidget.h"
#include <QFileDialog>
#include <QDebug>
#include <QFileInfo>ServerWidget::ServerWidget(QWidget *parent) :QWidget(parent),ui(new Ui::ServerWidget)
{ui->setupUi(this);//监听套接字tcpServer = new QTcpServer(this);//监听tcpServer->listen(QHostAddress::Any, 8888);setWindowTitle("服务器端口为:8888");//两个按钮都不能按ui->buttonFile->setEnabled(false);ui->buttonSend->setEnabled(false);//如果客户端成功和服务器连接//tcpServer会自动触发 newConnection()connect(tcpServer, &QTcpServer::newConnection,[=](){//取出建立好连接的套接字tcpSocket = tcpServer->nextPendingConnection();//获取对方的ip和端口QString ip = tcpSocket->peerAddress().toString();quint16 port = tcpSocket->peerPort();QString str = QString("[%1:%2] 成功连接").arg(ip).arg(port);ui->textEdit->setText(str); //显示到编辑区//成功连接后,才能按选择文件ui->buttonFile->setEnabled(true);connect(tcpSocket, &QTcpSocket::readyRead,[=](){//取客户端的信息QByteArray buf = tcpSocket->readAll();if(QString(buf) == "file done"){//文件接收完毕ui->textEdit->append("文件发送完毕");file.close();//断开客户端端口tcpSocket->disconnectFromHost();tcpSocket->close();}});});connect(&timer, &QTimer::timeout,[=](){//关闭定时器timer.stop();//发送文件sendData();});}ServerWidget::~ServerWidget()
{delete ui;
}//选择文件的按钮
void ServerWidget::on_buttonFile_clicked()
{QString filePath = QFileDialog::getOpenFileName(this, "open", "../");if(false == filePath.isEmpty()) //如果选择文件路径有效{fileName.clear();fileSize = 0;//获取文件信息QFileInfo info(filePath);fileName = info.fileName(); //获取文件名字fileSize = info.size(); //获取文件大小sendSize = 0; //发送文件的大小//只读方式打开文件//指定文件的名字file.setFileName(filePath);//打开文件bool isOk = file.open(QIODevice::ReadOnly);if(false == isOk){qDebug() << "只读方式打开文件失败 106";}//提示打开文件的路径ui->textEdit->append(filePath);ui->buttonFile->setEnabled(false);ui->buttonSend->setEnabled(true);}else{qDebug() << "选择文件路径出错 118";}}
//发送文件按钮
void ServerWidget::on_buttonSend_clicked()
{ui->buttonSend->setEnabled(false);//先发送文件头信息 文件名##文件大小QString head = QString("%1##%2").arg(fileName).arg(fileSize);//发送头部信息qint64 len = tcpSocket->write( head.toUtf8() );if(len > 0)//头部信息发送成功{//发送真正的文件信息//防止TCP黏包//需要通过定时器延时 20 mstimer.start(20);}else{qDebug() << "头部信息发送失败 142";file.close();ui->buttonFile->setEnabled(true);ui->buttonSend->setEnabled(false);}
}void ServerWidget::sendData()
{ui->textEdit->append("正在发送文件……");qint64 len = 0;do{//每次发送数据的大小char buf[4*1024] = {0};len = 0;//往文件中读数据len = file.read(buf, sizeof(buf));//发送数据,读多少,发多少len = tcpSocket->write(buf, len);//发送的数据需要累积sendSize += len;}while(len > 0);// //是否发送文件完毕
// if(sendSize == fileSize)
// {
// ui->textEdit->append("文件发送完毕");
// file.close();// //把客户端端口
// tcpSocket->disconnectFromHost();
// tcpSocket->close();
// }}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【Unity3D开发小游戏】《塔防游戏》Unity开发教程
文章目录一、前言二、源码二、版本三、开始1、游戏规则2、艺术风格3、摄像机设置4、光线设置5、地面设置6、建筑物设置7、城堡设置8、怪物设置9、生成怪物10、子弹设置11、防御塔设置12、内容拓展 一、前言 在本教程中,我们将创建一个小的三维塔防御游戏与一个完全独特的图形风…...
2024/5/9 12:12:24 - 2020年大学生电子设计竞赛,又来了!
不知不觉,又临近5月份,疫情下的各个比赛活动都受到了影响,今年是偶数年,暑期应该是各个省份的电子设计竞赛比赛之时。还有三四个月,有想参加的比赛的同学应该可以提前准备了。关于比赛的帖子,之前写过很多篇:「第一弹」电子设计大赛应该准备什么?「第一篇」大学生电子设…...
2024/4/21 0:31:17 - 姜启源《数学模型》笔记
第1章 建立数学模型关键词:数学模型 意义 特点第1章是引入的一章,对数学模型的意义来源,做了很好的解释。其实数学模型也是模型的一种,是我们用来研究问题、做实验的工具之一,只不过它比较“理论”、“摸不着”而已。但通常,数学模型有严谨的特点,而且我们可以根据建模实…...
2024/4/21 0:31:16 - java多线程(2)---基于ExecutorService的socket通信线程池
了解线程池 socket通信,如果服务器端采用的实现方式是:一个客户端对应一个线程。那么,每个新线程都会消耗系统资源:创建一个线程会占用CPU周期,而且每个线程都会建立自己的数据结构(如,栈),也要消耗系统内存,另外,当一个线程阻塞时,JVM将保存其状态,选择另外一个线…...
2024/4/20 0:50:08 - 【Unity3D】Unity3D 场景的淡入淡出效果实现
Unity3d 场景的淡入淡出效果实现 思路用UGUI设计一张全屏的纯色图片 控制图片的Alpha值,来实现淡入淡出的效果效果展示实现先新建一张图片,设置锚点为全屏设置颜色值新建脚本Fade_Controlusing UnityEngine; using UnityEngine.UI;//状态效果值 public enum FadeStatuss {Fad…...
2024/4/21 0:31:13 - 2017年全国大学生电子设计大赛有感
2017年全国大学生电子设计大赛有感作为一个大专生,本本不应该提这个比赛,但是参加了还是提一下吧! 作为一名大专生,我的指导老师有一种惯性,专科生比不过本科生。其实他犯了一个错误。在当时的训练情况无论是大专的题目还是本科的题目,只要没有高手的帮助,我们都赢不了。…...
2024/4/21 0:31:13 - 弹性系数法 预测
什么是弹性系数法弹性系数法在对一个因素发展变化预测的基础上,通过弹性系数对另一个因素的发展变化作出预测的一种间接预测方法。弹性系数法适用于两个因素y和x之间有指数函数关系的情况,式中α为比例系数,b为y对x的弹性系数。 弹性一词来源于材料力学中的弹性变形的概念。弹性…...
2024/4/21 0:31:11 - 【翻译】 Unity3D VR 教程:1.VR概述
Unity VR 入门Unity加入了一些对VR的内置的支持,但是只针对几种特定的VR设备。这个指南会专注于Oculus 系列的VR设备, 特别是 Oculus Rift Development Kit 2 (DK2 ) 和 消费者版本的Gear VR(一种手机外设,需要三星Galaxy s6, s6 Edge, s6 Edge+, 或者 Note 5)。也许以后…...
2024/5/3 8:40:37 - 使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)
欢迎转载,请注明转载自微信订阅号(安卓编程入门进阶)。 百度云原清晰度地址:http://pan.baidu.com/s/1mhS0H8O 在socket连接状态下实现客户端发送数据到服务器端的功能,需要在客户端编写字符串输出代码,在服务器端编写数据接收代码。每次有输出时启动一次输出线程来完成,…...
2024/4/21 0:31:11 - 什么是开源软件? 什么是免费软件?GNU是什么意思?
商业软件 商业软件是在计算机软件中,指被作为商品进行交易的软件。相对于商业软件,有非商业的专用软件(但专用软件中亦包含有商业软件),可供分享使用的自由软件、共享软件、免费软件等。 共享软件 共享软件是为了促进IT业的发展,软件开发商或自由软件者推出的免费产品,共…...
2024/5/1 2:46:09 - 2018年TI杯大学生电子设计大赛(D题手势识别)
相关简介题主于大二年级下学期参加了2018年TI杯电子设计大赛(辽宁省),选题为D题《手势识别》,最终为省二等奖,在此将比赛过程及代码进行分享,欢迎前来交流,不足之处还望指正。硬件模块模块数量功能FDC22142手势数据采集kinetis k602手势数据训练与判别oled1手势判别结果…...
2024/5/3 9:16:15 - Unity3d游戏引擎Windy系列教程:3D建模系列板块1(unity支持的建模软件)
好开始一个新的板块,对于一个游戏来说没有游戏建模那么这个游戏就不能称作游戏了吧,我们看到的整个游戏世界都是由许许多多的平面构成的。 是不是觉得不可思议,画面上那么逼真的角色竟是一堆的多边形,事实就是这样,你的屏幕里只是被渲染出来的几万个面而已。 首先今天只介…...
2024/4/21 0:31:06 - 【机器学习项目】意大利新型冠状病毒(Covid-19)感染数学模型及预测(Python)
目录一、项目背景二、项目的数据集1、数据集介绍2、数据集链接三、项目分析四、项目步骤1、安装Python和Scipy平台(1)安装Anaconda(2)检查已安装版本2、导入数据(1)导入程序库(2)导入数据集3、数据集准备4、建立和评估模型(1)logistic模型(The logistic model)(2)…...
2024/4/21 0:31:05 - Android客户端与本地服务器Socket通信
现代生活中,我们的移动设备离不开网络,我们的APP也经常需要连接到网络,所以现在,在这里完成一个简单的Socket通信程序,实现Android客户端与本地的服务器通信。关于网络通信的知识,互联网上有很多相关的讲解,这里就不进行详细的讲解了,直接就代码进行讲解。需要注意的是…...
2024/5/3 5:07:47 - 2017年电子设计大赛(B题 滚球控制系统)赛后总结
2017年电子设计大赛(B题 滚球控制系统)赛后总结电子设计大赛是大学电类专业中的最高赛事,同时个人认为也是能够体现个人能力和技术水平最好赛事。而大赛两年一次国赛,只在单数年举办,今年刚好参加,赛后心得,小结留念。(以控制题为例)电赛应该准备的一些技能,需要注意…...
2024/4/20 21:01:36 - C#中Socket通信编程的异步实现
什么是Socket编程的异步是实现所谓Socket编程的异步实现是指按照异步过程来实现Socket编程,那么什么是异步过程呢,我们把在完成了一次调用后通过状态、通知和回调来告知调用者的方式成为异步过程,换句话说,在异步过程中当调用一个方法时,调用者并不能够立刻得到结果,只有…...
2024/4/20 21:01:37 - [Unity3d]unity与html通信
更多教程请访问:http://dingxiaowei.cn/谈谈今天的学习收获,发现了一个好东西,unity与html能够相互通信,意味着我之前学的web开发还能在unity中用得上,哈哈,太happy了!下面简单谈谈通过Unity3D调用HTML网页的脚本函数,以及通过HTML网页调用Unity3D中的脚本函数。1.1Unit…...
2024/5/2 23:17:09 - 数学建模常用模型05 :多元回归模型
1 基本知识介绍1.1回归模型的引入由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候,通常采取搜集大量数据的办法,基于对数据的统计分析去建立模型,其中用途…...
2024/4/20 21:01:33 - 竞赛 电子设计大赛 四轴无人机 建议
电子设计大赛过多的就不说了,要了解自己查一下就行了。参加电子设计大赛的这一个暑假我觉得自己过的非常的有意义。虽然最终的结果自己不够满意,但是我衷心的感谢所有帮助过我的老师,同学。这一次的比赛我们准备的时间实际上算是长的了。算不上是一股脑子冲上去的,但是导致…...
2024/5/3 3:50:27 - Linux C语言实现的Socket通信
其实这篇文章就是前面一篇文章的复制体,主要是今天闲着无聊,就在Ubuntu下又写了一篇这个传说中的简单Socket通信。以下是Linux网络编程的函数说明socket Function To perform network I/O, the first thing a process must do is call the socket function, specifying the t…...
2024/4/21 0:31:02
最新文章
- Java:就业市场上的常青树-永远的宠儿
除了兴趣,我们学习编程最主要的目标是找一份好工作,选择合适的编程语言就非常重要了,毕竟选择大于努力,男怕选错行,学编程最怕选错语言。比如,如果你选Perl,那就糟糕了,基本上可以断…...
2024/5/9 14:14:23 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - Git 自定义命令
前言 在使用 hexo 搭建个人博客时,共两种部署的方法。分别为: 本地利用 hexo 的插件 hexo-deployer-git 来实现部署,缺点是需要多敲几个命令行且不方便对源码进行云端备份使用 Github Action 的 workflow 自动化部署,优势就是可…...
2024/5/9 3:34:06 - 基于ArrayList实现简单洗牌
前言 在之前的那篇文章中,我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此,便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表&…...
2024/5/9 9:17:23 - ARM FVP平台的terminal窗口大小如何设置
当启动ARM FVP平台时,terminal窗口太小怎么办?看起来非常累眼睛,本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求: 通过上图可知,UART默认使用的是xterm。因此,我们需要修改xterm的默认字体设…...
2024/5/8 11:56:07 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/9 7:32:17 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57