16-docker的容器監控方案-prometheus實戰篇

文章目錄

  • 一.前置知識
    • 1.監控與報警
    • 2.監控系統的設計
    • 3.監控系統的分類
  • 二、prometheus概述
    • 1.什么是prometheus
    • 2.prometheus的歷史
    • 3.為什么要學習prometheus
    • 4.prometheus的使用場景
    • 5.prometheus的宏觀架構圖
    • 6.prometheus軟件下載地址
  • 三、部署prometheus server監控軟件
    • 1.同步集群時間
    • 2.下載prometheus軟件包
    • 3.安裝prometheus軟件包
    • 4.查看prometheus程序的幫助信息
    • 5.前臺啟動prometheus服務
    • 6.后臺啟動prometheus服務
    • 7.prometheus的配置文件說明
    • 8. 練習
  • 四、部署node exporter監控軟件
  • 五、通過容器啟動node_exporter和cadvisor
  • 六、添加靜態配置(static_configs)實戰案例
  • 七、動態發現添加exporter實戰案例
  • 八、prometheus監控數據格式概述
  • 九、查看Linux相關的key
  • 十、prometheus中常用的函數
  • 十一、課堂練習
  • 十二、pushgateway的部署
  • 十三、監控TCP狀態腳本案例
  • 十四、監控容器運行時間腳本案例
  • 十五、prometheus微觀架構(了解即可)
  • 十六、企業級監控案例
  • 十七、alertmanager實戰案例
  • 十八、可能會遇到的問題
  • 私信詢問
  • 詳細可以私信詢問Kubernetes進階篇day6,day07,day08,day09,day10,day11,day12,

一.前置知識

1.監控與報警

	很多小伙伴總是把監控和報警混在混在一起說,其實這是兩個概念,我們需要單獨理解。監控:監控是把行為表現展示出來,用來觀察的。報警:報警則是當監控獲取的數據發生異常并且到達了某個臨界點的時候,采用各種報警媒介來通知用戶(比如項目負責人,運維人員,公司領導等)。

2.監控系統的設計

	如果監控系統設計的不好,那么在實際工作中可能會頻繁出問題。監控系統的設計部分應該包括但不限于以下幾個參考點:(1)評估系統的業務流程,業務種類和架構系統各個企業的產品不同,業務方向不同,程序代碼不同,系統架構更不同。因此對于各個地方的細節都需要有一定程度的認知,才可以開起設計的源頭。(2)分類出所需的監控系種類:一般可分為業務級別監控,系統級別監控,網絡監控,程序代碼監控,日志監控,用戶行為分析監控和其它種類監控。(3)監控技術的方案選擇各種監控軟件層出不窮,開源的,商業的,自行開發的,幾百種可選方案。運維架構師憑借一些因素開始選材,針對企業的結構特點,大小,種類,人員多少等等選擇合適的技術方案。(4)監控的人員安排運維團隊的任務劃分,責任到人,分塊進行。開發團隊的配合人員選取,很多監控涉及的工作,都需要跟開發人員配合才開源進行。(5)其它

3.監控系統的分類

	接下來我們對監控系統的分類做簡單的概要說明,讓大家對這些數據有一個大致的印象。業務監控:可以包含用戶訪問QPS,DAU日活,訪問狀態(可以基于返回狀態碼),業務接口(注冊,登錄,聊天,上傳,留言,短信,搜索等),產品轉換率,充值額度,用戶投訴等等這些宏觀的概念(公司上層領導比較關心,因此我們運維人員應該將其放在第一位)。系統監控:主要是跟操作系統相關的基本監控項,比如CPU,內存,硬盤,IO,TCP鏈接,流量等等。網絡監控:對網絡狀態的監控(交換機,路由器,防火墻,VPN等),互聯網公司必不可少,但是很多時候又被忽略,例如:IDC機房內網之間,外網之間的丟包率,延遲等等。日志監控:監控中的重頭戲,往往單獨設計和搭建,全部種類的日志都有需要采集,常見的解決方案如Elstic stack(有免費版),Splunk(付費版)等。程序監控:一般需要和開發人員配合,程序中嵌入各種接口,直接獲取數據或者特質的日志格式。

