在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙跨端實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

京東云 ? 來(lái)源:京東科技 杜強(qiáng)強(qiáng) ? 作者:京東科技 杜強(qiáng)強(qiáng) ? 2024-09-30 14:42 ? 次閱讀

作者:京東科技 杜強(qiáng)強(qiáng)

前言

Roma跨端方案中,JS虛擬機(jī)是框架的核心,負(fù)責(zé)執(zhí)行動(dòng)態(tài)化的JS代碼。在Android平臺(tái)采用了基于V8的J2V8,iOS平臺(tái)則使用了系統(tǒng)自帶的JSCore,而在HarmonyOS中,由于業(yè)界無(wú)類似的框架,我們需要自行實(shí)現(xiàn)以確保核心基礎(chǔ)能力的完整。 鴻蒙虛擬機(jī)的開(kāi)發(fā)經(jīng)歷了從最初 ArkTs2V8JSVM + Roma新架構(gòu)方案。在此過(guò)程中,我們實(shí)現(xiàn)了完整的鴻蒙版的“J2V8”和 基于系統(tǒng)JSVM的JS虛擬機(jī)框架,解決了JS引擎庫(kù)移植、多語(yǔ)言通信能力、多類型數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換等眾多挑戰(zhàn)。本文將從實(shí)現(xiàn)的各個(gè)階段過(guò)程出發(fā),探討在實(shí)踐中遇到的問(wèn)題及解決方案。

一、鴻蒙版 “J2V8”虛擬機(jī)實(shí)現(xiàn) - ArkTs2V8

ArkTs2V8框架依賴V8引擎, 鴻蒙前期交叉編譯資料少,V8官方也未有HarmonyOS端編譯方式。因此在這過(guò)程中, 我們采取初期使用QuickJS引擎(C語(yǔ)言開(kāi)發(fā),代碼少,移植方便), 后期自編譯V8完成后替換QuickJS, 保證快速驗(yàn)證跨端前期技術(shù)調(diào)研方案以及其他依賴項(xiàng)基礎(chǔ)能力的開(kāi)展。 自編譯V8 通過(guò)學(xué)習(xí)交叉編譯相關(guān)技術(shù),摸索式逐步解決編譯期間這種報(bào)錯(cuò),完成V8虛擬機(jī)移植。

ArkTs2V8 架構(gòu)借鑒了Android J2V8(動(dòng)態(tài)化-J2V8文章中講述了具體原理及實(shí)踐)的實(shí)現(xiàn)原理。 J2V8為針對(duì)V8的 Java實(shí)現(xiàn),采用最直接的方式在Java中訪問(wèn)V8原始值,因此具備較高的性能。 在HarmonyOS中,采用V8作為JS引擎, JSI作為通信層完成設(shè)計(jì)。

wKgZomb6SCqAaKbAAACBgMlQU1Y485.png

1、引入JSI

考慮到跨端框架的未來(lái)發(fā)展,雖然通過(guò)C++ 能夠直接與V8交互,但這種方式不利于虛擬機(jī)代碼的共享和擴(kuò)展。因此Roma框架引入JSI,以增強(qiáng)代碼的可擴(kuò)展性,促進(jìn)更有效的代碼共享,并實(shí)現(xiàn)更靈活的虛擬機(jī)集成。

JSI(JavaScript Interface),輕量級(jí),通用且同步的JavaScript接口, 通過(guò)JSI,JS代碼可以直接與C++原生代碼通信。

有了JSI層對(duì)虛擬機(jī)的封裝,Roma框架開(kāi)發(fā)者無(wú)需在關(guān)心虛擬機(jī)底層能力, 同時(shí)也可以自由切換引擎,比如使用V8,QuickJS、JSVM等, 規(guī)范了數(shù)據(jù)格式,統(tǒng)一為JSIValue。

2、API與框架設(shè)計(jì)原理

接口設(shè)計(jì)采用和J2V8 類似的設(shè)計(jì),支持多虛擬機(jī)實(shí)例方式。

wKgaomb6SCuAD_36AAKvXfDR4Es416.png

實(shí)現(xiàn)原理:

1、本地接口: 使用 napi 使用創(chuàng)建橋梁, 完成本地代碼調(diào)用Quick引擎函數(shù)。

