OpenHarmony当前进展和未来趋势

操作系统自20世纪50年代诞生,经历了从专用操作系统到通用操作系统的转变。整体可以将操作系统的发展历史分为3个阶段:PC时代、移动互联网时代、万物互联时代。

PC时代主要以计算机为主,用户规模从1970年的10亿增长到1990年的30亿。这一时代诞生了Windows、Linux、MacOS等操作系统。由于Windows操作系统的广泛应用部署,微软于20世纪90年代成为全球市值最高的公司。

随着智能手机的普及,操作系统正式进入了移动互联网时代,苹果推出了iOS操作系统,支撑苹果成为全球市值最高的科技公司;谷歌2005年收购了Android公司,并持续地进行研发投入和版本迭代,如今Android操作系统已经成为世界上发行量最大的移动智能操作系统。

在万物互联时代,随着越来越多的设备接入互联网,单一操作系统很难适应多样化的智能终端、各种复杂应用场景的需求。谷歌、华为等各大企业纷纷进入物联网操作系统领域,并持续加大这方面的投入。

谷歌从2016年开始研发基于Zircon微内核的Fuchsia操作系统,可以取代为移动设备设计的 Android,计划用于个人移动设备、IoT设备等不同算力和需求的场景。

华为于2019发布了基于物联网的鸿蒙操作系统HarmonyOS,随后于2020年正式发布了开源版本,也就是OpenHarmony,面向全场景、全连接,适用于各类智能设备。

1 OpenHarmony发展历史

2012年,华为总裁任正非表示:“华为做终端操作系统是出于战略的考虑”,此时鸿蒙操作系统的概念首次出现在大众视野。

2016年5月,鸿蒙正式在华为公司的软件部内部立项并开始投入研发。

2019年8月9号,华为正式发布了HarmonyOS 1.0,该系统率先部署在智慧屏上。

2020年9月10日,华为在HDC大会上发布HarmonyOS2.0。该版主要在3个方面做出重大提升:分布式的软总线、分布式的数据管理以及分布式的安全。

2020年6月,由工信部牵头的开放原子开源基金会正式成立,也是国内首个开源软件基金会。华为将HarmonyOS2.0中的基础能力部分开源出来,并捐赠给开放原子开源基金会,正式成立了OpenHarmony开源项目。

2021年6月,OpenHarmony发布了2.0 Canary版本,支持轻量带屏设备。该版本新增22个子系统,支持全面的OS能力,支持内存大于128 MB的带屏设备开发等。

2021年9月,OpenHarmony发布了3.0 LTS版本,支持简单标准带屏设备。该版本新增几十项特性,支持方舟JS编译工具链和运行时,支持JS UI框架应用开发和运行。

2022年3月,OpenHarmony发布了3.1 Release版本,支持复杂标准带屏设备。该版本基础能力得到增强,主要体现在多媒体能力、图形显示能力、内存管理能力等,分布式能力也得到了增强。

2023年4月,OpenHarmony发布了3.2 Release版本,全面支持复杂标准带屏设备。该版本能力提升主要如下:

①系统流程度:架构级的全面优化,包括ArkUI最小化更新技术、并行化极速启动架构、高性能ArkTS引擎、基础库性能优化等。

②系统功能方面:HDF支持800多个HDI标准化设备接口,API 9拥有18 000+ ArkTS API,已经足够支持复杂大型应用的开发。

③应用性能方面:提供NAPI及混合开发能力、丰富的Native API、TaskPool并行开发框架、DevEco Insight实时性能分析工具等,支持开发极致高性能的框架和应用。

④分布式能力:进一步优化和完善分布式屏幕能力、分布式数据技术以及一次开发多端部署能力上。

整个OpenHarmony版本迭代如图1所示。

图1 OpenHarmony版本演进路线