二、prometheus概述

1.什么是prometheus

Prometheus是一個開源系統監控和警報工具包,最初是在SoundCloud上構建的。自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發者和用戶社區。Prometheus現在是一個獨立的開源項目,獨立于任何公司進行維護。為了強調這一點,并澄清項目的治理結構,Prometheus于2016年加入云原生計算基金會,作為繼Kubernetes之后的第二個托管項目。我們可以簡單的理解Prometheus是一個監控系統同時也是一個時間序列數據庫。推薦閱讀:官網地址:https://prometheus.io官方文檔:https://prometheus.io/docs/introduction/overview/GitHub地址:https://github.com/prometheus

2.prometheus的歷史

Prometheus受啟發于Google的Brogmon監控系統(相似的Kubernetes是從Google的Brog系統演變而來),從2012年開始由前Google工程師在Soundcloud以開源軟件的形式進行研發,并且于2015年早期對外發布早期版本。2016年5月繼Kubernetes之后成為第二個正式加入CNCF基金會的項目,同年6月正式發布1.0版本。2017年底發布了基于全新存儲層的2.0版本,能更好地與容器平臺、云平臺配合。Prometheus作為新一代的云原生監控系統,目前已經有超過650+位貢獻者參與到Prometheus的研發工作上,并且超過120+項的第三方集成。推薦閱讀:https://www.prometheus.wang/quickstart/why-monitor.html

在這里插入圖片描述

3.為什么要學習prometheus

