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

java Springboot使用扣子Coze实现实时音频对话智能客服

一、背景

        因公司业务需求,需要使用智能客服实时接听顾客电话。

        现在已经完成的操作是,智能体已接入系统进行对练,所以本文章不写对联相关的功能。只有coze对接~

        扣子提供了试用Realtime WebSocket,点击右上角setting配置好智能体token之后就可以试用了

注意:只有扣子专业版支持实时音视频,所以需要开通专业版,开发测试阶段可以先充值1元买1000资源点对接测试, 注意超额会单独收费哦,

二、准备工作

1、发布智能体为AI服务

        a.登陆扣子平台注册账号

扣子扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。https://www.coze.cn/home        b. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间

        c. 在项目开发页面,新建智能体

       d.创建智能体完成之后,点击右上角的发布,在发布页面,选择API选项,然后点击发布

    c.获取智能体ID,后续开发要用

        点开 工作空间->项目开发->你的智能体,点进新建的智能体,链接地址后的数字则为智能体ID

2、获取访问令牌

因公司业务需要经过对比我们选用了JWT方式,开发测试阶段也可以选择个人访问令牌       

        a.在扣子API页面,进入授权-> Oauth应用页面->创建新应用,注意客户端类型为服务端应用

       

        b.保存后进行下一步授权,将自动生成的公钥复制保存好,自动下载的私钥也要存储好,后续接口认证会用到!

        

3、安装Java SDK,参考扣子官网

扣子扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。https://www.coze.cn/open/docs/developer_guides/java_installation

三、实践开发

1、添加maven依赖

 <dependency><groupId>com.coze</groupId><artifactId>coze-api</artifactId><version>0.3.0</version>
</dependency><!-- 以下非必须!!!!我把私钥文件放到resources下了,所以打包需要加上这个类型->
<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.pem</include></includes><filtering>false</filtering></resource></resources>
</build>

2、获取token

