HarmonyOS第21天:解鎖分布式技術,開啟跨設備協同新體驗

一、HarmonyOS 分布式技術:開啟萬物互聯新時代

在物聯網蓬勃發展的今天,設備之間的互聯互通不再是遙不可及的夢想,而是真切融入日常生活的現實。從智能家居設備的聯動控制,到智能辦公場景中的高效協作,再到智能出行中的無縫體驗,我們越來越依賴設備之間的協同工作。HarmonyOS 的分布式技術,正是這股萬物互聯浪潮中的關鍵力量,它打破了設備之間的界限,為用戶帶來了前所未有的跨設備協同體驗 ,讓多設備聯動從設想變為常態。接下來,讓我們深入探索 HarmonyOS 分布式技術的奧秘,了解它是如何實現這一跨時代的設備交互變革。

二、分布式任務調度:應用流轉的魔法

(一)調度原理

分布式任務調度是 HarmonyOS 分布式技術的關鍵一環,它基于分布式軟總線、分布式數據管理、分布式 Profile 和分布式安全認證等技術特性 ,構建起統一的分布式服務管理機制。其中,分布式軟總線扮演著至關重要的角色,它為設備間提供了統一的分布式通信能力管理,實現了不區分鏈路的設備發現、連接、組網和傳輸 ,就像一條無形的紐帶,將不同設備緊密相連。通過分布式軟總線,設備之間可以自動發現并建立連接,形成一個有機的整體。

在這個基礎上,分布式任務調度平臺能夠對搭載 HarmonyOS 的多設備構筑的 “超級虛擬終端” 提供統一的組件管理能力 。它將應用的基本組件 Ability 進行跨設備的啟動、關閉、連接及斷開連接以及遷移等操作 。比如,當我們在手機上啟動一個支持分布式調度的應用時,該應用的 Ability 組件可以根據我們的需求,在其他設備(如平板、智慧屏)上進行啟動或遷移,而這一切對用戶來說是幾乎透明的,仿佛這些設備就是一個整體。這背后,是分布式任務調度平臺對硬件差異的屏蔽,以及對應用組件的精細管理,它使得應用能夠在不同設備間靈活調度,實現真正的跨設備協同。

(二)應用場景

分布式任務調度的應用場景十分廣泛,給我們的生活和工作帶來極大便利。以文檔跨設備編輯為例,你在辦公室的電腦上撰寫一份文檔,突然需要外出,此時只需點擊遷移按鈕,文檔編輯任務就能無縫遷移到你的手機上,你可以在路上繼續編輯;到達目的地后,又能將文檔遷移到附近的平板上,借助平板更大的屏幕和更便捷的操作繼續完善,整個過程中,文檔的編輯狀態、光標位置等信息都能完整保留,就像在同一臺設備上操作一樣。

再比如視頻接續播放場景,你在客廳的智慧屏上觀看電影,中途想要去臥室休息,只需一個簡單的操作,電影就能從智慧屏遷移到臥室的平板上繼續播放,播放進度、播放設置等都無需重新調整,讓你享受不間斷的觀影體驗 。這種跨設備的任務遷移,打破了設備的限制,讓用戶能夠在不同場景下自由切換設備,提升了使用的便捷性和流暢性。

(三)開發要點

對于開發者而言,要實現分布式任務調度,需要掌握一些關鍵要點。首先,在 Intent 中設置支持分布式的標記是必不可少的,例如使用 Intent.FLAG_ABILITYSLICE_MULTI_DEVICE 表示該應用支持分布式調度 ,若不設置這個標記,應用將無法獲得分布式能力。其次,權限申請也至關重要,開發者需要在 config.json 中添加分布式數據傳輸的權限申請 ,如 {"name": "ohos.permission.servicebus.ACCESS_SERVICE"} ,以此獲取跨設備連接的能力 。在調用 PA(Particle Ability,即 Service 和 Data 模板的 Ability)時,必須在 Intent 中指定 PA 對應的 bundleName 和 abilityName ;當需要跨設備啟動、關閉或連接 PA 時,還需在 Intent 中指定對端設備的 deviceId 。對于 FA(Feature Ability,即 Page 模板的 Ability)的遷移,要實現相同 bundleName 和 abilityName 的 FA 跨設備遷移,同樣需要指定遷移設備的 deviceId 。只有嚴格按照這些要點進行開發,才能確保分布式任務調度功能的正常實現,為用戶帶來優質的跨設備應用體驗。

