【大數據分析 | 深度學習】在Hadoop上實現分布式深度學習

在這里插入圖片描述

【作者主頁】Francek Chen
【專欄介紹】 ? ? ?智能大數據分析 ? ? ? 智能大數據分析是指利用先進的技術和算法對大規模數據進行深入分析和挖掘,以提取有價值的信息和洞察。它結合了大數據技術、人工智能(AI)、機器學習(ML)和數據挖掘等多種方法,旨在通過自動化的方式分析復雜數據集,發現潛在的價值和關聯性,實現數據的自動化處理和分析,從而支持決策和優化業務流程。與傳統的人工分析相比,智能大數據分析具有自動化、深度挖掘、實時性和可視化等特點。智能大數據分析廣泛應用于各個領域,包括金融服務、醫療健康、零售、市場營銷等,幫助企業做出更為精準的決策,提升競爭力。
【GitCode】專欄資源保存在我的GitCode倉庫:https://gitcode.com/Morse_Chen/Intelligent_bigdata_analysis。

文章目錄

    • 前言
    • 一、Submarine(Hadoop生態系統)
      • (一)Submarine 介紹
      • (二)中文演講介紹
      • (三)Submarine 屬于 Hadoop 生態系統
      • (四)Submarine 官網版本演進
    • 二、TonY(LinkedIn)
      • (一)官網介紹
      • (二)新聞報道介紹
    • 三、DL4J(deeplearning4j,java 深度學習框架)
      • (一)DL4J 概述
      • (二)官網介紹
      • (三)書籍介紹


前言

大數據和深度學習結合之路——在Hadoop上實現分布式深度學習(本質理解:搭好環境后可運行深度學習程序)

一、Submarine(Hadoop生態系統)

(一)Submarine 介紹

Submarine:在 Apache Hadoop 中運行深度學習框架
參考鏈接:https://hortonworks.com/blog/submarine-running-deep-learning-workloads-apache-hadoop/

Hadoop 是用于大型企業數據集的分布式處理的最流行的開源框架,它在本地和云端環境中都有很多重要用途。

深度學習對于語音識別,圖像分類,AI 聊天機器人,機器翻譯等領域的企業任務非常有用,僅舉幾例。為了訓練深度學習/機器學習模型,可以利用 TensorFlow / MXNet / Pytorch / Caffe / XGBoost 等框架。有時需要將這些框架進行組合使用以用于解決不同的問題。

為了使分布式深度學習/機器學習應用程序易于啟動,管理和監控,Hadoop 社區啟動了 Submarine 項目以及其他改進,例如一流的 GPU 支持,Docker 容器支持,容器 DNS 支持,調度改進等。

這些改進使得在 Apache Hadoop YARN 上運行的分布式深度學習/機器學習應用程序就像在本地運行一樣簡單,這可以讓機器學習工程師專注于算法,而不是擔心底層基礎架構。通過升級到最新的 Hadoop,用戶現在可以在同一群集上運行其他 ETL / streaming 作業來運行深度學習工作負載。這樣可以輕松訪問同一群集上的數據,從而實現更好的資源利用率。

在這里插入圖片描述
典型的深度學習工作流程:數據從各個終端(或其他來源)匯聚到數據湖中。數據科學家可以使用筆記本進行數據探索,創建 pipelines 來進行特征提取/分割訓練/測試數據集。并開展深度學習和訓練工作。這些過程可以重復進行。因此,在同一個集群上運行深度學習作業可以顯著提高數據 / 計算資源共享的效率。

讓我們仔細看看 Submarine 項目(它是 Apache Hadoop 項目的一部分),請看下如何在 Hadoop 上運行這些深度學習工作。

為什么叫 Submarine 這個名字? 因為潛艇是唯一可以將人類帶到更深處的裝置設備。

Submarine 項目包括兩個部分:Submarine 計算引擎和一套 Submarine 生態系統集成插件/工具。

Submarine 計算引擎通過命令行向 YARN 提交定制的深度學習應用程序(如Tensorflow, Pytorch等)。這些應用程序與 YARN 上的其他應用程序并排運行,例如 Apache Spark,Hadoop Map/Reduce 等。

