Ansible安裝與入門

目錄

Ansible

ansible任務執行模式

ansible執行流程

ansible命令執行過程(背會)

ansible的安裝方式

ansible的程序結構(yum安裝為例)

ansible的配置文件查找順序(背會)

核心配置文件

ansible的配置文件

Ansible常用命令

ansible-doc命令

部署ansible管理集群

實驗環境

實驗步驟

????????安裝ansible

????????核心配置文件

????????添加主機清單

????????ansible的主機清單

免密設置

ansible配置公私鑰

? ? ? ? 配置公私鑰

? ? ? ? copy一份公私鑰給web主機

主機連通性測試

命令測試是否正常

Ansible常用模塊


Ansible

ansible任務執行模式
  • ansible系統由控制主機被管節點的操作方式可以分為兩類,即adhoc和playbook

  • ad-hoc模式(點對點模式)

使用單個模塊,支持批量執行單條命令。ad-hoc命令是一種可以快速輸入的命令,而且不需要保存起來的命令。就相當于bash中的一句話shell

  • playbook模式(劇本模式)

劇本模式是Ansible的主要管理方式,也是Ansible功能強大的關鍵所在。playbook通過多個task(任務)集合完成一類功能,比如web服務的安裝部署、數據庫服務的批量備份等。可以簡單地把playbook理解為通過組合多條ad-hoc操作的配置文件

ansible執行流程
  • 簡單理解就是Ansible在運行時,首先讀取ansible.cfg中的配置,根據規則獲取Inventory中的管理主機列表,并行的在這些主機中執行配置的任務,最后等待執行返回結果。

ansible命令執行過程(背會)
  • 加載自己的配置文件,默認為/etc/ansible/ansible.cfg;

  • 查找對應的主機配置文件,找到要執行的主機或者組;

  • 加載自己對應的模塊文件,如command;

  • 通過ansible將模塊或者命令生成對應的py文件(python腳本),并且將該文件傳輸到遠程服務器;

  • 對應執行用戶的家目錄.ansible/tmp/xxx/xxx.py文件;

  • 給文件添加執行權限;

  • 執行并且返回結果;

  • 刪除臨時的py文件, sleep 0退出;

ansible的安裝方式

使用yum安裝

yum安裝是我們比較熟悉的安裝方式。我們需要先安裝一個epel-release包,然后再安裝ansible即可。

yum install epel-release -y
yum install ansible -y
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum install ansible -y
ansible的程序結構(yum安裝為例)
  • 配置文件目錄:/etc/ansible/

  • 執行文件目錄:/usr/bin/

  • Lib庫依賴目錄:/usr/lib/pyhtonX.X/site-packages/ansible/

  • Help文檔目錄:/usr/share/doc/ansible-X.X.X/

  • Man文檔目錄:/usr/share/man/man1/

ansible的配置文件查找順序(背會)
  • ansible與我們其他的服務在這一點上又很大的不同,這里的配置文件查找是從多個地方找的,順序如下:

1.檢查環境變量 ANSIBLE_CONFIG 指向的路徑文件(export ANSIBLE_CONFIG=/etc/ansible/ansible.cfg);

2. ~/.ansible.cfg,檢查當前目錄下的ansible.cfg配置文件;

3./etc/ansible.cfg檢查etc目錄的配置文件。

核心配置文件

? ? ? ? 可用文件里命令生成一個

[root@localhost ~]# cd /etc/ansible/
[root@localhost ansible]# ls
ansible.cfg ?hosts ?roles
[root@localhost ansible]# vim ansible.cfg?[root@localhost ansible]# ansible-config init --disabled -t all > ansible.cfg

[root@localhost ansible]# ansible-config init --disabled -t all > ansible.cfg
[root@localhost ansible]# vim ansible.cfg 

ansible的配置文件
  • ansible的配置文件路徑是/etc/ansible/ansible.cfg,ansible許多參數,下面我們列出一些常見的參數:

vim  /etc/ansible/ansible.cfg
inventory = /etc/ansible/hoste    #這個參數表示資源清單inventory文件的位置
library = /usr/share/ansible    #指向存放ansible模塊的目錄,支持多個目錄方式,只要用冒號(:)隔開就行。fbrks = 5    #并發連接數,默認為5
sudo_user = root    #設置默認執行命令的用戶 ,2.14版本中是:become_user=root
remote_port = 22    #指定連接被管理節點的端口,默認為22端口,為安全考慮,建議修改
host_key_checking = False    #設置是否檢查SSH主機的密鑰,值為True/False,關閉后第一次連接不會提示配置實例
timeout = 60    #設置SSH連接的超時時間,單位為秒
log_path = /var/log/ansible.cfg    #指定一個存儲ansible日志的文件(默認不記錄日志)
[defaults]
inventory = /etc/ansible/hosts #主機清單文件路徑。Ansible 通過此文件定義目標主機/組。
library = /usr/share/ansible/modules #Ansible 內置模塊的搜索路徑。若需加載自定義模塊,可添加路徑
modules_dir = /usr/share/ansible/modules #與 library 類似,但僅用于查找模塊
remote_user = root #遠程主機的登錄用戶。默認以 root 身份登錄目標主機(生產環境建議改為普通用戶,配合 become 提權)。
ask_pass = False ## 是否提示輸入登錄密碼。若 remote_user 非免密登錄,設為 True 會交互式詢問密碼(不安全,推薦用 SSH 密鑰免密)。
private_key_file = None ##SSH 私鑰文件路徑。用于免密登錄(如 private_key_file = ~/.ssh/id_rsa)。
remote_port = 22 ## 遠程 SSH 端口。若目標主機 SSH 非默認端口(如 2222),需修改此值(remote_port = 2222)。
timeout=10  #SSH 連接超時時間(秒)。網絡不穩定時可調大(如 timeout = 30)。
log_path=None #Ansible 操作日志路徑。設為 /var/log/ansible.log 可記錄詳細執行日志(需確保文件可寫)。
module_name = command #未指定模塊時的默認模塊。例如 ansible host -m shell 可省略 -m shell(不推薦,易混淆)。
executable=	/bin/sh #命令執行的 Shell 解釋器。若目標主機默認 Shell 非 /bin/sh(如 /bin/bash),可修改(executable = /bin/bash)
prompt=	\# ##特權用戶提示符匹配規則。用于判斷是否已提權(如 prompt = \$ 可識別 $ 或 #)。
fact_caching=False #是否啟用事實緩存(Facts Caching)。設為 True 可緩存主機信息(如 fact_caching = jsonfile,配合 fact_caching_connection 指定存儲路徑
fact_caching_timeout=86400 #事實緩存過期時間(秒)。默認 24 小時(86400 秒),可根據需求調整(如 fact_caching_timeout = 3600 緩存 1 小時)。
deprecation_warnings=True #是否顯示已棄用警告。生產環境可設為 False 減少冗余輸出(deprecation_warnings = False)。
display_skipped_hosts=True #是否顯示跳過的主機。若任務因條件不滿足跳過某些主機,設為 False 可隱藏這些主機的輸出(display_skipped_hosts = False)。
host_key_checking=True #是否檢查 SSH 主機密鑰。首次連接新主機時會提示確認指紋,設為 False 可跳過(生產環境不建議,存在中間人攻擊風險)。
inventory_ignore_extensions=['.pyc', '.pyo', '.swp', '.swo'] # 忽略的清單文件擴展名。避免誤加載臨時文件(如 inventory_ignore_extensions = ['.bak'])。
action_plugins=/usr/share/ansible/plugins/action # Action 插件搜索路徑。自定義 Action 插件可添加至此(如 action_plugins = /opt/my_plugins/action)。
callback_plugins=/usr/share/ansible/plugins/callback #Callback 插件搜索路徑。用于自定義輸出格式(如集成 Jenkins、Slack 等)。
filter_plugins=/usr/share/ansible/plugins/filter # Filter 插件搜索路徑。自定義變量過濾邏輯(如 filter_plugins = /opt/my_plugins/filter)
test_plugins= /usr/share/ansible/plugins/test # Test 插件搜索路徑。用于測試變量或文件(如 test_plugins = /opt/my_plugins/test)
vars_plugins = /usr/sha
Ansible常用命令
[root@localhost ansible]# ls /usr/bin/| grep ansible
ansible
ansible-community
ansible-config
ansible-connection
ansible-console
ansible-doc
ansible-galaxy
ansible-inventory
ansible-playbook
ansible-pull
ansible-vault
#### ansible命令集解釋*   /usr/bin/ansible,Ansible AD-Hoc臨時命令執行工具,常用于臨時命令的執行
*   /usr/bin/ansible-doc,Ansible模塊功能查看工具(document)
*   /usr/bin/ansible-galaxy,下載上傳優秀的代碼或者Roles模塊的官網平臺,基于網絡的
*   /usr/bin/ansible-playbook,Ansible定制自動化的任務集編排工具
*   /usr/bin/ansible-pull,Ansible遠程執行命令的工具,拉取配置而非推送配置(使用較少,海量機器時使用,對運維架構能力要求高)
*   /usr/bin/ansible-vault,Ansible文件加密工具
*   /usr/bin/ansible-console,Ansible基于Linux Consoble界面可與用戶交互的命令執行工具
ansible-doc命令

