從零開始的云計算生活——第三十三天,關山阻隔,ELK日志分析

目錄

一.故事背景

二、Elasticsearch 全面概述

1、核心定位

2、核心特性

a. 分布式架構

b. 高性能原理

c. 數據模型創新

3、核心技術組件 ?

4、核心應用場景

a. 企業級搜索

b. 可觀測性

c. 安全分析(SIEM)

5、版本演進關鍵特性

6、核心優勢對比

7、性能基準(AWS c5.4xlarge 實測)

8、適用行業

三、Logstash 全面概述

1、Logstash概述

作用

2、Logstash配置文件結構

3、常用插件詳細介紹

輸入插件

過濾插件

輸出插件

4、logstash中的條件判斷

1.條件判斷語句類型

2.條件表達式中的操作符

四、 Elasticsearch安裝與配置

五、 logstash安裝與配置

六、 kibana安裝與配置

七.總結


一.故事背景

在完成各種高可用配置之后,就要開始對Elasticsearch的研究,在安裝過程中發現歐拉的系統沒法直接yum安裝,需要自己編譯安裝,所以換了一個系統來安裝Elasticsearch,elkf分別指的是Elasticsearch+Logstash+Kibana+Filebeat,下面開始分開介紹

二、Elasticsearch 全面概述

1、核心定位

Elasticsearch(ES) 是開源的分布式搜索分析引擎,基于 Apache Lucene 構建,專為處理海量數據設計。核心能力包括:

實時數據分析(毫秒級響應)

全文檢索(支持復雜相關性評分)

結構化/非結構化數據處理

水平擴展性(支持 PB 級數據)

核心定位:解決傳統數據庫在全文檢索復雜聚合實時分析場景下的性能瓶頸

2、核心特性

a. 分布式架構

概念說明
節點(Node)獨立運行實例,角色包括 Data/Master/Ingest/Coordinating
集群(Cluster)多個節點組成的分布式系統
分片(Shard)數據最小單元(Primary Shard + Replica Shard)
索引(Index)邏輯數據容器(類似數據庫的表)

b. 高性能原理

c. 數據模型創新

傳統數據庫Elasticsearch
固定表結構Schema-free JSON文檔
SQL查詢語言DSL(JSON格式查詢)
ACID事務強一致最終一致性
行存儲倒排索引+列存(Doc Values)

3、核心技術組件 ?

  1. Lucene 引擎

    • 倒排索引(詞項→文檔映射)

    • 分詞器(Tokenizer + Filter)

    • 評分算法(TF-IDF/BM25)

  2. 分布式協調層

    • 一致性協議:Raft(7.x+ 取代 Zen Discovery)

    • 元數據管理:Cluster State(由 Master 節點維護)

  3. 跨組件整合

完整觀測體系:日志(Logs)、指標(Metrics)、追蹤(Traces)、APM(Application Performance Monitoring,應用性能監控)

4、核心應用場景

a. 企業級搜索

  • 電商商品搜索(多屬性過濾、相關性排序)

  • 內容平臺檢索(標題/內容/標簽聯合搜索)

b. 可觀測性

# 日志分析典型流程
filebeat → logstash(解析)→ ES → Kibana(可視化)

c. 安全分析(SIEM)

  • 實時威脅檢測(KQL語法)

  • 異常行為模式識別

5、版本演進關鍵特性

版本里程碑特性影響
7.0廢除多 type 設計簡化數據模型
7.4引入地理矢量搜索(GeoGrid)GIS分析能力增強
7.8內置機器學習(Data Frame)異常檢測無需額外插件
7.12可搜索快照(Searchable Snapshots)冷數據存儲成本降低 70%

6、核心優勢對比

能力Elasticsearch傳統關系型數據庫Solr
全文檢索速度??????☆????
水平擴展能力??????????
聚合分析性能??????????
數據實時性???????????
事務支持????????

7、性能基準(AWS c5.4xlarge 實測)

場景數據量QPS延遲(avg)
日志寫入1TB/日85,00012ms
關鍵詞搜索10億條4,20035ms
聚合分析1PB1201.8s