@Slf4j
@Component
public class CozeOAuth {/*** JWT鉴权token*/public String getJWTToken() {String token = "";try {// 获取私钥文件String jwtOauthPrivateKeyFilePath = "这里是你的私钥文件地址";ClassLoader classLoader = this.getClass().getClassLoader();java.net.URL resourceUrl = classLoader.getResource(jwtOauthPrivateKeyFilePath);if (resourceUrl == null) {log.info("私钥资源文件未找到,{}", jwtOauthPrivateKeyFilePath);return token;}String jwtOauthPrivateKey = new String(Files.readAllBytes(Paths.get(resourceUrl.toURI())), StandardCharsets.UTF_8);JWTOAuthClient oauth = new JWTOAuthClient.JWTOAuthBuilder().clientID("这里是你之前创建的OAuth应用Id").privateKey(jwtOauthPrivateKey).publicKey("这里是你的公钥").baseURL(com.coze.openapi.service.config.Consts.COZE_CN_BASE_URL).build();// 获取tokenOAuthToken resp = oauth.getAccessToken();System.out.println(resp);if (Objects.nonNull(resp)) {token = resp.getAccessToken();}} catch (Exception e) {log.error("获取coze JWT token异常!", e);}log.info("获取coze JWT token:{}", token);return token;}}

3、创建新类继承WebsocketsChatCallbackHandler,接收扣子服务端返回消息并做业务处理

@Slf4j
public class MyWebsocketsChatCallbackHandler extends WebsocketsChatCallbackHandler {public void onChatCreated(WebsocketsChatClient client, ChatCreatedEvent event) {log.info("扣子服务端返回,对话连接成功,{}", JSON.toJSONString(event));}public void onChatUpdated(WebsocketsChatClient client, ChatUpdatedEvent event) {log.info("扣子服务端返回,对话配置成功,{}", JSON.toJSONString(event));}public void onConversationChatCreated(WebsocketsChatClient client, ConversationChatCreatedEvent event) {log.info("扣子服务端返回,对话开始,{}", JSON.toJSONString(event));}public void onConversationChatInProgress(WebsocketsChatClient client, ConversationChatInProgressEvent event) {log.info("扣子服务端返回,对话正在处理,{}", JSON.toJSONString(event));}public void onConversationMessageDelta(WebsocketsChatClient client, ConversationMessageDeltaEvent event) {log.info("扣子服务端返回,增量消息,{}", JSON.toJSONString(event));}public void onConversationAudioDelta(WebsocketsChatClient client, ConversationAudioDeltaEvent event) {log.info("扣子服务端返回,增量语音,{}", JSON.toJSONString(event));// TODO 处理实际业务,比如返回给用户的语音}public void onConversationMessageCompleted(WebsocketsChatClient client, ConversationMessageCompletedEvent event) {log.info("扣子服务端返回,消息完成,{}", JSON.toJSONString(event));}public void onConversationAudioCompleted(WebsocketsChatClient client, ConversationAudioCompletedEvent event) {log.info("扣子服务端返回,语音回复完成,{}", JSON.toJSONString(event));}public void onConversationChatCompleted(WebsocketsChatClient client, ConversationChatCompletedEvent event) {log.info("扣子服务端返回,对话完成,{}", JSON.toJSONString(event));}public void onConversationChatFailed(WebsocketsChatClient client, ConversationChatFailedEvent event) {log.info("扣子服务端返回,对话失败,{}", JSON.toJSONString(event));}public void onInputAudioBufferCompleted(WebsocketsChatClient client, InputAudioBufferCompletedEvent event) {log.info("扣子服务端返回,流式提交的音频完成,{}", JSON.toJSONString(event));}public void onInputAudioBufferCleared(WebsocketsChatClient client, InputAudioBufferClearedEvent event) {log.info("扣子服务端返回,清除缓冲区音频成功,{}", JSON.toJSONString(event));}public void onConversationCleared(WebsocketsChatClient client, ConversationClearedEvent event) {log.info("扣子服务端返回,上下文清除完成,{}", JSON.toJSONString(event));}public void onConversationChatCanceled(WebsocketsChatClient client, ConversationChatCanceledEvent event) {log.info("扣子服务端返回,智能体输出中断,{}", JSON.toJSONString(event));}public void onConversationAudioTranscriptUpdate(WebsocketsChatClient client, ConversationAudioTranscriptUpdateEvent event) {log.info("扣子服务端返回,用户语音识别字幕,{}", JSON.toJSONString(event));}public void onConversationAudioTranscriptCompleted(WebsocketsChatClient client, ConversationAudioTranscriptCompletedEvent event) {log.info("扣子服务端返回,用户语音识别完成,{}", JSON.toJSONString(event));}public void onConversationChatRequiresAction(WebsocketsChatClient client, ConversationChatRequiresActionEvent event) {log.info("扣子服务端返回,端插件请求,{}", JSON.toJSONString(event));}public void onInputAudioBufferSpeechStarted(WebsocketsChatClient client, InputAudioBufferSpeechStartedEvent event) {log.info("扣子服务端返回,用户开始说话,{}", JSON.toJSONString(event));}public void onInputAudioBufferSpeechStopped(WebsocketsChatClient client, InputAudioBufferSpeechStoppedEvent event) {log.info("扣子服务端返回,用户结束说话,{}", JSON.toJSONString(event));}public void onClosing(WebsocketsChatClient client, int code, String reason) {log.info("扣子服务端返回,onClosing,code:{},reason:{}",code, reason);}public void onClosed(WebsocketsChatClient client, int code, String reason) {log.info("扣子服务端返回,onClosed,code:{},reason:{}", code,reason);}public void onError(WebsocketsChatClient client, ErrorEvent event) {log.info("扣子服务端返回,onError,event:{}", JSON.toJSONString(event));}public void onFailure(WebsocketsChatClient client, Throwable t) {log.info("扣子服务端返回,onFailure,event:{}", JSON.toJSONString(t));}public void onClientException(WebsocketsChatClient client, Throwable t) {log.info("扣子服务端返回,onFailure,event:{}", JSON.toJSONString(t.getMessage()));}
}

4、创建工具类

抽取跟业务无关的代码到该类中

@Slf4j
@Component
public class WebSocketUtils {@Resourceprivate CozeOAuth cozeOAuth;/*** 更新对话配置 请求参数*/public ChatUpdateEventData initChatUpdateEventData() {// 对话配置ChatConfig chatConfig = new ChatConfig();chatConfig.setAutoSaveHistory(true);// 输入音频格式InputAudio inputAudio = new InputAudio("pcm", "g711a", 8000, 1, 16);PCMConfig pcmConfig = new PCMConfig(100,8000);// 输出音频格式OutputAudio outputAudio = new OutputAudio("pcm", pcmConfig, null, null, null);// 转检测配置// server_vad 模式下,VAD 检测到语音之前要包含的音频量,单位为 ms。默认为 600ms。// server_vad 模式下,检测语音停止的静音持续时间,单位为 ms。默认为 500msTurnDetection turnDetection = new TurnDetection("server_vad", 300, 500);return cChatUpdateEventData.builder().inputAudio(inputAudio).outputAudio(outputAudio).chatConfig(chatConfig).turnDetection(turnDetection).build();}public CozeAPI getCozeApi(){return new CozeAPI.Builder().baseURL(Consts.COZE_CN_BASE_URL).auth(new TokenAuth(cozeOAuth.getJWTToken())).readTimeout(10000).build();}
}

5、使用websocket双向流式对话

我们用到了第三方的用户进线传输,直接sip协议拿包,将包传输给扣子,之后再将扣子的增量语音返回给第三方就行。所以选择了websocket的方式

