prometheus自定義監控(pushgateway和blackbox)和遠端存儲VictoriaMetrics

1 pushgateway采集

1.1 自定義采集鍵值

如果自定義采集需求時,就可以通過寫腳本 + 定時任務定期發送數據到 pushgateway 達到自定義監控

1.部署 pushgateway,以 10.0.0.42 節點為例

1.下載組件
wget https://github.com/prometheus/pushgateway/releases/download/v1.9.0/pushgateway-1.9.0.linux-amd64.tar.gz2.解壓軟件包 
tar xf pushgateway-1.9.0.linux-amd64.tar.gz  -C /zhiyong18/softwares/3.啟動pushgateway組件,默認監聽9091端口
cd /zhiyong18/softwares/pushgateway-1.9.0.linux-amd64/
./pushgateway 4.訪問pushgateway的WebUI
http://10.0.0.41:9091/#

2.prometheus 增加新任務

[root@prometheus-server31 ~]# vim /zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml 
...- job_name: zhiyong18-zhiyong-pushgateway# 若不指定則默認值為false。# 當設置為true時,若采集的指標包含中和內置的標簽沖突時(比如job,instance)會覆蓋。# 當設置為false時,則不會覆蓋,而是在標簽前面加一個"exported_*"字段。honor_labels: truestatic_configs:- targets:- 10.0.0.41:9091

3.訪問測試:http://10.0.0.31:9090/targets ,可以看到新的 targets
在這里插入圖片描述

4.發送測試數據到 pushgateway,注意:傳遞的數據是鍵值對,KEY一般是字符串類型,而value必須是一個數字類型。

echo "wzy_age 18" | curl --data-binary @-  \
http://10.0.0.41:9091/metrics/job/zhiyong18_student/instance/10.0.0.31

5.訪問prometheus,查看接收到的數據

在這里插入圖片描述

1.2 監控TCP狀態案例

1.編寫腳本,定期發送本機的TCP狀態指標到 pushgateway 10.0.0.41

cat /usr/local/bin/tcp_status.sh
#!/bin/bash
# 定義TCP的12種狀態
ESTABLISHED_COUNT=0
SYN_SENT_COUNT=0
SYN_RECV_COUNT=0
FIN_WAIT1_COUNT=0
FIN_WAIT2_COUNT=0
TIME_WAIT_COUNT=0
CLOSE_COUNT=0
CLOSE_WAIT_COUNT=0
LAST_ACK_COUNT=0
LISTEN_COUNT=0
CLOSING_COUNT=0
UNKNOWN_COUNT=0# 定義任務名稱
JOB_NAME=tcp_status
# 定義實例名稱
INSTANCE_NAME=harbor250
# 定義pushgateway主機
HOST=10.0.0.41
# 定義pushgateway端口
PORT=9091# TCP的12種狀態
ALL_STATUS=(ESTABLISHED SYN_SENT SYN_RECV FIN_WAIT1 FIN_WAIT2 TIME_WAIT CLOSE CLOSE_WAIT LAST_ACK LISTEN CLOSING UNKNOWN)# 聲明一個關聯數組,類似于py的dict,go的map
declare -A tcp_status# 統計TCP的11種狀態
for i in ${ALL_STATUS[@]}
dotemp=`netstat -untalp | grep $i  | wc -l`tcp_status[${i}]=$temp
done# 將統計后的結果發送到pushgateway
for i in ${!tcp_status[@]}
do data="$i ${tcp_status[$i]}"# TODO: shell如果想要設計成相同key不同標簽的方式存在問題,只會有最后一種狀態被發送# 目前我懷疑是pushgateway組件不支持同一個metrics中key所對應的value不同的情況。#data="zhiyong18_tcp_all_status{status=\"$i\"} ${tcp_status[$i]}"#echo $dataecho $data | curl --data-binary @-  http://${HOST}:${PORT}/metrics/job/${JOB_NAME}/instance/${INSTANCE_NAME}# sleep 1
done
運行:`bash /usr/local/bin/tcp_status.sh`

2.訪問

在這里插入圖片描述

prometheus查看并搜索結果:

在這里插入圖片描述

