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

使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统

完成使用 Gradio 作为前端,Qwen3 作为大模型,vLLM 作为推理引擎来部署一个支持多表查询的 Text2SQL 系统。

系统架构概述

  1. Gradio: 提供用户友好的 Web 界面

  2. Qwen3: 通义千问的最新开源大模型,擅长文本到SQL转换

  3. vLLM: 高效的大模型推理引擎,支持连续批处理和PagedAttention

一、创建数据库表

创建新的数据库并添加三张表(家庭联系表、身体状况表、学生成绩表):

import pymysql# 替换为你的MySQL root密码
MYSQL_PASSWORD = '12345678'connection = pymysql.connect(host='localhost',user='root',password=MYSQL_PASSWORD
)try:with connection.cursor() as cursor:# 创建数据库cursor.execute("CREATE DATABASE IF NOT EXISTS school_system")cursor.execute("USE school_system")# 1. 创建家庭联系表cursor.execute("""CREATE TABLE IF NOT EXISTS family_contact (id INT AUTO_INCREMENT PRIMARY KEY,father_name VARCHAR(50) NOT NULL,mother_name VARCHAR(50) NOT NULL,father_phone VARCHAR(20) NOT NULL,mother_phone VARCHAR(20) NOT NULL)""")# 2. 创建身体状况表cursor.execute("""CREATE TABLE IF NOT EXISTS physical_condition (id INT AUTO_INCREMENT PRIMARY KEY,height DECIMAL(5,2) COMMENT '身高(cm)',weight DECIMAL(5,2) COMMENT '体重(kg)',age INT COMMENT '年龄',gender ENUM('男','女') NOT NULL,body_fat DECIMAL(4,2) COMMENT '体脂百分比',blood_sugar DECIMAL(4,2) COMMENT '血糖(mmol/L)')""")# 3. 创建学生成绩表cursor.execute("""CREATE TABLE IF NOT EXISTS student_score (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,chinese INT COMMENT '语文',math INT COMMENT '数学',english INT COMMENT '英语',physics INT COMMENT '物理',chemistry INT COMMENT '化学',biology INT COMMENT '生物',history INT COMMENT '历史',geography INT COMMENT '地理',politics INT COMMENT '政治',total_score INT COMMENT '总分')""")# 插入家庭联系表数据family_data = [('王强','李梅','13800138000','13900139000'),('李军','张华','13600136000','13700137000'),('张勇','陈丽','13500135000','13400134000'),('陈一刚','周敏','13200132000','13300133000'),('刘辉','杨娟','13100131000','13000130000'),('杨明','赵芳','14700147000','14800148000'),('吴俊','孙燕','14900149000','15000150000'),('赵刚','钱丽','15100151000','15200152000'),('孙林','何娜','15300153000','15400154000'),('周建','徐慧','15500155000','15600156000'),('郑华','马丽','15700157000','15800158000'),('冯峰','朱婷','15900159000','16000160000'),('田军','高敏','16100161000','16200162000'),('贺伟','郭玲','16300163000','16400164000'),('钟明','罗霞','16500165000','16600166000'),('姜云涛','唐瑶','16700167000','16800168000'),('段勇','谢红','16900169000','17000170000'),('侯军','卢芳','17100171000','17200172000'),('袁刚','黄琴','17300173000','17400174000'),('文辉','吴兰','17500175000','17600176000')]cursor.executemany("INSERT INTO family_contact (father_name, mother_name, father_phone, mother_phone) VALUES (%s, %s, %s, %s)",family_data)# 插入身体状况表数据physical_data = [(175,70,20,'男',18,5.5),(168,55,19,'女',22,5.2),(180,75,21,'男',16,5.8),(172,68,20,'男',17,5.3),(165,52,18,'女',20,5),(178,73,22,'男',19,5.6),(160,50,19,'女',21,5.1),(173,66,20,'男',18,5.4),(170,64,21,'男',19,5.7),(162,53,18,'女',20,5.2),(176,71,22,'男',18,5.5),(166,56,19,'女',21,5.3),(182,78,23,'男',17,5.9),(174,69,20,'男',18,5.4),(164,51,18,'女',20,5),(177,72,21,'男',19,5.6),(163,54,19,'女',21,5.2),(171,67,20,'男',18,5.3),(167,58,18,'女',20,5.1),(179,74,22,'男',17,5.7)]cursor.executemany("INSERT INTO physical_condition (height, weight, age, gender, body_fat, blood_sugar) VALUES (%s, %s, %s, %s, %s, %s)",physical_data)# 插入学生成绩表数据score_data = [('王小明',85,92,88,78,82,75,80,77,83,790),('李华',78,89,90,85,88,82,76,84,86,818),('张敏',90,83,86,91,87,88,82,85,89,841),('陈刚',82,95,80,88,90,86,83,80,81,825),('刘芳',76,82,84,79,83,78,75,77,80,774),('杨威',88,90,82,92,89,87,84,86,85,843),('吴静',91,86,89,84,85,83,81,88,87,824),('赵鹏',80,93,81,87,92,84,80,83,82,812),('孙悦',79,85,87,76,80,77,78,79,81,772),('周琳',84,88,91,82,86,85,83,84,88,825),('郑浩',86,91,83,89,88,86,82,85,84,836),('冯雪',77,84,88,75,81,74,76,78,80,773),('田甜',92,87,85,90,89,88,84,86,87,848),('贺磊',81,94,82,86,91,85,81,82,83,815),('钟莹',78,83,86,79,84,77,75,78,81,771),('姜涛',87,90,84,91,88,86,83,85,84,838),('段丽',90,86,89,85,87,84,82,86,88,837),('侯宇',83,92,81,88,90,87,80,83,82,816),('袁梦',76,85,88,77,82,76,78,79,80,771),('文轩',88,91,85,90,89,88,84,86,87,848)]cursor.executemany("INSERT INTO student_score (name, chinese, math, english, physics, chemistry, biology, history, geography, politics, total_score) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",score_data)connection.commit()print("数据库school_system创建成功!三张表及示例数据已初始化完成!")except Exception as e:print(f"执行出错: {e}")
finally:connection.close()

