Worker能解决两个问题:解决程序阻塞问题:提升效率。不过Worker还有局限性,它不能 *** 作DOM。解决方法如下:
1、首先在创建之前,检测所用浏览器是否支持它,当前除了IE浏览器以外,其它主流浏览器都是支持的。
2、创建web worker文件:通过postMessage方法向 页面传回一段消息。
3、创建 Web Worker对象:添加一个事件监听器,传递消息时,执行事件监听器中的代码。
4、使用terminate方法终止 Web Worker。
5、最后检测是否存在 worker,如果不存在,则创建一个新的对象,然后运行 js代码中的内容。被调用的js文件内容如下。
为了执行字节码,JVM需要一些准备的工作。给类名,在磁盘上查找类,加载它,验证字节码,将类装载为自己的内部数据结构,每一步都需要花费一些时间,想想每次JVM都要加载成千上万个类,这时时间上的花费很明显可以看得出来。
因为Jar包并没有改变,class-data一直都是相同的,每次JVM执行的也是相同的查找,加载,验证动作。
AppCDS就是让类只做一次上述的验证,加载动作,然后将其打包,后续在运行相同的jar包时,直接从打包文件中读取类数据,或者当前同时运行的JVM实例直接共享一份相同的类数据。
使用APPCDS的完整步骤一般如下,不过现在JDK13简化了我们的 *** 作,一般我不需要进行下面的所有步骤。
1 创建一个class的列表,让这些class可以被打包。
2 创建归档使用
3 使用归档
在JDK13中,系统内置的共享类以及被默认创建了,位于 ${JAVA_HOME}/lib/server 目录下
打印类加载日志,查看日志文件中的信息,如果出现 shared objects files 代表使用了appcds的归档文件。
注意: 不是所有的类都会被共享,当前我们自定义的类仍然会走全部的类装载流程。
明显看出来在使用归档之后用户态的时间缩短了一些,这次jar包,仅仅打印Hello World,没有做任何事情,如果在类增多的时候,效果就非常明细。
其实JDK13已经默认帮我们把系统的类文件进行归档了,我们在使用的时候也不需要指定什么参数,默认 -Xshare:on 。系统类的归档我们不需要关系太多,那么如何打包我们的应用类文件呢。
1 使用 -XX:DumpLoadedClassList=classeslst 查看当前JVM装载的类列表
2 使用 -XX:SharedClassListFile=classeslst 来指定那些类需要共享,以及指定 -XX:SharedArchiveFile=app-cdsjsa 打包文件位置,这里不需要使用-jar来运行程序,指定jar包的位置即可。
3 可以在JVM退出的时候,自动归档,使用选项 -XX:ArchiveClassesAtExit=app-cdsjsa
4 使用归档文件
有过有人更新了jar包的内容,共享类会怎么处理?
可以查看日志看一下,是否会加载修改后的类。 -Xlog:class+load:file=cdslog
如果有任何问题,还是 -Xlog:class+load:file=cdslog 看一下情况。
JDK13中使用AppCDS的选项 -XX:ArchiveClassesAtExit=${ARCHIVE} , -XX:SharedArchiveFile=${ARCHIVE}
参考: >
URL Decoder/Encoder:>
iTerm2是一款完全免费的开源软件,可以完全替代MacOS的终端。iTerms功能强大,使用方便,可以让你轻松且高效地管理和定制化你的工作流程。iTerm2的一些特色功能包括:标签变色,智能选中,自动补齐,全屏展示所有的 tab并支持搜索(Exposé Tabs),丰富的快捷 *** 作等。
Textpad这款工具具有无限制的撤销/重做功能,并且能够编辑超大文件,文件上限是系统虚拟内存大小。
Octotree:>
Wireshark:这个工具可以用来监控机器上的TCP、>
Mermaid:这个工具可以使用脚本语言直接渲染出流程图、时序图、甘特图,写文档简单快捷。免拖拽,免排版,格式控制统一。脚本也便于存放修改,样式可以复用。还可以使用插件集成如Markdown编辑器,进行实时预览。
spectacle:Mac free source 窗口控制工具,拖拽窗口到屏幕边缘resize,也可以自定义快捷键。用起来跟Windows上面一样。相比较于Moom,SizeUp,Divvy,spectacle支持鼠标拖拽到边缘resize,非常便利。
Tmux:一个虚拟终端可以管理多个会话,窗口和面板。执行 tmux 命令时就开启了一个服务并创建了一个会话,窗口和面板。支持分屏,同时处理多个 *** 作。不受断网影响,避免丢失重要工作进度。方便演示与协作,支持结对编程。
Caniuse:>
Visual Studio Code:这是微软出品的IDE工具,跨平台(Linux,Mac,Windows)。轻量级内存占用,品质稳定且免费。同时内置Git版本控制功能。值得一提的是插件生态丰富,安装插件简单,通过插件可以增加更丰富的语言支持、主题定制、文本自动格式化等能力。
随着汽车L2-L5的不断发展成熟,汽车座舱已由机械式发展至智能化阶段,智能座舱逐渐向第三空间演变。据盖世汽车研究院数据,智能座舱单车价值量或将达到传统座舱的3-5倍,预计2030年或将达到2000亿元人民币。此外,座舱技术边界不断拓展,未来智能座舱的功能将不断丰富。
数据来源:盖世汽车研究院
在2023第三届中国汽车人机交互创新大会上,中科创达Kanzi设计中心技术生态总监王宇洋坦言,过去一年软件定义汽车的预言得到验证,但在持续涌现的新技术浪潮中,汽车的未来应该是软件的差异化。对于开发团队和最终用户而言HMI的复杂性正在上升。
汽车行业走向HMI新阶段
HMI,即“Human Machine Interface”。在汽车领域主要指人与汽车的交互,包含UX和UI两部分。作为车辆系统和用户间的信息交换媒介,HMI通过智能化设计满足用户的驾乘需要。此外,在软硬件融合程度及网联化程度不断加深的趋势下,HMI作为功能控制和信息呈现终端也承载着越来越多的任务,透过2023第三届中国汽车人机交互创新大会可以发现,HMI总体走势向着多模交互、界面体验、情感需要三方面演进。
中科创达Kanzi设计中心技术生态总监王宇洋在会上发表演讲
所谓多模交互,即将多种感官融合。从视觉、听觉、触觉、语音等多种方式,构建出座舱与用户间多种无缝衔接的信息通道,充分模拟人与人之间的交互方式。多模交互的实际应用表现之一,正如王宇洋所言,在汽车中安装更多屏幕的趋势正在接近顶峰,甚至到了一切皆屏幕的程度。
而关于界面体验,整体呈现高质感、轻量化、个性化的特征。汽车本身的科技属性使得高质感的色彩渲染和图标设计成为车辆高级感的重要体现;此外用户不同的审美需要也使得界面设计朝着个性化前进。
中科创达HMI20, 图源:中科创达
最后关于情感交互,简而言之还是用户的心理诉求。当座舱成为用户生活的“第三空间”,工作、娱乐、休闲甚至育儿都能够在该场景实现。
基于以上种种,汽车行业面临着越来越多基于各种软件堆栈的场景,对于开发团队和最终用户而言HMI的复杂性正在上升。如何将HMI的多功能性更快落地,并实现商业化运营成为产业急需解决的问题。王宇洋表示:“像Kanzi One这样的一体化HMI工具链能够很好的解决行业问题,并已在业内引起共鸣。Kanzi One能够将需求、设计和工程结合起来,从而创造功能价值。我们的目标是帮助汽车制造商简化HMI开发设计流程,并最终为消费者带来创新的UI使用体验。”
HMI实现路径,Kanzi的性能优化方案
Kanzi One是什么?据王宇洋总监介绍:“Kanzi One是全球首个与安卓 *** 作系统完全兼容的汽车HMI工具链。它整合了现代 HMI 开发所需的一切工具,包括:核心 Kanzi 框架——Kanzi Studio 和 Kanzi Engine,以及由 Kanzi Connect、Kanzi Maps、Kanzi Particles、Kanzi Autostereoscopy、Kanzi VR等构成的功能包。与其他开发工具相比,Kanzi One可极大减少编码的工作量,轻松实现设计开发的时间及人员成本减半。”
Kanzi One设计效果图 图源:中科创达
Kanzi最大的优势就在于提高生产力。具体体现在三个方面:
首先,Kanzi通过其强大的UI框架,提供完全可视化的HMI编辑,可以消除80%的UI代码;
其次,Kanzi通过开箱即用的解决方案实现快速原型设计和轻松的部署,在虚拟环境中进行模拟、调试和性能分析,可以大大降低成本;
最后Kanzi提供高效的开发流程,设计人员和开发人员在不同的HMI组件上并行工作,加快产品的上市时间。
关于Kanzi常用的性能优化方案有哪些?这一问题,王宇洋总监从问题解决导向进行了讲解。
“一般在将纹理数据从CPU部署到GPU的过程中,PNG需要先解码为RAW Data,再部署到GPU侧。”该过程存在两个问题:
一是PNG资源的解码在启动阶段会消耗较长时间;
二是如果将所有原始数据嵌入到 Kanzi的资源文件kzb 中,文件会变得很大,系统 I/O 会很慢。
图源:中科创达
Kanzi的优化策略是使用压缩纹理格式,PNG不需要解码,可以直接部署到 GPU。其中一种压缩纹理格式是ASTC,是基于块的有损纹理压缩算法。此方案可以在设计冻结后应用。
默认情况下Kanzi使用online shader,即Kanzi Studio将源代码导入到Kanzi的资源文件Kzb中,当在目标平台上启动Kanzi应用程序时,应用程序才使用OpenGL驱动程序加载和编译, 编译增加了应用程序的启动时间。当使用Binary shader时,Kanzi使用GPU的offline shader编译器编译shader,并将编译好的shader以二进制的方式导入到Kanzi的资源文件Kzb中,这样Kanzi应用程序在启动时就能直接使用编译好的Binary Shader,减少Kanzi应用程序的加载时间。
此外,Kanzi提供了预加载技术加载资源的方法,加快了启动的时间;同时Kanzi提供了强大的性能分析工具,可以分析整个系统启动过程每一帧系统进行了哪些工作,可以在项目优化阶段应用。
Kanzi畅想的智驾未来
过去,用户在选择新车时使用的是传统标准,像外观、动力、速度、续航里程、内室设计和娱乐功能等等方面,在汽车下线后已成定势。而中科创达Kanzi设计中心技术生态总监王宇洋提出:“未来,汽车的配置可以在销售阶段进行更改,以满足用户的需求。例如当用户想要更换车身的颜色,从应用商店中选择一个,片刻时间即可获得喜欢的车身配色;当需要更长的续航里程时,用户下载一个功能包就能实现。”
图源:中科创达
Kanzi作为工具软件,将持续助力便捷的研发设计和高级的用户体验。相较于此前的版本,Kanzi One进一步升级,具体呈现出四方面的新特性:
第一,Kanzi One进一步内置了基于物理的HDR渲染管线,简化了设计和开发人员创建高质量图形的过程;
此外Kanzi支持线性颜色空间。由于人眼对光的感知是非线性的,计算机显示器对光强度的反应同样是非线性响应,所以相较于浅色人眼更能区分深色。基于以上原因,在屏幕上显示图像时保持暗强度的准确性非常重要。但在非线性颜色空间中执行颜色计算会导致颜色和α混合的结果不准确,Kanzi在 *** 作之前会将所有的颜色值转换为线性颜色空间,使得逼真的光照计算和正确的颜色混合成为可能,特别是使用基于物理的渲染技术。
图源:中科创达
第二,与Android 深度集成。
首先Kanzi One Engine已经完全支持Java API并将Kanzi 引擎集成到 Android UI 线程中,Kanzi UI framework为Android Automotive用户界面提供丰富的图形和高级可视化功能,允许开发人员完全自定义UI外观。同时,扩展了 Android API,为 Android 应用程序开发人员提供了额外的功能。
其次,可以使用标准开发工具,开发、部署和调试基于 Kanzi 的应用程序,例如 Android Studio 。
最后在 Android UI 中可以自由组合 Kanzi View。Kanzi View本质是一个Android的view组件,可以与 Android UI 层次结构自由的组合,在架构上类似于 Android 的 Camera view、Video view 和 GL surface view。
第三,全新的 UI Workflow。
Kanzi One引入了全新的Activity 子系统,重新定义了UI Workflow。Activity 子系统提供模块化、动态的 UI 状态管理,以实现最佳性能和资源处理。借助Activity 子系统,基于Kanzi开发的项目可以被划分成多个易于管理的小的 UI 模块,这些UI模块仅在需要时动态加载,在不活动时卸载,以实现设计工作流程和性能的极致效率。
图源:中科创达
第四,全新商业模式,免费提供量产插件。
Kanzi拥有近12年的车载行业量产经验,从国内到国际、从低端到高端、从乘用车到卡车遍及各大OEM品牌。截止到2021年年底,Kanzi已应用于全球3000多万辆量产汽车,而多家OEM的内部评估也验证了Kanzi性能第一的排名。
当前,人们正亲身经历着汽车行业的巨大飞跃,软件定义的汽车不再只是一个愿景。类似Kanzi One的HMI工具软件,将加速汽车行业的发展,使“第三空间”内的高级用户体验更加丰富多彩。
本文来自易车号作者盖世汽车,版权归作者所有,任何形式转载请联系作者。内容仅代表作者观点,与易车无关
以上就是关于HTML5 Web Worker是利器还是摆设全部的内容,包括:HTML5 Web Worker是利器还是摆设、JDK13之AppCDS使用-性能优化利器、有哪些it程序员的必备神器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)