2、C++數(shù)據(jù)綁定:在C++層面 ,定義虛擬機(jī)交互操作的相關(guān)函數(shù),完成V8引擎相關(guān)API 來(lái)執(zhí)行JS代碼、 處理JS對(duì)象和執(zhí)行虛擬機(jī)相關(guān)的操作。

3、JSIRuntime: 在C++層面引入JSI概念,通過(guò)完成JSIRuntime - QuickJSRuntime & V8Runtime, 完成虛擬機(jī)層通信能力。

4、虛擬機(jī)對(duì)象的定義及封裝:根據(jù)JS數(shù)據(jù)類型,定義ArkTS數(shù)據(jù)結(jié)構(gòu),包括基本數(shù)據(jù)類型、JSObject、JSArray、JSFunction。ArkTS側(cè) 類型對(duì)象持有C++ JSIValue 對(duì)象指針,當(dāng)執(zhí)行具體能力時(shí),通過(guò)napi 傳遞指針,完成具體功能的調(diào)用。 簡(jiǎn)單來(lái)說(shuō),相當(dāng)于ArkTS JS對(duì)象代理C++ 虛擬機(jī)數(shù)據(jù)對(duì)象。

5、內(nèi)存管理: ArkTs2V8負(fù)責(zé)管理ArkTS與JSValue 之間的內(nèi)存交互。其中C++側(cè)完成JSValue對(duì)象的創(chuàng)建、引用持有與銷毀。 ArkTS數(shù)據(jù)對(duì)象中定義對(duì)象釋放函數(shù), 數(shù)據(jù)使用完后,由ArkTS調(diào)用釋放內(nèi)存。

ArkTs2V8架構(gòu)設(shè)計(jì)支持虛擬機(jī)多實(shí)例, 單個(gè)虛擬機(jī)的創(chuàng)建過(guò)程時(shí)由 ArkTs通過(guò)JSEngine發(fā)起創(chuàng)建JSRuntime虛擬機(jī)實(shí)例創(chuàng)建,經(jīng)過(guò)napi,在C++環(huán)境創(chuàng)建JSRuntime引擎實(shí)例及引用, 并完成環(huán)境Context及global的初始化, 同時(shí)創(chuàng)建ArkTs JSRuntime對(duì)象,代理C++虛擬機(jī)對(duì)象JSRuntime(QuickJSRuntime or V8Runtime) 并綁定指針引用。

初始化過(guò)程:

wKgZomb6SC-AFyHvAASL8DdSAm0656.png

V8Runtime實(shí)現(xiàn)

wKgaomb6SDCAc3qVAAXsK5AwqNQ365.png

3、JS、JSI、JSRuntime 關(guān)系

wKgZomb6SDGAKce9AAAx9EXVuNo989.png

JSRuntime (QuickJSRuntime or V8Runtime) 是 JS運(yùn)行時(shí)環(huán)境。一個(gè) JSRuntime 通常包括一個(gè)或多個(gè)引擎,JSI 可以看作是連接 JS 代碼和 JSRuntime 的橋梁。通過(guò) JSI,開(kāi)發(fā)者可以更直接地與 JSRuntime 交互,實(shí)現(xiàn)原生功能的調(diào)用和管理。

4、部分過(guò)程剖析

ArkTs2V8實(shí)現(xiàn)的過(guò)程中,最基礎(chǔ)的兩個(gè)功能原理:JSObject對(duì)象的創(chuàng)建與獲取、原生方法的注入, 這兩個(gè)能力的實(shí)現(xiàn)可以擴(kuò)展到其他大多數(shù)API功能實(shí)現(xiàn)上。

1、JSObject對(duì)象及獲取對(duì)象數(shù)據(jù)過(guò)程。

通過(guò)JSRuntime 發(fā)起接口的調(diào)用,通過(guò)napi,根據(jù)對(duì)象類型在C++側(cè)創(chuàng)建對(duì)象的JSValue對(duì)象及象指針引用, 并將引用指針綁定至ArkTS對(duì)象,完成對(duì)象的創(chuàng)建。

wKgaomb6SDKAAnj7AASzY6VbRIA936.png

2、 JS虛擬機(jī)注入原生方法

ArkTS方法到JS虛擬機(jī)中,主要實(shí)現(xiàn)原理:

將ArkTs的方法 和 目標(biāo)注冊(cè)對(duì)象指針 生成MethodDescriptor方法描述對(duì)象, 通過(guò)functionID將對(duì)象存儲(chǔ)在當(dāng)前JSContext環(huán)境中。 通過(guò)napi 發(fā)起在C++側(cè)代理函數(shù)HostFunction的創(chuàng)建,并綁定ArkTs的方法的引用。 進(jìn)入到JSI內(nèi)部,創(chuàng)建方法代理HostFunctionProxy 對(duì)象,綁定代理方法HostFunction及守護(hù)函數(shù)Finalizer, v8::External 將HostFunctionProxy與 JS環(huán)境對(duì)象(V8對(duì)象) 關(guān)聯(lián)起來(lái),生成V8 Function , 此時(shí)V8函數(shù)會(huì)與HostFunctionProxy生命周期綁定。 簡(jiǎn)單來(lái)說(shuō)相當(dāng)于ArkTS callback,傳遞至C++,C++創(chuàng)建JSI Callback并綁定ArkTS callback, JSI Callback 設(shè)置到HostFunctionProxy中,HostFunctionProxy 通過(guò) v8::External與 JS環(huán)境綁定。

當(dāng)JS觸發(fā)該該函數(shù)時(shí),通過(guò)v8::External綁定HostFunctionProxy這層關(guān)系,HostFunctionProxy中JSI Callback會(huì)收到JS環(huán)境的響應(yīng)消息,在通過(guò)綁定的ArkTs的方法 通過(guò)napi接口返回至ArkTS中,最終ArkTS收到方法響應(yīng)。

這種代理函數(shù)的實(shí)現(xiàn), 初次學(xué)習(xí)可能比較復(fù)雜,但整個(gè)過(guò)程實(shí)際是多個(gè)對(duì)象間引用的持久化和不同數(shù)據(jù)對(duì)象的交換, 大致過(guò)程圖如下:

wKgZomb6SDKAPD2bAAJcvMkwtzI011.png

4、問(wèn)題及挑戰(zhàn)

1、 數(shù)據(jù)對(duì)象的內(nèi)存管理

手動(dòng)內(nèi)存管理。 ArkTs2V8 負(fù)責(zé)管理ArkTS與V8之間的內(nèi)存交互中,ArkTs發(fā)起對(duì)象的創(chuàng)建和銷毀。 整個(gè)內(nèi)存的管理是基于手動(dòng)管理,需使用方用完后及時(shí)關(guān)閉,避免內(nèi)存泄露。 這種設(shè)計(jì)模式下,使用者操作不當(dāng)極為容易造成內(nèi)存泄露,并且使用也較為不便。

針對(duì)這問(wèn)題,在后續(xù)的迭代設(shè)計(jì)中,將內(nèi)存管理升級(jí)為自動(dòng)內(nèi)存管理的方式。 JS為單線程執(zhí)行,單方法片段或一些邏輯中,如果有了調(diào)用開(kāi)始時(shí)機(jī)結(jié)束調(diào)用時(shí)機(jī), 通過(guò)開(kāi)始時(shí)記錄當(dāng)前時(shí)刻后開(kāi)始創(chuàng)建的對(duì)象,在調(diào)用結(jié)束時(shí)刻對(duì)記錄的對(duì)象進(jìn)行統(tǒng)一的內(nèi)存釋放,類似于標(biāo)記垃圾回收,完成內(nèi)存的統(tǒng)一管理。借助Roma框架中對(duì)虛擬機(jī)層的封裝,做到了內(nèi)存自動(dòng)管理。

2、 跨語(yǔ)言性能問(wèn)題

基于ArkTs2V8 的API實(shí)現(xiàn),在原生、JS環(huán)境中,無(wú)法直接使用對(duì)方的數(shù)據(jù)類型,二者之間數(shù)據(jù)類型需要轉(zhuǎn)換。 JS到原生的過(guò)程中,ArkTs2V8中目前提供的API僅可以獲取當(dāng)前層級(jí)的JS對(duì)象數(shù)據(jù),子對(duì)象數(shù)據(jù)需要通過(guò)遞歸遍歷從JS環(huán)境中一一獲取。因此解析的過(guò)程中需要頻繁的通過(guò)C++讀取V8,當(dāng)數(shù)據(jù)量較大時(shí)通常比較耗時(shí)。拿常用的網(wǎng)絡(luò)模塊來(lái)說(shuō),接口下發(fā)的業(yè)務(wù)接口數(shù)據(jù)至少都在幾K甚至幾十K,轉(zhuǎn)為JS對(duì)象在中端性能手機(jī)上 會(huì)有幾十ms的耗時(shí),這對(duì)單線程模式的JS環(huán)境來(lái)說(shuō)影響時(shí)巨大的。

