Open HarmonyOS 5.0 分布式软总线子系统 (DSoftBus) 详细设计与运行分析报告
1. HarmonyOS 5.0 与分布式软总线 (DSoftBus) 概述
-
1.1 HarmonyOS 5.0 架构概览 HarmonyOS 5.0,又称鸿蒙星河版,标志着操作系统架构的重大演进,其核心在于转向自研的微内核系统 1。此版本摒弃了先前版本中兼容安卓的双框架模式,全面拥抱原生 HarmonyOS 应用生态 1。HarmonyOS 5.0 的系统架构呈现出清晰的层次结构,由下至上依次为:内核层、系统服务层、框架层和应用层 2。 HarmonyOS 5.0 (NEXT) 采用微内核架构,这代表着一个根本性的架构转变,旨在通过隔离关键系统组件来增强安全性和性能 1。此前,HarmonyOS 曾采用多内核或基于 Linux 的方法。这种架构的变动可能会对包括分布式软总线在内的所有子系统的设计和运行产生深远影响。 HarmonyOS 5.0 (NEXT) 仅支持原生 HarmonyOS 应用,这预示着华为构建独立生态系统的战略决策,而这可能会影响分布式软总线在该生态系统中连接设备的角色和功能 1。移除安卓兼容性表明,HarmonyOS 5.0 中的分布式软总线将专门为运行纯 HarmonyOS 的设备之间的通信进行优化,从而可能实现更高效和更集成的分布式特性。
-
1.2 分布式软总线 (DSoftBus) 简介 分布式软总线 (DSoftBus) 是 HarmonyOS 的核心通信子系统,它使得 HarmonyOS 设备之间能够实现无缝的分布式操作 1。它负责设备发现、连接建立以及设备之间高效的数据交换,从而构建起“超级设备”的概念 1。DSoftBus 屏蔽了底层通信技术的复杂性,使得开发者能够专注于应用逻辑的实现 9。 由 DSoftBus 实现的“超级设备”概念旨在通过在系统层聚合运行 HarmonyOS 的各种智能设备的性能,从而提供统一和无缝的用户体验 1。这种概念是 HarmonyOS 用户体验的核心,并突显了 DSoftBus 的战略重要性。
-
1.3 DSoftBus 的目标与目的 DSoftBus 的主要目标在于实现各种设备类型之间高效的通信和数据共享 3。它旨在支持自动设备发现和动态网络形成 9,并促进跨设备协作和任务分配 9。此外,DSoftBus 还力求为各种设备形态提供统一的通信基础 4。 DSoftBus 致力于实现“无感设备发现”和“零等待传输”,这表明其侧重于为用户提供设备连接和数据传输的无缝体验,无需用户进行过多操作或消耗过多资源 9。这些目标突显了 DSoftBus 以用户为中心的设计理念,强调在分布式场景中的易用性和效率。这暗示着其底层设计和协议可能针对速度和最小开销进行了优化。
2. HarmonyOS 5.0 中 DSoftBus 的详细设计与架构
-
2.1 高层架构概述 DSoftBus 是 HarmonyOS 系统服务层中的一个子系统 2。它为各种设备形态提供统一的通信基础,实现硬件协作和资源共享 4。该架构旨在适应不同的设备能力和部署场景 4。 DSoftBus 在系统服务层中的位置表明其在为应用程序和框架提供核心分布式功能方面发挥着基础性作用 2。这一架构决策暗示着 DSoftBus 是其他分布式特性和应用程序功能构建的基础组件。
-
2.2 DSoftBus 中的关键组件
-
发现模块 (Discovery Module): 负责检测附近的其他 HarmonyOS 设备 9。它使用 CoAP 等协议进行轻量级和可靠的传输 19。
-
连接管理模块 (Connection Management Module): 处理已发现设备之间连接的建立和维护 9。安全子系统参与设备绑定过程 9。
-
数据传输模块 (Data Transmission Module): 促进连接设备之间的数据传输,支持各种数据类型(消息、字节、流、文件) 9。
-
网络与拓扑管理 (Networking and Topology Management): 管理由连接的设备组成的网络,并为数据传输提供设备信息 9。
-
设备发现模块依赖 CoAP 协议,这暗示着对资源受限的物联网设备的优化,与 HarmonyOS 广泛的目标设备范围相符 19。CoAP 是一种轻量级协议,通常用于物联网环境,因为它具有较低的开销,适用于 HarmonyOS 旨在支持的各种设备,从可穿戴设备到更大型的系统。
-
2.3 分层架构与 DSoftBus 集成 DSoftBus 在系统服务层运行,利用内核层提供的底层通信能力(例如,由内核抽象层 - KAL 提供的网络管理) 4。它向框架层提供 API,开发者使用这些 API 构建分布式应用程序 4。应用层的应用程序利用框架层暴露的功能进行跨设备交互 4。 这种分层架构确保了关注点的分离,允许 DSoftBus 专注于通信,而更高的层则处理应用程序逻辑和用户界面 4。这种设计原则提高了模块化和可维护性,因为一个层中的更改不太可能直接影响其他层。它还允许灵活地适应不同的硬件和软件要求。
-
2.4 底层技术与通信模式 DSoftBus 支持各种通信模式,包括 WLAN 和蓝牙 9。它还提到支持其他协议 3。它采用分布式计算框架,使应用程序能够在不同的硬件平台上运行 21。该系统支持对其他设备的远程 IPC 调用,从而促进分布式 Binder 调用 3。 DSoftBus 对底层通信技术(WLAN、蓝牙等)的抽象通过提供一致的接口简化了开发,而无需考虑所使用的物理连接 9。开发者可以依赖 DSoftBus API,而无需为不同的通信协议实现特定的逻辑,从而加快了开发速度并提高了分布式应用程序的可移植性。
3. DSoftBus 的运行过程与操作流程
-
3.1 设备发现过程 希望发现其他设备的设备使用 CoAP 协议发送广播 19。接收设备使用 CoAP 单播消息响应发现设备 19。发现设备在收到单播响应后更新其已发现设备列表 19。诸如 RefreshLNN 之类的 API 用于启动设备发现,并通过回调 (OnDeviceFound, OnDiscoverResult) 通知服务已发现的设备 9。 使用 CoAP 进行发现的广播-单播机制对于局域网而言非常高效,可在最大限度地减少网络拥塞的同时确保可靠的发现 19。广播允许快速到达所有潜在设备,而单播响应则确保只有预期的发现设备接收到详细信息,从而优化了网络使用。
-
3.2 连接建立过程 该过程涉及发起连接请求 (JoinLNN)、等待连接结果以及可能通过安全子系统进行设备绑定 9。诸如 Listen (服务器端) 和 Bind (客户端) 之类的 API 用于建立用于通信的套接字连接 9。身份验证是连接建立过程中的关键阶段 3。 明确提及设备绑定表明连接建立采用了注重安全的方法,确保只有授权设备才能相互通信 9。绑定通常涉及配对或信任机制,这对于防止未经授权的访问和维护分布式交互的完整性至关重要。
-
3.3 数据传输机制与协议 DSoftBus 支持通过套接字发送和接收各种数据类型,包括字节 (SendBytes)、消息 (SendMessage)、流 (SendStream) 和文件 (SendFile) 9。底层协议包括 Wi-Fi、蓝牙以及可能的其他协议 3。QoS(服务质量)接口功能正在构建中,以更好地管理底层链路资源并提供路由选择决策 22。 对不同数据传输方法(字节、消息、流、文件)的支持表明 DSoftBus 在处理分布式应用程序的各种通信需求方面具有多功能性 9。不同类型的数据需要不同的处理机制以提高效率和可靠性。提供多种选项允许开发者为他们的特定用例选择最合适的方法。 QoS 功能的开发表明 DSoftBus 越来越关注优化数据传输的性能和可靠性,尤其是在网络条件或资源可用性不同的情况下 22。QoS 功能允许系统优先处理某些类型的流量或确保关键数据传输的最低性能水平,从而增强分布式应用程序的整体用户体验。
-
3.4 会话管理与连接生命周期 服务需要在数据传输后显式关闭会话以释放资源 9。提供诸如 OnBind 和 OnShutdown 之类的回调来管理套接字连接的生命周期 9。可以配置连接的最大空闲时间 9。 需要显式关闭会话突显了 DSoftBus 中资源管理的重要性,尤其考虑到分布式环境中可能存在大量互连设备 9。适当的资源管理可以防止资源泄漏并确保 DSoftBus 子系统的稳定性和性能。
4. DSoftBus 的代码分析与实现
-
4.1 OpenHarmony 概述及其与 DSoftBus 的关系 HarmonyOS 5.0 (NEXT) 基于最新的 OpenHarmony 版本构建 7。DSoftBus 是由 OpenHarmony 社区开发的开源通信基础 15。DSoftBus 的源代码可在 GitHub/Gitee 等代码仓库中找到,例如 communication_dsoftbus 9。 DSoftBus 在 OpenHarmony 项目中的开源性质促进了社区在分布式通信能力开发方面的协作和创新 15。开源项目受益于更广泛的开发者群体的贡献和审查,从而产生更健壮和功能更丰富的软件。
-
4.2 使用的编程语言 DSoftBus 主要使用 C 和 C++ 实现 1。客户端代码示例以 Native C++ 提供 15。API 也暴露给其他语言使用,如 ArkTS 和 JavaScript 1。 核心实现选择 C/C++ 可能是因为系统级通信子系统需要高性能和底层控制 1。C 和 C++ 通常用于操作系统组件和系统级编程,因为它们在内存使用和执行速度方面非常高效,这对于像 DSoftBus 这样的通信子系统至关重要。
-
4.3 关键 API 与接口 提供了用于服务发布 (PublishLNN, StopPublishLNN) 和发现 (RefreshLNN, StopRefreshLNN) 的 API 9。用于创建 (Socket)、监听 (Listen)、绑定 (Bind)、发送数据 (SendBytes, SendMessage, SendStream, SendFile) 和关闭 (Shutdown) 的套接字相关 API 也可用 9。存在用于管理网络连接 (JoinLNN, LeaveLNN) 和设备状态 (RegNodeDeviceStateCb, UnregNodeDeviceStateCb) 的 API 9。 这些 API 为开发者提供了一套全面的工具,用于在他们的应用程序中实现分布式功能,涵盖了设备交互的整个生命周期,从发现到数据传输和连接管理 9。
-
4.4 模块化设计与代码组织 communication_dsoftbus 代码仓库被组织成多个模块,如 discovery、connection、transmission 和 bus_center (网络) 9。这种模块化设计提高了可维护性,并允许独立开发和测试不同的功能 9。DSoftBus 在 OpenHarmony 中以系统能力 (System Ability, SA) 的形式实现,通过进程间通信 (Inter-Process Communication, IPC) 进行通信 19。 DSoftBus 以系统能力的形式实现突显了其作为核心系统服务的作用,各种应用程序和其他系统组件可以通过定义良好的 IPC 机制访问该服务 19。
5. DSoftBus 5.0 中的性能优化技术
-
5.1 低延迟和高吞吐量通信的设计考虑 HarmonyOS 5.0 (NEXT) 中的微内核架构旨在提高性能 1。HarmonyOS NEXT 中的确定性延迟引擎优化了任务调度和执行,以确保系统流畅性 13。高性能 IPC 技术用于实现系统的自然流畅性 13。 转向微内核以及确定性延迟引擎的实现表明 HarmonyOS 5.0 (NEXT) 非常重视性能优化,这将直接使 DSoftBus 子系统受益 1。
-
5.2 提到的具体优化技术 DSoftBus 支持设备之间的“零等待传输” 12。这可能指的是具有最小开销的高效数据传输协议。使用 CoAP 进行设备发现是针对资源受限设备的性能优化 19。QoS 接口功能正在开发中,以更好地管理底层链路资源和路由选择 22。 尽管“零等待传输”可能是一种市场宣传语,但它暗示着 DSoftBus 旨在实现高效的数据传输,最大限度地减少延迟和资源消耗 12。
-
5.3 潜在的性能改进领域和最佳实践
-
根据要传输的数据类型和大小以及网络条件优化通信协议的选择。
-
高效管理连接生命周期,以最大限度地减少建立和断开连接的开销。
-
在适当的情况下利用异步通信模式以避免阻塞操作。
-
在可用时利用 QoS 功能来优先处理关键数据传输。
-
6. DSoftBus 5.0 中的安全机制与考量
-
6.1 DSoftBus 的安全架构 身份验证是连接过程的关键部分 3。在建立连接之前需要进行设备绑定,这涉及到安全子系统 9。HarmonyOS 包含一个基于硬件的可信执行环境 (Trusted Execution Environment, TEE) 微内核,用于保护敏感数据 2。 对身份验证、设备绑定和 TEE 微内核的强调表明 DSoftBus 和整个 HarmonyOS 架构的设计非常注重安全性 2。
-
6.2 提到的安全特性与漏洞 AccessToken 机制允许对使用分布式功能的应用程序进行更细粒度的权限控制 3。一份安全公告提到了 Nearby(与 DSoftBus 相关)中存在权限控制不当的漏洞 (CVE-2022-48515) 24。DSoftBus 中还存在另一个漏洞,允许第三方应用程序获取唯一的设备 ID (CVE-2022-48516) 24。DSoftBus 中存在服务权限提升漏洞 (CVE-2022-48517) 24。 DSoftBus 中过去存在的漏洞突显了分布式系统中持续进行严格安全测试和补丁的必要性 24。
-
6.3 安全通信的最佳实践
-
确保为所有连接实现适当的设备绑定和身份验证。
-
在请求分布式功能的权限时,坚持最小权限原则。
-
及时了解 HarmonyOS 和 DSoftBus 的最新安全补丁和更新。
-
在通过 DSoftBus 传输敏感数据之前对其进行加密。
-
7. DSoftBus 相较于先前 HarmonyOS 版本的变化与改进
-
7.1 与早期版本(例如 HarmonyOS 4.x)的比较 HarmonyOS 5.0 (NEXT) 代表着一个主要的迭代,它转向了单一框架和专有的微内核,取代了包含 AOSP 兼容性的双框架方法 1。这可能会对 DSoftBus 产生重大影响。OpenHarmony 4.1 为 DSoftBus 传输引入了 QoS 接口功能,并增强了 DFX 机制 22。OpenHarmony 4.0 带来了 4000 多个新的 API,可能包括对 DSoftBus 的增强 25。OpenHarmony 3.2 提高了蓝牙数据传输性能,这可能与涉及蓝牙通信的 DSoftBus 相关 26。 HarmonyOS NEXT 和 5.0 版本中微内核架构的转变可能导致 DSoftBus 内部进行了重大的更改和优化,以适应新的系统基础 1。
-
7.2 重要的架构变化或功能增强 5.0 版本 (NEXT) 对原生 HarmonyOS 应用的专属关注可能导致 DSoftBus 在同构 HarmonyOS 环境中的通信方面进行了优化。OpenHarmony 版本(HarmonyOS 5.0 基于此版本)中引入的新 API 可能扩展了 DSoftBus 的能力和功能。OpenHarmony 4.1 中 QoS 功能的开发代表着一项显著的增强,旨在提高分布式通信的可靠性和性能。
-
7.3 HarmonyOS NEXT 过渡对 DSoftBus 的影响 HarmonyOS NEXT 中 AOSP 兼容层的移除可以通过专注于原生 HarmonyOS 通信协议和机制来简化 DSoftBus 的实现。新的 HarmonyOS 内核(微内核)可能提供改进的底层通信原语和 DSoftBus 可以利用的安全特性。
8. 开发者社区对 DSoftBus 5.0 的见解与讨论
-
8.1 主要讨论与见解 HarmonyOS 开发者论坛是开发者提问和交流想法的平台 27。然而,提供的代码片段中并未突出显示关于 DSoftBus 5.0 设计和实现的具体讨论。一些开发者讨论围绕着向 HarmonyOS NEXT 的过渡及其对应用程序开发的影响 1。HarmonyOS NEXT 中移除安卓应用程序兼容性是开发者讨论的一个重要方面 1。 开发者社区积极参与 HarmonyOS 的演进,尤其是向 HarmonyOS NEXT 的转变,相关讨论可能包括对 DSoftBus 等核心子系统的影响,即使提供的材料中没有明确详细说明 1。
-
8.2 讨论的常见挑战或解决方案
-
将现有应用程序适配到 5.0 版本 (NEXT) 的原生 HarmonyOS 环境中面临的挑战。
-
围绕利用 DSoftBus API 实现跨设备功能的最佳实践的讨论。
-
在开发分布式应用程序时遇到的限制或问题的潜在解决方案或变通方法。
-
9. 结论与未来方向
-
9.1 HarmonyOS 5.0 中 DSoftBus 的关键方面回顾 DSoftBus 是 HarmonyOS 5.0 (NEXT) 中用于通过无缝设备发现、连接和数据传输实现分布式功能的关键子系统。它基于 OpenHarmony 项目构建,并在 5.0 版本 (NEXT) 中利用了微内核架构。DSoftBus 为开发者提供了全面的 API 集,用于创建分布式应用程序。
-
9.2 DSoftBus 的未来潜力与演进 进一步优化性能、安全性以及功耗效率。扩展支持的通信协议和设备类型。与新兴技术和用例集成,例如空间计算和高级 AI 驱动的分布式服务 31。
-
9.3 给开发者和研究人员的建议 深入研究 OpenHarmony 文档和 DSoftBus API 以进行开发。积极参与 HarmonyOS 开发者社区,分享见解并解决挑战。在实际场景中研究 DSoftBus 的性能和安全方面。为 OpenHarmony 项目中 DSoftBus 的开源开发做出贡献。
关键表格
-
表 1:HarmonyOS 5.0 架构层与 DSoftBus 集成
架构层 | 描述 | DSoftBus 角色/集成 |
内核层 | 提供基本的系统能力,如进程和线程管理、内存管理、文件系统、网络管理和外设管理。 | DSoftBus 利用内核层提供的网络管理等通信能力。 |
系统服务层 | 提供应用程序所需的全套基本功能,包括分布式软总线、分布式数据管理、分布式调度、Ark 多语言运行时等。 | DSoftBus 作为系统服务层中的核心子系统存在,提供分布式通信能力。 |
框架层 | 提供开发 HarmonyOS 应用程序所需的工具,如多语言应用框架、UI 框架和硬件/软件 API。 | 框架层向开发者暴露 DSoftBus 提供的 API,用于构建分布式应用。 |
应用层 | 包含系统应用和第三方应用,每个应用由一个或多个 FA 或 PA 组成。 | 应用层通过框架层提供的 DSoftBus API 实现跨设备的互操作和数据共享。 |
-
表 2:关键 DSoftBus API 及其功能
API 名称 | 功能 | 示例用例 |
PublishLNN | 发布本地设备的服务,使其可被其他设备发现。 | 智能家居设备广播其可用功能(如打印、扫描)。 |
StopPublishLNN | 停止发布本地设备的服务。 | 在服务不再可用或需要暂时隐藏时停止广播。 |
RefreshLNN | 启动对附近设备的发现过程。 | 手机搜索附近的蓝牙耳机或智能手表。 |
StopRefreshLNN | 停止设备发现过程。 | 在找到所需设备或不再需要搜索时停止扫描。 |
Socket | 创建一个新的套接字实例,用于设备间通信。 | 在两个设备之间建立数据传输通道。 |
Listen | 在服务器端启动对套接字的监听,等待客户端连接。 | 智能电视监听来自手机的投屏请求。 |
Bind | 在客户端绑定套接字,连接到服务器端。 | 手机绑定到智能电视的投屏服务。 |
SendBytes | 通过套接字发送原始字节数据。 | 在设备之间发送小块控制信息或状态更新。 |
SendMessage | 通过套接字发送消息数据。 | 发送结构化的命令或事件通知。 |
SendStream | 通过套接字发送数据流。 | 传输音频或视频流数据。 |
SendFile | 通过套接字发送文件。 | 在手机和电脑之间共享文件。 |
Shutdown | 关闭套接字连接。 | 在数据传输完成后释放通信资源。 |
JoinLNN | 请求加入一个由其他设备组成的分布式网络。 | 平板电脑加入手机创建的临时协作组。 |
LeaveLNN | 离开当前加入的分布式网络。 | 平板电脑断开与协作组的连接。 |
RegNodeDeviceStateCb | 注册设备状态变化的回调函数。 | 应用程序监听附近设备的上线或下线事件。 |
UnregNodeDeviceStateCb | 取消注册设备状态变化的回调函数。 | 应用程序停止监听设备状态变化。 |
-
表 3:不同 HarmonyOS/OpenHarmony 版本中 DSoftBus 的比较
版本 | DSoftBus 的关键特性/改进 | 底层架构变化(如果适用) |
OpenHarmony 3.2 | 蓝牙数据传输性能提升 10%。 | |
OpenHarmony 4.0 | 引入超过 4000 个新 API,可能包含 DSoftBus 的增强。 | Clang/LLVM 工具链升级至 15.0.4。 |
OpenHarmony 4.1 | 构建了 DSoftBus 传输的 QoS 接口能力,增强了 DFX 机制,为路由选择增加了连接可靠性确认能力,可以基于资源条件动态设置连接参数。 | |
HarmonyOS 5.0 (NEXT) | 基于 OpenHarmony 最新版本,专注于原生 HarmonyOS 应用,可能对 DSoftBus 进行了与微内核架构对齐的重大内部更改和优化,实现了“零等待传输”。 | 转向自研的微内核系统,摒弃了双框架模式。 |
引用的著作
-
HarmonyOS NEXT - Wikipedia, 访问时间为 三月 28, 2025, https://en.wikipedia.org/wiki/HarmonyOS_NEXT
-
HarmonyOS - Wikipedia, 访问时间为 三月 28, 2025, https://en.wikipedia.org/wiki/HarmonyOS
-
The Most Groundbreaking New Security Ecosystem of 2024 - DARKNAVY, 访问时间为 三月 28, 2025, The Most Groundbreaking New Security Ecosystem of 2024 | DARKNAVY
-
About HarmonyOS-HarmonyOS Overview-Introduction-HarmonyOSDevice, 访问时间为 三月 28, 2025, Document
-
OpenHarmony - Wikiwand, 访问时间为 三月 28, 2025, https://www.wikiwand.com/en/articles/OpenHarmony
-
Develop HarmonyOS Streaming App Without Coding - A Detailed Guide - Muvi, 访问时间为 三月 28, 2025, Develop HarmonyOS Streaming App Without Coding - A Detailed Guide
-
Digging into Harmony OS Internals | by Jasper Morgan | Snapp Mobile - Medium, 访问时间为 三月 28, 2025, https://medium.com/snapp-mobile/digging-into-harmony-os-internals-fb48d822e65a
-
New Mobile Operating Systems : harmonyos next 5 - Trend Hunter, 访问时间为 三月 28, 2025, New Mobile Operating Systems : harmonyos next 5
-
openharmony/communication_dsoftbus: 暂无描述 - GitHub, 访问时间为 三月 28, 2025, https://github.com/openharmony/communication_dsoftbus
-
OpenHarmony - Wikipedia, 访问时间为 三月 28, 2025, https://en.wikipedia.org/wiki/OpenHarmony
-
HarmonyOS - Huawei Central, 访问时间为 三月 28, 2025, https://www.huaweicentral.com/harmonyos/
-
3. What is DSoftBus in Harmony OS? - YouTube, 访问时间为 三月 28, 2025, https://www.youtube.com/watch?v=ACtGZWeVeWc
-
HarmonyOS/README.md at master - GitHub, 访问时间为 三月 28, 2025, https://github.com/Awesome-HarmonyOS/HarmonyOS/blob/master/README.md
-
OpenHarmony Project - docs - Gitee, 访问时间为 三月 28, 2025, en/OpenHarmony-Overview.md · OpenHarmony/docs - Gitee.com
-
Expanding the Ecosystem Through Distributed Soft Bus - openEuler文档, 访问时间为 三月 28, 2025, expanding_ecosystem_through_dsoftbus | openEuler documentation | v22.03_LTS_SP1
-
OpenHarmony/docs - Gitee, 访问时间为 三月 28, 2025, en/OpenHarmony-Overview.md · OpenHarmony/docs - Gitee.com
-
OpenHarmony Project - docs - Gitee, 访问时间为 三月 28, 2025, en/OpenHarmony-Overview.md · OpenHarmony/docs - Gitee.com
-
Analysis of OpenHarmony's Contribution to the Digital Transformation of Various Industries, 访问时间为 三月 28, 2025, Analysis of OpenHarmony's Contribution to the Digital Transformation of Various Industries - 淮北计算机学会
-
Files · main · Francesco Pham / dsoftbus-example - GitLab, 访问时间为 三月 28, 2025, Files · main · Francesco Pham / dsoftbus-example · GitLab
-
Expanding the Ecosystem Through Distributed Soft Bus - openEuler文档, 访问时间为 三月 28, 2025, expanding_ecosystem_through_dsoftbus | openEuler documentation | v22.03_LTS_SP4
-
HarmonyOS to Redefine Mobile Operating Systems - 科技日报, 访问时间为 三月 28, 2025, HarmonyOS to Redefine Mobile Operating Systems
-
docs/en/release-notes/OpenHarmony-v4.1-release.md at master - GitHub, 访问时间为 三月 28, 2025, https://github.com/openharmony/docs/blob/master/en/release-notes/OpenHarmony-v4.1-release.md
-
Say Goodbye to Android Lag: Why Pure HarmonyOS NEXT Delivers Long-Lasting Smoothness - Blackview Blog, 访问时间为 三月 28, 2025, Say Goodbye to Android Lag: Why Pure HarmonyOS NEXT Delivers Long-Lasting Smoothness - Blackview Blog
-
July-2023-HarmonyOS Security Bulletins-Updates-HarmonyOSDevice, 访问时间为 三月 28, 2025, Document
-
OpenHarmony v4.0 Release (2023-10-26), 访问时间为 三月 28, 2025, OpenAtom OpenHarmony
-
OpenHarmony 3.2 Release - docs - Gitee, 访问时间为 三月 28, 2025, en/release-notes/OpenHarmony-v3.2-release.md · 易宝软件/docs - Gitee.com
-
Community - HUAWEI HarmonyOS, 访问时间为 三月 28, 2025, Community - HUAWEI HarmonyOS
-
HarmonyOS | HUAWEI Developers, 访问时间为 三月 28, 2025, HUAWEI Developer Forum | HUAWEI Developer
-
HarmonyOS NEXT English out-reach and open source, among other ..., 访问时间为 三月 28, 2025, https://www.reddit.com/r/Huawei/comments/1ferbpd/harmonyos_next_english_outreach_and_open_source/
-
HarmonyOS Next 5.0 Theme : Walk On (3rd party custom theme!) : r/Huawei - Reddit, 访问时间为 三月 28, 2025, https://www.reddit.com/r/Huawei/comments/1iq33u9/harmonyos_next_50_theme_walk_on_3rd_party_custom/
-
In-depth Analysis of HarmonyOS (HarmonyOS) in 2025 : r/Huawei - Reddit, 访问时间为 三月 28, 2025, https://www.reddit.com/r/Huawei/comments/1ja7c3k/indepth_analysis_of_harmonyos_harmonyos_in_2025/
-
HarmonyOS version history - Wikipedia, 访问时间为 三月 28, 2025, https://en.wikipedia.org/wiki/HarmonyOS_version_history
-
HarmonyOS 5.0 (Next) - Long term experience - YouTube, 访问时间为 三月 28, 2025, https://www.youtube.com/watch?v=t6SSWK-u4SM
相关文章:
Open HarmonyOS 5.0 分布式软总线子系统 (DSoftBus) 详细设计与运行分析报告
1. HarmonyOS 5.0 与分布式软总线 (DSoftBus) 概述 1.1 HarmonyOS 5.0 架构概览 HarmonyOS 5.0,又称鸿蒙星河版,标志着操作系统架构的重大演进,其核心在于转向自研的微内核系统 1。此版本摒弃了先前版本中兼容安卓的双框架模式,全…...
蓝桥杯备考:多米诺骨牌
这道题要求上下方格子和之差要最小,其实就是算每个上下格子的差求和的最小值 这道题其实是动态规划01背包问题 我们直接按步骤做吧 step1:定义状态表示f[i][j]表示从1到i个编号的差值里选出刚好j个数的最小操作次数 step2:推导状态转移方程 如图这就是我们的状态…...
C++:allocator类(动态数组续)
1.为什么需要 allocator? 在 C 中,动态内存管理通常通过 new 和 delete 完成: int* p new int; // 分配内存 构造对象 delete p; // 析构对象 释放内存 但 new 和 delete 有两个问题: 耦合性:将内…...
Go语言手动内存对齐的四大场景与实践指南
Go语言手动内存对齐的四大场景与实践指南 引言:Go的内存对齐机制 Go语言通过编译器自动处理内存对齐问题,开发者通常无需关心底层细节。然而,在特定场景下,手动干预内存对齐是避免程序崩溃或数据错乱的必要操作。本文将深入探讨G…...
libva基础
Libva(Lib Video Acceleration)是一个开源的库,实现了 **VA-API**(Video Acceleration API),旨在为视频处理提供跨平台的硬件加速支持。 1、核心功能与作用 硬件加速抽象层:Libva 作为中间层&…...
如何在 AI 搜索引擎(GEO)霸屏曝光,快速提升知名度?
虽然大多数人仍然使用 Google 来寻找答案,但正在发生快速转变。ChatGPT、Copilot、Perplexity 和 DeepSeek 等 LLM 已成为主流。这主要是因为每个都有自己的免费和公共版本,并且总是有重大的质量改进。 许多人每天都使用这些工具来提问和搜索互联网&…...
Java入门知识总结——章节(二)
ps:本章主要讲数组、二维数组、变量 一、数组 数组是一个数据容器,可用来存储一批同类型的数据 🔑:注意 类也可以是一个类的数组 public class Main {public static class Student {String name;int age; // 移除 unsignedint…...
Python 序列构成的数组(元组不仅仅是不可变的列表)
元组不仅仅是不可变的列表 有些 Python 入门教程把元组称为“不可变列表”,然而这并没有完全概括 元组的特点。除了用作不可变的列表,它还可以用于没有字段名的记 录。鉴于后者常常被忽略,我们先来看看元组作为记录的功用。 元组和记录 元…...
OJ题:移动零
双指针法 c 语言实现 void moveZeroes(int* nums, int numsSize) {int dest,cur; //创建临时指针和目标指针destcur0;//出初始化while(cur<numsSize)//遍历{if(nums[cur]!0){swap(&nums[cur],&nums[dest]);cur;dest;}else{cur;}}} 思路是建立两个指针࿰…...
wait函数等待多个子进程
父进程等待多个子进程时可以使用 wait() 函数,但有一些要点需要注意,下面为你详细介绍相关内容。 可以使用 wait() 函数等待多个子进程的原理 wait() 函数会让调用它的父进程暂停执行,直到它的某个子进程结束,然后返回结束子进程…...
数据湖的数据存储与管理策略:构建高效的数据管理框架
数据湖的数据存储与管理策略:构建高效的数据管理框架 在大数据时代,数据湖作为存储和管理海量数据的关键技术,已经成为众多企业数字化转型的重要组成部分。数据湖的核心优势在于其能够支持结构化、半结构化和非结构化数据的存储,然而,随着数据量的增加和复杂度的提升,如…...
Linux进程管理之进程的概念、进程列表和详细的查看、进程各状态的含义
进程的概念 进程是程序执行的实例,在Linux中,每个进程都有一个唯一的PID(进程ID)。 查看当前系统中有哪些进程 在Linux系统中,查看当前运行的进程可以使用几个常用命令: ps - 显示当前进程的快照。常用选…...
3万字长文详解Android AIDL 接口设计
目录 第一章:AIDL 概述 1.1 什么是 AIDL?定义与核心作用 1.2 AIDL 的典型使用场景 第二章:AIDL 语法规则 2.1 支持的数据类型:从基础到高级 2.2 接口声明:写好通信的 “剧本” 2.3 方向标记:数据流向的 “交通灯” 第三章:AIDL 文件编写 3.1 创建 AIDL 文件:从…...
HFSS 使用入门
资源 下载资源: https://download.csdn.net/download/wangjun_huster/90547193 下载破解: https://download.csdn.net/download/wangjun_huster/90547551 安装 https://www.bilibili.com/list/ml3403866295?oid925751664&bvidBV1CT4y1u7LB 入门…...
精心整理-2024最新网络安全-信息安全全套资料(学习路线、教程笔记、工具软件、面试文档).zip
2024最新网络安全-信息安全全套资料(学习路线、教程笔记、工具软件、面试文档),视频教程文档资料共55GB。 一、网络安全-信息安全学习路线 0、网络安全-信息安全思维导图.jpg 1、网络安全大师课 V2024.pdf 2、网络安全行业白皮书.pdf 3、网络…...
RAG基建之PDF解析的“流水线”魔法之旅
将PDF文件和扫描图像等非结构化文档转换为结构化或半结构化格式是人工智能的关键部分。然而,由于PDF的复杂性和PDF解析任务的复杂性,这一过程显得神秘莫测。 在RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”中,我们介绍了PDF解析的主要任务,对现…...
leetcode刷题日记——跳跃游戏
[ 题目描述 ]: [ 思路 ]: 题目要求在给出的每次可移动最大步数中选择一个移动步数,如果有一种选择能达到终点就返回true,如果没有一种选择能够达到终点就返回false因为每次给出的最大步数不同,步数越大,…...
Scala 数组
Scala 数组 引言 Scala 作为一门多范式编程语言,融合了面向对象和函数式编程的特点。数组是编程语言中非常基础和常见的数据结构,在 Scala 中也不例外。本文将详细介绍 Scala 中的数组,包括其定义、操作以及在实际开发中的应用。 Scala 数…...
基于华为设备技术的端口类型详解
以下是基于华为设备技术网页的端口类型详解(截至2025年3月): 一、Access端口 定义:仅允许单个VLAN通过,用于连接终端设备(如PC、打印机) 处理流程: 接收帧:未带标签…...
使用 Go 和 Gin 实现高可用负载均衡代理服务器
前言 在现代分布式系统中,负载均衡是保障服务高可用性和性能的核心技术。本文将基于 Go 语言和 Gin 框架实现一个支持动态路由、健康检查、会话保持等特性的企业级负载均衡代理服务器,并提供完整的压力测试方案和优化建议。 通过本方案实现的负载均衡代理具备以下优势: 单…...
零基础驯服GitHub Pages
各位互联网流浪汉、赛博吉普赛人、以及不小心点进来的产品经理们!今天我们要用程序员的方式搞点大事情——不写代码、不买服务器、不氪金,免费拥有一个能吹牛的个人网站!准备好你的键盘和表情包收藏夹,我们的奇幻漂流开始了&#…...
OpenBMC:BmcWeb 生效路由5 优化trie
OpenBMC:BmcWeb 生效路由4 将路由添加到Trie中-CSDN博客 在url被添加到trie中后,validate的最后一步是优化trie void validate() {for (std::unique_ptr<BaseRule>& rule : allRules){if (rule){std::unique_ptr<BaseRule> upgraded = rule->upgrade();if…...
买卖股票的最佳时机(121)
121. 买卖股票的最佳时机 - 力扣(LeetCode) 解法: class Solution { public:int maxProfit(vector<int>& prices) {int cur_min prices[0];int max_profit 0;for (int i 1; i < prices.size(); i) {if (prices[i] > cur…...
强大的AI网站推荐(第四集)—— Gamma
网站:Gamma 号称:展示创意的新媒介 博主评价:快速展示创意,重点是展示,在几秒钟内快速生成幻灯片、网站、文档等内容 推荐指数:🌟🌟🌟🌟🌟&#x…...
Business Trip and Business Travel
Business Trip and Business Travel References Background I would like to introduce the background. Dave is going on a business trip, but he’s very busy, so he needs Leo’s help to buy the plane ticket. Panda is an agent of China Eastern /ˈiːstərn/ Airl…...
为pip设置国内镜像源
pip设置国内镜像源 在Python中使用pip安装软件包时,通常我们会遇到网络问题,尤其是在中国大陆地区。为了解决这个问题我们可以使用一些国内提供的镜像源。下面以清华大学的镜像源为例进行使用说明。 方法一:临时使用 在命令行中࿰…...
MySQL查询成本计算
对于如上SQL,只是因为查询字段不同,最终执行时选择的索引就不同,那么MySQL是如何决定选择使用哪个索引呢? 答案是MySQL会进行成本计算,对于各个场景查询进行成本预估,最终选择最优。 我们可以使用trace工具…...
使用 rsync 进行服务器文件同步与优化
使用 Rsync 工具在两台 Linux 服务器之间同步文件 Rsync 是一种高效的文件同步工具,它可以在本地或远程服务器之间同步文件和目录。Rsync 通过仅传输文件的变化部分来减少数据传输量,因此特别适合用于定期备份或同步大量数据。本文将详细介绍如何将 A 服…...
java面向对象从入门到入土
面向对象进阶 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 重点学习:学习已有对象并使用,学习如何自己设计对象并使用 设计对…...
Redis设计与实现-哨兵
哨兵模式 1、启动并初始化sentinel1.1 初始化服务器1.2 使用Sentinel代码1.3 初始化sentinel状态1.4 初始化sentinel状态的master属性1.5 创建连向主服务器的网络连接 2、获取主服务器信息3、获取从服务器的信息4、向主从服务器发送信息5、接受主从服务器的频道信息6、检测主观…...
vscode 打开工程 看不到文件目录
vscode 打开工程 看不到文件目录 View->Explorer 快捷键:CtrlShiftE...
[c++项目]基于微服务的聊天室服务端测试
项目概述 本测试报告针对基于C实现的微服务架构聊天室服务端进行全面测试。系统主要包含以下微服务: 用户认证服务(Auth Service)消息处理服务(Message Service)在线状态服务(Presence Service࿰…...
Java面试黄金宝典16
1. 各种排序算法的时间复杂度和空间复杂度 冒泡排序 定义: 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,…...
pytorch中dataloader自定义数据集
前言 在深度学习中我们需要使用自己的数据集做训练,因此需要将自定义的数据和标签加载到pytorch里面的dataloader里,也就是自实现一个dataloader。 数据集处理 以花卉识别项目为例,我们分别做出图片的训练集和测试集,训练集的标…...
LabVIEW 燃气轮机气路故障诊断
在船用燃气轮机气路故障诊断领域,LabVIEW 软件以其独特的功能和优势,成为构建高效、精准诊断系统的关键技术支撑。它全面覆盖硬件在环仿真平台的各个环节,从硬件连接、数据交互到系统功能实现,都发挥着不可替代的作用,…...
[项目]基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能
基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能 一.芯片介绍二.配置CubeMX三.激光测距芯片驱动编写四.定高PID的计算五.定高PID作用到电机上 一.芯片介绍 激光测高芯片在飞控板下侧: 原理图如下: 型号为:VL53LX1,为国产…...
HTML跑酷
先看效果 再上代码 <!DOCTYPE html> <html> <head><title>火柴人跑酷</title><style>body {margin: 0;overflow: hidden;background: #87CEEB;}#gameCanvas {background: linear-gradient(to bottom, #87CEEB 0%, #87CEEB 50%, #228B22 …...
C++Primer学习(14.1 基本概念)
当运算符作用于类类型的运算对象时,可以通过运算符重载重新定义该运算符的含义。明智地使用运算符重载能令我们的程序更易于编写和阅读。举个例子,因为在Sales_item类中定义了输入、输出和加法运算符,所以可以通过下述形式输出两个Sales_item…...
【Goalng】第九弹-----文件操作、JSON处理
🎁个人主页:星云爱编程 🔍所属专栏:【Go】 🎉欢迎大家点赞👍评论📝收藏⭐文章 长风破浪会有时,直挂云帆济沧海 目录 1.文件操作 1.1文件介绍 1.2.文件流 1.3.打开和关闭文件 1…...
锐评|希捷NVMe闪存+磁盘混合存储阵列
近日,希捷在英伟达GTC 2025会议上展示了NVMe混合闪存/磁盘阵列技术。这个混合存储阵列确实在当前AI数据存储困境中撕开了一道新口子,但远称不上完美,优缺点都极为鲜明。 从优点来看,希捷切中了大多数企业的痛点。AI领域数据量呈爆…...
如何缩短研发周期,降低研发成本?全星APQP软件为您提供解决方案
如何缩短研发周期,降低研发成本?全星APQP软件为您提供解决方案 一、 系统概述 全星研发管理APQP软件系统是一款专为产品研发和质量管控打造的智能化平台,旨在帮助企业高效推进APQP(先期产品质量策划)流程,…...
Centos7安装cat美化工具lolcat
Centos7安装cat美化工具lolcat Centos7安装lolcat使用ruby安装lolcat配置cat系统别名 结果验证 Centos7安装lolcat lolcat :一个在Linux 终端中输出彩虹特效的命令行工具 使用ruby安装lolcat # 安装ruby和zip yum install -y ruby# 查看ruby版本 ruby --version# …...
bluecode-20240913_1_数据解码
时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 256MB,其他语言 512MB 难度:困难 数据解码 指定有一段经过编码的二进制数据,数据由0个或多个"编码单元"组成。"编码单元"的编码方式…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的缓存技术:使用 Redis 提升性能
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…...
典范硬币系统(Canonical Coin System)→ 贪心算法
【典范硬币系统】 ● 典范硬币系统(Canonical Coin System)是指使用贪心算法总能得到最少硬币数量解的货币面值组合。 ● 给定一个硬币系统 ,若使其为典范硬币系统,则要求其各相邻面值比例 ,及各开区间 内各金额…...
hbuilderx打包iOS上传苹果商店的最简流程
无需Mac电脑,无需安装xcode和transporter,其实使用hbuilderx开发的ios软件,也可以上架到苹果的app store商店的。 只需要有苹果开发者中心的苹果开发者账号就行了。 假如你还在了解上架阶段,还没打包,也还没有创建任…...
DeepSeek详解:探索下一代语言模型
文章目录 前言一、什么是DeepSeek二、DeepSeek核心技术2.1 Transformer架构2.1.1 自注意力机制 (Self-Attention Mechanism)(a) 核心思想(b) 计算过程(c) 代码实现 2.1.2 多头注意力 (Multi-Head Attention)(a) 核心思想(b) 工作原理(c) 数学描述(d) 代码实现 2.1.3 位置编码 (…...
python的内存管理
目录 1. 引用计数 2. 垃圾收集(GC) python的内存管理主要是引用计数和垃圾回收器来进行内存管理 1. 引用计数 每个 Python 对象都有一个引用计数,当引用计数为零时,对象的内存会被释放。 import sysa [] # 创建一个空列表对…...
【STL】list
l i s t list list 是 C C C 标准模板库( S T L STL STL)中的一个序列容器( S e q u e n c e C o n t a i n e r Sequence\ Container Sequence Container),它允许在容器的任意位置快速插入和删除元素,是一…...
证券公司主要业务分析及当前佣金最低免五情况探讨
我是StockMasterX,今日想分析证券公司主要业务,并探讨当前佣金最低且免五的证券公司情况,此议题具有一定研究价值,我从事股票交易多年,与证券公司互动频繁,前日晚间饮茶之际,浏览手机时对此深思…...