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

基于Qt开发的http/https客户端

成果展示:
在这里插入图片描述
使用Qt开发HTTP客户端主要依赖QNetworkAccessManager、QNetworkRequest和QNetworkReply三大核心类。以下是具体实现要点及最佳实践:

一、核心类与基础流程​​

1.QNetworkAccessManager​​

作为HTTP请求的管理者,负责异步处理网络通信,支持GET/POST/PUT/DELETE等方法。需在类成员中声明并通过new创建:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
2.QNetworkRequest​​

封装请求的元数据,包括URL、请求头(Headers)和属性。需设置目标地址及内容类型:

QNetworkRequest request(QUrl("http://example.com/api"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
3.QNetworkReply​​

接收服务器响应,通过信号finished()触发数据处理。需在槽函数中读取数据并释放对象:

connect(reply, &QNetworkReply::finished, [=]() {if (reply->error() == QNetworkReply::NoError) {QByteArray data = reply->readAll();qDebug() << "Response:" << data;}reply->deleteLater();
});

二、GET与POST请求实现​​

​​1. GET请求​​

​​步骤​​
通过manager->get(request)发送请求,URL可直接包含查询参数:

QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://example.com/data?id=1")));
2. POST请求​​
  • 数据提交​​
    使用manager->post(request, data)发送表单或JSON数据:
QByteArray postData = "username=admin&password=123456";  // 表单数据
// 或 JSON格式
postData = QJsonDocument(jsonObject).toJson();
QNetworkReply *reply = manager->post(request, postData);
  • 头部设置​​
    根据数据类型调整Content-Type,例如application/x-www-form-urlencoded或application/json

三、响应处理与错误机制​​

1.数据读取​​

在finished()槽函数中通过reply->readAll()获取完整响应,注意编码转换(如UTF-8):

QTextCodec *codec = QTextCodec::codecForName("utf8");
QString text = codec->toUnicode(reply->readAll());
2.错误处理​​

检查reply->error()并记录错误信息,处理网络超时、SSL证书异常等场景:

if (reply->error() != QNetworkReply::NoError) {qDebug() << "Error:" << reply->errorString();
}

四、高级功能扩展​​

1.HTTPS支持​​

需在项目配置文件(.pro)中添加QT += network,并确保系统SSL证书有效:

QT += network
2.设置SSL协议版本
    QSslConfiguration sslConfig = request.sslConfiguration();sslConfig.setProtocol(QSsl::AnyProtocol); // 设置SSL协议版本request.setSslConfiguration(sslConfig);
3.设置同步请求
    QEventLoop loop;connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);loop.exec();

五、实践注意事项​​

  • 线程安全​​:避免在主线程中执行耗时网络操作,建议使用QThread或异步信号槽。
  • ​​资源释放​​:务必调用reply->deleteLater()防止内存泄漏。
  • 用户代理与自定义头​​:通过setRawHeader()设置UA或认证信息(如Authorization: Bearer token)。

六、完整代码示例:

1.界面设计:

在这里插入图片描述

2.mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
public slots:void click_sendButton();void requestHttp(const QString url,QString body);void requestHttps(const QString url,QString body);private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H
3.mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QtNetwork/QHostAddress>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include<QEventLoop>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->sendButton,&QPushButton::clicked,this,&MainWindow::click_sendButton);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::click_sendButton()
{QString url = ui->urlEdit->text();QString body = ui->bodyEdit->toPlainText();//requestHttp(url,body);requestHttps(url,body);
}void MainWindow::requestHttp(const QString url, QString body)
{QString requestType = ui->requestComBox->currentText();QString params = ui->gsEdit->text();QString header = ui->headercomBox->currentText();QNetworkAccessManager networkManager;QNetworkRequest request;request.setUrl(QUrl(url));//请求头token设置request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=utf-8"));if(header=="Content-Type")request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(params));elserequest.setRawHeader(header.toUtf8(), params.toUtf8());QNetworkReply *reply;if(requestType=="Post")reply = networkManager.post(request, body.toUtf8());else if(requestType=="Get")reply = networkManager.get(request);//请求响应结果connect(reply, &QNetworkReply::finished, [&]() {if (reply->error() == QNetworkReply::NoError) {QByteArray bytes = reply->readAll();QString msg = QString::fromUtf8(bytes);ui->resultEdit->append(msg);}else {qDebug() << "Error:" << reply->errorString();QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);//statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档QString data = "Request errors, statusCode:" + QString::number(statusCodeV.toInt()) + ", errorCode : " + QString::number((int)reply->error());ui->resultEdit->append(data);}reply->deleteLater();});//开启事件循环,直到请求完成QEventLoop loop;connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);loop.exec();
}void MainWindow::requestHttps(const QString url, QString body)
{QString requestType = ui->requestComBox->currentText();QString params = ui->gsEdit->text();QString header = ui->headercomBox->currentText();QNetworkAccessManager networkManager;QNetworkRequest request;request.setUrl(QUrl(url));request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=utf-8"));if(header=="Content-Type")request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(params));elserequest.setRawHeader(header.toUtf8(), params.toUtf8());QSslConfiguration sslConfig = request.sslConfiguration();sslConfig.setProtocol(QSsl::AnyProtocol); // 设置SSL协议版本request.setSslConfiguration(sslConfig);QNetworkReply *reply;if(requestType=="Post")reply = networkManager.post(request, body.toUtf8());else if(requestType=="Get")reply = networkManager.get(request);//请求响应结果connect(reply, &QNetworkReply::finished, [&]() {if (reply->error() == QNetworkReply::NoError) {QByteArray bytes = reply->readAll();QString msg = QString::fromUtf8(bytes);ui->resultEdit->append(msg);}else {qWarning() << "Error:" << reply->errorString();QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);//statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档QString data = "Request errors, statusCode:" + QString::number(statusCodeV.toInt()) + ", errorCode : " + QString::number((int)reply->error());ui->resultEdit->append(data);}reply->deleteLater();});//开启事件循环,直到请求完成QEventLoop loop;connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);loop.exec();
}
4.main.cpp

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

