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

【实战教程】从零实现DeepSeek AI多专家协作系统 - Spring Boot+React打造AI专家团队协作平台

🚀 本项目是DeepSeek大模型应用系列的V3版本,基于V1和V2版本的功能进行全面升级,引入了多智能体协作机制!

系列教程推荐阅读顺序

  1. 【V1版本】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南
  2. 【V2版本】基于DeepSeek API的流式对话系统实现:Spring Boot+React打造实时响应体验
  3. 【V3版本】当前文章 - 多智能体协作系统实战

DeepSeek AI多专家协作系统界面展示

文章目录

    • 🚀 项目介绍 - 打造AI多专家协作系统
    • 💡 多专家协作系统原理详解
      • 1. 协作模式的核心原理
      • 2. 专家Agent设计与实现
        • 2.1 专家角色定义 - 打造AI专家知识库
        • 2.2 智能专家选择服务 - 自动组建最佳专家团队
      • 3. 协作会话管理实现
        • 3.1 结构化的三阶段协作流程
        • 3.2 专家消息处理与上下文管理
    • 🎨 前端React实现多专家协作界面
      • 1. 专家选择面板组件实现
      • 2. 专家消息样式与渲染实现
      • 3. 协作流程可视化与阶段指示器
    • 🎬 多专家协作系统实际效果展示
      • 1. 单一助手与多专家对比效果
      • 2. 多专家协作过程可视化展示
      • 3. 最终技术解决方案呈现效果
    • ⚠️ 当前局限性与未来改进计划
      • 1. 专家协作部分尚未实现流式输出
      • 2. 协作过程缺乏交互性
      • 3. 专家能力限制
    • 🔍 核心技术挑战与解决方案
      • 1. 专家角色定义挑战
      • 2. 协作流程管理挑战
      • 3. 内容呈现挑战
    • 💻 DeepSeek AI多专家协作系统技术亮点
    • 🔮 项目拓展方向与开发路线图
    • 📥 源码下载与项目部署指南
      • 快速部署指南:
    • 📝 写在最后

🚀 项目介绍 - 打造AI多专家协作系统

在AI大模型时代,简单的单一助手已不足以解决复杂的技术难题。虽然我们之前的DeepSeek对话系统V2版本实现了流畅的流式输出,但用户反馈表明,面对跨领域、多维度的技术问题时,需要更专业的解决方案。

为此,我们推出了DeepSeek多专家协作系统,这是一个基于Spring Boot和React的完整项目,核心亮点是:

  • 多专家协作模式:模拟团队协作场景,由多位不同领域的专家共同解决问题
  • 🎯 智能专家选择算法:基于DeepSeek大模型,根据问题自动选择最合适的专家组合
  • 🧠 结构化协作流程:从思考、讨论到最终结论的完整协作流程
  • 🖼️ 角色化用户界面:为每位专家设计独特的视觉形象和交互方式
  • 🔄 实时协作体验:多专家间的讨论通过服务器发送事件(SSE)实时呈现

这一版本将AI对话体验从简单的问答提升至模拟专业团队协作的层次,为复杂技术问题提供更全面、更专业的解决方案。无论是架构设计、代码开发还是系统部署,都能获得专业团队的协作解决方案。

💡 多专家协作系统原理详解

1. 协作模式的核心原理

传统的AI对话模式下,单一模型扮演单一角色,这在解决跨领域复杂问题时存在局限性,例如需要同时具备架构设计、代码实现、部署运维等专业知识。

DeepSeek多专家协作模式采用了不同的方式:

  1. 用户提出复杂问题
  2. 系统自动分析问题,选择合适的专家团队
  3. 核心步骤:多位专家按照"思考→讨论→总结"结构化流程协作
  4. 各专家从自己擅长的领域提供专业见解
  5. 最终形成综合全面的解决方案

这种方式模拟了真实世界中技术团队的协作模式,让AI回答更全面、更专业、更可靠。在实际应用中,特别适合解决架构设计、技术选型、框架搭建等复杂问题。

2. 专家Agent设计与实现

2.1 专家角色定义 - 打造AI专家知识库

AgentManagementService.java中,我们预定义了六位不同领域的专家,每位专家都有精心设计的系统提示词:

