Spring AI Alibaba - Milvus 初体验,实现知识库效果
先看效果
数据被存储在 milvus 中,包括原始数据和向量数据。
大模型使用向量化数据的回答:
环境准备
安装 milvus
Milvus 是一款专为向量相似性搜索设计的高性能开源数据库。
本地测试环境可以直接 Standalone 模式安装,需要用到 docker。
官方文档地址:https://milvus.io/docs/zh
官网安装:https://milvus.io/docs/zh/install_standalone-docker-compose.md
直接按照官方文档安装即可,安装后的效果如下:会有三个容器,分别是:milvus-standalone、milvus-etcd和milvus-minio。安
装 Attu
Attu 是 Milvus 的官方 GUI 客户端,弥补了命令行工具 Milvus_cli 的不足,提供更直观的操作体验
docker run -d --name attu -p 8000:3000 -e MILVUS_URL=127.0.0.1:19530 zilliz/attu:v2.3.4
安装成功后docker容器中会多个 attu。访问地址:http://localhost:8000 进入 attu 界面:
Milvus 初体验
在 Milvus 中,也有类似于 MySQL 一样的数据库的概念,用来组织和管理数据的逻辑单元。
在数据库下是 Collections ,类似于MySQL的表。
在Collections中可以定义字段、存储数据。
依赖
创建 maven 工程后,先添加如下依赖:
<dependency><groupId>io.milvus</groupId><artifactId>milvus-sdk-java</artifactId><version>2.5.7</version>
</dependency>
可能会缺少 slf4j 依赖,添加一下就可以。
创建连接
MilvusClientV2 milvusClient = new MilvusClientV2(ConnectConfig.builder().uri("http://192.168.74.132:19530").build());
uri 是部署的 Milvus 链接地址。
在 attu 中创建 Collections
选择 default 数据库,点击 创建Collections按钮,Collections 的名称为:quick_setup。添加字段:id、vector和color,最终创建好的 Collections 如下:
插入数据
使用 Java 代码插入,代码如下:
Gson gson = new Gson();List<JsonObject> data = Arrays.asList(gson.fromJson("{\"id\": 10, \"vector\": [0.3580376395471989f, -0.6023495712049978f, 0.18414012509913835f, -0.26286205330961354f, 0.9029438446296592f], \"color\": \"pink_8682\"}", JsonObject.class),gson.fromJson("{\"id\": 11, \"vector\": [0.19886812562848388f, 0.06023560599112088f, 0.6976963061752597f, 0.2614474506242501f, 0.838729485096104f], \"color\": \"red_7025\"}", JsonObject.class),gson.fromJson("{\"id\": 12, \"vector\": [0.43742130801983836f, -0.5597502546264526f, 0.6457887650909682f, 0.7894058910881185f, 0.20785793220625592f], \"color\": \"orange_6781\"}", JsonObject.class),gson.fromJson("{\"id\": 13, \"vector\": [0.3172005263489739f, 0.9719044792798428f, -0.36981146090600725f, -0.4860894583077995f, 0.95791889146345f], \"color\": \"pink_9298\"}", JsonObject.class),gson.fromJson("{\"id\": 14, \"vector\": [0.4452349528804562f, -0.8757026943054742f, 0.8220779437047674f, 0.46406290649483184f, 0.30337481143159106f], \"color\": \"red_4794\"}", JsonObject.class),gson.fromJson("{\"id\": 15, \"vector\": [0.985825131989184f, -0.8144651566660419f, 0.6299267002202009f, 0.1206906911183383f, -0.1446277761879955f], \"color\": \"yellow_4222\"}", JsonObject.class),gson.fromJson("{\"id\": 16, \"vector\": [0.8371977790571115f, -0.015764369584852833f, -0.31062937026679327f, -0.562666951622192f, -0.8984947637863987f], \"color\": \"red_9392\"}", JsonObject.class),gson.fromJson("{\"id\": 17, \"vector\": [-0.33445148015177995f, -0.2567135004164067f, 0.8987539745369246f, 0.9402995886420709f, 0.5378064918413052f], \"color\": \"grey_8510\"}", JsonObject.class),gson.fromJson("{\"id\": 18, \"vector\": [0.39524717779832685f, 0.4000257286739164f, -0.5890507376891594f, -0.8650502298996872f, -0.6140360785406336f], \"color\": \"white_9381\"}", JsonObject.class),gson.fromJson("{\"id\": 19, \"vector\": [0.5718280481994695f, 0.24070317428066512f, -0.3737913482606834f, -0.06726932177492717f, -0.6980531615588608f], \"color\": \"purple_4976\"}", JsonObject.class)
);InsertReq req = InsertReq.builder().collectionName("quick_setup").data(data).build();InsertResp resp = milvusClient.insert(req);
插入后的效果如下:
Spring Alibaba 使用 Milvus
创建项目
创建新的项目,引入依赖
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-milvus-store-spring-boot-starter</artifactId>
</dependency>
引入依赖后,SpringBoot 会自动创建 MilvusVectorStore,通过 MilvusVectorStore 查询数据、插入数据等。
配置项目
spring:ai:vectorstore:milvus:client:host: 192.168.74.132 # milvus 地址port: 19530 # milvus 端口号embedding-dimension: 1536 # 向量维度initialize-schema: true # 是否初始化dashscope:api-key: sk-* # api-key
源码编写
创建 chatClient:
@Bean
ChatClient chatClient(ChatClient.Builder builder) {return builder.defaultSystem("你将作为一名 Spring-AI-Alibaba 的专家,对于用户的使用需求作出解答").build();
}
启动时将数据存入到 Milvus 中,创建 VectorDataInit 类继承 ApplicationRunner,代码如下:
@Configuration
public class VectorDataInit implements ApplicationRunner {private final Logger logger = LoggerFactory.getLogger(VectorDataInit.class);private final MilvusVectorStore vectorStore;public VectorDataInit(MilvusVectorStore vectorStore) {this.vectorStore = vectorStore;}@Overridepublic void run(ApplicationArguments args) {List<Document> documents = List.of(new Document("1. 使用SpringAIAlibaba创建一个Spring Boot项目,并添加spring-ai-alibaba-starter依赖。"),new Document("2. 在SpringAIAlibaba项目的pom.xml中添加Spring Milestone和Snapshot存储库。"),new Document("3. 通过SpringAIAlibaba申请阿里云通义API Key,在application.yml中进行配置。"),new Document("4. 使用SpringAIAlibaba的ChatClient和Prompt功能实现对话模型。"),new Document("5. 通过SpringAIAlibaba的Spring Boot与Spring Cloud Alibaba AI对接,实现基本聊天功能。"),new Document("6. SpringAIAlibaba支持文本生成、翻译、摘要等生成式AI功能。"),new Document("7. SpringAIAlibaba支持文本数据的语义搜索和AI绘画功能。"),new Document("8. 使用SpringAIAlibaba的TongYiChatModel和TongYiImagesModel实现聊天和图片服务。"),new Document("9. 在SpringAIAlibaba的REST控制器中提供对外的API接口。"),new Document("10. 通过SpringAIAlibaba的简单API调用实现AI模型的集成。"),new Document("11. 使用SpringAIAlibaba的Prompt模板管理控制AI模型的输出。"),new Document("12. 结合SpringAIAlibaba的检索和生成技术(RAG)提高生成内容的质量。"),new Document("13. 使用SpringAIAlibaba实现文本生成图像和图像识别功能。"),new Document("14. 准备SpringAIAlibaba需要的Java 17及以上的开发环境。"),new Document("15. 使用IDEA进行SpringAIAlibaba的Java开发和HBuilder X进行前端开发。"),new Document("16. 在SpringAIAlibaba的Spring Boot项目中集成多种AI模型和向量数据库。"),new Document("17. SpringAIAlibaba支持自然语言处理、计算机视觉、语音处理和数据分析与预测功能。"),new Document("18. 通过SpringAIAlibaba的配置中心和注册中心实现动态扩展。"));vectorStore.add(documents);logger.info("Vector data initialized");}
}
启动项目后数据就会被存入到 milvus 中。
创建接口
向量搜索
根据用户输入搜索最相似的文本,代码如下:
@GetMapping("/select")
public List<Document> search(String param) {return vectorStore.similaritySearch(SearchRequest.builder().query(param).topK(10).build());
}
其中 topK 代表要搜索的数量。
大模型+Milvus
@GetMapping(value = "/chat")
public Flux<String> generation(@RequestParam("prompt") String userInput,HttpServletResponse response
) {response.setCharacterEncoding("UTF-8");// 发起聊天请求并处理响应return chatClient.prompt().user(userInput)// 大模型使用 milvus 向量库.advisors(new QuestionAnswerAdvisor(vectorStore, SearchRequest.builder().build())).stream().content();
}
创建了一个 QuestionAnswerAdvisor,使用到了 vectorStore,查看调用效果:
相关文章:
Spring AI Alibaba - Milvus 初体验,实现知识库效果
先看效果 数据被存储在 milvus 中,包括原始数据和向量数据。 大模型使用向量化数据的回答: 环境准备 安装 milvus Milvus 是一款专为向量相似性搜索设计的高性能开源数据库。 本地测试环境可以直接 Standalone 模式安装,需要用到 docke…...
arcpy列表函数的应用
arcpy.ListDatasets() 该函数用于列出指定工作空间中的所有数据集(如要素数据集、栅格数据集等)。 语法: python arcpy.ListDatasets(wild_cardNone, feature_typeNone) • wild_card:用于筛选数据集名称的通配符。 • feat…...
上位机知识篇---时钟分频
文章目录 前言 前言 本文简单介绍了一下时钟分频。时钟分频(Clock Division)是数字电路设计中常见的技术,用于将高频时钟信号转换为较低频率的时钟信号,以满足不同模块的时序需求。它在处理器、FPGA、SoC(片上系统&am…...
Redis的两种持久化方式:RDB和AOF
Redis持久化概述 Redis作为内存数据库,数据存储在内存中。为了保证数据在服务器重启或宕机时不丢失,Redis提供了两种持久化方案: RDB(Redis Database):定时生成内存快照 AOF(Append Only File&…...
1位的推理框架bitnet.cpp
源码:https://github.com/microsoft/BitNet bitnet.cpp 技术解析 bitnet.cpp 是专为 低精度大语言模型(如 BitNet b1.58) 设计的官方推理框架,其核心特性如下: 一、架构优势 全栈优化引擎 提供高度优化…...
教育领域的AIGC革命:构建多模态智能教学系统
一、智能教育系统技术架构 1.1 教育场景技术需求 教学环节 传统痛点 AIGC解决方案 课程设计 耗时耗力,创新不足 跨学科教案自动生成 课堂互动 单向传授,参与度低 多模态交互式虚拟教师 作业批改 重复劳动,反馈延迟 全自动批改与个性化评语 学…...
Simulink 数据存储机制:Base Workspace、Model Workspace 与 Data Dictionary 的核心区别
1. 核心定位与设计目标 存储方式本质核心设计目标Base WorkspaceMATLAB全局内存空间临时数据交互,快速原型开发Model Workspace模型私有数据容器模型数据隔离,防止命名冲突Data Dictionary专业数据管理文件(.sldd)复杂系统数据治理,支持团队…...
TI---UART通信
一、SysConfig 中 UART 配置的核心参数与生成逻辑 1. 基础参数配置(图形化界面) 配置项功能说明生成代码影响模式选择主机模式(Master)/ 从机模式(仅部分芯片支持,如 UART 作为 I2C 桥接)生成…...
spark总结
文章目录 一 spark简介1.1 什么是spark1.2 spark运行过程1.2.1 组成1.2.2 过程1.2.3 事例(词频统计WordCount程序) 1.3 spark运行模式1.4 pyspark 二 SparkCore2.1 RDD介绍2.2 RDD编写2.3 RDD算子2.4 RDD的持久化2.4.1 为什么需要缓存和检查点机制&#…...
【随笔】地理探测器原理与运用
文章目录 一、作者与下载1.1 软件作者1.2 软件下载 二、原理简述2.1 空间分异性与地理探测器的提出2.2 地理探测器的数学模型2.21 分异及因子探测2.22 交互作用探测2.23 风险区与生态探测 三、使用:excel 一、作者与下载 1.1 软件作者 作者: DOI: 10.…...
补码底层逻辑探讨
在计算机里面以二进制进行存储,二进制并不能区分正负数 为了处理负数,人们想了很多办法 1.原码 首先,很直观的区分方法就是设置一个flag 在二进制前面加一个符号位,0是正、1是负 但是在电路里面处理这样的信号却很复杂&#…...
第二大脑-个人知识库
原文链接:https://i68.ltd/notes/posts/20250407-llm-person-kb/ Quivr-第二大脑一样的个人助手,利用AI技术增强个人生产力 将 GenAI 集成到您的应用程序中的个性化 RAG,专注于您的产品而非 RAG项目仓库:https://github.com/QuivrHQ/quivr Star:37.7k官网:https:/…...
泰勒展开概念解释(图优化SLAM中非线性系统的线性处理)
1. 泰勒展开 泰勒展开是一种用多项式近似复杂函数的数学方法,其核心思想是通过函数在某一点的各阶导数信息,构建一个多项式来逼近原函数,即通过函数在某一点x0的各阶导数值,构造一个多项式 P(x),使得该多项式在 x0 附近与原函数 f(x) 的值及其导数尽可能匹配,数学形式为…...
CANape与MATLAB数据接口技术详解
目录 CANape与MATLAB数据接口技术详解 一、数据互操作背景与意义 1.1 汽车电子开发中的测量需求 1.2 技术标准演进分析 二、CANape数据导出深度解析 2.1 MDF文件结构说明 2.2 转换流程优化建议 三、MATLAB数据处理进阶技术 3.1 数据质量评估脚本 3.2 数据可视化增强方…...
per-task affinity 是什么?
Per-Task Affinity(任务级CPU亲和性)详解 Per-Task Affinity 是 Linux 调度器提供的一种机制,允许将单个任务(进程/线程)绑定到特定的 CPU 核心(或核心集合)上运行,从而优化性能、减…...
基于先进MCU的机器人运动控制系统设计:理论、实践与前沿技术
摘要:随着机器人技术的飞速发展,对运动控制系统的性能要求日益严苛。本文聚焦于基于先进MCU(微控制单元)的机器人运动控制系统设计,深入剖析其理论基础、实践方法与前沿技术。以国科安芯的MCU芯片AS32A601为例…...
Network.framework 的引入,不是为了取代 URLSession
Network.framework 的引入,不是为了取代 URLSession 如果你感觉 Network.framework 的引入, 可能是为了取代 URLSession, 那你就大错特错了!这里需要非常准确地区分一下: 🔵 Network.framework 不是为了取代 URLSession。 &…...
gradle-缓存、依赖、初始化脚本、仓库配置目录详解
1.启用init.gradle文件的方法 在命令置顶文件,例如gradle --init-script yourdir/init.gradle -q taskName,你可以多次输入此命令来制定多个init文件把init.gradle文件放到USER_HOME/.gradle/目录下把以.gradle结尾的文件放到USER_HOME/.gradle/.init.d/目录下把以…...
提示词的神奇魔力——如何通过它改变AI的输出
一、引言:初识AI的惊艳与迷茫 最近这段时间,我像很多人一样,一头扎进了生成式AI的世界,尝试使用各种工具,从文字助手到图像生成器。一开始,我被它们的能力深深震撼,感觉就像突然拥有了一个无所…...
零基础上手Python数据分析 (24):Scikit-learn 机器学习初步 - 让数据预测未来!
写在前面 在前面的学习中,我们已经掌握了使用 Python、Pandas、NumPy、Matplotlib 和 Seaborn 进行数据处理、分析和可视化的全套核心技能。我们学会了如何从数据中提取信息、清洗数据、整合数据、探索数据模式并将其可视化呈现。 现在,我们站在了一个新的起点。数据分析不仅…...
React 与 Vue 虚拟 DOM 实现原理深度对比:从理论到实践
在现代前端开发中,React 和 Vue 作为最流行的两大框架,都采用了虚拟 DOM(Virtual DOM) 技术来优化渲染性能。虚拟 DOM 的核心思想是通过 JavaScript 对象模拟真实 DOM,减少直接操作 DOM 的开销,从而提高页面…...
结合五层网络结构讲一下用户在浏览器输入一个网址并按下回车后到底发生了什么?
文章目录 实际应用第一步:用户在浏览器输入 www.baidu.com 并按下回车1. 浏览器触发域名解析(DNS查询) 第二步:DNS请求的逐层封装与传输1. 应用层(DNS协议)2. 传输层(UDP协议)3. 网络…...
关于Code_流苏:商务合作、产品开发、计算机科普、自媒体运营,一起见证科技与艺术的交融!
Code_流苏 🌿 名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 🌟 欢迎来到Code_流苏的CSDN主页 —— 与我一起&…...
Webpack模块打包工具
1. 认识webpack的基本用法步骤创建项目->下载webpack webpack-cli -> npm init -y -> package.json的scripts中配置webpack默认打包入口:src/index.js默认打包出口: dist/main.js2. 认识webpack.config.js的基本配置loader -> 打包css,less…...
crossOriginLoading使用说明
1. 说明 此配置用于控制 Webpack 动态加载的代码块(chunk)(例如代码分割或懒加载的模块)在跨域(不同域名)加载时的行为。它通过为动态生成的 <script>标签添加 crossorigin 属性,确保符合…...
Linux系统性能调优技巧分享
在数字化时代,Linux 系统以其开源、稳定、高效的特性,成为服务器、云计算、物联网等领域的核心支撑。然而,随着业务规模的扩大和负载的增加,系统性能问题逐渐凸显。掌握 Linux 系统性能调优技巧,不仅能提升系统运行效率,还能降低运维成本。下面从多个方面介绍实用的性能调…...
在Windows11中配置Git+SSH环境,本此实践使用Gitee(码云),方法同样适用于其它绝大部分Git服务
1.下载并安装Git 进入官网下载 Git - Downloading Package 选择下载Standalone Installer安装包,看自己电脑是64-bit还是32-bit(一般都是64-bit) 双击安装包进行安装,Next 这里可以自定义安装路径 这里可以勾选添加桌面快捷方式…...
【软考-架构】14、软件可靠性基础
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 软件可靠性基本概念软件可靠性建模软件可靠性管理软件可靠性设计N版本程序设计恢复块设计(动态冗余)双机容错技术、集群技术负载均衡软件可靠性测试…...
怎样理解ceph?
Ceph 是一个开源的、高度可扩展的 分布式存储系统,设计用于提供高性能、高可靠性的对象存储(Object)、块存储(Block)和文件存储(File)服务。它的核心思想是通过去中心化的架构和智能的数据分布策…...
《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 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…...