【Prometheus+Grafana篇】監控通過Keepalived實現的MySQL HA高可用架構

💫《博主主頁》:
   🔎 CSDN主頁__奈斯DB
   🔎 IF Club社區主頁__奈斯、
🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(Redis)有了解
💖如果覺得文章對你有所幫助,歡迎點贊收藏加關注💖

在這里插入圖片描述
????看過我之前文章的小伙伴都清楚,在之前介紹過 [基于Prometheus+Grafana實現MySQL數據庫的監控與可視化 ]的文章,這篇文章主要是監控MySQL數據庫和主從復制,但當數據庫升級為高可用架構后,監控策略也需要隨之升級!🔝
????在運營商、金融、電商等關鍵業務場景中,MySQL高可用架構(如MGR、MHA、Keepalived+HA、InnoDB Cluster等)是保障"一年五個九"(99.999%可用性)的核心支柱。那么在眾多MySQL高可用架構中,Keepalived+HA是實現MySQL高可用中最常見的一種方案,只需要兩臺服務器就可以實現MySQL的高可用,因此實時監控高可用架構狀態是非常重要的一環。
????那么接下來這篇文章將聚焦Keepalived+HA高可用架構,通過Prometheus打造全方位的監控體系!🚀

???

特別說明💥:
?監控MySQL HA實現如下告警

  • ? Keepalived 服務已停止
  • ? 主節點虛擬IP不可達
  • ? 虛擬IP漂移到備節點
    ???
    ???

prometheus+Grafana全系列文章(實時更新🔥):

序號文章
1【prometheus+Grafana篇】Prometheus與Grafana:深入了解監控架構與數據可視化分析平臺
2【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter
3【prometheus+Grafana篇】Prometheus告警規則參數全解析 + Alertmanager實現多平臺告警(含電子郵件/企業微信群/飛書群/釘釘群接受方式)
4【prometheus+Grafana篇】PromQL核心函數解析:rate()與irate()函數詳解
5【prometheus+Grafana篇】基于Prometheus+Grafana實現Linux操作系統的監控與可視化
6【prometheus+Grafana篇】基于Prometheus+Grafana實現windows操作系統的監控與可視化
7【prometheus+Grafana篇】基于Prometheus+Grafana實現Oracle數據庫的監控與可視化
8【prometheus+Grafana篇】基于Prometheus+Grafana實現MySQL數據庫的監控與可視化
9【Prometheus+Grafana篇】監控通過Keepalived實現的MySQL HA高可用架構
10【prometheus+Grafana篇】基于Prometheus+Grafana實現MongoDB數據庫的監控與可視化
11【prometheus+Grafana篇】基于Prometheus+Grafana實現Redis數據庫的監控與可視化
12【prometheus+Grafana篇】基于Prometheus+Grafana實現postgreSQL數據庫的監控與可視化
13【prometheus+Grafana篇】基于Prometheus+Grafana實現SQLserver數據庫的監控與可視化

目錄

    • 一、HA主
      • 1)編輯監控keepalived+VIP進程腳本
      • 2)安裝python和Prometheus所需依賴包
      • 3)將監控腳本寫入到linux啟動服務項
    • 二、HA備
      • 1)編輯監控keepalived+VIP進程腳本
      • 2)安裝python和Prometheus所需依賴包
      • 3)將監控腳本寫入到linux啟動服務項
    • 三、添加MySQL HA到prometheus中
      • 1)將MySQL HA的信息加入到prometheus監控的配置文件prometheus.yml中
      • 2)配置告警規則文件
      • 3)檢查配置文件
      • 4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)
      • 5)在prometheus查看是否可以看到監控信息
    • 四、模擬主庫故障,查看告警


???

MySQL HA高可用架構信息如下:

角色VIPIP地址類型
HA主110.120.100.48110.120.100.46讀寫
HA備110.120.100.47讀(備用)

