Kafka常見問題及解決方案

Kafka 是一個強大的分布式流處理平臺,廣泛用于高吞吐量的數據流處理,但在實際使用過程中,也會遇到一些常見問題。以下是一些常見的 Kafka 問題及其對應的解決辦法的詳細解答:

消息丟失

一、原因

1.生產端

網絡故障、生產者超時導致消息發送失敗。

2.Broker端

Broker宕機、副本同步不足或磁盤故障;

3.消費者端

消費者故障或未正確提交Offset。

二、解決方案

1.生產者端

(1)消息壓縮

啟用消息壓縮(compression.type=gzip),減少網絡帶寬的消耗。

(2)ACK機制

設置acks=all,確保消息持久化到所有ISR(同步副本)。

(3)重試機制

啟用重試機制,指定發送失敗后重試次數,避免因網絡抖動導致消息丟失。

(4)緩沖區

生產者在發送消息時會將消息緩存在緩沖區(buffer.memory),直到滿足批量發送的條件。如果生產者發送的速度過快,導致緩沖區空間不足,可能會丟失消息。通過調整緩沖區參數的值來增加緩沖區大小,可以減少因內存不足導致的消息丟失。

(5)啟用生產者事務

Kafka 提供了事務機制,可以確保一組消息要么完全提交,要么完全回滾。生產者在發送消息時啟用事務,可以減少消息丟失或重復的可能性。

配置事務的步驟:

設置?transactional.id,開啟事務功能。

在業務邏輯中使用?commitTransaction()?和?abortTransaction()?來確保消息的一致性。

(6)總配置示例

kafka:

??produce:

? ? compression-type: gzip? ? ? ? ? ? ? ? ? ? ? ? ? ?# 消息壓縮,可選值:gzip、snappy、lz4、zstd

????acks: all? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 副本同步 ?????????????????

????retries: 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 發送失敗后重試次數

? ??enable-idempotence: true? ? ? ? ? ? ? ? ? ? ? ?# 啟用冪等性

? ? buffer-memory: 67108864? ? ? ? ? ? ? ? ? ? ??# 緩沖區內存大小,單位字節

? ? transactional-id-prefix: tx-? ? ? ? ? ? ? ? ? ? ? ?# 事務ID前綴,啟用事務時設置

2.Broker端

(1)副本機制

配置多副本機制(replication-factor),設置每個分區的副本數。分區的副本數越多,數據的容錯能力越強,保證Broker宕機時數據不丟失。

配置示例:

kafka:

??admin:

? ? # 默認主題分區策略

? ? default-topic:

? ? ? replication-factor: 3???# 默認分區的副本數

(2)Leader選舉機制

設置禁用臟選舉(unclean.leader.election.enable=false),

禁用沒有同步所有日志的副本參與選舉,避免出現數據丟失的情況。

配置示例:

kafka:

? # 副本機制

? replication:

? ? # 副本落后超過此時間(毫秒)會被移出 ISR 列表

? ? replica_lag_time_max_ms: 10000? ? ?# 默認為 10000 毫秒,即 10 秒

? ? # 最少需要多少個同步副本才能進行寫入

? ? min_insync_replicas: 2? ? ?# 默認為 1

? ? # 是否允許在沒有足夠 ISR 的情況下進行領導者選舉

? ? unclean_leader_election_enable: false? ? ?# 默認為 false,防止數據丟失

(3)日志段和日志保留配置

設置日志段和日志保留,log.retention.mslog.retention.bytes

確保消息在日志中存儲足夠長的時間,避免因日志滾動而丟失未被消費的消息。

配置示例:

kafka:

??# 日志機制

??log:

? ? # 設置每個日志段的大小

? ? segment:

? ? ? bytes: 1073741824? ?# 默認為 1GB

? ? # 設置日志保留時間(毫秒)

? ? retention:

? ? ? ?ms: 604800000? ?# 7天,單位是毫秒

? ? # 設置日志的最大保留大小

? ? retention_bytes: 10737418240? ?# 默認為 10GB

? ? # 設置日志清理策略(delete 或 compact)