三、分布式數據管理:數據無縫同步的奧秘

(一)存儲機制

在傳統操作系統中,實現跨端數據的共享和訪問往往依賴云端,這不僅面臨著搭建成本高、服務不夠便捷的問題,還存在用戶數據和隱私保護不足的風險 。而 HarmonyOS 的分布式數據管理帶來了全新的解決方案,它的設計理念是讓數據不再與單一物理設備綁定,跨設備的數據處理如同本地數據處理一樣方便快捷 。

HarmonyOS 在近端將多臺終端形成一臺 “超級虛擬終端”,實現數據全部在本地完成存儲 。從物理層面看,各個設備仍保留其本地數據,但從開發者的視角,HarmonyOS 提供的是一個基于 “超級虛擬終端” 的分布式數據,將多個設備的數據集中在一個邏輯上的 “超級虛擬終端” 本地 。比如在家庭照片分享場景中,以往家庭成員分享照片需借助社交軟件,操作繁瑣且耗時;使用 HarmonyOS 分布式數據管理后,通過家庭照片共享功能,全家人能直接在自己手機上瀏覽、收藏和保存所有人拍攝的照片 ,還能利用標簽分類圖片功能,一次查找到分布在不同終端上的照片 ,極大提升了數據處理的便捷性。

(二)安全保障

數據安全和隱私保護是用戶最為關注的問題,HarmonyOS 在這方面采取了多重保障措施。首先,在設備可信認證方面,充分考慮單用戶多設備、多用戶多設備的場景,提供了兩種設備認證方式 。同賬號設備自動連接,借助分布式軟總線技術,設備能自動完成認證和連接 ,當其中一個設備開機進入網絡,其他同賬號設備在系統層面自動完成認證 ;對于賬號無關的設備連接,則提供掃碼方式完成設備認證和連接 ,只需調用系統接口生成二維碼并掃碼,即可完成認證連接 ,之后通過權限申請,設備間可實現應用沙箱內的數據及應用文件互訪 ,且設備認證、秘鑰管理、會話密鑰協商,數據隔離和訪問控制等都在系統層面完成,既降低開發門檻,又保障了安全性和用戶隱私 。

在數據隔離與訪問控制方面,各應用的數據實現沙箱化隔離,每個應用通過分布式文件系統和分布式數據庫只能訪問到自己沙箱內的文件和數據 。同時,提供垂直化數據安全的訪問保護控制,不同安全風險等級的文件和數據會帶上不同的等級標簽 ,打開文件時通過等級標簽來控制當前設備狀態下是否允許訪問 ,確保數據只能在安全的環境下被訪問 。

HarmonyOS 還依據相關法律法規(如 GDPR、HIPPA、NIST 等)的數據分類分級保護標準以及業界最佳實踐,將數據分類成 S0/S1/S2/S3/S4 共 5 個保護等級 。每個保護等級的數據從生成開始,在其存儲、使用、傳輸的整個生命周期都需要根據對應的安全策略提供不同強度的安全防護 ,每個數據在生成時都會打上相應標簽,這個標簽伴隨數據一生,指導 “超級虛擬終端” 的各個節點對其提供一致強度的安全防護 ,并且 “超級虛擬終端” 的訪問控制系統支持依據標簽進行訪問控制策略,保證數據只能在可以提供足夠安全防護的節點之間存儲、傳輸和使用 ,有效防止數據泄露和非法訪問 。

(三)開發實踐

在開發過程中,以單版本分布式數據庫為例,開發者首先要在 config.json 中添加權限,如 "reqPermissions": [{"name": "ohos.permission.DISTRIBUTED_DATASYNC"}] ,這是使用分布式數據服務的基礎 。應用啟動時,需彈出授權提示框,請求用戶授權 。