此外,在2023年6月,OpenHarmony发布了4.0 Beta版本,ArkUI进一步完善组件能力和效果,并提供首批API Level 10接口。正式的4.0 Release版本在2023年9月发布。

2 鸿蒙、HarmonyOS、OpenHarmony三者关系

从某种意义上来说,鸿蒙包括HarmonyOS和OpenHarmony。

2016 年 5 月,华为消费者 BG 软件部开始立项研发“分布式操作系统 1.0 版本”,这就是鸿蒙系统的雏形。

考虑到华为设备的现有数量和鸿蒙系统初期软件生态的不完善,华为鸿蒙系统技术上兼容Android应用,同时集成了华为自身的能力,包括HMS等,形成了一个可以在华为手机、智慧屏、平板等设备上运行的操作系统,也就是HarmonyOS,该系统不开源。

随着华为开源战略的布局,为确保鸿蒙系统能有一个良好的生态,吸纳更多共建参与,华为将鸿蒙系统的基础能力部分开源出来,开源部分也就是OpenHarmony。该部分为华为自研项目,不兼容Android生态。

所以,一般OpenHarmony指开源鸿蒙,HarmonyOS指华为闭源鸿蒙,两者在应用框架上都采用ArkUI开发框架,应用开发上互相兼容。

随着OpenHarmony生态的完善,OpenHarmony会逐步替代HarmonyOS,最终形成一个统一开源鸿蒙的生态系统。

3 OpenHarmony与Android的对比

Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

在系统架构设计之初,OpenHarmony定位就不是Android的替代品,OpenHarmony的目标是构建一个面向万物互联时代的分布式操作系统,与Android并非同一个赛道。

两者在系统架构设计上比较相似,不过OpenHarmony在传统的系统架构上新增了分布式相关能力,如图2所示。

图2 系统架构对比

可以看到,OpenHarmony有着自己的一套架构设计和实现,在开发语言、运行时、应用框架等方面都不同于Android,两者是完全不同的操作系统。

(1)内核对比

Android:基于Linux内核,程序的安全性、网络协议、内存管理、进程管理、驱动程序都由Linux内核提供。另外,Android Runtime(ART)就是依靠Linux内核来执行底层功能的,其中包括线程和底层内存管理。

OpenHarmony:采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

(2)运行时对比

Android Runtime(ART)是Android上的应用和部分系统服务使用的托管式运行时。ART及其前身Dalvik最初是专为Android项目打造的。作为运行时的ART可执行Dalvik可执行文件并遵循Dex字节码规范。

方舟eTS运行时是OpenHarmony上默认的ArkTS语言运行时,提供完备的C++交互ArkTS NAPI和各种高性能的垃圾回收器,驱动着万物互联时代的OpenHarmony应用程序。

4 技术架构

OpenHarmony整体遵从分层设计,从下向上依次为内核层、系统服务层、框架层和应用层。系统功能按照“系统>子系统>组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪掉某些非必要的组件。OpenHarmony技术架构如图3所示。

图3 OpenHarmony技术架构

(1)内核层

内核层包括内核子系统和驱动子系统。OpenHarmony是一个支持多种内核的操作系统,包括可以支持华为自研的LiteOS内核、Linux内核等。开发者可以根据自身的硬件平台资源、应用场景选择不同的内核。此外、内核子系统也支持开发者使用其他内核,并通过内核抽象层向上提供统一的操作系统能力。

(2)系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集。

(3)框架层

框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。

(4)应用层

应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

4.1 技术特性

OpenHarmony最主要的技术特性是以下3点:

(1)统一OS,弹性部署

OpenHarmony采用组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间按需弹性部署,全面覆盖了ARM、RISC-V、x86等各种CPU,硬件形态支持手机、平板、工业网关、路由器、音箱、耳机等。

(2)一次开发,多端部署

OpenHarmony提供用户程序框架、Ability框架以及UI框架,能够保证开发的应用在多终端运行时的一致性。一次开发、多端部署。多终端软件平台API具备一致性,确保了用户程序运行的兼容性。

