面試:線上問題處理

文章目錄

    • 在處理線上問題時,你的排查思路和步驟是什么
    • 線上偶發性問題如何處理和跟蹤
    • 當系統出現大量錯誤日志時,你會如何分析和解決問題
    • 在高并發場景中,如何排查和解決線程安全問題
    • 當系統出現大規模的故障時,你的應急處理和恢復策略是什么
    • 慢SQL問題如何排查
    • 頻繁FullGC問題如何排查
    • OOM問題如何排查
    • CPU飆高問題如何排查
    • 如何設計一個分布式緩存系統

在處理線上問題時,你的排查思路和步驟是什么

在處理線上問題時,通常的排查思路和步驟如下:

  1. 收集信息:首先,收集關于問題的詳細描述,包括用戶的報告、錯誤信息、日志、監控數據等。這些信息將有助于理解問題的背景和范圍。
  2. 復現問題:盡可能復現問題,以確認問題的存在和重現條件。這可以通過模擬用戶的操作、使用測試數據、調整環境參數等方式實現。
  3. 定位問題:使用日志和監控工具,在發生問題的時間范圍內,定位相關日志和指標信息。根據異常信息、錯誤日志、堆棧跟蹤等,從日志中找到相關線索,縮小問題的范圍。
  4. 分析代碼:逐步分析問題,從代碼層面著手。查看相關代碼行,理解其功能和可能出現問題的地方。使用調試工具和日志輸出等方式,跟蹤代碼執行路徑,確認代碼是否按預期執行。
  5. 進行診斷測試:根據定位的問題可能性,進行相應的診斷測試,以驗證假設和找出問題的根本原因。這可能包括修改代碼、修改配置參數、模擬并發請求等方式。
  6. 重新部署或回滾:如果找到了問題的原因并修復了,可以嘗試重新部署修復后的版本。如果問題出現在最新部署的版本上,可以考慮回滾到上一個可用的版本。
  7. 監控觀察:在修復后或回滾后,監控系統的運行狀況,確保問題已解決。同時,可持續觀察和檢查相關指標,以確保沒有引入新的問題。
  8. 文檔記錄:對于排查過程、問題定位和解決方案等,進行詳細的記錄和文檔化,便于未來類似問題的參考和復盤。

需要注意的是,以上步驟并非嚴格按順序進行,有時也需要根據具體的問題進行適度調整和重復執行。另外,重要的一點是要在溝通和合作中與團隊成員、開發人員和相關運維人員一起解決問題,提高問題的排查效率和結果準確性。

線上偶發性問題如何處理和跟蹤

處理和跟蹤線上偶發性問題是一項具有挑戰性的任務,以下是處理和跟蹤線上偶發性問題的一般步驟:

  1. 收集信息:當出現偶發性問題時,盡可能多地收集相關信息,例如出現問題的時間點、用戶行為、錯誤日志、監控數據等。這些信息有助于了解問題的背景和上下文,為后續的定位和解決提供線索。
  2. 規律分析:對收集到的信息進行初步分析,嘗試找出可能的規律或模式。例如,問題是否在特定時間出現,是否與某些操作或數據有關。這有助于縮小問題范圍和定位到可能的原因。
  3. 監控和實時追蹤:設置實時監控和告警機制,以便及時發現問題出現時的異常情況。可以使用日志監控工具、性能監控工具或自定義監控腳本等。實時追蹤問題的發生將有助于捕捉關鍵信息和快速響應。
  4. 復現和測試:嘗試復現問題,創建一個與實際場景相似的測試環境,并重現用戶的操作和條件。通過復現問題,我們可以更深入地分析和排查問題。在測試環境中,使用調試工具和日志級別調整,以便捕獲更詳細的錯誤信息。
  5. 數據分析:使用已經收集的數據和日志來進行深入的分析。通過比較正常情況下和問題發生時的數據,找出異常點和差異,并分析其潛在原因。這可能涉及到數據庫查詢分析、代碼審查、性能剖析等技術。
  6. 解決問題:根據定位到的問題原因,制定相應的解決方案。這可能需要修改代碼、優化算法、調整配置參數、增加服務器資源等。在解決問題后,進行全面的測試和驗證,確保問題得到完全解決。
  7. 監控和跟蹤:持續監控系統,在解決問題后,跟蹤問題是否再次出現。如果問題仍然存在,重新啟動追蹤和分析步驟,直到問題得到解決。