8、適用行業

  • 電商平臺:商品搜索、推薦系統

  • 金融科技:交易監控、風險分析

  • 物聯網:設備數據實時分析(50萬+/秒數據點)

  • 游戲行業:玩家行為分析、反作弊系統

總結:Elasticsearch 通過創新的分布式架構和倒排索引機制,解決了傳統數據庫在實時搜索與分析場景的瓶頸。作為現代數據棧的核心引擎,其價值已從搜索工具演進為實時數據分析平臺,成為企業數字化轉型的關鍵基礎設施。

三、Logstash 全面概述

1、Logstash概述

Logstash是一個開源的數據收集引擎,它具有強大的數據處理能力。主要功能是從多種數據源獲取數據,對數據進行轉換和過濾,然后將其輸出到目標存儲或分析系統。

作用

Logstash 是一個數據收集引擎,它可以從多個數據源(如文件、數據庫、消息隊列等)收集數據,對數據進行轉換和過濾,然后將其發送到其他存儲或分析工具(如 Elasticsearch)。例如,它可以從各種服務器上的日志文件中收集日志,對日志進行解析,提取出有用的信息(如時間戳、日志級別、消息內容等),還可以對數據進行清洗,去除不需要的信息或者對敏感信息進行脫敏處理

數據輸入源的多樣性:可以從文件(如系統日志文件、應用程序日志文件)、數據庫(通過JDBC等方式)、消息隊列(如Kafka、RabbitMQ)、網絡協議(如HTTP、TCP、UDP)等多種渠道收集數據。例如,在一個微服務架構的系統中,Logstash可以從各個微服務產生的日志文件以及消息隊列中的消息獲取數據。

數據轉換和過濾功能:它能夠解析、修改和豐富收集到的數據。比如,可以將日志文件中的文本內容按照特定的格式(如JSON、CSV等)進行解析,提取關鍵信息;對敏感數據進行脫敏處理;根據某些條件過濾掉不需要的數據。

數據輸出的靈活性:能夠將處理后的數據輸出到各種存儲和分析工具,如Elasticsearch(用于存儲和全文搜索)、Redis(用于緩存或簡單的數據存儲)、文件系統等。這樣可以方便地將數據整合到現有的數據處理和分析流程中。

2、Logstash配置文件結構

Logstash的配置文件是基于JSON樣式的配置語言編寫的,主要由三個部分組成:input(輸入)、filter(過濾)和output(輸出)。

input部分

定義了數據的來源。例如,從文件讀取數據的配置如下:

input {
? ? ?file {
? ? ? ?path => "/var/log/messages"
? ? ? ?start_position => "beginning"
? ? ?}
? ?}

這里file是輸入插件類型,表示從文件讀取數據。path參數指定了要讀取的日志文件路徑,start_position參數表示從文件的開頭(beginning)還是結尾(end)開始讀取。如果要從網絡端口接收數據,可以使用tcp或udp輸入插件,如:

?input {
? ? ?tcp {
? ? ? ?port => 5000
? ? ? ?codec => json_lines
? ? ?}
? ?}

此配置通過tcp插件監聽5000端口,使用json_lines編解碼器來解析接收到的JSON格式的數據行。

filter部分

用于對輸入的數據進行處理。例如,使用grok過濾器來解析日志中的內容。假設我們有一個常見的Nginx訪問日志格式,配置可以是:

??filter {
? ? ?grok {
? ? ? ?match => { "message" => '%{IPORHOST:clientip} - %{USERNAME:ident} - %{USERNAME:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} %{NUMBER:bytes} "%{GREEDYDATA:referrer}" "%{GREEDYDATA:agent}"' }
? ? ?}
? ?}

這個grok過濾器會根據指定的模式(match)來解析message字段(假設輸入的數據中有這個字段),將其中的IP地址、用戶名、時間戳、請求方法等信息提取出來,分別賦值給新的字段(如clientip、ident等)。

還可以使用mutate過濾器來修改字段,比如將字符串轉換為整數:

?filter {
? ? ?mutate {
? ? ? ?convert => {
? ? ? ? ?"response" => "integer"
? ? ? ?}
? ? ?}
? ?}?

