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

HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发

在智能设备的交互中,如何准确理解并及时响应用户需求,成为提升用户体验的关键。HarmonyOS Next 的意图框架服务(Intents Kit)为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例,展示如何使用意图框架服务,实现意图共享与调用的功能,推动智慧分发的应用。

在这里插入图片描述


一、项目背景与目标

1. 意图框架介绍

Intents Kit(意图框架服务)是HarmonyOS级的意图标准体系 ,意图连接了应用/元服务内的业务功能。意图框架能帮开发者将应用/元服务内的业务功能,智能分发到各系统入口,这个过程即智慧分发。其中系统入口包括:小艺对话、小艺搜索、小艺建议等。

系统入口、意图框架、鸿蒙生态的关系如下:

在这里插入图片描述
利用HarmonyOS的大模型、多维设备感知等AI能力,准确且及时地获取到用户显性、潜在意图,从而实现个性化、多模态、精准的智慧分发。

HarmonyOS、应用/元服务的交互中,意图运行方式分为意图调用和意图共享:

在这里插入图片描述

方式发起者定义
意图共享应用/元服务指应用/元服务主动向HarmonyOS共享意图,可用于HarmonyOS构建本地内容索引、学习用户的行为规律,以支持本地搜索和主动建议。意图共享包含动作和实体两个部分。动作支持完成时和将来时两种机制: - 完成时:用户意图已执行,共享的数据可用于本地搜索和系统建议。- 将来时:意图是基于用户行为预测的,共享的数据可用于本地搜索。 意图框架还支持开发者向系统进行辅助实体共享,例如位置信息等,用于场景推荐和其他智慧分发功能的增强。
意图调用HarmonyOS指HarmonyOS主动调用应用/元服务的功能。 用户在系统入口输入信息或者系统主动推荐后,系统可向应用/元服务发起意图调用,例如播放音乐、查看旅游攻略、搜索视频等。

2. 项目目标

本项目的目标是展示如何在HarmonyOS中利用意图框架服务实现智能分发,准确匹配用户需求。通过@kit.IntentsKit进行意图共享,使用@kit.AbilityKitInsightIntentExecutor实现意图调用,用户的需求将能够被智能解析并传递到相关服务或应用中。

具体来说,本示例包括两个主要部分:

  1. 意图共享:通过意图共享机制,将用户的需求从一个模块传递到其他模块,实现跨应用的需求匹配。
  2. 意图调用:在共享意图之后,通过意图调用机制,将数据回传至调用端,并根据需求执行相应操作。

本示例仅支持标准系统上运行,支持设备:华为手机、华为平板。

  • HarmonyOS系统:HarmonyOS NEXT Developer
  • Beta1及以上。 DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。
  • HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。

二、项目实现

1. 项目目录结构

本项目的目录结构如下所示:

entry/src/main/
| --- ets
|     | --- entryability
|     |     | --- EntryAbility.ets                                  // 共享界面Ability
|     |     | --- InsightIntentExecutorImpl.ets                     // 意图调用逻辑
|     | --- pages
|     |     | --- Index.ets                                         // 共享界面UI
|     | --- utils
|     |     | --- ...                                               // 工具类

主要功能分布如下:

  • EntryAbility.ets:负责展示意图共享界面。
  • InsightIntentExecutorImpl.ets:处理意图调用的逻辑。
  • Index.ets:显示共享界面的UI,包含获取和展示示范数据的功能。

2. 意图共享实现

意图共享是实现智能分发的基础。我们通过@kit.IntentsKit来共享数据,确保用户需求能够跨应用或模块传递。

  • 获取示范数据:用户点击获取insightIntent示例数据后,示范数据将展示在共享界面上方的输入框内。
@kit.IntentsKit.getInsightIntents().then((data) => {// 处理获取到的示范数据updateUI(data);
});
  • 共享数据:用户点击“分享意图”按钮后,数据将通过@kit.IntentsKit.shareIntent()共享,结果将展示在共享界面的下方结果栏内。
