鸿蒙NEXT开发-元服务和服务卡片的开发
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下
如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识
目录
1. 元服务基本概念
1.1 基本介绍
1.2 元服务与传统应用的对比
1.3 元服务程序包基础知识
1.4 元服务入口
2. 创建元服务
3. 构建元服务页面
3.1 使用文本组件在页面展示Hello World
3.2 在页面上添加一个按钮
3.3 在编辑窗口右上角的侧边工具栏,单击Previewer,打开预览器。
3.4 构建元服务的第二个页面
3.5 实现页面间的跳转
4. 服务卡片的开发
4.1 新建卡片
4.2 选择动态卡片
4.3 预览卡片
4.4 实现点击卡片跳转到首页,从而进入元服务。在卡片中增加如下示例代码,实现点击卡片空白处即可进入元服务。
4.5 真机测试
1. 元服务基本概念
1.1 基本介绍
元服务(原名为原子化服务)是HarmonyOS提供的一种面向未来的服务提供方式,是有独立入口、免安装、可为用户提供一个或多个便捷服务的新型应用程序形态。
以线上购物为例:
- 传统购物应用:需要先安装应用,打开应用查找商品,加入购物车,然后完成支付。
- 调整为包含“商品浏览”、“购物车”、“支付”等多个服务的元服务:无需安装,通过丰富入口直达服务页面。例如:将心仪商品页添加桌面,实时掌握商品价格变动。等到秒杀时间点,直达购物车进行结算。
元服务基于HarmonyOS API开发,支持运行在1+8+N设备上,供用户在合适的场景、合适的设备上便捷使用。元服务相对于传统方式的需要安装的应用形态更加轻量,同时提供更丰富的入口、更精准的分发。
注意
从HarmonyOS NEXT Developer Preview1(对应API 11)版本开始:
- HarmonyOS元服务只能采用“元服务API集”进行开发,且只支持Stage模型、只支持ArkTS接口;开发者在DevEco Studio中选择开发元服务时,工具将自动过滤“元服务API集”。
- 使用配套的HarmonyOS SDK开发的元服务,只能运行在系统软件版本为HarmonyOS NEXT Developer Preview1及以上版本的设备上。
元服务类似微信小程序,无需安装,从目前编辑器更新的特性来说,元服务和应用的区别就是一个不需要安装,另外一个需要安装,其他基本一致
1.2 元服务与传统应用的对比

开发者基于经营目标、效率、成本、收益等因素,自主决定开发传统应用或元服务,也可以同时提供。
1.3 元服务程序包基础知识
元服务程序包基础知识
- 免安装-免安装是指无需用户通过应用市场显式安装,用户点击元服务后,由系统程序框架后台安装后即可使用。
- 分包-HarmonyOS每个应用程序包(.app)可以包含多个包文件(以.hap为后缀的HAP或以.hsp为后缀的HSP)。元服务在此基础上,进一步限制每个HAP或HSP(含其依赖的所有共享包)的大小,以实现快速启动体验,元服务的这种多包开发方案称为“分包”。
- 预加载-开发者可以通过配置预加载,由系统自动下载和安装可能需要的分包模块,从而提升进入后续模块的速度。
- 老化-系统会按照一定策略清理不活跃的元服务,释放空间,这个过程称为老化。
官方文档地址:文档中心
1.4 元服务入口
1、打开负一屏搜索页,输入关键字,搜索获取所需的元服务。


2、打开华为应用市场,点击“应用”页签,进入“元服务”专区发现并使用元服务。

2. 创建元服务
1、若首次打开DevEco Studio,请选择Create Project开始创建一个新工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Atomic Service元服务开发,选择“Empty Ability”模板,单击Next进行下一步配置。
当前元服务支持的模板类型:
- Empty Ability:用于Phone、Tablet设备的模板,展示基础的Hello World功能。
- [CloudDev]Empty Ability:端云一体化开发通用模板。更多信息请参见端云一体化开发。
- Embeddable Ability:用于开发支持被其他应用嵌入式运行的元服务的工程模板。

说明
元服务不支持native开发方式,无法选择native工程模板开发元服务。
2、点击Sign In登录华为开发者账号进行开发,或选择访客模式体验。访客模式无需登录华为账号。
说明
访客模式仅用于体验元服务开发功能。如需将访客模式下开发的元服务工程或历史元服务工程在真机上运行并安装,需在AppScope > app.json5文件中补充当前开发者账号下已在AppGallery注册且真实存在的包名。

3、在弹出的网页界面中点击允许,完成访问账号授权。