此配置會將response字段從字符串類型轉換為整數類型。

output部分

確定了數據的輸出目標。例如,將數據輸出到Elasticsearch的配置:

? output {
? ? ?elasticsearch {
? ? ? ?hosts => ["http://localhost:9200"]
? ? ? ?index => "logstash-logs"
? ? ?}
? ?}?

這里elasticsearch是輸出插件類型。hosts參數指定了Elasticsearch的主機地址列表,index參數定義了數據要存儲到Elasticsearch中的索引名稱。如果要將數據輸出到文件,可以使用file輸出插件:

?output {
? ? ?file {
? ? ? ?path => "/var/log/logstash/output.log"
? ? ?}
? ?}

這個配置會將處理后的數據寫入到/var/log/logstash/output.log文件中。

3、常用插件詳細介紹

輸入插件

jdbc插件

用于從數據庫中讀取數據。需要配置數據庫連接信息,如jdbc_connection_string(數據庫連接字符串)、jdbc_user(用戶名)和jdbc_password(密碼)等。例如:

?input {
? ? ? ?jdbc {
? ? ? ? ?jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
? ? ? ? ?jdbc_user => "user"
? ? ? ? ?jdbc_password => "password"
? ? ? ? ?statement => "SELECT * FROM mytable"
? ? ? ?}
? ? ?}?

這個配置會通過JDBC連接到本地的MySQL數據庫,執行SELECT * FROM mytable語句來獲取數據。

file(文件輸入插件)

- 功能:從文件系統中的文件讀取數據。它會跟蹤文件的變化,例如新行的添加,非常適合處理日志文件。可以配置為按行讀取,并且能夠處理多種文件編碼。

- 示例配置

?input {
? ? file {
? ? ?path => "/var/log/messages"
? ? ?start_position => "beginning"
? ? ?sincedb_path => "/dev/null"
? ? }
? ?}

- 在這個示例中,Logstash會從/var/log/messages文件讀取數據。start_position => "beginning"表示從文件開頭開始讀取,sincedb_path => "/dev/null"用于忽略默認的記錄文件讀取位置的數據庫,這樣每次啟動都從指定位置讀取。

stdin(標準輸入插件)

- 功能:允許從標準輸入讀取數據。這在測試Logstash管道或者需要手動輸入數據進行處理時非常有用。

- 示例配置

?input {
? ? stdin { }
? ?}?

- 配置很簡單,啟用后可以在Logstash運行時通過命令行手動輸入數據,這些數據會按照Logstash的管道配置進行處理。

syslog(系統日志輸入插件)

- 功能:用于接收通過syslog協議發送的系統日志消息。它可以監聽指定的UDP或TCP端口,支持RFC3164和RFC5424格式的syslog消息。

- 示例配置

?input {
? ? syslog {
? ? ?port => 514
? ? ?type => "syslog"
? ? }
? ?}?

- 此配置會讓Logstash在端口514上監聽syslog消息,并且為這些消息設置一個typesyslog的標簽,方便后續在過濾器和輸出階段進行處理。

beats(Beats輸入插件)

- 功能:用于接收來自Elastic Beats(如Filebeat、Metricbeat等)發送的數據。Beats是輕量級的數據采集器,它們可以將數據發送到Logstash進行進一步的處理和轉發。

- 示例配置

?input {
? ? beats {
? ? ?port => 5044
? ? }
? ?}?

- 這個配置會讓Logstash在端口5044上監聽來自Beats的數據。

http(HTTP輸入插件)

- 功能:允許通過HTTP協議接收數據。可以設置端點來接收POST請求等,用于接收來自Web應用程序或其他能夠通過HTTP發送數據的源的數據。

- 示例配置

?input {
? ? http {
? ? ?host => "0.0.0.0"
? ? ?port => 8080
? ? ?codec => "json"
? ? }
? ?}?

- 這里配置Logstash在0.0.0.0:8080上監聽HTTP請求,并且期望接收的數據是JSON格式,接收到的數據會根據Logstash的管道流程進行后續處理。

過濾插件

grok插件