在這里插入圖片描述
???
????那么從上面的架構圖可以推斷出主庫和從庫分別都應該監控哪些內容:

  • 主庫:

    1. 監控主庫上的keepalived監控
    2. 主節點需要檢查虛擬 IP 是否不存在:正常情況下keepalived的VIP只能存在于主庫上,而不能存在于除了主庫的其他任意節點上
      ???
  • 從庫:

    1. 監控從庫上的keepalived監控
    2. 備節點需要檢查虛擬 IP 是否存在:正常情況下keepalived的VIP地址是在主節點上的,如果在從節點發現了VIP,就進行告警。這樣的好處在于可以馬上知曉VIP漂移到了從節點上,也可以監控是否出現了腦裂問題,如果出現了腦裂能馬上進行干預和處理。PS提示:Keepalived的BACKUP主機在收到不MASTER主機報文后就會切換成為master,如果是它們之間的通信線路出現問題,無法接收到彼此的組播通知,但是兩個節點實際都處于正常工作狀態,這時兩個節點均為master強行綁定虛擬IP,導致不可預料的后果,這就是腦裂。
      ???

???現在知道了該監控哪些內容,那么開始如下配置。

???

監控部署流程正式啟動,請勿中斷操作!!!🚀

???

一、HA主

1)編輯監控keepalived+VIP進程腳本

[root@mysql-db1 ~]# mkdir -p /opt/prometheus
[root@mysql-db1 ~]# cd /opt/prometheus/
[root@mysql-db1 ~]# mkdir keepalived_exporter
[root@mysql-db1 ~]# cd keepalived_exporter 
[root@mysql-db1 keepalived_exporter]# vi keepalived_monitor.pyfrom flask import Flask, Response
import subprocess
import osapp = Flask(__name__)@app.route('/metrics')
def metrics():# 檢查 keepalived 服務狀態result = subprocess.run(['systemctl', 'is-active', 'keepalived'], stdout=subprocess.PIPE)keepalived_status = 1 if result.stdout.decode().strip() == 'active' else 0# 檢查虛擬 IP 是否存在于本機ip_address = '110.120.100.48'result = subprocess.run(['ip', 'addr', 'show'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)ip_status = 1 if ip_address in result.stdout.decode() else 0# 返回 Prometheus 格式的指標metrics_data = '# HELP keepalived_status 狀態,1表示keepalived服務正在運行,0表示未運行\n'metrics_data += '# TYPE keepalived_status gauge\n'metrics_data += f'keepalived_status {keepalived_status}\n'                  # 檢查 keepalived 服務狀態metrics_data += f'# HELP ip_reachability_primary{{ip="{ip_address}"}} 虛擬IP是否存在,1表示存在,0表示不存在\n'    # 根據節點角色設置 Prometheus 格式的指標。主節點需要檢查虛擬 IP 是否不存在,定義的指標項為ip_reachability_primary;備節點需要檢查虛擬 IP 是否存在,定義的指標項為ip_reachability_secondarymetrics_data += '# TYPE ip_reachability_primary gauge\n'metrics_data += f'ip_reachability_primary{{ip="{ip_address}"}} {ip_status}\n'return Response(metrics_data, mimetype='text/plain')if __name__ == '__main__':app.run(host='0.0.0.0', port=4399)  # 監聽 4399 端口

###腳本實現了兩個監控:

  1. 檢查了 keepalived 服務狀態
  2. 檢查了虛擬 IP 是否存在于本機,根據節點角色設置 Prometheus 格式的指標。主節點需要檢查虛擬 IP 是否不存在,定義的指標項為ip_reachability_primary;備節點需要檢查虛擬 IP 是否存在,定義的指標項為ip_reachability_secondary。虛擬ip是一個在主備節點之間共享的虛擬IP地址,永遠只存在于同一個virtual_router_id組中的主節點上。也是就說監控主節點上ip是否不存在,備節點監控ip是否存在
    ???

###在如上腳本中,只需要將 ip_address = '110.120.100.48' 這里的IP替換為實際的VIP,其他地方不需要有任何變更
???
???