二、模型部署

下载Qwen3模型

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3-1.7B')

 三、 本地部署Dify

 注意:v100显卡会出现不适配,不推荐使用

 1. 安装 Docker

ubuntu 22.04 docker 安装&使用_ubuntu22.04 安装docker-CSDN博客

 2. 安装vllm

pip install -U xformers torch torchvision torchaudio triton --index-url https://download.pytorch.org/whl/cu121
pip install modelscope vllm 

 四、创建 text2sql 的 Gradio 应用

如果使用云服务器请先确认暴露端口

以闪电云为例:

sudo apt install rinetd
echo "0.0.0.0 8880 127.0.0.1 9000" > /etc/rinetd.conf
sudo systemctl restart rinetd

创建一个 app.py 文件,包含以下内容:

import gradio as gr
import pymysql
from vllm import LLM, SamplingParams
import json# 数据库配置
DB_CONFIG = {'host': 'localhost','user': 'root','password': '12345678','database': 'school_system'
}# vLLM 配置
MODEL_NAME = "/root/.cache/modelscope/hub/models/Qwen/Qwen2.5-1.5B-Instruct"  # 根据你实际部署的模型调整
llm = LLM(model=MODEL_NAME)
sampling_params = SamplingParams(temperature=0.1, top_p=0.9, max_tokens=512)# 数据库连接
def get_db_connection():return pymysql.connect(**DB_CONFIG)# 获取数据库 schema 信息
def get_schema_info():schema_info = []conn = get_db_connection()cursor = conn.cursor()# 获取表信息cursor.execute("SHOW TABLES")tables = cursor.fetchall()for table in tables:table_name = table[0]# 获取表结构cursor.execute(f"SHOW CREATE TABLE {table_name}")create_table = cursor.fetchone()[1]schema_info.append(f"表 {table_name} 的结构:\n{create_table}\n")conn.close()return "\n".join(schema_info)# 执行 SQL 查询
def execute_sql(sql_query):try:conn = get_db_connection()cursor = conn.cursor(pymysql.cursors.DictCursor)cursor.execute(sql_query)if sql_query.strip().lower().startswith("select"):result = cursor.fetchall()else:conn.commit()result = {"message": f"执行成功,影响行数: {cursor.rowcount}"}return resultexcept Exception as e:return {"error": f"SQL 执行错误: {str(e)}"}finally:conn.close()# 生成 SQL 查询
def generate_sql(prompt):schema_info = get_schema_info()system_prompt = f"""你是一个专业的SQL生成器,请根据以下数据库结构和用户问题生成正确的MySQL查询语句。
数据库结构:
{schema_info}要求:
1. 只返回SQL语句,不要包含解释或其他内容
2. 确保SQL语法正确
3. 多表查询时使用合适的JOIN语句
4. 使用表名.列名的形式避免歧义
5. 如果用户问题涉及统计计算,使用合适的聚合函数示例:
问题: 查询所有学生的姓名和数学成绩
回答: SELECT name, math FROM student_score
"""full_prompt = f"{system_prompt}\n问题: {prompt}\n回答:"outputs = llm.generate([full_prompt], sampling_params)generated_sql = outputs[0].outputs[0].text.strip()# 清理生成的SQL,去除可能的Markdown符号if generated_sql.startswith("```sql"):generated_sql = generated_sql[6:-3].strip()elif generated_sql.startswith("```"):generated_sql = generated_sql[3:-3].strip()# 只取第一条SQL语句(遇到换行或"问题:"就截断)for line in generated_sql.splitlines():line = line.strip()if line and not line.startswith("问题:") and not line.startswith("回答:"):# 只要不是空行、不是"问题:"或"回答:",就返回return line# 如果没找到合适的SQL,返回空字符串return ""# 处理用户查询
def process_query(user_input):# 生成SQLsql_query = generate_sql(user_input)# 执行SQLif sql_query:result = execute_sql(sql_query)print("SQL:", sql_query)print("Result:", result)print("Result type:", type(result))return sql_query, resultelse:return "未能生成SQL", "请尝试更清晰地描述您的查询需求"# Gradio 界面
with gr.Blocks() as demo:gr.Markdown("# 学校管理系统 Text2SQL 查询")gr.Markdown("使用自然语言查询学生信息、成绩和家庭联系信息")with gr.Row():with gr.Column():user_input = gr.Textbox(label="输入您的问题", placeholder="例如: 查询数学成绩大于90分的男生姓名和母亲电话")submit_btn = gr.Button("提交")with gr.Column():sql_output = gr.Textbox(label="生成的SQL语句")result_output = gr.JSON(label="查询结果")submit_btn.click(process_query,inputs=user_input,outputs=[sql_output, result_output])gr.Examples(examples=[["查询总分最高的前5名学生姓名和总分"],["查询身高超过175cm的男生的姓名和数学成绩"],["查询父母电话相同的学生的姓名"],["查询体脂率低于20%的女生的姓名、年龄和英语成绩"],["查询数学成绩高于平均分的学生的姓名、数学成绩和母亲姓名"]],inputs=user_input)if __name__ == "__main__":demo.launch(server_name="0.0.0.0", server_port=9000)

 启动应用