2 黑/白盒監控

2.1 黑白監控介紹

黑盒監控:黑盒監控是面向現象的,關注的是系統當前的狀態,而不是預測未來會發生的問題。比如,當系統出現故障時,黑盒監控會發出警報

**白盒監控:**白盒監控則更深入,依賴于對系統內部信息的檢測,如系統日志、HTTP節點等。它不僅能檢測到當前的問題,還能預測到即將發生的問題,甚至那些被重試掩蓋的問題

Prometheus基于blackbox進行黑盒監控

blackbox_exporter概述

  • blackbox exporter支持基于HTTP, HTTPS, DNS, TCP, ICMP, gRPC協議來對目標節點進行監控

  • 比如基于http協議我們可以探測一個網站的返回狀態碼為200判讀服務是否正常

  • 比如基于TCP協議我們可以探測一個主機端口是否監聽

  • 比如基于ICMP協議來ping一個主機的連通性

  • 比如基于gRPC協議來調用接口并驗證服務是否正常工作

  • 比如基于DNS協議可以來檢測域名解析

2.2 blackbox監控網站狀態案例

01 安裝blackbox_exporter

在任意節點都能安裝,并不是agent效果

1 下載軟件
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz2 解壓軟件包
tar xvf blackbox_exporter-0.25.0.linux-amd64.tar.gz -C  /zhiyong18/softwares/3 啟動服務
cd /zhiyong18/softwares/blackbox_exporter-0.25.0.linux-amd64/
./blackbox_exporter 4 訪問blackbox的WebUI
http://10.0.0.32:9115/

在這里插入圖片描述

02 添加blackbox數據

1.修改Prometheus配置文件,對blackbox創建采集 job

[root@prs31~]# cat /zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml
...
- job_name: 'zhiyong18-blackbox-exporter-http'# 修改訪問路徑,若不修改,默認值為"/metrics"metrics_path: /probe# 配置URL的相關參數params:# 此處表示使用的是blackbox的http模塊,從而判斷相應的返回狀態碼是否為200module: [http_2xx] # 下面這兩個標簽是我自定義的,便于大家理解names: ["zhiyong18"]name: ["zhiyong"]# 靜態配置,需要手動指定監控目標static_configs:# 需要監控的目標- targets:# 支持https協議- https://www.jd.com/# 支持http協議,以grafna為例- http://10.0.0.31:3000# 支持http協議和自定義端口,以prometheus的web為例- http://10.0.0.31:9090# 對目標節點進行重新打標簽配置relabel_configs:# 指定源標簽,此處的"__address__"表示內置的標簽,存儲的是被監控目標的IP地址- source_labels: [__address__]# 指定目標標簽,其實就是在"Endpoint"中加了一個target字段(用于指定監控目標),target_label: __param_target# 指定需要執行的動作,默認值為"replace",常用的動作有: replace, keep, and drop。# 但官方支持十幾種動作: https://prometheus.io/docs/prometheus/2.53/configuration/configuration/#relabel_action# 將"__address__"傳遞給target字段。action: replace- source_labels: [__param_target]target_label: instance#target_label: instance2024# 上面的2個配置段也可以改寫成如下的配置喲~# - source_labels: [__address__]#   target_label: instance#   action: replace# - source_labels: [instance]#   target_label: __param_target#   action: replace- target_label: __address__# 指定要替換的值,此處我指定為blackbox exporter的主機地址replacement: 10.0.0.32:9115

無注釋版的配置:(以這個為最終測試)

  - job_name: 'zhiyong18-blackbox-exporter-http'metrics_path: '/probe'params:module: [http_2xx] names: ["zhiyong18"]name: ["zhiyong"]static_configs:- targets:- https://www.jd.com/- http://10.0.0.31:3000# 重寫標簽relabel_configs:- source_labels: [__address__]target_label: __param_targetaction: replace- source_labels: [__param_target]target_label: instance# 向目標發起數據探測- target_label: __address__replacement: 10.0.0.32:9115

03 訪問測試

1.訪問prometheus的WebUI:http://10.0.0.31:9090/targets

在這里插入圖片描述