更多Qt开发实战教程,持续更新中。

相关文章:

基于Qt开发的http/https客户端

成果展示&#xff1a; 使用Qt开发HTTP客户端主要依赖QNetworkAccessManager、QNetworkRequest和QNetworkReply三大核心类。以下是具体实现要点及最佳实践&#xff1a; 一、核心类与基础流程​​ 1.QNetworkAccessManager​​ 作为HTTP请求的管理者&#xff0c;负责异步处理…...

微程序控制器的详细工作过程

1. 基本组成结构 微程序控制器主要由以下部件构成&#xff1a; 控制存储器&#xff08;Control Store, CS&#xff09;&#xff1a;存储微程序&#xff08;微指令集合&#xff09;&#xff0c;通常使用ROM或EPROM。 微地址寄存器&#xff08;μAR&#xff09;&#xff1a;存放…...

PostgreSQL 的 pg_current_logfile 函数

PostgreSQL 的 pg_current_logfile 函数 pg_current_logfile() 是 PostgreSQL 9.6 版本引入的一个系统管理函数&#xff0c;用于获取当前正在使用的日志文件路径。 一 基本用法 1 函数定义 pg_current_logfile([text]) → text2 简单查询 -- 获取当前日志文件路径 SELECT …...

实时云渲染——比像素流送节省80%精力的UE程序推流技术

UE5引擎除了适合开发3A游戏&#xff0c;同样适用于开发大场景高精度的数字孪生可视化场景&#xff0c;自带的Nanite 虚拟微多边形几何体技术、Lumen 全动态全局光照技术、高度可扩展的架构、强大的地形和植被系统以及高效的流媒体技术&#xff0c;使UE5在数字孪生领域的技术占有…...

如何解决 Linux 系统文件描述符耗尽的问题

在Linux系统中&#xff0c;文件描述符&#xff08;File Descriptor, FD&#xff09;是操作系统管理打开文件、套接字、管道等资源的抽象标识。当进程或系统耗尽文件描述符时&#xff0c;会导致服务崩溃、连接失败等严重问题。以下是详细的排查和解决方案&#xff1a; --- ###…...

存储器:DDR和HBM的区别

本文简要介绍DDR&#xff08;Double Data Rate SDRAM&#xff09;和HBM&#xff08;High Bandwidth Memory&#xff09;的主要区别&#xff1a; 1. 架构与设计 DDR&#xff1a;传统的主流动态随机存取存储器&#xff08;DRAM&#xff09;&#xff0c;采用并行总线架构&#x…...