? ? cleanup_policy: "delete"? ?# 可選:delete 或 compact

? ? # 設置日志索引間隔大小

? ? index_interval_bytes: 4096? ?# 默認為 4096

(4)磁盤檢查

定期監控磁盤健康狀態,避免日志目錄寫滿導致數據不可用。

3.消費者端

(1)消息偏移量提交策略

關閉自動提交消息偏移量(enable-auto-commit),可以在每次處理完消息后顯式提交偏移量,確保消費的消息不會丟失。

(2)重新消費策略

如果消費者啟動時未找到對應的偏移量,auto.offset.reset?參數決定了如何處理。earliest?會讓消費者從最早的消息開始消費,latest?會讓消費者從最新的消息開始消費。

根據需求合理配置 auto.offset.reset,避免消費者錯過消息或從錯誤的位置開始消費。

(3)啟用消費者事務

Kafka 消費者也支持事務功能,啟用消費者事務可以確保消息的原子性和一致性。即使消費者在處理過程中出現故障,事務也會確保消息的正確消費或回滾。

通過 isolation.level=read_committed 配置消費者事務,確保消息的完整性。

配置示例:

kafka:

? consumer:

? ? enable-auto-commit: false? ? ? ? ? ? # 手動提交消息偏移量

? ? auto-offset-reset: earliest? ? ? ? ? ? ?# 從最早的消息開始消費

? ? isolation-level: read_committed? ?# 只讀取已提交的消息

消息重復消費

一、原因

1.生產者端

消息發送沒有保證冪等性,如:消息發送失敗,多次重試發送,導致消息重復投遞。

2.Broker端

Broker維護消費者負載均衡,如果一個消費者崩潰,Broker會將其分配的分區重新分配給其他消費者。如果在重新分配時未能正確處理偏移量,可能會導致重新消費某些消息。

3.消費者端

消費者崩潰和異常退出,或消費者偏移量提交策略不當,導致消費者偏移量(Offset)沒有正確提交。消費者可能在下一次拉取消息時從上次未提交的位置開始,導致重復消費。

二、解決方案

1.生產者端

(1)生產者冪等性

確保生產者發送的消息具有冪等性。

啟用冪等性,Kafka 會為每個消息生成唯一的 ID,即使因為網絡問題導致生產者重試發送消息,也能確保每條消息只被寫入一次。

配置示例:

kafka:

??produce:

? ? enable-idempotence: true? ? ?# 啟用冪等性

2.Broker端

(1)分區再分配與偏移量管理

Kafka 默認在消費者發生故障或重啟時會進行分區重新分配。為了避免重新消費已處理的消息,消費者應盡量避免在消費者分配時更新偏移量,而是根據消費者的處理邏輯來確認正確的偏移量。

防止分區再分配時重復消費的策略:

? 生產端使用事務或其他手段確保消息的原子性。

? 消費端通過設置?max.poll.records,減少每次拉取的消息數量,確保每次拉取的消息都能夠被處理完。

配置示例:

kafka:

??consumer:

? ? max-poll-records: 1000? ? ?# 每次poll的最大記錄數 ?

3.消費者端

(1)偏移量提交策略

在消費者成功處理完一條消息后,顯式地手動提交偏移量。可以確保消費者在崩潰時不會丟失或重復消費消息。

消費者手動提交偏移量的方式:

? 同步提交偏移量:每次消費消息后同步提交偏移量。

? 異步提交偏移量:異步提交偏移量,不會阻塞消息處理。

配置示例:

kafka:

? consumer:

? ? enable-auto-commit: false ??????# 手動提交消息偏移量

(2)消費者冪等性

確保消費者的處理操作是冪等的。

冪等性意味著無論消息處理多少次,最終結果都應該是一樣的。

消費者冪等性策略:

??數據庫唯一性約束,防止相同的消息寫入。

??去重表,檢查消息是否處理過。

? Redis原子操作,setnx()。

? 樂觀鎖(CAS機制)。

消息堆積

一、原因

1.生產者端

生產者生產速度過快,遠超消費者的消費速度,導致消息堆積。

2.Broker端