最重要的是,有一套海底生態系統集成,目前包括:

  • Submarine-Zeppelin integration:允許數據科學家在 Zeppelin notebook 上編碼,并直接從 notebook 上提交/管理培訓工作。
  • Submarine-Azkaban integration:允許數據科學家從 notebooks 直接向 Azkaban 提交一組具有依賴關系的任務。
  • Submarine-installer:在您的環境中安裝 Submarine 和 YARN,以便更容易地嘗試強大的工具集。

在這里插入圖片描述
Submarine 示意圖,底部顯示 Submarine 計算引擎,它只是另一個 YARN 應用程序。在計算引擎之上,它集成了其他生態系統,如 notebook (Zeppelin/Jupyter) 和 Azkaban。

(二)中文演講介紹

參考鏈接:https://www.apachecon.com/acasia2022/zh/sessions/ai-1026.html
APACHE SUBMARINE 云原生機器學習平臺
劉勛 KEVIN SU
中文演講 2022-07-29 14:00 GMT+8 #AI

Apache Submarine 是一個可以進行機器學習全流程處理的一站式工作平臺,它以云原生的方式運行在 Kubernetes 和 Cloud 之上。Submarine 提供了完善的平臺部署和 Tensorflow、Pytorch 等機器學習框架的 YAML 文件和 Docker 鏡像,這讓整個系統的部署和使用都變的非常簡單,您只需運行一條 Heml 命令就可以將 Submarine 機器學習平臺運行在 Kubernetes 或 Cloud 之上,Submarine 提供支持多用戶操作的 Workbench,數據科學家和算法工程師通過瀏覽器就可以完成數據加工、算法開發、作業調度、模型訓練以及模型 Serving 的所有工作。Submarine 提供了標準的 Tensorflow、Pytorch、Python 和 XGBoost 等機器學習框架 Docker 鏡像,您還可以自己進行定制和擴展,通過 Docker 為機器學習作業提供了完全隔離的運行環境,借助 Kubernetes 和 Cloud 的資源管控能力,Submarine 支持大量機器學習作業的調度運行。

Speakers:
在這里插入圖片描述
劉勛:滴滴,高級技術專家,Apache Member、Apache 孵化器導師、Apache Submarine PMC Chair、Apache Hadoop & Zeppelin Committer

在這里插入圖片描述
kevin Su:Union.ai 軟件研發工程師,Apache Submarine Committer & PMC,LFAI 開源項目 Flyte Maintainer & Committer

(三)Submarine 屬于 Hadoop 生態系統

在這里插入圖片描述 Apache Hadoop 官網地址:https://hadoop.apache.org/

在這里插入圖片描述
在這里插入圖片描述
Submarine: A unified AI platform which allows engineers and data scientists to run Machine Learning and Deep Learning workload in distributed cluster.

Submarine:一個統一的人工智能平臺,允許工程師和數據科學家在分布式集群中運行機器學習和深度學習工作負載。

(四)Submarine 官網版本演進

Submarine 官網地址:https://submarine.apache.org/versions/

在這里插入圖片描述
1. 最新版 0.8.0

This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems.

本文檔讓您快速了解 Submarine 平臺的基本用法。您可以在平臺上完成 ML 模型生命周期的每一步,而不會遇到麻煩的環境問題。

在這里插入圖片描述

2. 版本 0.6.0

https://submarine.apache.org/docs/0.6.0/userDocs/yarn/YARNRuntimeGuide/

在這里插入圖片描述
在這里插入圖片描述

SUBMARINE_VERSION=<REPLACE_VERSION>
SUBMARINE_HADOOP_VERSION=3.1
CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \
java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \--framework tensorflow \--docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \--input_path hdfs://pi-aw:9000/dataset/cifar-10-data \--worker_resources memory=3G,vcores=2 \--worker_launch_cmd "export CLASSPATH=\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync" \--env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \--env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \--env HADOOP_HOME=/hadoop-3.1.0 \--env HADOOP_YARN_HOME=/hadoop-3.1.0 \--env HADOOP_COMMON_HOME=/hadoop-3.1.0 \--env HADOOP_HDFS_HOME=/hadoop-3.1.0 \--env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \--conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar

不論是通過 Sumarine 還是通過單獨的 Tony 本身,本質上都是支持兩種模式來支持在 Yarn 上實現分布式深度學習:
(1)無需 Docker 容器,需要帶 TensorFlow 的 Python 虛擬環境等支持;
(2)通過配置 Docker 容器(Docker 鏡像)支持的 Hadoop 集群。