接著根據配置構造分布式數據庫管理類實例 。先根據應用上下文創建 KvManagerConfig 對象 ,再創建分布式數據庫管理器實例 ,代碼示例如下:

Context context = getApplicationContext();

KvManagerConfig config = new KvManagerConfig(context);

KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);

獲取或創建單版本分布式數據庫時,要聲明需要創建的單版本分布式數據庫 ID 描述 。創建時,默認開啟組網設備間自動同步功能 ,若應用對性能比較敏感,可設置關閉自動同步功能 setAutoSync (false),并主動調用 sync 接口同步 ,示例代碼如下:

try {

????Options options = new Options();

????options.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION);

????String storeId = “testApp”;

????SingleKvStore singleKvStore = kvManager.getKvStore(options, storeId);

} catch (KvStoreException e) {

????HiLog.warn(LABEL_LOG, “getKvStore:” + e.getKvStoreErrorCode());

}

訂閱分布式數據變化時,客戶端需要實現 KvStoreObserver 接口 ,并構造并注冊 KvStoreObserver 實例 ,例如:

class KvStoreObserverClient implements KvStoreObserver {

????@Override

????public void onChange(ChangeNotification notification) {

????????List<Entry> insertEntries = notification.getInsertEntries();

????????List<Entry> updateEntries = notification.getUpdateEntries();

????????List<Entry> deleteEntries = notification.getDeleteEntries();

????}

}

KvStoreObserver kvStoreObserverClient = new KvStoreObserverClient();

singleKvStore.subscribe(SubscribeType.SUBSCRIBE_TYPE_ALL, kvStoreObserverClient);

將數據寫入單版本分布式數據庫,需構造需要寫入的 Key 和 Value ,然后使用 put 方法寫入 ,如:

try {

????String key = “todayWeather”;

????String value = “Sunny”;

????singleKvStore.putString(key, value);

} catch (KvStoreException e) {

????HiLog.warn(LABEL_LOG, “putString:” + e.getKvStoreErrorCode());

}

查詢數據時,構造需要查詢的 Key ,從單版本分布式數據庫快照中獲取數據并捕獲異常 ,示例如下:

try {

????String key = “todayWeather”;

????String value = singleKvStore.getString(key);

} catch (KvStoreException e) {

????HiLog.warn(LABEL_LOG, “getString:” + e.getKvStoreErrorCode());

}

同步數據到其他設備,要先獲取已連接的設備列表 ,然后選擇同步方式進行數據同步 ,比如采用 PUSH_ONLY 同步方式:

List<DeviceInfo> deviceInfoList = kvManager.getConnectedDevicesInfo(DeviceFilterStrategy.NO_FILTER);

List<String> deviceIdList = new ArrayList<>();

for (DeviceInfo deviceInfo : deviceInfoList) {

????deviceIdList.add(deviceInfo.getId());

}

singleKvStore.sync(deviceIdList, SyncMode.PUSH_ONLY);

掌握這些開發步驟和代碼示例,開發者就能更好地利用 HarmonyOS 的分布式數據管理功能,開發出數據安全、同步便捷的應用 。

四、分布式 UI:打造一致的跨設備體驗

(一)特性優勢

HarmonyOS 的分布式 UI 框架為開發者提供了強大的工具,以實現跨設備的一致體驗。它具有多方面的顯著特性 。

在跨平臺一致性方面,開發者可以使用同一套代碼庫和 API,在手機、平板、智能手表、車機等不同設備上實現一致的 UI 體驗 。這種統一開發環境減少了為不同設備單獨開發 UI 的工作量,同時保證了用戶體驗的連貫性 。框架還支持根據設備的屏幕尺寸、分辨率和形狀自動調整界面布局,確保應用在各種設備上都能提供最佳的用戶界面顯示 ,無論是大屏的智慧屏,還是小尺寸的智能手表,應用都能自適應展示,給用戶帶來舒適的視覺感受 。