(3)硬件互助,资源共享

多种设备之间能够实现硬件互助、资源共享,依赖的关键技术包括分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度等。

分布式软总线为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。分布式软总线技术架构如图4所示。

图4 软总线架构

分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。

分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。

分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。

5 应用开发框架——ArkUI

应用框架是操作系统连接开发者生态、实现用户体验的关键基础设施。OpenHarmony为开发者提供了ArkTS开发语言以及ArkUI开发框架。

ArkUI整体架构如图5所示。最上层提供了自研声明式UI范式,也支持类Web范式;中间层为方舟编译器和运行时、声明式UI后端引擎以及渲染引擎;下层为平台适配层和平台桥接层。此外,ArkUI开发框架还配套了相应的IDE开发工具以及工具链,以提升开发体验。

此外,ArkUI不仅仅局限于OpenHarmony或者HarmonyOS,它是一个支持跨平台的UI框架,也可以运行在Android、iOS等系统上。

图5 ArkUI框架

ArkUI的声明式范式通过语法扩展方法提供了装饰器、自定义组件、UI描述、状态管理、内置组件、属性方法以及事件方法等模块,可以根据用户需求灵活组合,从而形成定制化界面,如图6所示。

图6 ArkUI声明式范式

7 生态发展

一个操作系统的成果,除了系统本身能力足够优秀之外,最重要的是其生态是否足够完善。生态的维度包括硬件生态、应用生态、共建单位、开发者生态等。

7.1 硬件生态

当前,OpenHarmony已经吸引超过50家企业参与共建、落地多个行业,160多款设备搭载OpenHarmony操作系统,如图7所示。接下来从以下几方面介绍OpenHarmony的生态进展。

图7 OpenHarmony生态总览

(1)芯片生态

2020年9月,OpenHarmony第一次发布并开源时,润和软件率先发布了3款支持OpenHarmony海思芯片的开发板,分别是Hi3861、Hi3516、Hi3518。

经过几年发展,目前OpenHarmony已经支持超过40款芯片,芯片适配历程如图8所示。

图8 芯片适配历程

OpenHarmony芯片合作伙伴包括瑞芯微、全志、晶晨、Intel、AMD、NXP、赛昉、飞腾、龙芯、汇顶、瑞昱、上海博通、联盛德、博流、翱捷、意法半导体、芯海等。

(2)设备生态

截止到2023年7月8日,通过OpenHarmony兼容性认证的商用设备数量已达162个,相关厂家80家,如图9所示。

设备形态包括电子学生证、扫码支付终端、冰箱、摄像头、网关等。其中,美的13款、华帝9款,产品形态都是智能家电。联迪9款、升腾6款都是金融行业相关设备,包括POS机、收款云喇叭等。

图9 商用设备厂家数据

7.2 行业落地

为推动相关行业落地,OpenHarmony鼓励企业用户基于开源版本的OpenHarmony系统,根据行业特点,在系统中新增行业组件、应用功能等,最终形成企业自己的行业发行版。

截至2023年7月8日,通过OpenHarmony兼容性测评的行业发行版总共34个,相关企业19家。

对行业发行版进行数据统计和分析,如图10所示。可以看到,OpenHarmony已经落地教育、金融、公共安全、超高清、交通、电力、医疗、工业、智慧城市等。其中,教育和金融行业的发行版最多,都达到了5个。

图10 行业发行版数据

此外,对已经通过兼容性认证的商用设备的行业属性进行数据统计,如图11所示。可以看到当前OpenHarmony在金融、家电行业的产品最多,两者总共占比为49%,接近一半,其次是工业、教育、交通等行业。

图11 行业发行版厂家数据

7.3 应用生态

应用生态是OpenHarmony接下来几年发展的重中之重。

