**

引言

**
TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯。控制器可以设置为服务器端或客户端。

关于TCP/IP协议可详看:TCP/IP协议详解 - 知乎 (zhihu.com)

总的来说,TCP/IP通讯有两个部分:

客户端和服务器
QTcpServer(监听套接字)和QTcpSocket(通讯套接字)

监听套接字,顾名思义,监听关于各种通讯的状态,一旦进行通讯,监听套接字会启动通讯套接字,进行通讯

客户端使用connectToHost函数主动连接服务器后,服务器会触发newConnectio这个槽函数,并进行取出QTcpServer(监听套接字),将相关内容取出并赋给QTcpSocket(通讯套接字)。
客户端向服务器发送数据,触发readyRead(),进行处理,彼此传递时,原理都是这样的。

对双方来说都起作用的部分:

一旦建立连接,就会触发connected,服务器特殊一点,触发的是newConnectio
互传数据也是一样的,一旦接受到,就会触发readyread
服务器中,需要监听套接字以及通讯套接字,监听套接字用于监听客户端是否给服务器发送请求

本篇博文做了初步的学习与尝试,编写了一个客户端和服务器基于窗口通信以及文件传输的小例程。

**

一,客户端

**
客户端的代码比服务器稍简单,总的来说,使用QT中的QTcpSocket类与服务器进行通信只需要以下5步:

(1)创建QTcpSocket套接字对象

  socket = new QTcpSocket(this);

(2)使用这个对象连接服务器

QString ip = ui.lineEdit_ip->text();//获取ip
int port = ui.lineEdit_2->text().toInt();//获取端口数据
socket->connectToHost(ip, port);

(3)使用write函数向服务器发送数据

QByteArray data = ui.lineEdit_3->text().toUtf8();//获取lineEdit控件中的数据并发送给服务器
socket->write(data);

(4)当socket接收缓冲区有新数据到来时,会发出readRead()信号,因此为该信号添加槽函数以读取数据

connect(socket, &QTcpSocket::readyRead, this, &QTcpClinet::ReadData);
void QTcpClinet::ReadData()
{QByteArray buf = socket->readAll();ui.textEdit->append(buf);
}

(5)断开与服务器的连接(关于close()和disconnectFromHost()的区别,可以按F1看帮助)

socket->disconnectFromHost();

客户端例程:(新建一个qt项目QTcpClinet(客户机))在这里插入图片描述

ui界面

本地回路ip:127.0.0.1 可以连接到本地ip(电脑内部循环的ip)

如果要和局域网其他ip连接 -> 在运行(win+R)+cmd+ipconfig ->ipv4地址 查看本机ip

QTcpClinet.h

#include <QtWidgets/QWidget>
#include "ui_QTcpClinet.h"
#include"QTcpSocket.h"
#pragma execution_character_set("utf-8")
class QTcpClinet : public QWidget
{Q_OBJECTpublic:QTcpClinet(QWidget *parent = Q_NULLPTR);~QTcpClinet();
public slots:void on_btn_connect_clicked();void ReadData();void on_btn_push_clicked();
private:Ui::QTcpClinetClass ui;QTcpSocket* socket;//创建socket指针
};

QTcpClinet.cpp