可能你在網上看到了有網友使用zabbix監控docker和kubernetes的解決方案,并行之有效,那咱們為啥還要學習prometheus這個監控系統呢?Prometheus是一個開源的完整監控解決方案,其對傳統監控系統的測試和告警模型進行了徹底的顛覆,形成了基于中央化的規則計算、統一分析和告警的新模型。 相比于傳統監控系統Prometheus具有以下優點:(1)易于管理Prometheus核心部分只有一個單獨的二進制文件,不存在任何的第三方依賴(數據庫,緩存等等)。唯一需要的就是本地磁盤,因此不會有潛在級聯故障的風險。Prometheus基于Pull模型的架構方式,可以在任何地方(本地電腦,開發環境,測試環境)搭建我們的監控系統。對于一些復雜的情況,還可以使用Prometheus服務發現(Service Discovery)的能力動態管理監控目標。(2)監控服務的內部運行狀態Pometheus鼓勵用戶監控服務的內部狀態,基于Prometheus豐富的Client庫,用戶可以輕松的在應用程序中添加對Prometheus的支持,從而讓用戶可以獲取服務和應用內部真正的運行狀態。(3)時間序列(time series)所謂的時間序列(time series)指的是一系列有序的數據,通常是指等時間間隔的采樣數據,說白了就是分為X和Y軸,其中X軸是按照時間間隔進行推進,而Y軸是有序的數字。(4)強大的數據模型所有采集的監控數據均以指標(metric)的形式保存在內置的時間序列數據庫當中(TSDB)。所有的樣本除了基本的指標名稱以外,還包含一組用于描述該樣本特征的標簽。(5)強大的查詢語言PromQLPrometheus內置了一個強大的數據查詢語言PromQL。 通過PromQL可以實現對監控數據的查詢、聚合。同時PromQL也被應用于數據可視化(如Grafana)以及告警當中。通過PromQL可以輕松回答類似于以下問題:1>.在過去一段時間中95%應用延遲時間的分布范圍?2>.預測在4小時后,磁盤空間占用大致會是什么情況?4>.CPU占用率前5位的服務有哪些?(過濾)(6)高效對于監控系統而言,大量的監控任務必然導致有大量的數據產生。而Prometheus可以高效地處理這些數據,對于單一Prometheus Server實例而言它可以處理:數以百萬的監控指標和每秒處理數十萬的數據點。而zabbix對此相對來說就有點吃力了;(7)可擴展(支持集群)Prometheus是如此簡單,因此你可以在每個數據中心、每個團隊運行獨立的Prometheus Sevrer。Prometheus對于聯邦集群的支持,可以讓多個Prometheus實例產生一個邏輯集群,當單實例Prometheus Server處理的任務量過大時,通過使用功能分區(sharding)+聯邦集群(federation)可以對其進行擴展。(8)易于集成使用Prometheus可以快速搭建監控服務,并且可以非常方便地在應用程序中進行集成。目前支持: "Java","JMX","Python","Go","Ruby",".Net", "Node.js"等等語言的客戶端SDK,基于這些SDK可以快速讓應用程序納入到Prometheus的監控當中,或者開發自己的監控數據收集程序。同時這些客戶端收集的監控數據,不僅僅支持Prometheus,還能支持Graphite這些其他的監控工具。同時Prometheus還支持與其他的監控系統進行集成:"Graphite", "Statsd", "Collected", "Scollector", "muini", "Nagios"等。Prometheus社區還提供了大量第三方實現的監控數據采集支持:"JMX", "CloudWatch", "EC2","MySQL","PostgresSQL", "Haskell", "Bash", "SNMP", "Consul", "Haproxy", "Mesos", "Bind", "CouchDB", "Django", "Memcached", "RabbitMQ", "Redis", "RethinkDB", "Rsyslog"等等。(9)可視化Prometheus Server中自帶了一個Prometheus UI,通過這個UI可以方便地直接對數據進行查詢,并且支持直接以圖形化的形式展示數據。同時Prometheus還提供了一個獨立的基于Ruby On Rails的Dashboard解決方案Promdash。最新的Grafana可視化工具也已經提供了完整的Prometheus支持,基于Grafana可以創建更加精美的監控圖標。基于Prometheus提供的API還可以實現自己的監控可視化UI。(10)開放性通常來說當我們需要監控一個應用程序時,一般需要該應用程序提供對相應監控系統協議的支持。因此應用程序會與所選擇的監控系統進行綁定。為了減少這種綁定所帶來的限制。對于決策者而言要么你就直接在應用中集成該監控系統的支持,要么就在外部創建單獨的服務來適配不同的監控系統。而對于Prometheus來說,使用Prometheus的client library的輸出格式不止支持Prometheus的格式化數據,也可以輸出支持其它監控系統的格式化數據,比如Graphite。因此你甚至可以在不使用Prometheus的情況下,采用Prometheus的client library來讓你的應用程序支持監控數據采集。Prometheus除了上述說到的優點,其實也有以下不足之處:(1)學習成本太大,尤其是其獨有的數學命令行,學習起來很吃力,而且全是英文文檔;(2)對磁盤資源也是耗費的較大,這個具體要看監控的集群量和監控項的多少和保存時間的長短;(3)有網友稱在1.x版本中可能會發生數據丟失的風險,因此生產環境中建議大家使用較新的2.x發行版;溫馨提示:(1)zabbix采用的是MySQL數據庫,Prometheus采用的是時間序列數據庫,由于監控數據并不需要更新,監控數據會存在大量的寫入和查詢,其底層實現會更高,具體細節原理可自行查閱資料,Prometheus是支持外部數據庫存儲的,但我覺得完全沒有必要在生產環境中這樣做;(2)如果上述10點還不足以打動你學習Prometheus,那我再說一點比較現實的,國內目前很多中小企業都在使用Prometheus監控docker,Kubernetes,學習它有助于咱們找工作。

4.prometheus的使用場景

適用的場景(When does it fit?)Prometheus適用于記錄任何純數字時間序列。它既適合以機器為中心的監控,也適合監控高度動態的面向服務的架構。在微服務的世界中,它對多維數據收集和查詢的支持是一個特殊的優勢。Prometheus是為可靠性而設計的,它是您在中斷期間訪問的系統,讓您能夠快速診斷問題。每個 Prometheus服務器都是獨立的,不依賴于網絡存儲或其他遠程服務。當基礎架構的其他部分損壞時,您可以依賴它,并且您無需設置大量基礎架構即可使用它。(請記住該點,這是優點也是缺點喲~)不適用的場景(When does it not fit?)如上所示,Prometheus重視可靠性。即使在出現故障的情況下,您也可以隨時查看有關系統的可用統計信息。如果您需要100%的準確性,例如按請求計費,Prometheus不是一個好的選擇,因為收集的數據可能不夠詳細和完整。在這種情況下,您最好使用其他系統來收集和分析計費數據,并使用Prometheus進行其余的監控。推薦閱讀:https://prometheus.io/docs/introduction/overview/#when-does-it-fithttps://prometheus.io/docs/introduction/overview/#when-does-it-not-fit