在渲染性能上,HarmonyOS 采用先進的渲染技術,確保應用界面能夠快速、流暢地呈現給用戶 。通過優化渲染過程和組件布局,減少了界面卡頓和延遲 。框架采用多線程設計,將 UI 線程、渲染線程等分開處理,進一步提高了應用的整體運行效率 ,讓用戶操作更加流暢順滑 。

從開發方式來說,分布式 UI 框架支持聲明式開發范式,開發者可以專注于描述界面的狀態和變化,而無需過多關注具體的實現細節 。這種開發方式降低了開發難度,提高了開發效率 。通過數據綁定機制,開發者可以方便地實現界面與數據的同步更新,提升了應用的響應性和用戶體驗 ,當數據發生變化時,界面能實時更新,無需手動刷新 。

它還提供了一套豐富的組件庫,包括常見的 UI 組件、布局組件和業務組件等 。這些組件經過優化和測試,確保了穩定性和性能 。開發者還可以根據需要自定義組件,滿足特定場景下的需求 。組件化開發方式使得代碼更加模塊化,易于維護和復用 ,開發者可以將常用的功能封裝成組件,在不同的應用或項目中重復使用 ,提高開發效率和代碼質量 。

分布式協同能力也是其一大亮點,該框架支持多設備之間的協同工作,通過分布式技術實現設備間的無縫連接和數據共享 。這使得開發者可以創建跨設備的應用場景,提供更加沉浸式的用戶體驗 。比如在智能家居控制應用中,用戶可以在手機上操作燈光開關,同時在平板上查看燈光狀態,設備間的數據實時同步,操作流暢自然 。框架引入了分布式消息傳遞系統,允許設備之間以高效的方式共享信息,實現各種協同工作,如文件傳輸、實時通話等,增強了用戶在不同設備間切換的連貫性和便捷性 。

(二)開發步驟

以 uni - app 開發為例,利用 HarmonyOS 的分布式 UI 框架實現跨設備一致的用戶體驗,主要涉及以下步驟 。

首先要熟悉 HarmonyOS 提供的分布式 UI 框架,了解其核心概念,包括 Ability(應用的基礎單元,可以跨設備免安裝調度和運行)、用戶程序框架(負責包管理、Ability 管理和分布式管理)和 UI 編程框架(應用的用戶界面) ,熟悉框架的特性和使用方法,為后續開發打下基礎 。

要使用 uni - app 的跨平臺能力 。uni - app 是一個使用 Vue.js 開發所有前端應用的框架,可以編譯到 iOS、Android、H5 以及各種小程序等多個平臺 ,對于 HarmonyOS,uni - app 也提供了支持,允許開發者使用統一的代碼庫來開發 HarmonyOS 應用 ,充分利用其跨平臺特性,減少開發工作量 。

在 uni - app 項目中,通過 HarmonyOS SDK 或者 uni - app 的擴展 API 來接入分布式 UI 相關的組件和 API 。這些組件和 API 提供了跨設備界面布局、數據同步、任務調度等功能,使得開發者能夠方便地實現跨設備的 UI 展示和交互 ,比如接入分布式的按鈕組件、文本框組件等,實現跨設備的交互操作 。

為了確保跨設備一致的用戶體驗,需要設計響應式的 UI 界面 。這包括使用百分比、Flex 布局等 CSS 特性來適應不同屏幕尺寸和分辨率 ,使界面元素能夠根據設備屏幕大小自動調整位置和大小 。編寫可復用的 Vue 組件來減少代碼的冗余 ,將常用的界面元素封裝成組件,方便在不同頁面和設備上使用 。

HarmonyOS 的分布式數據管理能力使得數據可以在不同設備間共享和同步 。在 uni - app 中,可以通過調用分布式數據 API 來實現數據的跨設備訪問和更新,從而保持用戶在多個設備上的數據一致性 ,例如在一個筆記應用中,用戶在手機上創建的筆記,通過分布式數據管理,能實時同步到平板上,方便用戶在不同設備上查看和編輯 。

