(上图来源于大会主题演讲)按照鸿蒙官方给出的数据,这次技术升级带来的性能收益包括:渲染速度提升 20%、渲染内存降低 30%、渲染指令数降低 20%。除了渲染树优化,鸿蒙应用模型进行了彻底的迭代,从 API 7 支持的 FA 应用模型切换为 API 9 的
Stage 应用模型,FA 模型在未来会淡出历史舞台。Stage
模型相关的知识点有很多,在性能这一 Part,我们着重了解下它带来的最为重大的变化——同一个虚拟机中可以容纳更多个组件。这使得开发者更为方便地共享状态的同时,还能大幅降低内存的占用率:
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——利用Stage应用模型快速构建HarmonyOS应用)除了应用模型的更新,在 ArkCompiler 运行时层面,鸿蒙打造了 Lite Actor 轻量化并发模型。鸿蒙除了轻量化基础架构,还支持了对象共享机制(目前支持不可变对象的共享,未来还会支持可变对象的部分共享):
(上图来源于分论坛——DevEco开发工具新特性——深入浅出ArkCompiler)在支持传统的基于 Worker 的多线程之余,鸿蒙还支持新的 Task Pool API。从代码体验上来说,相比 Worker,Task Pool 的使用更加直观清晰,开发者无需关心并发实例的生命周期,业务无需关心场景下并发负载问题,因为负载管理在运行时由 OS 层面统一协同处理,管控线程数和线程资源开销。当然,除了以上三点之外,ArkUI 的 AOT 编译管线、XComponent 接入底层的高性能渲染方案以及各种性能调优后的高阶组件库……都大幅提升了 3.1 版本的鸿蒙的运行性能。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——利用Stage应用模型快速构建HarmonyOS应用)Stage 模型体现了鸿蒙“节制”的设计思想,不支持开发者配置多进程,不支持开发者自定义服务,不支持应用直接拉起自己的场景服务;只支持应用间 UI 展示界面的相互调起以及通过系统服务调起场景服务。最后聊一下 Hvigor 对构建任务流的自由扩展(Hvigor 是 DevEco 集成的官方构建打包工具)。说实话,在来参加 HDC 之前,我对 Hvigor 构建工具的认知还处于黑盒状态,只是从之前的技术交流中知道它使用了主流的 Web 向的前端构建方案(Webpack),当然因为其 TS 超级的语言特性,也包括了相关的语言编译方面的 Configuration。但是在听了华为工程师的分享后,我了解到,在 Hvigor 的构建 pipeline 中,工具会为开发者预留了很多 Task 插槽,可以插入到你想要介入的编译构建环节:
(上图来源于分论坛——DevEco开发工具新特性——DevEco Hvigor 工具助力灵活高效构建打包)比如构建前的集成环境检测、构建过程中插桩修改特定代码和资源以及构建打包的后置任务。开发者可以复用 Hvigor 的调度能力,提升任务的执行效率。对开发范式、应用模型和构建打包的精心设计,让开发者享受到“我命由我不由天”,除此之外,在开发调试、调优和测试环节,鸿蒙的开发者工具也做了大量的工作,这里且不一一赘述。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——HarmonyOS动态响应式布局介绍)通过断点、Media Query 和栅格化,响应式布局可以实现界面随外部容器大小有级不连续变化。而在系统默认推荐的超小、小、中、大四个屏幕断点的基础上重构栅格系统,使得局部容器的变化方式可以相互独立,共同打造 Harmony(和谐)的交互体验。技术上,鸿蒙对交互事件手势进行了归一化处理,提供了大量的具备自适应布局能力的组件,但是,比较吸引我的是鸿蒙对于端(系统)能力的处理和封装。做过移动端开发的同学都知道,端能力的纷杂堪比当年对 IE 6/7/8 以及各种移动版本 Webview 的支持,而因为端能力的适配问题引入的 bug 以及不良开发体验给很多程序员都带来了不好的体验。对于语言层面,可以针对 JS 引擎不同版本进行统一的 polyfill 管控,而对于系统的端能力,如何分而治之,则需要投入更大的精力。这不光影响功能是否正常运行,对于 OpenHarmony 这种分布式的 OS,由于需要支持更重 IoT 设备,端能力的管控显得更加重要。为此,鸿蒙引入了一种叫做 syscap(System Capability)的机制来解决端能力的管控问题,把系统能力分为支持能力集、要求能力集和联想能力集。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——一次开发,多端部署)支持能力集是针对设备的,不同设备的能力集合不一样;要求能力集,顾名思义,是针对应用在不同设备上需求的交集,因为必须提供这些能力应用才可用;联想能力集则针对开发场景,是在 IDE 中针对能力进行的联想 API 集合。你可能会问,既然设备之间的能力不一样,那么在使用能力的时候,如何判断哪些能力可用,哪些能力不可用?答案是:`CanIUse`。对,就是大家在 Web 开发中经常做兼容性查询的那个 CanIUse 网站同名的查询接口,开发者可以通过这个方法来判断设备是否支持某个系统能力。能力的支持程度决定了分发结果,而开发者也可以在配置文件中对联想能力和要求能力进行配置。配置,这两个字很关键。鸿蒙力求使用最少的代码,依赖声明式的 UI 编程和丰富的组件库,依赖项目丰富的配置文件,落地“一多开发”模式,为开发者提供良好的编程体验,为用户提供优秀的跨设备使用体验。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——如何利用ArkUI开发跨平台的应用程序)这里背后要解决的问题很多,比如组件和 API 的适配,系统能力的适配,资源适配,工作流的适配等等。从美的技术专家的分享中,能够看到,在“把 ArkUI 变成通用跨平台的框架”这条路上,鸿蒙团队和第三方开发者已经做了很多工作。比如 MiniX,这是基于 OpenHarmony ArkUI 二次开发的适配美的 IoT 场景的跨端应用开发框架,已经对组件和 API 进行了分级适配,并且还开发了配套的定制化的 VSCode 插件。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——ArkUI跨平台能力节约开发成本实践)对于三方框架向 ArkUI 桥接这一个路径,鸿蒙同京东进行了深入的合作。京东轻量级的跨端渲染框架 MCube 将内容通过动态化模板的方式下发到端侧,经过 DSL 解析来实现局部数据更新。与此同时,可以借助 ArkUI 的统一渲染能力,减少渲染节点,实现性能和功耗的优化。
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——HarmonyOS开发语言与框架新进展)对于三方框架如何同 ArkUI 声明式开发范式进行桥接,我也给出了自己的看法,即“混合跨端开发方式”。百度的动态化开发框架 Talos 以及其包含的轻量级动态化方案 Talos Lite,未来会和 OpenHarmony 技术栈进行深入的整合。动态化命令式的三方框架想要桥接到 ArkUI 声明式的开发范式上,需要整合三方库自己的 Element Tree 和鸿蒙的节点树,实现 widget 层的组件级别的渲染驱动,而 ArkUI 暴露的 XComponent 组件以及自定义组件的开发模式,能让这一桥接过程变得更加深入,性能更加高效(Talos-OH 2.0)。与此同时,像 MCube、Talos Lite 这样的“描述协议型”的轻量级跨端渲染方案,则能充分发挥出 ArkUI 高性能的渲染特性。因此我认为,基于“体验一致性”、“性能”、“复杂度”和“标准化对齐”的决策模型,能够指导开发者进行正确的技术选型:
(上图来源于分论坛——鸿蒙开发套件(语言与框架)——Talos应用框架与ArkUI对接实践)无论是让三方框架接入鸿蒙生态,还是让 ArkUI 自身成为跨端开发框架,鸿蒙都在对外展示其极大的包容度。相信在不久的将来,OpenHarmony 会以开源开放的姿态,成为主流跨端开发框架的选型之一,同时也成为更多三方框架的坚实基座。给定以下方法:defsome_method:valueend以下语句按我的预期工作:some_method||:other#=>:valuex=some_method||:other#=>:value但是下面语句的行为让我感到困惑:some_method=some_method||:other#=>:other它按预期创建了一个名为some_method的局部变量,随后对some_method的调用返回该局部变量的值。但为什么它分配:other而不是:value呢?我知道这可能不是一件明智的事情,并且可以看出它可能有多么模棱两可,但我认为应该在考虑作业之前评估作业的右侧...我已经在R
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它
当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在
我感到有点困惑——大约24小时以来,我一直在考虑在我的项目中使用哪种组播技术。基本上,我需要的是:创建组(通过一些后端进程)任意客户端广播消息(1:N,N:N)(可能)直接消息(1:1)(重要)使用我自己的后端(例如,通过某种HTTPAPI)对客户端进行身份验证/授权能够通过后端进程(或服务器插件)踢出特定的客户端这是我要的:Ruby或Haxe中的后端相关流程JS+Haxe(Flash9)中的前端—在浏览器中,因此理想情况下通过80/443进行通信,但不一定。因此,这项技术必须能够在HaxeforFlash中轻松访问,最好是Ruby。我一直在考虑:RabbitMQ(或OpenAMQ)、
文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据
所有技术终将演变为基础设施。2022年6月11日,科创人·数智未来私董会第4期活动在线举办,本次活动由科创人、北航投资、方云智能联合举行;微软(中国)首席技术官韦青担任本期活动主讲嘉宾,携手14位企业高级决策者围绕数智未来课题进行深度探讨。科创人·数智未来私董会第3期活动回顾|《狗尾巴的故事-数智时代的第一性原理》与会嘉宾依次是:微软(中国)CTO韦青、领鹊科技创始人&CEO张志祥、食方科技创始人&CEO黄龚、中科云创创始人&CEO周北川、北航投资总经理王剑飞、中煤信息技术首席专家黄韶杰、天云数据创始人&CEO雷涛、中国农业银行科技与产品管理局信息安全与风险管理处处长何启翱、索迩科技创始人&C
文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们
文章目录华为OD面试流程1.mysql数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?2.谈谈springIOC的理解,有什么好处,解决了什么问题3.谈谈springAOP的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?4.Erika和zookeeper有了解过吗,作用是什么,主要解决了什么问题5.谈谈JDK、JRE、JVM的理解,区别是什么6.谈谈对泛型的理解7.JVM的组成华为OD面试流程机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。性格测试:机试技术一面(本专栏核心)技术二面(本专栏核心)主管面试定级定薪发of