【大數據Spark】常見面試題(萬字!建議收藏)

文章目錄

  • 入門級
  • 中等難度
  • 中高級難度
  • 數據傾斜
    • 解決方法

入門級

  1. 什么是Apache Spark?它與傳統的MapReduce有何不同?

    • Apache Spark是一個開源的分布式計算系統,它提供了高效的數據處理和分析能力。與傳統的MapReduce相比,Spark具有更快的計算速度和更好的內存管理能力。Spark使用內存進行數據緩存和計算,而MapReduce則需要將中間結果寫入磁盤,因此Spark在處理迭代算法和交互式查詢時更具優勢。
  2. 解釋一下Spark的RDD(Resilient Distributed Dataset)是什么以及它的作用。

    • RDD是Spark中的基本數據抽象,它代表了一個不可變的、可分區的、可并行操作的數據集合。RDD可以從Hadoop的HDFS、HBase等數據源中創建,也可以通過其他RDD進行轉換和操作。RDD的主要作用是提供了一種分布式內存抽象,使得數據可以高效地在集群中進行處理和計算。
  3. 請介紹一下Spark的核心組件及其功能。

    • Spark的核心組件包括Spark Core、Spark SQL、Spark Streaming、MLlib和GraphX。Spark Core提供了RDD的基本功能和API;Spark SQL支持SQL查詢和DataFrame操作;Spark Streaming用于實時數據處理;MLlib提供了常用的機器學習算法;GraphX用于圖數據處理。
  4. Spark中的DataFrame和RDD有什么區別?你更傾向于使用哪個?

    • DataFrame是Spark SQL中的一個抽象,它類似于關系型數據庫中的表格,具有行和列的結構化數據。RDD是Spark的基本數據抽象,它是一個不可變的、可分區的數據集合。DataFrame提供了更豐富的高級操作和優化功能,適用于結構化數據的處理;而RDD更靈活,適用于需要更底層控制和自定義操作的場景。根據具體情況選擇使用DataFrame或RDD。
  5. 請解釋一下Spark的惰性求值(Lazy Evaluation)是什么以及它的優勢。

    • Spark的惰性求值指的是在執行操作之前不會立即計算結果,而是等到需要結果時才進行計算。這種延遲計算的方式可以幫助Spark優化執行計劃,合并操作,減少不必要的數據傳輸和計算開銷,提高作業的性能和效率。
  6. 你如何在Spark中進行數據轉換和操作?可以舉例說明嗎?

    • 在Spark中,可以使用RDD的轉換操作(如map、filter、reduce等)或DataFrame的操作(如select、filter、groupBy等)來對數據進行轉換和操作。例如,使用map操作對RDD中的每個元素進行映射,使用groupBy操作對DataFrame中的數據進行分組等。
  7. 什么是Spark的Shuffle操作?它在Spark作業中的性能影響是什么?

    • Spark的Shuffle操作指的是需要對數據進行重新分區或重新組合的操作,如reduceByKey、groupBy等。Shuffle操作會涉及數據的重新分發和網絡傳輸,因此在Spark作業中性能影響較大。合理設計作業和減少Shuffle操作可以降低性能開銷。
  8. 你了解Spark的機器學習庫MLlib嗎?它提供了哪些常用的機器學習算法?

    • MLlib是Spark中的機器學習庫,提供了一系列常用的機器學習算法,包括分類、回歸、聚類、推薦等。常用的算法包括線性回歸、邏輯回歸、決策樹、隨機森林、K均值聚類等。
  9. Spark Streaming和Structured Streaming有何不同?你更傾向于使用哪個?

    • Spark Streaming是Spark中用于實時數據處理的模塊,基于微批處理的方式實現了流式計算;而Structured Streaming是Spark 2.0引入的新的流處理API,提供了更簡單、更高級的流式處理接口,并且與批處理的API有著更高的一致性。根據需求和情況選擇使用Spark Streaming或Structured Streaming。
  10. 請解釋一下Spark的任務調度和執行流程。

    • Spark的任務調度和執行流程包括作業的劃分、任務的調度和執行等步驟。首先,Spark將作業劃分為多個階段(Stage),每個階段包含一組相互依賴的任務。然后,Spark根據數據依賴關系將任務進行調度,并將任務發送到集群中的執行器(Executor)上執行。最后,Spark根據任務的執行結果進行數據的匯總和整合,并返回給用戶或下一個階段繼續執行。