python app.py

优化后app.py代码:

import gradio as gr
import pymysql
from vllm import LLM, SamplingParams
import json# 数据库配置
DB_CONFIG = {'host': 'localhost','user': 'root','password': '12345678','database': 'school_system'
}# vLLM 配置
MODEL_NAME = "/root/.cache/modelscope/hub/models/Qwen/Qwen2.5-1.5B-Instruct"  # 根据你实际部署的模型调整
llm = LLM(model=MODEL_NAME)
sampling_params = SamplingParams(temperature=0.1, top_p=0.9, max_tokens=512)# 数据库连接
def get_db_connection():return pymysql.connect(**DB_CONFIG)# 获取数据库 schema 信息
def get_schema_info():schema_info = []conn = get_db_connection()cursor = conn.cursor()cursor.execute("SHOW TABLES")tables = cursor.fetchall()for table in tables:table_name = table[0]cursor.execute(f"SHOW FULL COLUMNS FROM {table_name}")columns = cursor.fetchall()schema_info.append(f"表 {table_name} 字段:")for col in columns:# col[0]: 字段名, col[1]: 类型, col[8]: 注释comment = f" -- {col[8]}" if col[8] else ""schema_info.append(f"  - {table_name}.{col[0]}: {col[1]}{comment}")schema_info.append("")  # 空行分隔conn.close()return "\n".join(schema_info)# 执行 SQL 查询
def execute_sql(sql_query):try:conn = get_db_connection()cursor = conn.cursor(pymysql.cursors.DictCursor)cursor.execute(sql_query)if sql_query.strip().lower().startswith("select"):result = cursor.fetchall()else:conn.commit()result = {"message": f"执行成功,影响行数: {cursor.rowcount}"}return resultexcept Exception as e:return {"error": f"SQL 执行错误: {str(e)}"}finally:conn.close()# 生成 SQL 查询
def generate_sql(prompt):schema_info = get_schema_info()system_prompt = f"""你是一个专业的SQL生成器,请根据以下数据库结构和用户问题生成正确的MySQL查询语句。数据库结构:
{schema_info}要求:
1. 只返回SQL语句,不要包含解释或其他内容
2. 确保SQL语法正确
3. 多表查询时使用合适的JOIN语句
4. **所有字段都必须用表名.字段名的形式书写**
5. 如果用户问题涉及统计计算,使用合适的聚合函数示例:
问题: 查询所有学生的姓名和数学成绩
回答: SELECT student_score.name, student_score.math FROM student_score问题: 查询身高超过175cm的男生的姓名和数学成绩
回答: SELECT student_score.name, student_score.math FROM student_score JOIN physical_condition ON student_score.id = physical_condition.id WHERE physical_condition.height > 175 AND physical_condition.gender = '男'
"""full_prompt = f"{system_prompt}\n问题: {prompt}\n回答:"outputs = llm.generate([full_prompt], sampling_params)generated_sql = outputs[0].outputs[0].text.strip()# 清理生成的SQL,去除可能的Markdown符号if generated_sql.startswith("```sql"):generated_sql = generated_sql[6:-3].strip()elif generated_sql.startswith("```"):generated_sql = generated_sql[3:-3].strip()# 只取第一条SQL语句(遇到换行或"问题:"就截断)for line in generated_sql.splitlines():line = line.strip()if line and not line.startswith("问题:") and not line.startswith("回答:"):return linereturn ""# 处理用户查询
def process_query(user_input):# 生成SQLsql_query = generate_sql(user_input)# 执行SQLif sql_query:result = execute_sql(sql_query)print("SQL:", sql_query)print("Result:", result)print("Result type:", type(result))return sql_query, resultelse:return "未能生成SQL", "请尝试更清晰地描述您的查询需求"# Gradio 界面
with gr.Blocks() as demo:gr.Markdown("# 学校管理系统 Text2SQL 查询")gr.Markdown("使用自然语言查询学生信息、成绩和家庭联系信息")with gr.Row():with gr.Column():user_input = gr.Textbox(label="输入您的问题", placeholder="例如: 查询数学成绩大于90分的男生姓名和母亲电话")submit_btn = gr.Button("提交")with gr.Column():sql_output = gr.Textbox(label="生成的SQL语句")result_output = gr.JSON(label="查询结果")submit_btn.click(process_query,inputs=user_input,outputs=[sql_output, result_output])gr.Examples(examples=[["查询总分最高的前5名学生姓名和总分"],["查询身高超过175cm的男生的姓名和数学成绩"],["查询父母电话相同的学生的姓名"],["查询体脂率低于20%的女生的姓名、年龄和英语成绩"],["查询数学成绩高于平均分的学生的姓名、数学成绩和母亲姓名"]],inputs=user_input)if __name__ == "__main__":demo.launch(server_name="0.0.0.0", server_port=9000)

 