在開發過程中,需要針對不同的設備組合進行充分的測試,以確保應用的跨設備協同運行和用戶體驗的一致性 。HarmonyOS 提供了豐富的測試工具和調試手段,幫助開發者及時發現和解決問題 ,通過在手機、平板、智能手表等多種設備上進行測試,檢查界面顯示、交互操作、數據同步等功能是否正常,確保應用在各種設備上都能穩定運行,為用戶提供良好的體驗 。

五、實戰項目:開發多設備協同應用

(一)項目需求分析

以多機位拍攝應用為例,這是一個在影視制作、直播等領域有廣泛需求的應用場景 。在影視拍攝中,導演常常需要從多個角度捕捉畫面,以豐富影片的視覺效果;直播行業中,多機位拍攝能讓觀眾從不同視角觀看直播內容,增強觀看體驗 。對于這樣的應用,其功能需求主要包括:多設備實時拍攝畫面的同步采集,確保各機位的畫面在時間上保持一致,避免出現畫面延遲不同步的情況 ;拍攝參數的統一設置,如分辨率、幀率、曝光等,使不同機位拍攝的畫面風格和質量保持一致 ;拍攝任務的靈活調度,導演可以根據拍攝需求,隨時切換不同機位的拍攝狀態,如開始、暫停、停止等 ;拍攝數據的高效管理,包括畫面數據的存儲、傳輸和后期編輯,方便后續對素材的處理和使用 。

從技術實現角度來看,需要借助 HarmonyOS 的分布式任務調度技術,實現拍攝任務在不同設備(手機、平板、專業攝像機等搭載 HarmonyOS 的設備)間的靈活分配和協同 ;利用分布式數據管理技術,保障拍攝畫面數據在多設備間的實時同步和安全存儲 ;運用分布式 UI 技術,為導演提供一個統一、便捷的操作界面,使其能在不同設備上對拍攝過程進行監控和控制 。

(二)技術選型與架構設計

在技術選型上,前端開發可以采用基于 ArkTS 語言的開發框架,ArkTS 語言具有簡潔、高效、類型安全等特點,能夠很好地與 HarmonyOS 的分布式 UI 框架結合,實現流暢的用戶界面交互 。后端服務可以選擇使用 Java 語言開發,借助 Java 豐富的生態系統和強大的性能,處理拍攝任務調度、數據存儲與管理等業務邏輯 。數據庫方面,選用 HarmonyOS 提供的分布式數據庫,如單版本分布式數據庫,滿足數據在多設備間的同步和管理需求 。

架構設計上,采用分層架構。表現層負責提供用戶界面,包括設備連接管理、拍攝參數設置、拍攝畫面實時預覽等功能 。通過分布式 UI 框架,實現界面在不同設備上的自適應展示,用戶可以在手機、平板等設備上方便地操作應用 。業務邏輯層處理拍攝任務的調度、設備狀態的管理等核心業務 。利用分布式任務調度技術,根據用戶操作和設備狀態,合理分配拍攝任務到不同設備 。數據訪問層負責與分布式數據庫進行交互,實現拍攝畫面數據的存儲、讀取和同步 。通過分布式數據管理技術,確保數據在多設備間的一致性和安全性 。例如,當一個機位拍攝的畫面數據發生變化時,能及時同步到其他設備,保證各設備上的數據實時更新 。

(三)代碼實現與效果展示

在代碼實現中,以跨設備啟動應用為例,使用原子化服務實現免安裝啟動 。首先創建原子化服務項目,在 config.json 中配置相關信息,如:

{

??"module": {

????"name": "multi_camera_app",

????"type": "entry",

????"abilities": [

??????{

????????"name": "com.example.multicamera.MainAbility",

????????"icon": "$media:icon",

????????"description": "$string:main_ability_description",

????????"label": "$string:app_name",

????????"type": "page",

????????"launchType": "standard",

????????"visible": true,

????????"metadata": {

??????????"launch_mode": "standard"

????????},

????????"skills": [

??????????{

????????????"entities": ["entity.system.home"],

????????????"actions": ["action.system.home"]

??????????}

????????]

??????}

????]

??}

}