ansible-doc命令常用于獲取模板塊信息及其適用幫助,一般用法如下:

ansible-doc -l    ##獲取全部模塊信息
ansible-doc -s MOD_NAME    #獲取指定模塊的使用幫助

部署ansible管理集群

全程是只需要,在ansible上面操作就行!!!

實驗環境
主機名IP地址安裝包
ansible192.168.158.164epel-release、ansible
node1192.168.158.159-
node2192.168.158.160-
實驗步驟
????????安裝ansible
[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# su
[root@ansible ~]# yum install epel-release -y
[root@ansible ~]# yum install ansible -y
????????核心配置文件

????????可用文件里命令生成一個

[root@localhost ~]# cd /etc/ansible/
[root@localhost ansible]# ls
ansible.cfg ?hosts ?roles
[root@localhost ansible]# vim ansible.cfg?[root@localhost ansible]# ansible-config init --disabled -t all > ansible.cfg
????????添加主機清單
[root@ansible ~]# cd /etc/ansible/
[root@ansible ansible]# ls
ansible.cfg  hosts  roles
[root@ansible ansible]# vi hosts [web]        ##添加到最后一行
192.168.158.159
192.168.158.160
????????ansible的主機清單
  • 在配置文件中,我們提到了資源清單,這個清單就是主機清單,里面保存的是一些ansible需要連接管理的主機列表。

  • 如下是ansible主機清單的定義方式:

  • vim /etc/ansible/hosts

(直接在末尾添加)

例如:

1.直接指明主機地址或者主機名:
#green.example.com#
#bule.example.com#
# 192.168.115.101
# 192.168.115.1022.定義一個主機組(組名)把地址或者主機名加進去
[mysql_test]
192.168.115.101
192.168.115.102
192.168.115.103
  • 需要注意的是,這里的組成員可以使用通配符來匹配,這樣對于一些標準化管理就比較方便。我們可以根據實際情況來配置我們的主機列表,具體的操作如下:

vi /etc/ansible/hosts ?#定義一組web主機組[web]
192.168.158.159
192.168.158.160

免密設置

ansible配置公私鑰
? ? ? ? 配置公私鑰
? ? ? ? copy一份公私鑰給web主機
[root@localhost ansible]# ssh-keygen -N '' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/fwy5SFyKfwKf61esKQk57v7ok2gruFMyf1tncudYKA root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|                 |
|         .       |
|        S.= o.   |
|   . o . B+*+oo  |
|    = o E +***.. |
|   + o . *o+B=o. |
|    +.. ooOO*=+  |
+----[SHA256]-----+
[root@localhost ansible]# ssh-copy-id 192.168.158.159
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.158.159 (192.168.158.159)' can't be established.
ED25519 key fingerprint is SHA256:T18Ri2Kqfht/W/As6DBvSPOqvDBUhgWq5aORE9E4CPQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.158.159's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.158.159'"
and check to make sure that only the key(s) you wanted were added.[root@localhost ansible]# ssh-copy-id 192.168.158.160
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.158.160 (192.168.158.160)' can't be established.
ED25519 key fingerprint is SHA256:T18Ri2Kqfht/W/As6DBvSPOqvDBUhgWq5aORE9E4CPQ.
This host key is known by the following other names/addresses:~/.ssh/known_hosts:1: 192.168.158.159
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.158.160's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.158.160'"
and check to make sure that only the key(s) you wanted were added.
主機連通性測試
命令測試是否正常
[root@localhost ansible]# ansible 192.168.158.159 -m ping 
192.168.158.159 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
[root@localhost ansible]# ansible 192.168.158.160 -m ping 
192.168.158.160 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}