【计算机网络】Cookie、Session、Token之间有什么区别?

大家在日常使用浏览器时可能会遇到&#xff1a;是否清理Cookie&#xff1f;这个问题。 那么什么是Cookie呢&#xff1f;与此相关的还有Session、Token这些。这两个又是什么呢&#xff1f; 本文将对这三个进行讲解区分&#xff0c;如果对小伙伴有帮助的话&#xff0c;也请点赞、…...

每日学习:DAY24

日常开发与学习记录 前言 怎么感觉自己越来越懒了。 日程 忘记写了&#xff0c;大概是早上做了 SQL 表单&#xff0c;晚上写了 DispatcherController。 学习记录 操作系统 页面分配置换策略 学习内容 省流 SQL 表单构建关于嵌套注解的生效机制DispatcherController 统…...

grpo原理

图解deepseek的grpo原理、以debug形式阅读grpo的源码 练习两天半&#xff0c;从零实现DeepSeek-R1&#xff08;基于Qwen2.5-0.5B和规则奖励模型&#xff0c;GRPO&#xff09;&#xff0c;从原理讲解到代码实现&#xff0c;解开DeepSeek-R1的神秘面纱 第一个视频 GRPO讲解 mod…...

RabbitMQ--基础篇

RabbitMQ 简介&#xff1a;RabbitMQ 是一种开源的消息队列中间件&#xff0c;你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息&#xff0c;让系统各部分能松耦合地协作 优势&#xff1a; 异步处理&#xff1a;比如用户注册后&#xff0c;主程序将发…...

ResNet残差神经网络的模型结构定义(pytorch实现)

ResNet残差神经网络的模型结构定义&#xff08;pytorch实现&#xff09; ResNet‑34 ResNet‑34的实现思路。核心在于&#xff1a; 定义残差块&#xff08;BasicBlock&#xff09;用 _make_layer 方法堆叠多个残差块按照 ResNet‑34 的通道和层数配置来搭建网络 import torch…...

如何使用极狐GitLab 软件包仓库功能托管 ruby?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Ruby gems (BASIC ALL) WARNING:Ruby gems 软件包库正在开发中&#xff0c;由于功能有限&#xff0c;尚未准备好…...

AI日报 · 2025年5月08日|Stripe发布全球首个支付AI基础模型

1、Stripe 发布支付领域专用 AI 基础模型及稳定币账户功能 Stripe 于5月7日在其年度 Sessions 大会上发布了全球首个专为支付领域打造的 AI 基础模型——“Payments Foundation Model”&#xff0c;该模型基于数百亿笔交易数据训练&#xff0c;能够捕捉每个支付中数百个传统模…...

React 笔记[1] hello world

React 笔记[1] hello world 明白了&#xff01;既然你已经安装了 Node.js&#xff0c;我们可以 从零开始搭建一个 React Tailwind CSS 的 Hello World 项目。我将一步步列出操作指令&#xff0c;你只需要在终端里依次执行。 ✅ 第一步&#xff1a;初始化项目 mkdir my-hello…...

好消息!PyCharm 社区版现已支持直接选择 WSL 终端为默认终端

在过去&#xff0c;PyCharm 社区版虽然提供了链接 Windows 子系统 Linux&#xff08;WSL&#xff09;终端的能力&#xff0c;但用户无法在设置中直接指定 WSL 为默认终端&#xff0c;这一功能仅限于专业版使用者。 而现在&#xff0c;在 PyCharm 2025.1.1 版本中&#xff0c;Je…...

基于redis的定时状态更新

基于redis的定时状态更新 下面是一个简单的示例&#xff0c;展示如何使用redis实现状态更新&#xff0c;从而满足在某些场景下&#xff0c;既需要频繁更新状态&#xff0c; 又需要保证状态的实时性。以及定时更新状态的需求。 示例说明 假设有一个剧目演出计划&#xff0c;确…...

