14-1_Qt 5.9 C++开发指南_网络编程及主机信息查询_HostInfo
Qt 网络模块提供了用于编写 TCP/IP 客户端和服务器端程序的各种类,如用于 TCP 通信的QTcpSocket 和 QTcpServer,用于 UDP 通信的 QUdpSocket,还有用于实现 HTTP、FTP 等普通网络协议的高级类如 QNetworkRequest,QNetworkReply 和QNetworkAccessManager。Qt 网络模块还提供用于网络代理、网络承载管理的类,提供基于安全套接字层 (Secure Sockets Layer,SSL)协议的安全网络通信的类。
本章主要介绍基本的 TCP 和 UDP 网络通信类的使用,基于 HTTP 的网络下载管理的实现。
要在程序中使用 Qt 网络模块,需要在项目配置文件中增加一条配置语句:
Qt+= network
文章目录
- 1. QHostInfo 和 QNetworkInterface 类
- 2.可视化UI设计框架
- 3. QHostInfo的使用
- 3.1 显示本机地址信息
- 3.2 查找主机地址信息
- 4. QNetworkInterface 的使用
- 5. 源码
- 5.1 dialog.h
- 5.2 dialog.cpp
1. QHostInfo 和 QNetworkInterface 类
查询一个主机的MAC地址或IP 地址是网络应用程序中经常用到的功能,Qt提供了QHostInfo和QNetworkInterface 类可以用于此类信息的查询。
QHostInfo 的静态函数 localHostName()可获取本机的主机名,静态函数 fromName()可以通过主机名获取 IP 地址,静态函数 lookupHost()可以通过一个主机名,以异步方式查找这个主机的 IP地址。表14-1 是QHostInfo 类主要的功能函数(省略了函数中的 const 关键字)。

QNetworkInterface 可以获得运行应用程序的主机的所有 IP 地址和网络接口列表。静态函数alInterfaces()返回主机上所有的网络接口的列表,一个网络接口可能包括多个的 IP 地址,每个IP地址与掩码或广播地址关联。如果无需知道子网掩码和广播的IP 地址,使用静态函数 allAddresses()可以获得主机上的所有IP 地址列表。表 14-2是 QNetworkInterface 类的主要功能函数。

为演示这两个类的主要功能,创建一个窗口基于 QDialog 的应用程序 samp14_1,实例运行时界面如图 14-1 所示。对话框界面由 UI设计器设计,主要代码都是各按钮的 clicked()信号的槽函数。

2.可视化UI设计框架

3. QHostInfo的使用
3.1 显示本机地址信息
图 14-1 窗口上的“QHostInfo 获取本机主机名和IP 地址”按钮的响应代码如下:
void Dialog::on_btnGetHostInfo_clicked()
{//QHostInfo获取主机信息
// ui->plainTextEdit->clear();QString hostName=QHostInfo::localHostName();//本地主机名ui->plainTextEdit->appendPlainText("本机主机名:"+hostName+"\n");QHostInfo hostInfo=QHostInfo::fromName(hostName); //本机IP地址QList<QHostAddress> addList=hostInfo.addresses();//IP地址列表if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i); //每一项是一个QHostAddressbool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=(QAbstractSocket::IPv4Protocol==aHost.protocol()); //协议类型,elseshow=true;if (show) {ui->plainTextEdit->appendPlainText("协 议:"+protocolName(aHost.protocol()));//协议类型ui->plainTextEdit->appendPlainText("本机IP地址:"+aHost.toString()); //IP地址ui->plainTextEdit->appendPlainText("");}}
}
这段代码先通过静态函数QHostInfo::localHostName()获取本机主机名hostName,然后再使用主机名作为参数,用静态函数QHostInfo::fromName(hostName)获取主机的信息 hostInfo。
hostInfo 是 QHostInfo 类的实例,通过其函数addresses()获取主机的IP 地址列表。
QList<QHostAddress> addList=hostInfo.addresses();//IP地址列表
返回的addList是QHostAddress 类的列表,QHostAddress 类提供一个IP 地址的信息,包括IPv4地址和IPv6 地址。QHostAddress 有以下两个主要的函数。
-
protocol() 返回 QAbstractSocket::NetworkLayerProtocol类型变量,表示当前IP 地址的协议类型。QAbstractSocket::NetworkLayerProtocol枚举类型的取值见表14-3。