中等難度

  1. 什么是Spark的廣播變量(Broadcast Variables)?它們在Spark作業中的作用是什么?

    • 廣播變量是Spark中的一種分布式共享變量,用于將較大的只讀數據集廣播到集群的所有節點上,以便在任務執行期間共享使用。它們在作業中的作用是減少數據的傳輸開銷,提高作業的性能和效率。
  2. Spark中的累加器(Accumulators)是什么?它們如何在分布式環境下工作?

    • 累加器是Spark中的一種特殊變量,用于在分布式環境下進行可變的聚合操作,如計數、求和等。它們通過提供一個只能通過關聯和交換操作更新的變量,確保在分布式環境下進行安全的并行計算。
  3. Spark中的內存管理機制是什么?它如何確保在內存中有效地管理數據?

    • Spark的內存管理機制主要包括內存分配、內存使用和內存釋放三個方面。它通過對內存的動態分配和管理,以及通過使用內存和磁盤的混合存儲模式,確保在內存中有效地管理和存儲數據。
  4. 解釋一下Spark中的作業調度器(Job Scheduler)和任務調度器(Task Scheduler)的區別及其作用。

    • Spark的作業調度器負責將用戶提交的作業劃分為多個階段,并將這些階段提交給任務調度器進行調度。而任務調度器負責將作業的各個階段中的任務分配到集群中的執行器上執行。作業調度器和任務調度器的作用是協同工作,確保作業的有效執行。
  5. Spark中的容錯機制是如何實現的?它們如何處理節點故障和任務失敗?

    • Spark的容錯機制主要通過RDD的不可變性和日志記錄來實現。當節點故障或任務失敗時,Spark可以根據RDD的依賴關系和日志記錄進行任務的重播和數據的恢復,從而保證作業的正確執行。
  6. Spark的Shuffle過程中如何保證數據的局部性?它對作業的性能有何影響?

    • Spark的Shuffle過程中通過數據本地化策略和分區策略來保證數據的局部性,盡量減少數據的傳輸和網絡開銷。良好的數據局部性可以提高作業的性能和效率。
  7. 解釋一下Spark的執行計劃(Execution Plan)及其生成過程。

    • Spark的執行計劃是指作業的執行過程和邏輯的計劃表示,它由作業的DAG(有向無環圖)和各個階段的任務組成。生成執行計劃的過程包括作業的解析、優化和物理執行計劃生成等步驟。
  8. 在Spark作業中如何處理數據傾斜(Data Skew)的問題?可以舉例說明嗎?

    • 處理數據傾斜的方法包括使用合適的數據分區策略、使用合適的聚合操作、使用隨機前綴進行數據重分布等。例如,在使用groupByKey操作時,可以使用combineByKey替代,或者使用自定義的分區器來均勻分配數據,從而減少數據傾斜。
  9. Spark的動態資源分配(Dynamic Resource Allocation)是如何工作的?它如何提高資源利用率?

    • Spark的動態資源分配通過根據作業的資源需求動態調整集群資源的分配,以提高資源利用率和作業的執行效率。它通過監控作業的執行情況和資源的使用情況,動態地調整資源的分配和釋放。
  10. Spark中的數據持久化機制是如何工作的?它們如何影響作業的性能和容錯性?

    • Spark中的數據持久化機制通過將RDD的計算結果緩存到內存或磁盤上,以便在后續的操作中重用,從而提高作業的性能。它們通過在內存和磁盤之間進行數據存儲和管理,以及通過RDD的不可變性和依賴關系來保證數據的容錯性。