是Logstash中非常強大的文本解析插件。它使用一種類似于正則表達式的語法來匹配和提取數據。除了前面的示例,還可以自定義模式。例如,如果有一個自定義的日志格式,其中包含一個以[KEY:VALUE]形式的字段,可以定義一個新的模式:

? ? ?grok {
? ? ? ?add_pattern => {
? ? ? ? ?"CUSTOM_PATTERN" => "\[%{WORD:key}:%{GREEDYDATA:value}\]"
? ? ? ?}
? ? ? ?match => { "message" => '%{CUSTOM_PATTERN}' }
? ? ?}?

這里先添加了一個名為CUSTOM_PATTERN的模式,然后使用這個模式來解析message字段。

date插件

用于解析日期時間字段,并將其轉換為Logstash內部的時間格式。例如:

這個配置會將timestamp字段按照dd/MMM/yyyy:HH:mm:ss Z的格式解析為日期時間,然后將結果存儲到新的log_date字段中。

輸出插件

elasticsearch插件

除了基本的hosts和index參數,還有document_type參數(在較新的Elasticsearch版本中可能不再常用,但在某些舊版本或特定場景下仍有作用)。例如:

?output {
? ? ? ?elasticsearch {
? ? ? ? ?hosts => ["http://localhost:9200"]
? ? ? ? ?index => "logstash-logs"
? ? ? ? ?document_type => "log"
? ? ? ?}
? ? ?}

此配置將數據存儲到logstash - logs索引中,文檔類型為log。另外,還可以配置批量發送數據的參數,如batch_size(每次批量發送的數據量)和worker_threads(用于發送數據的線程數),以提高數據發送效率。

stdout插件

用于將數據輸出到控制臺,方便調試。可以配置輸出的格式,如codec(編解碼器)。例如:

?output {
? ? ? ?stdout {
? ? ? ? ?codec => rubydebug
? ? ? ?}
? ? ?}?

這個配置會使用rubydebug格式將數據輸出到控制臺,這種格式會詳細地顯示數據的結構和內容。

4、logstash中的條件判斷

1.條件判斷語句類型

if語句

作用:if語句是最常用的條件判斷語句。它根據給定的條件決定是否執行代碼塊中的操作。如果條件為真,則執行if語句塊內的操作;如果條件為假,則跳過該語句塊。

語法示例

if [field_name] == "value" {
?#操作,如mutate、drop等操作
? ?}

應用場景:例如,在處理日志數據時,若只想處理日志級別為INFO的日志,可以使用if語句判斷[log_level] == "INFO",然后在語句塊中對這些日志進行字段添加、數據轉換等操作。

unless語句

作用:unless語句與if語句邏輯相反。當條件為假時,執行unless語句塊內的操作;當條件為真時,跳過該語句塊。

語法示例

unless [field_name] == "value" {
?#操作,如mutate、drop等操作
? ?}?

應用場景:假設不想處理來自某個特定IP地址的日志,就可以使用unless語句。例如,unless [client_ip] == "192.168.1.1",在語句塊中對非該IP地址的日志進行處理。

case語句(在mutate插件中)

作用:case語句用于多分支條件判斷。它根據一個字段的不同取值來執行不同的操作,類似于編程語言中的switch語句。

語法示例

?mutate {
? ? ?case [field_name] {
? ? ? ?"value1" => {
? ? ?#操作1
? ? ? ?}
? ? ? ?"value2" => {
? ? ?#操作2
? ? ? ?}
? ? ? ?default => {
? ? ?#當字段值不匹配前面任何一個分支時執行的操作
? ? ? ?}
? ? ?}
? ?}

應用場景:當日志中有一個表示事件類型的字段,如[event_type],可以根據不同的事件類型(如"login"、"logout"等)執行不同的字段添加或修改操作。

2.條件表達式中的操作符

比較操作符

相等(==)和不等(!=)

解釋:用于判斷兩個值是否相等或不相等。在Logstash中,可以用于比較字段值與常量,或者兩個字段值之間的比較。

示例

if [log_level] == "ERROR":判斷log_level字段的值是否等于ERROR。