-
toString()返回IP 地址的字符串,表示程序中显示了IP 地址列表中每个IP 地址的协议类型和IP 地址字符串,为根据 protocol()返回的 QAbstractSocket::NetworkLayerProtocol 枚举值显示协议名称字符串,自定义了一个函数 protocolName(),代码如下:
QString Dialog::protocolName(QAbstractSocket::NetworkLayerProtocol protocol)
{//通过协议类型返回协议名称switch(protocol){case QAbstractSocket::IPv4Protocol:return "IPv4 Protocol";case QAbstractSocket::IPv6Protocol:return "IPv6 Protocol";case QAbstractSocket::AnyIPProtocol:return "Any IP Protocol";default:return "Unknown Network Layer Protocol";}
}
单击“QHostInfo 获取本机主机名和 IP 地址”按钮,如果勾选了“只显示 IPv4 协议地址”复选框,就只显示本机的 IPv4 地址,否则显示所有 IP 地址信息。
3.2 查找主机地址信息
QHostInfo 的静态函数 lookupHost()可以根据主机名、域名或 IP 地址查找主机的地址信息,lookupHost()函数原型如下:
[static] int QHostInfo::lookupHost(const QString &name, QObject *receiver, const char *member)
输入参数 name 是表示主机名的字符串,可以是一个主机名、一个域名,或者是一个IP 地址。
lookupHost()以异步方式查找主机地址,参数 receiver 和 member 指定一个响应槽函数的接收者和槽函数名称。执行 lookupHost()后,程序可能需要花一定时间来查找主机地址,但不会阻塞程序的运行。当查找到主机地址后,通过信号通知设定的槽函数,在槽函数里读取查找的结果。函数返回一个表示查找的 ID。
图14-1 中的“QHostInfo 查找域名的IP 地址”按的槽函数及 lokupHost()函数关联槽函数代码如下:
void Dialog::on_btnLookup_clicked()
{//查找主机信息QString hostname=ui->editHost->text(); //主机名ui->plainTextEdit->appendPlainText("正在查找查找主机信息:"+hostname);QHostInfo::lookupHost(hostname,this,SLOT(lookedUpHostInfo(QHostInfo)));
}void Dialog::lookedUpHostInfo(const QHostInfo &host)
{//查找主机信息的槽函数
// ui->plainTextEdit->clear();QList<QHostAddress> addList=host.addresses();//if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i);bool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=QAbstractSocket::IPv4Protocol==aHost.protocol();elseshow=true;if (show) {ui->plainTextEdit->appendPlainText("协 议:"+protocolName(aHost.protocol()));ui->plainTextEdit->appendPlainText(aHost.toString());}}
}
运行结果如下图:

4. QNetworkInterface 的使用
QNetworkInterface 可以获得应用程序所在主机的所有网络接口,包括其子网掩码和广播地址等。
静态函数QNetworkInterface::allInterfaces()获取所有网络接口的列表,函数原型为:
[static] [QList](../qtcore/qlist.html)<[QNetworkInterface](qnetworkinterface.html#QNetworkInterface)> QNetworkInterface::allInterfaces()
其返回结果是一个QNetworkInterface 类的列表。
界面上“QNetworkInterface::allInterfaces()”按钮的响应代码如下:
void Dialog::on_btnALLInterface_clicked()
{//QNetworkInterface::allInterfaces()函数的使用
// ui->plainTextEdit->clear();QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();for(int i=0;i<list.count();i++){QNetworkInterface aInterface=list.at(i);if (!aInterface.isValid())continue;ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("设备名称:")+aInterface.humanReadableName());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("硬件地址:")+aInterface.hardwareAddress());QList<QNetworkAddressEntry> entryList=aInterface.addressEntries();for(int j=0;j<entryList.count();j++){QNetworkAddressEntry aEntry=entryList.at(j);ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" IP 地址:")+aEntry.ip().toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" 子网掩码:")+aEntry.netmask().toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" 广播地址:")+aEntry.broadcast().toString()+"\n");}ui->plainTextEdit->appendPlainText("\n");}
}
通过QNetworkInterface::allInterfaces()获取网络接口列表 list之后,显示每个接口的 humanReadableName()和 hardwareAddress()。每个接口又有一个 QNetworkAddressEntry 类型的地址列表,通过addressEntries ()获得这个列表。
QNetworkAddressEntry 包含了一个网络接口的 IP 地址、子网掩码和广播地址,分别用 ip()、netmask()和 broadcast()函数返回。
QNetworkInterface::allInterfaces()返回的网络接口的信息很多,如果无需知道子网掩码和广播地址等信息,可以使用 QNetworkInterface::allAddresses()只获取IP 地址。
界面上“QNetworkInterface ::allAddresses()”按钮的响应代码如下:
void Dialog::on_btnDetail_clicked()
{//QNetworkInterface::allAddresses()的使用
// ui->plainTextEdit->clear();QList<QHostAddress> addList=QNetworkInterface::allAddresses();//if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i);bool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=QAbstractSocket::IPv4Protocol==aHost.protocol();elseshow=true;if (show){ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("协 议:")+protocolName(aHost.protocol()));ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("IP地址:")+aHost.toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(""));}}
}
QNetworkInterface ::allAddresses()的功能与 QHstInfo:addresses()函数功能相似,都是返回-个QHostAddress 的列表。只是 QNetworkInterface 会返回更多地址,包括表示本机的 127.0.0.1,而QHostInfo 不会返回这个IP 地址。
5. 源码
5.1 dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QHostInfo>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private slots:void lookedUpHostInfo(const QHostInfo &host);//===========================void on_btnGetHostInfo_clicked();void on_btnDetail_clicked();void on_btnLookup_clicked();void on_btnALLInterface_clicked();void on_btnClear_clicked();private:Ui::Dialog *ui;QString protocolName(QAbstractSocket::NetworkLayerProtocol protocol);
};#endif // DIALOG_H
5.2 dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"#include <QHostInfo>
#include <QNetworkInterface>Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);
}Dialog::~Dialog()
{delete ui;
}void Dialog::lookedUpHostInfo(const QHostInfo &host)
{//查找主机信息的槽函数
// ui->plainTextEdit->clear();QList<QHostAddress> addList=host.addresses();//if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i);bool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=QAbstractSocket::IPv4Protocol==aHost.protocol();elseshow=true;if (show) {ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("协 议:")+protocolName(aHost.protocol()));ui->plainTextEdit->appendPlainText(aHost.toString());}}
}void Dialog::on_btnGetHostInfo_clicked()
{//QHostInfo获取主机信息
// ui->plainTextEdit->clear();QString hostName=QHostInfo::localHostName();//本地主机名ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("本机主机名:")+hostName+"\n");QHostInfo hostInfo=QHostInfo::fromName(hostName); //本机IP地址QList<QHostAddress> addList=hostInfo.addresses();//IP地址列表if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i); //每一项是一个QHostAddressbool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=(QAbstractSocket::IPv4Protocol==aHost.protocol()); //协议类型,elseshow=true;if (show) {ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("协 议:")+protocolName(aHost.protocol()));//协议类型ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("本机IP地址:")+aHost.toString()); //IP地址ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(""));}}
}void Dialog::on_btnDetail_clicked()
{//QNetworkInterface::allAddresses()的使用
// ui->plainTextEdit->clear();QList<QHostAddress> addList=QNetworkInterface::allAddresses();//if (!addList.isEmpty())for (int i=0;i<addList.count();i++){QHostAddress aHost=addList.at(i);bool show=ui->chkOnlyIPv4->isChecked();//只显示IPv4if (show)show=QAbstractSocket::IPv4Protocol==aHost.protocol();elseshow=true;if (show){ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("协 议:")+protocolName(aHost.protocol()));ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("IP地址:")+aHost.toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(""));}}
}void Dialog::on_btnLookup_clicked()
{//查找主机信息QString hostname=ui->editHost->text(); //主机名ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("正在查找查找主机信息:")+hostname);QHostInfo::lookupHost(hostname,this,SLOT(lookedUpHostInfo(QHostInfo)));
}void Dialog::on_btnALLInterface_clicked()
{//QNetworkInterface::allInterfaces()函数的使用
// ui->plainTextEdit->clear();QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();for(int i=0;i<list.count();i++){QNetworkInterface aInterface=list.at(i);if (!aInterface.isValid())continue;ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("设备名称:")+aInterface.humanReadableName());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit("硬件地址:")+aInterface.hardwareAddress());QList<QNetworkAddressEntry> entryList=aInterface.addressEntries();for(int j=0;j<entryList.count();j++){QNetworkAddressEntry aEntry=entryList.at(j);ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" IP 地址:")+aEntry.ip().toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" 子网掩码:")+aEntry.netmask().toString());ui->plainTextEdit->appendPlainText(QString::fromLocal8Bit(" 广播地址:")+aEntry.broadcast().toString()+"\n");}ui->plainTextEdit->appendPlainText("\n");}
}QString Dialog::protocolName(QAbstractSocket::NetworkLayerProtocol protocol)
{//通过协议类型返回协议名称switch(protocol){case QAbstractSocket::IPv4Protocol:return "IPv4 Protocol";case QAbstractSocket::IPv6Protocol:return "IPv6 Protocol";case QAbstractSocket::AnyIPProtocol:return "Any IP Protocol";default:return "Unknown Network Layer Protocol";}
}void Dialog::on_btnClear_clicked()
{ui->plainTextEdit->clear();
}相关文章:
14-1_Qt 5.9 C++开发指南_网络编程及主机信息查询_HostInfo
Qt 网络模块提供了用于编写 TCP/IP 客户端和服务器端程序的各种类,如用于 TCP 通信的QTcpSocket 和 QTcpServer,用于 UDP 通信的 QUdpSocket,还有用于实现 HTTP、FTP 等普通网络协议的高级类如 QNetworkRequest,QNetworkReply 和Q…...
【iOS】通知原理
我们可以通过看通知的实现机制来了解通知中心是怎么实现对观察者的引用的。由于苹果对Foundation源码是不开源的,我们具体就参考一下GNUStep的源码实现。GNUStep的源码地址为:GNUStep源码GitHub下载地址, 具体源码可以进行查看。 通知的主要流程 通知全…...
创建邮件服务器(小微企业)
这里写自定义目录标题 目的硬件选型:软件选型:coremail (商业版本)postfixumail免费开源版本新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适…...
android app控制ros机器人四(调整界面布局)
半吊子改安卓,记录页面布局调整: 在ros-mobile基础上顶端增加一行,用于显示app名称和logo图像;修改标签页。 添加文字简单,但是替换图标长知识了,开始只是简单的把mipmap各个文件夹下的图片进行替换&…...
稍微深度踩坑haystack + whoosh + jieba
说到django的全文检索,网上基本推荐的都是 haystack whoosh jieba 的方案。 由于我的需求对搜索时间敏感度较低,但是要求不能有数据的错漏。 但是没有调试的情况下,搜索质量真的很差,搞得我都想直接用Like搜索数据库算了。 但是…...
微信小程序(van-tabs) 去除横向滚动条样式(附加源码解决方案+报错图)
问题描述 今天第一次接触vant组件库。 ant官网地址适用于Vue3 支持Vue2、Vue3、微信小程序等 我在使用van-tabs组件时遇到了一个问题,如下图所示: 从图片上可以看到有个灰色的横向滚动条,一开始领导给我说这个问题,我反反复复都…...
激光切割机所发出的辐射是否会对人体产生危害呢
激光切割设备所发出的激光作为一种特殊的能量光源,在一定程度上是存在辐射的。由于光纤激光器的功率通常大于半导体激光器,因此其辐射安全性也受到我们的关注。那么这种辐射的危害究竟有多大呢? 第一级:在正常操作下,不会发出对人…...
Redis 高可用:主从复制、哨兵模式、集群模式
文章目录 一、redis高可用性概述二、主从复制2.1 主从复制2.2 数据同步的方式2.2.1 全量数据同步2.2.2 增量数据同步 2.3 实现原理2.3.1 服务器 RUN ID2.3.2 复制偏移量 offset2.3.3 环形缓冲区 三、哨兵模式3.1 原理3.2 配置3.3 流程3.4 使用3.5 缺点 四、cluster集群4.1 原理…...
在GitHub上管理和协作的完全指南
介绍 GitHub 是一个强大的版本控制和协作平台,它不仅可以帮助你管理和跟踪项目的变化,还可以与他人进行协作。本文将详细介绍如何使用 GitHub 的各种功能来管理和协作项目。 目录 注册GitHub账号创建和管理仓库 创建仓库添加和管理文件分支管理合并请…...
git管理工具学习(图解使用git工作流程)
目录 GIT 简介一个最简单的GIT操作流程git的工作流程&命令 GIT 简介 git是什么,在维基百科上是这么介绍的:git是一个分布式的版本控制软件 分布式是相对于集中式而言的,分布式即每一个git库都是一个完整的库。 每个库的地位都是平等的&am…...
单例模式(Singleton)
单例模式保证一个类仅有一个实例,并提供一个全局访问点来访问它,这个类称为单例类。可见,在实现单例模式时,除了保证一个类只能创建一个实例外,还需提供一个全局访问点。 Singleton is a creational design pattern t…...
2023-08-02 LeetCode每日一题(翻转卡片游戏)
2023-08-02每日一题 一、题目编号 822. 翻转卡片游戏二、题目链接 点击跳转到题目位置 三、题目描述 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样)。 我们可以先翻转任意张卡片,…...
JAVAWEB项目--POST完整交互(servlet,axios,JavaScript)
post交互 js: axios.post("/mycsdn/blog/pageSer", {currentPage:currentPage,}).then(function (response) {window.location.href url;}).catch(function (error) {console.error("分页未遂", error);}); 后端servlet: public…...
统一观测|借助 Prometheus 监控 ClickHouse 数据库
引言 ClickHouse 作为用于联机分析(OLAP)的列式数据库管理系统(DBMS), 最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse 支持 SQL 查询,在基于大宽表的聚合分析查询场景下展现出优异的性能。因此,获得了广泛的应用。本文旨在分享阿…...
【Golang】基于录制,自动生成go test接口自动化用例
目录 背景 框架 ginkgo初始化 抓包&运行脚本 目录说明 ∮./business ∮./conf ∮./utils ∮./testcase testcase 用例目录结构规则 示例 实现思路 解析Har数据 定义结构体 解析到json 转换请求数据 转换请求 转换请求参数 写业务请求数据 写gotest测试…...
使用快捷键在Unity中快速锁定和解锁Inspector右上角的锁功能
使用快捷键在Unity中快速锁定和解锁Inspector右上角的锁功能 在Unity中,Inspector窗口是一个非常重要的工具,它允许我们查看和编辑选定对象的属性。有时候,我们可能希望锁定Inspector窗口,以防止意外更改对象的属性。幸运的是&am…...
服务器硬件、部署LNMP动态网站、部署wordpress、配置web与数据库服务分离、配置额外的web服务器
day01 day01项目实战目标单机安装基于LNMP结构的WordPress网站基本环境准备配置nginx配置数据库服务部署wordpressweb与数据库服务分离准备数据库服务器迁移数据库配置额外的web服务器 项目实战目标 主机名IP地址client01192.168.88.10/24web1192.168.88.11/24web2192.168.88…...
面试总被问高并发负载测试,你真的会么?
本文将介绍使用50K并发用户测试轻松运行负载测试所需的步骤(以及最多200万用户的更大测试)。 ❶ 写你的剧本 ❷ 使用JMeter在本地测试 ❸ BlazeMeter SandBox测试 ❹ 使用一个控制台和一个引擎设置每引擎用户数量 ❺ 设置和测试群集(一个…...
ARP协议请求
文章目录 作用请求与应答流程数据包ARP协议以太网帧协议具体应用 作用 通过 IP地址 查找 MAC地址。 请求与应答流程 A:数据发送主机 B:目标主机 目前只知道目标主机IP地址,想把数据发送过去,需要查询到目标主机的MAC地址&#x…...
前端小练-仿掘金导航栏
文章目录 前言项目结构导航实现创作中心移动小球消息提示 完整代码 前言 闲的,你信嘛,还得开发一个基本的门户社区网站,来给到Hlang,不然我怕说工作量不够。那么这个的话,其实也很好办,主要是这个门户网站的UI写起来麻…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