(1)分區數不足

分區的數量和消費者的數量應該適配。

如果 Kafka 集群的分區數量太少,而消費端消費者數量較多,多個消費者會爭奪較少的分區資源,導致消費能力不足,消息堆積。

3.消費者端

(1)消費者消費能力不足

消費者數量不足,無法滿足高并發的消息處理需求。

消費者的硬件性能(例如 CPU、內存、磁盤 IO)不足以支撐高吞吐量的消費。

消費者的處理邏輯(例如網絡請求、數據庫操作等)較慢,導致消費速度遠低于消息生產速度。

(2)消費線程或并發度不足

消費者如果是單線程模型,或者每個消費者實例只使用一個線程來處理消息,那么當消息量較大時,消費者無法并行消費,導致堆積問題。

(3)消費者偏移量

如果消費者沒有正確管理偏移量(例如,沒有提交消費的偏移量),可能導致消費者重新消費舊消息或者丟失未消費的消息,造成堆積和消費滯后。

二、解決方案

1.生產者端

(1)控制生產者吞吐量

對生產者的吞吐量進行控制,避免生產速度過快。

調整生產者的速度的方式:

? 限制吞吐量,使用?acks?和?batch.size?配置來調整消息發送的策略。

? 控制消息批量發送的時機,設置?linger.ms和buffer-memory。

配置示例:

kafka:

??produce:

? ? enable-idempotence: true? ? ? ? ? ?# 啟用冪等性

? ? acks: all? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 確認機制

? ? batch-size: 32768? ? ? ? ? ? ? ? ? ? ? ?# 生產者每個批次發送的最大字節數

? ? linger-ms: 5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 延遲發送的時間,單位毫秒

? ? buffer-memory: 67108864? ? ? ? ? # 生產者緩沖區內存大小,單位字節

2.Broker端

(1)增加分區數

通過增加分區數,可以提高 Kafka 消費的并發處理能力,減輕消息堆積的風險。

注意,增加后的分區數會影響 Kafka 的負載均衡,因此需要根據集群的實際情況來調整分區數。

配置示例:

kafka:

??admin:

? ? default-topic:

? ? ? partitions: 5? ? ? ? ? ? ? ? ? ? # 默認主題的分區數

? ? ? replication-factor: 3? ? ? ? # 默認分區的副本數

(2)設置消息過期策略

當消息超過配置的保留時間后,Kafka 會自動刪除這些消息。

通過設置合理的 log.retention.hours 或 log.retention.bytes 參數,可以限制消息的保留時間,避免消息堆積導致存儲問題。

配置示例:

kafka:

??log:

? ? # 設置每個日志段的大小

? ? segment:

? ? ? ? bytes: 1073741824? ? ?# 默認為 1GB

? ? # 設置日志保留時間(毫秒)

? ? retention:

? ? ? ms: 604800000? ? ?# 7天,單位是毫秒

? ? # 設置日志的最大保留大小

? ? retention_bytes: 10737418240? ? ?# 默認為 10GB

3.消費者端

(1)增加消費者數量

增加消費者數量,提高消費體量,分擔 Kafka 分區的消費負載。

(2)增加消費者并發數

通過設置消費者并發數,實現并發消費。

配置示例:

kafka:

??consumer:

? ? concurrency: 10? ? ?# 設置消費者并發數 ?

(3)增加消費者的并發度(線程池)

通過增加每個消費者的線程數量,來提升消費的并發度。

例如,如果消息的操作是 CPU 密集型的,可以采用消費者線程池,來提升處理能力。

代碼示例:

public class KafkaConsumer {

????private static final int NUM_THREADS = 4;

? ? private ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);

????@KafkaListener(topics = "my-topic", groupId = "my-group")

????public void consume(List<String> messages) {

????????for (String message : messages) {

????????????executorService.submit(() -> processMessage(message));

????????}

????}

????private void processMessage(String message) {

????????// 處理消息的業務邏輯

????}

}

(4)優化消費者的處理速度

過濾非關鍵消息,減少消息量

批量處理消息,減少頻繁的消息處理開銷。