@kit.IntentsKit.shareIntent(intentData).then((result) => {// 显示共享结果updateResult(result);
});

3. 意图调用实现

意图调用功能允许在共享的意图处理后,返回调用端并执行相应操作。通过使用小艺建议的模板卡片,我们可以展示共享的意图,并通过点击卡片触发相应的跳转和操作。

  • 小艺建议展示模板卡片:我们使用音乐类模板卡片来展示共享意图。在点击卡片后,触发与共享界面跳转并执行意图调用逻辑。
@kit.AbilityKit.InsightIntentExecutor.execute(intent).then((result) => {// 处理执行结果,并展示在共享界面下方updateResult(result);
});
  • SID管理:项目中还实现了SID的获取和刷新功能,确保每次操作都能获取最新的会话标识。
@kit.AbilityKit.getSid().then((sid) => {updateSid(sid);
});@kit.AbilityKit.getSidRenew().then((newSid) => {updateSid(newSid);
});

4. 实现结果

  1. 意图共享界面展示:用户可以查看共享意图的数据,并通过“获取示范数据”和“分享意图”按钮进行交互,数据将在共享界面的输入框和结果栏中显示。

  2. 意图调用逻辑展示:点击小艺建议模板卡片后,意图将被调用并返回结果,展示在共享界面的结果栏中。用户可以通过点击“获取SID”或“刷新SID”来管理会话状态。


三、核心代码解析

接下来,我们详细解析**InsightIntentExecutorImpl.ets**中的核心代码,重点展示如何通过InsightIntentExecutor类实现意图的执行与分发。

1. 引入模块和定义常量

首先,引入所需的模块:

import { Logger } from '../utils/Logger';
import { insightIntent, InsightIntentExecutor } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import type { BusinessError } from '@kit.BasicServicesKit';
  • Logger:用于记录执行日志,帮助开发者调试和跟踪意图执行过程。
  • insightIntent, InsightIntentExecutorInsightIntentExecutor是基类,提供了意图执行的接口方法。insightIntent包含了定义意图及其执行结果的类型。
  • windowwindow.WindowStage用于管理UI窗口,允许我们在界面中展示意图的执行结果。
  • BusinessError:用于描述在意图执行过程中可能遇到的业务错误。

接着,我们定义常量:

private static readonly PLAY_MUSIC = 'PlayMusic';
private static readonly PLAY_MUSIC_LIST = 'PlayMusicList';

这两个常量分别代表两个不同的意图:播放单曲(PlayMusic)和播放音乐列表(PlayMusicList)。这些常量将用于后续的意图分发和执行。

2. 重写核心方法

下面,重写onExecuteInUIAbilityForegroundMode方法:

onExecuteInUIAbilityForegroundMode(name: string, param: Record<string, Object>, pageLoader: window.WindowStage):Promise<insightIntent.ExecuteResult> {Logger.info(TAG, `onExecuteInUIAbilityForegroundMode name: ${name}, param: ${JSON.stringify(param)}`);switch (name) {case InsightIntentExecutorImpl.PLAY_MUSIC:return this.playMusic(param, pageLoader);case InsightIntentExecutorImpl.PLAY_MUSIC_LIST:return this.playMusicList(param, pageLoader);default:break;}return Promise.resolve({code: -1,result: {message: 'unknown intent'}} as insightIntent.ExecuteResult)
}
  • onExecuteInUIAbilityForegroundMode:这是InsightIntentExecutor中的核心方法,负责根据意图名称(name)执行对应的操作,并返回执行结果。此方法首先记录日志,展示接收到的意图名称和参数。然后,根据意图名称分发处理逻辑。

  • 播放音乐:如果接收到的意图是PlayMusic,则调用playMusic方法,执行播放音乐的逻辑。

  • 播放音乐列表:如果接收到的意图是PlayMusicList,则调用playMusicList方法,执行播放音乐列表的逻辑。

  • 未知意图:如果接收到的意图未知,返回一个错误信息。