處理和跟蹤線上偶發性問題需要耐心和持續的努力,因為這些問題往往是復雜的且難以預測的。靈活運用各種調試和監控工具,結合數據分析和實時追蹤,是解決這類問題的關鍵。此外,建立健全的監控體系和日志記錄機制也是預防和解決線上偶發性問題的有效手段。

當系統出現大量錯誤日志時,你會如何分析和解決問題

當系統出現大量錯誤日志時,我會按照以下步驟進行分析和解決問題:

  1. 分類和過濾:首先,我會對錯誤日志進行分類和過濾。把不同類型的錯誤分組,例如數據庫錯誤、網絡錯誤、內存錯誤等,以便更好地理解問題的本質。同時,我會過濾掉重復的錯誤日志,只關注唯一的錯誤,并排除無關的日志。
  2. 定位和追蹤:選取一些關鍵的錯誤日志進行定位和追蹤。通過查看錯誤日志中的時間戳、請求路徑、錯誤信息等相關信息,我會嘗試找到錯誤發生的位置和觸發因素。如果錯誤日志中包含堆棧跟蹤信息,我會沿著堆棧跟蹤路徑追蹤到代碼的具體位置。
  3. 數據分析:通過使用錯誤日志中的關鍵信息,我會檢查數據庫、緩存、網絡連接等相關的數據和設置。例如,我可能會檢查數據庫連接池的配置、數據庫表的索引、緩存容量等是否存在問題。我還會查看網絡通信日志,以排除網絡延遲或故障引起的問題。
  4. 原因分析:一旦定位到可能的問題區域,我會進一步分析錯誤的原因。這可能涉及到代碼審查、調試工具的使用、跟蹤方法調用等。通過檢查代碼邏輯、檢視輸入輸出值、調試變量值等,我可以確定錯誤產生的根本原因。
  5. 解決問題:根據分析的結果,我會制定相應的解決方案。這可能包括修改代碼、優化算法、調整配置參數、增加服務器資源等。在解決問題后,進行全面的測試和驗證,確保問題得到完全解決。
  6. 監控和警告:在解決問題后,我會設置監控和警告機制,以便及時發現和處理類似錯誤。這有助于及早發現潛在問題,并采取措施預防它們的再次出現。

通過以上步驟,我可以對系統出現大量錯誤日志的問題進行逐步的分析和解決。重要的是要細心和耐心,以找到根本原因,并采取恰當的措施來解決問題。

在高并發場景中,如何排查和解決線程安全問題

在高并發場景中排查和解決線程安全問題是一項挑戰性的任務,下面是一些常見的方法和步驟:

  1. 確認問題:首先,確保問題是由線程安全引起的。線程安全問題可能包括數據競爭、死鎖、活鎖等。通過觀察系統的行為和錯誤日志,定位到可能與線程安全相關的異常現象和錯誤信息。
  2. 分析和定位:確定問題的范圍,分析問題所在的代碼片段或模塊。通過代碼審查、日志跟蹤、調試工具等方式,排查具體的線程安全問題。可能需要檢查鎖的使用、共享數據的訪問、并發控制機制等。
  3. 數據競爭檢測:使用工具和技術來檢測和分析數據競爭問題。例如,可以使用線程分析工具來捕獲并檢測到并發訪問共享數據的情況。這些工具可以幫助你找出存在競爭的共享資源,并分析競爭產生的根本原因。
  4. 鎖機制審查:檢查鎖的使用情況,確保在必要的時候進行正確的加鎖和解鎖。注意檢查鎖的范圍和粒度,以避免過度加鎖或鎖沖突。另外,可以考慮使用更高級別的并發控制機制,如讀寫鎖、信號量等,來提高并發性和減少鎖沖突。
  5. 數據共享管理:仔細管理共享數據,確保多個線程訪問同一份數據時不會出現沖突。可以通過使用線程安全的數據結構、使用不可變對象、同步機制等方法,來避免數據競爭和沖突。
  6. 并發控制優化:在高并發場景中,考慮并發控制機制的性能和效率是非常重要的。可以通過減少鎖的粒度、提高并發度、使用無鎖數據結構等方式,來優化并發控制,減少線程間的競爭和阻塞。
  7. 測試和驗證:在解決線程安全問題后,進行全面的測試和驗證,確保問題得到完全解決。可以使用壓力測試工具模擬高并發場景,并檢查系統的行為和性能。