[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取自身程序的所在的目录?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

服务器托管的常见问题

一、何谓IDC服务器托管服务? IDC服务器托管是指为了提高网站的访问速度&#xff0c;将您的服务器及相关设备托管到具有完善机房设施、高品质网络环境、丰富带宽资源和运营经验以及可对用户的网络和设备进行实时监控的网络数据中心内&#xff0c;以此使系统达到安全、可靠、稳定…...

使用Scrapeless Scraping Browser的自动化和网页抓取最佳实践

引言&#xff1a;人工智能时代浏览器自动化和数据收集的新范式 随着生成性人工智能、人工智能代理和数据密集型应用程序的快速崛起&#xff0c;浏览器正在从传统的“用户互动工具”演变为智能系统的“数据执行引擎”。在这一新范式中&#xff0c;许多任务不再依赖单一的API端点…...

电子电气架构 --- 如何有助于提安全性并减少事故

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

【训练】Qwen2.5VL 多机多卡 Grounding Box定位

之前的相关文章&#xff1a; 【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别 https://www.dong-blog.fun/post/1661 使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct https://www.dong-blog.fun/post/1762 构建最新的LLaMA-Factory镜像 https://www.dong-blog.f…...

MYSQL的行级锁到底锁的是什么东西

MySQL 的行级锁是一种锁机制&#xff0c;它允许数据库在执行并发操作时&#xff0c;锁定表中的某一行数据而不是整张表。行级锁通过限制对特定行的访问&#xff0c;允许其他线程并发地访问表中的其他行&#xff0c;从而提高并发性和性能。 行级锁的锁定对象 行级锁锁定的是 行…...

图神经网络中的虚拟节点

1.虚拟节点 当我们使用节点来构成图结构时&#xff0c; regular node: 常规的节点即代表了某一个局部特征&#xff0c; 即局部节点特征。 virtual node&#xff1a; 普通的节点不同&#xff0c;有时会需要这样的一种特征&#xff0c; 该特征代表了该样本的全局信息&#xff0…...

关于多版本CUDA共存的研究,是否能一台机子装两个CUDA 版本并正常切换使用

我发现了一个很有意思的事 我装了11.8cuda再装12.3cuda结果我的11.8cuda还在&#xff0c;没被替换掉或者删掉 然后我打开我的环境发现它的环境除了cuda_path都没改 这样我就有个大胆的想法&#xff0c;如果我把cuda path换成11.8路径那是不是就能切换了 而且cuda_path 和 cuda_…...

el-table与echarts图形实现滚动联动

el-table与echarts图形滚动联动 效果图 实现思路 设计图滚动条位于表格下方&#xff0c;且echarts滚动不易获取当前展示数据到左侧的距离 故&#xff1a;通过监听表格的滚动实现联动 为了保持echarts的横坐标和表格的列基本保持对齐&#xff0c;用tdWidth标识单列表格的宽度…...

【Git】【commit】查看未推送的提交查看指定commit的修改内容合并不连续的commit

文章目录 1. 查看未推送的提交方法一 &#xff1a;git status方法二&#xff1a;git log方法三&#xff1a;git cherry方法四&#xff1a;git rev-list 2. 查看指定commit的修改方法一&#xff1a;git show方法二&#xff1a;git log方法三&#xff1a;git diff 3. 合并不连续的…...

C++GO语言微服务基础技术①

目录 01-项目简介 02-单体式架构 03-微服务优缺点 04-单体式和微服务区别 05-RPC简介 06-RPC使用步骤 07-注册RPC服务函数接口 08-绑定服务和调用方法函数接口 09-rpc服务端和客户端编码实现 10-json的rpc 11-rpc的封装 12-rpc封装小结 01-项目简介 # 单体式和微服…...

AI CUBE 使用指南 目标检测格式范例 AI cube 报错数据集不合规范,请清洗数据集

血的教训&#xff1a;labels.txt里面放1 2 3 4 ..也可以英文&#xff0c;不能有中文 教程&#xff1a;K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客 | 目标检测范例&#xff1a; 不清楚不是数字行不行 这个id可以英文&#xff0c;你…...

vue中scss使用js的变量

一、前言 在项目开发中&#xff0c;很多时候会涉及到scss样式变量&#xff0c;正常定义方式 $primary-color: rgb(188, 0, 194);&#xff1b;使用时直接使用即可&#xff1a;color: $primary-color。但是&#xff0c;如果&#xff0c;这些变量是在js中定义的怎么办 二、实现 …...

QtGUI模块功能详细说明, 字体和文本渲染(四)

目录 一. 窗口和屏幕管理 二. 绘图和渲染 三. 图像处理 四. 字体和文本 1、核心概念 1.1、字体 (Font) 1.2、字形 (Glyph) 1.3、字符 (Character) 1.4、文本布局 (Text Layout) 1.5、文本渲染 (Text Rendering) 1.6、度量 (Metrics) 2、字体管理 2.1、QFont&#…...

计算机学习路线与编程语言选择(信息差)

——授人以鱼不如授人以渔 面向岗位学习&#xff01;到招聘网站看看有哪些岗位&#xff0c;看一看岗位职责、要求 牛客网&#xff08;计算机实习工作最好的网站&#xff09; boss直聘 确定岗位后&#xff08;如前端、后端&#xff09;&#xff0c;岗位需要什么语言&#xf…...

多环串级PID

文章目录 为什么要多环程序主函数内环外环 双环PID调参内环Kp调法Ki调法 外环Kp 以一定速度到达指定位置封装 为什么要多环 单环只能单一控制速度或者位置&#xff0c;如果想要同时控制多个量如速度&#xff0c;位置&#xff0c;角度&#xff0c;就需要多个PID 速度环一般PI…...

编写大模型Prompt提示词方法

明确目标和任务 // 调用LLM进行分析const prompt 你是一名严格而友好的英语口语评分官&#xff0c;专业背景包括语音学&#xff08;phonetics&#xff09;、二语习得&#xff08;SLA&#xff09;和自动语音识别&#xff08;ASR&#xff09;。你的任务是&#xff1a; ① 比对参…...

使用chrome浏览器截长图

如何使用chrome浏览器截长图&#xff1a; 使用chrome截取完整网页图片 第一步、按F12&#xff0c;开发者模式的布局按下图布局 第二步、按ctrlshiftp组合键&#xff0c;搜索“截图” &#xff0c;然后自动截图保存在下载目录&#xff08;右上角&#xff09;了。...

【MySQL】第二弹——MySQL表的增删改查(CURD))