3. 播放音乐方法实现

playMusic方法实现

private playMusic(param: Record<string, Object>, pageLoader: window.WindowStage): Promise<insightIntent.ExecuteResult> {// 处理播放音乐的逻辑Logger.info(TAG, `Playing music with parameters: ${JSON.stringify(param)}`);// 假设这是一个简单的模拟逻辑,实际中可能调用外部音乐播放APIreturn Promise.resolve({code: 0,result: {message: 'Music is playing successfully!'}});
}
  • playMusic:此方法模拟播放音乐的操作。在实际应用中,您可以根据传入的参数(如歌曲名称、歌手等)调用外部API来实现播放。这里,我们简单地记录日志并返回成功的结果。

playMusicList方法实现:

private playMusicList(param: Record<string, Object>, pageLoader: window.WindowStage): Promise<insightIntent.ExecuteResult> {// 处理播放音乐列表的逻辑Logger.info(TAG, `Playing music list with parameters: ${JSON.stringify(param)}`);return Promise.resolve({code: 0,result: {message: 'Music list is playing successfully!'}});
}
  • playMusicList:与playMusic类似,但它是用于处理音乐列表播放的逻辑。在实际应用中,您可以将多个歌曲信息传递给该方法并调用相应的播放服务。

4. 错误处理

return Promise.resolve({code: -1,result: {message: 'unknown intent'}
} as insightIntent.ExecuteResult);

如果接收到一个未知的意图,该方法将返回一个错误信息,表示无法识别该意图。


四、效果预览

1. 意图共享

共享界面展示:

在这里插入图片描述
按获取insightIntents获取insightIntent示例数据,获取的示范数据将显示在共享界面上方输入框内。

在这里插入图片描述

按shareIntent进行数据共享,并在共享界面下方的结果栏内获取意图共享结果。

在这里插入图片描述

2. 意图调用

待共享的意图完成处理后,将会在小艺建议的卡片内展示共享的意图,点击展示的对应卡片,执行意图调用逻辑。

使用小艺建议模板卡片实现意图调用

小艺建议展示模板卡片,此项目内使用音乐类模板卡片。

在这里插入图片描述

点击模板卡片,按照意图注册配置内逻辑,执行对应跳转。此项目内跳转至共享界面,并在共享界面下方结果栏内展示意图调用回传参数

在这里插入图片描述

3. SID获取

点击getSid获取SID,并在结果栏内展示(优先获取缓存)。

在这里插入图片描述

点击getSidRenew强制获取新的SID,并在结果栏内展示。

在这里插入图片描述


五、总结

通过本项目,我们展示了如何利用HarmonyOS的意图框架服务(Intents Kit)实现智能分发功能,精准理解并响应用户需求。通过意图共享和调用机制,用户的需求得以在不同应用和模块之间流转,进而提供更加个性化、智能化的服务。这种基于AI和系统感知的智慧分发,极大提升了用户交互体验,并为开发者提供了更加灵活和高效的应用开发方式。

通过本示例,开发者可以学习到如何在实际项目中使用意图框架服务,并将其应用于自己的HarmonyOS应用中,打造更加智能、个性化的用户体验。

相关文章:

HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发

在智能设备的交互中&#xff0c;如何准确理解并及时响应用户需求&#xff0c;成为提升用户体验的关键。HarmonyOS Next 的意图框架服务&#xff08;Intents Kit&#xff09;为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例&#xff0c;展示如何使用意图框架服务…...

[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…...

【jenkins插件】

1) 2) 3) 4) 5) 6) 参考: 知识库/运维/Jenkins/01-安装/13-插件.md zfoo/java-developer-document - 码云 - 开源中国...