ArkTS 、C++ 跨語(yǔ)言通信性能我們可以采取類似于Roma Android的通信次數(shù)壓縮策略,或者使用JSON序列化來(lái)減少跨語(yǔ)言交互的性能損耗, 但無(wú)論用哪種都僅是從行為上規(guī)避跨語(yǔ)言的性能,而無(wú)法徹底解決。

3、 線程管理問(wèn)題

ArkTS基于TS語(yǔ)言,由于語(yǔ)言特性,ArkTS線程隔離,那么對(duì)于ArkTs2V8這種接口設(shè)計(jì)并不友好。 JS線程需要在ArkTS開(kāi)啟獨(dú)立worker JS線程,收發(fā)JS消息,線程間的隔離,涉及再次序列化數(shù)據(jù)影響性能。

基于問(wèn)題2、3 以及對(duì)框架未來(lái)的思考,Roma鴻蒙端決定采用新的方案: 框架C++化,框架邏輯實(shí)現(xiàn)全部放在native側(cè), 虛擬機(jī)實(shí)現(xiàn)全部切C++,C++側(cè)完成線程管理,ArkTS不在承擔(dān)線程和邏輯任務(wù)。 這種既提升了解決了問(wèn)題,提升框架性能,也為今后框架移植其他平臺(tái)打好基礎(chǔ)。

二、基于JSVM虛擬機(jī)實(shí)現(xiàn) (Roma新架構(gòu))

1、鴻蒙JSVM

在V8移植上,從短期看雖然我們初步掌握了V8交叉編譯移植技術(shù),但從穩(wěn)定性、兼容性、維護(hù)成本、包大小等維度看, 采用系統(tǒng)內(nèi)置虛擬機(jī)有巨大的長(zhǎng)期收益。 年初Roma框架與華為專家多次溝通交流,最終HarmonyOS將V8內(nèi)置到了操作系統(tǒng), Q2我們實(shí)現(xiàn)了第三個(gè)JSRuntime - JSMVRuntime, 至此鴻蒙動(dòng)態(tài)化架構(gòu)修改趨于穩(wěn)定。

JSVMRuntime:

wKgaomb6SDSARTk1AAcPVuz-Khg178.png

2、新架構(gòu)思路 - Roma架構(gòu)C++化

新架構(gòu)的設(shè)計(jì)思路SDK核心邏輯整體C++側(cè)實(shí)現(xiàn), 這樣在底層引擎與核心流程之間可以直接c++通信,線程間上與其他端保持相同 - 三線程模型JS線程 +UI線程 + 耗時(shí)計(jì)算線程。通過(guò)C++ PThread完成線程管理, 從而避免跨語(yǔ)言、ArkTS線程隔離帶來(lái)的多種性能損耗。 在數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)上, JS數(shù)據(jù)采用JSI::Value, 與其他線程數(shù)據(jù)相互交互時(shí), 統(tǒng)一使用folly完成。 另外將虛擬機(jī)層下沉,對(duì)外提供JSExecutor, 功能開(kāi)發(fā)時(shí)框架開(kāi)發(fā)者無(wú)需關(guān)心虛擬機(jī)層的實(shí)現(xiàn)。

虛擬機(jī)方法與對(duì)象的注入上, 通過(guò)HostObject代理對(duì)象能力的雙邊映射,原生模塊直接與JS 同步或異步交互, 從而縮短了流程鏈路。

wKgZomb6SDSAYktAAAEheBiR-PY635.png

框架大致原理:

wKgaomb6SDWActkGAADcb0PRQk0717.png

3、過(guò)程遇到的

1、JSVM字符串引用問(wèn)題