相关文章:

使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统

完成使用 Gradio 作为前端,Qwen3 作为大模型,vLLM 作为推理引擎来部署一个支持多表查询的 Text2SQL 系统。 系统架构概述 Gradio: 提供用户友好的 Web 界面 Qwen3: 通义千问的最新开源大模型,擅长文本到SQL转换 vLLM: 高效的大模型推理引擎…...

OrangePi Zero 3学习笔记(Android篇)2 - 第一个C程序

目录 1. 创建项目文件夹 2. 创建c/cpp文件 3. 创建Android.mk/Android.bp文件 3.1 Android.mk 3.2 Android.bp 4. 编译 5. adb push 6. 打包到image中 在AOSP里面添加一个C或C程序,这个程序在Android中需要通过shell的方式运行。 1. 创建项目文件夹 首先需…...

【数据结构】手撕二叉搜索树

目录 二叉搜索树的概念二叉搜索树的实现节点类构造函数拷贝构造函数赋值运算符重载析构函数插入函数查找函数删除函数中序遍历 二叉搜索树的应用(k和k/v模型 ) 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树…...

C++排序算法(一)

一.初识排序 排序是将一组数据元素按照特定的顺序(如升序或降序)进行重新排列的操作。排序算法则是实现这种数据重新排列的具体方法。 c/c中,这些元素可以是各种数据类型,比如整数、浮点数、字符串,甚至是自定…...