2)安裝python和Prometheus所需依賴包

安裝Python:通過yum進行安裝。監控腳本是通過python實現的,因此需要安裝python3,用于運行keepalived_monitor.py監控腳本

[root@mysql-db1 ~]# yum install python3
[root@mysql-db1 ~]# python3 --version

???

安裝Flask:將Flask相關包上傳至Linux的/software/Flask目錄下。這里安裝flask是因為在keepalived_monitor.py監控腳本中使用了 Flask 的以下關鍵組件

組件用途必要性
Flask創建輕量級Web服務器? 必須
@app.route暴露 /metrics 端點供Prometheus抓取? 必須
Response返回符合Prometheus格式的監控數據? 必須
flask相關包博主已打包上傳至資源,需要的小伙伴直接下載即可

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

[root@mysql-db1 ~]# cd /software
[root@mysql-db1 ~]# unzip flask.zip
[root@mysql-db1 ~]# cd flask
[root@mysql-db1 ~]# pip3 install *.whl

PS小提示:如果不安裝Flask。那么通過python3運行keepalived_monitor.py腳本時會報如下錯誤:
在這里插入圖片描述
???
???

3)將監控腳本寫入到linux啟動服務項

[root@mysql-db1 ~]# cd /usr/lib/systemd/system
[root@mysql-db1 ~]# vi keepalived_monitor.service[Unit]
Description=Keepalived Monitor Script
After=network.target[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/prometheus/keepalived_exporter/keepalived_monitor.py
WorkingDirectory=/opt/prometheus/keepalived_exporter/
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin:/usr/sbin
Environment=PYTHONUNBUFFERED=1[Install]
WantedBy=multi-user.target[root@mysql-db1 ~]# systemctl daemon-reload
[root@mysql-db1 ~]# systemctl start keepalived_monitor.service
[root@mysql-db1 ~]# systemctl enable keepalived_monitor.service
[root@mysql-db1 ~]# systemctl status keepalived_monitor.service

???

二、HA備

1)編輯監控keepalived+VIP進程腳本

[root@mysql-db2 ~]# mkdir -p /opt/prometheus
[root@mysql-db2 ~]# cd /opt/prometheus/
[root@mysql-db2 ~]# mkdir keepalived_exporter
[root@mysql-db2 ~]# cd keepalived_exporter 
[root@mysql-db2 keepalived_exporter]# vi keepalived_monitor.pyfrom flask import Flask, Response
import subprocess
import osapp = Flask(__name__)@app.route('/metrics')
def metrics():# 檢查 keepalived 服務狀態result = subprocess.run(['systemctl', 'is-active', 'keepalived'], stdout=subprocess.PIPE)keepalived_status = 1 if result.stdout.decode().strip() == 'active' else 0# 檢查虛擬 IP 是否存在于本機ip_address = '110.120.100.48'result = subprocess.run(['ip', 'addr', 'show'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)ip_status = 1 if ip_address in result.stdout.decode() else 0# 返回 Prometheus 格式的指標metrics_data = '# HELP keepalived_status 狀態,1表示keepalived服務正在運行,0表示未運行\n'metrics_data += '# TYPE keepalived_status gauge\n'metrics_data += f'keepalived_status {keepalived_status}\n'                  # 檢查 keepalived 服務狀態metrics_data += f'# HELP ip_reachability_secondary{{ip="{ip_address}"}} 虛擬IP是否存在,1表示存在,0表示不存在\n'    # 根據節點角色設置 Prometheus 格式的指標。主節點需要檢查虛擬 IP 是否不存在,定義的指標項為ip_reachability_primary;備節點需要檢查虛擬 IP 是否存在,定義的指標項為ip_reachability_secondarymetrics_data += '# TYPE ip_reachability_secondary gauge\n'metrics_data += f'ip_reachability_secondary{{ip="{ip_address}"}} {ip_status}\n'return Response(metrics_data, mimetype='text/plain')if __name__ == '__main__':app.run(host='0.0.0.0', port=4399)  # 監聽 4399 端口