在API能力方面,OpenHarmony已经发展到API9版本,API数量已经达到了18 000多个,包括声明式UI能力、应用开发框架、WEB能力、多媒体能力、分布式能力等,已经可以支持复杂应用开发。

2022年HDC大会上,华为与鸿蒙生态的 14 家合作伙伴签署合作备忘录,将在鸿蒙生态领域深度投入。参加签约的品牌合作伙伴包括新浪、中国国航、人民网、金山办公、奇安信、去哪儿网、乐元素、科大讯飞、酷狗、百度、小沃科技、网易、航旅纵横、搜狗。

搜狗已经推出了OpenHarmony版本的输入法;Cocos引擎适配OpenHarmony,将为应用开发者和用户带来更多的便利和创新;Unity引擎已经能够支持OpenHarmony系统,并且渲染效果和帧率与传统操作系统不相上下。

8 展 望

OpenHarmony作为一款全新的操作系统,其设计理念非常先进,相信未来OpenHarmony一定会发展成一个伟大的操作系统,在装机量、应用数量上有重大突破,在万物互联时代,成为下一代知名操作系统。OpenHarmony未来发展方向主要围绕下面几点。

8.1 架构优化

系统架构设计上持续优化,包括ArkUI重构、视窗架构优化,实现极简UI绘制管线、分布式窗口、多源窗口融合,进一步探索高性能、轻量化的2D&3D融合的UI框架,以实现2D&3D混合UI开发。

进一步优化芯片架构的代码、驱动代码、第三方库、系统组件等相关设计,减少代码耦合性、降低代码复杂度,使得代码结构更合理,降低代码冗余。

进一步提升系统流畅度、稳定性,给开发者提供更易用、更好用以及更高效的并发API。在并发调度上,也将针对现存系统中的线程泛滥问题,从时间和空间两个维度设计相关方案进行优化和改进,并将开发一套统一的并行框架,在运行时根据任务依赖状态和可执行资源自动并发调度和执行任务。

8.2 系统能力

当前,OpenHarmony核心API数量已经到18 000之多,而Android核心API数量为36 000之多。未来,OpenHarmony将围绕声明式UI能力、应用开发框架、WEB能力、多媒体能力、多媒体能力、分布式能力、通信能力、安全能力、全球化服务、DEX、电话等能力,提供更丰富的API,如图12所示。

图12 系统能力

8.3 分布式能力

分布式能力进一步增强,提供更强大的全场景能力。分布式能力效率进一步提升,减少时延、实现大带宽场景的分布式流转和协同,从交互体验走向场景化体验。

轻量系统软总线能力完善,实现IoT设备与智能设备之间的软总线互联互通。

优化软总线代码,减少资源占用,在内存更小的芯片上实现软总线功能。

8.4 多内核

OpenHarmony未来将支持更多的内核,其中比较重要的是硬实时内核和微内核。

(1)硬实时内核

在工业控制领域,实时(Real Time) 是很重要的要求。传统LiteOS-M内核在实时性上达不到硬实时的要求。为了补齐硬实时的能力,OpenHarmony已经开始支持UniProton内核。该内核主要聚焦硬实时场景,同时为上层业务软件提供一个统一的操作系统平台,屏蔽底层硬件差异,并提供强大的调试功能。

(2)微内核

当前,OpenHarmony支持的内核为LiteOS和Linux,两者都是宏内核。OpenHarmony微内核已经在研发中,未来OpenHarmony将支持微内核架构。

同时,OpenHarmony也将基于微内核技术的可信执行环境,通过“形式化方法”显著提升了TEE内核的安全等级,全面提升全场景终端设备的安全性。

8.5 应用生态

