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

[Qt][Qt 网络][下]详细讲解

目录

  • 1.TCP Socket
    • 1.核心API概览
    • 2.回显服务器
    • 3.回显客户端
  • 2.HTTP Client
  • 3.其他模块


1.TCP Socket

1.核心API概览

  • 核⼼类是两个:QTcpServerQTcpSocket
  • QTcpServer用于监听端口,和获取客户端连接
    • listen(const QHostAddress&, quint16 port):绑定指定的地址和端⼝号,并开始监听
      • 成员方法
      • 对标原⽣API:bind() 和listen()
    • nextPendingConnection():从系统中获取到⼀个已经建⽴好的tcp连接
      • 返回⼀个QTcpSocket,表⽰这个客⼾端的连接
        • 通过这个socket对象完成和客⼾端之间的通信
      • 成员方法
      • 对标原⽣API:accept()
    • newConnection():有新的客⼾端建⽴连接好之后触发
      • 信号
      • 类似于IO多路复用的通知机制
  • QTcpSocket⽤于客⼾端和服务器之间的数据交互
    • readAll():读取当前接收缓冲区中的所有数据,返回QByteArray对象
      • 成员方法
      • 对标原生API:read()
    • write(const QByteArray &):把数据写⼊socket中
      • 成员方法
      • 对标原生API:write()
    • deleteLater():暂时把socket对象标记为⽆效,Qt会在下个事件循环中析构释放该对象
      • 成员方法
      • 类似于"半⾃动化的垃圾回收"
    • readyRead():有数据到达并准备就绪时触发
      • 信号
      • 类似于IO多路复⽤中的通知机制
    • disconnected():连接断开时触发
      • 信号
      • 类似于IO多路复⽤中的通知机制

2.回显服务器

// 构造函数中
{server = new QTcpServer(this);// 通过信号槽, 指定如何处理连接.connect(server, &QTcpServer::newConnection, this, &Widget::ProcessConnection);// 绑定并监听端口号if (!ret = server->listen(QHostAddress::Any, 2333)) {QMessageBox::critical(this, "服务器启动失败!", server->errorString());exit(1);}
}void Widget::ProcessConnection()
{// 通过 server 拿到一个 socket 对象, 通过这个对象来和客户端进行通信QTcpSocket* clientSocket = tcpServer->nextPendingConnection();QString log = "[" + clientSocket->peerAddress().toString() + ":" + QString::number(clientSocket->peerPort()) + "] 客户端上线!";ui->listWidget->addItem(log);// 通过信号槽, 来处理客户端发来请求的情况connect(clientSocket, &QTcpSocket::readyRead, this, [=]() {// a) 读取出请求数据,此处 readAll 返回的是 QByteArray, 通过赋值转成 QStringQString request = clientSocket->readAll();// b) 根据请求处理响应const QString& response = Process(request);// c) 把响应写回到客户端clientSocket->write(response.toUtf8());// d) 把上述信息记录到日志中.QString log = "[" + clientSocket->peerAddress().toString() + ":" + QString::number(clientSocket->peerPort()) + "] "+ " req: " + request + ", resp: " + response;ui->listWidget->addItem(log);});// 通过信号槽, 来处理客户端断开连接的情况.connect(clientSocket, &QTcpSocket::disconnected, this, [=]() {// a) 把断开连接的信息通过日志显示出来.QString log = "[" + clientSocket->peerAddress().toString() + ":" + QString::number(clientSocket->peerPort()) + "] 客户端下线!";ui->listWidget->addItem(log);// b) 手动释放 clientSocket. 直接使用 delete 是下策, 使用 deleteLater 更加合适clientSocket->deleteLater();});
}QString Widget::Process(const QString request)
{return request;
}

3.回显客户端

// 构造函数中
{socket = new QTcpSocket(this);// 服务器建立连接,此处是非阻塞的IO通信socket->connectToHost("127.0.0.1", 2333);// 连接信号槽, 处理响应connect(socket, &QTcpSocket::readyRead, this, [=]() {// a) 读取出响应内容QString response = socket->readAll();// b) 把响应内容显示到界面上.ui->listWidget->addItem("服务器说: " + response);});// 等待连接建立的结果. 确认是否连接成功.if (!socket->waitForConnected()) {QMessageBox::critical(this, "连接服务器出错", socket->errorString());exit(1);}
}void Widget::on_pushButton_clicked()
{const QString& text = ui->lineEdit->text();socket->write(text.toUtf8());ui->listWidget->addItem("客户端说: " + text);ui->lineEdit->setText("");
}