        byte[] buffer = new byte[1500];CozeAPI cozeAPI = webSocketUtils.getCozeApi();WebsocketsChatClient websocketsChatClient = cozeAPI.websockets().chat().create(new WebsocketsChatCreateReq("这里是你的智能体ID", new MyWebsocketsChatCallbackHandler()));// 更新对话配置               websocketsChatClient.chatUpdate(webSocketUtils.initChatUpdateEventData());// 此处可以根据实际业务接收语音流byte[] audioData = Files.readAllBytes(Paths.get("/音频.pcm"));// 流式上传音频片段websocketsChatClient.inputAudioBufferAppend(audioData);

四、踩过的的坑

1、SDK版本会落后服务端功能

        扣子提供的SDK跟接口文档中描述的功能有部分差异,比如更新对话接口的入参limit_config,在SDK中是没有的。

        遇到这种情况则需要自己封装参数,比如继承某个SDK的类,然后在子类中写自己需要但是SDK没有的参数。

2、自动打断功能配置

        想要实现自动打断功能,需要使用server_vad模式,并且需要配置输出音频的限制limit_config,限制每次服务端返回的包,否则会等服务端返回完成之后才能打断。

3、工作流模式服务端响应较慢

        实际应用场景中会需要给智能体传配置好的参数,目前智能通过工作流的方式记住上下文,但是该模式服务端响应在3s左右,具体还在排查问题

相关文章:

java Springboot使用扣子Coze实现实时音频对话智能客服

一、背景 因公司业务需求&#xff0c;需要使用智能客服实时接听顾客电话。 现在已经完成的操作是&#xff0c;智能体已接入系统进行对练&#xff0c;所以本文章不写对联相关的功能。只有coze对接&#xff5e; 扣子提供了试用Realtime WebSocket&#xff0c;点击右上角setting配…...

焦化烧结行业无功补偿解决方案—精准分组补偿 稳定电能质量沃伦森

在焦化、烧结等冶金行业&#xff0c;负荷运行呈现长时阶梯状变化&#xff0c;功率波动相对平缓&#xff0c;但对无功补偿的分组精度要求较高。传统固定电容器组补偿方式无法动态跟随负荷变化&#xff0c;导致功率因数不稳定&#xff0c;甚至可能因谐波放大影响电网安全。 行业…...

机器人项目管理新风口:如何高效推动智能机器人研发?

在2025年政府工作报告中&#xff0c;“智能机器人”首次被正式纳入国家发展战略关键词。从蛇年春晚的秧歌舞机器人惊艳亮相&#xff0c;到全球首个人形机器人马拉松的热议&#xff0c;智能机器人不仅成为科技前沿的焦点&#xff0c;也为产业升级注入了新动能。而在热潮背后&…...

ZooKeeper配置优化秘籍:核心参数说明与性能优化

#作者&#xff1a;张桐瑞 文章目录 tickTime&#xff1a;Client-Server通信心跳时间initLimit&#xff1a;Leader-Follower初始通信时限syncLimit&#xff1a;Leader-Follower同步通信时限dataDir&#xff1a;数据文件目录clientPort&#xff1a;客户端连接端口服务器名称与地…...

uniapp -- 实现微信小程序、app、H5端视频上传

布局及实现代码&#xff1a; <template><view class"flex flex-column p-4 grid-gap-4"><view class"flex flex-column grid-gap-4 bg-white p-4 rounded-4"><view class"font-weight-600">视频名称</view><i…...

2025年Redis分片存储性能优化指南

一、分片规则与负载均衡 动态哈希分片‌ 采用CRC16算法计算键哈希值&#xff0c;通过hash_slot CRC16(key) % 16384确定槽位分布&#xff0c;结合Redis Cluster自动管理槽位迁移。 总分片数按需动态调整&#xff0c;例如从16节点扩容至32节点时&#xff0c;触发槽位重分配以…...

前端跨端框架的开发以及IOS和安卓的开发流程和打包上架的详细流程

以下是关于 前端跨端框架开发 以及 iOS/Android 原生开发流程与上架 的详细指南&#xff0c;涵盖技术选型、开发工具、打包发布全流程&#xff1a; 一、前端跨端开发框架对比与流程 主流跨端框架 框架技术栈性能接近原生生态成熟度适用场景React NativeJS/React80%⭐⭐⭐⭐⭐…...

项目《基于Linux下的mybash命令解释器》(二)

一、使用系统命令的完整代码 #include<stdio.h> #include<wait.h> #include<stdlib.h> #include<unistd.h> #include<assert.h> #include<string.h> #include<pwd.h>#define ARG_MAX 10//防止参数不够&#xff0c;可以做到一改全改…...

arm64适配系列文章-第十章-arm64环境上jenkins的部署

ARM64适配系列文章 第一章 arm64环境上kubesphere和k8s的部署 第二章 arm64环境上nfs-subdir-external-provisioner的部署 第三章 arm64环境上mariadb的部署 第四章 arm64环境上nacos的部署 第五章 arm64环境上redis的部署 第六章 arm64环境上rabbitmq-management的部署 第七章…...

PyTorch生成式人工智能实战(2)——PyTorch基础

PyTorch生成式人工智能实战&#xff08;2&#xff09;——PyTorch基础 0. 前言1. 创建 PyTorch 张量2. PyTorch 张量索引和切片3. PyTorch 张量形状4. 在 PyTorch 张量数学运算小结系列链接 0. 前言 为了训练生成式人工智能模型&#xff0c;我们可以使用多种数据格式&#xff…...

解决高德地图AMapUtilCoreApi、NetProxy类冲突

问题&#xff1a; Duplicate class com.amap.apis.utils.core.api.AMapUtilCoreApi found in modules jetified-3dmap-10.0.600 (com.amap.api:3dmap:10.0.600) and jetified-search-9.7.1 (com.amap.api:search:9.7.1) Duplicate class com.amap.apis.utils.core.api.NetProx…...

java—14 ZooKeeper

一、ZooKeeper简介 ZooKeeper是一种分布式协调服务&#xff0c;用于管理大型主机。在分布式环境中协调和管理服务 是一种复杂的过程&#xff0c;ZooKeeper通过简单的架构和API解决了这个问题。ZooKeeper运行开 发人员专注于核心应用程序逻辑&#xff0c;而不必担心应用程序的分…...

特征存储的好处:特征存储在机器学习开发中的优势

随着企业寻求提升机器学习生产力和运营能力 (MLOps),特征存储 (Feature Store) 的普及度正在迅速提升。随着 MLOps 技术的进步,特征存储正成为机器学习基础设施的重要组成部分,帮助企业提升模型的性能和解释能力,并加速新模型与生产环境的集成。这些存储充当集中式存储库,…...

【Promethus(普罗米修斯)介绍安装及使用】

一、系统介绍 1、什么是Prometheus? Prometheus:不仅是一款时间序列数据库,在整个生态上还是一套完整的监控系统。同时,还涉及许多以“explore”命名的客户端数据采集工具以及pushgateway网关。 官网:https://prometheus.io/ 文献:https://prometheus.io/docs/introdu…...

力扣热题100题解(c++)—矩阵

73.矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 int m matrix.size(); // 行数int n matrix[0].size(); // 列数bool firstRowZero false; // 标记第一行是否包含 0bool f…...

Spring Boot Controller 单元测试撰写

文章目录 引言标准用法必需依赖项核心注解说明代码示例 当涉及静态方法时的测试策略必需依赖项核心注解说明代码示例 引言 之前在编写 Controller 层的单元测试时&#xff0c;我一直使用 SpringBootTest 注解&#xff0c;但它会加载整个 Spring 应用上下文&#xff0c;资源开销…...

MVCC详解

目录 undo日志版本链 read view一致性视图 MVCC过程分析 读事务&写事务 Multi-Version Concurrency Control&#xff0c;多版本并发控制在读已提交和可重复读隔离级别下都实现了MVCC机制 undo日志版本链 一行数据被修改后&#xff0c;MySQL会保留修改前的数据&#xff08;u…...

【通关函数的递归】--递归思想的形成与应用

目录 一.递归的概念与思想 1.定义 2.递归的思想 3.递归的限制条件 二.递归举例 1.求n的阶乘 2.顺序打印一个整数的每一位 三.递归与迭代 前言:上篇博文分享了扫雷游戏的实现&#xff0c;这篇文章将会继续分享函数的递归相关知识点&#xff0c;让大家了解并掌握递归的思…...

Python爬虫实战:移动端逆向工具Fiddler经典案例

一、引言 在移动互联网迅猛发展的当下,移动端应用产生了海量的数据。对于开发者而言,获取这些数据对于市场调研、竞品分析、数据挖掘等工作具有重要意义。Fiddler 作为一款功能强大的 Web 调试代理工具,能够有效捕获、分析和修改移动端的网络请求,为开发者深入了解移动端网…...

从平台工程视角出发,重塑云原生后端的工程体系

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从 DevOps 到平台工程,云原生后端的演进逻辑 云原生的广泛应用,使得后端系统的开发、部署与运维逐渐从“编写业务代码”演进为“构建工程平台”。过去,后端开发者通常将注意力集中于 API 编写…...

【Hive入门】Hive分区与分桶深度解析:优化查询性能的关键技术

引言 在大数据领域&#xff0c;Apache Hive作为构建在Hadoop之上的数据仓库工具&#xff0c;因其类SQL的查询语言(HiveQL)和良好的扩展性而广受欢迎。然而&#xff0c;随着数据量的增长&#xff0c;查询性能往往成为瓶颈。本文将深入探讨Hive中两种关键的数据组织技术——分区(…...

Pytorch中的Dataset和DataLoader

1. PyTorch数据处理的核心概念 在PyTorch中,数据处理主要依赖两个核心组件: torch.utils.data.Dataset:定义如何访问数据集(单个样本的数据和标签)。torch.utils.data.DataLoader:负责批量加载数据、打乱数据、并行加载等。1.1 为什么需要Dataset和DataLoader? 问题:深…...

中介者模式:解耦对象间复杂交互的设计模式

中介者模式&#xff1a;解耦对象间复杂交互的设计模式 一、模式核心&#xff1a;用中介者统一管理对象交互&#xff0c;避免两两直接依赖 当系统中多个对象之间存在复杂的网状交互时&#xff08;如 GUI 界面中按钮、文本框、下拉框的联动&#xff09;&#xff0c;对象间直接调…...

IEEE综述 | 车道拓扑推理20年演进:从程序化建模到车载传感器

导读 车道拓扑推理对于高精建图和自动驾驶应用至关重要&#xff0c;从早期的程序化建模方法发展到基于车载传感器的方法&#xff0c;但是很少有工作对车道拓扑推理技术进行全面概述。为此&#xff0c;本文系统性地调研了车道拓扑推理技术&#xff0c;同时确定了未来研究的挑战和…...

手撕C++STL list:深入理解双向链表的实现

目录 1. 引言 3. list 类的实现 (1) 基本结构 (2) 初始化与清理 (3) 插入与删除 (4) 常用接口 (4) 常用接口 4. 测试代码 5. 总结 1. 引言 在C STL中&#xff0c;list是一个基于双向链表的容器&#xff0c;支持高效的头尾插入/删除操作&#xff08;O(1)时间复杂度&…...

QMT学习课程Day1

我们先从交易的最基础&#xff0c;如何进行下单&#xff0c;最为简答的下单&#xff0c;帮助大家建立自信心。 首先导入相关函数&#xff1a; #encoding:gbk import pandas as pd import numpy as np import datetime import pandas as pd import numpy as np import talib i…...

【Rust结构体】Rust结构体详解:从基础到高级应用

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

Java面试实战:音视频场景下的微服务架构与缓存技术剖析

面试场景描述 谢飞机&#xff0c;一位自称“全栈工程师”的程序员&#xff0c;来到一家互联网大厂参加Java开发岗位的面试。面试官是一位严肃的技术专家&#xff0c;他希望通过一系列问题考察谢飞机的实际技术水平。 第一轮提问&#xff08;基础问题&#xff09; 面试官&…...

Vue 3 的核心组合式 API 函数及其完整示例、使用场景和总结表格

以下是 Vue 3 的核心组合式 API 函数及其完整示例、使用场景和总结表格&#xff1a; 1. ref 作用 创建一个响应式引用值&#xff0c;用于管理基本类型或单个值的响应式状态。 示例 <template><div><p>Count: {{ count }}</p><button click&quo…...

Kotlin学习基础知识大全(上)

文章目录 Kotlin基础知识全面解析第一章&#xff1a;Kotlin语言概述1.1 Kotlin的发展历程1.2 Kotlin的设计目标1.3 Kotlin的应用领域1.4 Kotlin与Java的比较 第二章&#xff1a;Kotlin基础语法2.1 变量与常量2.2 基本数据类型数字类型示例&#xff1a;字符和字符串示例&#xf…...

【Java面试笔记:进阶】18.什么情况下Java程序会产生死锁?如何定位、修复?

死锁(Deadlock)是指两个或多个线程因竞争资源而无限期阻塞的现象。 1. 死锁的定义与产生原因 定义:死锁是一种程序状态,多个线程或进程因循环依赖而永久处于等待状态,无法继续执行。 根据 Coffman 条件,死锁产生需同时满足以下四个必要条件: 互斥(Mutual Exclusion)…...

PS Mac Photoshop 2025 for Mac图像处理 PS 2025安装笔记

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、Anticc简化版安装1.1双击运行软件&#xff0c;安装1.2 解决来源身份不明的开发者问题**此代码为打开&#xff1a;系统偏好设置 – 隐私与安全性&#xff0c;中的【任何来源】&#xff0c;如下图&#xff1a;**1.3 再次运行…...

HarmonyOS 框架基础知识

参考文档&#xff1a;HarmonyOS开发者文档 第三方库&#xff1a;OpenHarmony三方库中心仓 基础特性 Entry&#xff1a;关键装饰器 Components&#xff1a;组件 特性EntryComponent​​作用范围仅用于页面入口可定义任意可复用组件​​数量限制​​每个页面有且仅有一个无数量…...

LabVIEW实现Voronoi图绘制功能

该 LabVIEW 虚拟仪器&#xff08;VI&#xff09;借助 MathScript 节点&#xff0c;实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示&#xff0c;能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能&#xff1a;根据 “Maximum a…...

centos7的环境下ollama 如何卸载

在 CentOS 7 环境下卸载 ollama&#xff0c;可以按照以下步骤操作。假设 ollama 是通过手动安装的&#xff0c;以下是卸载的详细步骤。 1. 停止所有运行中的 ollama 进程 在卸载之前&#xff0c;确保所有与 ollama 相关的进程都已停止。 查找并停止进程 ps aux | grep ollam…...

中心极限定理(CLT)习题集 · 答案与解析篇

中心极限定理(CLT)习题集 答案与解析篇 与题目篇一一对应。若有其他解法欢迎在评论区补充。 1. 概念与判断题 1.1 经典叙述 若 (X_1,X_2,\dots) i.i.d.,满足 (E[X_1]=\mu,;0<\sigma^2:=\operatorname{Var}(X_1)<\infty)。 则 [ Z_n=\frac{\sum_{k=1}^{n}(X_k-\mu)}…...

Spring Cloud Gateway配置双向SSL认证(完整指南)

本文将详细介绍如何为Spring Cloud Gateway配置双向SSL认证,包括证书生成、配置和使用。 目录结构 /my-gateway-project ├── /certs │ ├── ca.crt # 根证书 │ ├── ca.key # 根私钥 │ ├── gateway.crt # 网关证书 │ ├── …...

中间系统-SPF计算

SPF计算 isis如何计算路由&#xff1a;以自己为根构建SPF树&#xff0c;之后填充叶子。 <R1>display isis lsdb 0000.0000.0001.00-00 verbose //查看lsp的详细信息 SOURCE 0000.0000.0001.00 //源节点系统&#xff0c;用于标识产生该LSP的路由器…...

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者&#xff1a;厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命&#xff0c;致力于洞悉达人变现需求和痛点&#xff0c;提供达人选高佣、稳变现、速响应的选品服务。 业务特…...

Diffusion inversion后的latent code与标准的高斯随机噪音不一样

可视化latents_list如下; 可视化最后一步与标准的噪声&#xff1a; 能隐约看出到最后一步还是会有“马”的形状 整个代码&#xff08;及可视化代码如下&#xff09;&#xff1a; ## 参考freeprompt(FPE)的代码 import os import torch import torch.nn as nn import torch.n…...

C语言-函数-1

以下是我初学C语言的笔记记录&#xff0c;欢迎在评论区留言补充 一&#xff0c;函数分为几类 * 函数分为两类&#xff1a; 一类是库函数&#xff1b;一类是自定义函数 * 库函数&#xff1a; 系统自己带的&#xff0c;在使用时候&#xff0c;要用到头文件&#xff1b; 查询库函…...

AXOP34032: 40V/40µA 轨到轨输入输出双通道运算放大器

AXOP34032是一款通用型高压低功耗双通道运算放大器&#xff0c;产品的工作电压为2.5V至40V&#xff0c;具有1.2MHz的带宽&#xff0c;压摆率为 0.7V/μs&#xff0c;单路静态电流为40A。该产品非常适合需要较高耐压的低功耗应用。 产品可选关断功能(AXOP34032S)。 主要特性 2…...

HTML5 服务器发送事件 (Server-Sent Events):实现网页自动获取服务器更新

一、引言 在现代 Web 应用开发中,实时性和动态交互性变得越来越重要。HTML5 引入的服务器发送事件(Server-Sent Events,简称 SSE)为网页获取来自服务器的实时更新提供了一种简单而有效的解决方案。与传统方式中网页需主动询问服务器是否有更新不同,SSE 能够让更新自动推送…...

如何创建和使用 Hive 视图

一、Hive 视图的基本概念 Hive 视图是一种虚拟表,其内容由查询语句定义,本身不存储实际数据。当查询视图时,Hive 会动态执行视图定义中的查询逻辑并返回结果。视图的核心作用是简化复杂查询、提供数据抽象和实现权限控制。例如,通过视图可以隐藏底层表的复杂关联关系,或限…...

快速体验tftp文件传输(嵌入式设备)

一、参考资料 Linux tftp 命令 | 菜鸟教程 Ubuntu最新版本(Ubuntu22.04LTS)安装Tftp服务及其使用教程-CSDN博客 Windows下的Tftpd32(Tftpd64)软件下载和使用教程-集成了Tftp服务器、客户端-CSDN博客 tftpd32 tftpd64文件传输安装和使用教程【图文并茂】-CSDN博客 二、快速…...

数据库进阶之MySQL 程序

1.目标 1> 了解mysqlId服务端程序 2> 掌握mysql客户端程序的使用 3> 了解工具包中的其他程序 2. MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法(如:mysql -uroot -p)。 对常⽤程序进⾏详细的讲解(实用工具的使用方法)&#xf…...

细说STM32单片机FreeRTOS信号量和互斥量及二值信号量的应用实例

目录 一、信号量和互斥量概述 1、二值信号量 2、计数信号量 3、互斥量 4、递归互斥量 5、相关函数概述 &#xff08;1&#xff09; 负责创建的函数 &#xff08;2&#xff09; 负责释放和获取的函数 &#xff08;3&#xff09;负责返回数据的函数 二、二值信号量使用…...

云原生之认识DDD

一、DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。 比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水…...

Kingbase 数据库物理备份与恢复操作手册

版本环境&#xff1a;KingbaseES V8R6 适用对象&#xff1a;DBA / 运维工程师 / 技术支持人员 目标用途&#xff1a;生产环境灾备保障、全量迁移、异地容灾恢复 一、物理备份操作流程 物理备份是指直接对数据库实例的物理文件进行复制&#xff0c;具备完整性强、恢复速度快等特…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第四章 不定积分同步测试卷 A卷

第四章 不定积分同步测试卷 A卷 一、单项选择题(本大题共5小题&#xff0c;每小题3分&#xff0c;总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15 分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计30…...