在消費過程中避免復雜計算或繁重的同步操作。

優化數據庫訪問,避免頻繁的網絡請求或磁盤 I/O 操作。

4.監控與告警機制

(1)監控指標

通過監控消費者的消費延遲、Kafka Broker 的磁盤空間、網絡帶寬等指標,可以及時發現問題并采取措施。

例如:使用 Kafka 提供的 consumer lag 指標,監控消費者的滯后情況。如果滯后過多,及時增加消費者數量或擴展消費者的處理能力。

(2)常用監控工具

Kafka Manager:

提供 Kafka 集群的實時監控、管理功能。

Prometheus + Grafana:

通過 Prometheus 拉取 Kafka 的監控數據,并使用 Grafana 展示監控圖表。

消息順序

一、原因

1.生產者端

(1)消息分區策略

Kafka 允許生產者并行發送消息到不同的分區,這可能導致消息順序問題。

生產者在沒有明確指定分區的情況下,會根據分區器(Partitioner)策略將消息發送到不同的分區。即使在同一個生產者實例中,消息發送到不同的分區也可能導致它們的順序發生變化。

(2)生產者的重試機制

當消息發送失敗時,生產者會進行重試。這可能導致消息在生產過程中順序發生變化,特別是在生產者在多個分區上并發寫入消息時。

2.Broker端

(1)分區順序

Kafka 是基于分區來組織消息的,消息的順序保證是分區級別。

只能保證單分區順序,不能保證跨分區順序。

同一分區:

同一個分區中的消息會按照生產的順序進行消費。

不同分區:

不同分區的消息之間的順序無法保證,因為不同的分區可能被不同的消費者并行處理。

3.消費者端

多個消費者并發消費多個分區時,由于消費者可能并行消費不同分區的消息,導致多個分區內的消息順序得到保證,但跨分區的消息順序就無法保證。

例如,分區 0 中的消息順序是有保證的,分區 1 中的消息順序也是有保證的,但分區 0 和分區 1 之間的順序是不確定的。

二、解決方案

1.生產者端

(1)基于消息的鍵(Key)確保順序

通過設置消息的鍵(Key)來決定消息的分配的分區。消息具有相同的鍵時,會被發送到相同的分區,從而保證了這些消息的順序性。

代碼示例:

ProducerRecord<String, String> record = new ProducerRecord<>("topic", "userID123", "orderMessage");

producer.send(record);

(2)確保消息重試時的順序

通過配置生產者的 acks 和 retries 參數來控制消息重試機制,從而減少重試帶來的順序問題。

acks: 確保消息被成功寫入副本后才確認返回,以提高消息的可靠性。

retries: 控制生產者重試次數,防止因重試導致的順序問題。

(3)使用事務確保順序

Kafka 支持生產者事務,可以在生產者端啟用事務,確保一組消息的順序性和原子性。通過事務,可以保證一組消息要么全部提交,要么全部回滾,從而避免部分消息的順序問題。

代碼示例:

Properties props = new Properties();

props.put("acks", "all");

props.put("transactional.id", "my-transaction-id");

KafkaProducer<String, String> producer = new KafkaProducer<>(props);

producer.initTransactions();

try {

????producer.beginTransaction();

????producer.send(new ProducerRecord<>(topic, "key", "value"));

????producer.commitTransaction();

} catch (ProducerFencedException | OutOfOrderSequenceException | AuthorizationException e) {

????// fatal errors, should not proceed

????producer.close();

} catch (KafkaException e) {

????// transient errors, may be retried

????producer.abortTransaction();

}

2.Broker端

(1)自定義分區策略

Kafka 提供了分區器(Partitioner)接口,允許用戶根據業務需求自定義分區策略。可以實現自定義的分區器,使得具有相同特征(如同一用戶、同一設備)的消息發送到相同的分區,保證同一分區的順序性。

代碼示例:

public class CustomPartitioner implements Partitioner {

????@Override

????public void configure(Map<String, ?> configs) {

????}

????@Override

????public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes,

? ? ? ? Cluster cluster) {

????????// 例如根據用戶 ID 做分區

????????return Math.abs(key.hashCode()) % cluster.partitionCountForTopic(topic);

????}