4、选择已登录账号下的APP ID。如您未在AppGallery中注册元服务应用,点击Register APP ID注册新的APP ID。


5、完成注册后,回到DevEco Studio界面,点击Refresh,刷新当前APP ID列表,选择新生成的APP ID,点击Next。

6、进入配置工程界面,填写Project name,其他参数保持默认设置即可。

7、单击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。

- AppScope > app.json5:元服务的全局配置信息。
- entry:HarmonyOS工程模块,编译构建生成一个HAP。
-
- src > main > ets:用于存放ArkTS源码。
- src > main > ets > entryability:元服务的入口。
- src > main > ets > pages:元服务包含的页面。
- src > main > resources:用于存放元服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问。
- src > main > module.json5:模块配置文件。主要包含HAP的配置信息、元服务在具体设备上的配置信息以及元服务的全局配置信息。具体的配置文件说明,详见module.json5。
- build-profile.json5:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。
- hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
- oh_modules:用于存放三方库依赖信息。
- build-profile.json5:元服务级配置信息,包括签名signingConfigs、产品配置products等。
- hvigorfile.ts:元服务级编译构建任务脚本。
有这个属性就是元服务,没有就是应用

用户可以修改元服务的图标和名称


3. 构建元服务页面
3.1 使用文本组件在页面展示Hello World
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';@Entry@Componentstruct Index {@State message: string = 'Hello World';build() {Column() {Column(){Text(this.message).fontSize(50)}.width('100%').height('100%').justifyContent(FlexAlign.Center)}.height('100%').width('100%')}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();}/*** Sample code for using HUAWEI ID to log in to atomic service.* According to the Atomic Service Review Guide, when a atomic service has an account system,* the option to log in with a HUAWEI ID must be provided.* The following presets the atomic service to use the HUAWEI ID silent login function.* To enable the atomic service to log in successfully using the HUAWEI ID, please refer* to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.*/private loginWithHuaweiID() {// Create a login request and set parameterslet loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();// Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI IDloginRequest.forceLogin = false;// Execute login requestlet controller = new authentication.AuthenticationController();controller.executeRequest(loginRequest).then((data) => {let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;// Send authCode to the backend in exchange for unionID, session}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {// HUAWEI ID is not logged in, it is recommended to jump to the login guide page}});}}
3.2 在页面上添加一个按钮
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';@Entry@Componentstruct Index {@State message: string = 'Hello World';build() {Column() {Column() {Text(this.message).fontSize(50)// 添加按钮Button('点我去下一页').width('50%').height('50')}.width('100%').height('100%').justifyContent(FlexAlign.Center)}.height('100%').width('100%')}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();}/*** Sample code for using HUAWEI ID to log in to atomic service.* According to the Atomic Service Review Guide, when a atomic service has an account system,* the option to log in with a HUAWEI ID must be provided.* The following presets the atomic service to use the HUAWEI ID silent login function.* To enable the atomic service to log in successfully using the HUAWEI ID, please refer* to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.*/private loginWithHuaweiID() {// Create a login request and set parameterslet loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();// Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI IDloginRequest.forceLogin = false;// Execute login requestlet controller = new authentication.AuthenticationController();controller.executeRequest(loginRequest).then((data) => {let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;// Send authCode to the backend in exchange for unionID, session}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {// HUAWEI ID is not logged in, it is recommended to jump to the login guide page}});}}
3.3 在编辑窗口右上角的侧边工具栏,单击Previewer,打开预览器。