5.prometheus的宏觀架構圖

如下圖所示,展示了普羅米修斯(prometheus)的建筑和它的一些生態系統組成部分。(1)Prometheus server:prometheus的服務端,負責收集指標和存儲時間序列數據,并提供查詢接口。(2)exporters:如果想要監控,前提是能獲取被監控端數據,并且這個數據格式必須遵循Prometheus數據模型,這樣才能識別和采集,一般使用exporter數據采集器(類似于zabbix_agent端)提供監控指標數據。exporter數據采集器,除了官方和GitHub提供的常用組件exporter外,我們也可以為自己自研的產品定制exporters組件喲。(3)Pushgateway:短期存儲指標數據,主要用于臨時性的任務。比如備份數據庫任務監控等。本質上我們可以理解為Pushgateway可以幫咱們監控自定義的監控項,這需要咱們自己編寫腳本來推送到Pushgateway端,而后由Prometheus server從Pushgateway去pull監控數據。換句話說,請不要被官方的架構圖蒙騙了,咱們完全可以基于Pushgateway來監控咱們自定義的監控項喲,這些監控項完全可以是長期運行的呢!(4)Service discovery:服務發現,例如我們可以配置動態的服務監控,無需重啟Prometheus server實例就能實現動態監控。(5)Alertmanager:支持報警功能,比如可以支持基于郵件,微信,釘釘報警。據網友反饋該組件在生產環境中存在缺陷,因此我們可以考慮使用Grafana來展示并實現報警功能。(6)Prometheus Web UIPrometheus比較簡單的Web控制臺,通常我們可以使用grafana來集成做更漂亮的Web展示喲。溫馨提示:大多數Prometheus組件都是用Go編寫的,這使得它們易于構建和部署為靜態二進制文件

在這里插入圖片描述

6.prometheus軟件下載地址

官方的下載地址:https://prometheus.io/download/推薦閱讀:https://prometheus.io/docs/instrumenting/exporters/https://github.com/danielqsj/kafka_exporterhttps://github.com/prometheus-community/elasticsearch_exporterhttps://github.com/oliver006/redis_exporterhttps://github.com/prometheus/mysqld_exporterhttps://github.com/nlighten/tomcat_exporterhttps://github.com/nginxinc/nginx-prometheus-exporterhttps://github.com/dabealu/zookeeper-exporter...

在這里插入圖片描述

三、部署prometheus server監控軟件

1.同步集群時間

我們在安裝prometheus server監控軟件之前,需要同步集群時間。由于prometheus是一個時間序列數據庫,因此其對系統時間的準確性要求很高,必須保證本機時間實時同步。關于集群時間同步,此處我就不浪費口舌了,在以前的章節中我們已經介紹過了,請自行實現。僅供參考:yum -y install ntpdate && ntpdate ntp1.aliyun.com

2.下載prometheus軟件包

如下圖所示,我們在下載軟件之前,可以先選擇prometheus將要安裝的操作系統及其CPU架構.推薦閱讀:https://prometheus.io/download/

在這里插入圖片描述

3.安裝prometheus軟件包

[root@docker01 /buffes/softwares]# tar xf prometheus-2.28.0.linux-amd64.tar.gz -C /buffes/softwares/
[root@docker01 /buffes/softwares]# 
[root@docker01 /buffes/softwares]# cd /oldboy/softwares/
[root@docker01 /buffes/softwares]# 
[root@docker01 /buffes/softwares]# 
[root@docker01 /buffes/softwares]# ln -sv prometheus-2.28.0.linux-amd64 prometheus
"prometheus" -> "prometheus-2.28.0.linux-amd64"
[root@docker01 /buffes/softwares]# 溫馨提示:建議大家創建符號鏈接,不僅僅可以輸入更短的路徑,而是方便版本管理。