對其中的第(2)種方法,要通過安裝 Docker 并配置鏡像文件等一系列動作來實現。關于 Docker 的相關知識,網上有很多:

  • Docker 能從入門到精通的學習指南:https://zhuanlan.zhihu.com/p/460658036

  • 如何創建 Docker 鏡像?(上):https://zhuanlan.zhihu.com/p/585264583?utm_id=0

  • Docker6 種網絡配置詳解,網絡模式應該這么選:http://www.ppmy.cn/news/32706.html

  • Docker 鏡像配置深度學習環境(Ubuntu 18.04):https://zhuanlan.zhihu.com/p/562707628
    在這里插入圖片描述
    這個寫的特別好,是一個簡單快速的實現路徑!

https://submarine.apache.org/docs/0.6.0/userDocs/yarn/WriteDockerfileTF/

在這里插入圖片描述

對于所需的基礎鏡像 Ubuntu 18.04, 可以直接從 Docker Hub 下載:https://hub.docker.com/_/ubuntu/tags

在這里插入圖片描述

二、TonY(LinkedIn)

(一)官網介紹

官網地址:https://github.com/tony-framework/TonY

在這里插入圖片描述

TonY is a framework to natively run deep learning jobs on Apache Hadoop. It currently supports TensorFlow, PyTorch, MXNet and Horovod. TonY enables running either single node or distributed training as a Hadoop application. This native connector, together with other TonY features, aims to run machine learning jobs reliably and flexibly. For a quick overview of TonY and comparisons to other frameworks, please see this presentation.

TonY 是一個在 Apache Hadoop 上原生運行深度學習作業的框架。目前支持 TensorFlow、PyTorch、MXNet 和 Horovod。TonY 支持將單個節點或分布式訓練作為 Hadoop 應用程序運行。此原生連接器與其他 TonY 功能一起,旨在可靠、靈活地運行機器學習作業。有關 TonY 的快速概述以及與其他框架的比較,請參閱本演示。

在這里插入圖片描述

(二)新聞報道介紹

翻譯自:https://www.infoworld.com/article/3305590/linkedin-open-sources-a-tool-to-run-tensorflow-on-hadoop.html

LinkedIn 已使用 Hadoop 中的 YARN(Yet Another Resource Negotiator)作業調度系統開源了一個用于擴展和管理 TensorFlow 中的深度學習作業的項目。Tony 項目是在 LinkedIn 嘗試使用兩個現有的開源解決方案在 Hadoop 上運行計劃的 TensorFlow 作業并發現他們都想要的之后才出現的。已經有一些在 Hadoop 上運行 TensorFlow 的項目,但是 LinkedIn 對它們不滿意。其中之一,TensorFlow on Spark 通過 Apache Spark 的作業引擎運行 TensorFlow,但它與 Spark 的聯系太緊密了。另一個 TensorFlow on YARN 提供與 Tony 相同的基本功能,但未維護且不提供容錯功能。

[TensorFlow 機器學習入門。? TensorFlow 評論:最好的深度學習庫變得更好 。?查看最新版本的 TensorFlow 中的新增功能 。| 通過 InfoWorld 的 App Dev Report 新聞通訊了解編程方面的熱門話題。]

TensorFlow 中的深度學習模型需要某種形式的作業管理。訓練模型可能需要數小時或數天,并且訓練過程需要一定的保證才能正確完成。

根據 LinkedIn 的新聞記錄,Tony 使用 YARN 的資源和任務調度系統在整個 Hadoop 集群上設置 TensorFlow 作業。Tony 還可以通過 Hadoop 調度基于 GPU 的 TensorFlow 作業,請求不同類型的資源(GPU 與 CPU)或為 TensorFlow 節點分配不同的內存,并確保作業輸出定期保存到 HDFS 并從它們停止的地方恢復崩潰或被打斷。

Tony 將其工作分為三個內部組件:一個客戶端,一個應用程序主機和一個任務執行器。客戶端接受傳入的 TensorFlow 作業;應用程序主機與YARN 的資源管理器協商以在 YARN 上配置作業;任務執行器實際上是在 YARN 集群上啟動的,用于運行 TensorFlow 作業。