###腳本實現了兩個監控:

  1. 檢查了 keepalived 服務狀態
  2. 檢查了虛擬 IP 是否存在于本機,根據節點角色設置 Prometheus 格式的指標。主節點需要檢查虛擬 IP 是否不存在,定義的指標項為ip_reachability_primary;備節點需要檢查虛擬 IP 是否存在,定義的指標項為ip_reachability_secondary。虛擬ip是一個在主備節點之間共享的虛擬IP地址,永遠只存在于同一個virtual_router_id組中的主節點上。也是就說監控主節點上ip是否存在,備節點監控ip是否不存在
    ???

###在如上腳本中,只需要將 ip_address = '110.120.100.48' 這里的IP替換為實際的VIP,其他地方不需要有任何變更
???
???

2)安裝python和Prometheus所需依賴包

安裝Python:通過yum進行安裝。監控腳本是通過python實現的,因此需要安裝python3,用于運行keepalived_monitor.py監控腳本

[root@mysql-db2 ~]# yum install python3
[root@mysql-db2 ~]# python3 --version

???

安裝Flask:將Flask相關包上傳至Linux的/software/Flask目錄下。這里安裝flask是因為在keepalived_monitor.py監控腳本中使用了 Flask 的以下關鍵組件

組件用途必要性
Flask創建輕量級Web服務器? 必須
@app.route暴露 /metrics 端點供Prometheus抓取? 必須
Response返回符合Prometheus格式的監控數據? 必須
flask相關包博主已打包上傳至資源,需要的小伙伴直接下載即可

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

[root@mysql-db2 ~]# cd /software
[root@mysql-db2 ~]# unzip flask.zip
[root@mysql-db2 ~]# cd flask
[root@mysql-db2 ~]# pip3 install *.whl

PS小提示:如果不安裝Flask。那么通過python3運行keepalived_monitor.py腳本時會報如下錯誤:
在這里插入圖片描述
???
???

3)將監控腳本寫入到linux啟動服務項

[root@mysql-db2 ~]# cd /usr/lib/systemd/system
[root@mysql-db2 ~]# vi keepalived_monitor.service[Unit]
Description=Keepalived Monitor Script
After=network.target[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/prometheus/keepalived_exporter/keepalived_monitor.py
WorkingDirectory=/opt/prometheus/keepalived_exporter/
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin:/usr/sbin
Environment=PYTHONUNBUFFERED=1[Install]
WantedBy=multi-user.target[root@mysql-db2 ~]# systemctl daemon-reload
[root@mysql-db2 ~]# systemctl start keepalived_monitor.service
[root@mysql-db2 ~]# systemctl enable keepalived_monitor.service
[root@mysql-db2 ~]# systemctl status keepalived_monitor.service

???

三、添加MySQL HA到prometheus中

注意:如下操作是在安裝了prometheus和Grafana的主機上進行操作
???

1)將MySQL HA的信息加入到prometheus監控的配置文件prometheus.yml中

[root@prometheus ~]# vi /opt/prometheus/prometheus.yml     
在scrape_configs下面新增如下內容:
# keepalived_exporter配置- job_name: "MySQL keepalived status"         ###job_name 用來唯一標識一個監控任務。在同一個 prometheus.yml 文件中,不同的 scrape_config可以有不同的job_name,以便 Prometheus 能夠區分和管理不同的監控目標和配置,用來將不同的監控目標分組。單位為監控keepalived設置一個獨立的job_namescrape_interval: 15s                        ###指定這個job_name每隔多久從每個目標(如 Exporter、應用端點)拉取一次指標數據。優先級:會覆蓋全局的 global:scrape_interval(如果存在)。file_sd_configs:- files:- /opt/prometheus/conf.d/keepalived_targets.json     # keepalived需要監控的實例都單獨寫在了keepalived_targets.json文件中,是為了避免prometheus.yml內容過多,看起來更簡潔[root@prometheus ~]# vi /opt/prometheus/conf.d/keepalived_targets.json
[{"targets": [ "110.120.100.46:4399" ],"labels": { "instance": "數據庫HA(keepalived)主庫(IP:110.120.100.46)" }},{"targets": [ "110.120.100.47:4399" ],"labels": { "instance": "數據庫HA(keepalived)從庫(IP:110.120.100.47)" }}
]

