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

qt调用deepseek的API开发(附带源码)

今天讲的是使用qt做一个界面(负责接受deepseek返回的数据和客户发送数据的端口)会用流的方式接受数据提高用户体验

  • 测试效果
  • 源码
  • 流程
    • 配置
    • deepseek调用思路
    • deepseek与qt联合开发界面思路

上一篇文章用的不是流开发,会让客户等待很久,会让人误以为卡住和掉线,今天将会用流的方式读取数据。
在这里插入图片描述

测试效果

20250422_191017


下面这个是换了调教词
看addSystemMessage(u8"你是一个贴吧的暴躁老哥很喜欢怼人

20250422_190503

源码

源码分为三部分
如有qt配置疑问可以参考我之前的文章链接: qt配置与libevent编译
如有curl和jsoncpp编译疑问参考libevent编译就行

下面是pro文件的配置
INCLUDEPATH就是绑定头文件,
LIBS就是绑定库,格式(路径+库)例/home/juan/Qt_Work/tests/(路劲)libevent_core.so(库)


QMAKE_LFLAGS+=-Wl,-rpath,'.'
INCLUDEPATH+=/home/juan/PublicLibrary/libevent-release-2.1.10-stable/include
INCLUDEPATH+=/home/juan/PublicLibrary/libevent-release-2.1.10-stable/include/event2
INCLUDEPATH+=/home/juan/PublicLibrary/build-libevent-release-2.1.10-stable-Desktop_Qt_5_9_3_GCC_64bit-Release/include
LIBS+=/home/juan/Qt_Work/tests/libevent_core.so
LIBS+=/home/juan/Qt_Work/tests/libevent.so
LIBS+=/home/juan/Qt_Work/tests/libevent_openssl.so
LIBS+=/home/juan/Qt_Work/tests/libevent_pthreads.soLIBS+=/home/juan/PublicLibrary/build-jsoncpp-master-Desktop_Qt_5_9_3_GCC_64bit-Release/lib/libjsoncpp.so
INCLUDEPATH+=/home/juan/PublicLibrary/jsoncpp-master/includeINCLUDEPATH+=/home/juan/PublicLibrary/curl-curl-8_13_0/include
LIBS+=/home/juan/PublicLibrary/build-curl-curl-8_13_0-Desktop_Qt_5_9_3_GCC_64bit-Release/lib/libcurl.soLIBS+=/usr/lib/x86_64-linux-gnu/libssl.so
LIBS+=/usr/lib/x86_64-linux-gnu/libssl3.so
LIBS+=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1

在这里插入图片描述
libeventuse.h

#ifndef LIBEVENTUSE_H
#define LIBEVENTUSE_H//这个作用是让头文件只调用一次避免重复调用
#include <QMainWindow>
#include<qthread.h>
class globalSignal:public QObject
{Q_OBJECT
public:static void sendSignal(QString ip){if(m_instance){emit m_instance->singnal(ip);}}static globalSignal *m_instance;~globalSignal();signals:void singnal(QString  ip);private:explicit globalSignal(QObject*parent=nullptr):QObject(parent){}
};class workThread:public QThread{//继承qthread是为了继承里面的虚函数方便统一格式Q_OBJECT
public:explicit  workThread(QObject *parent = nullptr);QString dataStr;
protected:void run() override;//override避免重复构造虚函数
signals:void workThread_signal(QString ip);//自定义信号void server_finish();void workThread_signalData(QString ip);
};#endif // LIBEVENTUSE_H

libeventuse.cpp

#include "libeventuse.h"globalSignal* globalSignal::m_instance = new globalSignal;globalSignal::~globalSignal()
{if(m_instance){delete m_instance;}
}#include"qdebug.h"
#include <iostream>
#include <string>
#include <vector>
#include <curl/curl.h>
#include <json/json.h>
#include <iostream>
#include <curl/curl.h>void print_json_value(const Json::Value& value)//专门用来打印json
{// 方法1:使用StyledWriter格式化输出(经典方式){Json::StyledWriter writer;std::string styled = writer.write(value);qDebug("=== StyledWriter 输出 === %s\n",styled.c_str());}
}// 调试回调函数,用于打印请求信息
static int debug_callback(CURL* handle, curl_infotype type, char* data, size_t size, void* userptr) {std::string* debug_log = static_cast<std::string*>(userptr);const char* type_str = "";switch (type) {case CURLINFO_TEXT:type_str = "INFO";break;case CURLINFO_HEADER_OUT:  // 输出请求头type_str = "HEADER_OUT";break;case CURLINFO_DATA_OUT:    // 输出请求体type_str = "DATA_OUT";break;default:return 0;  // 忽略其他类型}// 将调试信息追加到日志字符串debug_log->append("[").append(type_str).append("] ").append(data, size);return 0;
}using namespace Json;static size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response) {//写的回调函数size_t total_size = size * nmemb;std::string tmp = (char*)contents;Json::Value root;Json::CharReaderBuilder reader;std::string full_response;std::string json_str = tmp.substr(tmp.find('{'));// 解析JSONstd::istringstream iss(json_str);std::string errs;if (Json::parseFromStream(reader, iss, &root, &errs)) {// 提取增量内容const auto& content = root["choices"][0]["delta"]["content"];if (!content.isNull()) {full_response += content.asString();*response += full_response;//printf("%s", full_response.c_str());emit globalSignal::m_instance->singnal(full_response.c_str());}const auto& contentR1 =root["choices"][0]["delta"]["reasoning_content"];if (!contentR1.isNull()){full_response += contentR1.asString();*response += full_response;// printf("%s", full_response.c_str());emit globalSignal::m_instance->singnal(full_response.c_str());//发送信号给主客户端让他接受数据}// 检测终止条件if (root["choices"][0].isMember("finish_reason")) {}}return total_size;
}class ChatGPTClient {
public:ChatGPTClient(const std::string& api_key)//设置模型与api路径: api_key_(api_key),endpoint_("https://api.siliconflow.cn/v1/chat/completions"),model_("deepseek-ai/DeepSeek-V3") {curl_ = curl_easy_init();// 初始化系统消息// addSystemMessage(u8"你是一个贴吧的暴躁老哥很喜欢怼人,你回复的时候不能说自己的身份且要有很强的语言攻击性回复问题");addSystemMessage(u8"你中文编程大师");//调教词,你怎么写deeepseek就按你写的转换身份}~ChatGPTClient() {if (curl_) curl_easy_cleanup(curl_);}void addSystemMessage(const std::string& content) {Value message;message["role"] = "system";message["content"] = content;history_.append(message);}std::string ask(const std::string& question) {if (!curl_) return "Error: CURL init failed";// 添加用户问题到历史为了多轮对话,由于ds服务器不会存你的聊天记录所以要自己保存Value userMessage;userMessage["role"] = "user";userMessage["content"] = question;history_.append(userMessage);// 构建请求体Value request;request["model"] = model_;request["messages"] = history_;request["temperature"] = 0.7;//理性值,越大越理性request["max_tokens"] = 512;//你就理解为ds她最大能理解的文本数request["stream"] = true;//启动流式回复// 序列化StreamWriterBuilder writer;std::string post_data = writeString(writer, request);std::string debug_log;// 发送请求struct curl_slist* headers = nullptr;headers = curl_slist_append(headers, "Content-Type: application/json");headers = curl_slist_append(headers, ("Authorization: Bearer " + api_key_).c_str());std::string response_str;char error_buffer[CURL_ERROR_SIZE] = { 0 };curl_easy_setopt(curl_, CURLOPT_VERBOSE, 1L);                // 启用详细日志curl_easy_setopt(curl_, CURLOPT_DEBUGFUNCTION, debug_callback); // 设置回调curl_easy_setopt(curl_, CURLOPT_DEBUGDATA, &debug_log);         // 传递日志存储位置curl_easy_setopt(curl_, CURLOPT_URL, endpoint_.c_str());curl_easy_setopt(curl_, CURLOPT_HTTPHEADER, headers);curl_easy_setopt(curl_, CURLOPT_POSTFIELDS, post_data.c_str());curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, WriteCallback);curl_easy_setopt(curl_, CURLOPT_WRITEDATA, &response_str);curl_easy_setopt(curl_, CURLOPT_ERRORBUFFER, error_buffer);curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, 0L);CURLcode res = curl_easy_perform(curl_);// std::cout << "----- CURL REQUEST DEBUG -----\n";//打印日志// std::cout << debug_log << std::endl;curl_slist_free_all(headers);if (res != CURLE_OK) {return "CURL Error: " + std::string(error_buffer);}// 解析响应CharReaderBuilder reader;Value response_json;std::string parse_errors;//  printf("server:%s", response_str.c_str());Value userMessageassistant;userMessageassistant["role"] = "assistant";//把回复也要保存到历史记录里userMessageassistant["content"] = response_str;history_.append(userMessageassistant);//填充deepseek的历史回答return "ok";}private:CURL* curl_;std::string api_key_;std::string endpoint_;std::string model_;Value history_;  // 使用JSON数组存储对话历史
};static ChatGPTClient client("填自己的key");workThread::workThread(QObject *parent) : QThread(parent) {}void workThread::run() {
//dataStr+="\r\n";
client.ask(dataStr.toStdString());
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"qdebug.h"
#include"libeventuse.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);workThreaduse=new workThread;connect(globalSignal::m_instance,&globalSignal::singnal,ui->textEdit,[=](QString ip){QString data=ui->textEdit->toPlainText();data+=ip;//data+="\r\n";ui->textEdit->setText(data);ui->textEdit->moveCursor(QTextCursor::End);});connect(this->workThreaduse,&workThread::finished,[=](){ui->pushButton->setEnabled(true);});}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QString data=ui->textEdit_2->toPlainText();emit this->workThreaduse->workThread_signalData(data);ui->textEdit_2->setText("");QString tmpdata=ui->textEdit->toPlainText();if(tmpdata.size()){tmpdata+="\r\n";}tmpdata+="user:";tmpdata+=data;tmpdata+="\r\nAI:";ui->textEdit->setText(tmpdata);this->workThreaduse->dataStr=data;this->workThreaduse->start();ui->textEdit->moveCursor(QTextCursor::End);ui->pushButton->setEnabled(false);
}

ui界面

在这里插入图片描述
你们要熟悉基本的qt配置信息,要去看我以前的文章或者别人的博客才行
代码要自己修改对应的控件否则运行不起来。

流程

配置

1.配置key位置找到这个填入自己的key即可
在这里插入图片描述
2.deepseek的性格配置位置
在这里插入图片描述
3.temperature理性值越大越理性,max_tokens。,deepseek理解的最大字节数在这里插入图片描述

deepseek调用思路

在这里插入图片描述
在这里插入图片描述
官网的意思是
1.先按固定格式发送curl给指定服务器即可
2.解析服务器放回的字符串
3.deepseek不会记录你的历史记录所以要自己拼接一个json给服务器这样她就有了能理解以前东西的能力
4.申请key参考我上一篇文章链接: link

deepseek与qt联合开发界面思路

1.构建一个线程专门负责deepseek的api调用,负责发送消息
2.deepseek返回的消息使用一个全局信号( emit globalSignal::m_instance->singnal(full_response.c_str());)把消息发给主客户端,这样主客户端就能用槽函数的形式实现异步效果能把所有数据显示到控件上且不会让程序异常。
3.deepseek流式数据,我需要实时解析流式的json让他能一段字一段子的显示到控件上,提高用户体验参考代码 const auto& content = root[“choices”][0][“delta”][“content”];下的实现,其实就是使用jsoncpp对json解析得出返回值
4.使用connect对信号进行连接 connect(globalSignal::m_instance,&globalSignal::singnal,ui->textEdit,[=](QString ip)
{
逻辑代码
}
connect(发送者,发送的信号,要处理的对象,回调函数或lambda函数)
5.界面设计,参考我以前的文章有叫你如何设计最简单的控件客户端

相关文章:

qt调用deepseek的API开发(附带源码)

今天讲的是使用qt做一个界面&#xff08;负责接受deepseek返回的数据和客户发送数据的端口&#xff09;会用流的方式接受数据提高用户体验 测试效果源码流程配置deepseek调用思路deepseek与qt联合开发界面思路 上一篇文章用的不是流开发&#xff0c;会让客户等待很久&#xff0…...

java中值传递的含义

Java 中的值传递&#xff08;Pass by Value&#xff09;详解 在 Java 中&#xff0c;所有参数的传递都是值传递&#xff08;Pass by Value&#xff09;&#xff0c;但根据传递的数据类型不同&#xff08;基本类型 vs 引用类型&#xff09;&#xff0c;表现行为会有所不同。 1.…...

【自然语言处理与大模型】如何知道自己部署的模型的最大并行访问数呢?

当你自己在服务器上部署好一个模型后&#xff0c;使用场景会有两种。第一种就是你自己去玩&#xff0c;结合自有的数据做RAG等等&#xff0c;这种情况下一般是不会考虑并发的问题。第二种是将部署好的服务给到别人来使用&#xff0c;这时候就必须知道我的服务到底支持多大的访问…...

基于PHP+MySQL实现(Web)单词助手网站

WordHelper 这是一个学习 PHP 的时候依照课程设计的要求&#xff0c;做的一个简单的单词助手。 系统通过 CDN 引入 Vue.js 和 ElementUI&#xff0c;并用 PHP 搭建了一个十分十分简易的后台。 一、设计要求 1、词汇录入与编辑。提供接口让用户录入英文单词、词义、发音、词…...

Java面试实战:谢飞机的求职记 - Spring Boot、Redis与微服务技术问答解析

场景描述 谢飞机&#xff0c;一位自称为“Java全栈大师”的程序员&#xff0c;参加了某互联网大厂的Java开发岗位面试。面试官严肃而专业&#xff0c;针对Spring Boot、Redis缓存以及微服务架构等核心技术展开提问。以下是谢飞机在面试中的表现。 第一轮提问&#xff08;基础篇…...

【数字图像处理】立体视觉信息提取

双目立体视觉原理 设一个为参考平面&#xff0c;一个为目标平面。增加了一个摄像头后&#xff0c;P与Q在目标面T上有分别的成像点 双目立体视觉&#xff1a;从两个不同的位置观察同一物体&#xff0c;用三角测量原理计算摄像机到该物体的距离的 方法 原理&#xff1a;三角测量…...

解析芯片低功耗设计的底层逻辑与实现方法

芯片低功耗设计的必要性可以从实际需求和技术优化两方面来探讨&#xff1a; 从需求角度看&#xff0c;工艺进步和应用场景共同驱动低功耗设计。 随着CMOS制程持续微缩&#xff0c;晶体管密度和时钟频率提升导致静态功耗显著增加&#xff0c;漏电流问题在先进工艺中尤为明显。…...

uniapp开发2--uniapp中的条件编译总结

以下是对 uni-app 中条件编译的总结&#xff1a; 概念&#xff1a; 条件编译是一种技术&#xff0c;允许你根据不同的平台或环境&#xff0c;编译不同的代码。 在 uni-app 中&#xff0c;这意味着你可以编写一套代码&#xff0c;然后根据要编译到的平台&#xff08;例如微信小…...

Netty 异步机制深度解析:Future 与 Promise 的前世今生

引言&#xff1a;异步编程的「糖」与「痛」 在高性能网络编程中&#xff0c;「异步」几乎是必备的设计模式&#xff0c;异步的好处就是可以提升系统吞吐量&#xff0c;提升效率。但很多开发者初入 Netty 时&#xff0c;对它的异步机制总有点模糊&#xff1a; 为什么 ChannelF…...

如何查看MySql主从同步的偏移量

1.Mysql的主从同步方案 mysql为了在实现读写分离&#xff0c;主库写&#xff0c;从库读 mysql的同步方案主要是通过从库读取主库的binlog日志的方式。 binlog就是一个记录mysql的操作的日志记录&#xff0c;从库通过拿到主库的binlog知道主库进行了哪些操作&#xff0c;然后在从…...

短信验证码安全实战:三网API+多语言适配开发指南

在短信服务中&#xff0c;创建自定义签名是发送通知、验证信息和其他类型消息的重要步骤。万维易源提供的“三网短信验证码”API为开发者和企业提供了高效、便捷的自定义签名创建服务&#xff0c;可以通过简单的接口调用提交签名给运营商审核。本文将详细介绍如何使用该API&…...

护眼-科学使用显示器

一 显示色温对眼睛的影响 显示器的色温设置对护眼效果至关重要&#xff0c;合适的色温可减少蓝光伤害并缓解视疲劳。最护眼的色温并非固定值&#xff0c;需根据环境光、使用时间和场景动态调整。白天推荐6500K左右&#xff0c;夜晚降至3000K-4000K&#xff0c;并借助自动调节工…...

HarmonyOS:1.7

判断题 1.订阅网络状态变化事件时&#xff0c;通过NetConnection类型的对象调用on方法&#xff0c;传入具体事件类型即可&#xff1a; 错误(False) 2.若使用HTTP发起一个GET请求&#xff0c;直接调用get方法&#xff0c;传入请求资源的URL&#xff0c;即可发起请求&#xff…...

物联网赋能玻璃制造业:实现设备智能管理与生产协同

在当今数字化时代&#xff0c;物联网技术正深刻改变着传统制造业的发展模式&#xff0c;玻璃制造业也不例外。物联网的赋能&#xff0c;为玻璃制造业带来了设备智能管理与生产协同的新机遇&#xff0c;推动其向智能化、高效化迈进。 在设备智能管理方面&#xff0c;物联网通过…...

【我的创作纪念日】 --- 与CSDN走过的第365天

个人主页&#xff1a;夜晚中的人海 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&#xff0c;无以成江海。-《荀子》 文章目录 &#x1f389;一、机缘&#x1f680;二、收获&#x1f3a1;三、 日常⭐四、成就&#x1f3e0;五、憧憬 &#x1f389;一、机缘 光阴似箭&am…...

路由器转发规则设置方法步骤,内网服务器端口怎么让异地连接访问的实现

在路由器上设置端口转发&#xff08;Port Forwarding&#xff09;可以将外部网络流量引导到特定的局域网设备&#xff0c;这对于需要远程访问服务器、摄像头、游戏主机等设备非常有用。 登录路由器管理界面&#xff0c;添加端口转发规则让外网访问内网的实现教程分享。以下是设…...

Kotlin 的 suspend 关键字

更多相关知识 Kotlin 的 suspend 关键字是 Kotlin 协程的核心组成部分&#xff0c;它用于标记一个函数可以被挂起&#xff08;暂停执行&#xff09;并在稍后恢复执行&#xff0c;而不会阻塞线程。 理解 suspend 的作用需要从以下几个方面入手&#xff1a; 1. 允许非阻塞的异步…...

Java面试实战:从Spring Boot到微服务的深入探讨

Java面试实战&#xff1a;从Spring Boot到微服务的深入探讨 场景&#xff1a;电商场景的面试之旅 在某互联网大厂的面试间&#xff0c;面试官李老师正襟危坐&#xff0c;而对面坐着的是传说中的“水货程序员”赵大宝。 第一轮&#xff1a;核心Java与构建工具 面试官&#x…...

文件操作和IO(上)

绝对路径和相对路径 文件按照层级结构进行组织&#xff08;类似于数据结构中的树型结构&#xff09;&#xff0c;将专门用来存放管理信息的特殊文件称为文件夹或目录。对于文件系统中文件的定位有两种方式&#xff0c;一种是绝对路径&#xff0c;另一种是相对路径。 绝对路径…...

【Dify(v1.2) 核心源码深入解析】Apps 模块

重磅推荐专栏&#xff1a; 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域&#xff0c;包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用&#xff0c;以及与之相关的人工智能生成内容&#xff…...

小测验——根据调整好的参数进行批量输出

文章目录 一、前言与目的二、思考坐标系怎么生成2.1 补2.2 对于自己投影代码中对数据集参数的情况(取负)总结三、代码2.1 用这套代码可视化 pytorch3d能跑通的例子2.2 gshell的例子2.3 直接手写投影的例子四、思路4.1 确定牛和衣服方向4.2 推测牛的视角4.3 教程学习4.3.1 fov…...

蓝耘平台介绍:算力赋能AI创新的智算云平台

一、蓝耘平台是什么 蓝耘智算云&#xff08;LY Cloud&#xff09;是蓝耘科技打造的现代化GPU算力云服务平台&#xff0c;深度整合自研DS满血版大模型技术与分布式算力调度能力&#xff0c;形成"模型算力"双轮驱动的技术生态。平台核心优势如下&#xff1a; 平台定位…...

23种设计模式-结构型模式之桥接模式(Java版本)

Java 桥接模式&#xff08;Bridge Pattern&#xff09;详解 &#x1f309; 什么是桥接模式&#xff1f; 桥接模式用于将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。 通过在两个独立变化的维度之间建立“桥”&#xff0c;避免因多维度扩展导致的类爆炸。 &#x…...

Python常用的第三方模块之数据分析【pdfplumber库、Numpy库、Pandas库、Matplotlib库】

【pdfplumber库】从PDF文件中读取内容 import pdfplumber #打开PDF文件 with pdfplumber.open(DeepSeek从入门到精通(20250204).pdf) as pdf:for i in pdf.pages: #遍历页print(i.extract_text()) #extract_text()方法提取内容print(f----------------第{i.page_number}页结束…...

PerfettoSQL

​​​​# Device State: Top App # select id, ts, dur, name from (__query_slice_track__long_battery_tracing_Device_State_Top_app) --> 简便方法 """ INCLUDE PERFETTO MODULE android.battery_stats; select * from android_battery_stats_event_s…...

【Python笔记 03 】运算符

一、算数运算符 1、加减乘除 #加法 print (11) #减法 print (1-1) #乘法 print (1*1) #除法&#xff0c;注&#xff1a;商一定是float浮点数&#xff0c;不管是否能整数&#xff0c;且除数不能为0&#xff0c;如下图&#xff1a; print (1/1) 如果除数为0即报错提示。 …...

组网技术-BGP技术,IS-IS协议,VRRP技术

1.BGP在不同自治系统AS进行路由转发 EBGP外部边界网关协议 IBGP内部边界网关协议 2.AS指的是同一个组织管理下&#xff0c;使用统一选路策略的设备集合 3.AS直接需要直连链路&#xff0c;或者通过VPN协议构造逻辑直连进行邻居建立 4.使用IGP可能存在暴露AS内部的网络信息的…...

Word处理控件Spire.Doc系列教程:C# 为 Word 文档设置背景颜色或背景图片

在 Word 文档中&#xff0c;白色是默认的背景设置。一般情况下&#xff0c;简洁的白色背景足以满足绝大多数场景的使用需求。但是&#xff0c;如果您需要创建简历、宣传册或其他创意文档&#xff0c;设置独特的背景颜色或图片能够极大地增强文档的视觉冲击力。本文将演示如何使…...

极狐GitLab 中如何自定义角色?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 自定义角色 (ULTIMATE ALL) 引入于极狐GitLab 15.7&#xff0c;功能标志为 customizable_roles。默认启用于极狐GitLab 15.9…...

JAVA:Web安全防御

目录 一、Web安全基础与常见威胁 OWASP Top 10核心漏洞解析 • SQL注入&#xff08;SQLi&#xff09;、跨站脚本&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09; • 不安全的反序列化、敏感数据泄露 Java后端常见攻击场景 • 通过HttpServletRequest…...

Nginx:支持 HTTPS

文章目录 Nginx 开启 ssl 以支持 HTTPS1 生成本地证书2 开启 ssl 以支持 HTTPS3 将 https 的请求转发给 http 最终的 nginx.conf 如下 Nginx 开启 ssl 以支持 HTTPS [!IMPORTANT] 在下文中&#xff0c;将采用如下定义。 HTTP端口&#xff1a; 80 HTTPS端口&#xff1a; 443 服务…...

数据库性能优化(sql优化)_分布式优化思路02_yxy

数据库性能优化_分布式优化思路02 1 核心优化策略(二)_分区智能连接优化2 核心优化策略(三)_数据本地化3 核心优化策略(四)_选择正确的数据分发方式1 核心优化策略(二)_分区智能连接优化 分区智能连接出现在多个表进行连接时的优化策略,优化效率非常明显 分区智能连接是指:…...

【网络】代理服务器收尾及高级IO

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的笔记吧~ 自己写自己的八股&#xff01;让未来的自己看懂&#xff01; &#xff08;全文手敲&#xff0c;受益良多&#xff09; 本文主要带你了解什么是高级IO&#xff0c;以及常…...

基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路

基于大疆行业无人机的特色解决方案-无线通信篇&#xff1a;基于蜂窝以及自组网MESH的无线通信C2链路 大疆无人机目前是业内性价比最有优势的无人机产品&#xff0c;尤其是机场3的推出&#xff0c;持续产品升级迭代&#xff0c;包括司空2、大疆智图以及大疆智运等专业软件、各种…...

js实现2D图片堆叠在一起呈现为3D效果,类似大楼楼层的效果,点击每个楼层不会被其他楼层遮挡

js实现2D图片堆叠在一起呈现为3D效果&#xff0c;类似大楼楼层的效果&#xff0c;点击每个楼层不会被其他楼层遮挡。实现过程使用元素的绝对定位&#xff0c;通过伪元素设置背景图片和文字&#xff0c;效果如下&#xff1a; index.jsx&#xff1a; import React, { useEffect,…...

【安装部署】Linux下最简单的 pytorch3d 安装

最近接触一个项目需要用到 pytorch3d 库&#xff0c;找了好多眼花缭乱的资料&#xff0c;最后发现大道至简~ 1、查看 python&#xff0c;cuda&#xff0c;pytorch 的版本 source activate myMRI # 激活环境 python --version # python 版本查看 nvcc --version # cuda…...

【在阿里云或其他 CentOS/RHEL 系统上安装和配置 Dante SOCKS5 代理服务】

在阿里云或其他 CentOS/RHEL 系统上安装和配置 Dante SOCKS5 代理服务 什么是SOCKS5&#xff1f;前提条件步骤 1&#xff1a;安装 Dante SOCKS5 服务步骤 2&#xff1a;创建专用代理用户&#xff08;推荐&#xff09;步骤 3&#xff1a;配置 Dante 服务步骤 4&#xff1a;设置日…...

第十五讲、Isaaclab中在机器人上添加传感器

0 前言 官方教程&#xff1a;https://isaac-sim.github.io/IsaacLab/main/source/tutorials/04_sensors/add_sensors_on_robot.html IsaacsimIsaaclab安装&#xff1a;https://blog.csdn.net/m0_47719040/article/details/146389391?spm1001.2014.3001.5502 传感器有助于智能…...

网络设备智能巡检系统-MCP案例总结

一、案例背景与目标 背景: 企业网络中存在多厂商(华为、H3C、思科等)设备,传统巡检需人工逐台登录,效率低且易出错。 目标: 开发基于自然语言的智能巡检系统,实现: 自然语言指令解析多厂商设备自动化巡检结构化报告生成技术栈: Python + Ollama + Netmiko + FastAPI…...

力扣2685(dfs)

我们对每个连通块进行dfs&#xff0c;在深搜的过程中&#xff0c;定义两个变量v,e.其中v表示该连通图的节点数量&#xff0c;e表示该连通图中边的数量的两倍。为什么是两倍呢&#xff1f;因为我们针对某个节点进行dfs的过程中&#xff0c;我们让e加上这个节点所连边的数量&…...

火山引擎实时语音合成WebSocket V3协议Python实现demo

火山引擎语音整体特点 火山引擎(字节跳动旗下)的语音合成产品确实非常面向多媒体内容创作&#xff0c;特别是短视频、有声书和多人场景。 1. 音色多样性与场景细分 火山引擎提供了极其丰富的音色选择(100音色)&#xff0c;并按以下场景精细分类&#xff1a; 多情感音色&…...

Apache SeaTunnel:新一代开源、高性能数据集成工具

Apache SeaTunnel 是一款开源、分布式、高性能的数据集成工具&#xff0c;可以通过配置快速搭建数据管道&#xff0c;支持实时海量数据同步。 Apache SeaTunnel 专注于数据集成和数据同步&#xff0c;主要旨在解决数据集成领域的常见问题&#xff1a; 数据源多样性&#xff1a…...

【音视频】音频解码实战

音频解码过程 ⾳频解码过程如下图所示&#xff1a; FFmpeg流程 关键函数 关键函数说明&#xff1a; avcodec_find_decoder&#xff1a;根据指定的AVCodecID查找注册的解码器。av_parser_init&#xff1a;初始化AVCodecParserContext。avcodec_alloc_context3&#xff1a;为…...

学习思路分享---从0开始搭建基本web服务器

学习思路分享—从0开始搭建基本web服务器 为什么要搭建yum仓库? 下载系统软件,类似于应用商店,系统软件,podman,镜像,容器,镜像仓库,docker,集装箱, 作用&#xff1a;自动解决依赖关系 为什么要搭建web服务器? 提供网站 , nginx 第一步搭建yum仓库,本地离线仓库 挂载关盘驱动…...

开源模型应用落地-Podcastfy-从文本到声音的智能跃迁-Docker(二)

一、前言 在当今信息呈现方式越来越多样化的背景下&#xff0c;如何将文字、图片甚至视频高效转化为可听的音频体验&#xff0c;已经成为内容创作者、教育者和研究者们共同关注的重要话题。Podcastfy是一款基于Python的开源工具&#xff0c;它专注于将多种形式的内容智能转换成…...

docker 里面没有 wget 也 install 不了

docker 里面没有 wget 也 install 不了 如果你在Docker容器中发现没有安装wget工具&#xff0c;并且无法通过常规方法安装它&#xff0c;这通常是因为容器的基础镜像中缺少包管理工具&#xff0c;或者包源配置不正确。以下是一些可能的解决方案&#xff1a; 使用包管理工具安…...

【无人机】问题分析。查看电机转速时,四个电机转速不一致,QGC中检测到电机转速不均衡

1、问题描述 在组装完成无人机后&#xff0c;对无人机的电机进行测试 在MAVLink Inspector一栏中&#xff0c;点击SERVO_OUTPUT_RAW可以查看飞控输出的PWM信号。 无人机解锁&#xff08;Armed&#xff09;后&#xff0c;按照油门大小servo1/2/3/4_raw的值域为1000-2000&…...

Docker Compose常用命令

Docker Compose常用命令 安装docker-comosedocker-compose配置文件及常用指令yaml 文件级docker-compose.yml配置文件示例 docker compose常用命令启动服务停止服务重启服务查看运行容器列表查看服务日志构建镜像docker-compose rm删除 安装docker-comose # 声明版本 VER2.35.…...

生产环境大数据平台权限管理

引言&#xff1a;数据资产保护的生死线 在金融行业某头部企业发生的数据泄露事件中&#xff0c;由于权限管理漏洞导致千万级用户信息外泄&#xff0c;直接经济损失超过2.3亿元。这个案例揭示了生产环境大数据平台权限管理的重要性和复杂性。本文将深入探讨从权限模型设计到实施…...

【连载6】基础智能体的进展与挑战综述-奖励

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 5. 奖励 奖励机制帮助智能体区分有益与有害的行为&#xff0c;塑造其学习过程并影响其决策…...