????@Override

????public void close() {

????}

}

3.消費者端

(1)控制消費順序

當消費者并發消費多個分區時,無法保證跨分區的順序。

消費策略:

單線程消費:

將消費者配置為單線程消費,從而避免并發消費導致的順序問題。但這樣會影響系統的吞吐量和性能,適用于順序性要求極高的場景。

消費者按分區順序處理:

可以在消費者端對多個分區的消息進行排序處理,確保按時間或其他維度的順序進行消費。對于高并發的應用,這種方式可能需要更復雜的邏輯。

總結

Kafka問題排查需結合日志分析(如Broker的server.log)、監控指標(吞吐量、延遲、Lag)及集群拓撲。對關鍵場景(如金融交易)建議采用端到端事務(Exactly-Once語義)保證數據一致性。對于云原生環境,優先選擇托管服務(如Confluent Cloud)減少運維負擔。

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

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

相關文章

leetcode 二分查找應用

34. Find First and Last Position of Element in Sorted Array 代碼&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…

【Docker】在容器中使用 NVIDIA GPU

解決容器 GPU 設備映射問題&#xff0c;實現 AI 應用加速 &#x1f517; 官方文檔&#xff1a;NVIDIA Container Toolkit GitHub 常見錯誤排查 若在運行測試容器時遇到以下錯誤&#xff1a; docker: Error response from daemon: could not select device driver ""…

通過Quartus II實現Nios II編程

目錄 一、認識Nios II二、使用Quartus II 18.0Lite搭建Nios II硬件部分三、軟件部分四、運行項目 一、認識Nios II Nios II軟核處理器簡介 Nios II是Altera公司推出的一款32位RISC嵌入式處理器&#xff0c;專門設計用于在FPGA上運行。作為軟核處理器&#xff0c;Nios II可以通…

JAVA設計模式——(三)橋接模式

JAVA設計模式——&#xff08;三&#xff09;橋接模式&#xff08;Bridge Pattern&#xff09; 介紹理解實現武器抽象類武器實現類涂裝顏色的行為接口具體顏色的行為實現讓行為影響武器修改武器抽象類修改實現類 測試 適用性 介紹 將抽象和實現解耦&#xff0c;使兩者可以獨立…

k8s 證書相關問題

1.重新生成新證書 kubeadm init phase certs apiserver-etcd-client --config ~/kubeadm.yaml這個命令表示生成 kube-apiserver 連接 etcd 使用的證書,生成后如下 -rw------- 1 root root 1.7K Apr 23 16:35 apiserver-etcd-client.key -rw-r--r-- 1 root root 1.2K Apr 23 …

比較:AWS VPC peering與 AWS Transit Gateway

簡述: VPC 對等連接和 Transit Gateway 用于連接多個 VPC。VPC 對等連接提供全網狀架構,而 Transit Gateway 提供中心輻射型架構。Transit Gateway 提供大規模 VPC 連接,并簡化了 VPC 間通信管理,相比 VPC 對等連接,支持大量 VPC 的 VPC 間通信管理。 VPC 對等連接 AWS V…

制造企業PLM深度應用:2025年基于PDCA循環的7項持續改進指標

制造企業的產品生命周期管理&#xff08;PLM&#xff09;在數字化轉型的浪潮中扮演著至關重要的角色。PLM深度應用不僅能夠提升產品研發效率、保證產品質量&#xff0c;還能增強企業在市場中的競爭力。隨著2025年智能制造目標的推進&#xff0c;基于PDCA循環的持續改進對于PLM的…

極狐GitLab 的壓縮和合并是什么?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 壓縮和合并 (BASIC ALL) 在你處理一個特性分支時&#xff0c;通常會創建一些小的、獨立的提交。這些小提交幫助描述構建特性…

解耦舊系統的利器:Java 中的適配器模式(Adapter Pattern)實戰解析