4.查看prometheus程序的幫助信息

[root@docker01 /buffes/softwares/prometheus]# ./prometheus  --help溫馨提示:啟動時若不指定配置文件,則會使用其默認的配置參數喲:"--config.file"的默認值為"prometheus.yml""--web.listen-address"的默認值為"0.0.0.0:9090""--web.max-connections"的默認值為"512

5.前臺啟動prometheus服務

[root@docker01 /buffes/softwares/prometheus]# ./prometheus 生產環境中啟動參數參考案例:--web.listen-address="0.0.0.0:9090"--web.read-timeout=5m請求連接最大的等待時間,防止太多的空閑鏈接占用資源。--web.max-connections=10最大網絡連接數。--storage.tsdb.path="data/"指定本地存儲數據的路徑,這個參數很重要,請將指定的路徑有足夠的存儲空間。不要隨便放在一個目錄,比如某些開發隨意將數據放在根目錄下,導致根目錄存儲容量100%,從而見解導致服務(我在生產環境中就有一個開發犯過這樣的錯誤,導致tomcat無法訪問)無法訪問,甚至連sshd服務也無法對外提供服務。--storage.tsdb.retention=15dprometheus開始采集監控數據后,會存在內存和硬盤中。對于保留期限的設置很重要,太長的話硬盤和內存吃不消,太短的話要查看歷史數據就沒有了,企業中設置15天(保留最近2個星期的數據)比較合適。--query.timeout=2m 可以防止用戶查詢語句出現了慢查詢超過2分鐘后會自動中止PQL的執行喲~--query.max-concurrency=20防止太多的用戶并發查詢。溫馨提示:(1)如下圖所示,我們啟動時可以使用默認配置參數,啟動服務時會阻塞當前終端。(2)如果想要后臺啟動可以使用nohup工具實現后臺啟動;

在這里插入圖片描述

6.后臺啟動prometheus服務

[root@docker01 ~]# vim /etc/profile.d/prometheus.sh
[root@docker01 ~]# 
[root@docker01 ~]# cat /etc/profile.d/prometheus.sh
#!/bin/bashexport PROMETHEUS_HOME=/oldboy/softwares/prometheus
export PATH=$PATH:$PROMETHEUS_HOME
[root@docker01 ~]# 
[root@docker01 ~]#  source /etc/profile.d/prometheus.sh
[root@docker01 ~]# 
[root@docker01 ~]#  nohup prometheus --config.file="$PROMETHEUS_HOME/prometheus.yml"  &>>/var/log/buffes_prometheus.log &
[1] 2728
[root@docker01 ~]# 除了使用nohup工具之外,我們也可以使用"screen"工具將其放在后臺管理喲:(1)screen -ls查看放在后臺的進程。存在"Attached"和"Detached"兩種進程。(2)screen開啟一個終端,可以運行一些命令,比如ping,然后按"ctrl + a + d"直接將當前終端放在后臺。"crtl + d"則表示直接退出當前終端。(3)screen -r ID進入到某個終端ID,建議進入到標記有"Detached"的終端喲~			溫馨提示:當screen管理幾十個后臺任務時,可能就有點可讀性較差了,此時我們也可以使用daemonize將其放入后臺進行管理

7.prometheus的配置文件說明

global:scrape_interval: 設置prometheus采集數據的間隔時間,默認是1分鐘。通常該值設置15秒就夠用了。學習環境中我們可以將其設置為5秒。如果設置的間隔時間過短,比如設置為1秒,可能會造成更多的存儲空間喲。evaluation_interval: 監控數據規則的評估評論,默認值為每1分鐘。通常該值設置每15秒評估一次規則就夠用了。舉個例子: 假如我們定義的rule(規則)是當內存使用率大于70%就發出報警,那么prometheus會默認15秒來執行這個規則并檢查內存的情況。# Alertmanager configuration(先戰略性忽略)
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093rule_files:# - "first_rules.yml"# - "second_rules.yml"# 抓取數據的配置 
scrape_configs:job_name: 定義任務的名稱。static_configs:定義靜態的配置,比如使用targets指定要監控的對象。file_sd_configs:定義基于文件的動態配置,比如使用files指定文件路徑,使用refresh_interval指定監控的間隔時間。溫馨提示:(1)Alertmanager configuration是用來報警的,我們會有專門的章節來講解它,此處先忽略;(2)Alertmanager也可以被其它插件取代,比如基于grafana實現監控報警;