2.HTTP Client

  • Qt只提供了Http客户端,并没有提供Http服务端的库
  • 关键类主要是三个:QNetworkAccessManager , QNetworkRequest , QNetworkReply
  • QNetworkAccessManager提供了HTTP的核⼼操作
    • get(const QNetworkRequest&):发起⼀个HTTP GET请求,返回QNetworkReply对象
      • 本身不是阻塞函数,只负责发出去请求,不负责等请求回来
      • 收是QNetworkReply负责的,会收到finished信号
    • post(const QNetworkRequest&, const QByteArray&):发起⼀个HTTP POST请求,返回QNetworkReply对象
  • QNetworkRequest表⽰⼀个HTTP请求(不含body),如果需要发送⼀个带有body的请求(⽐如post),会在QNetworkAccessManagerpost()中通过单独的参数来传⼊body
    • QNetworkRequest(const QUrl&):通过URL构造⼀个HTTP请求
    • setHeader(QNetworkRequest::KnownHeaders header, const QVariant& value):设置请求头
      • QNetworkRequest::KnownHeaders是⼀个枚举类型,常⽤取值
        • ContentTypeHeader:描述body的类型
        • ContentLengthHeader:描述body的⻓度
        • LocationHeader:⽤于重定向报⽂中指定重定向地址
        • CookieHeader:设置cookie
        • UserAgentHeader:设置User-Agent
  • QNetworkReply表⽰⼀个HTTP响应,这个类同时也是QIODevice的⼦类
    • error():获取出错状态
    • errorString():获取出错原因的⽂本
    • readAll():读取响应body
    • header(QNetworkRequest::KnownHeaders header):读取响应指定header的值
    • finished():为一个信号,在客⼾端收到完整的响应数据之后触发
  • 示例
    // 构造函数中
    {manager = new QNetworkAccessManager(this);
    }void Widget::on_pushButton_clicked()
    {// 1. 获取到输入框中的 urlQUrl url(ui->lineEdit->text());// 2. 构造一个 HTTP 请求对象QNetworkRequest request(url);// 3. 发送请求QNetworkReply* response = manager->get(request);// 4. 通过信号槽, 来处理响应connect(response, &QNetworkReply::finished, this, [=]() {if (response->error() == QNetworkReply::NoError) {QString html = response->readAll();ui->plainTextEdit->setPlainText(html);} else {ui->plainTextEdit->setPlainText(response->errorString());}// 需要对 response 进行手动释放.response->deleteLater();});
    }
    

3.其他模块

  • Qt中还提供了FTP,DNS,SSL等⽹络相关的组件⼯具,有需要可以具体学习,查阅官方文档

相关文章:

[Qt][Qt 网络][下]详细讲解

目录 1.TCP Socket1.核心API概览2.回显服务器3.回显客户端 2.HTTP Client3.其他模块 1.TCP Socket 1.核心API概览 核⼼类是两个:QTcpServer和QTcpSocketQTcpServer用于监听端口,和获取客户端连接 listen(const QHostAddress&, quint16 port)&#…...

十三、OpenCVSharp的目标检测

文章目录 简介一、传统目标检测方法1. 基于滑动窗口的检测2. 特征提取与分类器结合(如 HOG + SVM)3. 级联分类器二、基于深度学习的目标检测1. YOLO 系列算法2. SSD 算法3. Faster R-CNN 算法三、深度学习目标检测模型的训练和部署四、目标检测的性能评估指标1. 准确率、召回…...

STM32标准库学习笔记-6.定时器-输入捕获

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】 定时器输入捕获 IC(Input Capture)输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率…...

vue前端可以完整的显示编辑子级部门,用户管理可以为用户分配角色和部门?

用户和角色是一对多的关系用户和部门是多对多得关系<template><div class="s"><!-- 操作按钮 --><div class="shang"><el-input v-model="searchText" placeholder="请输入搜索关键词" style="width:…...

量化交易的基石:ExchangeSdk