应用生态建设是OpenHarmony未来发展的重心,主要围绕以下几方面展开:①补齐应用能力,提供高效的应用API、适配更多的第三方库组件,完善ArkUI开发框架,给开发者提供一个更高效的应用开发环境。②赋能开发者,提供各种激励,建立应用上架、应用商城等,让开发者更有动力开发OpenHarmony应用。③拓展应用厂家,与头部应用厂家建立联合开发机制,加速头部应用支持OpenHarmony,共同建设应用生态;赋能中小应用厂家、开发者,帮助他们解决OpenHarmony应用开发过程中的问题,实现应用生态的突破。

为了能让大家更好的学习鸿蒙 (OpenHarmony) 开发技术,这边特意整理了《鸿蒙 (OpenHarmony)开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙 (OpenHarmony)开发学习手册》

入门必看:https://qr21.cn/FV7h05

  1. 应用开发导读(ArkTS)
  2. ……

HarmonyOS 概念:https://qr21.cn/FV7h05

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

如何快速入门?:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. 构建第一个JS应用
  4. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/340632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QComboBox 下拉框

文章目录 1、简介2、functions3、Signal QT 官方文档参考地址:https://doc.qt.io/qt-5/qcombobox.html 1、简介 QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。 2、functions 1、voi…

供应商导添加预扣税字段

文章目录 1 Introduction2 Code3 Summary 1 Introduction I only think I can assign value to them and I implement it by the following code . 2 Code LOOP AT gt_bukrs INTO gs_bukrs WHERE lifnr gs_alv1-lifnr.CLEAR:ls_company.ls_company-task M.ls_company-data…

mybatis----动态Sql

1.if标签 通过if标签构建动态条件&#xff0c;通过其test属性的true或false来判断该添加语句是否执行。 mapper接口 public interface AccountMapper {List<Account> selectAllByCondition(Account account); } 映射文件 <select id"selectAllByCondition&q…

具有运动模糊的大规模场景的混合神经绘制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;具有运动模糊的大规模场景的混合神经绘制1、研究背景2、方法提出3、视点依赖归一化方法4、训练方法5、试验细节及对比 YOLO模型1、…

.NET高速开发分层架构,ASPNETCore,IOC开发

分层架构,ASPNETCore,IOC开发 大家好,我是行不更名,坐不改姓的宋晓刚。今天我将带领大家深入了解分层架构、ASP.NET Core、IoC 开发,以及共同开发的魅力。我们将一同探索如何利用这些先进技术构建高效、可维护的数据库应用程序。 家人们,如果有什么不懂,可以留言,或者…

【JS逆向学习】国家加密系列-SM算法实例

SM系列 1、国家加密算法介绍 事实上从 2010 年开始&#xff0c;我国国家密码管理局就已经开始陆续发布了一系列国产加密算法&#xff0c;其中SM1、SM4、SM7、祖冲之密码&#xff08;ZUC&#xff09;是对称算法&#xff1b;SM2、SM9是非对称算法&#xff1b;SM3是哈希算法。目…

大数据导论(4)---大数据应用

文章目录 1. 在互联网中的应用1.1 推荐系统1.2 长尾理论1.3 推荐方法与模型1.4 推荐系统应用 2. 在其他领域的应用2.1 企业营销2.2 智慧交通 1. 在互联网中的应用 1.1 推荐系统 1. 推荐系统产生&#xff1a;  (1) 互联网的飞速发展使我们进入了信息过载的时代&#xff0c;搜索…

二叉树题目:二叉树的序列化与反序列化

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的序列化与反序列化 出处&#xff1a;297. 二叉树的序列化与反序列化 难度 8 级 题目描述 要求 序列…

数据结构:堆与堆排序

目录 堆的定义&#xff1a; 堆的实现&#xff1a; 堆的元素插入&#xff1a; 堆元素删除&#xff1a; 堆初始化与销毁&#xff1a; 堆排序&#xff1a; 堆的定义&#xff1a; 堆是一种完全二叉树&#xff0c;完全二叉树定义如下&#xff1a; 一棵深度为k的有n个结点的二…

微信小程序的nodejs+vue课堂在线学习系统教学辅助平台PHP设计与实现