8. 練習

	默認情況下是無賬號密碼驗證的,我們可以基于nginx實現反向代理,而后設置相應的賬號密碼。該步驟過于簡單,請同學們使用5分鐘搞定,課件休息10分鐘。

四、部署node exporter監控軟件

五、通過容器啟動node_exporter和cadvisor

六、添加靜態配置(static_configs)實戰案例

七、動態發現添加exporter實戰案例

八、prometheus監控數據格式概述

九、查看Linux相關的key

十、prometheus中常用的函數

十一、課堂練習

十二、pushgateway的部署

十三、監控TCP狀態腳本案例

十四、監控容器運行時間腳本案例

十五、prometheus微觀架構(了解即可)

十六、企業級監控案例

十七、alertmanager實戰案例

十八、可能會遇到的問題






私信詢問

詳細可以私信詢問Kubernetes進階篇day6,day07,day08,day09,day10,day11,day12,

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

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

相關文章

集成電路學習:什么是Image Processing圖像處理

Image Processing,即圖像處理,是計算機視覺、人工智能、多媒體等領域的重要基礎。它利用計算機對圖像進行分析、加工和處理,以達到預期目的的技術。以下是對圖像處理的詳細解析: 一、定義與分類 定義: 圖像處理是指用計算機對圖像進行分析,以達到所需結果的技術,又稱…

基于Android的隨身小管家APP的設計與實現/基于SSM框架的財務管理系統/android Studio/java/原生開發

基于Android的隨身小管家APP的設計與實現/基于SSM框架/android Studio/java/原生開發

Web 開發 16

1 在 JavaScript(包括 JSX)中,函數體的寫法和返回值處理在 JavaScript(包括 JSX)中,函數體的寫法和返回值處理確實有一些簡潔的語法規則,尤其是在箭頭函數中。這些規則常常讓人混淆,…

超高車輛碰撞預警系統如何幫助提升城市立交隧道安全?

超高車輛帶來的安全隱患立交橋和隧道的設計通常基于常規車輛的高度標準。然而,隨著重型運輸業和超高貨車的增加,很多超高車輛會誤入這些限高區域,造成潛在的安全隱患。超高車輛與立交橋梁或隧道頂蓋發生碰撞時,可能導致結構受損&a…

三種變量類型在局部與全局作用域的區別

一、基本概念作用域(Scope): 全局作用域:定義在所有函數外部的變量或函數,具有文件作用域,生命周期為整個程序運行期間。局部作用域:定義在函數、塊(如 {})或類內部的變量…

InfluxDB 數據遷移工具:跨數據庫同步方案(二)

六、基于 API 的同步方案實戰6.1 API 原理介紹InfluxDB 提供的 HTTP API 是實現數據遷移的重要途徑。通過這個 API,我們可以向 InfluxDB 發送 HTTP 請求,以實現數據的讀取和寫入操作。在數據讀取方面,使用GET請求,通過指定數據庫名…

JVM安全點輪詢匯編函數解析