作为长期混迹在合约市场的老韭菜来说&#xff0c;已不能满足与手动下单来亏钱&#xff0c;必须得通过脚本来加速&#xff0c;为了达到这个目的就产生了项目。目前封装的主要是合约的API接口&#xff0c;不支持现货交易。 Github: https://github.com/silently9527/exchange-sdk…...

【区块链+金融服务】基于区块链的一站式绿色金融开放平台 | FISCO BCOS应用案例

科技的进步为绿色金融发展提供了新的机遇&#xff0c;但银行、企业、第三方金融机构等在进行绿色金融业务操作过程中&#xff0c; 存在着相关系统和服务平台建设成本高、迭代难度大、数据交互弱、适配难等痛点。 基于此&#xff0c;中碳绿信采用国产开源联盟链底层平台 FISCO …...

使用Python实现深度学习模型:智能娱乐与虚拟现实技术

介绍 智能娱乐与虚拟现实(VR)技术正在改变我们的娱乐方式。通过深度学习模型,我们可以创建更加沉浸式和智能化的娱乐体验。本文将介绍如何使用Python和深度学习技术来实现智能娱乐与虚拟现实的应用。 环境准备 首先,我们需要安装一些必要的Python库: pip install pand…...

亚马逊云科技产 Amazon Neptune 图数据库服务体验

目录 图数据库为什么使用图数据库Amazon Neptune实践登陆创建 S3 存储桶notebook图神经网络快速构建加载数据配置端点Gremlin 查询删除环境删除 S3 存储桶 总结 图数据库 图数据库是一种专门用于存储和处理图形数据结构的数据库管理系统。图形数据结构由节点&#xff08;Node&…...

【网络安全】重置密码token泄露,实现账户接管

未经许可&#xff0c;不得转载。 文章目录 正文 正文 对某站点测试过程中&#xff0c;登录账户触发忘记密码功能点&#xff0c;其接口、请求及响应如下&#xff1a; PUT /api/v1/people/forgot_password 可以看到&#xff0c;重置密码token和密码哈希均在响应中泄露。 删除co…...

计算机基础知识复习8.13

cookie和session区别 cookie:是服务器发送到浏览器&#xff0c;并保存在浏览器端的一小块数据 浏览器下次访问服务时&#xff0c;会自动携带该块数据&#xff0c;将其发送给服务器 session:是javaEE标准&#xff0c;用于在服务端记录客户端信息 数据存放在服务端更加安全&a…...

Unity URP无光照下Shadow 制作 <二> 合批处理

闲谈 相信大家在日常工作中发现了一个问题 &#xff0c; urp下虽然可以做到3个Pass 去写我们想要的效果&#xff0c;但是&#xff0c;不能合批&#xff08;不能合批&#xff0c;那不是我们CPU要干冒烟~&#xff01;&#xff09; 好家伙&#xff0c;熊猫老师的偏方来了 &#x…...

微乐校园pf

TOC springboot451微乐校园pf 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这…...

文件其他相关函数

symlink 链接文件: file.txt -> hello.c 软链接文件、符号链接文件 硬链接文件 命令行&#xff1a;ln -s 123 softlink 快捷方式 int symlink(const char *oldpath, const char *newpath); 功能: 创建一个链接向oldpath文件的新符号链接文件 参数: oldpath:被链接向…...

SQLALchemy ORM 的关联关系之 ORM 中的多对多

SQLALchemy ORM 的关联关系之 ORM 中的多对多 场景示例实现多对多关系定义模型插入和查询数据总结在 SQLAlchemy ORM 中,多对多(Many-to-Many)关联关系是一种常见的关系类型,它表示两个表中的行可以相互关联,即一个表中的多行可以与另一个表中的多行相关联。为了实现这种关…...

sdkman install慢,采用squid代理

(1)A机器,IP:yy.yy.yy.yy 安装squid yum install squidvi /etc/squid/squid.confacl allowed_ip src xx.xx.xx.xx http_access allow allowed_ip http_access deny allsystemctl restart squid 开放3128端口 (2)B机器&#xff0c;IP:xx.xx.xx.xx, export http_proxyhttp://y…...

实时监控Windows服务器:使用Prometheus和Grafana的终极方案

视频指南 【1】快速上手&#xff1a;在Windows系统上部署Prometheus与Grafana&#xff0c;实时监控性能指标 【2】快速上手&#xff1a;在Windows系统上部署Prometheus与Grafana&#xff0c;实时监控性能指标 1. 下载并安装 Prometheus 下载 Prometheus&#xff1a; 访问 Pro…...

