LangChain4J-XiaozhiAI 项目分析报告
LangChain4J-XiaozhiAI 项目分析报告
GitHub 链接
1. 项目概述
本项目名为 “硅谷小智(医疗版)”,是一个基于 Java 技术栈和 LangChain4J 框架构建的 AI 聊天助手应用。其核心目标是利用大型语言模型(LLM)的能力,结合本地知识库和外部工具,提供一个专注于医疗领域的智能问答和辅助服务。项目采用了前后端分离的架构,后端使用 Spring Boot 框架,深度集成了 LangChain4J 库来实现与大模型的交互、记忆管理、工具调用(函数调用)以及检索增强生成(RAG)等功能。前端则采用 Vue.js 构建用户交互界面。
根据项目提供的 尚硅谷-Java+大模型-硅谷小智(医疗版).md
文档,该项目似乎是一个教学或演示项目,旨在展示如何使用 LangChain4J 将大模型能力集成到 Java 应用中,特别是针对医疗场景。项目配置使用了阿里云的百炼平台(DashScope)提供的通义千问(Qwen)系列模型,同时也展示了如何接入其他模型(如 DeepSeek)以及本地部署模型(通过 Ollama)。
2. 技术栈
后端:
- 核心框架: Spring Boot 3.2.6
- AI 框架: LangChain4J 1.0.0-beta3
- 语言: Java 17
- 构建工具: Maven
- 数据库:
- MySQL (使用 Mybatis-Plus 操作,存储如预约信息等业务数据)
- MongoDB (存储聊天记忆)
- 大模型平台: 阿里云百炼 (DashScope),支持 Qwen 系列模型,配置中也提到了 OpenAI 兼容接口(可用于 DeepSeek 等)
- API 文档: Knife4j
- 其他: Spring WebFlux (用于流式响应), Reactor
前端:
- 框架: Vue.js (具体版本需查看
package.json
) - 构建工具: Vite
- UI 组件库: (可能使用,需查看
package.json
和代码)
3. 项目结构分析
项目主要包含以下几个模块:
LangChain4j-ai-demo3
: 后端 Spring Boot + LangChain4J 核心模块。xiaozhi-ui
: 前端 Vue.js 应用模块。knowledge
: 存放用于 RAG 的本地知识库文件(包含 .md, .pdf, .txt 格式)。images
: 存放项目相关的图片资源,包括文档中的截图。尚硅谷-Java+大模型-硅谷小智(医疗版).md
: 项目的说明和教程文档。
3.1 后端 (LangChain4j-ai-demo3
) 结构
后端遵循典型的 Spring Boot 项目结构:
src/main/java/org/example
: Java 源代码根目录。XiaozhiApp.java
: Spring Boot 应用启动类。assistant
: 包含 LangChain4J 的 AI 服务接口和可能的实现类。XiaozhiAgent.java
: 核心 AI 服务接口,使用@AiService
注解配置模型、记忆、工具和 RAG。
bean
: 数据传输对象 (DTO),如ChatForm
,ChatMessages
。config
: Spring 配置类,用于配置 LangChain4J 组件,如 EmbeddingStore, ChatMemoryProvider 等。controller
: Spring MVC 控制器,处理 HTTP 请求。XiaozhiController.java
: 提供/xiaozhi/chat
API 端点,接收用户消息并调用XiaozhiAgent
。
entity
: JPA/Mybatis-Plus 实体类,映射数据库表,如Appointment
。mapper
: Mybatis-Plus Mapper 接口,定义数据库操作,如AppointmentMapper
。service
: 业务逻辑服务层接口和实现。AppointmentService.java
/impl
: 处理预约相关的业务逻辑。
store
: 数据存储相关实现。MongoChatMemoryStore.java
: 使用 MongoDB 实现 LangChain4J 的ChatMemoryStore
。
tools
: LangChain4J 工具类,用于函数调用。AppointmentTools.java
: 提供预约相关的工具方法供 LLM 调用。CalculatorTools.java
: 提供计算器工具方法供 LLM 调用。
src/main/resources
: 资源文件目录。application.properties
: Spring Boot 配置文件,包含服务器端口、数据库连接信息、LangChain4J 模型 API Key 和模型名称等配置。mapper
: Mybatis-Plus XML 映射文件,如AppointmentMapper.xml
。*.txt
: LangChain4J 使用的提示模板文件,如xiaozhi-prompt-template.txt
。knowledge
: (推测可能用于存放处理后的知识文件,但实际知识库在项目根目录的knowledge
文件夹下)
src/test/java
: 单元测试和集成测试代码。pom.xml
: Maven 项目配置文件,定义项目依赖和构建配置。
3.2 前端 (xiaozhi-ui
) 结构
前端是一个基于 Vite 构建的 Vue.js 项目:
public
: 静态资源目录。src
: 前端源代码目录。main.js
: Vue 应用入口文件。App.vue
: 根组件。components
: 可复用的 Vue 组件。ChatWindow.vue
: 核心的聊天窗口界面组件。
assets
: 存放图片、样式等资源。
index.html
: HTML 入口文件。package.json
: Node.js 项目配置文件,定义前端依赖和脚本。vite.config.js
: Vite 配置文件。README.md
: 前端模块的说明文件。
4. 核心功能分析
4.1 AI 交互核心 (XiaozhiAgent
)
项目的 AI 交互核心是 XiaozhiAgent
接口,通过 LangChain4J 的 @AiService
注解进行配置。这个注解极大地简化了与 LLM 的集成:
@AiService(wiringMode = AiServiceWiringMode.EXPLICIT, // 显式指定要使用的 Bean// chatModel = "qwenChatModel", // 非流式模型(注释掉了)// 用于流式输出的模型streamingChatModel = "qwenStreamingChatModel", // 聊天记忆提供者chatMemoryProvider = "chatMemoryProviderXiaozhi", // 工具(函数调用)tools = "appointmentTools", // 内容检索器(RAG),这里配置了 Pinecone,但代码中也有注释掉的本地实现contentRetriever = "contentRetrieverXiaozhiPincone"
)
public interface XiaozhiAgent {// 流式输出方法@SystemMessage(fromResource = "xiaozhi-prompt-template.txt") // 指定系统提示模板Flux<String> chat(@MemoryId Long memoryId, @UserMessage String userMessage);
}
- 模型集成: 配置了
qwenStreamingChatModel
Bean 作为流式聊天模型。该 Bean 的具体配置(如 API Key, 模型名称)在application.properties
中定义,并通过 LangChain4J 的 Spring Boot Starter 自动配置或自定义配置类注入。 - 流式输出: 接口方法返回
Flux<String>
,结合 Spring WebFlux,实现了聊天响应的流式输出,提升了用户体验。 - 聊天记忆: 通过
chatMemoryProvider = "chatMemoryProviderXiaozhi"
指定了聊天记忆的提供者 Bean。结合@MemoryId Long memoryId
参数,可以为不同的用户或会话维护独立的聊天历史。MongoChatMemoryStore
提供了基于 MongoDB 的持久化记忆存储。 - 工具调用 (Function Calling): 通过
tools = "appointmentTools"
集成了AppointmentTools
Bean 中定义的方法。这使得 LLM 能够调用 Java 方法来执行特定任务,例如查询或创建预约。 - 检索增强生成 (RAG): 通过
contentRetriever = "contentRetrieverXiaozhiPincone"
集成了内容检索器。这允许 LLM 在回答问题前,先从指定的知识库(向量数据库 Pinecone 或本地文件)中检索相关信息,并将这些信息注入到提示中,从而让 LLM 能够基于特定领域的知识进行回答。知识库的来源是项目根目录下的knowledge
文件夹中的文档。 - 系统提示: 使用
@SystemMessage(fromResource = "xiaozhi-prompt-template.txt")
从外部文件加载系统提示,用于设定 AI 的角色、行为和指令。
4.2 API 端点 (XiaozhiController
)
XiaozhiController
提供了一个简单的 RESTful API 端点 /xiaozhi/chat
(POST),用于接收前端发送的聊天请求。请求体是一个 ChatForm
对象,包含 memoryId
和用户消息 message
。控制器直接调用 XiaozhiAgent
的 chat
方法,并将返回的 Flux<String>
作为流式响应返回给前端。
4.3 知识库与 RAG 实现
项目包含一个 knowledge
目录,存放了 .md
, .pdf
, .txt
等格式的医疗相关文档(如医院信息、科室信息等)。这些文档是 RAG 的基础。
LangChain4J 提供了文档加载、切分、向量化和存储的工具。虽然具体的 RAG 配置代码(如 EmbeddingStoreConfig.java
和文档处理流程)没有在当前分析中完全展示,但从 XiaozhiAgent
的配置可以看出,项目旨在利用这些知识文件:
- 文档加载与切分: 使用 LangChain4J 的
DocumentLoader
加载knowledge
目录下的文件,并使用DocumentSplitter
将长文档切分成小块。 - 向量化: 使用配置的 Embedding Model(
application.properties
中配置了阿里百炼的text-embedding-v3
)将文本块转换为向量。 - 向量存储: 将文本块及其向量存储到向量数据库中。
XiaozhiAgent
配置指向了contentRetrieverXiaozhiPincone
,表明可能使用了 Pinecone 云向量数据库。但也可能存在本地存储的配置(如EmbeddingStoreConfig
中可能配置了内存或文件系统的向量存储)。 - 检索: 当用户提问时,先将问题向量化,然后在向量数据库中查找最相似的文本块。
- 增强: 将检索到的文本块内容整合到发送给 LLM 的提示中。
- 生成: LLM 基于原始问题和检索到的上下文信息生成回答。
4.4 函数调用实现 (AppointmentTools
)
AppointmentTools
类包含了带有 @Tool
注解的方法,这些方法可以被 LLM 调用。
// 示例(基于 LangChain4J 常见用法推测)
public class AppointmentTools {@Autowiredprivate AppointmentService appointmentService;@Tool("查询指定日期和科室的可用预约时段")public List<String> findAvailableSlots(String date, String department) {// 调用 AppointmentService 查询数据库return appointmentService.getAvailableSlots(date, department);}@Tool("为用户创建预约")public String createAppointment(String patientName, String date, String time, String department) {// 调用 AppointmentService 创建预约return appointmentService.createAppointment(patientName, date, time, department);}
}
当用户的提问涉及到查询或创建预约时,LLM 可以识别出意图,并决定调用这些工具方法。LangChain4J 负责处理 LLM 的函数调用请求,执行相应的 Java 方法,并将结果返回给 LLM,LLM 再根据结果生成最终的自然语言回复。
4.5 前端交互 (ChatWindow.vue
)
前端的核心是 ChatWindow.vue
组件,它负责:
- 展示聊天界面: 显示用户消息和 AI 回复。
- 接收用户输入: 提供输入框供用户输入问题。
- 调用后端 API: 当用户发送消息时,向后端的
/xiaozhi/chat
发送 POST 请求,包含用户消息和会话 ID (memoryId
)。 - 处理流式响应: 接收并逐步显示后端返回的流式数据。
- 管理会话: 可能生成或管理
memoryId
以维持多轮对话的上下文。
5. 配置与依赖
5.1 关键配置 (application.properties
)
server.port
: 后端服务端口 (8080)。langchain4j.community.dashscope.*
: 配置阿里百炼平台的 API Key 和模型名称 (qwen-max, qwen-plus, text-embedding-v3)。API Key 通过环境变量${LANGCHAIN4J_KEY}
获取。spring.data.mongodb.uri
: MongoDB 连接字符串,用于存储聊天记忆。spring.datasource.*
: MySQL 数据库连接信息,用于存储业务数据(如预约)。mybatis-plus.configuration.log-impl
: 开启 Mybatis-Plus 的 SQL 日志打印。logging.level.root
: 全局日志级别。
5.2 主要依赖 (pom.xml
)
spring-boot-starter-web
: Spring Boot Web 核心。spring-boot-starter-test
: 测试框架。knife4j-openapi3-jakarta-spring-boot-starter
: API 文档工具。langchain4j-open-ai-spring-boot-starter
: LangChain4J OpenAI 兼容接口的 Spring Boot Starter。langchain4j-community-dashscope-spring-boot-starter
: LangChain4J 阿里百炼 (DashScope) 的 Spring Boot Starter。langchain4j-spring-boot-starter
: LangChain4J 核心功能的 Spring Boot Starter (提供 @AiService 等)。spring-boot-starter-data-mongodb
: Spring Data MongoDB 支持。mysql-connector-j
: MySQL JDBC 驱动。mybatis-plus-spring-boot3-starter
: Mybatis-Plus 集成。langchain4j-document-parser-apache-pdfbox
: LangChain4J PDF 文档解析器。langchain4j-easy-rag
: (可能用于简化 RAG 配置,但核心 RAG 依赖于 core 和 embedding store)langchain4j-pinecone
: LangChain4J Pinecone 向量数据库集成。spring-boot-starter-webflux
,langchain4j-reactor
: 支持响应式编程和流式输出。
6. 总结
LangChain4J-XiaozhiAI 是一个功能相对完善的 AI 助手演示项目,有效地展示了如何利用 LangChain4J 框架在 Java (Spring Boot) 环境下构建集成 LLM 的应用。它涵盖了 LangChain4J 的多项核心功能,包括:
- 多模型支持: 通过配置文件灵活接入不同的 LLM(阿里百炼 Qwen, DeepSeek 等)。
- AI 服务抽象: 使用
@AiService
简化了与 LLM 的交互逻辑。 - 流式输出: 提供了流畅的实时聊天体验。
- 持久化聊天记忆: 利用 MongoDB 存储对话历史,实现上下文感知。
- 工具调用: 使 LLM 能够与外部系统(通过 Java 代码)交互,执行查询、创建预约等操作。
- 检索增强生成 (RAG): 通过集成向量数据库和本地知识文件,使 LLM 能够基于特定领域的知识回答问题。
GitHub 链接
该项目为学习和实践如何在 Java 生态中应用大模型技术提供了一个很好的起点和参考案例,特别是在医疗等需要结合特定知识和工具的领域。
相关文章:
LangChain4J-XiaozhiAI 项目分析报告
LangChain4J-XiaozhiAI 项目分析报告 GitHub 链接 1. 项目概述 本项目名为 “硅谷小智(医疗版)”,是一个基于 Java 技术栈和 LangChain4J 框架构建的 AI 聊天助手应用。其核心目标是利用大型语言模型(LLM)的能力&am…...
学习spring boot-拦截器Interceptor,过滤器Filter
目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考: 过滤器在springboot项目的应用 一,使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二,创建…...
【程序+论文】大规模新能源并网下的火电机组深度调峰经济调度
目录 1 主要内容 讲解重点 2 讲解视频及代码 1 主要内容 该视频为《大规模新能源并网下的火电机组深度调峰经济调度》代码讲解内容,该程序有完全对照的论文,以改进IEEE30节点作为研究对象,系统包括5个火电机组和2个新能源机组,…...
【win11 】win11 键盘测试
我的键盘是支持mac和win的,fn tab 就能切换,有可能是用错了模式,导致 我alt a 就会弹出 win11的 wifi 等菜单控制 键盘测试网站 https://keyboard.bmcx.com/ 识别到我按下的是alt...
再识动静态库
动静态库 1 手动制作静态库2 手动调用静态库方式一:(安装到系统)方式二:(和源文件一起)方式三:(使用带路径的库) 3 动态库制作与使用方式一:拷贝到系统方式二…...
前端 uni-app 初步使用指南
在数字化浪潮下,实现应用多端适配成为开发者的刚需。uni-app 凭借 “一次编写,多端运行” 的特性,极大提升了开发效率,成为前端开发的热门选择。如果你是首次接触 uni-app,这篇文章将带你开启 uni-app 的使用之旅&…...
尼卡音乐 1.1.1 | 免费畅听全网音乐,支持无损下载,无广告无需注册登录
尼卡音乐是一款可以免费畅听全网音乐的应用程序,支持免费下载无损高品质音源,并且没有任何广告,无需注册登录。用户可以轻松搜索全网无损音质音源,并可将其他音乐APP的歌单导入,让音乐陪你开心一整天。该应用彻底拒绝臃…...
33.降速提高EMC能力
降速提高EMC能力 1. 电磁兼容问题的错误累积效应2. 降速减少累积效应的机理分析 1. 电磁兼容问题的错误累积效应 2. 降速减少累积效应的机理分析 降速之后,信号的波形更完整,容错空间更大;另外边沿变缓,对外干扰也会减小。...
【赵渝强老师】TiDB的MVCC机制
TiDB是一款开源的国产分布式关系型数据库。TiKV是TiDB的行存引擎,它支持多版本并发控制(Multi-Version Concurrency Control,MVCC)。假设有这样一种场景:某客户端A在写一个Key,另一个客户端B同时在对这个Key进行读操作。如果没有数据的多版本…...
数电填空题整理(适用期末考试)
在下列门电路中,OC门能实现“线与”逻辑功能; 三态门能用于总线结构的数 据传输;传输门 能实现模拟信号的双向传输。 并联比较型A/D转换器的转换速度最快, 双积分型A/D转换器的稳定性和抗干扰能力最好 TTL与非门多余的输入端应该…...
node核心学习
目录 1-1node概述 1-2全局对象 1-3Node的模块化细节 1-4Node中的ES模块化 1-5基本内置模块 OS模块: path模块: url模块: util模块: 1-6文件IO I/O:input output fs模块的方法 代码示例: 练习…...
基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包
在人工智能和计算机视觉领域,YOLO(You Only Look Once)是一种广泛使用的实时目标检测算法。为了直观地展示YOLO算法的检测效果,我们使用Pyqt框架进行检测结果的可视化,同时为了使其能够脱离Python环境,我们…...
234树和红黑树
首先,把目光聚集在234树中 以下是234的三种节点(可以有更多这里使用以下的三个): 右侧是节点转换成红黑树节点的样子。 接下来会用以下序列进行1234树的搭建和红黑树的搭建: 首先是234树 2-3-4树(234树&…...
GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果
摘要:作为机器学习中的一个基础任务,文本分类在许多领域都发挥着至关重要的作用。随着大型语言模型(LLMs)的快速扩展,特别是通过强化学习(RL)的推动,对于更强大的分类器的需求也在不…...
maven坐标导入jar包时剔除不需要的内容
maven坐标导入jar包时剔除不需要的内容 问题描述解决方案 问题描述 maven坐标导入jar包时剔除不需要的内容 解决方案 Spring Boot 默认使用 Logback,需在 pom.xml 中排除其依赖: <dependency><groupId>org.springframework.boot</gro…...
Oracle OCP认证考试考点详解083系列06
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 26. 第26题: 题目 解析及答案: 关于块介质恢复,以下哪三项是正确的? A) 需恢复一个或多个…...
llfc项目分布式服务笔记
一、系统整体架构流程图(简明版) 复制代码 +---------------+ +------------------+ +----------------+ | 客户端 (Client) |--------->| GateServer |----------| StatusServer |<--+ +---------------+ +--------------…...
“链式前向星”等三种存图方式分别输出“无向无权图”的“DFS序列”
【DFS序列】 DFS序列(深度优先搜索序列),是树或图结构在深度优先遍历过程中生成的节点访问顺序记录。 下面三段代码,分别采用链式前向星、邻接表、邻接矩阵存图,输出图的“DFS序列”。 【DFS:链式前向星】…...
Lesson 16 A polite request
Lesson 16 A polite request 词汇 park n. 公园,停车场,庄园 v. 停车,泊车 例句:让我来停车。 Let me park. 相关:spot n. 车位 区别:garden n. 花园 [小,私家的] 例句:我们…...
【IP101】边缘检测技术全解析:从Sobel到Canny的进阶之路
🌟 边缘检测的艺术 🎨 在图像处理的世界里,边缘检测就像是给图像画眉毛 —— 没有它,你的图像就像一只没有轮廓的熊猫🐼。让我们一起来探索这个神奇的"美妆"技术! 📚 目录 基础概念 …...
Nx 智能分发机制(Nx Agents + Nx Cloud)
Nx 智能分发机制(Nx Agents Nx Cloud) 阶段关键做的事作用1. 收集信息- Project Graph:解析整个 workspace 依赖关系(谁依赖谁)- 历史统计:每次 CI 结束后将每个任务的实际用时与缓存命中情况上传…...
《“昊龙一号”:开启中国航天货运新时代》
中国航天新力量:昊龙一号登场 在 2024 年 10 月 29 日上午,神舟十九号载人飞行任务新闻发布会如一颗重磅炸弹,在航天领域激起千层浪。发布会上,一系列关乎中国载人航天工程未来走向的重要信息被披露,其中,“昊龙一号” 货运航天飞机入围空间站低成本货物运输系统总体方案…...
C++ 多态:原理、实现与应用
目录 引言 一、多态的概念 二、多态的定义及实现 (一)构成条件 (二)虚函数的深入理解 (三)虚函数的重写(覆盖) 三、抽象类 (一)概念 (二&…...
多模态大语言模型arxiv论文略读(五十八)
How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文标题:How Does the Textual Information Affect the Retrieval of Multimodal In-Context Learning? ➡️ 论文作者:Yang Luo, Zangwei Zheng, …...
TS 枚举类型
枚举 参数为枚举成员中的一个 数字枚举 字符串枚举 枚举特点 、 缺点:转为JS代码时会编译成JS代码,增大开销...
Python容器与循环:数据处理的双剑合璧
Python作为一门简洁强大的编程语言,其容器类型和循环结构的完美结合为数据处理提供了极大的便利。本文将带领初学者深入理解Python中的四大容器(列表、元组、字典、集合)以及它们与循环结构的配合使用,助你掌握数据处理的核心技能…...
ST-LINKV2仿真器下载
ST-LINKV2仿真器 — 正点原子资料下载中心 1.0.0 文档...
RAGFlow 接入企业微信应用实现原理剖析与最佳实践
背景 近期有医美行业客户咨询我们智能客服产品,期望将自己企业的产品、服务以及报价信息以企微应用的方式给到客户进行体验互动,提升企业运营效率。关于企业微信对接,我们分享下最佳实践,抛砖引玉。效果图如下: 这里也…...
大模型实践:图文解锁Ollama在个人笔记本上部署llm
使用在线模型服务时,我们常常需要支付API调用费用,这对于个人开发者或小型组织来说可能是一笔不小的开支。那么,有没有方法可以在本地免费使用这些强大的模型呢?答案是肯定的——Ollama就是这样一个工具。 当然如果是比较大的组织…...
如何提高情商?(优化版)
引言 提高情商(EQ)是一个需要长期练习和自我反思的过程,核心在于理解自己、管理情绪、共情他人并有效沟通。以下是一些具体且可操作的方法,结合理论和实际场景,帮助你逐步提升: 一、核心方法:…...
学习黑客Linux权限
在 Linux 的王国里,“权限”就是装备与技能加成:决定谁能拔剑(读 r)、挥剑(写 w)、进入房间(执行 x)。本文用“闯关升级”视角,把常见 rwx、八进制数字、SUID/SGID/Stick…...
信息系统监理师第二版教材模拟题第二组(含解析)
信息系统监理师模拟题第二组(30题) 监理理论与法规 根据《信息系统工程监理暂行规定》,监理单位应当独立于( ) A. 建设单位和承建单位 B. 政府监管部门 C. 行业组织 D. 最终用户答案:A 解析:监理单位应当保持独立性,不得与建设单位和承建单位有隶属关系或其他利害关系…...
C与指针——输入输出
错误定位 当一个库函数出错时,errno会被重置 perror(const char* s);\\输出s: errno 对应的错误信息 \\如果单独想要错误信息可以 char* e strerror(errno);\\系统错误码转换为对应的错误信息字符串输出缓冲区 一般输出缓冲区满的时候才刷新,也就是…...
RR(Repeatable Read)级别如何防止幻读
在 MySQL 数据库事务隔离级别中,RR(可重复读) 通过 MVCC(多版本并发控制) 和 锁机制 的组合策略来避免幻读问题。 一、MVCC机制:快照读与版本控制 快照读(Snapshot Read) 每个事务启…...
Python之学习笔记(六)
文章目录 1. 字典(Dictionary)2. 集合(Set)3. 字典 vs 集合4. 应用场景5. 注意事项 Python中的字典( dict)和集合( set)是两种高效且常用的数据结构,适用于不同的场景。…...
Easy云盘总结篇-文件上传02
说在前面:此项目是跟着B站一位大佬写的,不分享源码,支持项目付费 文件预览 主要分视频和其他文件预览,但实现逻辑相同,只是请求路径有区别。 这段逻辑: 拿视频预览举例: 视频开始时ÿ…...
window-docker的容器使用宿主机音频设备
文章目录 前言操作配置 前言 你有没有遇到过这种情况? 你兴冲冲地在Windows上用Docker搭了个语音识别项目,准备让容器高歌一曲,或者至少"Hey Docker"一下。结果——静音。 Docker Desktop一脸无辜:“亲,默…...
NaVILA: Legged Robot Vision-Language-ActionModel for Navigation
摘要 本文旨在解决基于视觉与语言导航(VLN)在四足机器人上的实现问题。该任务不仅为人类提供了一种灵活的指令方式,还使机器人能够在更具挑战性和杂乱的场景中导航。然而,将人类自然语言指令转换为低层次的腿部关节控制指令并非易…...
LeetCode 2071 你可以安排的最多任务数目 题解(附带自己的错误做题思路 过了25/49)
示例 输入:tasks [3,2,1], workers [0,3,3], pills 1, strength 1 输出:3 解释: 我们可以按照如下方案安排药丸: - 给 0 号工人药丸。 - 0 号工人完成任务 2(0 1 > 1) - 1 号工人完成任务 1&#…...
高翔《视觉SLAM十四讲》中第13讲,单目稠密重建中的RMODE数据集
高翔《视觉SLAM十四讲》中第13讲,单目稠密重建,中的RMODE数据集, 原作者苏黎世大学slam小组提供,但是网址已失效 下载方式: 1 https://vj6cqktnxq.feishu.cn/wiki/KBqtwD6XJio3Rmkm2FkckMY8nPg 2 参考地址:…...
PyTorch_张量形状操作
搭建模型时,数据都是基于张量形式的表示,网络层与层之间很多都是以不同的shape的方式进行表现和运算。 对张量形状的操作,以便能够更好处理网络各层之间的数据连接。 reshape 函数的用法 reshape 函数可以再保证张量数据不变的前提下改变数…...
【浅尝Java】变量与数据类型(含隐式类型转换、强制类型转换、整型与字符串互相转换等)
🍞自我激励:每天努力一点点,技术变化看得见 文章目录 字面常量数据类型变量变量概念语法格式整型变量字节型变量(byte)短整型变量(short)整型变量(int)长整型(…...
Ubuntu环境下使用uWSGI服务器【以flask应用部署为例】
0、前置内容说明 首先要知道WSGI是什么,关于WSGI服务器的介绍看这篇:WSGI(Web Server Gateway Interface)服务器 由于从Python 3.11开始限制了在系统级 Python 环境中使用 pip 安装第三方包,以避免与系统包管理器&am…...
GCC 使用指南
安装 GCC Ubuntu/Debian: sudo apt update && sudo apt install gcc gCentOS/RHEL: sudo yum install gcc gcc-cmacOS (通过 Homebrew): brew install gcc基本用法 编译 C 程序 gcc hello.c -o hello # 编译 hello.c,生成可执行文件 hello ./hello …...
虚函数 vs 纯虚函数 vs 静态函数(C++)
🧩 一图看懂:虚函数 vs 纯虚函数 特性虚函数(Virtual)纯虚函数(Pure Virtual)语法virtual void foo();virtual void foo() 0;是否必须实现✅ 必须在类中实现❌ 不在基类实现,派生类必须实现是…...
CF1000E We Need More Bosses
CF1000E We Need More Bosses 题目描述 题目大意: 给定一个 n n n 个点 m m m 条边的无向图,保证图连通。找到两个点 s , t s,t s,t,使得 s s s到 t t t必须经过的边最多(一条边无论走哪条路线都经过ta,这条边就是…...
Python:Seaborn 美化图表的技术指南
🎨 1、简述 Seaborn 是建立在 Matplotlib 基础上的高级可视化库,提供了更美观、更简洁的数据统计图表。本文将带你深入了解 Seaborn 的强大功能,并通过多个实践案例掌握使用技巧。 2、Seaborn 1️⃣ 什么是 Seaborn? Seaborn 是一个基于 matplotlib 构建的 Python 可视…...
go实现循环链表
需求 实现循环链表的节点生成、顺序遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intnext *zodiac_sign }// 添加 // func add_node_by_order(previous_node zodiac_sign, current_…...
QT | 常用控件
前言 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 —…...
EasyExcel使用总结
EasyExcel 文章目录 EasyExcel1、导入1.1、基本方式导入1.导入依赖2. 加载源文件基本语法 3. 读取数据行4. 读取结果 1.2、模型映射导入1.定义实体映射类2. 操作读取基本语法 3. 读取数据行4. 读取结果 1.3、导入类型转换器语法 1.4、导入监听器基本语法: 1.5、多行…...