OpenJDK 17 源碼的實現邏輯,handle_polling_page_exception 函數在方法返回時的調用流程如下:調用流程分析:棧水印檢查觸發跳轉:當線程執行方法返回前的安全點輪詢時(MacroAssembler::safepoint_poll 中 at_returntrue…

Linux怎么查看服務器開放和啟用的端口

在 Linux 系統中,可以通過以下方法查看 服務器開放和啟用的端口。以下是詳細的步驟和工具,適用于不同場景。1. 使用 ss 查看開放的端口ss 是一個現代化工具,用于顯示網絡連接和監聽的端口。1.1 查看正在監聽的端口運行以下命令:ba…

XF 306-2025 阻燃耐火電線電纜檢測

近幾年隨著我國經濟快速的發展,電氣火災呈現高發趨勢,鑒于電線電纜火災的危險性,國家制定了阻燃,耐火電線電纜的標準,為企業,建設方,施工方等的生產,選材提供了指引。XF 306-2025 阻…

【Java|第二十篇】面向對象(十)——枚舉類

目錄 (四)面向對象: 12、枚舉類: (1)概述: (2)枚舉類的定義格式: (3)編譯與反編譯: (4)Enum類…

第二十一天-OLED顯示實驗

一、OLED顯示原理1、OLED名詞解釋OLED可以自發光,無需背光光源。2、正點原子OLED模塊模塊總體概述模塊接口模式選擇MCU與模塊外部連接8080并口讀寫過程OLED顯存因為要進行顯示,所以需要有顯存。顯存容量為128 x 8 byte,一個點用一位表示。SSD…

會議系統核心流程詳解:創建、加入與消息交互

一、系統架構概覽 會議系統采用"主進程線程池進程池"的分層架構,實現高并發與業務隔離: #mermaid-svg-fDJ5Ja5L3rqPkby0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fDJ5Ja5L3r…

Spring 創建 Bean 的 8 種主要方式

Spring(尤其是 Spring Boot)提供了多種方式來讓容器創建和管理 Bean。Component、Configuration Bean、EnableConfigurationProperties 都是常見方式。 下面我為你系統地梳理 Spring 創建 Bean 的所有主要方式,并說明它們的使用場景和區別。…

React 第七十節 Router中matchRoutes的使用詳解及注意事項

前言 matchRoutes 是 React Router v6 提供的一個核心工具函數,主要用于匹配路由配置與當前路徑。它在服務端渲染(SSR)、數據預加載、權限校驗等場景中非常實用。下面詳細解析其用法、注意事項和案例分析: 1、基本用法 import { m…

iSCSI服務配置全指南(含服務器與客戶端)

iSCSI服務配置全指南(含服務器與客戶端)一、iSCSI簡介 1. 概念 互聯網小型計算機系統接口(Internet Small Computer System Interface,簡稱iSCSI)是一種基于TCP/IP的協議,其核心功能是通過IP網絡仿真SCSI高…

堆(Heap):高效的優先級隊列實現

什么是堆?堆是一種特殊的完全二叉樹,滿足以下性質:堆序性:每個節點的值與其子節點滿足特定關系最小堆:父節點 ≤ 子節點(根最小)最大堆:父節點 ≥ 子節點(根最大&#xf…

朝花夕拾(四) --------python中的os庫全指南

目錄 Python os模塊完全指南:從基礎到高階文件操作 1. 引言:為什么需要os模塊? 1.1 os模塊的重要性 1.2 適用場景 1.3 os模塊的"瑞士軍刀"特性 2. os模塊基礎功能 2.1 文件與目錄操作 2.1.1 核心方法介紹 2.1.2 避坑指南 …

uniappx 安卓端本地打包的一些總結

本人之前沒用過android studio,因為有打包到安卓端的需求,所以有了這篇文章。下面一些內容不正常工作,也不報錯,是很煩的,根本不知道是哪里出了問題。比如對應的aar包沒有引入。或者沒有注冊信息。 在實現過程中我遇到…

AUTOSAR進階圖解==>AUTOSAR_SWS_UDPNetworkManagement

AUTOSAR UDP網絡管理詳解 基于AUTOSAR標準的UDP網絡管理模塊架構分析與實現指南目錄 1. 概述2. UDP網絡管理架構 2.1 整體架構圖2.2 架構組件詳解 3. UDP網絡管理狀態機 3.1 狀態機圖3.2 狀態詳解 4. UDP網絡管理操作序列 4.1 序列圖4.2 操作流程詳解 5. UDP網絡管理配置模型 …

AI搜索引擎下的內容優化新范式:GEO的關鍵技術解析

摘要: 生成式AI搜索引擎的崛起,催生了GEO(Generative Engine Optimization)這一新的優化領域。本文將深入剖析GEO背后的關鍵技術,包括深度語義理解、結構化內容生成、以及AI算法的適配性,旨在為品牌在AI時代…