文章目录 &#x1f393;一. CRUD&#x1f393;二. 新增(Create)&#x1f393;三. 查询(Rertieve)&#x1f4d6;1. 全列查询&#x1f4d6;2. 指定列查询&#x1f4d6;3. 查询带有表达式&#x1f4d6;4. 起别名查询(as )&#x1f4d6; 5. 去重查询(distinct)&#x1f4d6;6. 排序…...

Android NDK版本迭代与FFmpeg交叉编译完全指南

在Android开发中&#xff0c;使用NDK(Native Development Kit)进行原生代码开发是一项常见需求&#xff0c;特别是当我们需要集成FFmpeg这样的多媒体处理库时。本文将深入分析Android NDK的版本迭代分界线&#xff0c;详细讲解FFmpeg交叉编译的注意事项&#xff0c;并提供完整的…...

【Linux网络】Socket-UDP相关函数

socket() 函数 这个函数的作用是创建一个 Socket 文件描述符&#xff0c;在客户端和服务器都可以使用。 #include <sys/socket.h> int socket(int domain, int type, int protocol);参数&#xff1a; domain&#xff1a;指定协议族&#xff0c;例如 AF_INET 代表 IPv4 …...

最优化方法Python计算:有约束优化应用——线性Lasso回归预测器

实际应用中&#xff0c;特征维度 n n n通常远大于样本容量 m m m&#xff08; n ≪ m n\ll m n≪m&#xff09;&#xff0c;这种高维小样本场景下特征数据可能含有对标签数据 y i y_i yi​的取值不必要的成分&#xff0c;甚至是噪声。此时&#xff0c;我们希望回归模型中的优化…...

基础算法 —— 二分算法 【复习总结】

1. 简介 1.1 原理 二分算法&#xff0c;顾名思义&#xff0c;关键在于二分&#xff0c;当我们求解的目标具有二段性时&#xff0c;我们就可以使用二分算法&#xff1a; 先根据待查找区间中点位置&#xff0c;判断结果会在左侧还是右侧&#xff0c;接下来&#xff0c;舍弃一半…...

计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手

