《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
引言
随着人工智能技术的飞速发展,智能Agent与模型上下文协议(MCP)的应用场景越来越广泛。本报告将详细介绍如何基于Python Flask框架构建一个智能应用,该应用能够读取DOC文件并在前端实时显示润色改写过程。本文将深入探讨如何整合Flask、win32com、MCP协议以及智能Agent技术,为读者提供一个完整的实现方案。
系统架构设计
整体架构
我们的系统由三个主要部分组成:
- 前端界面:提供文件上传功能,并实时显示润色改写过程
- Flask后端:处理文件上传,使用win32com读取DOC文件内容,通过MCP协议与智能Agent通信
- 智能Agent:基于MCP协议实现,负责文本的润色改写工作
组件分工
- 前端:负责与用户的交互,展示上传进度和润色结果
- Flask后端:作为中间层,处理文件上传,协调各组件工作
- 智能Agent:实现文本处理的核心逻辑,通过MCP协议与后端通信
通信机制
- 前端与后端:使用WebSocket技术实现实时通信
- 后端与智能Agent:使用MCP协议进行通信
项目文档结构
以下是项目的标准文档结构:
project_name/
├── README.md
├── requirements.txt
├── app/
│ ├── __init__.py
│ ├── routes.py
│ ├── doc_processor.py
│ ├── mcp_agent.py
│ ├── socketio_handler.py
│ ├── templates/
│ │ ├── index.html
│ │ └── result.html
│ └── static/
│ ├── style.css
│ └── script.js
└── tests/├── test_doc_processor.py└── test_mcp_agent.py
文件功能说明
项目根目录
- README.md:项目概述、功能介绍、安装指南、使用说明和联系方式
- requirements.txt:列出项目所需的所有Python依赖包及其版本号,便于他人快速安装环境
Flask应用主目录 (app/
)
- init.py:初始化Flask应用,配置相关设置(如调试模式、密钥等),并注册蓝图
- routes.py:定义应用的路由规则和处理函数,包括:
- 主页面路由(显示上传表单)
- 文件上传处理路由(接收上传的DOC文件)
- 实时显示处理结果的WebSocket路由
- doc_processor.py:使用win32com库读取DOC文件内容,提供文本提取和保存的功能
- mcp_agent.py:实现MCP协议的智能Agent,负责与大模型通信,执行文本润色任务
- socketio_handler.py:处理WebSocket通信,实现实时显示润色过程
- templates/
- index.html:主页面,包含文件上传表单和上传按钮
- result.html:显示润色结果的页面,包含实时更新的文本区域
- static/
- style.css:定义页面的样式,包括布局、颜色、字体等
- script.js:前端JavaScript代码,处理文件上传、与后端的通信以及实时显示润色过程
测试文件目录 (tests/
)
- test_doc_processor.py:测试
doc_processor.py
模块的功能,包括文件读取、文本提取等 - test_mcp_agent.py:测试
mcp_agent.py
模块的功能,包括MCP协议的通信、智能Agent的响应等
前端界面设计
前端界面需要实现以下功能:
- 文件上传区域
- 上传进度显示
- 润色过程实时显示
- 最终结果展示
<!DOCTYPE html>
<html>
<head><title>DOC文件润色</title><script src="https://cdn.jsdelivr.net/npm/socket.io-client@4.7.2/dist/socket.io.min.js"></script><script>const socket = io();// 文件上传处理document.getElementById('uploadBtn').addEventListener('click', function() {const fileInput = document.getElementById('docFile');const file = fileInput.files[0];if (file) {const formData = new FormData();formData.append('docFile', file);fetch('/upload', {method: 'POST',body: formData}).then(response => {// 处理响应});}});// 监听后端消息socket.on('progress', function(data) {document.getElementById('progress').textContent = `处理进度: ${data.percent}%`;document.getElementById('steps').innerHTML = data.steps.join('<br>');});socket.on('result', function(data) {document.getElementById('result').textContent = data.text;});</script>
</head>
<body><h1>DOC文件润色</h1><input type="file" id="docFile" accept=".doc"><button id="uploadBtn">上传并润色</button><div id="progress">处理进度: 0%</div><div id="steps">处理步骤:</div><div id="result"></div>
</body>
</html>
Flask后端实现
环境配置
首先需要安装必要的Python库:
pip install flask flask-socketio win32com-client
文件上传处理
from flask import Flask, request, send_from_directory
from flask_socketio import SocketIO
from win32com.client import Dispatch
import time
import json
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, cors_allowed_origins="*")
# 存储上传的文件
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/upload', methods=['POST'])
def upload_file():if 'docFile' not in request.files:return jsonify({'error': 'No file part'})file = request.files['docFile']if file.filename == '':return jsonify({'error': 'No selected file'})if file:filename = secure_filename(file.filename)file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)file.save(file_path)# 异步处理文件process_file.delay(file_path, filename)return jsonify({'success': True, 'filename': filename})return jsonify({'error': 'Unknown error'})
@socketio.on('connect')
def handle_connect():print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():print('Client disconnected')
if __name__ == '__main__':socketio.run(app)
使用win32com读取DOC文件
import win32com.client as win32
import time
from flask import current_app
from flask_socketio import emit
def read_doc_file(file_path):word = win32.Dispatch('Word.Application')doc = word.Documents.Open(file_path)# 读取文本内容text = doc.Content.Text# 关闭文档和Word应用程序doc.Close()word.Quit()return text
def process_file(file_path, filename):# 模拟处理进度steps = []# 第一步:读取文件steps.append("正在读取DOC文件...")emit('progress', {'percent': 20, 'steps': steps}, room=request.sid)time.sleep(1)try:content = read_doc_file(file_path)# 第二步:通过MCP协议发送给智能Agent处理steps.append("正在通过MCP协议发送文本给智能Agent...")emit('progress', {'percent': 40, 'steps': steps}, room=request.sid)time.sleep(1)# 模拟MCP协议调用processed_text = mcp_agent.process_text(content)# 第三步:接收处理结果steps.append("正在接收处理结果...")emit('progress', {'percent': 80, 'steps': steps}, room=request.sid)time.sleep(1)# 发送最终结果emit('result', {'text': processed_text}, room=request.sid)# 清理临时文件os.remove(file_path)return jsonify({'success': True})except Exception as e:return jsonify({'error': str(e)})
MCP协议服务实现
MCP协议概述
模型上下文协议(MCP)是一个开放协议,标准化了应用程序如何为大型语言模型(LLMs)提供上下文。可以将MCP想象成AI应用的"USB-C接口",它为AI应用提供了连接万物的接口[80]。
MCP协议的主要目的是解决当前AI模型因数据孤岛限制而无法充分发挥潜力的难题,使AI应用能够安全地访问和操作本地及远程数据[80]。
MCP协议实现
import json
import requests
class MCPClient:def __init__(self, server_url):self.server_url = server_urldef call(self, tool_name, arguments):payload = {"name": tool_name,"arguments": arguments}response = requests.post(f"{self.server_url}/mcp/call",headers={"Content-Type": "application/json","Accept": "application/json"},data=json.dumps(payload))if response.status_code == 200:return json.loads(response.text)else:raise Exception(f"API call failed with status code {response.status_code}")
定义服务接口和Schema
from pydantic import BaseModel, Field
class TextProcessingInput(BaseModel):text: str = Field(..., description="需要处理的文本内容")style: str = Field(..., description="需要的文本风格,例如正式、活泼等")
class TextProcessingOutput(BaseModel):text: str = Field(..., description="处理后的文本内容")changes: list = Field(..., description="文本修改记录")
智能Agent实现
AI模型选择与集成
对于文本润色任务,我们可以选择适合自然语言处理的模型,如GPT-3.5或LLama-2等。这些模型具有强大的文本理解和生成能力,能够完成文本润色、改写等任务。
文本润色改写算法
import time
class TextProcessor:def __init__(self, mcp_client):self.mcp_client = mcp_clientdef process_text(self, text):# 调用MCP服务处理文本result = self.mcp_client.call("text_processing.process",{"text": text,"style": "formal" # 示例:正式风格})return result["text"]
与MCP协议的集成
class TextProcessingAgent:def __init__(self):passdef process(self, request):# 处理文本润色请求text = request["arguments"]["text"]style = request["arguments"].get("style", "formal")# 进行文本处理processed_text = self._process_text(text, style)return {"name": "text_processing.process","arguments": {"text": processed_text}}def _process_text(self, text, style):# 实现具体的文本处理逻辑# 这里只是一个示例,实际可以根据需要实现更复杂的逻辑if style == "formal":# 正式风格处理逻辑processed_text = f"正式风格的润色文本:{text}"else:# 其他风格处理逻辑processed_text = f"其他风格的润色文本:{text}"return processed_text
系统集成与测试
系统集成方案
- 前端与后端集成:使用WebSocket技术实现前后端实时通信
- 后端与MCP服务集成:通过HTTP请求实现通信
- MCP服务与智能Agent集成:通过MCP协议实现通信
测试用例设计
- 基本功能测试:上传DOC文件,检查是否能正确显示处理进度和结果
- 错误处理测试:测试文件格式错误、文件大小超出限制等情况
- 性能测试:测试不同大小的DOC文件处理时间
性能测试与优化
- 异步处理:使用Flask的异步功能处理文件上传和文本处理
- 缓存机制:对于频繁使用的处理结果,可以考虑添加缓存
- 资源管理:合理管理Word应用程序的打开和关闭,避免资源泄漏
总结与展望
项目总结
本项目实现了基于Python Flask框架的DOC文件阅读和实时显示润色改写过程的应用。通过整合win32com、MCP协议和智能Agent技术,我们成功地实现了:
- 使用win32com库读取DOC文件内容
- 通过MCP协议实现与智能Agent的通信
- 使用Flask-SocketIO实现实时显示
- 提供用户友好的前端界面
可能的改进方向
- 支持更多文件格式:除了DOC文件,还可以支持DOCX、PDF等其他格式
- 增强智能Agent能力:集成更强大的AI模型,提供更智能的文本处理
- 添加用户认证:增加用户认证功能,保护用户数据安全
- 优化性能:优化文本处理算法,提高处理速度和质量
应用前景展望
随着人工智能技术的不断发展,基于智能Agent和MCP协议的应用将有更广泛的应用场景:
- 文档处理:自动摘要、翻译、风格转换等
- 内容创作:辅助写作、创意生成等
- 数据分析:从文档中提取关键信息、生成报告等
- 教育应用:自动批改作业、提供学习建议等
参考资料
[80] 模型上下文协议(MCP) - Anthropic API. https://docs.anthropic.com/zh-CN/docs/agents-and-tools/mcp.
相关文章:
《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用 引言 随着人工智能技术的飞速发展,智能Agent与模型上下文协议(MCP)的应用场景越来越广泛。本报告将详细介绍如何基于Python Flask框架构建一个智能应用&…...
Pygame字体与UI:打造游戏菜单和HUD界面
Pygame字体与UI:打造游戏菜单和HUD界面 在现代游戏中,用户界面(UI)是玩家与游戏互动的重要桥梁。一个精心设计的UI不仅能够提升游戏的视觉效果,还能增强玩家的游戏体验。Pygame作为一个强大的游戏开发库,提供了丰富的工具和方法来创建和管理UI元素。本文将详细介绍如何使…...
游戏引擎学习第246天:将 Worker 上下文移到主线程创建
回顾并为今天的工作做准备 关于GPU驱动bug的问题,目前本地机器上没有复现。如果有问题,昨天的测试就应该已经暴露出来了。当前演示的是游戏的过场动画,运行正常,使用的是硬件渲染。 之前使用软件渲染时没有遇到太多问题ÿ…...
系统设计(2)—Redis—消息队列—数据库—熔限降
Redis 缓存设计 在高并发系统中,缓存是提升性能、减轻后端负载的杀手锏。Redis 作为内存级的高性能缓存数据库,被广泛应用于各类系统设计中。利用 Redis,将热点数据存储在内存中,可以加速读写并大幅降低对后端关系型数据库的直接…...
第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
比赛还没有开始,竟然忘记写using namespace std; //debug半天没看明白 (平时cv多了 然后就是忘记那个编译参数,(好惨的开局 编译参数-stdc11 以下都是赛时所写代码,赛时无聊时把思路都打上去了(除了倒数第二题&#…...
HiSpark Studio如何使用Trae(Marscode)插件
引言 我现在非常喜欢使用编程辅助插件,用的最多的是Trae(以前叫Marscode)。以前华为的DevEco Device Tools是基于VSCode的,直接使用官方的插件市场就可以安装了。现在海思提供了自己的HiSpark Studio,比原来的Device …...
Netmiko连接池与长连接优化
背景与原理 在网络自动化中,频繁创建和断开 SSH 连接会带来以下问题: 性能损耗:每次连接需经历 TCP 握手、SSH 协商、用户认证等流程,耗时约 1~3 秒。资源浪费:设备端可能限制并发连接数,频繁连接易触发阈…...
10:00面试,10:08就出来了,面试问的问题太。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这…...
从基础到实战的量化交易全流程学习:1.2 金融市场基础
从基础到实战的量化交易全流程学习:1.2 金融市场基础 在量化交易领域,扎实的金融市场基础是策略开发与风险控制的核心支撑。本文将从交易品种、市场机制、监管合规三方面展开,结合市场特性、真实数据案例及实践要点进行系统化解析,…...
游戏状态管理:用Pygame实现场景切换与暂停功能
游戏状态管理:用Pygame实现场景切换与暂停功能 在开发游戏时,管理游戏的不同状态(如主菜单、游戏进行中、暂停等)是非常重要的。这不仅有助于提升玩家的游戏体验,还能使代码结构更加清晰。本文将通过一个简单的示例,展示如何使用Pygame库来实现游戏中的场景切换和暂停功…...
数据资产价值及其实现路径-简答题回顾
1. 简述数据资产的定义及其特征。 答案:数据资产是指企业或组织所拥有的、具有经济价值的数据资源。它具有以下特征:可复制性(数据可以多次使用)、价值潜力(数据经过处理、分析可以创造经济价值)、流动性&…...
Docker化HBase排错实录:从Master hflush启动失败到Snappy算法未支持解决
前言 在容器化时代,使用 Docker 部署像 HBase 这样复杂的分布式系统也比较方便。社区也提供了许多方便的 HBase Docker 镜像,没有找到官方的 apache的,但有包含许多大数据工具的 harisekhon/hbase 或用于学习目的的 bigdatauniversity/hbase…...
端到端自动驾驶的数据规模化定律
25年4月来自Nvidia、多伦多大学、NYU和斯坦福大学的论文“Data Scaling Laws for End-to-End Autonomous Driving”。 自动驾驶汽车 (AV) 栈传统上依赖于分解方法,使用单独的模块处理感知、预测和规划。然而,这种设计在模块间通信期间会引入信息丢失&am…...
桌面端开发技术栈选型:开启高效开发之旅
在数字化浪潮中,桌面端应用依然占据重要地位,而选择合适的技术栈是打造优质桌面端应用的关键一步。以下是多种主流桌面端开发技术栈的介绍与对比,希望能为大家提供有价值的参考。 基于 Web 技术的跨平台框架 • Electron: • 特…...
C++模拟Java C#的 finally
在 Java 和 C# 中,finally 是一个与异常处理(try-catch)配合使用的关键字,用于确保一段代码无论是否发生异常都会被执行。它通常用于释放资源(如文件句柄、数据库连接、锁等),避免内存泄漏或状态…...
Spring Boot安装指南
🔖 Spring Boot安装指南 🌱 Spring Boot支持两种使用方式: 1️⃣ 可作为常规Java开发工具使用 2️⃣ 可作为命令行工具安装 ⚠️ 安装前提: 📌 系统需安装 Java SDK 17 或更高版本 🔍 建议先运行检查命令…...
zephyr架构下Bluetooth advertising接口
目录 概述 1 函数接口 2 主要函数介绍 2.1 bt_le_adv_start函数 2.1.1 函数功能介绍 2.1.2 典型使用示例 2.1.3 广播间隔 2.1.4 注意事项 2.2 bt_le_adv_stop 函数 2.2.1 函数功能 2.2.2 使用方法介绍 2.2.3 实际应用示例 2.2.4 关键注意事项 2.2.5 常见问题解决 …...
Oracle官宣 MySQL+APEX+AI三认证限时免费
1 MySQL8 OCP 考试代码 1Z0-908 免费时间:2025年4月20日至7月31日 https://education.oracle.com/mysql-promo 2 APEX云开发专家 考试代码 1Z0-771 免费时间:2025年5月15日截止! https://mylearn.oracle.com/ou/learning-path/become…...
深入理解N皇后问题:从DFS到对角线优化
N皇后问题是一个经典的算法问题,要求在NN的棋盘上放置N个皇后,使得它们互不攻击。本文将全面解析该问题的解法,特别聚焦于DFS算法和对角线优化的数学原理。 问题描述 在NN的国际象棋棋盘上放置N个皇后,要求: 任意两个…...
1软考系统架构设计师:第一章系统架构概述 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
超简记忆要点 一、考试大纲 目标:架构设计能力(需求→架构)能力:技术/方法/行业科目:综合(选择)、案例(问答)、论文(论述) 二、架构核心 定义…...
MuJoCo 关节角速度记录与可视化,监控机械臂运动状态
视频讲解: MuJoCo 关节角速度记录与可视化,监控机械臂运动状态 代码仓库:GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…...
如何打包python程序为可执行文件
将 Python 程序打包为可执行文件是一个常见需求,尤其是在希望将应用程序分享给不具备 Python 环境的用户时。以下是使用 PyInstaller 工具将 Python 程序打包为可执行文件的步骤。 步骤 1:安装 PyInstaller 如果您还没有安装 PyInstaller,请…...
产销协同是什么?产销协同流程有哪些?
目录 一、产销协同是什么 1.从市场需求的角度来看 2.企业内部运营的角度来看 3.从供应链的角度来看 二、实现产销协同的八大步骤 1. 市场需求预测 2. 销售计划制定 3. 生产能力评估 4. 生产计划制定 5. 库存管理 6. 信息共享与沟通 7. 订单执行与跟踪 8. 绩效评估…...
SQL 查询进阶:WHERE 子句与连接查询详解
SQL(Structured Query Language)是管理关系型数据库的核心语言,熟练掌握其查询功能对于数据处理至关重要。本文将深入探讨 SQL 中的两个关键概念:WHERE 子句和连接查询。我们将详细讲解 WHERE 子句中的模糊查询、IS NULL、IS NOT …...
【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别
图:MTCNN的三阶段网络结构(P-Net、R-Net、O-Net) DFace深度解析:基于深度学习的高性能人脸识别 深度解析DFace:基于PyTorch的实时人脸检测与识别系统技术背景与项目概述核心功能与特点实战部署指南环境准备硬件要求软…...
基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述
以下是基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述,使用文本和Mermaid语法表示: 架构图(Mermaid语法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…...
百度搜索AI开放计划:让应用连接精准流量的秘诀
引言 在人工智能技术深刻改变各行各业的今天,每天都有许多AI应用诞生。然而无论是开发者还是用户依然会感到自己的应用鲜有人使用或是需求没有被充分满足。这种情况正说明了为什么我们需要SEO流量,而一个能够与AI应用直接相关的SEO平台更是呼之欲出。百度…...
Redis数据结构SDS,IntSet,Dict
1.字符串:SDS SDS的底层是C语言编写的构建的一种简单动态字符串 简称SDS,是redis比较常见的数据结构。 由于以下几种缺点,Redis并没有直接采用C语言的字符串。 1.获取长度需要计算 2.非二进制安全 :中间不能有 \0,…...
leetcode201.数字范围按位与
找到公共前缀部分,然后后面的部分全0 class Solution {public int rangeBitwiseAnd(int left, int right) {int offset 0;while (left ! right) {offset;left left >> 1;right right >> 1;}return right << offset;} }...
云服务器 —— 公有 IP 与 私有 IP
云服务器的 公有 IP 和 私有 IP 在网络架构中扮演不同的角色,具体用途和区别如下: 目录 1. 公有 IP(Public IP) 作用: 特点: 示例场景: 2. 私有 IP(Private IP) 作用…...
北斗导航 | Transformer增强BiLSTM网络的GNSS伪距观测量误差探测
在GNSS(全球导航卫星系统)定位中,伪距观测量的误差直接影响定位精度。结合Transformer和LSTM的优势,可以设计一种混合模型以提升误差探测能力。以下是具体的技术实现方案: 1. 模型架构设计 1.1 输入特征设计 原始GNSS观测数据: 伪距观测值(C/A码、P码)、载波相位、多普…...
0803分页_加载更多-网络ajax请求2-react-仿低代码平台项目
文章目录 1 分页1.1 url与分页参数1.2 分页组件与url1.3 列表页引用分页组件 2 加载更多2.1 状态2.2 触发时机2.3 加载数据2.4优化 结语 1 分页 1.1 url与分页参数 查询问卷列表接口,添加分页参数: page:当前页码(第几页&#…...
React 与 Vue 的区别:你会选择哪个框架呢
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
Jmeter如何取JDBC request响应参数作为下一个接口的值?
1、 功能参数说明 Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致 Query:填写的sql语句未尾不要加“;” Parameter valus:参数值,对查询条件进行参数化 Paramete…...
【C++】14.容器适配器 | stack | queue | 仿函数 | priority_queue
1. 容器适配器 什么是适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设 计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。 在C中,容器适配器(Container Adapters&…...
论文阅读:2025 arxiv Aligning to What? Limits to RLHF Based Alignment
Aligning to What? Limits to RLHF Based Alignment https://arxiv.org/pdf/2503.09025 https://www.doubao.com/chat/3871529075012866 速览 这篇论文主要探讨了强化学习从人类反馈(RLHF)在对齐大型语言模型(LLMs)时的局限性…...
利用Arcgis自己绘制shp文件
1.选择自己想要创建的shp文件的位置 我是直接创建在连接文件夹中 2.右键-新建-shp 3.设置名称、要素类型、空间参考 4、点击创建要素 5、右侧选择图层、创建面 6、开始绘制,双击任意位置结束绘制 之后可以改一下shp文件的名字...
路由器重分发(OSPF+静态路由)
路由器重分发(OSPF静态路由) 静态路由充当不了翻译官 OSPF路由 OSPF路由需要宣告自己的ip, Router(config)#router ospf 1 Router(config-router)#network 10.10.10.0 0.0.0.255 area 0还要帮静态路由的也宣告一下 Router(config)#ip route…...
KTT入门
Kinetic tournament tree 简称 KTT 下文中全部简写。 KTT 用于解决类以下问题: 已知 N N N 条一次函数,求解一段区间内函数最大值。支持修改操作可以修改 x i x_i xi 或者 b i b_i bi 的值。具体做法: 我们考虑线段树来维护一个类似 Δ \Delta Δ 的东西,我们令当…...
WPF 上位机开发模板
WPF 上位机开发模板 WPF上位机开发模板,集成了基础操作菜单、海康视觉实时图像界面、串口通讯、网口通讯、主流PLC通讯、数据存储、图片存储、参数配置、权限管理、第三方webapi接口接入、数据追溯与查询等功能。 一、项目结构 WpfSupervisor/ ├── Models/ …...
理想星环OS选择NuttX作为MCU侧OS的核心原因分析
文章目录 引言一、POSIX兼容性:降低汽车软件迁移成本二、轻量级与模块化:适配MCU资源约束三、硬实时性能:保障车辆控制确定性四、多芯片适配:加速车企供应链灵活性五、安全与可靠性:构建纵深防御体系六、社区与生态&am…...
IP数据报发送和转发的过程
1. 发送端准备数据 应用程序(比如浏览器)要发送数据,比如访问一个网站。 应用层(HTTP) → 传输层(TCP/UDP) → 网络层(IP)。 IP层负责把数据包打包,加上必要…...
Pinia 详细解析:Vue3 的状态管理利器
一、Pinia 概述 Pinia 是 Vue 3 的官方推荐状态管理库,由 Vue 核心团队维护。它是对 Vuex 的改进和简化,提供了更简洁的 API 和更好的 TypeScript 支持。 Pinia 的核心优势 更简单的 API:相比 Vuex 减少了概念和模板代码完美的 TypeScript…...
pytorch python常用指令
一、常用的conda指令 创建新的python环境 conda create -n env_name python3.x 查看已有的python环境 conda env list 进入已有的python环境 conda activate env_name 退出当前的python环境 conda deactivate 二、常用的pip指令 pip install -r requirements.txt 根据…...
ubantu18.04(Hadoop3.1.3)之Spark安装和编程实践
说明:本文图片较多,耐心等待加载。(建议用电脑) 注意所有打开的文件都要记得保存。 第一步:准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的,因此需要读者完成我之前教程的所有操作。 以下所有操…...
Ubuntu下安装vsode+qt搭建开发框架(二)
Ubuntu下安装vsode+qt搭建开发框架(二) 上一节介绍了vsode下搭建qt环境,采用的项目构建方式是使用qt官方的qmake工具。然而从qt6之后,官方已经开始推荐使用cmake来构建项目;并且许多项目都是cmake直接构建的,用cmake来构建项目具有可以更方便的融合其他开源项目。 一、vs…...
获取房源信息并完成可视化——网络爬虫实战1
房源信息爬虫与可视化分析程序 个人程序全网一手,盗卖必究 项目介绍 本项目是一个基于Python的房源信息爬虫与可视化分析工具,可以爬取链家网的二手房源信息,并对数据进行清洗、分析和可视化展示。通过本工具,用户可以快速了解特…...
css word
介绍 CSS word-spacing 属性,用于指定段字之间的空间,例如: p {word-spacing:30px; }word-spacing属性增加或减少字与字之间的空白。 注意: 负值是允许的。 浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号。 属…...
[mysql]约束(上)
约束 道德约束,法律约束,这个约束在表里面是狭义的. 约束广义的,比如数值型你就不能录入’abc’.字符,定义了varchar(15)范围不能超过数量15. 我们这个章节要说的约束是狭义的,是具体的我们设定的约束, 为什么我们需要约束呢 我们是为了数据的精确性和可靠性,我们了为了防…...
Eclipse 插件开发 2
Eclipse 插件开发 2 1 插件配置 1 插件配置 <?xml version"1.0" encoding"UTF-8"?> <?eclipse version"3.4"?> <plugin><extension point"org.eclipse.ui.commands"><category id"com.xu.learn.…...