Linux中ansible模塊補充和playbook講解

一、模塊使用

1.1 Yum模塊

功能:管理軟件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本

參數說明
name要操作的軟件包名稱,支持通配符(如 httpd, nginx*),也可以是 URL 或本地 .rpm 文件路徑。
state軟件包狀態: - present:安裝(默認) - absent:卸載 - latest:安裝最新版本
webow_downgrade是否允許降級安裝指定版本的包(默認為否)。?? 可能導致非冪等行為。
autoremove刪除不再依賴的"葉"包(僅當 state=absent 或單獨使用時有效)。
bugfix僅安裝標記為 bugfix 的更新(配合 state=latest 使用)。
conf_file指定自定義的 yum 配置文件路徑。
disable_excludes禁用 yum 配置中的排除規則(可選值:web, main, repoid)。
disable_gpg_check安裝時是否禁用 GPG 校驗(適用于測試環境)。
disablerepo操作期間臨時禁用的倉庫 ID(可以是逗號分隔字符串或列表)。
enablerepo操作期間臨時啟用的倉庫 ID(可以是逗號分隔字符串或列表)。
download_only僅下載 RPM 包而不安裝。
download_dir指定 RPM 包下載目錄(配合 download_only 使用)。
exclude排除某些包不進行操作(例如:kernel*)。
instweb_weak_deps安裝弱依賴項(僅限 yum >= 4,
ansible web -m yum -a 'name=httpd state=absent'
如 RHEL/CentOS 8)。
instwebroot指定替代根目錄(用于 chroot 環境)。
list列出包信息(如 instwebed, updates, available 或具體包名)。
lock_timeout等待 yum 鎖釋放的最大時間(單位:秒)。

范例1:

ansible web -m yum -a 'name=httpd state=present'  #安裝

范例2:

ansible web -m yum -a 'name=httpd state=absent'  #刪除

1.2?Service模塊

功能:管理服務