2.訪問blackbox exporter的WebUI:http://10.0.0.32:9115/

在這里插入圖片描述

3.grafana展示數據,這2個模版ID可以參考

7587
13659

在這里插入圖片描述

監控到了網站的指標,ssl證書過期時間,流量,狀態碼…

2.3 基于ICMP監控主機存活

1.修改Prometheus配置文件增加ICMP采集任務

  - job_name: 'zhiyong18-blackbox-exporter-icmp'metrics_path: /probeparams:# 如果不指定模塊,則默認類型為"http_2xx"module: [icmp]static_configs:- targets:- 10.0.0.41- 10.0.0.42- 10.0.0.66relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]# 如果instance不修改,則instance和"__address__"的值相同target_label: instance- target_label: __address__replacement: 10.0.0.32:9115

2.查看 prometheus 的targets

在這里插入圖片描述

3.訪問 blackbox 的頁面

在這里插入圖片描述

4.dashboard查看

要使用13659模版,基于"zhiyong18-blackbox-exporter-icmp"標簽進行過濾。

在這里插入圖片描述

2.4 監控TCP端口存活

1.修改配置

	1 修改Prometheus配置文件
[root@prometheus-server31 ~]# vim /zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml ...
scrape_configs:...- job_name: 'zhiyong18-blackox-exporter-tcp'metrics_path: /probeparams:module: [tcp_connect]static_configs:- targets:- 10.0.0.41:80- 10.0.0.42:22- 10.0.0.31:9090relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 10.0.0.32:9115

2.訪問prometheus

在這里插入圖片描述

3.使用grafana查看數據
基于"zhiyong18-blackbox-exporter-tcp"標簽進行過濾。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

3 prometheus擴展

3.1 遠端存儲VictoriaMetrics

VictoriaMetrics是一個快速、經濟高效且可擴展的監控解決方案和時間序列數據庫。如果數據全部存儲在prometheus一個節點上有單點的風險,有必要使用一個分布式的高可用的外置存儲。

官網:https://victoriametrics.com/

官方文檔:https://docs.victoriametrics.com/

GitHub地址:https://github.com/VictoriaMetrics/VictoriaMetrics

部署文檔:https://docs.victoriametrics.com/quick-start/

集群部署參考 (非官方)

01 安裝VictoriaMetrics

prometheus-server 10.0.0.32 進行單點安裝為例

1 下載軟件
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.93.16/victoria-metrics-linux-amd64-v1.93.16.tar.gz2 解壓軟件包 
tar xf victoria-metrics-linux-amd64-v1.93.16.tar.gz -C /usr/local/bin/3 編寫啟動腳本
cat > /etc/systemd/system/victoria-metrics.service <<'EOF'
[Unit]
Description=zhiyong18 Linux VictoriaMetrics Server
Documentation=https://docs.victoriametrics.com/
After=network.target[Service]
ExecStart=/usr/local/bin/victoria-metrics-prod  \-httpListenAddr=0.0.0.0:8428 \-storageDataPath=/zhiyong18/data/victoria-metrics \-retentionPeriod=6[Install]
WantedBy=multi-user.target
EOF4 重啟服務
systemctl daemon-reload
systemctl enable --now victoria-metrics.service
systemctl status victoria-metrics5 檢查端口是否存活ss -ntl | grep 8428
LISTEN 0      4096         0.0.0.0:8428      0.0.0.0:*          6 查看webUI
http://10.0.0.32:8428/

在這里插入圖片描述

02 使用VictoriaMetrics

1.修改prometheus-server 31 的配置文件:vim /zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml

...
# 在頂級字段中配置VictoriaMetrics地址,注意不要放到通用字段下
remote_write:
- url: http://10.0.0.32:8428/api/v1/write

2.重新加載prometheus的配置

systemctl stop prometheus-server/zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus \
--config.file=/zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml

03 配置grafana新數據源

1.由于數據源發生了存儲到了 VictoriaMetrics ,所以grafana要添加新的數據源,否則查不到

在這里插入圖片描述

2.導入儀表盤(1860)的時候要指定新的數據源

在這里插入圖片描述