在現代軟件開發中&#xff0c;我們經常需要與舊系統、第三方庫或不一致接口打交道。這時候&#xff0c;如果能優雅地整合這些不兼容組件&#xff0c;又不破壞原有結構&#xff0c;就需要一位“翻譯官” —— 適配器模式。本文將通過 Java 實例&#xff0c;詳細講解適配器模式的…

03-谷粒商城筆記

一個插件的install和生命周期的報錯是不一樣的 Maven找不到ojdbc6和sqljdbc4依賴包 這時候我找到了jar包&#xff0c;然后我就先找到一個jar安裝到了本地倉庫。 在終端上進行命令了&#xff1a; mvn install:install-file -DfileD:\ojdbc6-11.2.0.4.jar -DgroupIdcom.oracle …

黑馬點評redis改 part 5

達人探店 發布探店筆記 那第一張表block表它里邊的結構呢是這個 首先呢第一個字段是i d&#xff0c;就是主鍵&#xff0c;第二個呢是shop id&#xff0c;就是商戶你發的這個比例啊&#xff0c;它是跟哪個商戶有關系的。第三個呢用戶id就是誰發的這篇筆記&#xff0c;第四個呢標…

【PCB工藝】運放電路中的負反饋機制

通過運算方法器電路設計詳細解釋負反饋機制&#xff08;Negative Feedback&#xff09; 負反饋 是控制系統、電子電路、神經系統等多個領域中非常核心的概念。特別在運算放大器&#xff08;Op-Amp&#xff09;電路中&#xff0c;負反饋是實現精確控制和高穩定性的關鍵機制。 …

聲紋振動傳感器在電力監測領域的應用

聲紋振動傳感器在電力監測領域有多種應用&#xff0c;主要包括以下幾個方面&#xff1a; 變壓器監測 故障診斷&#xff1a;變壓器在運行過程中會產生特定的聲紋和振動信號&#xff0c;當變壓器內部出現故障&#xff0c;如繞組短路、鐵芯松動、局部放電等&#xff0c;其聲紋和振…

7、sentinel

控制臺訪問地址&#xff1a;http://localhost:8080/ 依賴 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>配置文件 spring:cloud:sentinel:transpo…

線程封裝

目錄 makefile Thread.hpp main.cc 以面向對象的方式造輪子 #ifndef _THREAD_HPP__ // 如果沒有定義過 _THREAD_HPP__ #define _THREAD_HPP__ // 則定義 _THREAD_HPP__// 這里是頭文件的實際內容&#xff08;類、函數聲明等&#xff09;#endif // 結束條件…

【maven-7.1】POM文件中的屬性管理:提升構建靈活性與可維護性

在Maven項目中&#xff0c;POM (Project Object Model) 文件是核心配置文件&#xff0c;而屬性管理則是POM中一個強大但常被低估的特性。良好的屬性管理可以顯著提升項目的可維護性、減少重復配置&#xff0c;并使構建過程更加靈活。本文將深入探討Maven中的屬性管理機制。 1.…

極狐GitLab 的合并請求部件能干什么?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 合并請求部件 (BASIC ALL) 合并請求的 概述 頁面顯示了來自服務的狀態更新&#xff0c;這些服務會對您的合并請求執行操作。…

26、C# 中是否可以繼承String類?為什么?

在 C# 中&#xff0c;不能直接繼承 String 類&#xff08;System.String&#xff09;。這是由于以下幾個原因&#xff1a; 1、String 類是 sealed 的 String 類在 .NET 中被標記為 sealed&#xff0c;這意味著它是一個密封類&#xff0c;不能被繼承。 sealed 關鍵字的作用是防…

deeplab語義分割訓練自定數據集

鏈接&#xff1a;https://pan.baidu.com/s/1KkkM1rLfyiMPtYLycpnxmg?pwdj2rd 提取碼&#xff1a;j2rd --來自百度網盤超級會員V2的分享 采用數據集&#xff1a; https://aistudio.baidu.com/datasetdetail/130647 采用代碼&#xff1a; https://github.com/jfzhang95/pyt…

【Pandas】pandas DataFrame mod

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于執行 DataFrame 與另一個對象&#xff08;如 DataFrame、Series 或標量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于執行 DataFrame 與另一個對象&…