欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文學會Hadoop與Spark等大數(shù)據框架知識

 更新時間:2022年04月29日 11:44:53   作者:von?Neumann  
Hadoop是一個開源的可運行于大規(guī)模集群上的分布式文件系統(tǒng)和運行處理基礎框架,Spark是UC Berkeley?AMPLab開發(fā)的是一種計算框架,分布式資源工作交由集群管理軟件(Mesos、YARN),本文介紹Hadoop與Spark大數(shù)據框架知識,感興趣的朋友一起看看吧

海量數(shù)據的存儲問題很早就已經出現(xiàn)了,一些行業(yè)或者部門因為歷史的積累,數(shù)據量也達到了一定的級別。很早以前,當一臺電腦無法存儲這么龐大的數(shù)據時,采用的解決方案是使用NFS(網絡文件系統(tǒng))將數(shù)據分開存儲。但是這種方法無法充分利用多臺計算機同時進行分析數(shù)據。

NFS系統(tǒng)架構

一個實際的需求場景:日志分析

日志分析是對日志中的每一個用戶的流量進行匯總求和。對于一個日志文件,如果只有這么幾行數(shù)據,我們一般會采用這樣的處理方式

  • 讀取一行日志
  • 抽取手機號和流量字段
  • 累加到HashMap中
  • 遍歷輸出結果

如果數(shù)據量變得很大呢,比如一個日志文件里面有幾個GB數(shù)據,仍然一行一行去讀,那么就會因為磁盤的IO瓶頸導致效率太低,速度太慢。如果一次性加載到內存,那么就會因為單臺計算機的內存空間有限而導致內存溢出。如果將中間結果全部緩存到HashMap中,那么也會因為單臺計算機的內存空間有限而導致內存溢出??梢赃x擇采用多線程處理,但是依然無法改變資源瓶頸的現(xiàn)實,因為一臺計算器的CPU資源,內存資源,磁盤IO瓶頸是定,創(chuàng)建再多的線程也無法改變這個現(xiàn)實。

解決思路一:縱向擴展