#include "QTcpClinet.h"QTcpClinet::QTcpClinet(QWidget *parent): QWidget(parent)
{ui.setupUi(this);socket = new QTcpSocket(this);
}QTcpClinet::~QTcpClinet()
{delete this->socket;//回收内存
}void QTcpClinet::on_btn_connect_clicked()
{if (ui.btn_connect->text()==tr("连接服务器")){QString ip = ui.lineEdit_ip->text();//获取ipint port = ui.lineEdit_2->text().toInt();//获取端口数据//取消已有的连接socket->abort();//连接服务器socket->connectToHost(ip, port);bool isconnect = socket->waitForConnected();//等待直到连接成功//如果连接成功if (isconnect){ui.textEdit->append("The connection was successful!!");ui.btn_push->setEnabled(true);//按钮使能//修改按键文字ui.btn_connect->setText("断开服务器连接");//接收缓冲区(服务器)信息connect(socket, &QTcpSocket::readyRead, this, &QTcpClinet::ReadData);}else{ui.textEdit->append("The connection falied!!");}}else{//断开连接socket->disconnectFromHost();ui.btn_connect->setText("连接服务器");ui.btn_push->setEnabled(false);//关闭发送按钮使能}}//接收缓冲区信息函数
void QTcpClinet::ReadData()
{QByteArray buf = socket->readAll();ui.textEdit->append(buf);
}
//发送按钮事件
void QTcpClinet::on_btn_push_clicked()
{QByteArray data = ui.lineEdit_3->text().toUtf8();//获取lineEdit控件中的数据并发送给服务器socket->write(data);//判断是否写入成功bool iswrite = socket->waitForBytesWritten();if (iswrite){//写入成功}else{//没有写入成功}
}

**

二,服务器(需要一直运行哦)

**
服务器除了使用到了QTcpSocket类,还需要用到QTcpSever类。即便如此,也只是比客户端复杂一点点,用到了6个步骤:

(1)创建QTcpSever对象

server = new QTcpServer(this);

(2)侦听一个端口,使得客户端可以使用这个端口访问服务器

server->listen(QHostAddress::Any, 6677);//监听所有ip和6677端口

(3)当服务器被客户端访问时,会发出newConnection()信号,因此为该信号添加槽函数,并用一个QTcpSocket对象接受客户端访问

connect(server, &QTcpServer::newConnection, this, &TcpServer::ClientConnect);
void TcpServer::ClientConnect()
{//解析所有客户连接while (server->hasPendingConnections()){//连接上后通过socket(QTcpSocket对象)获取连接信息socket = server->nextPendingConnection();QString str = QString("[ip:%1,port:%2]").arg(socket->peerAddress().toString()).arg(socket->peerPort());//监听客户端是否有消息发送connect(socket, &QTcpSocket::readyRead, this, &TcpServer::ReadData1);}
}

(4)使用socket的write函数向客户端发送数据

socket->write(data);

(5)当socket接收缓冲区有新数据到来时,会发出readRead()信号,因此为该信号添加槽函数以读取数据

//监听客户端是否有消息发送
connect(socket, &QTcpSocket::readyRead, this, &TcpServer::ReadData1);
//获取客户端向服务器发送的信息
void TcpServer::ReadData1()
{QByteArray buf = socket->readAll();//readAll最多接收65532的数据QString str = QString("[ip:%1,port:%2]").arg(socket->peerAddress().toString()).arg(socket->peerPort());ui.textEdit_server->append(str +QString(buf));//socket->write("ok");//服务器接收到信息后返回一个ok
}

(6)取消侦听

server->close();

服务器例程:(添加一个新的qt项目TcpServer(服务器))

ui界面
在这里插入图片描述

TcpServer.h

#include <QtWidgets/QWidget>
#include"ui_TcpServer.h"
#include"qtcpserver.h"
#include"qtcpsocket.h"class TcpServer : public QWidget
{Q_OBJECTpublic:TcpServer(QWidget *parent = Q_NULLPTR);~TcpServer();
public slots:void on_btn_server_clicked();void on_btn_listen_clicked();
private:Ui::TcpServerClass ui;QTcpServer* server;QTcpSocket* socket;//一个客户端对应一个socketvoid ClientConnect();void ReadData1();};

TcpServer.cpp

#include "TcpServer.h"
#include"qstring.h"
#include"qdebug.h"
#pragma execution_character_set("utf-8")
TcpServer::TcpServer(QWidget *parent): QWidget(parent)
{ui.setupUi(this);server = new QTcpServer(this);//客户机连接信号槽connect(server, &QTcpServer::newConnection, this, &TcpServer::ClientConnect);
}TcpServer::~TcpServer()
{server->close();server->deleteLater();
}void TcpServer::on_btn_listen_clicked()
{if (ui.btn_listen->text()=="侦听"){//从输入框获取端口号int port = ui.lineEdit_port->text().toInt();//侦听指定端口的所有ipif (!server->listen(QHostAddress::Any, port)){//若出错,则输出错误信息qDebug() << server->errorString();return;}//修改按键文字ui.btn_listen->setText("取消侦听");    }else{socket->abort();//取消侦听server->close();//修改按键文字ui.btn_listen->setText("侦听");}
}void TcpServer::ClientConnect()
{//解析所有客户连接while (server->hasPendingConnections()){//连接上后通过socket获取连接信息socket = server->nextPendingConnection();QString str = QString("[ip:%1,port:%2]").arg(socket->peerAddress().toString()).arg(socket->peerPort());//提示连接成功ui.textEdit_server->append(str+"Connect to the server");//复选框选项为连接服务器的ipui.comboBox->addItem(str);//将socket地址放入combobox属性内//ui.comboBox->setItemData(ui.comboBox->count()-1, QVariant((int)socket));//监听客户端是否有消息发送connect(socket, &QTcpSocket::readyRead, this, &TcpServer::ReadData1);}
}//获取客户端向服务器发送的信息
void TcpServer::ReadData1()
{QByteArray buf = socket->readAll();//readAll最多接收65532的数据QString str = QString("[ip:%1,port:%2]").arg(socket->peerAddress().toString()).arg(socket->peerPort());ui.textEdit_server->append(str +QString(buf));
}//服务器向客户端发送信息
void TcpServer::on_btn_server_clicked()
{if(ui.comboBox->count()== 0)return;//QTcpSocket* skt=  (QTcpSocket*)ui.comboBox->itemData(ui.comboBox->currentIndex()).value<int>();socket->write(ui.lineEdit1->text().toUtf8());
}

注意:write中需要写入char类型的元素或QByteArray类型的元素
在这里插入图片描述

效果展示:

在这里插入图片描述

**

三,TCP/IP文件传输

**
上文实现了消息的传输,由于socket->readAll();(readAll最多接收65532的数据),因此对于大文件的传输用此方法是不可取的。

TCP/IP文件传输的思路:

客户端和服务器连接
客户端选择文件,并发送文件给服务器(发送的是文件的帧头,格式:文件名&大小)
服务器触发readyRead,然后解析文件帧头(获取文件名和大小),并返回客户端一个ok消息
客户端触发readyRead,然后发送文件数据,通过progressBar显示进度
服务器再次触发readyRead,接收文件数据,并保存(通过ishead判断接收的是文件帧头还是文件数据)
代码实现:

新建服务器项目(TcpServer)

TcpServer.h

#pragma once#include <QtWidgets/QWidget>
#include "ui_TcpServer.h"
#include"qtcpserver.h"
#include"qtcpsocket.h"
#pragma execution_character_set("utf-8")
class TcpServer : public QWidget
{Q_OBJECTpublic:TcpServer(QWidget *parent = Q_NULLPTR);void hasConnect();
private:Ui::TcpServerClass ui;QTcpServer* server;QTcpSocket* socket;bool ishead;QString fileName;int fileSize;//接收文件的总大小int recvSize;//当前接收文件的大小QByteArray filebuf;//当前接收的文件数据
};

TcpServer.cpp

#include "TcpServer.h"
#include"qfile.h"
TcpServer::TcpServer(QWidget *parent): QWidget(parent)
{ishead = true;ui.setupUi(this);server = new QTcpServer(this);//监听1122端口的ipserver->listen(QHostAddress::Any, 1122);//如果有用户连接触发槽函数connect(server, &QTcpServer::newConnection, this, &TcpServer::hasConnect);
}void TcpServer::hasConnect()
{while (server->hasPendingConnections()>0)//判断当前连接了多少人{//用socket和我们的客户端连接,一个客户端对应一个套接字socketsocket = server->nextPendingConnection();//服务器界面上输出客户端信息ui.textEdit->append(QString("%1:新用户连接").arg(socket->peerPort()));//如果客户端发送信息过来了,触发匿名函数connect(socket, &QTcpSocket::readyRead, [=]() {QByteArray buf = socket->readAll();//用一个标志位ishead判断是头还是数据位if (ishead){//如果是头,解析头(文件名,文件大小)QString str = QString(buf);ui.textEdit->append(str);QStringList strlist = str.split("&");fileName = strlist.at(0);//解析帧头文件名fileSize = strlist.at(1).toInt();//解析帧头文件大小ishead = false;//下次接收到的文件就是我们的数据recvSize = 0;filebuf.clear();socket->write("ok");}else{//根据文件名和文件大小接收和保存文件filebuf.append(buf);recvSize += buf.size();//每接收一次文件,当前文件大小+1//当接收文件大小等于总文件大小,即文件数据接收完毕if (recvSize>=fileSize){//保存文件QFile file(ui.lineEdit->text() + fileName);file.open(QIODevice::WriteOnly);file.write(filebuf);file.close();ishead = true;}}});}
}

新建客户端项目(QTcpClient)

QTcpClient.h

#include <QtWidgets/QWidget>
#include"ui_QTcpClient.h"
#include"qtcpsocket.h"
#pragma execution_character_set("utf-8")
class QTcpClient : public QWidget
{Q_OBJECTpublic:QTcpClient(QWidget *parent = Q_NULLPTR);
public slots:void on_btn_connect_clicked();void on_btn_choose_clicked();void on_btn_open_clicked();private:Ui::QTcpClientClass ui;QTcpSocket* socket;
};

QTcpClient.cpp

#include "QTcpClient.h"
#include"qfiledialog.h"
#include"qfileinfo.h"
QTcpClient::QTcpClient(QWidget *parent): QWidget(parent)
{ui.setupUi(this);socket = new QTcpSocket(this);}
void QTcpClient::on_btn_connect_clicked()
{QString ip = ui.lineEdit_ip->text();//获取ipint port = ui.lineEdit_port->text().toInt();//获取端口数据socket->connectToHost(ip, port);//连接服务器//等待连接成功if (socket->waitForConnected()){ui.textEdit->append("<font color='green'>连接服务器成功!</font>");    ui.btn_open->setEnabled(true);//如果服务器发送信息到客户端,触发匿名函数connect(socket, &QTcpSocket::readyRead, [=]() {//读取服务器发送的信息(即缓冲区信息)QByteArray buf = socket->readAll();if (buf=="ok"){QFile file = (ui.label_path->text());if (!file.open(QIODevice::ReadWrite)){//读取文件失败return;}qint64 currentlen = 0;//当前已经发送的大小qint64 allLength = file.size();//总文件大小do{char data[1024];qint64 msize = file.read(data, 1024);//读文件放入打他数组中,返回读取到的大小socket->write(data, msize);//把读取到的data数据发送给服务器currentlen += msize;//实时获取当前发送的文件大小ui.progressBar->setValue(currentlen *100 / allLength);//更新界面进度条} while (currentlen < allLength);//当发送文件等于文件大小时,发送完毕,循环结束}});}else{ui.textEdit->append("<font color='red'>连接服务器失败!</font>");}
}
//选择文件事件
void QTcpClient::on_btn_choose_clicked()
{QString path = QFileDialog::getOpenFileName(this, "打开文件", "", "(*.*)");ui.label_path->setText(path);
}
//发送文件事件
void QTcpClient::on_btn_open_clicked()
{QFileInfo info(ui.label_path->text());//用QFileInfo::fileName,size获取文件名和大小 格式:文件名&大小//服务器用该格式解析文件名和大小QString head = QString("%1&%2").arg(info.fileName()).arg(info.size());//将该格式发送给服务器 toUtf8:QString转QByteArray或char类型socket->write(head.toUtf8()); 

}

效果展示:

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Elastic实战:项目中已经剔除了spring data elasticsearch依赖,但启动项目仍然会进行es健康检查

    1. 问题 在实际开发中遇到一个问题&#xff1a;原本在springboot项目中引入了spring data elasticsearch的依赖&#xff0c;后因调整将这个依赖从这个服务中删除了&#xff0c;但是启动服务仍然会进行es的健康检查。也就导致一直有警告日志输出&#xff1a;connection refuse …...

    2024/4/17 7:23:12
  2. <T>是泛型,传入的参数是T,绝不能传入List<T>

    C#的<T>是泛型。List 是集合。 List<T>是泛型集合。 例如以下两种方法传参数时要注意: 传入的参数是T,绝不能传入List<T> ① EF Add方法 /// <summary> /// 新增一个对象 /// </summary> /// <typeparam name"TEntity"></…...

    2024/4/18 18:40:43
  3. SpringMV C面试整理

    1、 什么是 SpringMvc? SpringMvc是spring的一个模块&#xff0c;基于MVC的一个框架&#xff0c;无需中间整合 层来整合。 2、 Spring MVC 的优点&#xff1a; 它是基于组件技术的.全部的应用对象&#xff0c;无论控制器和视图&#xff0c;还是业务对象 之类的都是java组件.…...

    2024/4/28 7:56:46
  4. Vulnhub靶机:CYNIX_ 1

    目录介绍信息收集主机发现主机信息探测网站探测目录扫描网站测试读取SSH私钥SSH连接靶机第一个Flag提权lxd提权第二个Flag参考介绍 难度&#xff1a;中等 靶机发布日期&#xff1a;2019年11月27日 Flag两个&#xff1a;User flag: user.txt&#xff1b;Root flag: root.txt 靶…...

    2024/4/28 9:01:57
  5. 脚手架搭建项目遇到的问题和教程

    安装脚手架遇到的问题和教程 遇到的问题&#xff1a;在cmd窗口中输入&#xff1a;vue init webpack 项目名 &#xff0c;显示vue init webpack 项目名 不是内部命令或外部命令。 解决方案&#xff1a;可能是没有搭建脚手架的原因&#xff0c;应该先搭建脚手架&#xff0c;然后…...

    2024/4/19 0:54:37
  6. C# WinForm控件随窗体大小改变自动适应改变

    C# WinForm控件随窗体大小改变自动适应改变 在设计可供用户调整大小的窗体时&#xff0c;如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位&#xff1f;此时就要借助控件的&#xff0e;Anchor属性。Anchor属性定义控件的定位点位置。当控件锚定到某…...

    2024/4/14 19:05:27
  7. proxy解决跨域问题

    本文基于对王红元老师的学习&#xff0c;很荣幸是他的一名学生 1.proxy介绍 proxy是我们开发中非常常用的一个配置选项&#xff0c;它的目的设置代理来解决跨域访问的问题&#xff1a; p比如我们的一个api请求是 http://localhost:8888&#xff0c;但是本地启动服务器的域名是…...

    2024/4/14 19:05:02
  8. java String字符、字节、字符串及其常见方法详解

    文章目录前言一、字符&#xff0c;字节与字符串1.1字符与字符串1.2字节与字符串1.3小结二、字符串常见操作2.1字符串比较2.2字符串查找2.3字符串替换2.4字符串拆分2.5字符串截取2.6其他操作方法三、StringBuffer和StringBuilder总结前言 String是我们学习java中非常重要的一个…...

    2024/4/14 19:05:02
  9. selenium 火狐浏览器下载文件

    f webdriver.FirefoxProfile() f.set_preference("browser.download.folderList", 2) # 设置为0&#xff0c;表示文件下载到浏览器默认的下载路径&#xff1b;设置为2&#xff0c;表示文件会下载到指定的目录 f.set_preference("browser.download.dir", …...

    2024/4/16 22:11:00
  10. 车联网通信协议之C-V2X

    C-V2X(即Cellular Vehicle to Everything&#xff0c;蜂窝车联网)就是利用蜂窝网络将车辆与一切事物连接的技术。其中&#xff0c;Cellular技术包括3G/4G/5G&#xff0c;V2X包括V2V(Vehicle to Vehicle&#xff0c;车与车之间)、V2I(Vehicle to Infrastructure&#xff0c;车与…...

    2024/4/20 13:34:08
  11. 机器学习(24天,二叉树的建立)

    代码方面&#xff1a; 整个二叉树的建立在最初可能会略显繁琐&#xff0c;所以拆分成几个步骤&#xff0c;从最开始用顺序表储存节点&#xff0c;然后再用循环将所有节点连接起来&#xff0c;这样做的原因是顺序表的顺序性很强&#xff0c;最后再遍历回去找到最初的节点并定为根…...

    2024/4/14 19:04:52
  12. pyqt 为新建子线程传参以及子线程返回数据到主线程

    最近在用qt做项目的时候&#xff0c;由于项目只有一个线程&#xff0c;所以在处理图片的时候&#xff0c;视频流就卡住了。以下用一个例子简单记录如何解决新建子线程时传参和子线程返回数据到主线程的问题。 UI代码&#xff08;untitled.py&#xff09; from PyQt5 import Qt…...

    2024/4/14 19:05:12
  13. 主机os重装节点加回RAC集群

    前言 在正常的生产环境当中&#xff0c;我们有时候会遇到主机磁盘以及其他硬件故障导致主机OS系统无法启动&#xff0c;或者OS系统本身故障无法修复的情况。这时候除了重装OS系统也没别的办法&#xff0c;但是重装后改如何加入原有的RAC集群呢 &#x1f447;&#x1f447;下面…...

    2024/4/14 19:05:07
  14. 第3章动态链表_单向循环链表的应用之逢七过

    逢7过小游戏 package P3.链式结构;import P2.线性结构.ArrayList;import java.util.Scanner;//逢七过游戏 /* 输入玩家的个数 输入从哪个玩家开始 输入该玩家从哪个数字开始 输入一共玩几个游戏 打印出每个玩家将要报出的所有数字 * */ public class SevenGame {public static …...

    2024/4/14 19:04:52
  15. 六种常见的排序算法的基本原理及python实现(冒泡排序,选择排序,快速排序,插入排序,归并排序,希尔排序)

    算法中最基础的应该就是排序算法了&#xff0c;今天简单介绍一下几种常用的排序算法 文章目录冒泡排序选择排序快速排序插入排序归并排序希尔排序叮&#xff01;冒泡排序 冒泡排序每轮走访一次要排序的元素列表&#xff0c;依次比较两个相邻的元素&#xff0c;如果两个元素顺序…...

    2024/4/14 19:05:27
  16. rocketMq如何保证未commit的事务消息不被消费?

    在试图分析rocketMq如何保证未commit的事务消息不被消费的基础上我们要先搞清楚以下2个问题。 1.rocketMq事务消息如何实现&#xff1f; 2.rocketMq事务消息如何存储&#xff1f; 第一个问题在rocketMq官网有答案&#xff1a; “它可以被认为是一个两阶段的提交消息实现&#x…...

    2024/4/7 3:43:39
  17. 显示整数的位数

    编写一段程序&#xff0c;读取一个正整数&#xff0c;显示其位数。 ※注意&#xff1a;代码清单中while语句的循环次数和no的位数一致。 请输入一个正整数&#xff1a;1963 1963的位数是4。输入样例: -3 1963输出样例: 请输入一个正整数&#xff1a;请不要输入非正整数。 请…...

    2024/4/7 3:43:39
  18. 一月十五日 左值与右值

    按字面意思&#xff0c;通俗地说。以赋值符号 为界&#xff0c; 左边的就是左值&#xff0c; 右边就是右值。 比如&#xff1a;(1) int b 3;(2) int a b;第(2)行代码&#xff0c;a为左值&#xff0c;b为右值。 更深一层&#xff0c;可以将 L-value 的 L, 理解成 Location&am…...

    2024/4/19 12:18:26
  19. python函数的参数问题

    def fun(b): xa1 #1a1 #2return x a2 print(fun(a),id(a))这段代码是错的。 #2处对a进行赋值&#xff0c;说明a是局部变量&#xff0c;那么#1的a就没有值了。 def fun(b): xa1 #1return x a2 print(fun(a),id(a))这段代码是正确的。#1的a就是2。 ————————————…...

    2024/4/19 16:16:24
  20. Java之HashMap.values()转List时的错误和正确操作

    因为项目中需要获取到Map的值的集合&#xff0c;所以调用了HashMap.values()方法转成List&#xff0c;当时是使用了以下代码。&#xff08;逻辑上这样想应该没问题&#xff0c;但生活总是会是不是给你一点小“”惊喜“”&#xff09; List<AreaItemOpt> areaItemOpts (…...

    2024/4/15 9:46:34

最新文章

  1. 【cf】Codeforces Round 941(Div.2)题解 A - D

    前三题出的最快的一次&#xff0c;但是d没出 A. Card Exchange 只要有一种颜色大于等于 k&#xff0c;那就是 k-1&#xff0c;否则就是 n #include <bits/stdc.h>using namespace std;#define int long long using i64 long long;typedef pair<int, int> PII;…...

    2024/4/28 12:55:02
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. springboot 项目整合easy-captcha验证码功能

    效果 1、验证码使用easy-captcha,在pom文件增加依赖 <!-- google 验证码 --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId></dependency> 2、增加获取kaptcha的ctrl package com.*.*.s…...

    2024/4/24 13:16:37
  4. Stable Diffusion的界面参数详解

    Stable Diffusion作为一款强大的文本到图像生成模型,其界面参数是用户与模型进行交互的重要桥梁。这些参数不仅影响着模型的生成效果,还能够帮助用户更加精准地控制生成图像的风格、内容等。本文将详细介绍Stable Diffusion的界面参数,帮助用户更好地理解和应用这一工具。 …...

    2024/4/25 11:56:34
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在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