Ansible常用模塊

    • ?**command?&?shell:?**? (執行命令)
      • ?作用:?? 讓你的“小機器人”在被管服務器上運行命令。就像你打開服務器的命令行窗口輸入指令一樣。
      • ?區別:??
        • command:只運行簡單命令,不支持管道符(|)、重定向(>?<)、環境變量($HOME)這些復雜操作。
        • shell:可以運行任何你在命令行能運行的復雜命令,支持管道、重定向、變量。 ?注意:?? 能用?command?就用?command,更安全、結果更穩定;實在需要復雜操作再用?shell
    • ?**copy?&?fetch:?? (文件傳輸) - ?方向相反!?**?
      • ?**copy:?? 作用是把你本地的文件或者Playbook目錄下的文件**,?復制到被管服務器上。就像你讓管家把你電腦里的文件A拿到服務器B上去放好。
      • ?**fetch:?? 作用是從被管服務器上把文件拉取(下載)到你運行Playbook的電腦**?(控制節點)。就像你讓管家去服務器B上把某個重要的日志文件C拿回來給你看。
    • ?**file:?**? (文件/目錄管理)
      • ?作用:?? 操作文件和目錄本身(不是內容)。讓管家去創建文件、目錄、設置權限(讀、寫、執行)、更改所有者、創建軟鏈接/硬鏈接等。比如:在服務器上創建目錄?/data,權限設為?755,所有者是?www-data
    • ?**fetch:?**? (上面已介紹)
    • ?**cron:?**? (定時任務)
      • ?作用:?? 讓管家在服務器上設置(添加、修改、刪除)定時任務(cron job)?。就像配置“服務器上的鬧鐘”,讓它定期執行某個命令或腳本(比如每天凌晨備份數據庫)。
    • ?**yum?(CentOS/RHEL) /?apt?(Ubuntu/Debian):?? (軟件包管理) - ?圖片是?yum,注意你的系統!?**?
      • ?作用:?? 讓管家在服務器上安裝、更新、卸載、查看軟件包。就像用手機上的“應用商店”裝/卸載APP一樣。
    • ?**service:?**? (服務管理)
      • ?作用:?? 讓管家啟動、停止、重啟、重新加載、查看系統服務的狀態。比如啟動Nginx網站服務(nginx)、停止MySQL數據庫服務(mysqld)。
    • ?**user?&?group:?**? (用戶/組管理)
      • ?作用:??
        • user:讓管家創建、修改、刪除用戶賬號,設置密碼、家目錄、Shell、所屬組等。
        • group:讓管家創建、修改、刪除用戶組,管理組成員。
    • ?**script:?**? (運行腳本)
      • ?作用:?? 讓管家把你寫在本地的Shell腳本、Python腳本等復制到被管服務器上去執行。比如你寫了一個?backup.sh?的備份腳本,用這個模塊傳到服務器上并運行它。
    • ?**setup?(或?gather_facts):?**? (收集信息)
      • ?作用:?? Ansible管家在執行任何任務前,會自動收集被管服務器的各種信息(主機名、IP地址、操作系統版本、內存大小、磁盤空間等)。你可以在任務中直接使用這些信息(稱為?facts),實現更智能的自動化(比如根據內存大小設置不同的軟件參數)。這個模塊就是負責收集這些信息的,默認會自動運行。

????????

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

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

相關文章

【Spring】Spring Boot啟動過程源碼解析