文章目錄

  • 入門級
  • 中等難度
  • 中高級難度
  • 數據傾斜
    • 解決方法

中高級難度

  1. 什么是Spark的執行器(Executors)?它們在Spark集群中的作用是什么?
  • Spark的執行器是運行在集群節點上的進程,負責執行Spark作業中的任務。它們的作用包括加載數據、執行任務、存儲計算結果等。
  1. 解釋一下Spark中的數據分區(Partition)及其作用。

    • 數據分區是指將數據集分割成多個部分,每個部分稱為一個分區,以便并行處理和存儲。數據分區可以提高作業的并行度和性能。
  2. Spark中的shuffle操作是什么?它的工作原理是什么?

    • Shuffle操作是指在Spark作業中進行數據重分布和重新組織的過程,包括數據的重新分區、數據的排序、數據的聚合等。它的工作原理是將數據按照指定的規則進行分組、排序和聚合,并將結果寫入到臨時文件中,以便后續的操作使用。
  3. Spark中的DataFrame和RDD有什么區別?它們各自適用于哪些場景?

    • DataFrame是一種分布式數據集,具有結構化的數據格式和API,支持SQL查詢和DataFrame操作。而RDD(彈性分布式數據集)是一種更底層的抽象,表示分布式數據集的集合,可以通過編程方式進行操作。DataFrame適用于結構化數據和SQL操作,而RDD適用于更靈活的數據處理和操作。
  4. Spark中的優化技術有哪些?它們如何提高作業的性能?

    • Spark中的優化技術包括查詢優化、數據本地化優化、Shuffle優化、內存管理優化等。這些優化技術可以通過改進執行計劃、減少數據傳輸和網絡開銷、提高數據局部性等方式來提高作業的性能。
  5. 解釋一下Spark中的延遲操作(Lazy Evaluation)及其優點。

    • Spark中的延遲操作是指在調用轉換操作時并不立即執行,而是等待行動操作時才執行的特性。它的優點包括減少中間結果的存儲和傳輸開銷、提高作業的執行效率等。
  6. 什么是Spark的數據源(Data Source)API?它的作用是什么?

    • Spark的數據源API是用于讀取和寫入數據的統一接口,支持多種數據格式和存儲系統,如HDFS、Hive、JDBC、Parquet等。它的作用是提供統一的數據訪問接口,簡化數據的讀取和寫入操作。
  7. 在Spark中如何處理大規模數據的性能問題?可以舉例說明嗎?

    • 處理大規模數據的性能問題可以采用分區和分布式計算、數據本地化和數據壓縮等技術來提高作業的執行效率。例如,在處理大規模數據時,可以使用合適的分區策略和數據本地化策略來減少數據傳輸和網絡開銷,從而提高作業的性能。
  8. Spark中的動態分區(Dynamic Partition)是什么?它如何優化數據的存儲和查詢?

    • Spark中的動態分區是指根據數據的內容動態創建和管理分區的過程,以便優化數據的存儲和查詢。它可以根據數據的分布情況動態調整分區的數量和大小,從而提高數據的存儲效率和查詢性能。
  9. 如何在Spark作業中監控和調優內存使用?可以分享一些實踐經驗嗎?

    • 在Spark作業中監控和調優內存使用可以通過監控作業的內存占用情況、調整內存分配參數、使用序列化和反序列化等方式來實現。例如,可以通過調整executor的內存分配參數和使用Kryo序列化來減少內存占用,從而提高作業的執行效率。

  1. 請解釋一下Spark中的RDD lineage(血統)機制是什么?它的作用和原理是什么?
  • RDD lineage是指Spark中每個RDD都會記住其生成過程中所依賴的父RDD,形成一種有向無環圖(DAG)。其作用是在RDD數據丟失時能夠通過血統圖重新計算數據,并支持容錯和數據恢復。其原理是通過記錄每個RDD的轉換操作以及對應的父RDD,當需要重新計算丟失的數據時,可以根據血統圖中的信息重新計算數據。
  1. 什么是Spark的廣播變量(Broadcast Variables)?它們在Spark作業中的作用是什么?
  • Spark的廣播變量是一種共享變量,可以將一個較大的只讀數據集緩存在每個Executor的內存中,以便在執行任務時可以高效地訪問。它們的作用是在Spark作業中減少數據的傳輸開銷和復制開銷,提高作業的執行效率。
  1. 在Spark中,什么是數據傾斜(Data Skew)?如何檢測和解決數據傾斜問題?
  • 數據傾斜是指在數據處理過程中,某些數據分區的大小遠遠大于其他分區的情況,導致任務執行時間不均衡。可以通過監控作業的任務執行時間和數據分布情況來檢測數據傾斜問題,而解決方法包括重新分區、使用隨機前綴等方式來減少數據傾斜。
  1. 解釋一下Spark中的checkpoint機制是什么?它的作用和使用場景是什么?
  • Spark中的checkpoint機制是指將RDD數據持久化到可靠的存儲系統中,以便在作業失敗時能夠重新計算數據。其作用是提供容錯機制,防止作業失敗時數據丟失,并支持數據恢復。常見的使用場景包括迭代計算、長時間作業等需要持久化數據的情況。
  1. Spark中的任務調度器(Task Scheduler)是如何工作的?它的調度策略有哪些?
  • Spark中的任務調度器負責將作業劃分成多個任務,并分配給集群中的Executor執行。其工作原理是根據作業的依賴關系和資源情況動態調度任務的執行順序和位置。常見的調度策略包括FIFO、Fair Scheduler、Capacity Scheduler等。
  1. 什么是Spark的數據本地化(Data Locality)?它如何優化作業的性能?
  • Spark的數據本地化是指將計算任務分配給存儲有相關數據的節點,以減少數據傳輸和網絡開銷。它通過將任務調度到數據所在的節點上執行,減少數據的遠程讀取和傳輸時間,從而提高作業的執行效率。
  1. 在Spark中,什么是窄依賴和寬依賴?它們之間有什么區別?
  • 窄依賴是指每個父RDD分區最多只被一個子RDD分區依賴的依賴關系,而寬依賴是指每個父RDD分區被多個子RDD分區依賴的依賴關系。窄依賴支持更高效的數據傳輸和計算,而寬依賴則會導致數據的重復計算和傳輸,降低作業的性能。
  1. 解釋一下Spark中的累加器(Accumulators)是什么?它們的作用和使用方法是什么?
  • Spark中的累加器是一種分布式變量,用于在作業中對數據進行累加操作,如計數、求和等。其作用是在作業中對全局變量進行更新和累加,并可以在作業執行完后獲取累加結果。使用方法包括定義累加器變量、在作業中更新累加器值、獲取累加器結果等。
  1. 什么是Spark的動態資源分配(Dynamic Resource Allocation)?它如何優化集群資源的利用?
  • Spark的動態資源分配是指根據作業的需求動態分配和釋放集群資源的過程,以提高資源的利用率和作業的執行效率。其通過監控作業的資源需求和集群的資源使用情況,動態調整Executor的數量和資源分配,從而優化集群資源的利用。
  1. 在Spark中,什么是RDD的持久化(Persistence)?它如何提高作業的性能?
  • RDD的持久化是指將RDD數據緩存到內存或磁盤中,以便在后續的操作中可以重用。其通過減少數據重復計算和讀取的開銷,提高作業的執行效率。常見的持久化級別包括MEMORY_ONLY、MEMORY_AND_DISK、MEMORY_ONLY_SER等。