在 MainAbility 中,通過 Intent 實現跨設備啟動其他設備上的應用實例 ,代碼如下:

Intent intent = new Intent();

Operation operation = new Intent.OperationBuilder()

??????.withDeviceId("target_device_id")

??????.withBundleName("com.example.multicamera")

??????.withAbilityName("com.example.multicamera.MainAbility")

??????.build();

intent.setOperation(operation);

startAbility(intent);

對于數據同步,以分布式數據庫為例,在應用啟動時獲取分布式數據庫實例:

Context context = getApplicationContext();

KvManagerConfig config = new KvManagerConfig(context);

KvManager kvManager = KvManagerFactory.getInstance().createKvManager(config);

Options options = new Options();

options.setCreateIfMissing(true).setEncrypt(false).setKvStoreType(KvStoreType.SINGLE_VERSION);

String storeId = “camera_data_store”;

SingleKvStore singleKvStore = kvManager.getKvStore(options, storeId);

當某個機位拍攝的畫面數據發生變化時,將數據寫入數據庫并同步到其他設備:

try {

????String key = “camera_1_frame_001”;

????String value = “frame_data_base64_string”;

????singleKvStore.putString(key, value);

????List<DeviceInfo> deviceInfoList = kvManager.getConnectedDevicesInfo(DeviceFilterStrategy.NO_FILTER);

????List<String> deviceIdList = new ArrayList<>();

????for (DeviceInfo deviceInfo : deviceInfoList) {

????????deviceIdList.add(deviceInfo.getId());

????}

????singleKvStore.sync(deviceIdList, SyncMode.PUSH_ONLY);

} catch (KvStoreException e) {

????HiLog.warn(LABEL_LOG, “putString or sync:” + e.getKvStoreErrorCode());

}

最終的多設備協同效果展示中,在多個設備上同時運行多機位拍攝應用,各設備的拍攝畫面實時同步顯示在統一的監控界面上 。導演可以在任意設備上操作,實現拍攝參數的調整、機位的切換等功能 。比如在一場直播活動中,使用手機、平板和專業攝像機作為機位,手機上可以方便地查看各個機位的實時畫面,平板上用于設置拍攝參數和切換機位,專業攝像機負責高質量的畫面采集,通過 HarmonyOS 的分布式技術,這些設備協同工作,為觀眾呈現出精彩的直播內容 ,大大提升了拍攝和直播的效率與體驗 。

六、總結與展望

通過對 HarmonyOS 分布式技術的深入學習,我們領略到了其強大的跨設備協同能力,從分布式任務調度實現應用的自由流轉,到分布式數據管理保障數據的安全同步,再到分布式 UI 打造一致的跨設備體驗 ,這些技術共同構建起了 HarmonyOS 萬物互聯的基礎 。

展望未來,隨著物聯網的持續發展,HarmonyOS 分布式技術有望在更多領域發揮重要作用 。在智能家居領域,它將實現更多設備的深度協同,用戶可以通過一個設備輕松控制家中所有智能設備,打造真正智能化、便捷化的家居環境 ;在智能辦公場景中,不同辦公設備之間的協作將更加高效,文件、任務能在設備間無縫切換,提升辦公效率 ;在智能教育領域,HarmonyOS 分布式技術可能會讓學生和教師在不同設備上實現更流暢的互動和學習體驗,豐富教學方式和資源 。

對于開發者來說,HarmonyOS 分布式技術為我們提供了廣闊的創新空間 。希望大家能夠繼續深入探索和實踐,充分利用這些技術,開發出更多創意十足、功能強大的多設備協同應用 ,為用戶帶來更加智能、便捷的體驗 ,共同推動 HarmonyOS 生態的繁榮發展 。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897797.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025移動端軟件供應鏈安全開源治理方案最佳實踐

2025年3月13日&#xff0c;由中國軟件評測中心、CAPPVD漏洞庫聯合主辦的“第六期移動互聯網APP產品安全漏洞技術沙龍”在海口成功召開。懸鏡安全基于移動端數字供應鏈安全開源治理方案榮獲中國軟件評測中心“2024移動互聯網APP產品安全漏洞治理”優秀案例&#xff0c;并獲頒證書…

