Android 調試橋 (adb) 基礎知識點

Android 調試橋 (adb) 是一種功能多樣的命令行工具,可讓您與安卓手機進行通信。常用于輔助測試開發或定位問題。

一、adb的工作原理 🌟

  1. 啟動服務器進程:檢查是否adb服務器進程正在運行,若沒有則啟動。
    • 啟動或關閉adb服務:adb start-serveradb kill-server
  2. 綁定端口:服務器進程與本地TCP端口5037綁定。(所有 adb 客戶端均使用端口 5037 與 adb 服務器通信)
  3. 監聽adb客戶端發出的命令
  4. 掃描查找模擬器:服務器掃描5555~5585之間的奇數號端口查找模擬器(供前 16 個模擬器使用)。
  5. 建立連接:服務器一旦發現 adb 守護程序 (adbd),便會與相應的端口建立連接。
    PS:每個模擬器都使用一對按順序排列的端口:一個用于控制臺連接的偶數號端口,另一個用于 adb 連接的奇數號端口。(adb連接=奇數號,控制臺連接=奇數號-1
    • 自動連接:在設備的系統設置中啟用 USB 調試,用數據線連接到電腦,手機彈窗確認授權
    • 手動連接:adb connect 設備序列號
  6. 可使用 adb 命令訪問設備

adb基礎命令

  • start-server: 確保ADB服務器正在運行。
  • kill-server:終止正在運行的ADB服務器。
  • -a: 指定adb server監聽同一局域網下所有網絡接口,而不僅僅是localhost。
  • -d: 指定使用USB連接的設備。(多個會報錯)
  • -e: 指定使用TCP/IP連接的設備(多個會報錯)。
  • -s SERIAL: 通過設備的序列號指定要操作的設備
  • -H: 指定adb server的主機名(默認是localhost)。
  • -P: 指定adb server的端口(默認是5037)。
  • -L SOCKET: 指定adb server監聽的socket(默認是tcp:localhost:5037)。
  • help: 顯示幫助信息。
  • version: 顯示adb的版本號。

二、設備連接與識別

1、連接設備

  • 物理連接(USB) 🌟:
    電腦啟動adb服務 + 手機開啟USB調試 + 使用數據線插入電腦USB插口 + 電腦上安裝USB驅動程序 + 手機確認授權

  • 網絡連接 🌟(同一個局域網Wi-Fi下的TCP/IP連接):
    物理連接成功 + adb tcpip <port>設備上的守護進程(adbd)監聽指定端口 + 斷開USB連接 + adb connect <device_ip_address>:<port>連接設備

  • 網絡連接 - 反向連接 (Reverse Connection):本質還是建立在物理連接或者網絡連接的基礎之上,設備連接成功后,解決無法直接訪問開發機特定端口的問題,通過端口轉發,在設備上調試運行在開發機上的服務。
    請求過程:USB連接 >> adb reverse tcp:<device_port> tcp:<local_port> 建立反向連接 >> 開發機上啟動服務監聽端口請求 >> 手機應用上發起API請求localhost:<設備端口>時,將對應端口的請求轉發到開發機對應端口上 >> 開發機上的后端服務處理請求 >> 響應沿著原路(ADB 服務端 -> USB -> 設備 adbd -> 應用)返回給 Android 應用。

  • 通過 Android 調試橋接工具 (如 scrcpy, Vysor),本質還是建立在物理連接或者網絡連接的基礎之上。

  • 通過 Android Studio 的虛擬設備管理 (AVD Manager):Android Studio 在啟動模擬器時,會自動配置并連接到 adb。

  • 特殊模式連接

    • Recovery 模式: USB連接,adb devices 可能能看到設備(序列號可能不同),狀態通常是 recoverysideload 而不是 device。用于刷寫第三方 Recovery、卡刷包、救磚等。
    • Bootloader / Fastboot 模式: USB連接,adb devices 看不到設備,需要使用 fastboot devices 命令來查看設備,用于刷寫分區、解鎖 Bootloader 等底層操作。
連接方式典型場景優點缺點/要求adb devices 輸出示例
USB常規開發調試、刷機、文件傳輸穩定、高速、安全需要線纜、驅動/權限配置ABCDEF123456 device
Wi-Fi (adb tcpip)無線調試、設備固定不便插線無線自由、方便多設備需初始USB授權、依賴網絡質量、稍慢、有安全風險192.168.1.100:5555 device
Wi-Fi (設備端開)Android 11+ 無線調試、無USB線初始無需初始USB線可能需要Root/特定系統、依賴網絡、安全風險最高192.168.1.100:42424 device (端口可能不同)
反向連接設備調試開發機上的服務穿透 NAT/防火墻不是設備控制連接,是端口轉發隧道(依賴基礎連接狀態)
工具橋接使用 Scrcpy/Vysor 等工具進行屏幕控制圖形界面、功能集成底層仍是 USB/WiFi(同底層連接方式)
Android Studio AVD使用 Android 模擬器開發開箱即用、無縫集成僅限模擬器emulator-5554 device
Recovery刷寫第三方 Recovery、卡刷包、救磚系統級操作非所有設備支持、功能有限RECOVERY1234 recovery (可能)
Fastboot解鎖 Bootloader、刷寫分區、線刷底層操作必備adb 不可用,需 fastboot(不可見,用 fastboot devices)

通過TCP/IP連接設備:

  • connect HOST[:PORT]: 通過TCP/IP連接到設備,默認端口5555。
  • disconnect [HOST[:PORT]]:斷開指定TCP/IP設備的連接,如果不指定則斷開所有。
  • reconnect:從主機端強制重新連接設備。這個命令會斷開當前連接并嘗試重新連接設備。
  • reconnect device:從設備端強制重新連接。這個命令會通知設備斷開與當前主機的連接,然后重新連接。
  • reconnect offline:將離線(offline)或未授權(unauthorized)的設備重置,強制其重新連接。
  • pair HOST[:PORT]: 與設備進行配對,用于安全的TCP/IP通信(Android 11及以上)。

2、查看已連接設備

查看已連接設備:adb devices 支持-l查看設備信息,格式為:<設備序列號> <連接狀態> <設備信息>,輸出如下:

List of devices attached
127.0.0.1:5555         device product:cancro_x86_64 model:Mate_10_Pro device:x86_64 transport_id:1
  • 物理設備:設備的硬件序列號(Serial Number, SN)
  • 模擬器: 格式為 emulator-<端口號>(例如 emulator-5554)。
  • 網絡設備: 通過 adb connect <ip:port> 連接的設備會顯示其 IP 地址和端口號(如 192.168.1.100:5555)。

已連接多個設備時,通過-s <serial>指定設備:adb -s 127.0.0.1:5555 ...

3、設備狀態識別

  • device(已授權并可用):
    正常可訪問的狀態。

  • offline(設備未響應/未完成授權):
    adbd 進程崩潰/未啟動、USB 線/端口問題、設備處于不穩定狀態(如剛啟動)、ADB 版本與設備不兼容。

  • unauthorized(用戶未在設備上授權 USB 調試):
    設備已連接,但用戶尚未在設備彈出的 “Allow USB debugging?” 對話框中點擊 “Allow”。

  • no permissions(Linux/Mac 下常見權限問題):
    ADB 沒有足夠的權限訪問 USB 設備。

  • no devices/empty list
    沒有檢測到任何連接的設備或模擬器。

4、設備連接異常排查

確認連接方式相關聯的連接要素,有針對性的排查。

5、端口轉發

端口轉發:

  • forward --list: 列出所有正向端口轉發。
  • forward [--no-rebind] LOCAL REMOTE: 建立端口轉發。
    • 如果使用--no-rebind,當本地端口已經被轉發時,命令會失敗。
    • 支持的轉發類型比如tcp:<端口號>:TCP端口
  • forward --remove LOCAL: 移除指定的轉發。
  • forward --remove-all: 移除所有轉發。

反向端口轉發(reverse)

  • reverse --list: 列出所有反向端口轉發(從設備到主機)。
  • reverse [--no-rebind] REMOTE LOCAL: 建立反向端口轉發。
  • reverse --remove REMOTE: 移除指定的反向轉發。
  • reverse --remove-all: 移除所有反向轉發。

三、應用包管理

1、安裝與卸載

adb install 命令

在主機(PC)上執行的命令,用于將PC上的APK文件安裝到設備

  • 安裝1個APK包:install [-lrtsdg] [--instant] PACKAGE
  • 安裝1個/多個APK包(空格隔開):install-multi-package [-lrtsdpg] [--instant] PACKAGE...
  • 為單個包安裝多個APK:install-multiple [-lrtsdpg] [--instant] PACKAGE...(拆解APKs的場景)
  • 卸載:uninstall [-k] PACKAGE

參數說明:

  • -r(replace): 覆蓋安裝
  • -t(test): 允許安裝測試包(針對 AndroidManifest 中的 android:testOnly
  • -d(downgrade): 允許降級安裝 (僅可調試的包可用)
  • -p(partial): 部分安裝 (僅安裝APKs可用)
  • -g(grant): 自動授予所有運行時權限(Android 6.0+)
  • --instant:應用無需完整安裝即可運行,但功能受限(不能使用后臺服務、開機啟動等)
  • --no-streaming:禁用流式安裝。將整個 APK 文件推送到設備后再觸發安裝
  • --fastdeploy:啟用快速部署,比較設備上現有 APK 和新 APK 的差異,僅推送差異部分
  • --no-fastdeploy:禁用快速部署
  • -k(keep):卸載但保留數據和緩存目錄(僅卸載可用)
adb shell pm install命令

在設備shell中執行的命令,用于安裝設備上已經存在的APK文件

  • pm install [-lrtsfd] [-i PACKAGE] [--user USER_ID] [PATH]
    在這里插入圖片描述
  • 卸載:pm uninstall [-k] [--user USER_ID] PACKAGE
adb install 與pm install的區別

1. 執行位置不同

adb install
pm install
PC端
設備服務
設備Shell
包管理器

2. 文件路徑處理

場景adb installpm install
APK位置PC本地路徑
(/path/to/app.apk)
設備存儲路徑
(/sdcard/app.apk)
安裝流程自動推送文件到設備需手動提前推送文件
示例adb install app.apkadb push app.apk /sdcard
adb shell pm install /sdcard/app.apk

3. 權限要求對比

操作adb installpm install
普通安裝? 無需特殊權限? 普通權限
降級安裝? (-d) 普通權限🔴 需ROOT
自動授權? (-g) 普通權限🔴 需ROOT
系統應用操作🔴 無法操作? 需ROOT

4. 功能覆蓋范圍

功能adb installpm install
流式安裝? (--streaming)?
快速部署? (--fastdeploy)?
即時應用? (--instant)? (--ephemeral)
多用戶管理?? (--user)
安裝來源控制?? (-i)

pm install在自動化方向的優勢:

  • 文件傳輸和安裝完全解耦,傳輸/安裝故障隔離,可分段處理,比如弱網超時可重試
  • 錯誤信息處理:pm install返回系統級錯誤信息(含Java堆棧)
  • CPU占用和內存波動較穩定

2、應用查詢

列出應用包名:adb shell pm list packages [-s3fi]

  • -s:系統應用
  • -3:第三方應用
  • -f:顯示 APK 路徑
  • -i:顯示安裝來源

3、應用數據管理

  • adb shell pm clear PACKAGE:清楚應用數據。
  • adb shell pm path PACKAGE:獲取 APK 包路徑。
  • adb shell dumpsys package PACKAGE:導出包數據。
  • adb backup -f data.ab PACKAGE:數據備份。
  • adb restore data.ab:恢復應用數據。

4、應用狀態控制

命令作用示例
enable啟用應用/組件adb shell pm enable com.example.app
disable禁用應用adb shell pm disable com.example.app
disable-user用戶級禁用adb shell pm disable-user com.example.app
hide隱藏應用adb shell pm hide com.example.app
unhide取消隱藏adb shell pm unhide com.example.app
suspend凍結應用adb shell pm suspend com.example.app
unsuspend解凍應用adb shell pm unsuspend com.example.app

組件級控制

# 禁用特定 Activity
adb shell pm disable com.example.app/.MainActivity

5、權限管理

命令作用示例
grant授予權限adb shell pm grant com.example.app android.permission.CAMERA
revoke撤銷權限adb shell pm revoke com.example.app android.permission.CAMERA
reset-permissions重置權限adb shell pm reset-permissions
set-permission-enforcer設置權限策略adb shell pm set-permission-enforcer 0 (0=允許,1=拒絕)

權限查詢

# 查看應用權限狀態
adb shell dumpsys package com.example.app | grep -A 20 "Permissions:"

四、文件操作

1、文件上傳

從本地電腦端將文件傳至遠程設備上:push [--sync] [-zZ] LOCAL... REMOTE

  • --sync:增量同步,僅傳輸更新文件
  • -z:啟用壓縮,傳輸時壓縮數據
  • -Z:禁用壓縮,原始數據傳輸

2、文件下載

從遠程設備上獲取文件到本地電腦端:pull [-azZ] REMOTE... LOCAL

  • -a:保留元數據,包括時間戳和權限

五、日志與調試信息獲取

1、bugreport - 系統診斷報告

adb bugreport [PATH]

2、logcat - 日志分析工具

adb logcat [options] [filterspecs]

📝 基本輸出控制

  • -s
    設置默認靜默過濾(等效于 *:S),推薦寫法:"*:S"\*:S
  • -v <format>
    設置日志輸出格式,可選值:
    brief, color, long, printable, process, raw, tag, thread, threadtime, time, usec
  • -D
    在日志緩沖區之間打印分隔線

💾 文件輸出與輪轉

  • -f <filename>
    將日志輸出到文件(默認 stdout)
  • -r <kbytes>
    按指定 KB 大小輪轉日志文件(需配合 -f
  • -n <count>
    設置保留的輪轉日志文件數量(默認 4,需配合 -f

🔍 日志讀取模式

  • -d
    轉儲日志后立即退出(非阻塞模式)
  • -c
    清空整個日志緩沖區并退出
  • -L
    輸出上次重啟前的日志

? 篩選特定日志范圍

  • -t <count>
    僅顯示最近 <count> 行日志(隱含 -d
  • -t '<time>'
    顯示指定時間后的日志(格式 MM-DD hh:mm:ss.mmm,隱含 -d
  • -T <count>
    持續顯示最近 <count> 行日志(不隱含 -d
  • -T '<time>'
    持續顯示指定時間后的日志(不隱含 -d

🎯 過濾規則(filterspecs)

優先級等級
  • V:Verbose(最詳細,單個標簽默認優先級
  • D:Debug(通配符 * 默認優先級
  • I:Info
  • W:Warn
  • E:Error
  • F:Fatal
  • S:Silent(完全屏蔽)
規則語法
  • <tag>[:priority]
    示例:
    • ActivityManager:I → 顯示該標簽 Info 及以上日志
    • *:W → 顯示所有標簽 Warning 及以上日志
  • 多規則組合
    adb logcat Tag1:I Tag2:D *:S
    (顯示 Tag1 的 Info+ 和 Tag2 的 Debug+,屏蔽其他所有標簽)
  • 靜默過濾
    *:S 強制屏蔽所有日志(常配合其他規則使用)

六、其他

📋 ADB 環境變量

1. ADB_TRACE

作用:控制 ADB 調試信息的輸出級別
格式:逗號分隔的列表(可多選)
可選值

  • all:所有調試信息
  • adb:ADB 基礎命令
  • sockets:套接字通信
  • packets:數據包傳輸細節
  • rwx:文件讀寫操作
  • usb:USB 連接詳情
  • sync:文件同步過程
  • sysdeps:系統依賴操作
  • transport:傳輸層活動
  • jdwp:Java 調試協議

示例

# 啟用 USB 和傳輸層調試
export ADB_TRACE=usb,transport
adb devices  # 將顯示詳細調試日志

2. ADB_VENDOR_KEYS

作用:指定自定義 ADB 密鑰文件/目錄(用于設備認證)
格式:冒號分隔的路徑列表
典型場景

  • 使用非默認 adbkey(如企業內部分發密鑰)
  • 多密鑰管理(同時支持個人和公司設備)

示例

# 添加兩個密鑰位置
export ADB_VENDOR_KEYS=~/.android/company_key:/custom_keys
adb connect 192.168.1.10  # 使用指定密鑰認證

3. ANDROID_SERIAL

作用:設置默認連接的設備序列號(等效于 adb -s <序列號>
使用場景

  • 多設備連接時自動選擇目標設備
  • CI/CD 流水線中指定特定測試設備

示例

# 設置默認設備序列號
export ANDROID_SERIAL=emulator-5554
adb shell  # 自動連接到 emulator-5554

4. ANDROID_LOG_TAGS

作用:預設 logcat 過濾規則(等效于 logcat <filterspecs>
格式:與 logcat 過濾規則相同(<tag>:<priority>
注意:優先級字母需大寫(V/D/I/W/E/F/S

示例

# 只顯示 Error 及以上日志
export ANDROID_LOG_TAGS="*:E"
adb logcat  # 自動應用過濾# 多規則組合
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"

5. ADB_LOCAL_TRANSPORT_MAX_PORT

作用:設置本地傳輸掃描的最大端口號(用于檢測模擬器)
默認值5585
計算規則

  • 端口范圍 = 55555555 + 16*(N-1)
  • 其中 N = ADB_LOCAL_TRANSPORT_MAX_PORT
    最大支持模擬器數16(默認)

示例

# 支持掃描 32 個模擬器
export ADB_LOCAL_TRANSPORT_MAX_PORT=32
adb devices  # 可檢測更多模擬器

🛠? 使用技巧

  1. 臨時設置(當前終端有效):

    export ANDROID_SERIAL=emulator-5556
    adb shell
    
  2. 永久配置(添加到 shell 配置文件):

    # 添加到 ~/.bashrc 或 ~/.zshrc
    echo 'export ANDROID_LOG_TAGS="*:W"' >> ~/.zshrc
    source ~/.zshrc
    
  3. 組合使用

    # 調試 USB 連接并指定設備
    export ADB_TRACE=usb
    export ANDROID_SERIAL=84B7N163020000123
    adb shell
    

?? 注意事項

  • 優先級:命令行參數 > 環境變量 > 默認值
    (如 adb -s emulator-5554 會覆蓋 $ANDROID_SERIAL
  • 端口限制:修改 ADB_LOCAL_TRANSPORT_MAX_PORT 需重啟 ADB 服務生效
    adb kill-server && adb start-server
    
  • 密鑰安全ADB_VENDOR_KEYS 中的私鑰需設置 600 權限
    chmod 600 ~/.android/custom_key
    

七、進階

adb shell命令 = 標準 Linux Shell 命令 + Android 專用工具和命令

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

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

相關文章

AW2013 LED驅動芯片 工作方式介紹

根據您上傳的 AW2013 芯片手冊&#xff0c;我將為您分三個部分詳細解讀&#xff1a;一、芯片簡介&#xff08;AW2013 概述&#xff09; AW2013 是一款 3 通道的 IC 控制恒流 LED 驅動芯片&#xff0c;支持以下功能&#xff1a;單通道最大恒流輸出&#xff1a;15mA&#xff0c;支…

node.js中的fs與path模塊

前言 什么是Node.js&#xff1f; Node.js 是一個開源和跨平臺的 JavaScript 運行時環境 Node.js 在瀏覽器之外運行 V8 JavaScript 引擎&#xff0c;即 Google Chrome 的核心。一、fs模塊基礎 1. 引入fs模塊 const fs require(fs);2. 同步與異步方法 fs模塊提供了同步和異步兩種…

C# 靜態類_靜態方法_靜態字段(static 聲明靜態的關鍵字 )

靜態類里面的所有成員都必須得是靜態的&#xff0c;是不能被實例化的(不能用對象調用)&#xff0c;不能在靜態類中聲明實例&#xff08;非靜態&#xff09;字段 屬性 方法 靜態方法中也只能訪問靜態字段&#xff0c; 普通方法中不管數據是不是靜態都能使用1、定義一個靜態類 //…

MRDIMM對服務器總體擁有成本(TCO)影響的系統性分析

以下是針對MRDIMM對服務器總體擁有成本&#xff08;TCO&#xff09;影響的系統性分析&#xff0c;結合技術特性與經濟性指標&#xff1a;一、MRDIMM降低TCO的核心機制帶寬效率提升 MRDIMM通過數據緩沖器實現雙Rank并行傳輸&#xff0c;單次數據傳輸量從標準RDIMM的64字節提升至…

c# openxml 打開加密 的word讀取內容

using System; using System.IO; using System.Linq; using System.Text; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing;/// <summary> /// 使用OpenXML獲取文檔內容&#xff0c;替代Aspose方式…

【SpringAI實戰】ChatPDF實現RAG知識庫

一、前言 二、實現效果 三、代碼實現 3.1 后端代碼 3.2 前端代碼 一、前言 Spring AI詳解&#xff1a;【Spring AI詳解】開啟Java生態的智能應用開發新時代(附不同功能的Spring AI實戰項目)-CSDN博客 二、實現效果 實現一個非常火爆的個人知識庫AI應用&#xff0c;ChatPDF…

Qt小組件 - 8 圖片瀏覽器

一個自制的圖片瀏覽器&#xff0c;如果不想安裝qfluentwidgets&#xff0c; CommandBarView可以使用QWidgetQPushButton替代安裝 qfluentwidgets pip install PySide6-Fluent-Widgets[full]代碼示例 # coding: utf-8 from typing import Unionfrom PySide6.QtCore import Qt, Q…

R study notes[1]

文章目錄introducing to Rreferencesintroducing to R R is an integrated suite involved data handling,storage facility,calculations on arrays,tools for data analysis and so on.running the command R in the terminal of OS can start R software.in R terminal ,to…

由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程

由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程 在上一篇文章中&#xff0c;由于 Oracle 數據庫的歸檔日志空間耗盡導致客戶端無法連接數據庫。在解決的過程中臨時修改了歸檔路徑。后來通過修改參數db_recovery_file_dest_size的值解決了問題。 但該操作導致DG無…

密碼學與加密貨幣:構建去中心化信任的技術基石與未來挑戰

密碼學是加密貨幣的技術基石&#xff0c;兩者通過數學原理構建去中心化信任體系。以下從技術原理、應用場景及未來挑戰三方面展開分析&#xff1a;一、密碼學基礎&#xff1a;加密貨幣的安全基石非對稱加密體系公鑰與私鑰&#xff1a;基于橢圓曲線密碼學&#xff08;ECC&#x…

用于 Web 認證的 抗量子簽名——ML-DSA 草案

1. 引言 本文描述了在 Web Authentication (WebAuthn) 中實現無密碼認證&#xff08;Passwordless authentication&#xff09;的方法&#xff0c;該方法使用模塊格&#xff08;Module-Lattice&#xff09;為基礎的數字簽名標準&#xff08;ML-DSA&#xff09;&#xff0c;即 …

ubuntu18.04解壓大的tar.gz文件失敗

1. 問題描述 我在vmware的虛擬機裝有petalinux環境&#xff0c;需要解壓downloads_2020.2.tar.gz這個大的壓縮包文件&#xff0c;但是總是失敗&#xff0c;而且過程很漫長 tar: downloads/git2/github.com.vim.vim.git/objects/pack/pack-f7f2e2add0c8972a9141b557ef725c38069…

App拉起:喚醒即達,告別繁瑣操作

在移動互聯網進入存量競爭的今天&#xff0c;“讓用戶少點一次、少等一秒”往往意味著20%以上的轉化率差異。openinstall把這套體驗總結成一套可落地的App拉起方案&#xff1a;一套SDK一組鏈接跳轉規則一個可自定義的落地頁&#xff0c;就能把Web→App的整條動線縮成一次點擊。…

開發指南125-HTML DOM事件

1、onload和onunload在頁面或某個元素加載完成后或離開后觸發事件。2、onchange用于在元素的值發生變化時觸發事件。一般用于<input>, <select>, <textarea>等元素3、onfocus 和 onblur激活或失去焦點時觸發4、onmouseover 和 onmouseout鼠標移入或移除時觸發…

使用redis 作為消息隊列時, 如何保證消息的可靠性

使用Redis作為消息隊列時&#xff0c;如何保證消息的可靠性 在分布式系統中&#xff0c;消息隊列扮演著不可或缺的角色&#xff0c;它能夠有效地實現服務間的解耦和異步通信。Redis憑借其出色的性能&#xff0c;常常被用作輕量級的消息隊列。然而&#xff0c;Redis本質上是一個…

CentOS7 安裝和配置教程

CentOS7 安裝和配置教程第一部分&#xff1a;安裝準備1. 下載CentOS 7鏡像2. 創建安裝介質第二部分&#xff1a;安裝步驟1. 在VMeare上安裝CentOS-7-x86_64-Minimal2. 安裝配置3. 安裝過程第三部分&#xff1a;初始配置1. 首次啟動設置2. 網絡配置3. 防火墻配置第四部分&#x…

clock_getres系統調用及示例

39. clock_getres - 獲取時鐘精度 函數介紹 clock_getres系統調用用于獲取指定時鐘的精度&#xff08;分辨率&#xff09;。它返回時鐘能夠表示的最小時間間隔。 函數原型 #include <time.h>int clock_getres(clockid_t clk_id, struct timespec *res);功能 獲取指定時鐘…

MCU+RTOS調試

1. 引言在做項目時&#xff0c;百分之三十的時間寫代碼&#xff0c;還有百分之70的時間用于調試。本期將以Keil為例進行調試章節的講解&#xff0c;目的在于做出一個標準化的調試步驟&#xff0c;方便大家學習如何調試代碼。內容分為基礎調試、中級調試及進階調試三部分&#x…

Redis的數據淘汰策略是什么?有哪些?

1.監測設置了TTL的數據volatile-lru&#xff1a;淘汰最近最少使用的數據volatile-lfu&#xff1a;淘汰最近使用次數最少的數據volatile-ttl&#xff1b;淘汰將要過期的數據volatile-random&#xff1a;隨機淘汰2.監測全庫數據allkeys-lru&#xff1a;淘汰最近最少使用的數據all…

相控陣波束躍度指向誤差Matlab仿真

波束躍度影響&#xff1a;TR芯片移相器位數、陣元數量、校準后陣元初始相位、TR芯片移相器精度、波控計算精度等。用MATLAB進行TR芯片移相器位數、陣元數量對指向誤差進行仿真。 close all; %線陣波束躍度仿真 20250726 %beam displacement % 波束躍度影響&#xff1a;TR芯片移…