文章目錄

  • 入門級
  • 中等難度
  • 中高級難度
  • 數據傾斜
    • 解決方法

數據傾斜

數據傾斜是在數據處理過程中出現的一種情況,指某些數據分區的大小遠遠大于其他分區的情況,導致任務執行時間不均衡。數據傾斜可能由多種原因引起,下面詳細介紹一下數據傾斜出現的原因和可能造成的后果:

數據傾斜出現的原因:

  1. 數據分布不均勻: 當數據集中存在某些大量重復的數據或者某些特定的數據量級遠高于其他數據,就會導致數據分布不均勻,從而引發數據傾斜。
  2. 數據分區策略不合理: 如果數據分區策略不合理,例如Hash分區時關鍵字選擇不當或者范圍分區時數據分布不均勻,都可能導致數據傾斜。
  3. 數據處理操作不均衡: 在數據處理過程中,某些操作可能會導致數據傾斜,比如group by、join等操作,當部分數據量遠大于其他數據時,就會引發數據傾斜。

數據傾斜可能造成的后果:

  1. 任務執行時間不均衡: 數據傾斜會導致部分任務的執行時間遠遠長于其他任務,從而降低作業的整體執行效率。
  2. 資源利用不均衡: 在數據傾斜的情況下,部分節點可能需要處理大量的數據,而其他節點可能處于空閑狀態,導致資源利用不均衡。
  3. 容易引發性能問題: 數據傾斜會使得部分節點的負載遠高于其他節點,容易引發節點宕機或者崩潰,進一步影響作業的穩定性和性能。