目錄 一、啟動入口 二、SpringApplication的構造過程 2.1 設置應用類型 2.2 設置初始化器&#xff08;Initializer&#xff09; 2.2.1 獲取BootstrapRegistryInitializer對象 2.2.2 獲取ApplicationContextInitializer對象 2.3 設置監聽器&#xff08;Listener&#xff…

CDN架構全景圖

CDN架構全景圖 CDN&#xff08;內容分發網絡&#xff09;是一種通過在全球范圍內部署邊緣節點服務器&#xff0c;將內容緩存至離用戶最近的位置&#xff0c;從而加速內容分發、降低延遲并減輕源站壓力的分布式網絡架構。其核心設計目標是優化互聯網內容傳輸效率&#xff0c;提升…

【pytest高階】源碼的走讀方法及插件hook

一、pytest源碼走讀方法 依賴庫認知篇 &#x1f4e6;這是理解 pytest 源碼的 “前菜”&#xff0c;先認識 3 個超重要的小伙伴&#xff1a;iniconfig &#x1f4c4;&#xff1a;像個 “文件小管家”&#xff0c;專門負責讀取 ini 配置文件&#xff08;比如 pytest 的配置&#…

算法訓練營day32 動態規劃理論基礎、509. 斐波那契數、70. 爬樓梯、746. 使用最小花費爬樓梯

今天開始動態規劃的部分&#xff01; 其實說白了&#xff0c;動態規劃我感覺就是找類似遞歸的規律&#xff0c; 動態規劃理論基礎 動態規劃&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;簡稱DP&#xff0c;如果某一問題有很多重疊子問題&#xff0c;使用動態規…

基于神經網絡的手寫數字識別系統

基于神經網絡的手寫數字識別系統 結合模板匹配和神經網絡兩種方法進行手寫數字識別。這個系統包括圖像預處理、特征提取、神經網絡訓練和可視化分析。 %% 基于神經網絡的手寫數字識別系統%% 清理工作區 clear; clc; close all;%% 加載手寫數字數據集 % 使用MATLAB自帶的手寫數字…

機器學習?一文看懂這門熱門技術

&#x1f31f; 什么是機器學習&#xff1f;一文看懂這門熱門技術在人工智能&#xff08;AI&#xff09;的大潮中&#xff0c;機器學習&#xff08;Machine Learning, ML&#xff09; 無疑是最耀眼的明星之一。它讓計算機具備了 “自我學習” 的能力&#xff0c;讓自動駕駛、智能…

Spring的初始化鉤子

1. PostConstruct JSR-250 標準注解&#xff08;不是 Spring 獨有&#xff09;&#xff0c;用來標記 Bean 初始化完成后要執行的方法。會在 Bean 的構造方法執行完、依賴注入完成后執行。 使用實例&#xff1a; Component public class Demo {PostConstructpublic void init() …

【AI】Java生態對接大語言模型:主流框架深度解析

文章目錄1. Deep Java Library (DJL)2. LangChain4j&#xff08;LLM&#xff09;3. HuggingFace Inference API4. OpenAI Java Client技術對比矩陣架構設計建議在人工智能浪潮下&#xff0c;大語言模型&#xff08;LLM&#xff09;已成為技術核心。Java生態通過以下框架實現高效…

【06】C#入門到精通——C# 多個 .cs文件項目 同一項目下添加多個 .cs文件

文章目錄1 單個 .cs文件2 創建 多個 .cs文件2.1 添加Hero類2.1 添加ShowInfo類2.3 關于命名空間的引用2.4 所有.cs文件代碼3 test3項目文件下載1 單個 .cs文件 上一講中 描述游戲中英雄的角色 所有代碼在一個.cs文件中&#xff0c; 如果代碼很多&#xff0c;類很多&#xff0…

【MySQL基礎篇】:MySQL常用數據類型的選擇邏輯與正確使用

?感謝您閱讀本篇文章&#xff0c;文章內容是個人學習筆記的整理&#xff0c;如果哪里有誤的話還請您指正噢? ? 個人主頁&#xff1a;余輝zmh–CSDN博客 ? 文章所屬專欄&#xff1a;MySQL篇–CSDN博客 文章目錄數據類型1.數據類型分類2.數值類型int整形類型bit位類型float小…