解決線程安全問題需要綜合運用代碼分析、調試工具、并發控制機制和測試技術。重要的是,對系統進行全面的設計和測試,以盡可能地避免線程安全問題的發生。當問題出現時,及時排查和解決問題,并進行合適的優化和測試,以確保系統的穩定性和并發性能。

當系統出現大規模的故障時,你的應急處理和恢復策略是什么

當系統出現大規模的故障時,應急處理和恢復策略如下:

  1. 迅速響應:首先,我會迅速響應故障事件,通知相關團隊成員和相關方。建立一個緊急響應小組,有專門的人員負責故障的應急處理和協調。
  2. 故障排查:盡快確定故障的具體原因和影響范圍,使用適當的工具和技術進行故障排查。
  3. 切換備份:如果存在冗余的備份系統或備援方案,我會考慮切換到備份系統以提供最小的中斷和最快的恢復。如果沒有備份系統,我會盡可能快速地修復故障并將系統恢復到正常狀態。
  4. 優先級和緊急性:根據故障的緊急性和影響范圍,我會確定優先處理的任務,以最小化影響和恢復系統。例如,可以使用縮小影響范圍、分階段恢復等策略來降低緊急情況的影響。
  5. 通信和溝通:在處理故障的過程中,我會及時向相關方和用戶提供透明和準確的溝通。通過定期更新、公告、客服等方式,告知用戶故障進展和預計的恢復時間。
  6. 數據完整性和安全性:在應急處理和恢復時,我會特別關注數據的完整性和安全性。確保故障處理過程中不會導致數據丟失或泄漏。
  7. 故障分析和改進:在系統恢復正常后,我會進行故障分析,找出故障的根本原因,并探索如何避免類似故障的再次發生。這可能包括重新設計系統架構、增加冗余機制、改進監控和預警系統等。

總之,應急處理和恢復策略需要快速響應、緊急通信、優先級處理、數據安全保護和故障分析等方面的綜合考慮。同時,及時學習和改進故障恢復過程,以建立更健全和高可用的系統。

慢SQL問題如何排查

如果你的數據庫查詢變慢了,可以采取以下步驟來找出問題并解決它:

  1. 找出慢查詢:首先,找出哪些數據庫查詢很慢。通常,這些查詢會花費很長時間才能返回結果。
  2. 檢查查詢計劃:查看慢查詢的執行計劃,看看數據庫是如何執行這些查詢的。這可以幫助你找到性能瓶頸。
  3. 考慮索引:確保查詢使用了適當的索引。有時候,缺少或錯誤使用索引會導致查詢變慢。
  4. 優化SQL:審查慢查詢的SQL語句,看看是否可以通過改寫查詢或者使用更有效的SQL來提高性能。
  5. 檢查數據庫服務器:確保數據庫服務器有足夠的資源來處理查詢。不足的CPU、內存或磁盤IO可能會導致性能問題。
  6. 連接池:如果你在應用程序中使用了數據庫連接池,確保連接池的配置正確。連接池的設置也可能影響性能。
  7. 數據庫統計信息:查看數據庫的統計信息,了解表的大小、索引情況和數據分布。這些信息可以指導你哪些地方需要優化。
  8. 查詢緩存:考慮使用查詢緩存,將經常執行的查詢結果緩存起來,以減輕數據庫負擔。
  9. 分頁查詢優化:如果涉及到分頁查詢,確保使用了有效的分頁查詢方式,避免一次性獲取大量數據。
  10. 監控和性能測試:建立監控系統,隨時監測數據庫性能。進行性能測試,模擬高負載情況,確保數據庫在壓力下能夠正常工作。

通過這些簡單的步驟,你可以找到慢SQL查詢的原因并采取措施來提高數據庫性能。

頻繁FullGC問題如何排查