JSVMRuntime實(shí)現(xiàn)期間,字符串無(wú)法創(chuàng)建對(duì)象引用。 JSI的設(shè)計(jì)中將字符串作為 pointer 自定義指針類,通過(guò)指針地址訪問(wèn), 與其相同的還有對(duì)象,方法。 在許多語(yǔ)言中字符串都作為一種特殊的類型(非基本數(shù)據(jù)類型), 例如在C++中,字符是一種基本數(shù)據(jù)類型,但是字符串不是,字符串由字符組成, V8引擎亦如此。 V8中通常使用v8::String來(lái)創(chuàng)建JS字符串, 我們可以對(duì)齊進(jìn)行持久化引用。

而JSVM中 OH_JSVM_CreateReference 無(wú)法針對(duì)字符串類型創(chuàng)建引用, 字符串的持久化需從JSVM_Value從copy出來(lái)通過(guò)智能指針或者new內(nèi)存的方式進(jìn)行存儲(chǔ),這種copy持久化的方式會(huì)造成字符串內(nèi)存兩份(JSVM一份,自己存一份), 實(shí)際開(kāi)發(fā)中大量的字符串類型轉(zhuǎn)換,這樣會(huì)造成內(nèi)存占比過(guò)高。

為此, 經(jīng)過(guò)與華為專家多次交流溝通,最終將字符串歸為引用類型,可通過(guò)OH_JSVM_CreateReference持久化引用,修改后的方式如下:

wKgZomb6SDaANUhGAAQOni5iYaI833.png

2、HostObject代理對(duì)象實(shí)現(xiàn)

HostObject 是JS對(duì)象,提供與原生直接通信的方式。 相當(dāng)于 native 在 JS的代理對(duì)象,雙向映射,原生模塊直接與JS 同步或異步交互, 在一些功能實(shí)現(xiàn)上可以縮短流程鏈路, 在JS中可直接調(diào)用C++的對(duì)象。 在動(dòng)態(tài)化中, 模塊的實(shí)現(xiàn)采用的就是HostObject能力, 框架層實(shí)現(xiàn)模塊代理對(duì)象及橋通信層面的雙向通信過(guò)程。 比如登錄模塊,在ArkTS側(cè)封裝模塊的API,通過(guò)C側(cè)的HostObject映射,可以在JS中直接調(diào)用登錄模塊的登錄,退出登錄等能力。 HostObject的實(shí)現(xiàn),雖然在框架層面相比于喬通道的方式更加復(fù)雜,但對(duì)于復(fù)雜邏輯流程和交互鏈路, 基礎(chǔ)開(kāi)發(fā)可以更注重于功能邏輯。

HostObject 實(shí)現(xiàn)過(guò)程較為復(fù)雜, 但我們可以將過(guò)程拆分,通過(guò)對(duì)象管理 + 代理函數(shù)的方式將過(guò)程簡(jiǎn)化。 首先對(duì)象的管理直接JSRuntime中持久化即可,Roma中采用智能指針,那么就剩下代理函數(shù),前面我們講了JS中注入方法里面包括了代理函數(shù)的實(shí)現(xiàn)原理,采用類似的思路來(lái)完成HostObject。

HarmonyOS提供的JSVM API最初僅支持代理函數(shù)的創(chuàng)建, 而我們需要是創(chuàng)建代理對(duì)象,對(duì)象中可以有任意方法,僅通過(guò)代理函數(shù)方式無(wú)法滿足任意方法的需求,為此通過(guò)在JS中注入代理對(duì)象腳本實(shí)現(xiàn),通過(guò)Proxy代理的方式,將get、set等代理對(duì)象的方法通過(guò)代理函數(shù)的方式返回,這種情況下,我們的函數(shù)數(shù)量就被簡(jiǎn)化成了get、set及一些固定的方法。 通過(guò)這些方法做代理轉(zhuǎn)接,調(diào)用到C++對(duì)象方法,借助JSI::Value的包裝,將具體結(jié)果返回。

JS代理腳本部分代碼:

wKgaomb6SDeASOeeAAJGHbpsgbY878.png

大致實(shí)現(xiàn)過(guò)程:

wKgZomb6SDqAdtrVAAGuilqmJkE164.png

示例 - 基于HostObject Console能力實(shí)現(xiàn)

wKgaomb6SDyAIMXpAAX31oJPubg888.png

三、總結(jié)