三、搭建springCloudAlibaba2021.1版本分布式微服務-springcloud loadbalancer負載均衡

什么是負責均衡 Spring Cloud LoadBalancer是一個客戶端負載均衡器&#xff0c;類似于Ribbon&#xff0c;但是由于Ribbon已經進入維護模式&#xff0c;并且Ribbon 2并不與Ribbon 1相互兼容&#xff0c;所以Spring Cloud全家桶在Spring Cloud Commons項目中&#xff0c;添加了Sp…

Oracle不完全恢復實戰指南:從原理到操作詳解

核心提示&#xff1a;當誤刪表、日志損壞或控制文件丟失時&#xff0c;Oracle的不完全恢復是DBA最后的救命稻草。掌握關鍵恢復技術&#xff0c;可在數據災難中力挽狂瀾。一、不完全恢復核心概念 1. 核心特點 必須關閉數據庫&#xff1a;在MOUNT狀態下執行重做日志恢復權限要求&…

Linux之shell腳本篇(二)

一、shell編程之if語句引言Linux在shell編程中&#xff0c;通常都是以自上而下運行&#xff0c;但是為了提高其代碼嚴謹性&#xff0c;我們即引入了多條件 控制語句例如&#xff1a;if、for、while、case等語句&#xff0c;有時候針對條件我們還會結合正則表達式去運用。將這些…

如何在android framewrok dump camera data

實現dump 函數 實現1 void dumpBufferToFile(buffer_handle_t* buffer, int width, int height, int frameNum) {void* data NULL;GraphicBufferMapper::getInstance().lock(*buffer, GRALLOC_USAGE_SW_READ_OFTEN, Rect(width, height), &data);char filename[128];sprin…

機器學習中的可解釋性:深入理解SHAP值及其應用

機器學習可解釋性的重要性在人工智能技術快速發展的2025年&#xff0c;機器學習模型已經深度滲透到醫療診斷、金融風控、司法量刑等關鍵領域。然而&#xff0c;隨著模型復雜度的不斷提升&#xff0c;一個根本性矛盾日益凸顯&#xff1a;模型預測性能的提升往往以犧牲可解釋性為…

.NET9 使用 OData 協議項目實戰

.NET 中 ODate 協議介紹 OData(Open Data Protocol) 是一個開放的 Web 協議&#xff0c;用于查詢和更新數據。在 .NET 生態系統中&#xff0c;OData 被廣泛支持和使用。 主要特性 1. 統一的數據訪問方式 提供標準化的查詢語法支持 CRUD 操作支持元數據描述 2. 查詢能力 標…

Android 性能優化:提升應用啟動速度(GC抑制)

前言 在移動應用開發領域&#xff0c;啟動速度是用戶體驗的重要指標。對于Android應用而言&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;機制雖然是內存管理的核心&#xff0c;但在應用啟動期間頻繁觸發GC會顯著拖慢啟動速度。本文將深入探討如何通過GC…

做了一款小而美的本地校驗器

需求說明 前陣子收到一則讀者留言&#xff0c;指出&#xff1a;市面上AI核稿工具&#xff08;ProWritingAid&#xff0c;WPS AI Spell Check&#xff0c;Writer&#xff0c;QuillBot&#xff0c;Grammarly&#xff09;要么收費太高&#xff0c;要么讓人擔心文章泄露。 如下圖所…

uniapp + uview-plus 微信小程序二維碼生成和保存完整解決方案

uniapp + uview-plus 微信小程序二維碼生成和保存完整解決方案 ?? 項目背景 在開發微信小程序時,經常需要實現二維碼的生成和保存功能。本文檔提供了一個基于 uniapp + uview-plus 框架的完整解決方案,徹底解決了以下常見問題: ? Canvas API 兼容性問題 ? 微信小程序權…

Linux中應用程序的安裝于管理

Linux中應用程序的安裝于管理 一 . rpm安裝 1.掛載 光驅里面存放了很多rpm的軟件包 光驅在系統中使用時&#xff0c;需要掛載 mount /dev/cdrom /mnt/ cd /mnt[rootstw mnt]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packag…