【文科生能看懂的】牛顿二项式定理

牛顿二项式定理 简单的二项式整数次幂展开的结果中的规律结果中各项的指数结果中各项的系数 二项式定理 牛顿二项式定理就是用来求某个二项式的整数次幂的展开式的。 简单的二项式整数次幂 我们可以先从简单的情况开始&#xff0c;比如二项式 ( a b ) (ab) (ab)的整数次幂&a…...

Fly Catcher:通过监测恶意信号来检测飞机欺骗

Fly Catcher 的开发者 Angelina Tsuboi 是一名飞行员、网络安全研究员和发明家。 她决定着手一个将这三个不同兴趣结合起来的项目&#xff0c;以解决航空雷达系统的一个重大问题。 ADS-B 系统最初用于基本的飞机定位和跟踪&#xff0c;Tsuboi 对该系统的网络安全方面进行了深…...

计算机网络——HTTP协议详解(上)

一、HTTP协议简单介绍 1.1 什么是HTTP协议 HTTP&#xff08;超文本传输协议&#xff09;是一种用于在Web浏览器和Web服务器之间传输数据的应用层协议。它是一种无状态协议&#xff0c;即服务器不会保留与客户端的任何连接状态信息&#xff0c;每个请求都被视为一个独立的事务。…...

十九、中介者模式