LinkedIn 聲稱使用 Tony 時 TensorFlow 作業沒有明顯的開銷,因為 Tony “位于編排分布式 TensorFlow 的層中,并且不會干擾 TensorFlow作業的實際執行。”

Tony 還可以使用 TensorBoard 應用程序來可視化,優化和調試 TensorFlow 應用程序。

注意:There are two ways to launch your deep learning jobs with TonY:

在這里插入圖片描述

在這里插入圖片描述

三、DL4J(deeplearning4j,java 深度學習框架)

(一)DL4J 概述

深度學習 DL4J 進行圖像識別:https://zhuanlan.zhihu.com/p/545442663

DL4J (Deeplearning4j) 是 Skymind 開源并維護的一個基于 JVM 的深度學習框架。也是在 Spark 平臺上可以原生支持分布式模型訓練的為數不多的框架之一。DL4J 還支持多 GPU 集群,可以與高性能異構計算框架無縫銜接,進一步提升運算性能。

DL4J 是用 Java 和 Scala 編寫,通過與 Hadoop 和 Spark 集成來處理大規模數據。其內部采用 Java N 維數組實現的庫即 ND4J (N-Dimensional Arrays For Java),處理多樣的 n 維數組對象。ND4J 支持 GPU 計算,有助于加快深度學習迭代訓練速度。ND4J 實際就是一個科學計算庫,屬于低階 API,而 DL4J 屬于高階 API,類似 Keras。

DL4J 中除了 ND4J 外,還有 DataVec (用于數據集的加載和轉換),SameDiff (基于圖的自動微分、深度學習框架),Arbiter (超參數搜索),LibND4J (底層 C++庫,調用 cuDNN、OpenBLAS 等庫支持 CPU/GPU 計算)。ND4J 通過這些庫共同支撐基于 JVM 的深度學習應用程序的所有需求。

DL4J 將數據集處理與算法模型訓練分開處理,使用 DataVec 庫加載和轉換數據集,使用張量和 ND4J 庫訓練模型。通過 DataVec 庫的 RecordReaderDataSetIterator 獲取數據,ND4J 庫的 DataSet (存儲數據特征和標簽的容器) 對訓練數據進行封裝,可以封裝單條訓練數據,也可以封裝一個 Mini-batch,每一次迭代用一個 DataSet 更新神經網絡中參數。在 DL4J 中構建訓練數據集,最終就是生成一個 DataSet 迭代器或 DataSet 序列。

(二)官網介紹

https://github.com/deeplearning4j

在這里插入圖片描述

(三)書籍介紹

《Hadoop 深度學習》是一本關于 Hadoop 在深度學習領域的應用的圖書,由機械工業出版社于 2016 年出版。本書的作者是德國的尼爾斯·貝克和美國的約瑟夫·斯蒂芬·卡恩,兩位作者都是數據科學和計算機科學領域的知名專家。

在這里插入圖片描述

本書的主要內容是介紹如何使用 Hadoop 進行深度學習計算,以及介紹 Hadoop 在深度學習領域的一些應用案例。書中詳細講解了如何使用 Hadoop 旗下的分布式計算平臺 Apache Hadoop 和分布式深度學習框架 Apache Spark 進行深度學習,并且介紹了如何使用這些工具進行圖像識別、語音識別、自然語言處理等任務。

在結構上,本書共分為 11 章。第一章至第四章介紹了 Hadoop 和深度學習的基本概念和原理,以及使用 Hadoop 進行深度學習計算的方法。第五章至第八章介紹了使用 Apache Hadoop 進行深度學習計算的具體方法和案例,第九章至第十一章介紹了使用 Apache Spark 進行深度學習計算的具體方法和案例。

在這里插入圖片描述

本書的特點是理論與實踐相結合,書中介紹了很多具體的案例和實踐經驗,讓讀者可以更好地掌握 Hadoop 在深度學習領域的應用。同時,書中還注重了對于原理和技術的講解,讓讀者可以更好地理解深度學習和 Hadoop 的原理和實現方法。

在這里插入圖片描述

總的來說,本書是一本非常值得閱讀的圖書,它不僅介紹了深度學習和 Hadoop 的基本概念和原理,還介紹了如何使用 Hadoop 進行深度學習計算的具體方法和案例。它適合所有對深度學習和 Hadoop 感興趣的讀者閱讀,能夠幫助他們更好地了解和掌握這些技術的實現方法和原理。