if [field1]!= [field2]:判斷field1和field2兩個字段的值是否不相等。

大小比較操作符(>、>=、<、<=)

解釋:用于比較數值型字段的值大小關系。這些操作符在比較日志中的時間戳、計數等數值型數據時很有用。

示例

if [count] > 10:判斷count字段的值是否大于10。

if [response_time] <= 500:判斷response_time字段的值是否小于等于500(單位可能是毫秒等)。

正則表達式匹配操作符(=~和!~)

解釋:=~用于判斷一個字段的值是否匹配給定的正則表達式,!~則用于判斷一個字段的值是否不匹配給定的正則表達式。正則表達式在處理文本格式的日志數據時非常強大,可以用于匹配特定的模式。

示例

if [message] =~ /error/:判斷message字段的值是否包含error這個單詞(簡單的正則表達式示例)。

if [user_agent]!~ /^Mozilla/:判斷user_agent字段的值是否不以Mozilla開頭。

邏輯操作符

與(&&)和或(||)

解釋:用于組合多個條件。&&表示只有當所有條件都為真時,整個表達式才為真;||表示只要有一個條件為真,整個表達式就為真。

示例

if ([log_level] == "WARN" && [count] > 5):判斷log_level是否為WARN并且count是否大于5。

if ([source_ip] == "192.168.1.1" || [source_ip] == "10.0.0.1"):判斷source_ip是否為192.168.1.1或者是否為10.0.0.1。

包含和不包含操作符(in和not in)

解釋:用于判斷一個值是否在一個數組或者集合類型的字段中,或者不在其中。在Logstash中,一些插件可能會生成包含多個標簽(tags)的字段,這些操作符就可以用于判斷某個標簽是否存在。

示例

?if "error" in [tags]:判斷tags字段中是否包含error這個標簽。

i

f "debug" not in [tags]:判斷tags字段中是否不包含debug這個標簽。

四、 Elasticsearch安裝與配置

(使用Rocky8系統)

修改主機名 ?

將elasticsearch軟件包拷貝至elk主機執行安裝

對時

檢查java版本

配置elasticsearch 文件

?配置主機名解析

啟動elasticsearch服務并驗證啟動結果

五、 logstash安裝與配置

將logstash軟件包拷貝至elk主機執行安裝

創建配置文件