???

2)配置告警規則文件

????除了如下告警規則之外,還需要單獨配置一個Targets目標不可達(up)的相關規則,因為up 是一個布爾值指標,表示 Prometheus 是否能夠成功地 scrape(抓取)到指定的目標(targets)數據,用于判斷目標node-exporter相關進程是否在目標主機存活。關于up的規則文件參考:【prometheus+Grafana篇】從零開始:Linux 7.6 上二進制安裝 Prometheus、Grafana 和 Node Exporter

[root@prometheus ~]# cd /opt/prometheus/rules/     ###在prometheus.yml文件中定義了告警規則文件rule_files參數
[root@prometheus rules]# vi keepalived_alerts.ymlgroups:- name: keepalived_alertsrules:- alert: KeepalivedDownexpr: keepalived_status == 0for: 3slabels:severity: criticalannotations:summary: "Keepalived 服務已停止"description: "Keepalived 服務在 {{ $labels.instance }} 上停止運行,請立即通過systemctl status keepalived檢查服務狀態!"- alert: PrimaryIPReachabilityDownexpr: ip_reachability_primary == 0for: 3slabels:severity: criticalannotations:summary: "主節點虛擬IP不可達"description: "主節點的虛擬 IP {{ $labels.ip }} 在 {{ $labels.instance }} 上不可達,請通過systemctl status keepalived檢查服務狀態,并且檢查虛擬 IP 是否漂移到從庫上!"- alert: secondaryIPReachabilityUpexpr: ip_reachability_secondary == 1for: 3slabels:severity: criticalannotations:summary: "虛擬IP漂移到備節點"description: "虛擬 IP {{ $labels.ip }} 已從主節點漂移到 {{ $labels.instance }} ,需要人工干預將其轉移回主節點上運行!"

???

3)檢查配置文件

[root@prometheus ~]# cd /opt/prometheus/
[root@prometheus ~]# ./promtool check config prometheus.yml      ###用于檢查 Prometheus 配置文件(prometheus.yml)的語法和格式是否正確。

執行這條命令會執行以下操作:

  1. 驗證配置文件的語法:檢查 prometheus.yml 文件是否符合 Prometheus 配置格式規范。
  2. 檢測潛在的錯誤或警告:如果配置文件中存在拼寫錯誤、格式問題、無效的配置項等問題,它會提供相關的錯誤信息或警告。比如告警規則寫的不對,就會有提示
  3. 輸出有用的診斷信息:如果配置文件存在問題,promtool 會輸出詳細的錯誤信息。
    在這里插入圖片描述
    ???

4)prometheus.yml文件添加了信息,所以重啟prometheus進程或者重新加載配置文件(二選一)

#重載:前提是在prometheus.service啟動服務項中加了–web.enable-lifecycle參數:–web.enable-lifecycle:###啟用Prometheus的生命周期接口,允許通過HTTP請求來動態重新加載配置等操作。這對于在運行時更新配置或執行其他管理操作非常有用,當修改了prometheus的配置后,可以通過curl命令來重新加載配置文件,而不需要重啟prometheus(推薦方式)

[root@prometheus ~]# curl -X POST http://localhost:9090/-/reload

???

#重啟

[root@prometheus ~]# systemctl restart prometheus.service

???

5)在prometheus查看是否可以看到監控信息

網址:http://110.120.100.21:9090
菜單欄:Status—Targets
在這里插入圖片描述

???

四、模擬主庫故障,查看告警

主庫:
[root@mysql-db1 ~]# service mysqld stop

觸發如下告警