3.2 自定義exporter(python案例)

01 使用python自定義exporter

1.在prometheus-server31節點安裝 pip3

apt update
apt install -y python3-pip# 創建一個虛擬用戶,但是有家目錄
useradd -m -s /bin/bash python

2.切換用戶為python做如下操作:

3 修改配置文件(可選)
su - python
vim .bashrc 
...
# 取消下面一行的注釋,添加顏色顯示
force_color_prompt=yes4 pip配置加速
mkdir ~/.pip; vim ~/.pip/pip.conf
# 注釋掉以前的,添加阿里源
# [global]
# index-url=https://pypi.tuna.tsinghua.edu.cn/simple
# [install]
# trusted-host=pypi.douban.com
[global]
index-url=https://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com5 安裝實際環境中相關模塊庫
pip3 install flask prometheus_client
pip3 list6 創建代碼目錄
mkdir code7 編寫python代碼
cd code
cat > flask_metric.py <<'EOF'
#!/usr/bin/python3from prometheus_client import start_http_server,Counter, Summary
from flask import Flask, jsonify
from wsgiref.simple_server import make_server
import timeapp = Flask(__name__)# Create a metric to track time spent and requests made
REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
COUNTER_TIME  = Counter("request_count", "Total request count of the host")@app.route("/apps")
@REQUEST_TIME.time()
def requests_count():COUNTER_TIME.inc()return jsonify({"office": "wenzy18@qq.com"},{"auther":"Wen Zhiyong"})if __name__ == "__main__":start_http_server(8000)httpd = make_server( '0.0.0.0', 8001, app )httpd.serve_forever()
EOF8 啟動python程序
python3 flask_metric.py # 因為沒有客戶端訪問,所以沒有任何輸出

3.客戶端測試,使用任意一個節點均可

cat > zhiyong18_curl_metrics.sh <<'EOF'
#!/bin/bashURL=http://10.0.0.31:8001/appswhile true;docurl_num=$(( $RANDOM%50+1 ))sleep_num=$(( $RANDOM%5+1 ))for c_num in `seq $curl_num`;docurl -s $URL &> /dev/nulldonesleep $sleep_num
done
EOF# 回到之前的python執行窗口,可以看到以下輸出
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55
10.0.0.31 - - [14/Dec/2024 22:33:28] "GET /apps HTTP/1.1" 200 55

4.python腳本 flask_metric.py 是一個簡單的web服務器,所以可以訪問,并且能打開

在這里插入圖片描述

02 采集exporter數據

1.修改prometheus配置 vim /zhiyong18/softwares/prometheus-2.53.2.linux-amd64/prometheus.yml ,添加任務

  - job_name: "wzy python 自定義exporter"static_configs:- targets:- 10.0.0.31:8000

2.在 http://10.0.0.31:9090/targets 可以看到這條指標

在這里插入圖片描述

3.執行搜索,http://10.0.0.31:9090/

request_count_total

4.該指標可以自定義畫圖 grafana ,和 PQL 查詢一樣

# apps請求總數
request_count_total# 每分鐘請求數量曲線QPS
increase(request_count_total{job="wzy python 自定義exporter"}[1m])#每分鐘請求量變化率曲線 
irate(request_count_total{job="wzy python 自定義exporter"}[1m])# 每分鐘請求處理平均耗時
request_processing_seconds_sum{job="wzy python 自定義exporter"} / request_processing_seconds_count{job=""}
me: "wzy python 自定義exporter"static_configs:- targets:- 10.0.0.31:8000

2.在 http://10.0.0.31:9090/targets 可以看到這條指標

[外鏈圖片轉存中…(img-Z4jtR4iO-1742134880458)]

3.執行搜索,http://10.0.0.31:9090/

request_count_total

4.該指標可以自定義畫圖 grafana ,和 PQL 查詢一樣

# apps請求總數
request_count_total# 每分鐘請求數量曲線QPS
increase(request_count_total{job="wzy python 自定義exporter"}[1m])#每分鐘請求量變化率曲線 
irate(request_count_total{job="wzy python 自定義exporter"}[1m])# 每分鐘請求處理平均耗時
request_processing_seconds_sum{job="wzy python 自定義exporter"} / request_processing_seconds_count{job=""}

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

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