input {file {path => "/var/log/messages"start_position => "beginning"}
}
output {elasticsearch {hosts => ["http://192.168.71.162:9200"]index => "system-log-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}

優化logstash命令

測試logstash服務的數據傳輸

標準輸入與輸出

使用rubydebug解碼

輸出到elasticsearch

登錄到9200端口

查看集群健康狀態

六、 kibana安裝與配置

將kibana軟件包拷貝至elk主機執行安裝

配置kibana文件

啟動kibana并查看狀態

正常后,登錄5601端口進入kibana頁面

從配置文件最后一行中修改為中文方便查看

重啟服務并刷新界面

點擊自己瀏覽后點擊索引管理

使用logstash -f /etc/logstash/conf.d/pipline.conf? 命令監控日志信息

與此同時kibana頁面同步出日志內容

創建索引

下一步,按時間戳進行篩選

添加儀表盤

點擊左上角添加,點擊右邊添加可視化

回到主頁有可視化和文字說明

七.總結

本節內容大致了解了Elasticsearch,logstash和kibana的相關內容,明白了ELK各個字母的含義以及下載安裝使用了對應的軟件,之后就可以使用這些來收集各個應用的日志來分析日志信息。

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

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

相關文章

深入理解 Spring Boot Starter 的生成機制

在使用 Spring Boot 進行開發時&#xff0c;我們常常會引入諸如 spring-boot-starter-web、spring-boot-starter-data-jpa 等依賴&#xff0c;從而快速開啟相關功能模塊。但你是否思考過這些 Starter 是如何構建的&#xff1f;如果我們要開發自己的 Starter&#xff0c;又該如何…

阿里云-通義靈碼:隱私保護機制—為數據安全筑起銅墻鐵壁

免責聲明&#xff1a;此篇文章所有內容皆是本人實驗&#xff0c;并非廣告推廣&#xff0c;并非抄襲&#xff0c;該系列繼續~每日一句不要感嘆自己的平凡&#xff0c;即便是最暗的星星&#xff0c;相與無邊的黑暗已是耀眼。一.引言在這個數據如同空氣般滲透到生活每個角落的時代…

最小生成樹算法詳解

最小生成樹算法詳解一、最小生成樹基礎概念1.1 生成樹與最小生成樹1.2 核心性質1.3 應用場景二、Prim 算法&#xff1a;從頂點出發的“生長式”構建2.1 算法原理2.2 Java 代碼實現&#xff08;鄰接矩陣版&#xff09;2.3 復雜度分析三、Kruskal 算法&#xff1a;按邊權排序的“…

YOLO 目標檢測的改進方法

YOLO目標檢測的改進方法可以從模型架構、訓練策略、損失函數等多個方面入手&#xff0c;以下是一些常見的改進方法方向及參考文獻&#xff1a; 模型架構改進 骨干網絡替換&#xff1a;使用更輕量或更強大的網絡替換原始骨干網絡。輕量級網絡如MobileNetV3、ShuffleNetV2等適合…

C++ 程序 AddressSanitizer:DEADLYSIGNAL

GCC && G 操作系統&#xff1a;Ubuntu 22.04 現象&#xff1a;C程序編譯時開啟ASAN&#xff0c;運行時有幾率會出現大量AddressSanitizer:DEADLYSIGNAL 參考文章&#xff1a; https://stackoverflow.com/questions/77894856/possible-bug-in-gcc-sanitizers https://st…

【強化學習】實際部署

環境 Gymnasium 作為環境接口&#xff0c; PyBullet作為物理仿真平臺&#xff0c; Stable Baselines3 用于訓練算法。 測試框架搭建 以pybullet自帶的Cart-pole-v1為例 安裝依賴&#xff1a;確保安裝了 Gymnasium 和 SB3 ( pip install gymnasium stable-baselines3 ).初始化環…

集訓Demo4

創建數據庫創建項目基本和視頻中的一樣我給User添加了vip這個屬性&#xff0c;想實現兩個令牌通過訪問的案例&#xff0c;但遇到了問題一個令牌是密碼加用戶名的map數組這是它的獲取、驗證邏輯獲取驗證另一個令牌是Int vip這是自己寫的另一套密鑰和方法獲取但在驗證這里有問題頭…

深度優化:Java 慢查詢排查與性能調優實戰

文章目錄&#x1f680; 深度優化&#xff1a;Java 慢查詢排查與性能調優實戰&#x1f6a8;1. 事故全景&#xff1a;從告警到定位&#x1f575;??♂?1.1 事故時間線&#x1f4ca; 1.2 關鍵指標異常&#x1f6e0;? 1.3 排查工具鏈&#x1f50d; 2. 深度剖析&#xff1a;MySQL…

TF-IDF(Term Frequency - Inverse Document Frequency)

TF-IDF&#xff08;Term Frequency - Inverse Document Frequency&#xff09;是一種在信息檢索與文本挖掘中非常常用的關鍵詞提取方法&#xff0c;用于衡量一個詞在文檔集合中的重要性。它的核心思想是&#xff1a;如果一個詞在某個文檔中出現得頻繁&#xff0c;同時在其他文檔…

Chrome緊急更新,谷歌修復正遭活躍利用的關鍵零日漏洞

谷歌已針對桌面版Chrome發布重要穩定渠道更新&#xff08;版本138.0.7204.157/.158&#xff09;&#xff0c;修復了六個安全漏洞&#xff0c;其中包括一個已被實際利用的漏洞。該更新正在向Windows、Mac和Linux平臺推送&#xff0c;預計未來數日或數周內將通過自動更新完成部署…

Typecho插件開發:實現文章字數統計與閱讀時長計算功能

文章目錄 Typecho文章字數統計與閱讀時長計算功能實現指南 1. 功能背景與需求分析 2. 插件設計與實現 2.1 插件基礎結構 2.2 插件主邏輯實現 2.3 代碼解析與優化 3. 前端展示優化 3.1 CSS樣式增強 3.2 多語言支持 4. 高級功能擴展 4.1 數據庫表優化 4.2 定時批量處理歷史文章 5…

開源短鏈接工具 Sink 無需服務器 輕松部署到 Workers / Pages

本文首發于只抄博客,歡迎點擊原文鏈接了解更多內容。 前言 Sink 是一款開源免費的短鏈接生成工具,支持自定義短鏈接 Slug 以及設置到期時間,并且還可以借助 Cloudflare 的 Analytics Engine 功能分析短鏈接的統計數據。 最重要的是實現以上這些功能并不需要有自己的服務器,…

嵌入式數據結構之順序表總結

以下是為嵌入式面試準備的順序表全面優化指南&#xff0c;結合高頻考點、代碼規范與嵌入式專項優化技巧&#xff0c;助你系統掌握該知識點。 一、順序表基礎與嵌入式特點 ?本質? 用連續內存空間存儲線性表元素&#xff0c;通過下標實現O(1)隨機訪問 。 ?嵌入式優勢?&#x…

Pytorch下載Mnist手寫數據識別訓練數據集的代碼詳解

datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransforms.ToTensor())1. datasets.MNIST這是torchvision.datasets模塊中的一個類&#xff0c;專門用于加載MNIST數據集。MNIST是一個著名的手寫數字識別數據集&#xff0c;包含60,000個訓練樣本和10,000個測試…

汽車免拆診斷案例 | 07款豐田Hilux啟動故障

故障現象一輛 2007 年的豐田Hilux 2.5L柴油手動擋&#xff0c;行駛里程為23萬公里。車主說車輛有很多故障&#xff0c;包括故障燈閃爍、發動機啟動后又熄火、短時間運行時發動機還會劇烈抖動異響&#xff0c;從排氣管冒出大量煙霧。故障診斷接車之后進行檢查&#xff0c;發現發…

黃老師(Exeter University)學術交流

1. 文章結構與核心貢獻聚焦 強調明確切入點和核心“亮點”貢獻&#xff0c;避免分散&#xff0c;確保至少一項最主要、富有創新的方法。在該貢獻點上進行全面充分的實驗驗證&#xff0c;包括不同模型尺寸、普適性測試&#xff0c;以應對審稿專家的質疑。建議從讀者或審稿人角度…

ArcGIS Pro+PS 實現地形渲染效果圖

先前關注了B站和小紅書博主&#xff0c;設計暴風眼&#xff0c;大神講的確實好&#xff0c;深感佩服&#xff0c;自己以前的制圖僅僅實現了制圖&#xff0c;實現了把圖放在論文里能湊合&#xff0c;而不是設計。最近抽時間學習了一下大神的合集&#xff1a;ArcGIS Pro實用技法合…

ollma dify 搭建合同審查助手

目錄 windows dify: ollma 配置 ollma下載地址&#xff1a; qwen3 模型下載 這個自動下載&#xff0c;下載后自動運行。 配置環境變量&#xff1a;修改監聽后很慢 測試命令&#xff1a; 模型配置url&#xff1a; 搭建工作流 windows dify: 下載 dify代碼&#xff1a…

解鎖 iOS 按鍵精靈輔助工具自動化新可能:iOSElement.Click 讓元素交互更簡單

在移動自動化測試與腳本開發領域&#xff0c;精準操控應用元素是核心需求。無論是自動化測試流程、批量操作處理&#xff0c;還是場景化腳本開發&#xff0c;能否可靠地點擊指定元素直接決定了自動化任務的成敗。在 iOS 自動化操作中&#xff0c;開發者常常面臨三大痛點&#x…

【機器學習】AdamW可調參數介紹及使用說明

在 AdamW 算法中調整參數對模型訓練過程和最終效果有直接且重要的影響&#xff0c;以下是各關鍵參數對性能的具體影響總結&#xff1a;AdamW 主要可調參數及其影響說明 1. 學習率 lr 影響&#xff1a; 太大&#xff08;如 0.01 ~ 0.1&#xff09;&#xff1a;訓練過程不穩&…