3.4 构建元服务的第二个页面
@Entry@Componentstruct Second {@State message: string = 'Hello Second';build() {RelativeContainer() {Text(this.message).id('SecondHelloWorld').fontSize(50).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }})}.height('100%').width('100%')}}
3.5 实现页面间的跳转
页面间的导航可以通过页面路由router来实现。页面路由router根据页面url找到目标页面,从而实现跳转。使用页面路由请导入router模块。
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { router } from '@kit.ArkUI';@Entry@Componentstruct Index {@State message: string = 'Hello World';build() {Column() {Column() {Text(this.message).fontSize(50)// 添加按钮Button('点我去下一页').width('50%').height('50').onClick(()=>{router.pushUrl({url:'pages/Second'})})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}.height('100%').width('100%')}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();}/*** Sample code for using HUAWEI ID to log in to atomic service.* According to the Atomic Service Review Guide, when a atomic service has an account system,* the option to log in with a HUAWEI ID must be provided.* The following presets the atomic service to use the HUAWEI ID silent login function.* To enable the atomic service to log in successfully using the HUAWEI ID, please refer* to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.*/private loginWithHuaweiID() {// Create a login request and set parameterslet loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();// Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI IDloginRequest.forceLogin = false;// Execute login requestlet controller = new authentication.AuthenticationController();controller.executeRequest(loginRequest).then((data) => {let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;// Send authCode to the backend in exchange for unionID, session}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {// HUAWEI ID is not logged in, it is recommended to jump to the login guide page}});}}
import { router } from '@kit.ArkUI';@Entry@Componentstruct Second {@State message: string = 'Hello Second';build() {Column() {Text(this.message).id('SecondHelloWorld').fontSize(50).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }})Button('返回第一页').width('50%').height('50').onClick(()=>{router.back()})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}}
4. 服务卡片的开发
卡片用来显示或者提示一些基本信息或者进行一些基本操作。注意不能做重逻辑,所有重要逻辑全部交给应用
因为元服务不提供桌面应用图标,我们可以通过用户手动的方式在桌面上添加一张卡片,通过点击卡片来唤起元服务。
4.1 新建卡片
在元服务中新建一个卡片
在“Project”窗口,在“entry”模块目录右键选择“New > Service Widget > Dynamic Widget”,进入卡片模板选择界面,如下图所示:

4.2 选择动态卡片


- Service widget name:卡片的名称,在同一个应用/服务中,卡片名称不能重复,且只能包含大小写字母、数字和下划线。
- Display name:卡片预览面板上显示的卡片名称。仅API 11 及以上Stage工程支持配置该字段。
- Description:卡片的描述信息。
- Language:界面开发语言,可选择创建ArkTS/JS卡片。说明
元服务只支持ArkTS卡片,不支持JS卡片。
- Support dimension:选择卡片的规格。部分卡片支持同时设置多种规格。首次创建服务卡片时,将默认生成一个EntryCard目录,用于存放卡片快照。
- Default dimension:在下拉框中可选择默认的卡片。
- Ability name:选择一个挂靠服务卡片的Form Ability,或者创建一个新的Form Ability。
- Module name:卡片所属的模块。
4.3 预览卡片

卡片特点:
- 卡片可以承载少量的内容显示和交互
- 卡片可以充当元服务的入口,点击卡片可以唤起元服务
4.4 实现点击卡片跳转到首页,从而进入元服务。在卡片中增加如下示例代码,实现点击卡片空白处即可进入元服务。
@Entry@Componentstruct WidgetCard {@State x: number = 1@State y: number = 1build() {Column() {Button('Click to enlarge').onClick(() => {this.x = 1.1this.y = 1.1}).scale({ x: this.x, y: this.y }).animation({curve: Curve.EaseOut,playMode: PlayMode.AlternateReverse,duration: 200,onFinish: () => {this.x = 1this.y = 1}})}.padding('10vp').width('100%').height('100%').justifyContent(FlexAlign.Center).onClick(() => {postCardAction(this, {"action": 'router',"abilityName": 'EntryAbility',"params": {"message": 'router test'}});})}}


4.5 真机测试
将元服务的卡片添加到桌面,以便访问元服务。
-
- 在桌面上双指捏合,进入桌面的编辑模式。
- 点击底部的“服务卡片”。
- 在卡片添加页面,选择要添加到桌面的卡片,点击“添加到桌面”,完成卡片添加。
完成卡片添加后,可以在真机上测试元服务卡片的动效,也可点击卡片空白区域测试拉起元服务页面的功能。
官方文档地址:文档中心
相关文章:
鸿蒙NEXT开发-元服务和服务卡片的开发
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 目录 1. 元服务基本概念 1.1 基本介绍 1.2 元…...
【Spark+Hive】基于Spark大数据技术小红书舆情分析可视化预测系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
目录 一、项目背景 二、项目目标 三、算法介绍 四、开发技术介绍 五、项目创新点 六、项目展示 七、权威教学视频 源码获取方式在文章末尾 一、项目背景 在数字经济蓬勃发展的当下,社交电商平台小红书凭借其"内容电商"的独特模式,已…...
IO基础知识和练习
一、思维导图 二、练习 1.使用标准IO函数,实现文件的拷贝 #include <head.h> int main(int argc, const char *argv[]) {FILE *pfopen("./one.txt","r");FILE *fpfopen("./two.txt","r");if(pNULL)PRINT_ERROR(&qu…...
gradle libs.versions.toml文件
1.libs.versions.toml介绍2.创建libs.versions.toml文件3.libraries5.versions6.plugins7.bundles 1.libs.versions.toml介绍 下图是官网介绍 意思就是说项目所有插件和库的依赖版本都统一在这个文件配置。 文件中有以下四个部分 versions, 申明要使用的插件和库的版本号的…...
影刀RPA开发拓展--SQL常用语句全攻略
前言 SQL(结构化查询语言)是数据库管理和操作的核心工具,无论是初学者还是经验丰富的数据库管理员,掌握常用的 SQL 语句对于高效管理和查询数据都至关重要。本文将系统性地介绍最常用的 SQL 语句,并为每个语句提供详细…...
2024_BUAA数据结构上机题解分享
📎 GitHub/Gitee同步开源 | 🚀 点击访问Gitee仓库 点击访问GitHub仓库 (若访问缓慢可尝试切换仓库镜像源) 这份代码库不是捷径,而是北航数据结构的生存地图。当你被困在递归迷雾中时,愿这些经过OJ系统千锤百…...
什么是分布式和微服务?
一、分布式系统 定义: 分布式系统是由多个独立的计算节点(或称为服务器、计算机)通过网络相互连接,共同协作以完成特定任务的系统。这些节点可以运行在不同的物理服务器或虚拟机上。 核心思想: 提高系统的可扩展性&am…...
2025 Lakehouse 趋势全景展望:从技术演进到商业重构
1. 为什么湖仓正在成为企业数据架构的必选项? 越来越多的企业正在通过实时数据处理能力构建核心竞争力——用户期待 APP 精准捕捉需求并实时响应,企业员工追求业务系统的秒级反馈,这些场景背后是千亿级数据资产的敏捷调度。 据 IDC 预测&am…...
一、NRF2401无线通信模块使用记录
一、电路引脚图 1、引脚说明: 2、引脚标号: 找到1号引脚,与原理图对号入座。 3、cubemx初始化配置: 5、驱动文件 配置spi,并构建发送与接收函数接口 .h #define TX_ADR_WIDTH 5 //发射地址宽度 #define TX_PLO…...
NVIDIA GPU 架构详解:Pascal、Volta、Turing、Ampere、Ada、Hopper、Blackwell
目录 1. Pascal(帕斯卡)架构(2016)关键技术性能特性代表产品应用场景 2. Volta(伏特)架构(2017)关键技术性能特性代表产品应用场景 3.Turing(图灵)架构&#…...
初阶数据结构(C语言实现)——3顺序表和链表(2)
2.3 数组相关面试题 原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)。OJ链接 力扣OJ链接-移除元素删除排序数组中的重复项。力扣OJ链接-删除有序数组中的重复项合并两个有序数组。力扣OJ链接-合并两个有序数组 2.3.1 移除元素 1…...
DeepSeek R1模型性能瓶颈分析与解决方案
摘要 研究发现,DeepSeek R1模型在处理复杂问题时可能遭遇性能瓶颈。当模型过度思考时,其性能会下降。通过减少不必要的思考过程,计算成本可降低43%。研究团队分析了4018条轨迹数据,并创建了一个开源数据集,以推动智能体…...
IP-----BGP协议
7.BGP协议 1.BGP的所属分类 2.BGP的特性 3.BGP的数据包 4.BGP的6种状态机 5.BGP的工作过程 6.BGP的路由黑洞 1.BGP路由黑洞 2.解决方法 7.BGP的防环 1.EBGP水平分割 2.IBGP水平分割 1.解决IBGP环路的规则 2.解决IBGP水平分割问题 3.作用 8.BGP的基础配置 1.查看…...
【String】917. 仅仅反转字母
917. 仅仅反转字母 - 力扣(LeetCode) 使用双指针,一个指针指向s的开始,一个指向s的末尾,同时遍历即可。...
python3使用selenium打开火狐并全屏
序言 本来桌面端全屏这种东西现在用electron或者tauri来做软件的全屏,但是奈何今天拿到了一块早些年的nx板子,arm架构的,系统有点老,装node只能到16版本,装了半天终于搞好了,发现这个系统没法隐藏系统的顶…...
探秘基带算法:从原理到5G时代的通信变革【二】Viterbi解码
文章目录 二、关键算法原理剖析2.1 Viterbi 解码2.1.1 卷积码与网格图基础**卷积码****网格图****生成多项式****理想情况下解码过程** 2.1.2 Viterbi 算法核心思想2.1.3 路径度量与状态转移机制2.1.4 算法流程与关键步骤详解2.1.5 译码算法举例与复杂度分析2.1.6 算法代码示例…...
Spring Bean 作用域设置为prototype在并发场景下是否是线程安全的
在并发场景下,将 Spring Bean 作用域设置为 prototype 通常能在一定程度上保证线程安全,但这并不意味着绝对的线程安全 1. prototype 作用域的特点 在 Spring 中,Bean 的作用域定义了 Bean 的生命周期和可见性。prototype 作用域表示每次从…...
金融项目实战
测试流程 测试流程 功能测试流程 功能测试流程 需求评审制定测试计划编写测试用例和评审用例执行缺陷管理测试报告 接口测试流程 接口测试流程 需求评审制定测试计划分析api文档编写测试用例搭建测试环境编写脚本执行脚本缺陷管理测试报告 测试步骤 测试步骤 需求评审 需求评…...
mybatis热点面试题第五弹
1. MyBatis与Hibernate的区别 答案: MyBatis: 不完全是一个ORM框架,需要手动编写SQL语句,灵活性高,适合对数据库操作有高性能要求的场景。缺点是无法做到数据库无关性,如果需要支持多种数据库,…...
c++头文件和命名空间
在 C 中,头文件和命名空间是两个重要的概念,它们分别用于代码组织和作用域管理。 一、头文件(Header Files) 1. 作用 声明接口:存放函数、类、变量的声明(而非定义)。代码复用:通…...
命令行参数和环境变量 ─── linux第13课
目录 命令行参数 命令行参数列表: 如何实现命令行参数传递到此进程 环境变量 基本概念 常见环境变量 查看环境变量方法 编辑 环境变量如何写入 总结: 测试PATH 命令行参数 同一个程序,可以根据命令行参数的不同,表现不同功能 比如:指令中的选项的实现. ls -al…...
基于 openEuler 22.09 的 OpenStack Yoga 部署
openEuler 虚拟化环境部署 使用 VMWare Workstation 创建三台 2 CPU、8G内存、100 GB硬盘 的虚拟机 主机 IP 作用 Controller 192.168.184.110 控制节点 Compute 192.168.184.111 计算节点 Storage 192.168.184.112 存储节 一 基础配置 1.1 配置 yum 源 由于 op…...
【Linux实践系列】:用c语言实现一个shell外壳程序
🔥本文专栏:Linux Linux实践项目 🌸博主主页:努力努力再努力wz 那么今天我们就要进入Linux的实践环节,那么我们之前学习了进程控制相关的几个知识点,比如进程的终止以及进程的等待和进程的替换,…...
通俗易懂的分类算法之K近邻详解
通俗易懂的分类算法之K近邻详解 用最通俗的语言和例子,来彻底理解 K近邻(K-Nearest Neighbors,简称 KNN) 这个分类算法。不用担心复杂的数学公式,我会用生活中的例子来解释,保证你一听就懂! 1.…...
NO.19十六届蓝桥杯模拟赛第三期上
1 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? 答:23 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false)…...
基于 Rust 与 GBT32960 规范的编解码层
根据架构设计,实现编解码层的代码设计 Cargo.toml 加入二进制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二进制序列化支持 bytes-utils "0.1" # 添加字节处理工具 开始编码 错误处理(error.rs&#x…...
conda安装及超详细避坑实战
1. Anaconda介绍。 Anaconda是一站式数据科学与机器学习平台,专为开发者、数据分析师设计,并带有python中超过180个科学包及其依赖项。通过 Anaconda,您可以轻松管理数据环境、安装依赖包,快速启动数据分析、机器学习项目。 Anaconda集成了…...
LM studio 加载ollama的模型
1.LM 下载: https://lmstudio.ai/ 2.ollama下载: https://ollama.com/download 3.打开ollama,下载deepseek-r1。 本机设备资源有限,选择7B的,执行ollama run deepseek-r1:7b 4.windows chocolatey下载: P…...
【图论】判断图中有环的两种方法及实现
判断图中有环的两种方法及实现 在图论中,检测有向图是否存在环是常见问题。本文将介绍两种主流方法:DFS三色标记法和拓扑排序(Kahn算法),并提供对应的C代码实现。 方法一:DFS三色标记法 核心思想 通过深…...
深入探索像ChatGPT这样的大语言模型-02-POST training supervised finetuning
参考 【必看珍藏】2月6日,安德烈卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy fineweb知乎翻译介绍 fineweb-v1原始连接 fineweb中文翻译版本 Chinese Fineweb Edu数据集 查看网络的内部结果,可以参…...