相關文章

feign配置重試次數不生效

一、問題產生 自定義重試次數&#xff0c;實現如下 ConditionalOnProperty(prefix "feign.client", name "enable", havingValue "true") Configuration public class FeignConfig {Beanpublic FeignInterceptor feignInterceptor() {retur…

Dify使用部署與應用實踐

最近在研究AI Agent&#xff0c;發現大家都在用Dify&#xff0c;但Dify部署起來總是面臨各種問題&#xff0c;而且我在部署和應用測試過程中也都遇到了&#xff0c;因此記錄如下&#xff0c;供大家參考。Dify總體來說比較靈活&#xff0c;擴展性比較強&#xff0c;適合基于它做…

二叉樹的統一迭代法 標記法

我們以中序遍歷為例&#xff0c;在二叉樹&#xff1a;聽說遞歸能做的&#xff0c;棧也能做&#xff01; (opens new window)中提到說使用棧的話&#xff0c;無法同時解決訪問節點&#xff08;遍歷節點&#xff09;和處理節點&#xff08;將元素放進結果集&#xff09;不一致的情…

BaseActivity 和 BaseFragment 的現代化架構:ViewBinding 與 ViewModel 的深度整合

BaseActivity 和 BaseFragment 實現&#xff0c;集成了 View Binding&#xff0c;并增加了對 Lifecycle 和 ViewModel 的支持&#xff0c;同時進一步簡化了代碼結構&#xff0c;使其更易用、更靈活。 啟用 View Binding 確保在 build.gradle 中啟用了 View Binding&#xff1a…

從零開始學習機器人---如何高效學習機械原理

如何高效學習機械原理 1. 理解課程的核心概念2. 結合圖形和模型學習3. 掌握公式和計算方法4. 理論與實踐相結合5. 總結和復習6. 保持好奇心和探索精神 總結 機械原理是一門理論性和實踐性都很強的課程&#xff0c;涉及到機械系統的運動、動力傳遞、機構設計等內容。快速學習機械…

剖析sentinel的限流和熔斷

sentinel的限流和熔斷 前言源碼分析滑動窗口源碼限流源碼熔斷源碼 完結撒花&#xff0c;sentinel源碼還是挺簡單的&#xff0c;如有需要收藏的看官&#xff0c;順便也用發財的小手點點贊哈&#xff0c;如有錯漏&#xff0c;也歡迎各位在評論區評論&#xff01; 前言 平時發起一…

硬盤分區誤刪后的數據救贖

一、硬盤分區誤刪的概述 硬盤分區誤刪&#xff0c;是許多電腦用戶在使用過程中可能遭遇的棘手問題。分區&#xff0c;作為硬盤上存儲數據的邏輯單元&#xff0c;一旦被誤刪除&#xff0c;不僅會導致該分區內的所有數據瞬間消失&#xff0c;還可能影響到整個硬盤的存儲結構和數…

代碼隨想錄算法訓練營第三十五天(20250303) |01背包問題 二維,01背包問題 一維,416. 分割等和子集 -[補卡20250316]

01背包問題 二維 鏈接 遍歷物品沒有大小順序要求重點是模擬&#xff0c;推導出遞推公式 #include <iostream> #include <vector>int main(){int m, n;std::cin>>m>>n;std::vector<int> weight(m,0),value(m,0);for(int i{0}; i<m; i){std:…

老牌軟件,方便處理圖片,量大管飽。

今天介紹的圖片查看器名字是&#xff1a;FastStone Image Viewer&#xff0c;是一款可查看、編輯、批量重命名、批量轉換的圖片查看軟件。文末有分享鏈接。 軟件以資源管理器的方式管理你電腦里的圖片&#xff0c;點擊左側可選擇文件夾&#xff0c;右邊可預覽圖片。 軟妹用得最…

【數據庫相關】mysql數據庫巡檢