在這里插入圖片描述
???
???
從庫:

觸發如下告警

在這里插入圖片描述
???
???
????那么可以看到當主庫故障時,監控到了主庫上的keepalived故障,并且VIP發生了漂移,也收到了VIP在從庫上的告警。那么后續就是先修復主庫數據后,然后人工將VIP再切換到主庫上就可以了,這里博主就不演示了


完結,撒花💓

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

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

相關文章

k8s:利用kubectl部署postgis:17-3.5

1.離線環境CPU:Hygon C86 7285 32-core Processor 操作系統:麒麟操作系統 containerd:1.7.27 Kubernetes:1.26.12 KubeSphere:4.1.2 kubekey:3.1.10 Harbor:2.13.1 Postgis:17-3.52.創建并執行postgresql-headless.yaml2.1創建apiVersion: v1…

Mysql(存儲過程)

目錄 介紹 特點 存儲過程創建 系統變量(不重要) 用戶變量 局部變量 if 判斷 參數(in, out, inout) case while repeat loop 游標和條件處理程序-handler 存儲函數 為了防止以后忘記,反復去看視頻浪費時間,特寫一篇 介紹 存儲過程…

Effective Python 第14條: 用sort方法的key參數來表示復雜的排序邏輯

一、引言:Python排序功能的重要性 在Python開發中,排序功能是一個常見的需求。無論是處理數據、優化算法,還是提升用戶體驗,排序都是不可或缺的一部分。Python的列表內置了sort方法,提供了靈活的排序功能。然而&#…

react+antd 可拖拽模態框組件

DraggableModal 可拖拽模態框組件使用說明 概述 DraggableModal 是一個基于 dnd-kit/core 實現的可拖拽模態框組件,允許用戶通過拖拽標題欄來移動模態框位置。該組件具有智能邊界檢測功能,確保模態框始終保持在可視區域內。 功能特性 ? 可拖拽移動&…

MySQL的基本操作及相關python代碼

下面為你介紹 MySQL 的基本操作,以及對應的 Python 代碼實現。我會先介紹 SQL 基本操作,再展示如何用 Python 連接 MySQL 并執行這些操作。 一、MySQL 基本操作(SQL 語句) 1. 連接數據庫 bash mysql -u root -p2. 創建數據庫 sql CREATE DATABASE testdb;3. 使用數據…

Armbian(斐訊N1)安裝xfce桌面以及遠程環境

安裝xfce桌面以及vncserver(遠程連接) 安裝xfce桌面 apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils ubuntu的安裝gdm3, apt install gdm3 debian安裝lightdm。 apt install lightdm 安裝vnc server apt-get install tightvncserver 中文字體…

【Oracle】Oracle 11g打補丁時遇到opatch apply命令無法識別

?? 1. 使用完整路徑執行命令 問題原因:若未將$ORACLE_HOME/OPatch加入系統PATH環境變量,直接輸入opatch apply會因系統無法定位命令而報錯。 解決方案: 改用絕對路徑執行: $ORACLE_HOME/OPatch/opatch apply例如: /u…

單例模式詳細講解

一.定義單例模式是一種創建型設計模式,確保一個類只有一個實例,并提供一個全局訪問點特點:1.構造函數和析構函數私有化2.禁用拷貝構造函數和賦值運算符重載(delete)3.利用靜態成員函數和靜態成員變量來給外界提供訪問二…

KORGym:評估大語言模型推理能力的動態游戲平臺

KORGym:評估大語言模型推理能力的動態游戲平臺 現有評估基準多受領域限制或 pretraining 數據影響,難以精準測LLMs內在推理能力。KORGym平臺應運而生,含50余款游戲,多維度評估,本文將深入解析其設計、框架、實驗及發現…

ISPDiffuser文章翻譯理解

ISPDiffuser: Learning RAW-to-sRGB Mappings with Texture-Aware Diffusion Models and Histogram-Guided Color Consistency翻譯 Type: Conference paper Author: Yang Ren1,4, Hai Jiang1,4, Menglong Yang1,2,?, Wei Li1,2, Shuaicheng Liu3,4,? Select: ???????…