【Go學習】04-1-Gin框架-路由請求響應參數

【Go學習】04-1-Gin框架 初識框架go流行的web框架GinirisBeegofiber Gin介紹Gin快速入門 路由RESTful API規范請求方法URI靜態url路徑參數模糊匹配 處理函數分組路由 請求參數GET請求參數普通參數數組參數map參數 POST請求參數表單參數JSON參數 路徑參數文件參數 響應字符串方式…

哈爾濱算力服務器托管推薦-青蛙云

哈爾濱年平均氣溫3.5攝氏度&#xff0c;有發展云計算和算力數據中心的天然優勢 &#xff0c;今天為哈爾濱算力服務器托管服務商&#xff1a;青蛙云&#xff0c;黑龍江經營17年的老牌IDC服務商。 先來了解下算力服務器&#xff1a; 算力服務器&#xff0c;尤其是那些用于運行人…

【C++】每日一練(有效的括號)

本篇博客給大家帶來的是用C語言來解答有效的括號&#xff01; &#x1f41f;&#x1f41f;文章專欄&#xff1a;每日一練 &#x1f680;&#x1f680;若有問題評論區下討論&#xff0c;我會及時回答 ??歡迎大家點贊、收藏、分享&#xff01; 今日思想&#xff1a;不服輸的少年…

Embedding模型到底是什么?

嵌入模型&#xff08;Embedding Model&#xff09;是一種將高維數據映射到低維空間的工具&#xff0c;廣泛應用于自然語言處理&#xff08;NLP&#xff09;、推薦系統和圖像識別等領域。它的核心目標是將復雜的數據&#xff08;如文本、圖像或用戶行為&#xff09;轉換為稠密的…

Centos離線安裝perl

文章目錄 Centos離線安裝perl1. perl是什么&#xff1f;2. Centos下載地址&#xff1f;3. perl的安裝4. 安裝結果驗證 Centos離線安裝perl 1. perl是什么&#xff1f; Perl 是一種 高級腳本語言&#xff0c;誕生于 1987 年&#xff0c;以強大的 文本處理能力 和靈活性著稱&…

快速學習Bootstrap前端框架

什么是 Bootstrap? Bootstrap 是一個開源的前端框架,用于快速開發響應式(Responsive)和美觀的網頁。它包含: ? HTML 組件(導航欄、按鈕、表單等) ? CSS 樣式(網格系統、排版、顏色等) ? JavaScript 交互(模態框、輪播圖、工具提示等) 官網:Bootstrap The mo…

51單片機的keil c51軟件安裝教程

Keil&#xff08;C51&#xff09;介紹、下載、安裝與注冊_keil c51-CSDN博客 參考 安裝 不一定是這個大小&#xff0c;也可以下載別的版本KEID C51 注冊 加入芯片型號 …

DeepIn Wps 字體缺失問題

系統缺失字體 Symbol 、Wingdings 、Wingdings2、Wingdings3、MT—extra 字體問題 問了下DeepSeek 在應用商店安裝或者在windows 里面找 裝了一個GB-18030 還是不行 在windows里面復制了缺失的字體 將字體復制到DeepIn 的字體目錄&#xff08;Ubuntu 應該也是這個目錄&am…

chebykan閱讀收尾

sciml SciML 是 科學機器學習 (Scientific Machine Learning) 的縮寫&#xff0c;它指的是將機器學習方法應用于解決科學問題&#xff0c;例如物理、化學、生物學等領域中的問題。SciML 旨在利用機器學習的強大能力來提高科學計算的效率和準確性。 SciML 的主要問題: 數據獲取…

SpringBoot使用Logback日志框架與綜合實例

日志框架的使用,系列文章: 《SpringBoot使用Logback日志框架與綜合實例》 《SpringBoot使用@Slf4j注解實現日志輸出》 《Log4j2日志記錄框架的使用教程與簡單實例》 《SpringBoot使用AspectJ實現AOP記錄接口:請求日志、響應日志、異常日志》 《SpringBoot使用AspectJ的@Arou…