小程序主要实现功能&#xff1a;一、用户的登录与实现 二、课程页面。学生们可以观看课程视频【课程视频有章程】&#xff0c;搜索课程&#xff0c;课程签到&#xff0c;评论课程&#xff0c;课后答题&#xff08;课后成绩&#xff09;&#xff0c;课程互动&#xff08;在视频下…

【深度学习】手把手教你使用 Auto DL 远程服务器连接 PyCharm

前言 文章性质&#xff1a;实操记录 &#x1f4bb; 主要内容&#xff1a;主要记录了如何租用 Auto DL 服务器&#xff0c;以及如何在 PyCharm 中连接远程服务器。 相关文档&#xff1a;如何使用 Auto DL 远程服务器连接 PyCharm 运行代码 - 知乎 冷知识1&#xff1a;小伙伴们不…

c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)

文章目录 1.把字符串转换成整数题目详情代码思路 2. 344.反转字符串题目详情代码1思路1代码2思路 3. 387. 字符串中的第一个唯一字符题目详情代码思路 4. 917. 仅仅反转字母题目详情代码思路 1.把字符串转换成整数 传送门 题目详情 代码 class Solution { public:int StrToI…

提升用户体验的利器——TTS语音合成软件盘点

提升用户体验的利器——TTS语音合成软件盘点 在当今信息爆炸的时代&#xff0c;人们每天都要处理大量的文本信息。因此&#xff0c;将文本信息转化为语音信息&#xff0c;使得信息能够以更自然、更方便的方式传达给人们&#xff0c;就显得尤为重要。这就是TTS&#xff08;Text…

【C++修行之道】竞赛常用库函数(sort,min和max函数,min_element和max_element、nth_element)

目录 一、sort 1.1sort简介 语法 参数 功能 适用容器 1.2sort的用法 1.3自定义比较函数 示例 1265蓝桥题 —— 排序 二、min和max函数 三、min_element和max_element 497蓝桥题 —— 成绩分析 四、nth_element 一、sort 1.1sort简介 sort函数包含在头文件<a…

手机软件的测试主要有哪些方面去测试,性能测试用什么去测试好?

手机App软件与Web软件系统的架构是不一样的&#xff0c;手机是基于CS架构&#xff0c;而Web系统是基于BS架构的&#xff0c;所以测试手机App软件那么要考虑的东西会更多一些。 分析题主的问题包含两块&#xff1a; 1、手机软件(App)测试主要有哪些方面&#xff1f; 2、手机软件…

【C/C++】C/C++编程——为什么学习 C++?

当提到C的时候&#xff0c;很多人会觉得语法复杂、学习曲线陡峭&#xff0c;并且好像与C语言还有点"纠缠不清"。尽管如此&#xff0c;C仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能&#xff08;AI&#xff09;领域&#xff…

java数据结构与算法刷题-----LeetCode645. 错误的集合(位运算解法需要重点掌握)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 法一&#xff1a;桶排序思想法二&#xff1a;位运算 法一&#x…

gdip-yolo项目解读:gdip模块 |mdgip模块 |GDIP regularizer模块的使用分析

gdip-yolo是2022年提出了一个端到端的图像自适应目标检测框架&#xff0c;其论文中的效果展示了良好的图像增强效果。其提出了gdip模块 |mdgip模块 |GDIP regularizer模块等模块&#xff0c;并表明这是效果提升的关键。为此对gdip-yolo的项目进行深入分析。 gdip-yolo的论文可以…

ARM 驱动 1.22

linux内核等待队列wait_queue_head_t 头文件 include <linux/wait.h> 定义并初始化 wait_queue_head_t r_wait; init_waitqueue_head(&cm_dev->r_wait); wait_queue_head_t 表示等待队列头&#xff0c;等待队列wait时&#xff0c;会导致进程或线程被休眠&…

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…