C++線程池執行步驟分析,總結線程池流程

線程池流程總結:1、構造函數中創建線程,并添加到線程池(構造函數返回時,線程自動啟動,并停在等待wait:從線程池取出一個任務處); 2、主線程中添加任務,到任務隊列。并用“…

Java 通過 HttpURLConnection發送 http 請求

問題&#xff1a; 在調試 kill 接口的時候&#xff0c;對方的服務用的是 Django RestFramework 框架提供的接口&#xff0c;用 python 請求時得到的內容如下&#xff1a; ? ~ python3 test.py <Response [200]> "true" // 對應的代碼是 print(response, r…

【PTA數據結構 | C語言版】列出連通集

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 給定一個有 n 個頂點和 m 條邊的無向圖&#xff0c;請用深度優先遍歷&#xff08;DFS&#xff09;和廣度優先遍歷&#xff08;BFS&#xff09;分別列出其所有的連通集。假設頂點從 0 到 n?1 編號。…

GoLang教程005:switch分支

3.4 Switch分支 在 GoLand&#xff08;其實是 JetBrains 開發的 Go 編程語言 IDE&#xff09;中&#xff0c;switch 是 Go 語言&#xff08;Golang&#xff09; 的一個重要控制結構&#xff0c;用于替代多個 if-else 語句。 ? 特點說明特性說明自動 breakGo 的 switch 語句默認…

uniapp相關地圖 API調用

目錄 一、 注意事項&#xff1a; manifest.json需增加配置 二、獲取用戶收貨地址 [uni.chooseAddress] 三、獲取當前的地理位置、速度 [uni.getLocation] 四、打開地圖選擇位置、查看位置(導航) [uni.chooseLocation] [uni.openLocation] 五、使用騰訊地圖逆地址解析接口實…

Java學習----NIO模型

在 Java 的 I/O 模型中&#xff0c;NIO&#xff08;Non - Blocking I/O&#xff0c;非阻塞 I/O&#xff09;是對 BIO 的重要改進。它為高并發場景提供了更高效的處理方式&#xff0c;在眾多 Java 應用中發揮著關鍵作用。NIO模型的核心在于非阻塞和多路復用&#xff0c;其采用 “…

MySQL計數函數count原理分析

前言 統計表中數據的條數是非常常用的操作,但是咱們常用的InnoDB存儲引擎計數函數是現時統計的,所以會出現性能的問題,這次我準備分享計數函數count的原理,保證之后遇到計數方面的問題都可以輕易靈活的解決 與MyISAM存儲引擎相比,MyISAM存儲引擎是自己記錄了表中數據的條數,但…

Day07_網絡編程20250721_大項目

基本代碼&#xff1a;搭建服務器客戶端&#xff0c;要求服務器使用 epoll 模型客戶端使用多線程服務器打開數據庫&#xff0c;表單格式如下name text primary key pswd text not null客戶端做一個簡單的界面&#xff1a;1&#xff1a;注冊2&#xff1a;登錄無論注冊還是登錄&am…

20250721

P5357 【模板】AC 自動機 - 洛谷 主要是構建fail樹 /* 我們可以知道的是&#xff0c;當訪問一個點x時&#xff0c;接下來需要跳轉其fail[x]&#xff0c;以此類推&#xff0c;如果在某個fail[x]上出現了一個字符串&#xff0c;那么相應的統計次數應該加1&#xff0c;然后當訪…

【INT四則優先算式】2022-9-22

緣由ccf201903-2二十四點我用暴力破解做的&#xff0c;但是兩個程序一個拿到了滿分&#xff0c;一個拿到了50分&#xff0c;看了很長時間也沒看出問題在哪里&#xff0c;希望有英雄慧眼幫我看一下-編程語言-CSDN問答 void INT四則優先算式() {//緣由https://ask.csdn.net/ques…