【性能測試】Jmeter詳細操作-小白使用手冊(2)

本篇文章主要介紹Jmeter中如何使用 JSON斷言、同步定時器、事務控制器、CSV數據文件設置、HTTP Cookie管理器 目錄 一&#xff1a;JSON斷言 1&#xff1a;正確結果展示 2&#xff1a;錯誤結果展示 3&#xff1a;JSON配置 &#xff08;1&#xff09;Additionally assert …

分布式鎖—Redisson的同步器組件

1.Redisson的分布式鎖簡單總結 Redisson分布式鎖包括&#xff1a;可重入鎖、公平鎖、聯鎖、紅鎖、讀寫鎖。 (1)可重入鎖RedissonLock 非公平鎖&#xff0c;最基礎的分布式鎖&#xff0c;最常用的鎖。 (2)公平鎖RedissonFairLock 各個客戶端嘗試獲取鎖時會排隊&#xff0c;按照隊…

國產編輯器EverEdit - 腳本(解鎖文本編輯的無限可能)

1 腳本 1.1 應用場景 腳本是一種功能擴展代碼&#xff0c;用于提供一些編輯器通用功能提供不了的功能&#xff0c;幫助用戶在特定工作場景下提高工作效率&#xff0c;幾乎所有主流的編輯器、IDE都支持腳本。 ??EverEdit的腳本支持js(語法與javascript類似)、VBScript兩種編程…

服務器上的nginx因漏洞掃描需要升級

前言 最近客戶聯系說nginx存在安全漏洞 F5 Nginx 安全漏洞(CVE-2024-7347) F5Nginx是美國F5公司的一款輕量級Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器&#xff0c;在BSD-like協議下發行。F5 Nginx存在安全漏洞&#xff0c;該漏洞源于可能允許攻擊者使用特制的…

ASP.NET CORE MVC EF框架

1.一個視圖中的多個表單Form中的變量。 方式一&#xff1a;視圖中跨Form變量不能用&#xff0c;得各自定義變量否則編譯不能通過。變量名還不能相同。 或者方式二&#xff1a;在Form之外定義變量 {ViewData["Title"] "ExpenseForm"; } &#xfeff; {L…

【MySQL 中 `TINYINT` 類型與布爾值的關系】

MySQL 中 TINYINT 類型與布爾值的關系 在 MySQL 數據庫中&#xff0c;BOOLEAN 類型并不存在&#xff0c;BOOLEAN 或 BOOL 都是 TINYINT(1) 的別名。通常&#xff0c;TINYINT(1) 類型用于存儲布爾值。 1. TINYINT 類型介紹 TINYINT 是一個占用 1 字節的整數類型&#xff0c;取…

【Rust基礎】Rust后端開發常用庫

使用Rust有一段時間了&#xff0c;期間嘗試過使用Rust做后端開發、命令行工具開發&#xff0c;以及做端側模型部署&#xff0c;也嘗試過交叉編譯、FFI調用等&#xff0c;也算是基本入門了。在用Rust做后端接口開發時&#xff0c;常常會找不到一些合適庫&#xff0c;而這些庫在J…

[leetcode]位運算

一.AND &運算 注&#xff1a;兩個操作數做&運算結果是不會變大的 二.OR |運算 注&#xff1a;兩個操作數做|運算結果是不會變小的 三.XOR(異或) ^運算 注&#xff1a;結果可能變大也可能變小也可能不變&#xff0c;但是不會導致進位&#xff0c;比如兩個四位的數字做…

常見FUZZ姿勢與工具實戰:從未知目錄到備份文件漏洞挖掘

本文僅供學習交流使用&#xff0c;嚴禁用于非法用途。未經授權&#xff0c;禁止對任何網站或系統進行未授權的測試或攻擊。因使用本文所述技術造成的任何后果&#xff0c;由使用者自行承擔。請嚴格遵守《網絡安全法》及相關法律法規&#xff01; 目錄 本文僅供學習交流使用&am…