COLT_CMDB_linux_userInfo_20250508.sh修復歷史腳本輸出指標信息中userName與輸出信息不一致問題

#!/bin/bash
#IT_BEGIN
#IT_TYPE=3
#IT SYSTEM_LINUX_AGENTUSERDISCOVER|discovery.user[disc]
#原型指標
#IT_RULE SYSTEM_LINUX_AGENTUSERGROUPID|groupId[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERHOME|userHome[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERNAME|userName[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERID|userId[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERIP|ipAddress[{#USERNAME}]
#IT_RULE SYSTEM_LINUX_AGENTUSERPATH|shell[{#USERNAME}]
#IT_END
if [ "$1" == "disc" ];thenusers=(`compgen -u| tr '\n' ' '`)for user in ${users[@]}doecho "{#USERNAME}="$userdoneexit 0
fi#原型指標采集
shname=`basename $0`
ATTR="_X(g=$shname,p=CMDB,t=script,f=0)"
ip=`ifconfig -a | grep inet |grep -v 127.0.0.1 |grep -v inet6 |awk '{print $2}' |cut -d ':' -f 2 | tr "\n" "," |sed 's/.$//g'`
#USERNAME=$1
#多指標輸出開始
echo COL_DETAIL_START:
cat  /etc/passwd | while read line
doUSERNAME=`echo $line | cut -d':' -f 1`userName=`echo $line | cut -d':' -f 1`userId=`echo $line | cut -d':' -f 3`groupId=`echo $line | cut -d':' -f 4`userHome=`echo $line | cut -d':' -f 6`shell=`echo $line | cut -d':' -f 7`echo "ipAddress[$ATTR,$USERNAME]|+|$ip"echo "userName[$ATTR,$USERNAME]|+|$userName"echo "userId[$ATTR,$USERNAME]|+|$userId"echo "groupId[$ATTR,$USERNAME]|+|$groupId"echo "userHome[$ATTR,$USERNAME]|+|$userHome"echo "shell[$ATTR,$USERNAME]|+|$shell"
done
#多指標輸出結束
echo COL_DETAIL_END:

10.14.1.69服務器執行腳本如下:

[root@localhost ~]# sh COLT_CMDB_linux_userInfo_20250508.sh 
COL_DETAIL_START:
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|root
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|0
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|/root
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),root]|+|/bin/bash
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|bin
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|1
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|1
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|/bin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),bin]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|daemon
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|2
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|2
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),daemon]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|adm
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|3
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|4
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|/var/adm
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),adm]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|lp
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|4
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|7
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|/var/spool/lpd
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),lp]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|sync
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|5
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sync]|+|/bin/sync
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|shutdown
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|6
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),shutdown]|+|/sbin/shutdown
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|halt
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|7
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|/sbin
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),halt]|+|/sbin/halt
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|mail
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|8
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|12
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|/var/spool/mail
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),mail]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|operator
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|11
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|0
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|/root
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),operator]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|games
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|12
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|100
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|/usr/games
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),games]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|ftp
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|14
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|50
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|/var/ftp
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),ftp]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|nobody
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|99
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|99
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),nobody]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|systemd-network
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|192
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|192
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),systemd-network]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|dbus
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|81
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|81
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),dbus]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|polkitd
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|999
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|998
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|/
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),polkitd]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|sshd
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|74
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|74
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|/var/empty/sshd
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),sshd]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|postfix
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|89
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|89
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|/var/spool/postfix
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),postfix]|+|/sbin/nologin
ipAddress[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|10.14.1.69
userName[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|chrony
userId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|998
groupId[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|996
userHome[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|/var/lib/chrony
shell[_X(g=COLT_CMDB_linux_userInfo_20250508.sh,p=CMDB,t=script,f=0),chrony]|+|/sbin/nologin
COL_DETAIL_END:

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

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

相關文章

TCP 與 UDP報文

** TCP 與 UDP報文** 1. 引言 在網絡通信中,TCP(傳輸控制協議) 和 UDP(用戶數據報協議) 是兩種最核心的傳輸層協議。它們各自適用于不同的場景,理解其工作原理對開發高性能網絡應用至關重要。本文將詳細解…

LabVIEW燃氣輪機測控系統

在能源需求不斷增長以及生態環境保護備受重視的背景下,微型燃氣輪機憑借其在經濟性、可靠性、維護性及排放性等方面的顯著優勢,在航空航天、分布式發電等眾多領域得到廣泛應用。隨著計算機技術的快速發展,虛擬儀器應運而生,LabVIE…

基于vueflow可拖拽元素的示例(基于官網示例的單文件示例)

效果圖 代碼 <template><div style"width: 100%;height: calc(100vh - 84px)"><VueFlow :nodes"nodes" :edges"edges" drop"onDrop" dragover"onDragOver" dragleave"onDragLeave"><div cl…

筆試專題(十六)

文章目錄 相差不超過k的最多數題解代碼 最長公共子序列&#xff08;一&#xff09;題解代碼 小紅的口罩題解代碼 春游題解代碼 相差不超過k的最多數 題目鏈接 題解 1. 排序 滑動窗口 2. 為什么使用滑動窗口&#xff1f; 因為max-min < k&#xff0c;求這個區間內的數最…

技術視界 | 青龍機器人訓練地形詳解(三):復雜地形精講之臺階

在前兩篇中&#xff0c;我們依次講解了“如何創建一個地形”以及“如何將地形添加到訓練環境中”。從基礎出發&#xff0c;逐步構建機器人可交互的三維仿真環境。在機器人強化學習訓練中&#xff0c;地形的復雜度決定了策略的泛化能力&#xff0c;僅靠 jump_plat 和 jump_pit 等…

MYSQL之索引結構,為何要用B+樹

索引的目的就是為了提高查詢效率 索引的結構是B樹&#xff0c;那么說到B樹&#xff0c;必須提一下其他三種結構&#xff0c;分別是&#xff1a;二叉查找樹、平衡二叉樹、B樹 我們來看看各自的結構特征 二叉查找樹 特點:任何節點的左子節點的值都小于當前節點的值&#xff0c;右…

3.2.3 掌握RDD轉換算子 - 2. 過濾算子 - filter()

在本節課中&#xff0c;我們深入學習了Spark RDD的過濾算子filter()。filter()算子能夠通過指定的函數對RDD中的元素進行篩選&#xff0c;返回一個滿足條件的新RDD&#xff0c;通常新RDD的元素個數會比源RDD少。通過案例演示&#xff0c;我們掌握了如何使用filter()來過濾列表中…

vue3使用輪播圖組件swiper

一、在swiper的官網源碼下載地址 下載Swiper - Swiper中文網 二、官網瀏覽輪播圖類型地址 Swiper演示 - Swiper中文網 三、swiper配置參數地址 中文api - Swiper中文網 四、在vue3項目引入swiper npm install swiper 五、在vue3中使用 官網vue3中使用&#xff1a;Swiper…

MySQL優化-MySQL故障排查與監控

MySQL優化-MySQL故障排查與監控 一、MySQL監控 實時了解數據庫的運行狀態&#xff0c;通過不同的監控指標&#xff0c;識別潛在問題并進行預防。常見得到MySQL監控指標包括&#xff1a;連接數、緩存池命中率、磁盤I/O、查詢執行情況等。 1、監控數據庫狀態變量 MySQL的狀態…

【MongoDB篇】MongoDB的分片操作!

目錄 引言第一節&#xff1a;分片核心概念&#xff1a;為什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二節&#xff1a;分片架構的“三大金剛”&#xff1a;核心組件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;?第三節&#xff…

C++ 函數類型及實用例題

請各位大佬一鍵三連支持一下 目錄 請各位大佬一鍵三連支持一下 1. 無參數無返回值函數 2. 有參數無返回值函數 3. 無參數有返回值函數 4. 有參數有返回值函數 5. 函數重載 6. 遞歸函數 7. 帶默認參數的函數 8. 內聯函數 下面我將介紹 C 中不同類型的函數&#xff0c;…

AtCoder Beginner Contest 404 A-E 題解

還是ABC好打~比ARC好打多了&#xff08; 題解部分 A - Not Found 給定你一個長度最大25的字符串&#xff0c;任意輸出一個未出現過的小寫字母 簽到題&#xff0c;map或者數組下標查詢一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…

trae ai編程工具

Trae&#xff0c;致力于成為真正的 AI 工程師&#xff08;The Real Al Engineer&#xff09;。Trae 旗下的 AI IDE 產品&#xff0c;以智能生產力為核心&#xff0c;無縫融入你的開發流程&#xff0c;與你默契配合&#xff0c;更高質量、高效率完成每一個任務。 版本差異 國內…

Web 架構之前后端分離

文章目錄 思維導圖一、引言二、前后端分離的概念代碼示例&#xff08;簡單的前后端分離交互&#xff09;后端&#xff08;使用 Python Flask 框架&#xff09;前端&#xff08;使用 JavaScript 和 jQuery&#xff09; 三、前后端分離的優勢3.1 提高開發效率3.2 代碼可維護性增強…

理解 Elasticsearch 的評分機制和 Explain API

作者&#xff1a;來自 Elastic Kofi Bartlett 深入了解 Elasticsearch 的評分機制并探索 Explain API。 想獲得 Elastic 認證嗎&#xff1f;查看下一期 Elasticsearch Engineer 培訓的時間&#xff01; Elasticsearch 擁有大量新功能&#xff0c;幫助你為你的使用場景構建最佳…

Jupyter Notebook / Lab 疑難雜癥記:從命令找不到到環境沖突與網絡阻塞的排查實錄

Jupyter Notebook / Lab 疑難雜癥記&#xff1a;從命令找不到到環境沖突與網絡阻塞的排查實錄 摘要&#xff1a; 本文記錄了一次復雜的 Jupyter Notebook / Lab 故障排查過程。從最初的“command not found”錯誤出發&#xff0c;我們深入挖掘了可執行文件存在的矛盾、conda 環…

C++之set和map的運用

目錄 序列式容器和關聯式容器 熟識set 在STL中的底層結構&#xff1a; set的構造和迭代器 set的增刪查 multiset和set的差異 練習題&#xff1a; 熟識map map類的介紹 pair類型介紹 map的構造 map的增刪查 map的數據修改 測試樣例&#xff1a; multimap和map的差…

【Bluedroid】藍牙 SDP(服務發現協議)模塊代碼解析與流程梳理

本文深入剖析Bluedroid藍牙協議棧中 SDP&#xff08;服務發現協議&#xff09;服務記錄的全生命周期管理流程&#xff0c;涵蓋初始化、記錄創建、服務搜索、記錄刪除等核心環節。通過解析代碼邏輯與數據結構&#xff0c;揭示各模塊間的協作機制&#xff0c;包括線程安全設計、回…

【實戰項目】簡易版的 QQ 音樂:一

> 作者&#xff1a;?舊言~ > 座右銘&#xff1a;松樹千年終是朽&#xff0c;槿花一日自為榮。 > 目標&#xff1a;能自我實現簡易版的 QQ 音樂。 > 毒雞湯&#xff1a;有些事情&#xff0c;總是不明白&#xff0c;所以我不會堅持。早安! > 專欄選自&#xff1a…

Linux_進程退出與進程等待

一、進程退出 ?退出場景? ?正常終止?&#xff1a;代碼執行完畢且結果符合預期&#xff08;退出碼為 0&#xff09;。?異常終止?&#xff1a;運行結果錯誤&#xff08;退出碼非 0&#xff09;或進程被信號強制終止。&#xff08;如 SIGINT 或 SIGSEGV&#xff09;。 ?退…