升級硬件,提高單機性能(增加內存,增強CPU、用更高性能的磁盤(如固態(tài)硬盤),比如可以購買IBM的高端服務器。這種方法簡單易行,但單臺計算機的擴展空間有限,CPU、內存、磁盤再怎么擴展也是有限的,無法無限擴展。除此之外,成本較高,高端服務器常常非常昂貴,幾百萬甚至上千萬一臺,一般的小公司承受不起這樣高昂的成本。

解決思路二:橫向擴展:

用多臺節(jié)點分布式集群處理 ,通過增加節(jié)點數(shù)量提高處理能力,這里說的節(jié)點指的就是一臺計算機。其思想為任務分攤,通過協(xié)作來實現(xiàn)單節(jié)點無法實現(xiàn)的任務,且成本相對低(可采用普通機器) 、易于線性擴展。但是其系統(tǒng)復雜度增加,我們要將我們的web應用部署到每一個節(jié)點上面,而多個節(jié)點協(xié)同工作時就要考慮:如何調度資源、任務如何監(jiān)控、中間結果如何調度、系統(tǒng)如何容錯、如何實現(xiàn)眾多節(jié)點間的協(xié)調等問題。

Hadoop

Hadoop是一個開源的可運行于大規(guī)模集群上的分布式文件系統(tǒng)和運行處理基礎框架。其擅長于在廉價機器搭建的集群上進行海量數(shù)據(結構化與非結構化)的存儲與離線處理。Hadoop就是一門用來處理大數(shù)據的技術,就是用來解決上述提到的分布式計算里面的5個技術難題的。

Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作為 Lucene 的子 項目 Nutch 的一部分正式引入。它受到最先由 Google Lab 開發(fā)的 MapReduce 和 Google File System 的啟發(fā)。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中?! adoop 是最受歡迎的在 Internet 上對搜索關鍵字進行內容分類的工具,但它也可以解決許多要求極大伸縮性的問題。例如,如果您要 grep 一個 10TB 的巨型文件,會出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長的時間。但是 Hadoop 在設計時就考慮到這些問題,因此能大大提高效率。

Hadoop的生態(tài)壞境

Hadoop是一個能夠對大量數(shù)據進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。Hadoop的核心是HDFS和Mapreduce,hadoop2.0還包括YARN。

Hadoop生態(tài)系統(tǒng)

HDFS(Hadoop分布式文件系統(tǒng))

HDFS(Hadoop Distributed File System)源自于Google的GFS論文,發(fā)表于2003年10月,HDFS是GFS克隆版。是Hadoop體系中數(shù)據存儲管理的基礎。它是一個高度容錯的系統(tǒng),能檢測和應對硬件故障,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數(shù)據訪問,提供高吞吐量應用程序數(shù)據訪問功能,適合帶有大型數(shù)據集的應用程序。

Hadoop分布式文件系統(tǒng)

  • Client:切分文件;訪問HDFS;與NameNode交互,獲取文件位置信息;與DataNode交互,讀取和寫入數(shù)據。
  • NameNode:Master節(jié)點,在hadoop1.X中只有一個,管理HDFS的名稱空間和數(shù)據塊映射信息,配置副本策略,處理客戶端請求。
  • DataNode:Slave節(jié)點,存儲實際的數(shù)據,匯報存儲信息給NameNode。
  • Secondary NameNode:輔助NameNode,分擔其工作量;定期合并fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢復NameNode,但Secondary NameNode并非NameNode的熱備。

YARN是一種 Hadoop 資源管理器,它是一個通用資源管理系統(tǒng),可為上層應用提供統(tǒng)一的資源管理和調度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據共享等方面帶來了巨大好處。
#####Hadoop YARN產生背景
直接源于MRv1在幾個方面的缺陷:

  • 擴展性受限
  • 單點故障
  • 難以支持MR之外的計算

除此之外,多計算框架各自為戰(zhàn),數(shù)據共享困難。比如:MapReduce(離線計算框架)、Storm(實時計算框架)、Spark(內存計算框架)。
#####Hadoop YARN基本架構

Hadoop YARN各模塊組成

ResourceManager

  • 處理客戶端請求
  • 啟動/監(jiān)控ApplicationMaster
  • 監(jiān)控NodeManager
  • 資源分配與調度

NodeManager

  • 單個節(jié)點上的資源管理
  • 處理來自ResourceManager的命令
  • 處理來自ApplicationMaster的命令

ApplicationMaster

  • 數(shù)據切分
  • 為應用程序申請資源,并分配給內部任務
  • 任務監(jiān)控與容錯

Hadoop YARN運行流程分析

Hadoop YARN調度框架

Hadoop YARN采用雙層調度框架。首先,RM將資源分配給AM。其次,AM再將資源進一步分配給各個Task。YARN與“all or nothing”策略不同(Apache Mesos),其遵循基于資源預留的調度策略,當資源不夠時,會為Task預留,直到資源充足。

Hadoop YARN調度框架

運行在YARN上的計算框架

  • 離線計算框架:MapReduce
  • DAG計算框架:Tez
  • 流式計算框架:Storm
  • 內存計算框架:Spark
  • 圖計算框架:Giraph、GraphLib

Hadoop MapReduce是google MapReduce 克隆版。

分布式計算框架

MapReduce是一種計算模型,用以進行大數(shù)據量的計算。其中Map對數(shù)據集上的獨立元素進行指定的操作,生成鍵-值對形式中間結果。Reduce則對中間結果中相同“鍵”的所有“值”進行規(guī)約,以得到最終結果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分布式并行環(huán)境里進行數(shù)據處理。

  • JobTracker:Master節(jié)點,只有一個,管理所有作業(yè),作業(yè)/任務的監(jiān)控、錯誤處理等;將任務分解成一系列任務,并分派給TaskTracker。
  • TaskTracker:Slave節(jié)點,運行Map Task和Reduce Task;并與JobTracker交互,匯報任務狀態(tài)。
  • Map Task:解析每條數(shù)據記錄,傳遞給用戶編寫的map(),并執(zhí)行,將輸出結果寫入本地磁盤(如果為map-only作業(yè),直接寫入HDFS)。
  • Reducer Task:從Map Task的執(zhí)行結果中,遠程讀取輸入數(shù)據,對數(shù)據進行排序,將數(shù)據按照分組傳遞給用戶編寫的reduce函數(shù)執(zhí)行。

MapReduce處理流程

Hive(基于Hadoop的數(shù)據倉庫)

Hive由facebook開源,最初用于解決海量結構化的日志數(shù)據統(tǒng)計問題。Hive定義了一種類似SQL的查詢語言(HQL),將SQL轉化為MapReduce任務在Hadoop上執(zhí)行,通常用于離線分析。

HIVE

HBase(分布式列存數(shù)據庫)

Hbae源自Google的Bigtable論文,發(fā)表于2006年11月,HBase是Google Bigtable克隆版。HBase是一個針對結構化數(shù)據的可伸縮、高可靠、高性能、分布式和面向列的動態(tài)模式數(shù)據庫。和傳統(tǒng)關系數(shù)據庫不同,HBase采用了BigTable的數(shù)據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規(guī)模數(shù)據的隨機、實時讀寫訪問,同時,HBase中保存的數(shù)據可以使用MapReduce來處理,它將數(shù)據存儲和并行計算完美地結合在一起。

HBase

HBase和Hive在大數(shù)據架構中處在不同位置,HBase主要解決實時數(shù)據查詢問題,Hive主要解決數(shù)據處理和計算問題,一般是配合使用。

Zookeeper(分布式協(xié)作服務)

源自Google的Chubby論文,發(fā)表于2006年11月,Zookeeper是Chubby克隆版
解決分布式環(huán)境下的數(shù)據管理問題:統(tǒng)一命名,狀態(tài)同步,集群管理,配置同步等。

Sqoop(數(shù)據同步工具)

Sqoop是SQL-to-Hadoop的縮寫,主要用于傳統(tǒng)數(shù)據庫和Hadoop之前傳輸數(shù)據。數(shù)據的導入和導出本質上是Mapreduce程序,充分利用了MR的并行化和容錯性。

Pig(基于Hadoop的數(shù)據流系統(tǒng))

由yahoo!開源,設計動機是提供一種基于MapReduce的ad-hoc(計算在query時發(fā)生)數(shù)據分析工具。其定義了一種數(shù)據流語言—Pig Latin,將腳本轉換為MapReduce任務在Hadoop上執(zhí)行,通常用于進行離線分析。

Spark

Spark是UC Berkeley AMPLab開發(fā)的是一種計算框架,分布式資源工作交由集群管理軟件(Mesos、YARN) 。

###Spark的特點

  • 先進架構
  • Spark采用Scala語言編寫,底層采用了actor model的akka作為通訊框架,代碼十分簡潔高效。
  • 基于DAG圖的執(zhí)行引擎,減少多次計算之間中間結果寫到Hdfs的開銷。
  • 建立在統(tǒng)一抽象的RDD(分布式內存抽象)之上,使得它可以以基本一致的方式應對不同的大數(shù)據處理場景。
  • 高效
  • 提供Cache機制來支持需要反復迭代的計算或者多次數(shù)據共享,減少數(shù)據讀取的IO開銷。
  • 與Hadoop的MapReduce相比,Spark基于內存的運算比MR要快100倍;而基于硬盤的運算也要快10倍!
  • 易用
  • Spark提供廣泛的數(shù)據集操作類型(20+種),不像Hadoop只提供了Map和Reduce兩種操作。
  • Spark支持Java,Python和Scala API,支持交互式的Python和Scala的shell。
  • 提供整體解決方案
  • 以其RDD模型的強大表現(xiàn)能力,逐漸形成了一套自己的生態(tài)圈,提供了full-stack的解決方案。
  • 主要包括Spark內存中批處理,Spark SQL交互式查詢,Spark Streaming流式計算, GraphX和MLlib提供的常用圖計算和機器學習算法。
  • 與Hadoop無縫連接
  • Spark可以使用YARN作為它的集群管理器
  • 讀取HDFS,HBase等一切Hadoop的數(shù)據

Spark整體架構

Spark整體架構

Spark提供了多種高級工具,如: Shark SQL應用于即席查詢(Ad-hoc query)、Spark Streaming應用于流式計算、 MLlib應用于機器學習、GraphX應用于圖處理。Spark還可以基于自帶的standalone集群管理器獨立運行,也可以部署在Apache Mesos 和 Hadoop YARN 等集群管理器上運行。Spark可以訪問存儲在HDFS、 Hbase、Cassandra、Amazon S3、本地文件系統(tǒng)等等上的數(shù)據,Spark支持文本文件,序列文件,以及任何Hadoop的InputFormat。

Spark核心概念

Spark任務提供多層分解的概念,Spark組件將用戶的應用程序分解為內部執(zhí)行任務并提供執(zhí)行容器,資源管理為spark組件提供資源管理和調度。

Spark任務

  • 應用程序:由一個driver program和多個job構成
  • job:由多個stage組成
  • stage:對應一個taskset
  • taskset:對應一組關聯(lián)的相互之間沒有shuffle依賴關系的task組成。
  • task:任務最小的工作單元

Spark任務

  • Spark組件
  • Driver Program (驅動程序) :Spark 的核心組件
  • 構建SparkContext(Spark應用的入口,它負責和整個集群的交互,創(chuàng)建需要的變量,還包含集群的配置信息等)
  • 將用戶提交的job轉換為DAG圖(類似數(shù)據處理的流程圖)
  • 根據策略將DAG圖劃分為多個stage,根據分區(qū)從而生成一系列tasks
  • 根據tasks要求向資源管理器申請資源
  • 提交任務并檢測任務狀態(tài)
  • Executor
  • 真正執(zhí)行task的單元,一個Worker Node上可以有多個Executor
  • 資資源管理組件
  • YARN(通用):Master/Slave結構
  • Resource Manager(RM):全局的資源管理器,負責系統(tǒng)的資源管理和分配
  • Node Manager(NM):每個節(jié)點上的資源和任務管理器
  • Application Master(AM):每個應用程序都有一個,負責任務的調度和監(jiān)視,并與RM調度器協(xié)商為任務獲取資源。
  • Standalone(Spark自帶):Master/Slave結構
  • Master:類似于YARN的RM
  • Worker:類似于YARN的NM

Spark端到端流程

Spark的Driver Program (簡稱Driver)包含用戶的應用程序,Driver完成task的解析和生成。

  1. Driver向Cluster Manager(集群資源管理器)申請運行task需要的資源。
  2. 集群資源管理器為task分配滿足要求的節(jié)點,并在節(jié)點按照要求創(chuàng)建Executor
  3. 創(chuàng)建的Executor向Driver注冊。
  4. Driver將Spark應用程序的代碼和文件傳送給分配的Executor
  5. Executor運行task,運行完之后將結果返回給Driver或者寫入HDFS或其他介質。

Spark端到端流程

Spark流程

Spark on Standalone

Master和Worker是Standalone的角色,Driver和Executor是Spark的角色。Master負責分配資源,分配Driver和Executor,讓Worker啟動Driver和Executor,只管理到Executor層,不涉及任務。Driver負責生成task,并與Executor通信,進行任務的調度和結果跟蹤,不涉及資源。

Driver運行在Worker

Driver運行在Worker

  1. 客戶端把作業(yè)發(fā)布到Master
  2. Master讓一個Worker啟動Driver,并將作業(yè)推送給Driver
  3. Driver進程生成一系列task
  4. Driver向Master申請資源
  5. Master讓調度的Worker啟動Exeuctor
  6. Exeuctor啟動后向Driver注冊。
  7. Driver將task調度到Exeuctor執(zhí)行。
  8. Executor執(zhí)行結果寫入文件或返回Driver

Driver運行在Client

  1. 客戶端啟動后直接運行用戶程序,啟動Driver
  2. Driver進程生成一系列task
  3. Driver向Master申請資源
  4. Master讓調度的Worker啟動Exeuctor
  5. Exeuctor啟動后向Driver注冊。
  6. Driver將task調度到Exeuctor執(zhí)行。
  7. Executor執(zhí)行結果寫入文件或返回Driver

Spark的核心組件

Spark的核心組件

Spark的核心組件包括RDD、Scheduler、Storage、Shuffle四部分:

  • RDD是Spark最核心最精髓的部分,Spark將所有數(shù)據都抽象成RDD。
  • Scheduler是Spark的調度機制,分為DAGScheduler和TaskScheduler。
  • Storage模塊主要管理緩存后的RDD、shuffle中間結果數(shù)據和broadcast數(shù)據
  • Shuffle分為Hash方式和Sort方式,兩種方式的shuffle中間數(shù)據都寫本地盤

RDD(Resilient Distributed Datasets)

RDD是彈性分布式數(shù)據集,是只讀的分區(qū)記錄集合。每個RDD有5個主要的屬性:

  • 一組分片(Partition):數(shù)據集的最基本組成單位
  • 一個計算每個分片的函數(shù):對于給定的數(shù)據集,需要做哪些計算
  • 依賴(Dependencies):RDD的依賴關系,描述了RDD之間的lineage
  • preferredLocations(可選):對于data partition的位置偏好
  • partitioner(可選):對于計算出來的數(shù)據結果如何分發(fā)

作用于RDD上的Operation分為轉換(transformantion)和動作(action)。 Spark中的所有“轉換”都是惰性的,在執(zhí)行“轉換”操作,并不會提交Job,只有在執(zhí)行“動作”操作,所有operation才會被提交到cluster中真正的被執(zhí)行。這樣可以大大提升系統(tǒng)的性能。

  • 轉換:從現(xiàn)有的數(shù)據集創(chuàng)建一個新的數(shù)據集即數(shù)據集中的內容會發(fā)生更改,由數(shù)據集A轉換成為數(shù)據集B
  • 動作:在數(shù)據集上運行計算后,返回一個值給驅動程序。 即數(shù)據集中的內容會被歸約為一個具體的數(shù)值(Scala標量、集合類型的數(shù)據或存儲)。

RDD擁有的操作比MR豐富的多,不僅僅包括Map、Reduce操作,還包括右圖的filter、sort、join、save、count等操作,所以Spark比MR更容易方便完成更復雜的任務。

RDD持久化

默認情況下,每一個轉換過的RDD都會在它之上執(zhí)行一個動作時被重新計算。如果RDD只被使用一次或者很少次,不需要持久化。如果RDD被重復使用或者計算其代價很高,才考慮持久化。另外,shuffle后生成的RDD盡量持久化,因為shuffle代價太高。RDD被緩存后,Spark將會在集群中,保存相關元數(shù)據,下次查詢這個RDD時,它將能更快速訪問,不需要計算。如果持久化無謂的RDD,會浪費內存(或硬盤)空間,反而降低系統(tǒng)整體性能

RDD依賴關系

RDD只能基于在穩(wěn)定物理存儲中的數(shù)據集和其他已有的RDD上執(zhí)行確定性操作來創(chuàng)建。能從其他RDD通過確定操作創(chuàng)建新的RDD的原因是RDD含有從其他RDD衍生(即計算)出本RDD的相關信息(即Lineage)。Dependency代表了RDD之間的依賴關系,即血緣(Lineage),分為窄依賴和寬依賴:

窄依賴和寬依賴

  • 窄依賴:一個父RDD最多被一個子RDD用在一個集群節(jié)點上管道式執(zhí)行。比如map、filter、union等
  • 寬依賴:子RDD的分區(qū)依賴于父RDD的所有分區(qū),這是因為shuffle類操作要求所有父分區(qū)可用。比如groupByKey、reduceByKey、 sort、partitionBy等

根據RDD依賴關系的不同,Spark將每一個job分為不同的stage,stage之間的依賴關系形成了DAG圖。對于窄依賴,Spark將其盡量劃分在同一個stage中,因為它們可以進行流水線計算,而寬依賴往往意味著shuffle操作,這也是Spark劃分stage的主要邊界。

RDD依賴關系


寬/窄依賴的概念不止用在stage劃分中,對容錯也很有用。若Transformation操作中間發(fā)生計算失敗,如果運算是窄依賴,只要把丟失的父RDD分區(qū)重算即可,跟其他節(jié)點沒有依賴,這樣可以大大加快場景恢復的開銷,但如果運算是寬依賴,則需要父RDD的所有分區(qū)都存在, 重算代價就較高。當Lineage特別長時或者有寬依賴時,主動調用 checkpoint把當前數(shù)據寫入穩(wěn)定存儲,作為檢查點。

Scheduler

Scheduler模塊作為Spark最核心的模塊之一,充分體現(xiàn)了Spark與MapReduce的不同之處,體現(xiàn)了Spark DAG思想的精巧和設計的優(yōu)雅。Scheduler模塊分為兩大主要部分,DAGScheduler和TaskScheduler。

Scheduler

DAGScheduler把一個spark作業(yè)轉換成成stage的DAG(Directed Acyclic Graph有向無環(huán)圖),根據RDD和stage之間的關系,找出開銷最小的調度方法,然后把stage以TaskSet的形式提交給TaskScheduler。TaskScheduler模塊用于與DAGScheduler交互,負責任務的具體調度和運行。任務調度模塊基于兩個Trait:TaskScheduler和 SchedulerBackend。

Storage

Storage模塊主要分為兩層:

  • 通信層:Storage模塊采用的是master-slave結構來實現(xiàn)通信層,master和slave之間傳輸控制信息、狀態(tài)信息,這些都是通過通信層來實現(xiàn)的。
  • 存儲層:Storage模塊需要把數(shù)據存儲到disk或是memory上面,有可能還需replicate到遠端,這都是由存儲層來實現(xiàn)和提供相應接口。

Storage模塊提供了統(tǒng)一的操作類BlockManager,外部類與storage模塊打交道都需要通過調用BlockManager相應接口來實現(xiàn)。Storage模塊存取的最小單位是數(shù)據塊(Block),Block與RDD中的Partition一一對應,所以所有的轉換或動作操作最終都是對Block進行操作。

Shuffle

Shuffle 中Map任務產生的結果會根據所設置的partitioner算法填充到當前執(zhí)行任務所在機器的每個桶中。Reduce任務啟動時時,會根據任務的ID,所依賴的Map任務ID以及MapStatus從遠端或本地的BlockManager獲取相應的數(shù)據作為輸入進行處理。Shuffle數(shù)據必須持久化磁盤,不能緩存在內存。

Spark之上提供了四種應用庫:

  • Spark SQL 是為處理結構化數(shù)據而設計的模塊
  • Spark Streaming 可以很容易地創(chuàng)建可擴展和容錯性的流式應用
  • MLlib 是Spark的可擴展機器學習庫
  • GraphX 是Spark的并行圖計算API

Spark應用庫

以上便是對Hadoop、Spark的一些淺顯的介紹。事實上,解決大數(shù)據處理相關的問題,往往要經過數(shù)據收集(Flume、Kafka、Sqoop)、數(shù)據存儲(HDFS、HBase)、資源管理(YARN)、計算(MapReduce、Spark)、數(shù)據分析(Pandas、NumPy、R)、數(shù)據可視化(Echart、Tableau)等環(huán)節(jié)。各個環(huán)節(jié)都有其相應的工具,Hadoop和Spark就是大數(shù)據處理流程中非常常用的兩個框架。

到此這篇關于一文學會Hadoop與Spark等大數(shù)據框架知識的文章就介紹到這了,更多相關Hadoop與Spark大數(shù)據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳細解析Webpack是怎么運行的

    詳細解析Webpack是怎么運行的

    這篇文章主要介紹了Webpack是怎么運行的,打包順序是怎樣的,非?;A且非常重要的知識點
    2020-02-02
  • 2022最新騰訊輕量云?debian?10?安裝pve教程詳解

    2022最新騰訊輕量云?debian?10?安裝pve教程詳解

    這篇文章主要介紹了騰訊輕量云?debian?10?安裝pve教程?2022,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Visual?Studio中文注釋亂碼兩種解決方案

    Visual?Studio中文注釋亂碼兩種解決方案

    這篇文章主要給大家介紹了關于Visual?Studio中文注釋亂碼兩種解決方案,如果在Visual Studio Code中注釋出現(xiàn)亂碼,可能是因為文件編碼格式不正確,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 深入解析HetuEngine實現(xiàn)On Yarn原理

    深入解析HetuEngine實現(xiàn)On Yarn原理

    這篇文章主要介紹了HetuEngine實現(xiàn)On Yarn原理,介紹了HetuEngine On Yarn的原理,其實現(xiàn)主要是借助了Yarn Service提供的能力,感興趣的朋友一起通過本文學習下
    2022-01-01
  • bitbucket搭建詳細過程記錄

    bitbucket搭建詳細過程記錄

    這篇文章主要介紹了bitbucket搭建詳細過程記錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Mac包管理器Homebrew的安裝方法

    Mac包管理器Homebrew的安裝方法

    本文詳細講解了Mac包管理器Homebrew的安裝方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • VSCode遠程SSH免密登錄配置實現(xiàn)

    VSCode遠程SSH免密登錄配置實現(xiàn)

    這篇文章主要介紹了VSCode遠程SSH免密登錄配置實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • DevOps,CI,CD,自動化簡述

    DevOps,CI,CD,自動化簡述

    這篇文章主要介紹了DevOps,CI,CD,自動化簡單介紹,通過本文給大家簡單介紹DevOps,CI,CD,自動化這四者的基本概念,需要的朋友可以參考下
    2021-07-07
  • git中cherry-pick命令的使用教程

    git中cherry-pick命令的使用教程

    這篇文章介紹了git中cherry-pick命令的使用方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 在QQ群中接入ChatGPT機器人的操作方法

    在QQ群中接入ChatGPT機器人的操作方法

    這篇文章主要介紹了如何在QQ群中接入ChatGPT機器人,今天我們的分享主要圍繞著大部分用戶Windows電腦,基于nodejs,需要的朋友可以參考下
    2023-02-02

最新評論