链表——C语言

一、单项不带头 #pragma once #include<stdio.h> #include<stdlib.h>typedef int data; typedef struct list {data a;struct list* next; }list;list* buynode(data x);void pushback(list** phead,data x);void popback(list** phead);void pushfront(list** ph…...

Java学习手册:数据库事务相关知识

一、事务的概念与特性 概念 &#xff1a;事务是数据库中一系列操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败&#xff0c;是一个不可分割的工作单位。例如&#xff0c;在银行转账系统中&#xff0c;从一个账户扣款和向另一个账户存款这两个操作必须作为…...

碰一碰发视频源码搭建的技术迭代与升级实践

在数字化营销与智能交互场景不断拓展的背景下&#xff0c;碰一碰发视频技术凭借其便捷性和创新性&#xff0c;成为实体商业、文旅宣传等领域的重要工具。然而&#xff0c;随着用户需求升级、技术快速发展&#xff0c;基于源码搭建的碰一碰发视频系统也需持续迭代更新。本文将围…...

Linux 内核学习(6) --- Linux 内核基础知识

目录 Linux 内核基础知识进程调度内存管理虚拟文件系统和网络接口进程间通信Linux 内核编译Makefile 和 Kconfig内核Makefile内核Kconfig 配置项标识的写法depend 关键字select 关键字表达式逻辑关系Kconfig 其他语法 配置文件的编译Linux 内核引导方法Booloader 定义Linux 内核…...

28. C++位图 布隆过滤器 哈希切割相关

文章目录 位图位图概念代码实现将x比特位置1将x比特位置0检测位图中x是否为1全部代码实现 C库中的位图 bitset位图的应用 布隆过滤器布隆过滤器提出布隆过滤器概念布隆过滤器的特点控制误判率布隆过滤器的实现布隆过滤器的插入布隆过滤器的查找布隆过滤器的删除布隆过滤器优点布…...

第2章 神经网络的数学基础

本章我们将梳理一下神经网络所需的数学基础知识&#xff0c;其中大多数内容没有超出高中所学范围&#xff0c;因此读起来不会吃力。 2-1神经网络所需的函数 本节我们来看一下神经网络世界中频繁出现的函数。虽然它们都是基本的函数&#xff0c;但是对于神经网络是不可缺少的。…...

linux环境安装docker

linux环境下载安装docker 参考网址查询服务器的操作系统下载docker1、卸载已安装的docker2、安装dnf-plugins-core 包3、配置镜像仓库4、安装版本安装最新版本安装指定版本 5、设置开机自启动6、运行测试7、卸载重装清理 Docker 系统中不再使用的数据&#xff08;容器、缓存&am…...

windows使用bat脚本激活conda环境

本文不生产技术&#xff0c;只做技术的搬运工&#xff01;&#xff01;&#xff01; 前言 最近需要在windows上使用批处理脚本执行一些python任务&#xff0c;但是被自动激活conda环境给卡住了&#xff0c;研究了一下解决方案 解决方案 call your_conda_path\Scripts\activa…...

第一章:MySQL 索引基础

第一章&#xff1a;MySQL 索引基础 1. 索引是什么&#xff1f; ​​定义​​&#xff1a;索引&#xff08;Index&#xff09;是数据库中用于快速查找数据的一种数据结构&#xff0c;类似于书籍的目录。​​核心作用​​&#xff1a;通过减少磁盘I/O次数&#xff0c;加速查询速…...

紫光展锐全新奇迹手游引擎,开启游戏“芯”时代

UNISOC Miracle Gaming奇迹手游引擎亮点&#xff1a; • 高帧稳帧&#xff1a;支持《王者荣耀》等主流手游90帧高画质模式&#xff0c;连续丢帧率最高降低85%; • 丝滑操控&#xff1a;游戏冷启动速度提升50%&#xff0c;《和平精英》开镜开枪操作延迟降低80%; • 极速网络&…...

C++ 的未来趋势与挑战:探索新边界