0到1實(shí)現(xiàn)鴻蒙版“j2v8”、“JSRuntime” 讓我們更加了解引擎實(shí)現(xiàn)中的各種細(xì)節(jié)和一些難點(diǎn)問(wèn)題的解決。 一些方案的實(shí)現(xiàn),也可以延展到其他(非虛擬機(jī))場(chǎng)景。 Roma 框架C++, 讓Roma框架走向技術(shù)深水區(qū), 為今后capi、未來(lái)技術(shù)做好了基礎(chǔ),旨在帶來(lái)更優(yōu)的性能和更好的用戶體驗(yàn)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    18105
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    514

    瀏覽量

    25470
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    917

    瀏覽量

    28189
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2351

    瀏覽量

    42849
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1975

    瀏覽量

    30183
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    虛擬化數(shù)據(jù)恢復(fù)—XenServer虛擬機(jī)數(shù)據(jù)恢復(fù)案例

    Server操作系統(tǒng)虛擬機(jī),該虛擬機(jī)有2塊虛擬磁盤(系統(tǒng)盤+數(shù)據(jù)盤),當(dāng)作網(wǎng)站服務(wù)器使用。 服務(wù)器虛擬化故障: XenServer虛擬機(jī)
    的頭像 發(fā)表于 11-08 10:32 ?147次閱讀
    <b class='flag-5'>虛擬</b>化數(shù)據(jù)恢復(fù)—XenServer<b class='flag-5'>虛擬機(jī)</b>數(shù)據(jù)恢復(fù)案例

    虛擬機(jī)數(shù)據(jù)恢復(fù)—異常斷電導(dǎo)致XenServer虛擬機(jī)不可用的數(shù)據(jù)恢復(fù)案例

    虛擬機(jī)數(shù)據(jù)恢復(fù)環(huán)境: 某品牌服務(wù)器通過(guò)同品牌某型號(hào)的RAID卡,將4塊STAT硬盤為一組RAID10陣列。上層部署XenServer虛擬化平臺(tái),虛擬機(jī)安裝Windows Server系統(tǒng),每臺(tái)
    的頭像 發(fā)表于 10-21 14:17 ?200次閱讀
    <b class='flag-5'>虛擬機(jī)</b>數(shù)據(jù)恢復(fù)—異常斷電導(dǎo)致XenServer<b class='flag-5'>虛擬機(jī)</b>不可用的數(shù)據(jù)恢復(fù)案例

    虛擬桌面基礎(chǔ)架構(gòu)(VDI)遠(yuǎn)程連接如何實(shí)現(xiàn)

    今天我們來(lái)聊聊虛擬桌面基礎(chǔ)架構(gòu)(VDI)。VDI的工作原理是將桌面虛擬化,使得用戶可以通過(guò)網(wǎng)絡(luò)連接訪問(wèn)虛擬機(jī),確保數(shù)據(jù)和應(yīng)用保存在服務(wù)器上,提高數(shù)據(jù)的安全性。使用VDI通常涉及以下步驟
    的頭像 發(fā)表于 10-18 08:09 ?299次閱讀
    <b class='flag-5'>虛擬</b>桌面基礎(chǔ)<b class='flag-5'>架構(gòu)</b>(VDI)遠(yuǎn)程連接如何<b class='flag-5'>實(shí)現(xiàn)</b>

    鴻蒙實(shí)踐-長(zhǎng)列表解決方案和性能優(yōu)化

    平臺(tái)都非常重要。HarmonyOS和iOS類似也提供了自己的解決方案。Roma(羅碼)作為端平臺(tái),在此基礎(chǔ)上進(jìn)行了具體的實(shí)踐。在實(shí)踐過(guò)程中,遇到了各種問(wèn)題和挑戰(zhàn),經(jīng)歷了ArkTS+C++架構(gòu)
    的頭像 發(fā)表于 09-23 15:26 ?435次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>跨</b><b class='flag-5'>端</b><b class='flag-5'>實(shí)踐</b>-長(zhǎng)列表解決方案和性能優(yōu)化

    史無(wú)前例,移植V8虛擬機(jī)到純血鴻蒙系統(tǒng)

    作者:京東科技 于飛躍 一、背景 如圖所示,Roma框架是我們自主研發(fā)的動(dòng)態(tài)化平臺(tái)解決方案,已支持iOS,android,web三。目前在京東金融APP已經(jīng)有200+頁(yè)面,200+樂(lè)高樓
    的頭像 發(fā)表于 09-18 10:28 ?1143次閱讀
    史無(wú)前例,移植V8<b class='flag-5'>虛擬機(jī)</b>到純血<b class='flag-5'>鴻蒙</b>系統(tǒng)

    鴻蒙實(shí)踐-布局方案介紹

    封裝到標(biāo)簽中實(shí)現(xiàn),業(yè)務(wù)只需要針對(duì)標(biāo)簽簡(jiǎn)單地設(shè)置相關(guān)屬性,即可實(shí)現(xiàn)列表類布局,大幅提升研發(fā)效率。同時(shí)動(dòng)態(tài)化也支持絕對(duì)布局以及控制視圖的顯示和隱藏等功能,使之能勝任絕大多數(shù)業(yè)務(wù)布局場(chǎng)景。 在京東金融App使用動(dòng)態(tài)化方案適配鴻蒙系統(tǒng)的
    的頭像 發(fā)表于 09-18 10:26 ?907次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>跨</b><b class='flag-5'>端</b><b class='flag-5'>實(shí)踐</b>-布局方案介紹

    虛擬化數(shù)據(jù)恢復(fù)—EXSI虛擬機(jī)誤還原快照如何恢復(fù)數(shù)據(jù)?

    虛擬化技術(shù)原理是將硬件虛擬化供不同的虛擬機(jī)使用,一臺(tái)物理機(jī)上可以有多臺(tái)虛擬機(jī)。人為誤操作或者物理機(jī)故障會(huì)導(dǎo)致上層虛擬機(jī)不可用,甚至
    的頭像 發(fā)表于 09-09 11:56 ?376次閱讀
    <b class='flag-5'>虛擬</b>化數(shù)據(jù)恢復(fù)—EXSI<b class='flag-5'>虛擬機(jī)</b>誤還原快照如何恢復(fù)數(shù)據(jù)?

    什么是虛擬機(jī)?什么是虛擬化?

    在日新月異的科技世界中,虛擬化技術(shù)如同一座橋梁,連接著現(xiàn)實(shí)與數(shù)字的鴻溝,為我們打開(kāi)了全新的計(jì)算維度。虛擬機(jī),這一概念,自其誕生以來(lái),就以其獨(dú)特的魅力和強(qiáng)大的功能,深深地影響了軟件開(kāi)發(fā)、系統(tǒng)測(cè)試和云計(jì)算等多個(gè)領(lǐng)域。即使目前你還不了解它的應(yīng)用,你應(yīng)該也聽(tīng)過(guò)
    的頭像 發(fā)表于 09-04 14:55 ?941次閱讀

    創(chuàng)建ubuntu虛擬機(jī)

    英文的習(xí)慣。創(chuàng)建ubuntu虛擬機(jī)打開(kāi)VMware軟件,點(diǎn)擊創(chuàng)建新的虛擬機(jī)。進(jìn)入以下界面:選擇自定義,點(diǎn)擊“下一步”。選擇對(duì)應(yīng)VMware版本的兼容性,版本可在幫助->關(guān)于VMware
    發(fā)表于 08-10 14:15

    虛擬機(jī)數(shù)據(jù)恢復(fù)—KVM虛擬機(jī)被誤刪除的數(shù)據(jù)恢復(fù)案例

    虛擬機(jī)數(shù)據(jù)恢復(fù)環(huán)境: Linux操作系統(tǒng)服務(wù)器,EXT4文件系統(tǒng)。服務(wù)器中有數(shù)臺(tái)KVM虛擬機(jī)虛擬機(jī)1:主數(shù)據(jù)庫(kù)服務(wù)器 虛擬磁盤:系統(tǒng)盤(qcow2)+數(shù)據(jù)盤(raw)
    的頭像 發(fā)表于 08-07 13:33 ?457次閱讀
    <b class='flag-5'>虛擬機(jī)</b>數(shù)據(jù)恢復(fù)—KVM<b class='flag-5'>虛擬機(jī)</b>被誤刪除的數(shù)據(jù)恢復(fù)案例

    什么是虛擬機(jī)虛擬機(jī)真的那么好用嗎?

    在日新月異的科技世界中,虛擬化技術(shù)如同一座橋梁,連接著現(xiàn)實(shí)與數(shù)字的鴻溝,為我們打開(kāi)了全新的計(jì)算維度。虛擬機(jī),這一概念,自其誕生以來(lái),就以其獨(dú)特的魅力和強(qiáng)大的功能,深深地影響了軟件開(kāi)發(fā)、系統(tǒng)測(cè)試和云
    的頭像 發(fā)表于 07-06 08:05 ?463次閱讀
    什么是<b class='flag-5'>虛擬機(jī)</b>?<b class='flag-5'>虛擬機(jī)</b>真的那么好用嗎?

    虛擬化數(shù)據(jù)恢復(fù)—虛擬機(jī)誤還原快照的數(shù)據(jù)恢復(fù)案例

    有一臺(tái)虛擬機(jī)是由物理機(jī)遷移到ESXI上面的,遷移完成后為該虛擬機(jī)做了一個(gè)快照。虛擬機(jī)上運(yùn)行了一個(gè)SQL Server數(shù)據(jù)庫(kù),記錄了5年左右的數(shù)據(jù)。 該ESXI上共有二十幾臺(tái)虛擬機(jī),E
    的頭像 發(fā)表于 05-11 11:07 ?559次閱讀

    鴻蒙】(一)Vmware虛擬機(jī)和Ubuntu安裝

    備注 虛擬機(jī)命名、用戶名稱、路徑不能有漢字 名稱或者路徑有漢字,導(dǎo)致輸入失敗或者安裝失敗 2.虛擬機(jī)處理器內(nèi)核總數(shù)(處理器數(shù)量 X 每個(gè)處理器的內(nèi)核數(shù)量)不得超過(guò)電腦邏輯處理器總個(gè)數(shù) 太少時(shí),下載
    的頭像 發(fā)表于 02-26 21:27 ?3538次閱讀
    【<b class='flag-5'>鴻蒙</b>】(一)Vmware<b class='flag-5'>虛擬機(jī)</b>和Ubuntu安裝

    VMware虛擬機(jī)的三種網(wǎng)絡(luò)模式

    VMware虛擬機(jī)的三種網(wǎng)絡(luò)模式 VMware是一種廣泛使用的虛擬機(jī)軟件,可以創(chuàng)建和管理多個(gè)虛擬機(jī)。在使用VMware虛擬機(jī)時(shí),網(wǎng)絡(luò)設(shè)置非常重要,因?yàn)樗鼪Q定了
    的頭像 發(fā)表于 02-04 11:17 ?2013次閱讀

    提升VMware虛擬機(jī)運(yùn)行速度的方法

    使用虛擬機(jī)運(yùn)行Linux操作系統(tǒng)通常會(huì)比在物理機(jī)上直接安裝系統(tǒng)的運(yùn)行效率更低,本篇博文將介紹如何優(yōu)化虛擬機(jī)的設(shè)置,進(jìn)而提升虛擬機(jī)性能體驗(yàn)。
    的頭像 發(fā)表于 12-29 16:33 ?5878次閱讀
    提升VMware<b class='flag-5'>虛擬機(jī)</b>運(yùn)行速度的方法
    主站蜘蛛池模板: 1024亚洲视频| 老师叫我揉她内裤越快越好 | 中文在线1区二区六区| 亚洲午夜一区二区三区| 最近2018年中文字幕大全一| 性欧美高清极品猛交| 91pao强力打造免费高清| 鸥美毛片| 色天使网| 国产色婷婷| 爽天天天天天天天| 日本xxxxxxx69xx| 在线电影亚洲| 欧美videos 另类| 888米奇色狠狠俺去啦| 黄网在线看| 欧美日本视频一区| 免费高清特级毛片| 夜夜春夜夜爽| 国产免费午夜高清| 久久99热久久精品| 精品四虎免费观看国产高清午夜| 天天视频观看| 中年艳妇乱小玩| 欧美色频| 天天狠天天透天干天天怕处| 午夜视频免费观看黄| 色综合国产| 一级片在线播放| 深夜动态福利gif动态进| 色在线免费视频| 天天干夜夜艹| 伊人一区二区三区| 黄 色 录像成 人播放免费99网| 五月天婷婷免费视频观看| 久久影视免费体验区午夜啪啪 | 性欧美暴力猛交69hd| 国产在线一区二区三区四区| 免费观看在线永久免费xx视频| 欧美视频免费一区二区三区| 久久国内精品|