mysql數據庫巡檢 巡檢步驟**一、基礎狀態檢查****二、服務器資源監控****CPU使用****內存使用****磁盤I/O****網絡流量** **三、數據庫內部健康度****全局狀態****慢查詢監控****鎖與并發** **四、存儲引擎健康****InnoDB引擎****MyISAM引擎** **五、日志與備份****六、安全與權…

Python進階編程總結

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;…

Redis復制(replica)主從模式

Redis主從復制 Redis 的復制&#xff08;replication&#xff09;功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器的復制品&#xff0c;其中被復制的服務器為主服務器&#xff08;master&#xff09;&#xff0c;而通過復制創建出來的服務器復制品則為從服務器&#…

Adobe Premiere Pro2023配置要求

Windows 系統 最低配置 處理器&#xff1a;Intel 第六代或更新版本的 CPU&#xff0c;或 AMD Ryzen? 1000 系列或更新版本的 CPU&#xff0c;需要支持 Advanced Vector Extensions 2&#xff08;AVX2&#xff09;。操作系統&#xff1a;Windows 10&#xff08;64 位&#xff…

【Kubernets】Deployment 和 StatefulSet 有什么區別?什么時候用 StatefulSet?

Deployment 和 StatefulSet 的區別 在 Kubernetes 中&#xff0c;Deployment 和 StatefulSet 都用于管理 Pod&#xff0c;但它們適用于不同的場景。 1. Deployment&#xff1a;管理無狀態應用 特點&#xff1a; 無狀態&#xff1a;Pod 之間相互獨立&#xff0c;不需要保持順…

R語言零基礎系列教程-03-RStudio界面介紹與關鍵設置

代碼、講義、軟件回復【R語言03】獲取。 設置位置: 菜單欄 - Tools - Blobal Options 設置 通用設置 設置面板左側General選項 版本選擇: 一般只用一個版本即可 默認工作目錄設置: 你希望RStudio打開時是基于哪個目錄進行工作可以不設置, 因為腳本一般都是放置在特定項目路…

車載以太網測試-9【網絡層】-子網劃分的子網掩碼VLAN

目錄 1 摘要2 子網劃分2.1 子網掩碼2.2 VLAN&#xff08;虛擬局域網&#xff09;2.2.1 IEEE 802.1Q VLAN標簽2.2.1.1 VLAN標簽的結構2.2.1.2 VLAN標簽的插入2.2.1.3 VLAN標簽的處理2.1.2.4 PVID&#xff08;Port VLAN Identifier&#xff09; 和 VID&#xff08;VLAN Identifie…

微信小程序刷題邏輯實現:技術揭秘與實踐分享

頁面展示&#xff1a; 概述 在當今數字化學習的浪潮中&#xff0c;微信小程序以其便捷性和實用性&#xff0c;成為了眾多學習者刷題備考的得力工具。今天&#xff0c;我們就來深入剖析一個微信小程序刷題功能的實現邏輯&#xff0c;從代碼層面揭開其神秘面紗。 小程序界面布局…

JVM--垃圾回收

垃圾回收的概念 垃圾回收主要針對的是堆中的對象&#xff0c;堆是一個共享的區域&#xff0c;創建的對象和數組都放在這個位置。但是我們不能一直的創建對象&#xff0c;也不是所有的對象能一直存放&#xff0c;如果不進行垃圾回收&#xff0c;內存遲早會耗盡&#xff0c;及時…

【教程】繼承中的訪問控制 C++

目錄 簡介public&#xff0c;protected 和 private繼承中的 public&#xff0c;protected 和 private示例 簡介 在 C 中派生類可以通過 public&#xff0c;protected 和 private 三種修飾符決定基類成員在派生類中的訪問級別 public&#xff0c;protected 和 private 公有成…

【2025】基于python+django的駕校招生培訓管理系統(源碼、萬字文檔、圖文修改、調試答疑)

課題功能結構圖如下&#xff1a; 駕校招生培訓管理系統設計 一、課題背景 隨著機動車保有量的不斷增加&#xff0c;人們對駕駛技能的需求也日益增長。駕校作為駕駛培訓的主要機構&#xff0c;面臨著激烈的市場競爭和學員需求多樣化等挑戰。傳統的駕校管理模式往往依賴于人工操作…