引言 在软件开发的浩瀚宇宙中&#xff0c;C 一直是一颗耀眼的恒星&#xff0c;凭借其卓越的性能和广泛的适用性&#xff0c;在系统编程、游戏开发、嵌入式系统等诸多领域占据着核心地位。随着科技的飞速发展&#xff0c;C 也面临着新的趋势和挑战。本文将深入探讨 C 在 AI 驱动…...

Oracle 开窗函数

Oracle 开窗函数&#xff08;Window Functions&#xff09;允许在不合并行的前提下对数据进行复杂分析&#xff0c;常用于排名、累计计算、前后行对比等场景。 一、核心语法结构 函数名() OVER ([PARTITION BY 分区列] [ORDER BY 排序列 [ASC|DESC]] [窗口帧子句 (ROWS | RAN…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.3 动态报表生成(Jupyter Notebook/ReportLab)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL数据分析实战&#xff1a;动态报表生成&#xff08;Jupyter Notebook/ReportLab&#xff09;一、动态报表生成概述&#xff08;一&#xff09;动态报表的重要性&a…...

Oracle OCP认证考试考点详解083系列11

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 51. 第51题&#xff1a; 题目 解析及答案&#xff1a; 关于在 Linux 上安装 Oracle 数据库&#xff0c;以下哪三项是正确的&#xff1f;…...

双11美妆数据分析

1. 导入库使用Python进行分析&#xff0c;需要导入相关库&#xff1a; pythonimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns 1. 读取数据1. 查看数据基本信息 查看前几行&#xff1a;使用 df.head() 查看数据的前5行&#xff…...

github+ Picgo+typora