缓存&#xff1a; 缓存是对cpu&#xff0c;内存的一个节约&#xff1a;节约的是网络带宽资源 节约服务器的性能 资源的每次下载和请求都会造成服务器的一个压力 减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处 表示这个html页面的返回是不要缓存的 忽略缓存 需要每次…...

OpenHarmony平台驱动开发(九),MIPI DSI

OpenHarmony平台驱动开发&#xff08;九&#xff09; MIPI DSI 概述 功能简介 DSI&#xff08;Display Serial Interface&#xff09;是由移动行业处理器接口联盟&#xff08;Mobile Industry Processor Interface (MIPI) Alliance&#xff09;制定的规范&#xff0c;旨在降…...

经济体制1

一&#xff0e;计划经济体制与市场经济体制 1.计划经济又称指令型经济&#xff0c;是对生产和资源分配以及产品消费事先进行计划的经济体制。 市场经济体制是指依靠市场手段对资源进行配置的经济体制 注意&#xff1a; 计划与市场都是调节经济的手段&#xff0c;都属于资源配…...

Spring AI 入门(持续更新)

介绍 Spring AI 是 Spring 项目中一个面向 AI 应用的模块&#xff0c;旨在通过集成开源框架、提供标准化的工具和便捷的开发体验&#xff0c;加速 AI 应用程序的构建和部署。 依赖 <!-- 基于 WebFlux 的响应式 SSE 传输 --> <dependency><groupId>org.spr…...

[ctfshow web入门] web58

信息收集 if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }这麽简单&#xff1f; 解题 好吧&#xff0c;还是我想得太简单了 把system禁用了。不是参数过滤&#xff0c;而是直接禁用&#xff0c;不管是间接还是直接调用system都不行&#x…...

Python量化交易Backtrader技术指标的实现

一、Backtrader技术指标概览 (一)Backtrader内置指标的优势 Backtrader内置的技术指标具有以下优势: 多样性:涵盖了常见的移动平均线、相对强弱指数(RSI)、布林带等多种指标,满足了不同交易者的需求。易用性:通过简单的函数调用即可在策略中添加和使用这些指标,无需…...

蓝桥杯第十六届c组c++题目及个人理解

本篇文章只是部分题目的理解&#xff0c;代码和思路仅供参考&#xff0c;切勿当成正确答案&#xff0c;欢迎各位小伙伴在评论区与博主交流&#xff01; 题目&#xff1a;2025 题目解析 核心提取 要求的数中至少有1个0、2个2、1个5 代码展示 #include<iostream> #incl…...

ARM 芯片上移植 Ubuntu 操作系统详细步骤

一、准备工作 &#xff08;一&#xff09;硬件准备 ARM 开发板&#xff1a;确保 ARM 开发板的型号与 Ubuntu 官方支持的 ARM 架构兼容&#xff0c;常见的 ARM 架构有 ARMv7、ARMv8 等。例如树莓派系列开发板&#xff0c;广泛用于 ARM 系统移植&#xff0c;其采用 ARM 架构。存…...

能耗优化新引擎:EIOT平台助力企业降本增效

安科瑞顾强 数字化转型的背景下&#xff0c;能源管理正加速向智能化、远程化方向演进。安科瑞电气推出的EIOT托管平台及ADW300系列4G无线计量仪表&#xff0c;通过云端技术与无线通信的深度融合&#xff0c;为用户打造了高效、便捷的远程能源监测与管理体系&#xff0c;助力企…...

录播课视觉包装与转化率提升指南

1. 封面设计黄金法则 1.1 程序员审美三要素 极客风配色方案 主色&#xff1a;深空灰(#2D2D2D) 代码蓝(#007BFF) 点缀色&#xff1a;终端绿(#28A745) 警告黄(#FFC107) 信息密度控制 核心标语≤9字&#xff08;如&#xff1a;"3天攻克分布式事务"&#xff09; 技…...

Solidity语言基础:区块链智能合约开发入门指南

一、Solidity概述 Solidity是以太坊生态系统中最重要的智能合约编程语言&#xff0c;由Gavin Wood于2014年提出。作为面向合约的高级语言&#xff0c;它结合了JavaScript、Python和C的语法特点&#xff0c;专为在以太坊虚拟机&#xff08;EVM&#xff09;上运行而设计。 核心…...