在這里插入圖片描述

當然,本書也存在一些不足之處。首先,書中的內容可能會讓一些初學者感到有些難以理解,需要具備一定的編程和數據處理基礎。其次,書中介紹的一些案例可能已經過時或者不夠全面,需要讀者自行根據實際情況進行調整和補充。

在這里插入圖片描述

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

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

相關文章

盛鉑科技SCP4000射頻微波功率計與SPP5000系列脈沖峰值 USB功率計 區別

在射頻&#xff08;RF&#xff09;和微波測試領域&#xff0c;快速、精準的功率測量是確保通信系統、雷達、衛星設備等高性能運行的核心需求。無論是連續波&#xff08;CW&#xff09;信號的穩定性測試&#xff0c;還是脈沖信號的瞬態功率分析&#xff0c;工程師都需要輕量化、…

自學微信小程序的第十三天

DAY13 1、使用map組件在頁面中創建地圖后&#xff0c;若想在JS文件中對地圖進行控制&#xff0c;需要通過地圖API來完成。先通過wx.createMapContext()方法創建MapContext&#xff08;Map上下文&#xff09;實例&#xff0c;然后通過該實例的相關方法來操作map組件。 const m…

深入解析 C# 中的泛型:概念、用法與最佳實踐

C# 中的 泛型&#xff08;Generics&#xff09; 是一種強大的編程特性&#xff0c;允許開發者在不預先指定具體數據類型的情況下編寫代碼。通過泛型&#xff0c;C# 能夠讓我們編寫更靈活、可重用、類型安全且性能優良的代碼。泛型廣泛應用于類、方法、接口、委托、集合等多個方…

H5DS編輯器是如何讓企業快速構建動態頁面

H5DS編輯器核心亮點&#xff1a; 1.拖拽式操作&#xff0c;小白友好&#xff1a;無需設計與代碼基礎&#xff01;通過簡單拖拽元素、調整文字和動畫&#xff0c;即可生成交互式H5頁面。內置海量模板和素材庫&#xff0c;支持自定義設計風格&#xff0c;輕松適配企業品牌需求。…

Unity ECS與MonoBehaviour混合架構開發實踐指南

一、混合架構設計背景 1. 技術定位差異 ECS&#xff08;Entity Component System&#xff09;&#xff1a;面向數據設計&#xff08;DOD&#xff09;&#xff0c;適用于大規模實體計算&#xff08;如10萬單位戰斗&#xff09; MonoBehaviour&#xff1a;面向對象設計&#xf…

[項目]基于FreeRTOS的STM32四軸飛行器: 三.電源控制

基于FreeRTOS的STM32四軸飛行器: 三.電源控制 一.IP5305T芯片手冊二.電源控制任務 一.IP5305T芯片手冊 注意該芯片低功耗特性&#xff0c;為防止進入待機&#xff0c;每隔一段時間發送一個電平。 官方提供的芯片外圍電路設計圖&#xff1a; 電氣特性&#xff1a; 當負載電流持…

java環境部署

java環境部署 一、準備工作 jrejdkeclipse jdk下載&#xff1a;21和1.8-----官網&#xff1a;Oracle&#xff1a;Java 下載 |神諭 該處選擇要依據自身的系統類型選擇下載 idea的下載安裝&#xff1a;IntelliJ IDEA | Other Versions 二、安裝 三、環境配置 四、使用 五、i…

微服務通信:用gRPC + Protobuf 構建高效API

引言 在微服務架構中&#xff0c;服務之間的通信是系統設計的核心問題之一。傳統的RESTful API雖然簡單易用&#xff0c;但在性能、類型安全和代碼生成等方面存在一定的局限性。gRPC作為一種高性能、跨語言的RPC框架&#xff0c;結合Protobuf&#xff08;Protocol Buffers&…

使用 Docker 和 Nginx 高效部署 Web 服務(適用于慈云數據云服務器)

前言 在現代 Web 服務部署中&#xff0c;Docker 和 Nginx 的結合是一種高效、靈活且可擴展的解決方案。 Docker 使應用程序及其依賴項封裝到一個獨立的容器中&#xff0c;確保一致性&#xff0c;并簡化部署過程。Nginx 作為高性能 Web 服務器和反向代理&#xff0c;能夠高效處…