因此,對于數據傾斜問題,需要及時檢測和解決,采取合理的數據分區策略、數據預處理、使用隨機前綴等方式來減少數據傾斜,以提高作業的執行效率和穩定性。

解決方法

當面臨數據傾斜問題時,可以采取一系列策略來解決,以下是一些常見且有效的方法:

  1. 重新分區: 可以嘗試使用更合適的分區策略,如使用Hash分區替代默認的范圍分區,或者根據數據的分布情況進行手動分區,從而使得數據分布更加均勻。
// 使用Hash分區進行重新分區
val rdd = originalRdd.repartition(numPartitions)
  1. 隨機前綴: 對于導致數據傾斜的鍵值對,可以在進行聚合操作之前,給鍵值對的鍵添加隨機前綴,以減少相同鍵值對被分到同一個分區的可能性,從而降低數據傾斜的發生。
// 對鍵值對添加隨機前綴
val rdd = originalRdd.map(kv => (randomPrefix + kv._1, kv._2))
  1. 使用聚合操作替代join操作: 如果數據傾斜主要發生在join操作中,可以考慮使用聚合操作替代join操作,將數據預先聚合后再進行join操作,以減少傾斜可能性。
// 使用聚合操作替代join操作
val aggregatedRdd1 = rdd1.reduceByKey(...)
val aggregatedRdd2 = rdd2.reduceByKey(...)
val resultRdd = aggregatedRdd1.join(aggregatedRdd2)
  1. 增加分區數量: 增加RDD的分區數量可以降低每個分區的數據量,從而減輕數據傾斜的程度,提高作業的執行效率。
// 增加分區數量
val increasedPartitionsRdd = originalRdd.repartition(newNumPartitions)
  1. 過濾掉異常數據: 如果數據中存在一些異常數據導致了數據傾斜,可以通過過濾掉這些異常數據來減輕數據傾斜的程度。
// 過濾掉異常數據
val filteredRdd = originalRdd.filter(...)
  1. 使用自定義分區器: 如果默認的分區器無法有效地處理數據傾斜問題,可以自定義分區器來更好地控制數據的分布情況。
// 自定義分區器
class CustomPartitioner(numPartitions: Int) extends Partitioner {override def numPartitions: Int = numPartitionsoverride def getPartition(key: Any): Int = ???
}
val rdd = originalRdd.partitionBy(new CustomPartitioner(numPartitions))

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

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