// 初始化系统架构师专家
registerAgent(ExpertAgent.builder().id("architect").name("系统架构师").domain("ARCHITECTURE").systemPrompt("你是一位资深系统架构师,专注于设计可扩展、高性能的软件系统。在分析问题时,你会从宏观视角考虑系统设计,包括技术选型、组件划分和交互方式。你的建议应该考虑系统的可扩展性、可维护性和性能。").avatar("/experts/architect.png").description("专注系统整体设计与架构规划").sortOrder(1)  // 架构师优先发言.isRequired(true).build());

我们精心设计了六位专业领域互补的专家团队:

  • 系统架构师:负责整体架构和技术选型,掌控全局
  • Java开发专家:专注后端实现和框架应用,提供代码级解决方案
  • 前端开发专家:负责用户界面和交互体验,确保前端实现质量
  • 数据库专家:处理数据模型和性能优化,解决数据层面问题
  • DevOps专家:关注部署和运维方案,保障系统稳定性
  • 安全专家:审查安全风险和保护措施,提供安全建议

每位专家都有独特的专业领域、系统提示词和优先级,确保协作过程中能发挥各自专长。这种设计让AI大模型能够从不同视角思考问题,形成多维度的解决方案。

2.2 智能专家选择服务 - 自动组建最佳专家团队

ExpertSelectionService.java中,我们实现了智能的专家选择算法:

public List<String> selectExpertsForQuestion(String question) throws IOException {// 构建专家选择的提示词String prompt = buildExpertSelectionPrompt(question, agentService.getAllAgents());// 调用DeepSeek API分析需要哪些专家String response = deepSeekClient.getResponse(DeepSeekClient02.API_KEY, prompt);// 解析响应,提取专家ID列表List<String> selectedExpertIds = parseExpertIdsFromResponse(response);// 确保始终包含必选专家addRequiredExperts(selectedExpertIds);return selectedExpertIds;
}

专家选择服务的核心流程包括:

  1. 构建专家选择提示词,包含问题描述和可选专家列表
  2. 调用DeepSeek API分析问题需要哪些专家
  3. 解析返回结果,提取专家ID
  4. 确保架构师等核心专家始终包含在选择中

这一设计确保了专家组合的专业性和针对性,同时也避免了不必要的专家参与,提高协作效率和回答质量。例如,对于前端问题,系统会优先选择前端专家、架构师和UI专家;而对于数据库问题,则会选择数据库专家、架构师和后端专家。

3. 协作会话管理实现

3.1 结构化的三阶段协作流程

CollaborationService.java中,我们设计了完整的三阶段协作流程:

public void startCollaboration(String sessionId, SseEmitter emitter) {try {// 1. 思考阶段:各专家独立思考startThinkingPhase(session, emitter);// 2. 讨论阶段:专家间互相讨论startDiscussingPhase(session, emitter);// 3. 结论阶段:形成最终解决方案startConcludingPhase(session, emitter);// 标记会话完成session.setStatus(SessionStatus.COMPLETED);updateSessionStatus(session, emitter);} catch (Exception e) {handleSessionError(sessionId, emitter, e);} finally {emitter.complete();}
}

这种三阶段协作流程(思考→讨论→结论)模拟了真实团队的工作方式,各专家先独立思考,再进行讨论,最后形成共识。这种结构化的流程确保了问题分析的全面性和解决方案的系统性。

3.2 专家消息处理与上下文管理

为让专家协作更自然,我们需要动态生成提示词,融合问题上下文和专家特性:

private String buildAgentPrompt(ExpertAgent agent, String question, String role, List<AgentMessage> previousMessages) {StringBuilder prompt = new StringBuilder();prompt.append(agent.getSystemPrompt()).append("\n\n现在你需要扮演").append(agent.getName()).append("角色,参与一个技术团队的协作讨论。").append("\n\n用户问题:").append(question);// 添加前面专家的发言内容if (!previousMessages.isEmpty()) {prompt.append("\n\n已有的讨论内容:\n");for (AgentMessage message : previousMessages) {prompt.append(message.getAgentName()).append("(").append(message.getAgentId()).append(")").append(":\n").append(message.getContent()).append("\n\n");}}prompt.append("\n现在请你以").append(agent.getName()).append("的身份,").append(getPhaseInstruction(role)).append("记住始终保持专业,并关注你专业领域的见解。");return prompt.toString();
}

通过这种消息上下文管理,每位专家都能了解问题背景、其他专家的观点,并从自己专业角度给出见解,形成真正的协作讨论,而不是简单的独立回答拼接。

🎨 前端React实现多专家协作界面

1. 专家选择面板组件实现

ExpertsPanel.tsx中,我们设计了直观的专家选择界面:

const ExpertsPanel: React.FC<ExpertsPanelProps> = ({ experts, selectedExperts, onChange }) => {const toggleExpert = (expertId: string) => {// 检查是否是必选专家const expert = experts.find(e => e.id === expertId);if (expert?.isRequired) {// 必选专家不能取消选择return;}// 更新选中状态if (selectedExperts.includes(expertId)) {onChange(selectedExperts.filter(id => id !== expertId));} else {onChange([...selectedExperts, expertId]);}};return (<PanelContainer><PanelTitle>选择专家团队</PanelTitle><ExpertsList>{experts.map(expert => (<ExpertItemkey={expert.id}selected={selectedExperts.includes(expert.id)}required={expert.isRequired}onClick={() => toggleExpert(expert.id)}><AgentAvataragentId={expert.id}agentName={expert.name}avatarUrl={expert.avatar}size="small"/><ExpertInfo><ExpertName>{expert.name}</ExpertName><ExpertDescription>{expert.description}</ExpertDescription></ExpertInfo>{expert.isRequired && <RequiredBadge>必选</RequiredBadge>}</ExpertItem>))}</ExpertsList></PanelContainer>);
};

这个组件以直观的方式展示各专家信息,用户可以根据需要手动选择专家,系统也会自动推荐最合适的组合。通过这种设计,让用户能够直观地了解专家团队的组成,并可以根据需要进行自定义。

2. 专家消息样式与渲染实现

AgentMessageItem.tsx中,我们为不同专家的消息设计了独特的样式,通过视觉差异化增强用户体验:

const MessageContent = styled.div<{ isUser: boolean; messageTypeValue: string }>`max-width: 85%;margin-top: ${props => props.isUser ? '0' : '12px'};background-color: ${props => {if (props.isUser) return '#e6f7ff';switch (props.messageTypeValue) {case 'THINKING': return '#f6ffed';case 'RESPONSE': return '#fff7e6';case 'CONCLUSION': return '#f9f0ff';default: return '#f5f5f5';}}};padding: 12px 16px;border-radius: 12px;border: 1px solid ${props => {if (props.isUser) return '#91caff';switch (props.messageTypeValue) {case 'THINKING': return '#b7eb8f';case 'RESPONSE': return '#ffd591';case 'CONCLUSION': return '#d3adf7';default: return '#d9d9d9';}}};
`;

通过不同的颜色和样式,明确区分思考阶段、讨论阶段和结论阶段的消息,同时为每位专家提供独特的视觉标识,提升用户体验。这种设计让用户可以一目了然地识别不同专家的回答,体验专业团队协作的讨论过程。

3. 协作流程可视化与阶段指示器

为了让用户清晰了解当前协作阶段,我们实现了专门的阶段指示器组件:

// 协作阶段指示器
const CollaborationPhaseIndicator = styled.div<{ phase: string }>`display: flex;justify-content: center;margin: 16px 0;& > div {position: relative;padding: 8px 16px;border-radius: 16px;margin: 0 8px;background-color: #f5f5f5;color: #999;&.active {background-color: ${props => {switch (props.phase) {case 'thinking': return '#f6ffed';case 'discussing': return '#fff7e6';case 'concluding': return '#f9f0ff';default: return '#e6f7ff';}}};color: ${props => {switch (props.phase) {case 'thinking': return '#52c41a';case 'discussing': return '#fa8c16';case 'concluding': return '#722ed1';default: return '#1890ff';}}};font-weight: 600;}}
`;

阶段指示器直观地展示当前协作阶段,用户可以清晰了解专家团队正处于思考、讨论还是结论阶段,增强了整个协作过程的透明度和可理解性。

🎬 多专家协作系统实际效果展示

完成所有代码后,我们运行项目并实际测试了不同场景下的多专家协作。下面展示真实运行效果,直观感受多专家协作的优势:

1. 单一助手与多专家对比效果

在这里插入图片描述

图1:左侧为单一助手回答,右侧为多专家协作回答。可以明显看到多专家解决方案更全面、更专业、更有条理。

2. 多专家协作过程可视化展示

在这里插入图片描述

图2:完整的多专家协作过程,包括专家选择、思考阶段、讨论阶段和结论阶段。注意每位专家如何从自己的专业角度提供见解,最终形成全面的解决方案。

3. 最终技术解决方案呈现效果

在这里插入图片描述

图3:最终解决方案呈现,包含架构图、代码示例、部署建议等多维度内容。Markdown格式(如代码块、列表、表格等)正确渲染,方便用户理解和使用。

从这些演示中可以感受到多专家协作模式的独特优势

  • 专业分工:每位专家从自己擅长领域提供见解,确保方案专业性
  • 全面覆盖:从系统架构到代码实现、从数据库设计到安全审查,全方位解决问题
  • 思路透明:用户可以看到专家的思考过程和讨论交流,理解方案背后的考量
  • 结论清晰:最终形成结构化、全面的解决方案,易于理解和实施

⚠️ 当前局限性与未来改进计划

在当前版本中,虽然我们实现了多专家协作的核心功能,但还存在一些需要改进的地方:

1. 专家协作部分尚未实现流式输出

当前局限:与单一助手模式的流式输出不同,多专家协作部分目前仍采用传统的请求-响应模式。这意味着用户需要等待专家思考和讨论的整个过程完成后才能看到结果,对于复杂问题可能造成较长的等待时间。

未来改进方向

  • 为每位专家的思考和讨论过程实现流式输出
  • 使用token级别的流式处理,实现真正的"打字效果"
  • 优化专家间切换的过渡动画,提供更自然的协作感
  • 实现专家思考过程的可视化,例如显示思考"气泡"

2. 协作过程缺乏交互性

当前局限:用户目前只能观察专家协作过程,无法在中途干预或提供额外信息。

未来改进方向

  • 允许用户在协作过程中插入澄清问题或补充信息
  • 提供引导选项让用户影响协作方向
  • 加入投票机制让用户选择更倾向的专家观点

3. 专家能力限制

当前局限:受限于底层模型能力,各专家在专业性上仍有提升空间。

未来改进方向

  • 针对各领域训练专门的微调模型
  • 集成外部工具和知识库增强专家能力
  • 允许专家访问最新的在线资源

我们计划在下一版本中重点解决流式输出的问题,将多专家协作体验提升至与单一助手模式相同的流畅度,同时保持专业的协作优势。

🔍 核心技术挑战与解决方案

1. 专家角色定义挑战

挑战:如何设计既专业又互补的专家角色,避免能力重叠或知识盲区。

解决方案

  • 基于软件开发生命周期划分专家领域
  • 精心设计每位专家的系统提示词,强调各自专长
  • 设置架构师作为协调者和总体把控者
  • 为每位专家分配合理的发言优先级

2. 协作流程管理挑战

挑战:如何组织多位专家有序协作,避免混乱或冗余。

解决方案

  • 实现三阶段协作流程:思考→讨论→结论
  • 在思考阶段,每位专家独立分析问题
  • 在讨论阶段,专家间相互参考,互相补充
  • 在结论阶段,由架构师整合各方观点
  • 使用SSE实时推送协作过程

3. 内容呈现挑战

挑战:如何直观展示多专家的协作过程和专业贡献。

解决方案

  • 设计独特的专家头像和视觉标识
  • 使用不同颜色区分不同类型的消息
  • 添加阶段指示器可视化协作进程
  • 优化Markdown渲染确保代码块等格式正确显示

💻 DeepSeek AI多专家协作系统技术亮点

  1. 角色化的专家Agent:预设六位不同领域的专家,各自拥有专业背景和独特视角
  2. 智能专家选择算法:根据问题自动选择最合适的专家组合,提高问题解决效率
  3. 结构化协作流程:三阶段协作模式确保分析全面、讨论充分、结论清晰
  4. 实时交互体验:通过SSE技术实现协作过程实时呈现,增强用户体验
  5. 视觉化专家形象:为每位专家设计独特的头像和消息样式,提升交互体验
  6. 全面的Markdown支持:确保代码块、列表、表格等专业内容正确渲染

🔮 项目拓展方向与开发路线图

多专家协作系统虽然已经实现了核心功能,但仍有多个方向可以进一步拓展:

  1. 流式协作输出实现:将专家协作过程改为流式输出,实现与单一助手模式相同的流畅体验,这是最高优先级的改进计划
  2. 用户参与协作:允许用户在协作过程中插入问题或建议
  3. 专家团队自定义:支持用户创建和保存自己的专家团队组合
  4. 垂直领域专家:为特定技术领域(如机器学习、区块链)添加专家
  5. 多轮协作优化:支持多轮对话中的专家记忆和上下文理解
  6. 协作报告导出:将协作结果导出为PDF、Word等格式文档

我们的开发路线图首先将专注于实现专家协作的流式输出功能,提供更流畅的用户体验,并在此基础上逐步添加更多交互功能。

📥 源码下载与项目部署指南

为方便读者快速上手,完整项目源码已打包上传,包含:

  • DeepSeekExtProject(Java后端项目)

    • 完整的Spring Boot项目结构
    • 专家角色定义和管理
    • 协作流程控制逻辑
  • DeepSeekExtWeb(React前端项目)

    • 完整的React+TypeScript项目结构
    • 专家选择与协作界面
    • 消息流渲染组件

源码下载地址:DeepSeek AI多专家协作系统完整源码

快速部署指南:

  1. 下载并解压源码包
  2. 按照README中的步骤分别启动前后端项目
  3. 修改后端DeepSeekClient02.java中的API_KEY为您自己的密钥

环境要求:使用前请确保已安装Java 8+、Maven、Node.js 14+环境。

📝 写在最后

🎉 通过本文的指导,你已经了解了如何构建AI多专家协作系统,实现比单一助手更专业、更全面的问题解决能力。期待大家基于这个项目进行更多创新,打造更强大的AI协作平台!

如果你在项目实现过程中遇到任何问题,欢迎在评论区留言或私信交流。我会持续优化这个项目,并分享更多AI应用开发的实战经验。

📚 推荐几篇相关技术文章

  • DeepSeek详解:探索下一代语言模型
  • Spring Boot整合SSE实现流式响应最佳实践
  • 算法模型从入门到起飞系列——递归(探索自我重复的奇妙之旅)

📚博主匠心之作,强推专栏

  • JAVA集合专栏 【夜话集】
  • JVM知识专栏
  • 数据库sql理论与实战【博主踩坑之道】
  • 小游戏开发【博主强推 匠心之作 拿来即用无门槛】

如果觉得有帮助的话,别忘了点个赞 👍 收藏 ⭐ 关注 🔖 哦!


🎯 我是果冻~,一个热爱技术、乐于分享的开发者
📚 更多精彩内容,请关注我的博客
🌟 我们下期再见!

相关文章:

【实战教程】从零实现DeepSeek AI多专家协作系统 - Spring Boot+React打造AI专家团队协作平台

&#x1f680; 本项目是DeepSeek大模型应用系列的V3版本&#xff0c;基于V1和V2版本的功能进行全面升级&#xff0c;引入了多智能体协作机制&#xff01; 系列教程推荐阅读顺序&#xff1a; 【V1版本】零基础搭建DeepSeek大模型聊天系统 - Spring BootReact完整开发指南【V2版本…...

React事件机制

React事件机制 React 的事件机制是其实现高效、跨浏览器交互的核心系统&#xff0c;它通过 合成事件&#xff08;SyntheticEvent&#xff09;、事件委托&#xff08;Event Delegation&#xff09;、事件冒泡&#xff08;Bubbling&#xff09; 和 事件派发&#xff08;Dispatch…...

LeetCode 45. 跳跃游戏 II(中等)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…...

LeetCode 热题 100 437. 路径总和 III

LeetCode 热题 100 | 437. 路径总和 III 大家好&#xff0c;今天我们来解决一道经典的二叉树问题——路径总和 III。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求计算二叉树中节点值之和等于给定目标值 targetSum 的路径数目。 问题描述 给定一个二叉树的根节点 ro…...

力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙​编辑力扣300.最长递增子序列

目录 力扣.1471数组的k个最强值 力扣1576.替换所有的问号 力扣1419.数青蛙​编辑 力扣300.最长递增子序列 力扣.1471数组的k个最强值 class Solution {public static int[] getStrongest(int[] arr,int k) {if(karr.length){return arr;}int []retnew int[k];int narr.lengt…...

使用itextsharp5.0版本来合并多个pdf文件并保留书签目录结构

using System; using System.Collections.Generic; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf;public class PdfMergeUtility {/// <summary>/// 合并多个PDF文件并保留书签目录结构/// </summary>/// <param name"inputFiles&q…...

2025-5-15Vue3快速上手

1、setup和选项式API之间的关系 (1)vue2中的data,methods可以与vue3的setup共存 &#xff08;2&#xff09;vue2中的data可以用this读取setup中的数据&#xff0c;但是反过来不行&#xff0c;因为setup中的this是undefined &#xff08;3&#xff09;不建议vue2和vue3的语法混用…...

Kafka消费者分组机制深度解析

一、集群协调者 1.1 GroupCoordinator的元数据管理 每个Broker内置的GroupCoordinator实例通过哈希算法确定消费者组的归属权。其内存模型维护三个核心数据结构&#xff1a; 成员注册表&#xff1a;采用跳表结构存储消费者ID与心跳时间戳&#xff0c;支持快速查询和过期检测…...

Python 类变量与实例变量完全指南:区别、使用场景及常见陷阱

类变量与实例变量的区别总结 代码示例 class Example:class_var "我是类变量&#xff0c;所有实例共享我" # 类变量def __init__(self, name):self.name name # 实例变量&#xff0c;每个实例独有def modify_class_var(self, new_value):Example.class_var ne…...

Ubuntu Linux bash的相关默认配置文件内容 .profile .bashrc, /etc/profile, /etc/bash.bashrc等

文章目录 文件的source顺序/etc/profile&#xff1a;系统级配置/etc/bash.bashrc&#xff1a;bash终端的系统级配置~/.profile&#xff1a;用户级配置~/.bashrc bash&#xff1a;终端的主要配置~/.bash_logout&#xff1a;bash终端登出时清理 建议的额外配置&#xff1a; 安装 …...

redis解决常见的秒杀问题

title: redis解决常见的秒杀问题 date: 2025-03-07 14:24:13 tags: redis categories: redis的应用 秒杀问题 每个店铺都可以发布优惠券&#xff0c;保存到 tb_voucher 表中&#xff1b;当用户抢购时&#xff0c;生成订单并保存到 tb_voucher_order 表中。 订单表如果使用数据…...

Springboot3自定义starter笔记

场景&#xff1a;抽取聊天机器人场景&#xff0c;它可以打招呼。 效果&#xff1a;任何项目导入此 starter 都具有打招呼功能&#xff0c;并且问候语中的人名需要可以在配置文件中修改。 创建自定义 starter 项目&#xff0c;引入 spring-boot-starter 基础依赖。 <dependen…...

Modern C++(一)基本概念

1、基本概念 1.1、注释 注释在翻译阶段3会被替换为单个空白字符从程序中移除 1.2、名字与标识符 标识符是一个由数字、下划线、大小写字符组成的任意长度序列。有效的标识符首个字符必须是以A-Z、a-z、下划线开头&#xff0c;。有效的标识符其他字符可以是0-9、A-Z、a-z、下…...

Apache HttpClient 5 用法-Java调用http服务

Apache HttpClient 5 核心用法详解 Apache HttpClient 5 是 Apache 基金会推出的新一代 HTTP 客户端库&#xff0c;相比 4.x 版本在性能、模块化和易用性上有显著提升。以下是其核心用法及最佳实践&#xff1a; 一、添加依赖 Maven 项目&#xff1a; <dependency><…...

Python中plotext 库详细使用(命令行界面中直接绘制各种图形)

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 plotext概述1.1 plotext介绍1.2 安装二、基本用法2.1 简单绘图2.2 散点图2.3 折线图2.4 条形图2.5 直方图2.6 标题和坐标轴标签2.7 网格和坐标轴2.8 颜色和样式2.9 多图叠加三、高级功能3.1 多图绘制3.2 对数坐标3.3…...

【Java Web】速通JSON

参考笔记&#xff1a;JavaWeb 速通JSON_java webapi调用传json与head-CSDN博客 目录 1.JSON基本介绍 2.JSON串的格式 3.JSON在客户端/浏览器的使用 3.1 JavaScript对象和JSON串的相互转换 3.2 案例演示 4.JSON在服务端的使用 4.1 基本说明 4.2 应用场景 4.2.1 JSON字…...

Ubuntu 20.04 LTS 中部署 网页 + Node.js 应用 + Nginx 跨域配置 的详细步骤

Ubuntu 20.04 LTS 中部署 网页 Node.js 应用 Nginx 跨域配置 的详细步骤 一、准备工作1、连接服务器2、更新系统 二、安装 Node.js 环境1、安装 Node.js 官方 PPA&#xff08;用于获取最新稳定版&#xff09;&#xff1a;2、安装 Node.js 和 npm&#xff08;LTS 长期支持版本…...

java中XML的使用

文章目录 什么是XML特点XML作用XML的编写语法基本语法特殊字符编写 约束XML的书写格式DTD文档schema文档属性命名空间XML命名空间的作用 解析XML的方法​​DOM解析XMLDOM介绍DOM解析包&#xff1a;org.w3c.dom常用接口DOM解析包的使用保存XML文件添加DOM节点修改/删除DOM节点 S…...

Spark SQL 之 Analyzer

Spark SQL 之 Analyzer // Special case for Project as it supports lateral column alias.case p: Project =>val resolvedNoOuter = p.projectList.map(resolveExpressionByPlanChildren(_, p...

Java - Junit框架

单元测试&#xff1a;针对最小的功能单元(方法)&#xff0c;编写测试代码对该功能进行正确性测试。 Junit&#xff1a;Java语言实现的单元测试框架&#xff0c;很多开发工具已经集成了Junit框架&#xff0c;如IDEA。 优点 编写的测试代码很灵活&#xff0c;可以指某个测试方法…...

麒麟系统ARM64架构部署mysql、jdk和java项目

麒麟系统ARM64架构部署mysql、jdk和java项目 一、mysql8的安装 操作步骤&#xff1a; 先下载mysql安装包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 由于官网里&#xff0c;mysql5.7以及更低版本不支持arm版本的&#xff0c;只能安装mysql8。…...

修复“ImportError: DLL load failed while importing lib: 找不到指定的程序”笔记

#工作记录 一、问题描述 在运行CosyVoice_For_Windows项目时&#xff0c;出现以下报错&#xff1a; Traceback (most recent call last): File "D:\ProgramData\anaconda3\envs\CosyVoice\Lib\pydoc.py", line 457, in safeimport module __import__(path) …...

vllm量化03—INT4 W4A16

本系列基于Qwen2.5-7B&#xff0c;学习如何使用vllm量化&#xff0c;并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为&#xff1a; OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第3篇——INT4 W4A16 一、量化 f…...

VScode各文件转化为PDF的方法

文章目录 代码.py文件.ipynb文本和代码夹杂的文件方法 1:使用 VS Code 插件(推荐)步骤 1:安装必要插件步骤 2:安装 `nbconvert`步骤 3:间接导出(HTML → PDF)本文遇见了系列错误:解决方案:问题原因步骤 1:降级 Jinja2 至兼容版本步骤 2:确保 nbconvert 版本兼容替代…...

AI日报 · 2025年5月15日|GPT-4.1 登陆 ChatGPT

AI日报 2025年5月15日&#xff5c;GPT-4.1 登陆 ChatGPT 1、OpenAI 在 ChatGPT 全面开放 GPT-4.1 与 GPT-4.1 mini 北京时间 5 月 14 日晚&#xff0c;OpenAI 在官方 Release Notes 中宣布&#xff1a;专为复杂代码与精细指令场景打造的 GPT-4.1 正式加入 ChatGPT&#xff0…...

高效管理多后端服务:Nginx 配置与实践指南

在现代的 Web 开发和运维中&#xff0c;一个系统往往由多个后端服务组成&#xff0c;每个服务负责不同的功能模块。例如&#xff0c;一个电商网站可能包括用户服务、订单服务和支付服务&#xff0c;每个服务都运行在独立的服务器或容器中。为了高效地管理这些服务并提供统一的访…...

从代码学习深度学习 - 实战 Kaggle 比赛:图像分类 (CIFAR-10 PyTorch版)

文章目录 前言1. 读取并整理数据集1.1 读取标签文件1.2 划分训练集和验证集1.3 整理测试集1.4 执行数据整理2. 图像增广2.1 训练集图像变换2.2 测试集(和验证集)图像变换3. 读取数据集3.1 创建 Dataset 对象3.2 创建 DataLoader 对象4. 定义模型4.1 获取 ResNet-18 模型4.2 损…...

什么是路由器环回接口?

路由器环回接口&#xff08;LoopbackInterface&#xff09;是网络设备中的一种逻辑虚拟接口&#xff0c;不依赖物理硬件&#xff0c;但在网络配置和管理中具有重要作用。以下是其核心要点&#xff1a; 一、基本特性 1.虚拟性与稳定性 环回接口是纯软件实现的逻辑接口&#x…...

【高频面试题】LRU缓存

文章目录 1 相关前置知识&#xff08;OS&#xff09;2 面试题 16.25. LRU 缓存2.1 题面2.2 示例2.3 解法1 &#xff08;双端队列哈希表&#xff09;思路 2.4 解法2思路 3 参考 1 相关前置知识&#xff08;OS&#xff09; 为什么需要页面置换算法&#xff1a;当进程运行时&…...

Golang

本文来源 &#xff1a;腾讯元宝 Go语言&#xff08;又称Golang&#xff09;是由Google开发的一种现代编程语言&#xff0c;自2009年发布以来&#xff0c;因其简洁性、高性能和内置并发支持而广受欢迎。以下是关于Go语言的核心特点和优势的总结&#xff1a; 1. ​​核心特点​​…...

20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤

20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤 2025/5/15 19:55 百度&#xff1a;intel 集成显卡 NVIDIA 配置成为 总是用独立显卡 百度为您找到以下结果 ?要将Intel集成显卡和NVIDIA独立显卡配置为总是使用独立显卡&#xff0c;可以通过以下步骤实现?&#xff…...

『已解决』Python virtualenv_ error_ unrecognized arguments_--wheel-bundle

&#x1f4e3;读完这篇文章里你能收获到 &#x1f40d; 了解 virtualenv 参数错误的原因及解决方案&#x1f4e6; 学习如何正确配置 Python 虚拟环境 文章目录 前言一、问题描述1.1 错误现象1.2 影响范围 二、问题分析2.1 根本原因 三、解决方案3.1 兼容处理3.2 完整解决方案 …...

使用 Apache POI 生成 Word 文档

创建一个包含标题、段落和表格的简单文档。 步骤 1:添加依赖 确保你的项目中已经添加了 Apache POI 的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下内容: <dependency><groupId>org.apache.poi</groupId>...

表记录的检索

1.select语句的语法格式 select 字段列表 from 表名 where 条件表达式 group by 分组字段 [having 条件表达式] order by 排序字段 [asc|desc];说明&#xff1a; from 子句用于指定检索的数据源 where子句用于指定记录的过滤条件 group by 子句用于对检索的数据进行分组 ha…...

【PX4飞控】在 Matlab Simulink 中使用 Mavlink 协议与 PX4 飞行器进行交互

这里列举一些从官网收集的比较有趣或者实用的功能。 编写 m 脚本与飞行器建立 UDP 连接&#xff0c;并实时可视化 Mavlink 消息内容&#xff0c;或者读取脚本离线分析数据。不光能显示 GPS 位置或者姿态等信息的时间曲线&#xff0c;可以利用 Matlab Plot 功能快速定制化显示一…...

文章复现|(1)整合scRNA-seq 和空间转录组学揭示了子宫内膜癌中 MDK-NCL 依赖性免疫抑制环境

https://www.frontiersin.org/journals/immunology/articles/10.3389/fimmu.2023.1145300/full 目标&#xff1a;肿瘤微环境(TME)在子宫内膜癌(EC)的进展中起着重要作用。我们旨在评估EC的TME中的细胞群体。 方法&#xff1a;我们从GEO下载了EC的单细胞RNA测序(scRNA-seq)和空…...

自用Vscode 配置c++ debug环境

前言 使用vscode配置c debug环境的好处 1、可以借助vscode方便轻量的扩展和功能 2、避免了传统使用gdb 复杂按键以及不够直观的可视化 3、方便一次运行&#xff0c;断点处查看变量&#xff0c;降低找bug难度 4、某大公司项目采用类似配置&#xff0c;经过实践检验 配置c运行环…...

STM32单片机内存分配详细讲解

单片机的内存无非就两种&#xff0c;内部FLASH和SRAM&#xff0c;最多再加上一个外部的FLASH拓展。在这里我以STM32F103C8T6为例子讲解FLASH和SRAM。 STM32F103C8T6具有64KB的闪存和20KB的SRAM。 一. Flash 1.1 定义 非易失性存储器&#xff0c;即使在断电后&#xff0c;其所…...

从算力困境到创新突破:GPUGEEK如何重塑我的AI开发之旅

目录 从算力困境到创新突破&#xff1a;GPUGEEK如何重塑我的AI开发之旅开发者的算力挣扎&#xff1a;一个不得不面对的现实AI算力市场的尴尬现状&#xff1a;为什么我们需要另辟蹊径1. 资源分配失衡与价格壁垒2. 技术门槛与环境复杂性 GPUGEEK深度剖析&#xff1a;不只是又一个…...

基于OpenCV的人脸微笑检测实现

文章目录 引言一、技术原理二、代码实现2.1 关键代码解析2.1.1 模型加载2.1.2 图像翻转2.1.3 人脸检测 微笑检测 2.2 显示效果 三、参数调优建议四、总结 引言 在计算机视觉领域&#xff0c;人脸检测和表情识别一直是热门的研究方向。今天我将分享一个使用Python和OpenCV实现…...

2025认证杯数学建模第二阶段A题小行星轨迹预测思路+模型+代码

2025认证杯数学建模第二阶段思路模型代码&#xff0c;详细内容见文末名片 一、问题重述 1.1 问题背景 在浩瀚无垠的宇宙中&#xff0c;近地小行星&#xff08;NEAs&#xff09;宛如一颗颗神秘的“太空子弹”&#xff0c;其轨道相对接近地球&#xff0c;给我们的蓝色星球带来…...

Uniapp 安卓实现讯飞语音听写(复制即用)

在移动应用开发中&#xff0c;语音交互功能能够极大提升用户体验&#xff0c;让操作更加便捷自然。讯飞语音听写技术凭借其高准确率和稳定性&#xff0c;成为众多开发者的选择。本文将详细介绍如何在 Uniapp 项目中&#xff0c;实现安卓端的讯飞语音听写功能&#xff0c;帮助你…...

【FileZilla】 从事件类型到消息类型的函数形参类型转化

本篇其实是前篇【Filezilla】 dispatch函数重载的例子-CSDN博客的一个补充&#xff0c;其中涉及到【FileZilla】事件调用机制代码解析-CSDN博客中的事件分发机制时钩子函数的参数传递怎么实现的。跟【FileZilla】sftp协议的数据传输上传和下载-CSDN博客同样&#xff0c;用事件是…...

python打卡day26

函数、参数、变量 知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 def function_name(parameter…...

RPC框架源码分析学习(二)

RPC框架源码分析与原理解读 前言 在分布式系统开发中&#xff0c;远程过程调用(RPC)是一项基础且关键的技术。通过对KVstorageBaseRaft-cpp项目RPC模块的源码分析&#xff0c;我深入理解了RPC框架的工作原理和实现细节。本文将从程序员视角分享我的学习心得。 框架概述 本项…...

算法分析:蛮力法

一、实验目的 1 掌握蛮力法的设计思想(利用计算机去穷举所有的可能解,再从中依次找出可行解) 2 掌握蛮力法的具体实现和时间复杂度分析 3 理解蛮力法的常见特性 实验要求&#xff1a;先用伪代码描述利用蛮力法解决的算法解决方案&#xff0c;再用程序实现&#xff0c;计算时间…...

构建RAG混合开发---PythonAI+JavaEE+Vue.js前端的实践

写在前文&#xff1a;之所以设计这一套流程&#xff0c;是因为 Python在前沿的科技前沿的生态要比Java好&#xff0c;而Java在企业级应用层开发比较活跃&#xff1b; 毕竟许多企业的后端服务、应用程序均采用Java开发&#xff0c;涵盖权限管理、后台应用、缓存机制、中间件集成…...

游戏引擎学习第280天:精简化的流式实体sim

回顾并为今天的内容做铺垫 今天的任务是让之前关于实体存储方式的改动真正运行起来。我们现在希望让实体系统变得更加真实和实用&#xff0c;能够支撑我们游戏实际所需的功能。这就要求我们对它进行更合理的实现和调试。 昨天我们基本让代码编译通过了&#xff0c;但实际上还…...

小程序映射逻辑处理

onLoad: function (options) { // 如果直接从options获取数据 this.setData({ jielunpin:发羽音, birthStr: 1944-01-01 }); // 处理诊断结论 this.processJielunpin(); // 添加一个处理诊断结论的函数 processJielunpin: function() { // 获取jielunpin和birthSt…...

亚马逊,temu测评采购低成本养号策略:如何用一台设备安全批量管理买家账号

只要能够巧妙规避平台的检测和风控措施&#xff0c;测评便可安全进行。 自养号测评&#xff0c;它更便于卖家掌控&#xff0c;且能降低风险。现在很多卖家都是自己养号&#xff0c;自己养号都是精养&#xff0c;不是自动的机刷&#xff0c;买家账号掌握在自己手里&#xff0c;更…...