C 語言數據結構(一):時/空間復制度

目錄 一、前言 1. 什么是數據結構 2. 什么是算法 二、時 / 空間復雜度 1. 算法效率 2. 時間復雜度 2.1 時間復雜度的概念 2.2 大 O 的漸進表示法 2.3 常見的計算時間復雜度的例子 2.3.1 實例 1 2.3.2 實例 2 2.3.3 實例 3 2.3.4 實例 4 2.3.5 實例 5 &#xff1a…

一文讀懂Redis分布式鎖

引言 在當今互聯網時代&#xff0c;分布式系統已成為大規模應用的主流架構。然而&#xff0c;這種架構中多個服務同時對共享資源的操作可能導致并發問題&#xff0c;如數據不一致和資源爭用。有效管理這些并發訪問&#xff0c;確保共享資源的安全性顯得尤為重要。 分布式鎖作…

23種設計模式一覽【設計模式】

文章目錄 前言一、創建型模式&#xff08;Creational Patterns&#xff09;二、結構型模式&#xff08;Structural Patterns&#xff09;三、行為型模式&#xff08;Behavioral Patterns&#xff09; 前言 設計模式是軟件工程中用來解決特定問題的一組解決方案。它們是經過驗證…

極狐GitLab 17.9 正式發布,40+ DevSecOps 重點功能解讀【三】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

elk的相關的基礎

以下是關于ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;的200個基礎問題及其答案&#xff0c;涵蓋了ELK的核心概念、組件、配置、使用場景、優化等方面。 ?Elasticsearch 基礎 ?**什么是Elasticsearch&#xff1f;**? 答&#xff1a;Elasticsearch是一個分…

Beyond Compare for mac v5.0.6.30713 文件對比利器 支持M、Intel芯片

Mac毒搜集到的Beyond Compare是一套超級的文件及文件夾(目錄)的比較工具&#xff0c;不僅可以快速比較出兩個目錄的不同&#xff0c;還可以比較每個文件的內容&#xff0c;而且可以任意顯示比較結果。 應用介紹 程序內建了文件瀏覽器&#xff0c;方便您對文件、文件夾、壓縮包…

ProfibusDP主站轉ModbusTCP網關如何進行數據互換

ProfibusDP主站轉ModbusTCP網關如何進行數據互換 在現代工業自動化領域&#xff0c;通信協議的多樣性和復雜性不斷增加。Profibus DP作為一種經典的現場總線標準&#xff0c;廣泛應用于工業控制網絡中&#xff1b;而Modbus TCP作為基于以太網的通信協議&#xff0c;因其簡單易…

python代碼注釋方式

在 Python 中&#xff0c;注釋是用于解釋代碼、提高代碼可讀性和可維護性的重要工具。Python 支持兩種主要的注釋方式&#xff1a;單行注釋和多行注釋。此外&#xff0c;Python 還支持文檔字符串&#xff08;docstrings&#xff09;&#xff0c;用于為模塊、函數、類和方法提供…

【雜談】信創電腦華為w515(統信系統)登錄鎖定及忘記密碼處理

華為w515麒麟芯片版&#xff0c;還有非麒麟芯片版本&#xff0c;是一款信創電腦&#xff0c;一般安裝的UOS系統。 準備一個空U盤&#xff0c;先下載鏡像文件及啟動盤制作工具&#xff0c;連接如下&#xff1a; 百度網盤 請輸入提取碼 http://livecd.uostools.com/img/apps/l…

數據結構秘籍(四) 堆 (詳細包含用途、分類、存儲、操作等)

1 引言 什么是堆&#xff1f; 堆是一種滿足以下條件的樹&#xff1a;&#xff08;樹這一篇可以參考我的文章數據結構秘籍&#xff08;三&#xff09;樹 &#xff08;含二叉樹的分類、存儲和定義&#xff09;-CSDN博客&#xff09; 堆中的每一個結點值都大于等于&#xff08…

#define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))

這個宏 #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) 是用來在 C++ 中標記某些函數、變量或者代碼元素為已棄用(deprecated)的,并附帶一個自定義的棄用消息。 具體解釋: __declspec(deprecated(msg)): __declspec 是 Microsoft Visual C++ (MSVC) 的擴展…