如果你的應用頻繁發生Full GC,可能會影響性能,下面是一些排查的方法:

  1. 查看GC日志:看一下應用程序的GC日志,找出Full GC發生的原因。日志通常會告訴你是內存不足還是其他原因導致的。
  2. 分析內存泄漏:檢查是否有內存泄漏,即不再需要的對象沒有被釋放。可以用工具幫助你找到這些問題。
  3. 檢查對象生命周期:確保不再使用的對象能被垃圾回收,不要長時間持有對象的引用。
  4. 優化代碼:看看代碼中是否有問題,比如頻繁創建大對象或不合理的緩存策略。優化代碼可以減少內存占用。
  5. 調整垃圾回收策略:考慮根據應用程序的需求調整垃圾回收器和參數。
  6. 使用監控工具:用監控工具實時監控內存使用和Full GC事件,幫助你找到問題并實時解決。

通過這些方法,你可以找到Full GC問題的根本原因,提高應用程序的性能和穩定性。

OOM問題如何排查

當遇到Java應用程序的OOM(內存溢出)問題時,可以按照以下步驟來排查和解決:

  1. 查看錯誤信息:首先,看一下出現的OOM錯誤信息,確定是哪種內存溢出問題。
  2. 檢查內存使用:使用監控工具查看Java堆內存的使用情況,看看是不是內存用光了。
  3. 找內存泄漏:用內存分析工具檢查是否有內存泄漏,即那些不再使用的對象沒有被清理。
  4. 看代碼:審查應用程序代碼,找出可能引起內存問題的部分。
  5. 調整內存設置:如果堆內存不夠,可以考慮調大內存設置。
  6. 優化代碼:改進代碼以減少內存占用,尤其是那些頻繁創建對象的地方。
  7. 檢查第三方庫:確保使用的庫是最新版,以避免已知的內存問題。
  8. 分析垃圾回收:查看垃圾回收日志,看看是否需要調整垃圾回收器的設置。
  9. 用內存監控工具:使用工具實時監控內存使用情況,追蹤問題。
  10. 定期監控:建立監控系統,隨時檢查內存使用,早發現問題。

CPU飆高問題如何排查

當你遇到高CPU占用問題時,可以采取以下步驟來排查和解決:

  1. 查看任務管理器:首先,打開任務管理器(Windows)或使用類似的工具(Linux上的top命令),找出哪個程序或進程正在占用大量的CPU。
  2. 檢查程序內部:找到高CPU占用的程序后,檢查程序內部是否有問題,比如可能有無限循環或內存泄漏。查看程序的日志和配置文件也有助于找到問題。
  3. 性能剖析工具:使用性能剖析工具來深入了解程序的性能問題。這些工具可以幫助你找出代碼中的性能瓶頸,比如哪個函數占用了大部分CPU時間。
  4. 檢查外部資源:確保程序所依賴的外部資源(如數據庫或網絡服務)正常運行,以免它們成為瓶頸。
  5. 硬件資源:檢查服務器的硬件資源使用情況,確保內存和磁盤等資源不是瓶頸。
  6. 代碼審查和優化:如果在性能剖析中找到了問題代碼,進行代碼審查并優化。這可能包括改進算法、減少不必要的操作等。
  7. 重啟服務:有時,簡單地重啟相關服務或應用程序就能解決問題,尤其是在資源問題或內部狀態異常的情況下。
  8. 持續監控:最后,建立監控機制,定期檢查系統的性能,以便及早發現和解決潛在的性能問題。

如何設計一個分布式緩存系統

設計一個分布式緩存系統需要考慮以下幾個方面:

  1. 數據分片:將緩存數據分散存儲在多個節點上,每個節點負責一部分數據,以提高并發讀寫操作的吞吐量。
  2. 數據一致性:為了保證數據的一致性,可以采用一致性哈希算法來確定數據在哪個節點上存儲,并使用分布式鎖來控制并發寫操作。
  3. 緩存失效策略:可以采用時間過期策略或基于LRU(最近最少使用)算法來淘汰緩存數據,以避免緩存空間被耗盡。
  4. 緩存更新策略:可以采用寫回(Write Back)策略,即先將更新操作記錄在緩存中,然后異步地更新到持久化存儲中,以提高寫操作的性能。
  5. 緩存命中率優化:可以使用布隆過濾器來判斷一個數據是否存在于緩存中,以減少緩存未命中的情況。
  6. 數據備份和容錯:可以使用數據復制或數據備份的方式來提高系統的容錯性,以防止節點故障導致數據丟失。
  7. 負載均衡:可以使用負載均衡算法將請求均勻地分發到各個緩存節點上,以提高系統的整體性能和可擴展性。