參數必填說明
name? 是要操作的服務名稱(如 httpd, nginx)。
state服務狀態: - started:啟動服務 - stopped:停止服務 - restarted:重啟服務 - reloaded:重載配置
enabled是否設置為開機自啟(布爾值,yes/no
pattern如果服務不支持 status 命令,可指定一個進程名匹配字符串(用于檢測是否運行)。
arguments啟動服務時傳遞的額外命令行參數。
runlevel僅適用于 OpenRC 系統(如 Gentoo),指定服務所屬 runlevel。
sleeprestarted 時,stop 和 start 之間等待秒數(部分 init 腳本需要)。
use強制使用某個服務管理模塊(如 systemd, sysv, openrc),默認自動識別。

范例1:

ansible web -m service -a 'name=httpd state=started enabled=yes'

范例2:

ansible web -m shell -a "sed -i 's/^Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf"

1.3?User模塊

功能:管理用戶

參數必填說明
name? 是要操作的用戶名(如 alice, bob)。
state用戶狀態: - present:創建或更新用戶(默認) - absent:刪除用戶
comment設置用戶的描述信息(GECOS 字段)。
home設置用戶的家目錄路徑。
shell設置用戶的登錄 shell(如 /bin/bash)。
group設置用戶的主組(組名)。
groups設置用戶的附加組列表(逗號分隔字符串或列表)。 若為空字符串 '',則移除所有附加組。
append如果為 yes,在現有附加組基礎上添加新組;否則替換原有附加組。與 local 互斥。
create_home是否創建用戶家目錄(默認為 yes)。
removestate=absent 時,是否刪除用戶的家目錄和郵件文件(相當于 userdel -r)。
force強制刪除用戶(即使正在登錄或擁有運行進程),僅在支持的系統上有效。
password設置用戶密碼(需提供加密后的密碼,如使用 mkpasswdopenssl 生成)。
generate_ssh_key是否為用戶生成 SSH 密鑰對。
ssh_key_bits指定生成的 SSH 密鑰位數(默認 2048)。
ssh_key_type指定 SSH 密鑰類型(如 rsa, ed25519)。
expires設置用戶過期時間(以 Unix 時間戳表示)。僅限 Linux、FreeBSD 等支持平臺。
system是否創建為系統用戶(UID 小于系統設定閾值)。
uid指定用戶的 UID。
login_class設置 BSD 系統上的登錄類(如 FreeBSD)。
local強制使用本地命令(如 luseradd)操作本地用戶數據庫,適用于集中認證環境。與 groupsappend 互斥。
move_home若更改了 home,是否移動原家目錄到新路徑。

范例1:

ansible web -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1 group=root'

1.4?Group模塊

功能:管理組

參數必填說明
name? 是要操作的組名(如 developers, admins)。
state組狀態: - present:創建組(默認) - absent:刪除組
gid設置組的 GID(組 ID)。
non_unique如果設置了 gid,允許使用非唯一 GID(僅限 Linux,不支持 macOS 或 BusyBox)。
system若為 yes,則創建一個系統組(通常 GID 小于系統設定的閾值)。
local強制使用本地命令(如 lgroupadd)來操作本地組數據庫,適用于集中認證環境。

范例1:

#創建組
ansible web -m group  -a 'name=nginx gid=88 system=yes'
#刪除組
ansible web -m group  -a 'name=nginx state=absent'

1.5?Lineinfile模塊

ansible在使用sed進行替換時,經常會遇到需要轉義的問題,而且ansible在遇到特殊符號進行替換時,存在問題,無法正常進行替換 。其實在ansible自身提供了兩個模塊:lineinfile模塊和replace模塊,可以方便的進行替換

功能:相當于sed,可以修改文件內容

參數必填說明
destpath? 是要操作的目標文件路徑。
state行的狀態: - present:確保該行存在(默認) - absent:刪除匹配的行
regexp正則表達式,用于匹配文件中的一行或多行。如果未提供,默認匹配整行內容。
line否(當 state=present 時必填)要插入或替換的文本行。
backup修改前創建備份文件(帶時間戳)。
create如果文件不存在且 state=present,是否創建文件。
insertafterstate=present 且沒有匹配到 regexp 時,在匹配該正則的 最后一行之后 插入新行。可使用 EOF 插入到文件末尾。
insertbefore類似 insertafter,但在匹配的行 之前 插入。可使用 BOF 插入到文件開頭。
firstmatch若為 yes,在 insertafterinsertbefore 中只匹配第一個符合條件的行。
backrefs若為 yes,允許 line 中使用正則捕獲組(配合 regexp 使用),僅當匹配時替換并更新行。否則不修改文件。
group設置文件所屬的用戶組。
owner設置文件所屬的用戶。
mode設置文件權限(如 0644, 0755)。
attributes設置文件屬性(如通過 chattr 設置的屬性)。

范例:

ansible web -m lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=enforcing'"ansible web -m lineinfile  -a 'dest=/etc/fstab state=absent regexp="^#"'

1.6?Replace模塊

該模塊有點類似于sed命令,主要也是基于正則進行匹配和替換

參數必填說明
path? 是要操作的目標文件路徑。
regexp? 是正則表達式,用于匹配需要替換的內容(Python 風格)。 使用 MULTILINE 模式:^/$ 匹配每行開頭/結尾。
replace替換后的內容,可以包含正則捕獲組引用(如 \1, (?P<name>...))。若未設置,則匹配內容會被刪除。
backup若為 yes,在修改前創建帶時間戳的備份文件。
after只替換在此正則匹配內容之后的部分(配合 before 使用)。
before只替換在此正則匹配內容之前的部分(配合 after 使用)。
encoding文件的字符編碼(如 utf-8, latin1 等)。
group設置文件所屬的用戶組。
owner設置文件所屬的用戶。
mode設置文件權限(如 0644, 0755 或符號模式如 u=rw,g=r,o=r)。
attributes設置文件屬性(如通過 chattr 設置的屬性)。

范例:

ansible web -m replace -a "path=/etc/fstab regexp='^(UUID.*)' replace='#\1'"  
ansible web -m replace -a "path=/etc/fstab regexp='^#(.*)' replace='\1'"

1.7?Setup模塊

功能: setup 模塊來收集主機的系統信息,這些 facts 信息可以直接以變量的形式使用.

但是如果主機較多,會影響執行速度,可以使用gather_facts: no來禁止 Ansible 收集 facts 信息

參數必填說明
filter使用通配符(shell 風格,如 ansible_distribution*)過濾輸出的 facts。
gather_subset指定要收集的 fact 子集: - web:全部(默認) - min:最小基礎信息 - hardware:硬件相關信息 - network:網絡相關信息 - virtual:虛擬化信息 - facter / ohai:兼容 Puppet Facter 或 Chef Ohai 可使用 ! 排除子集,如 !network
gather_timeout設置每個 fact 收集的最大時間(秒),防止因某些模塊卡頓導致整體超時。
fact_path自定義本地自定義 facts 腳本路徑(.fact 文件),支持 JSON 或 INI 格式。

范例:

ansible web -m setup
ansible web -m setup -a "filter=ansible_nodename"
ansible web -m setup -a "filter=ansible_hostname"
ansible web -m setup -a "filter=ansible_domain"
ansible web -m setup -a "filter=ansible_memtotal_mb"
ansible web -m setup -a "filter=ansible_memory_mb"
ansible web -m setup -a "filter=ansible_memfree_mb"
ansible web -m setup -a "filter=ansible_os_family"
ansible web -m setup -a "filter=ansible_distribution_major_version"
ansible web -m setup -a "filter=ansible_distribution_version"
ansible web -m setup -a "filter=ansible_processor_vcpus"
ansible web -m setup -a "filter=ansible_web_ipv4_addresses"
ansible web -m setup -a "filter=ansible_architecture"
ansible web -m  setup  -a "filter=ansible_processor*"

范例:

[root@ansible ~]#ansible web  -m  setup -a 'filter=ansible_python_version'
10.0.0.7 | SUCCESS => {"ansible_facts": {"ansible_python_version": "2.7.5","discovered_interpreter_python": "/usr/bin/python"},"changed": false
}
10.0.0.6 | SUCCESS => {"ansible_facts": {"ansible_python_version": "2.6.6","discovered_interpreter_python": "/usr/bin/python"},"changed": false
}
10.0.0.8 | SUCCESS => {"ansible_facts": {"ansible_python_version": "3.6.8","discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false
}
[root@ansible ~]#

二、playbook介紹

2.1 介紹

playbook 劇本是由一個或多個“play”組成的列表。

play的主要功能在于將預定義的一組主機,裝扮成事先通過ansible中的task定義好的角色。Task實際是調用ansible的一個module,將多個play組織在一個playbook中,即可以讓它們聯合起來,按事先編排的機制執行預定義的動作。

Playbook 文件是采用YAML語言編寫的。

2.2?YAML 語言

YAMl 語言介紹

YAML是一個可讀性高的用來表達資料序列的格式。YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822等。

Clark Evans在2001年在首次發表了這種語言,另外Ingy d?t Net與Oren Ben-Kiki也是這語言的共同設計者,目前很多軟件中采有此格式的文件,如:ubuntu,anisble,docker,k8s等。

YAML:YAML Ain’t Markup Language,即YAML不是XML。不過,在開發的這種語言時,YAML的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)

YAML 語言特性

  • YAML的可讀性好

  • YAML和腳本語言的交互性好

  • YAML使用實現語言的數據類型

  • YAML有一個一致的信息模型

  • YAML易于實現

  • YAML可以基于流來處理

  • YAML表達能力強,擴展性好

YAML語法簡介

  • 在單一文件第一行,用連續三個連字號“-” 開始,還有選擇性的連續三個點號( … )用來表示文件的結尾

  • 次行開始正常寫Playbook的內容,一般建議寫明該Playbook的功能

  • 使用#號注釋代碼

  • 縮進必須是統一的,不能空格和tab混用

  • 縮進的級別也必須是一致的,同樣的縮進代表同樣的級別,程序判別配置的級別是通過縮進結合換行來實現的 YAML文件內容是區別大小寫的,key/value的值均需大小寫敏感

  • 多個key/value可同行寫也可換行寫,同行使用,分隔

  • v可是個字符串,也可是另一個列表

  • 一個完整的代碼塊功能需最少元素需包括 name 和 task

  • 一個name只能包括一個task

  • YAML文件擴展名通常為yml或yaml

YAML的語法和其他高階語言類似,并且可以簡單表達清單、散列表、標量等數據結構。

其結構(Structure)通過空格來展示,序列(Sequence)里的項用"-"來代表,Map里的鍵值對用":"分隔,下面介紹常見的數據結構。

List列表

列表由多個元素組成,每個元素放在不同行,且元素前均使用“-”打頭,或者將所有元素用 [ ] 括起來放在同一行

范例:

fruits:- Apple- Orange- Strawberry- Mangofruits:[Apple,Orange,Strawberry,Mango]
Dictionary字典

字典由多個key與value構成,key和value之間用 :分隔,所有k/v可以放在一行,或者每個 k/v 分別放在不同行

范例:

name: John Smith
age: 41
gender: Male
spouse:name: Jane Smithage: 37gender: Female
children:- name: Jimmy Smithage: 17gender: Male- name: Jenny Smithage: 13gender: Female

?

2.3?Playbook核心元素

  • Hosts 執行的遠程主機列表

  • Tasks 任務集

  • Variables 內置變量或自定義變量在playbook中調用

  • Templates 模板,可替換模板文件中的變量并實現一些簡單邏輯的文件

  • Handlers 和 notify 結合使用,由特定條件觸發的操作,滿足條件方才執行,否則不執行

  • tags 標簽 指定某條任務執行,用于選擇運行playbook中的部分代碼。ansible具有冪等性,因此會自動跳過沒有變化的部分,即便如此,有些代碼為測試其確實沒有發生變化的時間依然會非常地長。此時,如果確信其沒有變化,就可以通過tags跳過此些代碼片斷

hosts 組件

Hosts:playbook中的每一個play的目的都是為了讓特定主機以某個指定的用戶身份執行任務。hosts用于指定要執行指定任務的主機,須事先定義在主機清單中

案例:

- hosts: web:appsrvs

remote_user 組件

remote_user: 可用于Host和task中。也可以通過指定其通過sudo的方式在遠程主機上執行任務,其可用于play全局或某任務;此外,甚至可以在sudo時使用sudo_user指定sudo時切換的用戶

- hosts: webremote_user: jyxtasks:- name: test connectionping: remote_user: sp sudo: yes sudo_user: wang 

task列表和action組件

play的主體部分是task list,task list中有一個或多個task,各個task 按次序逐個在hosts中指定的所有主機上執行,即在所有主機上完成第一個task后,再開始第二個task

task的目的是使用指定的參數執行模塊,而在模塊參數中可以使用變量。

模塊執行是冪等的,這意味著多次執行是安全的,因為其結果均一致

每個task都應該有其name,用于playbook的執行結果輸出,建議其內容能清晰地描述任務執行步驟。

如果未提供name,則action的結果將用于輸出

task兩種格式:

(1) action: module arguments

(2) module: arguments 建議使用

注意:shell和command模塊后面跟命令,而非key=value

范例:

---
- hosts: webremote_user: roottasks:- name: instweb httpdyum: name=httpd- name: start httpdservice: name=httpd state=started enabled=yes

其它組件

某任務的狀態在運行后為changed時,可通過“notify”通知給相應的handlers

任務可以通過"tags“打標簽,可在ansible-playbook命令上使用-t指定進行調用

ShellScripts VS Playbook 案例

#SHELL腳本實現
#!/bin/bash
# 安裝Apache
yum install -y httpd 
# 復制配置文件
cp /tmp/httpd.conf /etc/httpd/conf/httpd.conf
cp/tmp/vhosts.conf /etc/httpd/conf.d/
# 啟動Apache,并設置開機啟動
systemctl enable --now httpd #Playbook實現
---
- hosts: webremote_user: roottasks:- name: "安裝Apache"yum: name=httpd- name: "復制配置文件"copy: src=/tmp/httpd.conf dest=/etc/httpd/conf/- name: "復制配置文件"copy: src=/tmp/vhosts.conf dest=/etc/httpd/conf.d/- name: "啟動Apache,并設置開機啟動"service: name=httpd state=started enabled=yes

2.4?playbook 命令

格式

ansible-playbook <filename.yml> ... [options]

常見選項

-C --check          #只檢測可能會發生的改變,但不真正執行操作
--list-hosts        #列出運行任務的主機
--list-tags         #列出tag
--list-tasks        #列出task
--limit 主機列表      #只針對主機列表中的主機執行
-v -vv  -vvv        #顯示過程

范例:

ansible-playbook  file.yml  --check #只檢測
ansible-playbook  file.yml  
ansible-playbook  file.yml  --limit web

Playbook 初步
利用 playbook 創建 mysql 用戶

范例:mysql_user.yml

---
- hosts: dbremote_user: roottasks:- name: create groupgroup: name=mysql system=yes gid=306- name: create useruser: name=mysql shell=/sbin/nologin system=yes group=mysql uid=306 home=/data/mysql create_home=no      
利用 playbook 安裝 nginx

范例:instweb_nginx.yml

---
# instweb nginx 
- hosts: webremote_user: root  tasks:- name: add group nginxgroup: name=nginx state=present- name: add user nginxuser: name=nginx state=present group=nginx- name: Instweb Nginxyum: name=nginx state=present- name: web pagecopy: src=files/index.html dest=/usr/share/nginx/html/index.html- name: Start Nginxservice: name=nginx state=started enabled=yes

利用 playbook 安裝和卸載 httpd

范例:instweb_httpd.yml

---
#instweb httpd 
- hosts: webremote_user: rootgather_facts: notasks:- name: Instweb httpdyum: name=httpd state=present- name: Instweb configure filecopy: src=files/httpd.conf dest=/etc/httpd/conf/- name: web htmlcopy: src=files/index.html  dest=/var/www/html/- name: start serviceservice: name=httpd state=started enabled=yesansible-playbook   instweb_httpd.yml --limit 10.0.0.8

范例:remove_httpd.yml

#remove_httpd.yml
---
- hosts: webremote_user: roottasks:- name: remove httpd packageyum: name=httpd state=absent- name: remove apache user user: name=apache state=absent- name: remove config filefile: name=/etc/httpd  state=absent- name: remove web htmlfile: name=/var/www/html/index.html state=absent

利用 playbook 結合shell安裝mysql

[root@ansible ~]#cat /data/ansible/instweb_mysql.yml
---
# instweb mysql-8
- hosts: dbremote_user: rootgather_facts: notasks:- name: copy shellscript: /soft/instweb_mysql.sh

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

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

相關文章

唐代大模型:智能重構下的盛世文明圖譜

引言&#xff1a;當長安城遇見深度學習 一件唐代鎏金舞馬銜杯銀壺的虛擬復原品正通過全息投影技術演繹盛唐樂舞。這個跨越時空的場景&#xff0c;恰似唐代大模型技術的隱喻——以人工智能為紐帶&#xff0c;連接起長安城的盛世氣象與數字時代的文明重構。作為人工智能與歷史學…

國產ARM/RISCV與OpenHarmony物聯網項目(三)網關設備控制

一、設備控制界面與功能設計 程序界面運行與設計效果如下: 設備控制相關程序調用關系圖如下&#xff1a; 其中device_control.html程序為網頁界面顯示程序&#xff0c;led_alarm.cgi程序為光線數據的報警超限數據設置與管理&#xff0c;led_control.cgi程序功能為對Led燈的開…

微信小程序反編譯實戰教程

在實際滲透測試或安全分析中&#xff0c;經常會遇到微信小程序中的簽名加密&#xff08;sign&#xff09;機制&#xff0c;這些機制大多具備防重放、防篡改的特性&#xff0c;導致我們在抓包時難以直接復現請求。 &#x1f50d; 另一方面&#xff0c;一些小程序的代碼中往往會…

【NLP入門系列三】NLP文本嵌入(以Embedding和EmbeddingBag為例)

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 博主簡介&#xff1a;努力學習的22級本科生一枚 &#x1f31f;?&#xff1b;探索AI算法&#xff0c;C&#xff0c;go語言的世界&#xff1b;在迷茫中尋找光芒…

文心一言(ERNIE Bot):百度打造的知識增強大語言模型

1. 產品概述 文心一言&#xff08;ERNIE Bot&#xff09;是百度自主研發的知識增強大語言模型&#xff0c;于2023年3月16日正式發布&#xff0c;對標OpenAI的ChatGPT&#xff0c;具備文本生成、多模態交互、邏輯推理、中文理解等能力。該模型基于百度的飛槳深度學習平臺和文心…

Java-49 深入淺出 Tomcat 手寫 Tomcat 實現【02】HttpServlet Request RequestProcessor

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; 目前2025年06月13日更新到&#xff1a; AI煉丹日志-28 - Aud…

在VB.net中,文本插入的幾個自定義函數

一、如果你是高手&#xff0c;一定“識貨”&#xff0c;分享給你 二、可應用于文本插入的幾種方式&#xff1a;6種 三、需要用到以下的幾個函數&#xff1a; 上代碼&#xff1a; Module TextModule <summary> 在指定位置插入文本 </summary> <p…

QC -io 服務器排查報錯方式/報錯: Failed to convert string to integer of varId variable!“

進斷點控制臺有報錯之后&#xff0c;復制報錯信息到 頭部菜單欄 1.編輯 -> 2.Find/Replace ->3.Advanced Find ->4. Project“xxxxx” 能找到問題點 再分析定位 在排查報錯時候&#xff0c;進入了這個報錯&#xff0c;msgInfo "MyTcpRedis: Failed to conver…

c++中auto與decltype使用

在 C11及后續版本中&#xff0c;關鍵字auto和decltype都是用于類型推導的&#xff0c;但它們的使用場景和行為有所不同。 1. auto 關鍵字 作用 auto 用于自動推導變量的類型&#xff0c;由編譯器根據初始化表達式來確定。 常見用法 // 基本用法 auto x 42; // int…

LabVIEW機器視覺零件檢測

基于LabVIEW 圖形化編程平臺與機器視覺技術&#xff0c;構建集圖像采集、處理、尺寸計算與合格性分析于一體的自動化檢測方案。通過模塊化硬件架構與自適應算法設計&#xff0c;實現對機械零件多維度尺寸的非接觸式高精度測量&#xff0c;相比人工檢測效率提升 12 倍&#xff0…

大數據治理域——實時數據開發

摘要 本文深入探討了大數據治理域中的實時數據開發&#xff0c;重點介紹了流式數據處理的核心價值、特點、技術挑戰、典型能力和應用場景。同時&#xff0c;詳細闡述了流式技術架構&#xff0c;包括數據采集、處理、存儲和服務等環節&#xff0c;并針對大促場景提出了相應的技…

Halcon/C# 圖像窗口、讀取圖片及仿射變換

一、Halcon 清理窗口 清除圖像窗口的顯示。 dev_clear_window() 二、Halcon 讀取圖片 (一) 讀取一張圖片 read_image (Image, printer_chip/printer_chip_01)Image&#xff1a;&#xff08;輸出參數&#xff09;讀取到的圖片變量名 第二個參數&#xff1a;圖片路徑&#xf…

Nginx 反向代理服務和安裝docker-compose

Nginx 反向代理服務和安裝docker-compose Nginx Proxy Manager 他是一個可視化的nginx的反向代理神器&#xff0c;動動手指輕松的配置Nginx&#xff0c;我們可以通過一些網頁&#xff0c;即可完成網站的代理配置&#xff0c;無需在動手安裝Nginx&#xff1b; dockoer-compose部…

FPGA基礎 -- Verilog 鎖存器簡介

由淺入深地講解 Verilog 中的鎖存器&#xff08;Latch&#xff09;**&#xff0c;包括&#xff1a; 什么是鎖存器&#xff08;定義與作用&#xff09;鎖存器的分類&#xff08;透明鎖存器 vs 邊沿觸發器&#xff09;Verilog 中鎖存器的建模方式鎖存器與觸發器的區別鎖存器的時…

Eclipse Memory Analyzer (MAT) 相關配置調整

一、JDK版本過低提示 已安裝高于 jdk 17 的版本依舊提示 jdk 版本過低&#xff0c;打開MAT的安裝目錄&#xff0c;在配置文件 MemoryAnalyzer.ini 中添加配置指向JDK即可。新增兩行配置&#xff1a; -vm D:/jdk_21.0.7/bin/javaw.exe //jdk安裝路徑 bin 目錄下的javaw.exe二…

機器學習常用評估指標

機器學習常用評估指標 機器學習的評價指標有精度、精確率、召回率、P-R曲線、F1 值、TPR、FPR、ROC等指標&#xff0c;還有在生物領域常用的敏感性、特異性等指標。 基礎 在分類任務中&#xff0c;各指標的計算基礎都來自于對正負樣本的分類結果&#xff0c;用混淆矩陣表示&…

視頻相似度檢測算法(帶課設報告)

摘 要 本文提出了一種基于關鍵幀特征提取的視頻相似度檢測方法&#xff0c;通過融合自適應采樣與特征降維技術實現高效準確的視頻內容比對。系統采用三階段處理流程&#xff1a;首先對輸入視頻進行自適應關鍵幀采樣&#xff0c;通過均勻間隔算法提取固定數量&#xff08;默…

微服務江湖的愛恨情仇:Spring Cloud 與 Kubernetes 的雙雄演義

引言&#xff1a;雙雄并立&#xff0c;一個時代的序幕 微服務革命&#xff0c;如同一場燎原之火&#xff0c;將龐大、笨重的單體應用燒成灰燼&#xff0c;宣告了一個敏捷、獨立、快速迭代的新紀元。然而&#xff0c;這場革命在摧毀舊世界的同時&#xff0c;也催生了一片混沌的新…

深度拆解RAGFlow分片引擎之切片實現

上一篇深度拆解RAGFlow分片引擎&#xff01;3大階段視覺增強&#xff0c;全網最硬核架構解析 講了切片的整體流程&#xff0c;今天我們來拆下切片的實現。 我們在設置的時候&#xff0c;可以選擇切片方法。這個參數是parser_id 在創建知識庫的時候&#xff0c;選擇對應的切片方…

CSS平滑滾動效果實現方法

一、純CSS實現方案 使用 scroll-behavior 屬性 屬性值 auto (默認值)&#xff1a;滾動框立即滾動smooth&#xff1a;滾動框以平滑的方式滾動 /* 全局平滑滾動 */ html {scroll-behavior: smooth; }/* 特定容器平滑滾動 */ .scroll-container {scroll-behavior: smooth;over…