github Picgotypora 本文将介绍如何使用Picgo在typora中实现上传服务 创建github仓库以及配置token 创建仓库 注意需要Initialize 添加README 配置为public 配置token github点击头像找到setting 选择Developer setting 配置token generate 选第一个第二个都行(我这里选第…...

战术级微波干扰系统:成都鼎轻量化装备如何实现全频段智能压制?

在5G与卫星通信蓬勃发展的今天&#xff0c;成都鼎讯科技推出新一代微波通信干扰设备&#xff0c;以1000-6000MHz全频段覆盖能力&#xff0c;打造单兵可携的"电磁手术刀"。该设备突破传统微波干扰设备"高能耗、大体积"的桎梏&#xff0c;通过军用级模块化设…...

Oracle 数据布局探秘:段与区块的内部机制

前言 在 Oracle 数据库的庞大架构中&#xff0c;数据存储的效率与性能是决定整个系统健康状况的关键因素。Oracle 采用了一套精妙的逻辑存储管理体系来组织和分配数据&#xff0c;其中&#xff0c;“段&#xff08;Segment&#xff09;”和“区&#xff08;Extent&#xff09;…...

leetcode 142. Linked List Cycle II

题目描述 哈希表解法 这个方法很容易想到&#xff0c;但需要O(N)的空间。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detect…...

探索智能体的记忆:类型、策略和应用

AI Agent 中的记忆&#xff1a;类型、策略和应用 记忆实现是使智能体能够保持上下文、从过去的交互中学习并做出明智决策的关键组成部分。与人类记忆非常相似&#xff0c;智能体记忆允许 AI 系统随时间存储、检索和利用信息&#xff0c;从而为用户创造更连贯和个性化的体验。 …...

mysql集成Qwen大模型MCP计算【附实战代码】

mysql集成Qwen大模型MCP计算 题目分析步骤 1:在 MySQL 中构建核素半衰期数据库1.1 数据库设计1.2 安装和设置 MySQL1.3 创建数据库和表步骤 2:构建放射性活度计算函数2.1 依赖库2.2 Python 函数2.3 函数说明步骤 3:修复 MySQL 访问权限步骤 4:代码实践用户输入指导测试用例…...

006 yum和Linux生态

&#x1f984; 个人主页: 小米里的大麦-CSDN博客 &#x1f38f; 所属专栏: Linux_小米里的大麦的博客-CSDN博客 &#x1f381; GitHub主页: 小米里的大麦的 GitHub ⚙️ 操作环境: Visual Studio 2022 文章目录 Linux 软件包管理器 yum什么是软件包&#xff1f;基于 Linux 系统…...

一种扫描雷达超分辨成像检测一体化方法——论文阅读

一种扫描雷达超分辨成像检测一体化方法 1. 专利的研究目标与产业意义1.1 研究目标与实际问题1.2 产业意义2. 专利的创新方法:低秩稀疏约束与联合优化框架(重点解析)2.1 核心思路与模型构建2.2 迭代优化算法2.3 与传统方法的对比优势3. 实验设计与验证3.1 实验参数3.2 实验结…...

三款实用工具推荐:配音软件+Windows暂停更新+音视频下载!

各位打工人请注意&#xff01;今天李师傅掏出的三件套&#xff0c;都是经过实战检验的效率放大器。先收藏再划走&#xff0c;说不定哪天就能救命&#xff01; 一.祈风TTS-配音大师 做短视频的朋友肯定深有体会——配个音比写脚本还费劲&#xff01;要么付费买声音&#xff0c…...

云平台的文件如何备份

不同的云平台有不同的文件备份方式&#xff0c;以下以常见的阿里云、腾讯云为例进行介绍&#xff1a; 阿里云 对象存储 OSS 可以通过 OSS 控制台&#xff0c;选择需要备份的 Bucket&#xff08;存储桶&#xff09;和文件&#xff0c;手动发起备份操作&#xff0c;将数据复制到…...

密码学系列 - SR25519与ED25519

SR25519 SR25519 是一种高级的数字签名算法&#xff0c;它基于 Schnorr 签名方案&#xff0c;使用的是 Curve25519 椭圆曲线。这种签名算法在密码学社区中广受欢迎&#xff0c;特别是在区块链和加密货币领域。以下是关于 SR25519 的详细介绍。 SR25519 简介 SR25519 是一种 …...

XMP-Toolkit-SDK 编译与示例程序

一、前言 最近在调研图片的元数据读写方案&#xff0c;需要了解 XMP 空间以及如何在 XMP 空间中读写元数据&#xff0c;本文做一个相关内容的记录。 XMP-Toolkit-SDK 以及 XMP标准简介 XMP-Toolkit-SDK 是 Adobe 提供的一套开源软件开发工具包&#xff08;SDK&#xff09;&a…...

基于nnom的多选择器

核心组件 元件类型目的接口STM32F103CB微控制器主处理单元-MPU60506 轴 IMU移动侦测I2C 接口W25Q64 系列闪存信号和配置存储SPI 系列按钮用户输入模式选择和激活GPIO &#xff08;通用输出&#xff09;搭载了LED用户反馈系统状态指示GPIO &#xff08;通用输出&#xff09;RT6…...

铁塔基站项目用电能表有哪些?

简婷 安科瑞电气股份有限公司 上海嘉定 201801 引言&#xff1a;随着5G基站的迅猛发展&#xff0c;基站的能耗问题也越来越突出&#xff0c;高效可靠的基站配电系统方案&#xff0c;是提高基站能耗使用效率&#xff0c;实现基站节能降耗的重要保证&#xff0c;通过多回路仪表…...

ROS-仿真实验平台

&#xff08;1&#xff09;ROS基本架构 机器人操作系统&#xff08;Robot Operating System&#xff0c;ROS&#xff09;是一款基于开源协议的、针对 机器人进行开发的、灵活可扩展的的软件平台&#xff0c;整合多种软件功能包和开发工具&#xff0c;提 供机器人操作系统所需的…...

Loly: 1靶场渗透

Loly: 1 来自 <Loly: 1 ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.241 3&#xff0c;对靶机进行端口服务探测 n…...

LeetCode第191题_位1的个数

LeetCode 第191题&#xff1a;位1的个数 题目描述 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为汉明重量&#xff09;。 难度 简单 题目链接 点…...

JVM——Java内存模型

Java内存模型 在Java多线程编程中&#xff0c;Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是理解程序执行行为和实现线程安全的关键。下面我们深入探讨Java内存模型的内容。 Java内存模型概述 Java内存模型定义了Java程序中变量的内存操作规则&#xff0c;…...

JVM局部变量表和操作数栈的内存布局

局部变量表和操作数栈 首先看一段Java源码 public class Add_Sample{public int add(int i, int j){int k 100;int result i j k;return result;}public static void main(String[] args){int result new Add_Sample().add(10,20);System.out.println(result);} }使用ja…...

【MongoDB篇】MongoDB的分片操作!

目录 引言第一节&#xff1a;分片核心概念&#xff1a;为什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二节&#xff1a;分片架构的“三大金刚”&#xff1a;核心组件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;️第三节&#xff…...

AI一键替换商品融入场景,5分钟打造专业级商品图

在电商行业&#xff0c;传统修图工具操作复杂、耗时费力&#xff0c;尤其是将商品自然融入多样化场景的需求&#xff0c;常让卖家头疼不已。如今&#xff0c;一款专为电商设计的AI工具-图生生&#xff0c;其核心功能“AI商品图-更换背景”&#xff0c;颠覆传统流程。只需上传一…...

《数据结构:二叉搜索树(Binary Search Tree)》

文章目录 :red_circle:一、二叉搜索树的概念:red_circle:二、二叉搜索树的性能分析:red_circle:三、二叉搜索树的操作&#xff08;一&#xff09;插入&#xff08;二&#xff09;查找&#xff08;三&#xff09;删除 :red_circle:四、二叉搜索树的实现代码&#xff08;一&#…...

isNotBlank和isNotEmpty有什么区别?

如下是hutool的StrUtil工具包下的源码 结果&#xff1a;如果字符串仅由空白字符组成&#xff08;比如 " "&#xff09;&#xff0c;那么isNotBlank将返回false&#xff0c;而isNotEmpty返回true。 isNotBlank当中的Blank是空白的意思&#xff0c;也就是是否不等于空…...

Kotlin 中实现单例模式的几种常见模式

1 懒汉式&#xff0c;线程安全&#xff08;伴生对象 by lazy&#xff09; 想“懒汉”一样&#xff0c;拖延到首次使用时才进行初始化。 通过 companion object 和 lazy 实现懒加载&#xff0c;首次访问是才进行初始化&#xff0c;lazy 默认使用 LazyThreadSafetyMode.SYNCHR…...

挑战用豆包教我学Java

现在的AI发展的越来越快&#xff0c;在学习方面更是让人吃惊&#xff0c;所以我决定用豆包来教我学Java语言。本人现在大二&#xff0c;此前已经学习过了c&#xff0c;所以有一定的基础&#xff0c;相信我肯定可以成功的&#xff01; 首先我向豆包说明的我的情况&#xff1a; …...

怎么在非 hadoop 用户下启动 hadoop

今天有同学反馈一个问题&#xff0c;比较有代表性。说下 问题描述 在 root 用户下 无法执行如下代码 1.linux执行计划 &#xff1a;crontab 加入 42 17 7 5 * /root/hadoop_op.sh2.hadoop_op.sh内语句&#xff1a; #!/bin/bash su - hadoop cd /opt/module/hadoop-3.3.0/sb…...

如何激活python的虚拟环境

目录 激活虚拟环境步骤&#xff1a; 注意事项&#xff1a; 为什么写这篇文章&#xff1a; 我在检查依赖版本的时候发现在terminal一直显示找不到该依赖 但是在interpreter里面能看到所有我以及下载的依赖和版本&#xff1b;然后稍微看了下发现是自己忘记激活虚拟环境了&#…...

Spring Boot 中的事务管理是如何工作的?

全文目录&#xff1a; 开篇语前言一、什么是事务管理&#xff1f;1. 事务的四大特性&#xff08;ACID&#xff09; 二、Spring Boot 中的事务管理1. Spring Boot 中的声明式事务管理1.1 Transactional 注解1.2 使用 Transactional 注解示例&#xff1a; 1.3 Transactional 的默…...

【计算机网络-传输层】传输层协议-UDP

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 上篇文章&#xff1a;HTTP服务器实现 下篇文章&#xff1a;传输层协议-TCP 摘要&#xff…...

【论文学习】空间变化系数模型SVCMsp原理及应用

目录 空间变化系数模型SVCMSVCM模型基本思想两种主要的参数估计方法方法一&#xff1a;贝叶斯方法&#xff08;Bayesian Approaches&#xff09;方法二&#xff1a;频率学派方法&#xff08;Frequentist Approaches&#xff09;总结对比 论文1&#xff1a;提出空间变化系数模型…...

时间序列数据集构建方案Pytorch

时间序列数据集构建方案 时间序列数据集TimeSeriesDataset 时间序列数据集增强EnhancedTimeSeriesDataset 时间序列数据集的构建不同于图像、传统面板数据&#xff0c;其需要满足多实体、动态窗口、时间连续等性质&#xff0c;且容易产生数据泄漏。本文介绍了一种时间序列数据…...