以上是設計一個分布式緩存系統的一些關鍵考慮點,具體的實現方式會根據具體的需求和場景而有所不同。在設計過程中,還需要考慮系統的可用性、性能、擴展性和安全性等方面的需求,并進行合理的權衡和折衷。

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

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

相關文章

用友BIP與用友BIP對接集成銷售出庫列表查詢連通銷售出庫單個保存((紅字)銷售出庫審核-v)

用友BIP與用友BIP對接集成銷售出庫列表查詢連通銷售出庫單個保存((紅字)銷售出庫審核-v) 源系統:用友BIP 面向數智化市場,用友傾力打造了全球領先的數智商業創新平臺——用友BIP,定位為數智商業的應用級基礎設施、企業服務產業的共…

虛擬機系列:(VMware Workstation Pro)Centos7下搭建Android開發環境及Android真機調試

一、Android SDK 安裝配置 1、環境 Linux系統為:Red Hat Enterprise Linux 7 64 位 ; 當然還需要Java環境,java 環境這里不敘述; 2、Android Studio 安裝 (1)下載位置: http://www.android-studio.org/ 我這里下載的:android-studio-ide-191.5977832-linux.tar.gz …

pat實現基于鄰接矩陣表示的深度優先遍歷

void DFS(Graph G, int v) {visited[v] 1;printf("%c ", G.vexs[v]);for (int i 0; i < G.vexnum; i) {if (!visited[i] && G.arcs[v][i]) DFS(G, i);} }

SpectralGPT: Spectral Foundation Model 論文翻譯2

遙感領域的通用大模型 2023.11.13在CVPR發表 原文地址&#xff1a;[2311.07113] SpectralGPT: Spectral Foundation Model (arxiv.org) 實驗 ? 在本節中&#xff0c;我們將嚴格評估我們的SpectralGPT模型的性能&#xff0c;并對其進行基準測試SOTA基礎模型&#xff1a;ResN…

kubernetesr進階--Security Context之為容器設置Security Context

容器的定義中包含 securityContext 字段&#xff0c;該字段接受 SecurityContext 對象。通過指定該字段&#xff0c;可以為容器設定安全相關的配置&#xff0c;當該字段的配置與 Pod 級別的 securityContext 配置相沖突時&#xff0c;容器級別的配置將覆蓋 Pod 級別的配置。容器…

03.依賴倒置原則(Dependence Inversion Principle)

概述 高層模塊不應依賴低層模塊&#xff0c;二者都應該依賴其抽象。而抽象不應依賴細節&#xff0c;細節應該依賴抽象。依賴倒置原則的中心思想其實就是面向接口編程。 相對于細節的多變性&#xff0c;抽象的東西會穩定的多&#xff0c;所以以抽象為基礎搭建的架構自然也會比以…

EMG肌肉電信號處理合集(二)

本文主要展示常見的肌電信號特征的提取說明。使用python 環境下的Pysiology計算庫。 目錄 1 肌電信號第一次burst的振幅&#xff0c; getAFP 函數 2 肌電信號波長的標準差計算&#xff0c;getDASDV函數 3 肌電信號功率譜頻率比例&#xff0c;getFR函數 4 肌電信號直方圖…

Day41:198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

文章目錄 198.打家劫舍思路代碼實現 213.打家劫舍II思路代碼實現 337.打家劫舍 III思路代碼實現記憶化遞歸法&#xff08;其他解法&#xff09; 198.打家劫舍 題目鏈接 思路 確定dp數組&#xff08;dp table&#xff09;以及下標的含義 dp[i]&#xff1a;考慮下標i以內的房屋…

華清遠見嵌入式學習——網絡編程——小項目

項目要求&#xff1a; 代碼實現&#xff1a; 服務器端&#xff1a; #include <myhead.h>//定義協議包 struct proto {char type;char name[20];char text[128]; };int main(int argc, const char *argv[]) {//判斷從終端輸入的字符串的個數if(argc ! 3){printf("…

mysql中TIMESTAMP 和DATETIME數據類型的區別