文章目录 1 基本介绍2 案例2.1 Developer 抽象类2.2 FrontendDeveloper 类2.3 BackendDeveloper 类2.4 Mediator 接口2.5 ProjectManager 类2.6 Client 类2.7 Client 类的运行结果2.8 总结 3 各角色之间的关系3.1 角色3.1.1 Colleague ( 同事 )3.1.2 ConcreteColleague ( 具体的…...

编程参考 - 头文件中使用static inline

在Linux kernel的头文件中&#xff0c;经常使用static inline来声明一个函数。 比如include/linux/delay.h中&#xff0c; static inline void ssleep(unsigned int seconds) { msleep(seconds * 1000); } static Keyword * 范围限制&#xff1a; 当应用于函数或变量时&#…...

Uniapp使用antd组件库

组件库官网 https://www.antdv.com/docs/vue/introduce-cn 安装 在命令行终端输入 npm uni --save ant-design-vue配置 我这里用的是uniapp的vue3版本模板 在main.js里面引入 只要改下面带序号的地方即可 import App from ./App// #ifndef VUE3 import Vue from vue im…...

计算机毕业设计选题推荐-高校实验室管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

nest定义响应码message文本

需求 需要对接口的异常响应码&#xff0c;手动设置message文本&#xff01;&#xff01;&#xff01; 例如&#xff1a;项目中使用multer中间件实现文件上传&#xff0c;multer设置了文件大小限制&#xff0c;该中间件校验文件时错误&#xff08;文件超出&#xff09;会自动响…...

Java | Leetcode Java题解之第342题4的幂

题目: 题解&#xff1a; class Solution {public boolean isPowerOfFour(int n) {return n > 0 && (n & (n - 1)) 0 && n % 3 1;} }...

【日常开发】java中一个list对象集合 将字段a为 大豆 小麦 玉米等元素放在最前面 并组成新集合

&#x1f388;边走、边悟&#x1f388;迟早会好 在Java中实现这个功能&#xff0c;可以使用Stream来筛选出符合条件的元素&#xff0c;将它们放在新集合的前面&#xff0c;同时保留其他元素在新集合的后面。以下是如何实现的代码示例&#xff1a; 代码示例&#xff1a; impo…...

C++ 设计模式——原型模式

原型模式 原型模式主要组成部分原型模式的使用步骤原型模式的 UML 图原型模式 UML 图解析优点和缺点适用场景总结 原型模式 原型(Prototype)模式是一种创建型模式。原型模式通过(原型对象)克隆出对个一模一样的对象。实际上&#xff0c;该模式与其说是一种设计模式&#xff0c…...

【Harmony OS 4.0】待办列表案例

src/main/ets/example1/Models.ets // 定义class类数据模型 export class TaskDataModel {// private 私有属性&#xff0c;在类对象外不允许随意更改数据&#xff0c;必须本地初始化。private tasks: Array<string> [早起晨练, 准备早餐, 阅读名著, 学习ArkTs, 玩游戏…...

快速把文件名统计到excel表的方法

文件名统计到EXCEL表&#xff0c;这似乎很多人都没听说过&#xff0c;因为它与EXCEL表格不沾边&#xff0c;那么这个需求如何实现&#xff0c;用到什么方法&#xff0c;今天给大家介绍一个比较实用的方法&#xff0c;它可以把文件名或文件夹的名快速提取并统计到EXCEL表格上去。…...

开源通用验证码识别OCR —— DdddOcr 源码赏析(一)

文章目录 [toc] 前言DdddOcr环境准备安装DdddOcr使用示例 源码分析实例化DdddOcr实例化过程 分类识别分类识别过程 未完待续 前言 DdddOcr 源码赏析 DdddOcr DdddOcr是开源的通用验证码识别OCR 官方传送门 环境准备 安装DdddOcr pip install ddddocr使用示例 示例图片如…...

上升ECMAScript性能优化技巧与陷阱(下)

4. 深拷贝和浅拷贝的选择不当 在JavaScript中&#xff0c;对象是通过引用传递的&#xff0c;这意味着当你将一个对象赋值给另一个变量时&#xff0c;你实际上是在传递对象的引用&#xff0c;而不是对象本身。这导致了一个常见的问题&#xff1a;当你修改一个对象的属性时&…...

用7EPhone云手机进行TikTok的矩阵运营

“根据市局机构Statista发布的报告显示&#xff0c;截至2024年4月&#xff0c;TikTok全球下载量超过49.2亿次&#xff0c;月度活跃用户数超过15.82亿。TikTok的流量受欢迎程度可想而知&#xff0c;也一跃成为了全球第五大最受欢迎的社交APP。” 人群密集的地方社区也是适合推广…...

谷歌浏览器下载文件被阻止怎么解除

在工作生活中&#xff0c;我们会使用谷歌浏览器下载各种各样的文件&#xff0c;不过偶尔会遇到文件下载被阻止的情况。为了解决这一问题&#xff0c;本文为大家分享了实用的措施建议&#xff0c;一起来了解一下吧。&#xff08;本文由https://chrome.cmrrs.com/站点的作者进行编…...

apt E: 无法定位软件包 winehq-stable

执行了 添加wine源 wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources还需要执行 更新源 apt update...

P2460[SDOI2007] 科比的比赛

第一次做洛谷系列&#xff0c;紧张&#xff0c;请多关照哦 题目传送门&#xff1a;[SDOI2007] 科比的比赛 - 洛谷 思路分析 这道题大概题意是给定我们的主人公 Kobe Bryant 的 mm 个对手&#xff0c;nn 场比赛相对应的获胜概率。求 Kobe Bryant 最大全部获胜概率和打败对手能…...

linux学习--第二天

--Linux文件系统 -显示文件命令 cat 1. cat -b 文件&#xff1a;从1开始对非空输出行编号 2. cat -n 文件&#xff1a;从1开始对所有行编号 3. cat -s 文件&#xff1a;将连续多行空白行合并 more&#xff08;显示一屏文本内容&#xff09; 1. more -num 文件&#xff…...

使用 Flask、Celery 和 Python 实现每月定时任务

为了创建一个使用 Flask、Celery 和 Python 实现的每月定时任务&#xff0c;我们需要按照以下步骤进行&#xff1a; 1.安装必要的库 我们需要安装 Flask、Celery 和 Redis&#xff08;作为消息代理&#xff09;。我们可以使用 pip 来安装它们&#xff1a; bash复制代码 ​ p…...

【c语言】整数在内存中的储存(大小端字节序)

整数在内存中的储存&#xff08;大小端字节序&#xff09; 1.整数在内存中的储存 2.大小端字节序 3.整数在内存中储存例子 4.字节序判断 5.死循环现象 文章目录 整数在内存中的储存&#xff08;大小端字节序&#xff09;整数在内存中的储存大小端字节序什么是大小端为什么会有…...

浅谈SIMD、向量化处理及其在StarRocks中的应用

前言 单指令流多数据流(SIMD)及其衍生出来的向量化处理技术已经有了相当的历史&#xff0c;并且也是高性能数据库、计算引擎、多媒体库等组件的标配利器。笔者在两年多前曾经做过一次有关该主题的内部Geek分享&#xff0c;但可能是由于这个topic离实际研发场景比较远&#xff0…...

【ML】Image Augmentation)的作用、使用方法及其分类