springboot472基于web网上村委会业务办理系统(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本网上村委会业务办理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数…...

七层网络笔记

首先&#xff0c;用户感知到的只是最上面一层应用层&#xff0c;自上而下每层都依赖于下一层&#xff0c;所以我们从最下一层开始切入&#xff0c;比较好理解 每层都运行特定的协议&#xff0c;越往上越靠近用户&#xff0c;越往下越靠近硬件 物理层由来&#xff1a;上面提到&a…...

PostgreSQL编译安装教程

下载安装 1.在家目录创建一个文件夹放下载安装包 mkdir softwarecd software 2.下载文件压缩包 wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz 3.解压 tar -xzvf postgresql-16.0.tar.gz 4.编译 在software/postgresql-16.0下 cd software…...

音视频学习(二十四):hls协议

基本原理 HLS协议通过将视频文件切分成多个小的媒体段&#xff08;通常是10秒左右的.ts文件&#xff09;&#xff0c;并通过HTTP传输给客户端。视频播放过程中&#xff0c;客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率&#xff0c;以便适应不同网络条…...

pytorch MoE(专家混合网络)的简单实现。

专家混合&#xff08;Mixture of Experts, MoE&#xff09;是一种深度学习模型架构&#xff0c;通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络&#xff08;即子模型&#xff09;&#xff0c;然后根据门控网络&#xff08;gating network&#xff09;的输出…...

代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II

93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…...

Scala项目(图书管理系统)

3、service BookService package org.app package serviceimport org.app.dao.{BookDAO, BorrowRecordDAO} import org.app.models.{BookModel, BorrowRecordModel}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookS…...

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。

网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是&#xff0c;则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时&#xff0c;Mihomo网卡会消失&#xff0c;所以提示找不到网卡…...

【macos java反编译工具Java Decompiler】

mac上能用的反编译工具 https://java-decompiler.github.io/...

VLAN数据格式

概念&#xff1a;VLAN叫做虚拟局域网&#xff0c;指在物理网络中根据用于、工作组、应用等进行逻辑划分的局域网&#xff0c;是一个广播域&#xff0c;与用户的物理位置没有关系。 作用&#xff1a;VLAN可以灵活的进行分段和组织&#xff0c;能够实现更好的安全性&#xff0c;…...

Error response from daemon: Get “https://registry-1.docker.io/v2/“ 问题解决

文章目录 一、参考资料二、修改nameserver三、修改daemon.json文件 一、参考资料 问题的根源在于系统每次都会自动修改DNS&#xff0c;所以需要永久修改 linux永久修改dns 二、修改nameserver sudo nano /etc/resolvconf/resolv.conf.d/head 没有该文件的话需要安装 sudo a…...

每天40分玩转Django:Django部署

Django部署 一、今日学习内容概述 学习模块重要程度主要内容生产环境配置⭐⭐⭐⭐⭐settings配置、环境变量WSGI服务器⭐⭐⭐⭐⭐Gunicorn配置、性能优化Nginx配置⭐⭐⭐⭐反向代理、静态文件安全设置⭐⭐⭐⭐⭐SSL证书、安全选项 二、生产环境配置 2.1 项目结构调整 mypr…...

学习threejs,scene.overrideMaterial全局材质效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.2 ☘️THREE.Scene 场景1.2 ☘️…...

新版Android Studio 2024.1.2版本,如何通过无线wifi连接手机实现交互

1、首先&#xff0c;先确定手机是否启动了开发者选项 在我的设备 -> 全部参数 -> MIUI版本点击6下 &#xff08;有的手机是 关于手机 -> 查看手机版本 &#xff09; 2、在设置中搜索 开启开发者选项 3、进入开发者选项后&#xff0c;在 调试 中选择 无线调试并选择…...

PTA 时间几何

作者 Happyer 单位 湖北文理学院 乘火车或飞机常有由始发时间历经时间计算终到时间的事儿。我们通过三个 函数来完成&#xff0c;当然&#xff0c;为了存储几点几分这个时间&#xff0c;我们专门定义了一个结构体Time_gxx,你要完成的是写二个函数&#xff1a;1&#xff09;st…...

事务、管道

目录 事务 相关命令 悲观锁 乐观锁 管道 实例 Pipeline与原生批量命令对比 Pipeline与事物对比 使用Pipeline注意事项 事务 相关命令 命令描述discard取消事务&#xff0c;放弃执行事务块内的所有命令exec执行所有事务块内的事务&#xff08;所有命令依次执行&#x…...

深入了解蓝牙Profile类型与设备的对应关系

在现代技术中,蓝牙作为一种无线通信技术,广泛应用于各种设备之间的短距离通信。不同的设备在连接时使用不同的蓝牙Profile(配置文件),每种Profile都为特定的设备功能提供支持,例如音频流传输、语音通话、文件传输等。在本文中,我们将详细介绍蓝牙Profile的常见类型及其对…...

net_device结构

net_device是Linux内核中用于表示网络设备的数据结构,它存储了特定网络设备的所有信息,无论是真实设备(如Ethernet)还是虚拟设备(如Bonding或VLAN)。以下是对net_device的详细解析: 一、定义与位置 net_device数据结构定义在Linux内核的include/linux/netdevice.h文件中…...

DuetWebControl 开源项目常见问题解决方案

DuetWebControl 开源项目常见问题解决方案 DuetWebControl A completely new web interface for the Duet electronics [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/du/DuetWebControl 一、项目基础介绍 DuetWebControl 是一个为 RepRapFirmware 设计的完全响…...

c# 不同数据类型转换

namespace Systempublic static class ConvertExtension {public static byte[] ToBinaryByteArray(this byte[] bytes){// 每个字节有 8 位&#xff0c;所以总位数为 bytes.Length * 8byte[] binaryArray new byte[bytes.Length * 8];int index 0;// 遍历每个字节foreach (b…...

2025.01.15python商业数据分析top2

一、 导入项目 导入项目、准备项目数据 import pandas as pd# 文件路径为python文件位置下的相对路径dwxpd.read_excel("电蚊香套装市场近三年交易额.xlsx") fmfzpd.read_excel("防霉防蛀片市场近三年交易额.xlsx") msmcpd.read_excel("灭鼠杀虫剂市…...

软件信息化平台项目投标技术方案中如何进行项目实施方案以及安全质量方案培训售后方案应急预案的编写?

在软件平台投标技术方案中,项目实施方案、质量管理、安全管理、培训方案、售后服务方案和应急预案等章节至关重要,它们分别从不同角度确保项目的顺利实施、高质量交付、安全稳定运行、用户有效使用、持续服务保障以及应对突发情况的能力。各章节编制要点相互关联、协同作用,…...

目标检测-R-CNN

R-CNN在2014年被提出&#xff0c;算法流程可以概括如下&#xff1a; 候选区域生成&#xff1a;利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征&#xff1a;对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…...

计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

panddleocr-文本检测+文本方向分类+文本识别整体流程

panddleocr-文本检测文本方向分类文本识别整体流程 通过文本检测–>文本方向分类–>文本识别&#xff0c;即可识别出0~360度的旋转文本。 文本检测的最小外接矩形框根据长宽可以看到90度的角度&#xff0c;而再加入文本方向分类就能扩展到180度的角度。...

【物联网技术与应用】实验9:红外遥控实验

实验9 红外遥控实验 【实验介绍】 红外接线头的主要功能为IC化的一种受光元件&#xff0c;其内部是将光电二极管&#xff08;俗称接收管&#xff09;和集成IC共同组合封装而成&#xff0c;其IC设计主要以类比式控制&#xff0c;一般主要接受38KHz的频率的红外线&#xff0c;而…...

青少年编程与数学 02-004 Go语言Web编程 18课题、日志记录

青少年编程与数学 02-004 Go语言Web编程 18课题、日志记录 一、日志记录&#xff08;一&#xff09;目的&#xff08;二&#xff09;内容类型&#xff08;三&#xff09;日志记录的格式 二、Go Web 日志记录1. 使用标准库 log 包2. 使用 logrus3. 在 Gin 框架中集成 logrus4. 使…...

【数据结构练习题】栈与队列

栈与队列 选择题括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈设计循环队列面试题1. 用队列实现栈。[OJ链接](https://leetcode.cn/problems/implement-stack-using-queues/solutions/)2. 用栈实现队列。[OJ链接](https://leetcode.cn/problems/implement-queue-using-stack…...

ctfshow-web入门-文件包含(web82-web86)条件竞争实现session会话文件包含

目录 1、web82 2、web83 3、web84 4、web85 5、web86 1、web82 新增过滤点 . &#xff0c;查看提示&#xff1a;利用 session 对话进行文件包含&#xff0c;通过条件竞争实现。 条件竞争这个知识点在文件上传、不死马利用与查杀这些里面也会涉及&#xff0c;如果大家不熟…...

前端学习DAY26(华为平板页面)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>平板图片</title><style> .box{text-al…...

【Linux 网络 (三)】:https协议加密解密分析 —— 秘钥协商

网络 一、https协议二 、https相关概念1&#xff09;加密、解密2&#xff09; 常见加密方式&#xff08;对称加密和非对称加密&#xff09;对称加密非对称加密 3&#xff09;数据摘要 && 数据指纹4&#xff09;数字签名 三、HTTPS 的⼯作过程探究1&#xff09;只使⽤对…...

c 保存 csv格式的文件

在C语言中保存数据为CSV&#xff08;逗号分隔值&#xff09;格式的文件&#xff0c;你可以使用标准I/O库函数&#xff0c;如fprintf&#xff0c;来将数据写入文件&#xff0c;并确保每个字段之间用逗号分隔。以下是一个简单的示例&#xff0c;说明如何在C语言中创建一个CSV文件…...

数据结构---------二叉树前序遍历中序遍历后序遍历

以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例&#xff0c;包括递归和非递归&#xff08;借助栈实现&#xff09;两种方式&#xff1a; 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…...

【JavaEE】网络(6)

一、http相关概念 1.1 什么是http协议 http协议&#xff08;超文本传输协议&#xff09;&#xff0c;是应用层的一个协议 1.2 应用场景 网页与服务器之间交互手机app与服务器之间交互 http协议是典型的一问一答模式的协议&#xff0c;即请求和响应是一一对应的 二、http协议…...

什么是单例模式

单例模式就是 只有一个 不能存在多个 饿汉式单例模式 实现方式&#xff1a; 这种模式在程序启动或单例类被加载时就创建好实例。例如&#xff0c;以下是一个简单的 C 实现的饿汉式单例类&#xff0c;用于记录日志&#xff08;假设这个日志类在整个程序中有且仅有一个实例&#…...

protobuf实用教程

引言 protobuf安装 protobuf数据类型 基本数据类型 复合类型 Map类型 protobuf使用教程 编写.proto文件 编译 使用 序列化与反序列化 结语 引言 protobuf 是 google 的一种数据交换的格式&#xff0c;它独立于平台语言。 google 提供了 protobuf 多种语言的实现&am…...

人工智能ACA(五)--深度学习基础

一、深度学习概述 1. 深度学习概念 1-1. 深度学习基本概念 深度学习是机器学习的一个分支基于人工神经网络&#xff08;模仿人脑结构&#xff09;通过多层网络自动学习特征能够处理复杂的模式识别问题 1-2. 深度学习的优点与缺点 优点 强大的特征学习能力可以处理复杂问题…...

用python ollama qwen2.5 开发一个AI修仙游戏

用 Python Ollama (Qwen2.5) 开发一个 AI 修仙游戏 简介 本文将介绍如何使用 Python 和 Ollama (Qwen2.5 模型) 开发一个文字版修仙游戏。这个游戏具有以下特点&#xff1a; 完整的修仙世界观和成长体系基于 AI 生成的动态剧情和事件丰富的物品系统(功法、丹药、灵宝等)社交…...

tts语音合成相关开源项目试用对比

chatTTS 如下图所示&#xff0c;在不添加Sample Audio和Text的时候可以正常完成文本转语音&#xff0c;可以自定义添加语气词&#xff0c;笑声和停顿等。 无法实现声音克隆&#xff0c;即模仿某人的音色生成语音。 试用了chatTTS官网推荐的https://voicv.com/voice-cloning进行…...

基于JAVA_JSP电子书下载系统的设计与实现【源码+文档+部署讲解】

目 录 第1章 绪论 课题的研究背景、内容和意义 第2章 主要技术概述 2.1 B/S结构 2.2 JSP技术 2.2.1 JSP技术的强势 2.2.2 JSP技术的弱势 2.3 SQL Server 2000数据库 2.4 JDBC数据库连接 2.4.1 JDBC接口 2.4.2 JDBC的驱动程序 2.5 TOMCAT应用服务器 第3章 需求分…...

外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列

在《SQL 改写系列&#xff1a;外连接转内连接的常见场景与错误》一文中&#xff0c;我们了解到谓词条件可以过滤掉连接结果中的 null 情形的&#xff0c;将外连接转化为内连接的做法是可行的&#xff0c;正如图1中路径(a)所示。此时&#xff0c;敏锐的你或许会进一步思考&#…...

35道面向初中级前端的基础面试题

新鲜出炉的8月前端面试题 跨域资源共享 CORS 阮一峰 3. JSONP 是什么&#xff1f; 这是我认为写得比较通俗易懂的一篇文章jsonp原理详解——终于搞清楚jsonp是啥了。 4. 事件绑定的方式 嵌入dom 按钮 直接绑定 btn.onclick function(){} 事件监听 btn.addEventList…...

自动驾驶控制算法-横向误差微分方程LQR前馈控制

本文是学习自动驾驶控制算法第六讲 前馈控制与航向误差以及前两节的学习笔记。 1 横向误差微分方程 以规划的轨迹作为自然坐标系&#xff0c;计算自车在轨迹上的投影点&#xff0c;进而计算误差&#xff1a; 如图所示&#xff0c;横向误差为 d d d&#xff0c;航向误差为 θ…...

灭屏情况下,飞行模式+静音模式+插耳,播放音乐,电流异常

1. 功耗现象 灭屏情况下&#xff0c;飞行模式静音模式插耳&#xff0c;播放音乐&#xff0c;电流异常 1.1测试数据 飞行模式静音模式插耳机 原生音乐播放器 DriverOnly 32.5mA User版本 45mA 1.2 电流波形现象 上述看怀疑 CPU 未进入 Deep idle 导致&#xff1f; 2. …...

jsp | servlet | spring forEach读取不了对象List

导致这个问题的原因有很多的&#xff0c;这里讲到的只是原因之一 原因 taglib不认识forEach 解决办法 添加<% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c" %> &#xff08;我忘写这个东西了哈哈哈&#xff09;...

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时&#xff0c;一直在探索性能优化的最佳实践。随着需求的不断迭代&#xff0c;项目中的性能问题难免日积月累&#xff0c;逐渐暴露出来影响用户体验。适逢双十一大促&#xff0c;我们趁着这个机会统一进行了Taro性能优化实践&#xf…...

数据结构:栈(顺序栈)

目录 1.栈的定义 2.栈的结构 3.栈的接口 3.1初始化 3.2栈的销毁 3.3压栈 3.4判断栈是否为空 3.5出栈 3.6得到栈顶元素 3.7栈的大小 1.栈的定义 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端…...