自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 【一起来学AI大模型】模型上下文协议(MCP)详解:背景、架构与应用

(方便客户端识别和管理多个服务)、

2025-07-01 15:08:35 439

原创 【一起来学AI大模型】maven配置阿里云镜像源

配置阿里云Maven镜像源步骤:修改settings.xml文件,在mirrors标签中添加阿里云镜像配置(id为alimaven,url为https://maven.aliyun.com/repository/public),保存后即可使用阿里云镜像加速依赖库下载。

2025-07-01 14:00:33 27

原创 【一起来学AI大模型】在vscode中调用Deepseek进行AI辅助编程

摘要:本文介绍如何在VSCode中使用开源插件Continue配置Deepseek V3大模型的API接口,实现AI编程辅助功能。首先安装Continue插件,然后在Deepseek开放平台创建API密钥,修改Continue配置文件添加密钥。配置完成后即可使用对话问答、代码智能补全(通过Ctrl+I快捷键生成完整代码)等功能。Deepseek API接口性价比高,推理能力强,能有效提升编程效率。

2025-06-30 15:55:26 393

原创 【一起来学AI大模型】DeepSeek模型MOE结构代码详解

本文详细解析了MOE(Mixture of Experts)结构的工作原理及其实现代码。MOE通过将传统Transformer中的线性层替换为多个并行专家层,并引入路由机制选择部分专家进行计算,既扩展了模型容量又降低了计算成本。文章以代码实现为例,展示了专家选择、加权计算的过程,并解释了辅助损失函数(专家利用率均衡和样本分配均衡)的设计原理。通过具体数值示例,演示了路由网络如何为每个token分配专家,以及如何通过index_add_操作汇总计算结果。最后还分析了训练过程中平衡专家负载的两种损失机制,确保模

2025-06-30 14:51:41 651

原创 鸿蒙OpenHarmony【Sendable对象冻结】 ArkTS并发线程间通信

Sendable对象支持冻结操作,冻结后的对象变成只读对象,不能增删改属性,因此在多个并发实例间访问均不需要加锁,可以通过调用[Object.freeze]接口冻结对象。

2025-06-29 16:45:03 252

原创 鸿蒙OpenHarmony【共享模块】 ArkTS并发线程间通信

共享模块摘要 共享模块是进程内单例模块,通过"use shared"指令标记。其特点包括: 进程全局唯一,不同线程共享同一实例 需与"use strict"一起写在文件顶部 仅支持ets文件,导出对象必须可共享 禁止直接导出模块和副作用导入 使用场景: 实现进程级单例模式 线程间共享数据 导出Sendable对象供多线程操作 示例展示了共享模块定义Singleton类,并在主线程和任务池线程中安全操作共享计数器的场景。

2025-06-29 15:31:53 467

原创 鸿蒙OpenHarmony【共享容器】 ArkTS并发线程间通信

ArkTS共享容器是用于并发任务间共享传输的高性能容器类,支持引用传递和拷贝传递两种方式。主要包含Array、Map、Set等类型,其接口行为与原生API存在部分差异,如构造时必须提供初始值、禁止遍历时修改元素等。使用时需注意线程安全问题,需配合异步锁机制防止数据竞争冲突。示例展示了如何在并发任务中安全地操作共享数组。

2025-06-28 21:35:42 1049

原创 鸿蒙OpenHarmony【ASON解析与生成】 ArkTS并发线程间通信

ASON是类似JSON的工具,用于Sendable对象的序列化和反序列化。它提供ASON.stringify将对象转为字符串,ASON.parse将字符串转为Sendable对象,支持并发任务间的高性能传递。默认生成不可变布局的Sendable对象,若需可变可指定返回MAP类型。使用示例展示了基本操作方法,通过ArkTSUtils调用ASON接口实现对象与字符串间的转换。

2025-06-28 19:33:14 123

原创 鸿蒙OpenHarmony【异步锁】 ArkTS并发线程间通信

ArkTS引入异步锁机制解决多线程并发数据竞争问题。异步锁支持跨线程引用传递,仅提供非阻塞式锁以避免死锁风险,同时也能保证单线程内异步任务的时序一致性。使用示例展示了如何通过AsyncLock保护共享变量,确保线程安全操作。异步锁方法需标记为async,调用方需使用await确保正确时序。该机制有效解决了@Sendable共享对象在多线程环境下的同步问题。

2025-06-27 16:05:36 103

原创 鸿蒙OpenHarmony【Sendable使用规则与约束】 ArkTS并发线程间通信

摘要: 本文详细阐述了ArkTS中Sendable类型的继承与使用规范。主要规则包括:Sendable类只能继承Sendable类,非Sendable类不能继承Sendable类;成员变量必须为Sendable支持的类型,禁止使用非Sendable接口、!断言和计算属性名;泛型模板类型需为Sendable类型;禁止访问模块内非top-level变量;禁止使用非@Sendable装饰器;必须通过new创建实例,禁止字面量初始化;不支持Sendable与非Sendable类型强制转换;箭头函数不可标记为Send

2025-06-27 13:47:28 425

原创 鸿蒙OpenHarmony【Sendable对象冻结】 ArkTS并发线程间通信

Sendable对象支持冻结操作,冻结后的对象变成只读对象,不能增删改属性,因此在多个并发实例间访问均不需要加锁,可以通过调用[Object.freeze]接口冻结对象。

2025-06-26 15:14:12 354

原创 鸿蒙OpenHarmony【共享模块】 ArkTS并发线程间通信

共享模块是ArkTS中进程内仅加载一次的模块,用"use shared"指令声明。它可实现进程单例,不同线程间共享同一实例。使用时需注意:必须与"use strict"一起置于文件顶部;仅支持ets文件;导出变量须为可共享对象;不允许直接导出模块或side-effects-import。示例展示了如何创建共享模块导出Sendable对象,并在多线程中安全操作共享实例。共享模块适用于需要跨线程共享状态的场景,如计数器、锁管理等。

2025-06-26 13:59:16 356

原创 鸿蒙OpenHarmony【共享容器】 ArkTS并发线程间通信

ArkTS共享容器是一种用于并发任务间高性能数据传递的容器类,包括Array、Map、Set等类型,支持引用传递和拷贝传递两种方式。由于非线程安全,需配合异步锁机制使用,避免多线程并发修改导致异常。与原生API相比,ArkTS容器在构造函数、length属性设置以及元素操作等方面存在差异,例如必须提供初始值、禁止遍历过程中修改元素等。通过示例代码展示了如何使用异步锁安全地操作共享数组,并对比了ArkTS容器与原生API的行为区别。

2025-06-25 15:09:03 328

原创 鸿蒙OpenHarmony【ASON解析与生成】 ArkTS并发线程间通信

ASON工具解析与使用摘要 ASON类似于JSON工具,用于Sendable对象的序列化和反序列化。通过ASON.stringify将对象转为字符串,ASON.parse将字符串转为Sendable对象,支持并发任务间的高性能引用传递。默认生成的Sendable对象布局不可变,若需可变布局可指定返回类型为MAP,此时返回collections.Map对象支持属性增删。示例展示了如何使用ASON.parse和ASON.stringify进行对象转换操作。

2025-06-25 14:01:28 575

原创 鸿蒙OpenHarmony【异步锁】 ArkTS并发线程间通信

ArkTS异步锁机制简介 ArkTS为处理多线程并发任务中的数据竞争问题,提供了异步锁能力。该异步锁采用非阻塞式设计,可跨线程传递,既能解决多线程数据竞争,也能确保单线程内异步任务时序一致性。使用时需注意将方法标记为async并用await调用,示例展示了如何利用AsyncLock保护共享变量。相比阻塞锁,ArkTS异步锁设计更适应异步编程环境,有效避免死锁问题。

2025-06-24 15:11:11 185

原创 鸿蒙OpenHarmony【Sendable使用规则与约束】 ArkTS并发线程间通信

本文总结了Sendable类和非Sendable类在继承、实现、成员变量等方面的使用规范。主要内容包括: Sendable类只能继承自Sendable类; 非Sendable类只能继承自非Sendable类; 成员变量必须符合Sendable数据类型规范; 不支持使用!断言和计算属性名; 泛型类型必须是Sendable类型; 不能使用对象字面量初始化Sendable类型; 非Sendable类型不能强制转换为Sendable类型; 箭头函数不支持共享机制。 这些规范确保了Sendable类型在并发环境中的安

2025-06-24 14:07:07 398

原创 鸿蒙OpenHarmony【Sendable对象简介】 ArkTS并发线程间通信

在传统JS引擎上,对象的并发通信开销的优化方式只有一种,就是把实现下沉到Native侧,通过[Transferable对象]的转移或共享方式降低并发通信开销。而开发者仍然还有大量对象并发通信的诉求,这个问题在业界的JS引擎实现上并没有得到解决。

2025-06-23 15:19:15 626

原创 鸿蒙OpenHarmony【Transferable对象(NativeBinding对象)】 ArkTS并发线程间通信

摘要:Transferable对象(NativeBinding对象)是指JS对象绑定C++对象实现高效跨线程传输的类型,分为共享模式和转移模式。共享模式适用于线程安全的C++对象(如Context),只需重建JS壳即可复用C++对象;转移模式适用于非线程安全对象(如PixelMap),传输后原线程解除绑定。示例展示了如何在子线程创建PixelMap并通过setTransferDetached()转移到主线程使用,最后释放资源。该机制有效提升了跨线程通信性能。

2025-06-23 14:01:03 223

原创 鸿蒙OpenHarmony【SharedArrayBuffer对象】 ArkTS并发线程间通信

SharedArrayBuffer允许多线程共享内存,需配合Atomics操作防止数据竞争。示例展示了在ArkTS中使用TaskPool传递Int32Array对象,通过Atomics.wait/notify实现线程同步,演示了跨线程内存共享的基本用法。

2025-06-22 20:31:20 143

原创 鸿蒙OpenHarmony【ArrayBuffer对象】 ArkTS并发线程间通信

ArrayBuffer对象包含Native内存,其跨线程传输有拷贝和转移两种方式。拷贝方式允许双线程独立访问但性能较低,转移方式效率更高但原线程无法再使用数据。在ArkTS中,TaskPool默认采用转移方式,通过setTransferList()可切换为拷贝方式。文章通过图片处理场景示例,展示了两种传输方式的实现差异:拷贝方式需要显式设置空转移列表,而转移方式则保持默认设置即可。开发者应根据线程间数据访问需求选择合适的传输方式,平衡功能与性能。

2025-06-22 19:22:24 265

原创 鸿蒙OpenHarmony【概述】 ArkTS并发线程间通信

ArkTS线程间通信采用Actor内存隔离模型,支持多种数据对象的跨线程交互方式。普通JS对象使用序列化/反序列化实现深拷贝,效率较低;还支持Native绑定对象传输和Sendable对象共享。ArkTS提供TaskPool和Worker两种并发方案:Worker遵循标准跨线程通信API,TaskPool提供更简易的任务池接口但通信机制相同。适用于不同场景的线程通信需求,如耗时任务处理、主从线程交互等,同时支持C++线程通过Node-API调用ArkTS接口。所有跨线程对象传递均采用Structured C

2025-06-20 15:25:12 363

原创 鸿蒙OpenHarmony【TaskPool和Worker的对比】 ArkTS并发

摘要: TaskPool和Worker均提供多线程能力,但适用场景不同。TaskPool自动化管理线程,支持优先级、取消、复用等高级功能,适合短时、高频、需调度的任务;Worker需手动管理,适合长时运行或需保持线程状态的场景。性能上TaskPool更优,推荐优先使用,而Worker适用于超过3分钟的任务或需永久保存句柄的情境。开发时应根据任务时长、线程管理需求和功能特性选择合适的并发方案。

2025-06-20 13:59:35 360

原创 鸿蒙OpenHarmony【Worker简介】 ArkTS并发

Worker技术简介 Worker为应用程序提供了多线程运行环境,允许耗时任务在后台线程执行,避免阻塞主线程。Worker包含宿主线程和子线程,两者独立运行并通过消息传递通信。使用时需注意: 创建方式:支持手动创建(需配置build-profile.json5)和DevEco Studio自动生成 文件路径:Stage模型下区分Ability、HSP、HAR三种加载路径规则;FA模型采用相对路径 生命周期:最多同时运行64个Worker,需手动管理销毁 限制条件:仅能使用线程安全库,数据传输量限制16MB,

2025-06-19 14:58:39 1012

原创 鸿蒙OpenHarmony【TaskPool简介】 ArkTS并发

TaskPool简介与使用指南 TaskPool为应用程序提供多线程运行环境,优化资源消耗并提升性能,开发者无需管理线程生命周期。其运作机制是:宿主线程将任务抛入队列,系统自动分配工作线程执行并返回结果。TaskPool支持任务执行、取消和优先级设置,通过动态调度和负载均衡算法高效管理线程资源。 注意事项: 任务函数需用@Concurrent装饰器标注 跨实例传递对象需用@Sendable装饰器 单任务执行时长不超过3分钟(异步操作除外) 参数需支持序列化,数据量限制16MB 仅能使用线程安全库 @Conc

2025-06-19 13:52:03 855

原创 鸿蒙OpenHarmony【多线程并发】 ArkTS并发

摘要: ArkTS提供了基于Actor并发模型的TaskPool和Worker两种多线程方案。与内存共享模型不同,Actor模型通过内存隔离和消息通信避免线程竞争问题,简化了开发复杂度。内存共享模型需要加锁机制保证线程安全,而Actor模型通过任务序列化和跨线程消息传递实现并发。示例展示了两种模型解决生产者消费者问题的差异:内存共享模型使用锁控制共享容器访问,Actor模型则通过TaskPool异步任务传递结果。TaskPool适合轻量级并发任务,Worker适用于需要长期运行的线程任务,开发者可根据场景需

2025-06-18 15:13:11 371

原创 鸿蒙OpenHarmony【异步并发 (Promise和async/await)】 ArkTS并发

并发是指在同一时间内,存在多个任务同时执行的情况。对于多核设备,这些任务可能同时在不同CPU上并行执行。对于单核设备,多个并发任务不会在同一时刻并行执行,但是CPU会在某个任务休眠或进行I/O操作等状态下切换任务,调度执行其他任务,提升CPU的资源利用率。

2025-06-18 13:55:40 796 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除