图像增强&#xff08;Image Augmentation&#xff09;的作用、使用方法及其分类 1. 图像增强的定义2. 图像增强的作用3. 什么时候使用图像增强&#xff1f;4. 图像增强详细方法分类梳理4.1 图像增强方法列表4.2 边界框增强方法5. 参考资料 yolov3&#xff08;一&#xff1a;模型…...

设计模式六大原则(一)--单一职责原则

1. 简介 1.1. 概述 一个类或模块应该只负责完成一项任务或承担一个责任。如果一个类或模块承担了多个职责,那么当需要修改其中一个职责的功能时,就可能会对其他职责产生影响,从而导致代码耦合度增加,维护起来更加困难。 1.2. 主要特点 单一职责原则(Single Responsibi…...

c语言学习,malloc()函数分析

1&#xff1a;malloc() 函数说明&#xff1a; 申请配置size大小内存空间 2&#xff1a;函数原型&#xff1a; void *malloc(size_t size) 3&#xff1a;函数参数&#xff1a; 参数size&#xff0c;为申请内存大小 4&#xff1a;返回值&#xff1a; 配置成功则返回指针&#…...

【运维项目经历|041】上云项目-物理机迁移到阿里云

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社区:CSDN云计算交流社区欢迎您的加入! 目录 项目名称 项目背景 项目目标 项…...

分组并合并其它列的非空值 --Excel难题#83

Excel第1列是分类&#xff0c;第2-42列是平行的多个数据项列&#xff0c;下表用部分列示例。数据有X或null两种情况&#xff0c;同一个分类的同一列数据偶尔有重复。 ABCDE1IDCriteria1Criteria2Criteria3Criteria42FirstValueX3FirstValueX4FirstValueX5FirstValueX6SecondVa…...

VM相关配置及docker

NAT——VMnet8网卡 桥接——WLAN/网线 仅主机——VMnet1网卡 docker与虚拟机的区别 启动docker服务 systemctl start docker 重启 systemctl start docker关闭docker服务 systemctl stop docker.servicedocker的两大概念 镜像&#xff1a;images&#xff0c;应用程序的静态文…...

Redis中Set数据类型常用命令

目录 1. 添加元素 2. 移除元素 3. 检查成员是否存在 4. 获取集合成员 5. 获取集合成员数量 6. 随机获取集合中的一个成员 7. 集合运算 8. 集合的移值 9. 提供集合的随机元素 在Redis中&#xff0c;Set是一种无序且不重复的字符串集合。 1. 添加元素 SADD key member [member ..…...

mysql误删数据恢复记录

背景 1、数据库版本 5.7.36&#xff0c;由于误操作删掉了表的所有数据&#xff0c;但是数据库备份每天凌晨进行、只能从备份恢复昨日的全量数据&#xff0c;当日的数据将会丢失 查看binlog配置 binlog配置 [mysqld] #设置日志三种格式&#xff1a;STATEMENT、ROW、MIXED 。 bi…...

论文阅读:Real-time Controllable Denoising for Image and Video

这篇文章是 CVPR 2023 的一篇文章&#xff0c;探讨了在图像与视频降噪中&#xff0c;如何实时控制降噪强度的问题。 Abstract 图像或者视频降噪&#xff0c;是在细节与平滑度之间的一个微妙的平衡&#xff0c;因为噪声与细节都属于高频信息&#xff0c;降噪在去除噪声的同时&…...

【Kubernetes】虚拟 IP 与 Service 的代理模式

虚拟 IP 与 Service 的代理模式 1.userspace 代理模式2.iptables 代理模式3.IPVS 代理模式 由于 Service 的默认发布类型是 ClusterlP&#xff0c;因此也可以把 ClusterIP 地址叫作 虚拟 IP 地址。在 Kubernetes 创建 Service 时&#xff0c;每个节点上运行的 kube-proxy 会自动…...

深度学习·Pytorch

以下代码源自李沐 自定义模块类 继承module类 继承nn.Module重写构造函数前向传播 class MLP(nn.Module):# 用模型参数声明层。这里&#xff0c;我们声明两个全连接的层def __init__(self):# 调用MLP的父类Module的构造函数来执行必要的初始化。# 这样&#xff0c;在类实例…...