在MySQL中&#xff0c;TIMESTAMP和DATETIME都用于表示日期和時間&#xff0c;但是它們之間存在一些關鍵區別。下面我們通過幾個關鍵點來詳細了解這兩種數據類型的使用&#xff1a; 存儲范圍 TIMESTAMP類型的存儲范圍從1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。DAT…

Django之importlib模塊

【1】介紹 import importlib importlib模塊是Python中用于動態加載和導入模塊的內置模塊 它提供了一組函數和類&#xff0c;使得我們可以在運行時根據需要加載模塊&#xff0c;并且可以對已導入的模塊進行操作和管理 【2】importlib模塊中的import_module方法 【2.1】導入模塊…

無需API開發,錢方QFPay連接營銷系統和廣告推廣平臺

隨著電子商務市場的不斷發展&#xff0c;企業需要集成各種業務系統&#xff0c;以提高業務效率和降低運營成本。錢方QFPay提供了一種創新的解決方案&#xff0c;幫助企業實現系統間的連接和集成&#xff0c;無需進行復雜的API開發。除了電商系統和客服系統&#xff0c;錢方還能…

武漢光庭公司地圖引擎開發工程師24秋招三場面試完整流程

本文介紹2024屆秋招中&#xff0c;武漢光庭信息技術股份有限公司的智能駕駛地圖引擎開發工程師崗位一面、二面、三面的面試基本情況、提問問題等。 10月投遞了武漢光庭信息技術股份有限公司的智能駕駛地圖引擎開發工程師崗位&#xff0c;暫時并不清楚所在的部門。目前完成了全部…

mysql:修改密碼的幾種方式

背景 當我們 brew install mysql 新安裝 mysql 的時候&#xff0c;是沒有密碼的&#xff0c;我們可以直接通過 mysql -u root 連接上。但是密碼還是要設置的&#xff0c;一是為了安全&#xff0c;二是有些數據庫軟件如 Sequel 連接都是必須要密碼的&#xff0c;接下來我們來看…

電磁建模的分布式并行計算技術

本文提出了一種新的分布式并行電磁建模技術&#xff0c;以加快電磁結構的神經網絡建模過程。現有的電磁建模技術通常需要反復改變微波器件的參數&#xff0c;驅動電磁模擬器以獲得足夠的訓練和測試樣本。隨著電磁建模問題復雜性的增加&#xff0c;由于單臺計算機的性能有限&…

DP好題總結

LCIS最長公共上升子序列 題解&#xff1a;https://blog.csdn.net/weixin_50624971/article/details/116892236 概括&#xff1a; 決策優化DP 考慮LCS可以寫成 O ( n 4 ) O(n^4) O(n4) 的如果我們把狀態設為 f [ i , j ] f[i,j] f[i,j] 表示考慮到 a [ i ] , b [ j ] a[i]…

機器學習【00】pycharm使用遠程服務器

我們使用conda在服務器上創建虛擬環境&#xff0c;遠程使用pycharm進行編程 pycharm版本2023.1.3 一.首先在服務器上創建虛擬環境 注&#xff1a;anaconda的安裝可以參考ubuntu系統miniconda的安裝 conda create --name tac python3.7二.pycharm 連接 點擊add interpreter …

查企業聯系電話的方法

對于銷售來說&#xff0c;獲取準確、全面的企業聯系方式&#xff0c;無疑是開發客戶的基礎與保障&#xff0c;因為任憑能力再高&#xff0c;說服能力多強&#xff0c;沒有與客戶接觸的機會&#xff0c;這些都是無稽之談。但是大家都知道&#xff0c;道理都懂&#xff0c;但是要…

.yaml文件的簡介

文章目錄 YAML文件簡介YAML文件的示例 YAML文件簡介 YAML是一種人類可讀的數據序列化標準。它常被用于配置文件、數據交換格式、以及在一些編程語言中的數據結構描述。 YAML 文件的主要特點有如下四點&#xff1a; 可讀性&#xff1a;YAML 的語法結構簡潔明了&#xff0c;容…

報錯AttributeError: module ‘cv2‘ has no attribute ‘ximgproc‘

報錯AttributeError: module ‘cv2’ has no attribute ‘ximgproc’ 首先查看是否安裝opencv-contrib-python pip list | grep opencv顯示 opencv-contrib-python 4.4.0.46 opencv-python 4.8.1.78 opencv-pyt…