相關文章

海光CPU:國產信創的“芯“動力解讀

國產信創CPU-海光CPU CPU:信創根基,國之重器 國產CPU形成三大陣營:自主架構、x86及ARM。自主陣營中,龍芯和申威以LoongArch和SW-64為基石;ARM陣營由鯤鵬、飛騰主導,依托ARM授權研發處理器;x86陣…

紅帽練習 之邏輯卷 pv lv gv

邏輯卷習題 1 在/dev/sdb 存儲設備上創建物理設備分區 創建2個大小各為256MB的分區 并設置為linux lvm類型 使用first 和second 作為這些分區的名稱 parted /dev/sdb mklabel gpt parted /dev/sdb primary mkpart first 1M 256M parted /dev/sdb set 1 …

【Linux|數據恢復】extundelete和ext4magic數據恢復工具使用

環境:Centos7.6_x86 一、extundelete工具 1、extundelete介紹 Extundelete 是一個數據恢復工具,用于從 ext3 或 ext4 分區中恢復刪除文件。根據官網0.2.4版本介紹是支持ext4,但實際上使用發現ext4格式有些問題,會報以下錯誤&…

動態SQL IF語句

IF語句學習 第一種寫法(標準) 我們先來看以下標準寫法: select * from .. <where> <if test""> and ....... <if test""> and ....... <where> 我們用了一個where標簽 , 內嵌if語句 第二種寫法: 這是第二種寫法:不用where標…

大降分!重郵計算機專碩復試線大降50分!重慶郵電計算機考研考情分析!

重慶郵電大學&#xff08;Chongqing University of Posts and Telecommunications&#xff09;簡稱重郵&#xff0c;坐落于中國重慶市主城區南山風景區內&#xff0c;是中華人民共和國工業和信息化部與重慶市人民政府共建的教學研究型大學&#xff0c;入選國家“中西部高校基礎…

一篇文章搞懂Go語言切片底層原理(圖文并茂+舉例講解)

1. 切片和數組的底層關系 Go語言切片的數據結構是一個結構體&#xff1a; type slice struct {array unsafe.Pointerlen intcap int }Go語言中切片的內部結構包含地址、大小和容量。將數組比喻成一個蛋糕&#xff0c;那么切片就是需要切的那一塊&#xff0c;而那一塊的的…

c++學生管理系統

想要實現的功能 1&#xff0c;可以增加學生的信息&#xff0c;包括&#xff08;姓名&#xff0c;學號,c成績&#xff0c;高數成績&#xff0c;英語成績&#xff09; 2&#xff0c;可以刪除學生信息 3&#xff0c;修改學生信息 4&#xff0c;顯示所有學生信息 5&#xff0c…

支持AMD GPU的llm.c

anthonix/llm.c: LLM training in simple, raw C/HIP for AMD GPUs (github.com) llm.c for AMD devices This is a fork of Andrej Karpathys llm.c with support for AMD devices. 性能 在單個7900 XTX顯卡上使用默認設置&#xff0c;目前的訓練步驟耗時約為79毫秒&#x…

Docker的安裝、啟動和配置鏡像加速

前言&#xff1a; Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 而企業部署一般都是采用Linux操作系統&#xff0c;而…

【軟件設計師】2022年上半年真題解析

??馮諾依曼計算機體系結構的基本特點是&#xff1a; A. 程序指令和數據都采用二進制表示 - 這是正確的&#xff0c;因為馮諾依曼架構下的計算機使用二進制形式來表示和處理所有信息&#xff0c;包括指令和數據。 B. 程序指令總是存儲在主存中&#xff0c;而數據則存儲在高速…

Java基礎語法詳解——入門學習教程

Java 基礎 目錄 一、數據類型 基本類型包裝類型緩存池 二、String 概覽不可變的好處String, StringBuffer and StringBuilder String Poolnew String(“abc”) 三、運算 參數傳遞float 與 double隱式類型轉換switch 四、關鍵字 finalstatic 五、Object 通用方法 概覽equals()ha…

深入解析 MongoDB Map-Reduce:強大數據聚合與分析的利器

Map-Reduce 是一種用于處理和生成大數據集的方法&#xff0c;MongoDB 支持 Map-Reduce 操作以執行復雜的數據聚合任務。Map-Reduce 操作由兩個階段組成&#xff1a;Map 階段和 Reduce 階段。 基本語法 在 MongoDB 中&#xff0c;可以使用 db.collection.mapReduce() 方法執行…

IsoBench:多模態基礎模型性能的基準測試與優化

隨著多模態基礎模型的快速發展&#xff0c;如何準確評估這些模型在不同輸入模態下的性能成為了一個重要課題。本文提出了IsoBench&#xff0c;一個基準數據集&#xff0c;旨在通過提供多種同構&#xff08;isomorphic&#xff09;表示形式的問題&#xff0c;來測試和評估多模態…

算法(十三)回溯算法---N皇后問題

文章目錄 算法概念經典例子 - N皇后問題什么是N皇后問題&#xff1f;實現思路 算法概念 回溯算法是類似枚舉的深度優先搜索嘗試過程&#xff0c;主要是再搜索嘗試中尋找問題的解&#xff0c;當發生不滿足求解條件時&#xff0c;就會”回溯“返回&#xff08;也就是遞歸返回&am…

enum4linux一鍵查詢SMB信息(KALI工具系列十六)

目錄 1、KALI LINUX簡介 2、enum4linux工具簡介 3、在KALI中使用enum4linux 3.1 目標主機IP&#xff08;win&#xff09; ?編輯 3.2 KALI的IP 4、操作示例 4.1 運行工具 4.2 列出用戶名 4.3 提取用戶名 4.4 使用自定義RID范圍 4.5 列出組 4.6 列出共享文件夾 4.7…

【筆記小記】掌握市場脈動:全營銷解決方案的力量

前面雖然說了這個模型&#xff0c;而且是分章說的&#xff0c;那么在此以筆記小記的形式再說一下&#xff0c;企業面臨的挑戰與日俱增&#xff0c;消費者需求的多樣化、技術的不斷進步、全球化的深入以及社會責任的日益重要&#xff0c;這些因素共同塑造了市場的現狀和未來&…

網絡監聽技術

網絡監聽技術 網絡監聽概述網絡監聽環境 流量劫持網絡環境共享式網絡監聽原理交換式網絡監聽交換機的工作方式交換網絡監聽&#xff1a;交換機集線器交換網絡監聽&#xff1a;端口鏡像交換網絡監聽&#xff1a;MAC洪泛交換網絡監聽&#xff1a;MAC洪泛交換網絡監聽&#xff1a;…

【Unix】消息類的格式與使用

本文給出一個MacOS操作系統中的消息類的使用過程示例&#xff08;結合gencat命令&#xff0c;<nl_types.h>頭文件以及catopen,catgets,catclose3個函數&#xff09; 首先根據對應的操作系統&#xff0c;查看gencat命令 man gencat 可以詳細看到其中對于輸入文件&#x…

Typescript高級: 深入理解extends keyof語法

概述 在TypeScript中&#xff0c;extends關鍵字是類型系統中一個極其重要的組成部分它不僅用于類的繼承&#xff0c;也是類型兼容性檢查和泛型約束的關鍵機制特別是當它與keyof關鍵字結合&#xff0c;形成K extends keyof T的結構時它為類型系統帶來了強大的靈活性和表達能力&…

動態SQL where, choose語句

where語句就一個<where>標簽, 很簡單, 不再過多贅述 接下來我們來看 choose語句的使用 其實choose語句就像java里的swith語句 , 如果語句前面的生效 , 后面的就不會生效了 可以定義查詢的優先級