nmcli網(wǎng)絡(luò)管理實(shí)戰(zhàn):從基礎(chǔ)配置到服務(wù)器網(wǎng)卡綁定(Bonding)詳解
1. 從命令行到網(wǎng)絡(luò)穩(wěn)定為什么我選擇nmcli管理網(wǎng)絡(luò)在服務(wù)器和虛擬化平臺(tái)的管理中網(wǎng)絡(luò)配置的穩(wěn)定性和靈活性是基石。過(guò)去我們習(xí)慣于直接編輯/etc/sysconfig/network-scripts/目錄下那些以ifcfg-開(kāi)頭的配置文件或者使用ifconfig、ip命令進(jìn)行臨時(shí)調(diào)整。然而隨著系統(tǒng)演進(jìn)尤其是在RHEL/CentOS 8及更新的發(fā)行版中NetworkManager及其命令行工具nmcli逐漸成為網(wǎng)絡(luò)管理的官方推薦和事實(shí)標(biāo)準(zhǔn)。對(duì)于像我這樣長(zhǎng)期在運(yùn)維一線的人來(lái)說(shuō)從最初的抵觸到現(xiàn)在的依賴nmcli帶來(lái)的不僅僅是命令行的便捷更是一種清晰、統(tǒng)一且可腳本化的網(wǎng)絡(luò)管理哲學(xué)。特別是當(dāng)我們需要為關(guān)鍵業(yè)務(wù)服務(wù)器配置網(wǎng)卡綁定Bonding以提供網(wǎng)絡(luò)冗余和高可用時(shí)nmcli展現(xiàn)出了其強(qiáng)大的能力。本文將結(jié)合我多年的實(shí)踐深入探討nmcli的核心用法并手把手帶你完成一個(gè)從單網(wǎng)卡到Bonding聚合的完整配置過(guò)程其中會(huì)穿插大量只有踩過(guò)坑才知道的細(xì)節(jié)和技巧。2. nmcli核心概念與日常高頻操作解析在深入Bonding之前我們必須先和nmcli這個(gè)工具本身打好交道。它并非ifconfig的簡(jiǎn)單替代而是NetworkManager這個(gè)守護(hù)進(jìn)程的客戶端。理解這一點(diǎn)至關(guān)重要因?yàn)槟愕乃胁僮髯罱K都會(huì)由NetworkManager持久化并管理這意味著配置在重啟后依然有效并且可以與應(yīng)用層如桌面環(huán)境的網(wǎng)絡(luò)狀態(tài)同步。2.1 連接Connection與設(shè)備Device的分離模型這是nmcli乃至NetworkManager最核心的設(shè)計(jì)。新手最容易混淆的就是這兩者。設(shè)備Device指物理或虛擬的網(wǎng)絡(luò)接口硬件比如eth0、ens192、bond0。你可以通過(guò)nmcli device status查看它們。設(shè)備是客觀存在的。連接Connection指應(yīng)用于某個(gè)設(shè)備上的一套網(wǎng)絡(luò)配置方案如IP地址、網(wǎng)關(guān)、DNS等。一個(gè)設(shè)備在某個(gè)時(shí)刻只能激活一個(gè)連接但可以擁有多個(gè)配置好的連接配置文件。連接是主觀的配置。舉個(gè)例子你的服務(wù)器有一塊網(wǎng)卡ens192。你可以為它創(chuàng)建兩個(gè)連接配置文件一個(gè)叫office-static配置靜態(tài)IP用于辦公網(wǎng)另一個(gè)叫l(wèi)ab-dhcp配置DHCP用于測(cè)試實(shí)驗(yàn)室。你可以根據(jù)需要在兩者之間切換而無(wú)需修改硬件。這種分離帶來(lái)了極大的靈活性。2.2 必須掌握的日常查詢與狀態(tài)管理命令以下命令是你操作網(wǎng)絡(luò)前的“眼睛”務(wù)必熟練。# 查看所有網(wǎng)絡(luò)設(shè)備及其狀態(tài)連接名、設(shè)備名、類型、狀態(tài) nmcli device status # 查看所有已創(chuàng)建的連接配置文件即使未激活 nmcli connection show # 查看某個(gè)活動(dòng)連接的詳細(xì)信息如 ens192 正在使用的配置 nmcli connection show ens192 # 更詳細(xì)地查看指定連接配置文件的全部屬性 nmcli connection show office-static # 查看設(shè)備詳情包括硬件MAC地址、驅(qū)動(dòng)等 nmcli device show ens192一個(gè)實(shí)用技巧當(dāng)網(wǎng)絡(luò)不通時(shí)首先看nmcli device status確認(rèn)設(shè)備是否是connected狀態(tài)。如果是disconnected說(shuō)明沒(méi)有激活的連接如果是unavailable可能是網(wǎng)線沒(méi)插或驅(qū)動(dòng)問(wèn)題。2.3 連接配置的增刪改查這是配置靜態(tài)IP或DHCP的基礎(chǔ)。創(chuàng)建新的靜態(tài)IP連接nmcli connection add type ethernet con-name my-static-conn ifname ens192 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 8.8.4.4 ipv4.method manualcon-name: 指定連接名稱這是你以后管理它的標(biāo)識(shí)。ifname: 綁定到哪個(gè)物理設(shè)備。ipv4.addresses: IP地址和掩碼CIDR格式。ipv4.gateway: 默認(rèn)網(wǎng)關(guān)。ipv4.dns: DNS服務(wù)器多個(gè)用空格隔開(kāi)。ipv4.method manual: 表示使用靜態(tài)IP。如果是auto則用DHCP。修改現(xiàn)有連接例如改IPnmcli connection modify my-static-conn ipv4.addresses 192.168.1.200/24修改后配置并不會(huì)立即生效到設(shè)備上。使修改生效# 方法1先down再up該連接推薦更干凈 nmcli connection down my-static-conn nmcli connection up my-static-conn # 方法2重新加載連接某些簡(jiǎn)單修改可用 nmcli connection reload nmcli connection up my-static-conn刪除連接nmcli connection delete my-static-conn注意這只會(huì)刪除配置文件不會(huì)影響物理設(shè)備。啟用/禁用連接nmcli connection up my-static-conn nmcli connection down my-static-conn2.4 修改MAC地址的實(shí)戰(zhàn)與陷阱根據(jù)熱詞修改MAC地址是一個(gè)常見(jiàn)需求可能用于網(wǎng)絡(luò)準(zhǔn)入或測(cè)試。nmcli可以輕松做到但這里有坑。臨時(shí)修改重啟失效# 先禁用設(shè)備 nmcli device disconnect ens192 # 修改MAC地址 sudo ip link set ens192 address 52:54:00:12:34:56 # 重新用NetworkManager管理并激活連接 nmcli device connect ens192這種方式下nmcli connection show里連接的MAC地址信息并未改變只是當(dāng)前設(shè)備層臨時(shí)變了。永久修改通過(guò)連接配置文件# 在連接配置中克隆MAC地址字段 nmcli connection modify my-static-conn 802-3-ethernet.cloned-mac-address 52:54:00:12:34:56 # 重啟連接使生效 nmcli connection down my-static-conn nmcli connection up my-static-conn重要提示cloned-mac-address這個(gè)屬性非常關(guān)鍵。很多教程讓你直接改mac-address但那可能不生效或?qū)е聠?wèn)題。cloned-mac-address才是NetworkManager用來(lái)設(shè)置硬件MAC地址的正確參數(shù)。修改后使用ip link show ens192查看確認(rèn)。我踩過(guò)的坑在虛擬化環(huán)境如KVM中如果同時(shí)在虛擬機(jī)配置文件中指定了MAC且網(wǎng)絡(luò)源是dhcp這里修改可能會(huì)導(dǎo)致沖突或獲取不到IP。穩(wěn)妥的做法是如果虛擬機(jī)需要固定MAC應(yīng)在虛擬機(jī)配置文件中設(shè)定而不是在Guest OS里用nmcli改。3. 服務(wù)器網(wǎng)卡綁定Bonding深度實(shí)戰(zhàn)網(wǎng)卡綁定即將多個(gè)物理網(wǎng)卡聚合為一個(gè)邏輯接口旨在提供帶寬疊加和/或鏈路冗余。這是提升服務(wù)器網(wǎng)絡(luò)可靠性的標(biāo)準(zhǔn)操作。nmcli使得配置Bonding變得異常清晰。3.1 Bonding模式選型不止是模式0和1在創(chuàng)建Bond前必須根據(jù)你的網(wǎng)絡(luò)架構(gòu)和交換機(jī)配置決定模式mode。這是成功的關(guān)鍵。模式名稱工作方式交換機(jī)要求典型應(yīng)用場(chǎng)景mode0balance-rr (Round-robin)輪詢發(fā)包負(fù)載均衡無(wú)需特殊配置需要最大帶寬但對(duì)順序傳輸敏感的應(yīng)用如FTP可能有問(wèn)題不常用。mode1active-backup一主一備故障切換無(wú)需特殊配置高可用冗余首選。只有主卡流量備卡空閑。mode2balance-xor基于哈希如MAC/IP端口分配無(wú)需特殊配置提供負(fù)載均衡和容錯(cuò)但需要配對(duì)交換機(jī)做聚合。mode3broadcast所有包從所有接口發(fā)無(wú)需特殊配置極端容錯(cuò)帶寬浪費(fèi)很少用。mode4802.3ad (LACP)動(dòng)態(tài)鏈路聚合交換機(jī)必須支持并配置LACP標(biāo)準(zhǔn)帶寬聚合冗余方案。需要交換機(jī)協(xié)同工作。mode5balance-tlb出口負(fù)載均衡入口由當(dāng)前活動(dòng)口接收無(wú)需特殊配置自適應(yīng)負(fù)載均衡但非對(duì)稱。mode6balance-alb出口負(fù)載均衡入口負(fù)載均衡需ARP協(xié)商無(wú)需特殊配置更智能的負(fù)載均衡兼容性需測(cè)試。如何選擇追求高可用和簡(jiǎn)單選mode1 (active-backup)。這是最安全、兼容性最好的模式交換機(jī)什么都不用配。這也是PVE等虛擬化平臺(tái)做管理口綁定的常用模式。追求帶寬疊加和高可用且能控制交換機(jī)選mode4 (802.3ad)。這是企業(yè)級(jí)標(biāo)準(zhǔn)做法性能最好但要求交換機(jī)端口配置為L(zhǎng)ACP聚合組。關(guān)于熱詞“服務(wù)器做bond交換機(jī)不用做聚合嗎”這取決于Bond模式對(duì)于mode1, 2, 3, 5, 6交換機(jī)端不需要也不應(yīng)該做任何聚合配置就當(dāng)它們是兩個(gè)獨(dú)立的端口接入即可。只有mode0和mode4必須在交換機(jī)側(cè)配置對(duì)應(yīng)的靜態(tài)聚合或動(dòng)態(tài)LACP否則會(huì)產(chǎn)生網(wǎng)絡(luò)環(huán)路或丟包這是一個(gè)經(jīng)典的運(yùn)維坑。3.2 使用nmcli創(chuàng)建Active-Backup模式Bond假設(shè)我們有兩塊物理網(wǎng)卡ens192和ens224要?jiǎng)?chuàng)建名為bond0的mode1綁定。步驟1創(chuàng)建Bonding接口連接nmcli connection add type bond con-name bond0 ifname bond0 bond.options modeactive-backup,miimon100type bond: 指定創(chuàng)建類型為bond。con-name/ifname: 連接和接口都叫bond0。bond.options: 這是核心參數(shù)。modeactive-backup: 指定模式為1。miimon100:極其重要的參數(shù)。表示每100毫秒檢查一次鏈路狀態(tài)。沒(méi)有它鏈路故障檢測(cè)可能依賴不可靠的載波偵聽(tīng)切換延遲高。務(wù)必加上。步驟2為Bond接口配置網(wǎng)絡(luò)IP、網(wǎng)關(guān)等nmcli connection modify bond0 ipv4.addresses 10.0.0.10/24 nmcli connection modify bond0 ipv4.gateway 10.0.0.1 nmcli connection modify bond0 ipv4.dns 10.0.0.2 nmcli connection modify bond0 ipv4.method manual現(xiàn)在bond0這個(gè)邏輯接口已經(jīng)有了IP配置但它還沒(méi)有“手下”。步驟3將物理網(wǎng)卡作為“Slave”加入Bond需要為每塊物理網(wǎng)卡創(chuàng)建一個(gè)類型為bond-slave的連接并將其master指向bond0。# 為 ens192 創(chuàng)建 slave 連接 nmcli connection add type bond-slave con-name bond0-slave-ens192 ifname ens192 master bond0 # 為 ens224 創(chuàng)建 slave 連接 nmcli connection add type bond-slave con-name bond0-slave-ens224 ifname ens224 master bond0此時(shí)nmcli connection show會(huì)看到三個(gè)新連接bond0、bond0-slave-ens192、bond0-slave-ens224。步驟4激活整個(gè)Bonding組激活順序有講究先激活slave連接最后激活master的bond連接。nmcli connection up bond0-slave-ens192 nmcli connection up bond0-slave-ens224 nmcli connection up bond0步驟5驗(yàn)證配置# 查看bond0狀態(tài)和活動(dòng)從屬接口 cat /proc/net/bonding/bond0這個(gè)文件是內(nèi)核提供的Bonding信息寶庫(kù)。你會(huì)看到當(dāng)前Active Slave是ens192ens224處于backup狀態(tài)。拔掉ens192的網(wǎng)線稍等片刻取決于miimon再查看會(huì)發(fā)現(xiàn)Active Slave已切換到ens224網(wǎng)絡(luò)通信在短暫中斷后恢復(fù)。3.3 在PVE 8.4中配置Bonding的特別注意事項(xiàng)熱詞提到了PVE 8.4。Proxmox VE基于Debian其網(wǎng)絡(luò)配置底層也使用/etc/network/interfaces但可以通過(guò)nmcli在系統(tǒng)內(nèi)管理已配置的網(wǎng)絡(luò)。不過(guò)對(duì)于PVE管理界面vmbr0橋接使用的網(wǎng)卡強(qiáng)烈建議直接在PVE Web管理界面或/etc/network/interfaces文件中配置Bonding而不是在系統(tǒng)內(nèi)用nmcli操作以免與管理層的配置沖突。PVE管理界面配置Bonding非常直觀節(jié)點(diǎn) - 系統(tǒng) - 網(wǎng)絡(luò) - 創(chuàng)建 - Linux Bond。選擇從屬設(shè)備如enp3s0,enp4s0。選擇綁定模式如active-backup。然后在這個(gè)Bond接口上創(chuàng)建Linux Bridge如vmbr0并配置IP。如果你已經(jīng)在系統(tǒng)內(nèi)用nmcli配置了bond又想給PVE用可能需要手動(dòng)編輯/etc/network/interfaces將PVE的橋接綁定到bond0這個(gè)接口上并確保NetworkManager不會(huì)管理這些接口在/etc/NetworkManager/NetworkManager.conf中設(shè)置unmanaged-devices。這個(gè)過(guò)程容易出錯(cuò)因此一體化管理是更穩(wěn)妥的選擇。3.4 Bonding配置的排錯(cuò)與高級(jí)參數(shù)常見(jiàn)問(wèn)題1Bonding接口啟動(dòng)失敗檢查journalctl -xe或nmcli connection up bond0的錯(cuò)誤信息??赡茉騍lave網(wǎng)卡上有其他活躍的連接配置文件沖突。用nmcli connection show --active查看并down掉無(wú)關(guān)連接。解決nmcli connection delete 沖突的連接名或確保bond-slave連接是綁定該設(shè)備的唯一活躍連接。常見(jiàn)問(wèn)題2鏈路切換慢或不切換檢查是否配置了miimon100或arp_interval。miimon是物理鏈路檢測(cè)arp_interval是網(wǎng)絡(luò)層檢測(cè)。建議對(duì)于active-backup模式miimon100通常足夠。對(duì)于更敏感的業(yè)務(wù)可以結(jié)合arp_ip_target指定Ping的IP來(lái)檢測(cè)網(wǎng)絡(luò)層連通性。nmcli connection modify bond0 bond.options modeactive-backup,miimon100,arp_interval500,arp_ip_target10.0.0.1這表示每500毫秒向網(wǎng)關(guān)10.0.0.1發(fā)送ARP請(qǐng)求來(lái)驗(yàn)證連通性。常見(jiàn)問(wèn)題3如何指定Active-Backup模式下的主接口默認(rèn)是第一個(gè)激活的slave。你可以通過(guò)primary參數(shù)指定nmcli connection modify bond0 bond.options modeactive-backup,miimon100,primaryens224這樣只要ens224可用它就會(huì)是主接口。4. 從配置到運(yùn)維監(jiān)控、故障模擬與恢復(fù)配置好不是結(jié)束運(yùn)維才是開(kāi)始。我們需要知道如何監(jiān)控Bond狀態(tài)以及如何安全地進(jìn)行變更和故障恢復(fù)。4.1 實(shí)時(shí)監(jiān)控與狀態(tài)解讀除了cat /proc/net/bonding/bond0還有一些命令很有用# 查看所有接口的統(tǒng)計(jì)信息關(guān)注bond0和slave的收發(fā)包計(jì)數(shù) ip -s link show # 使用nmtui文本UI可以直觀地看到連接狀態(tài)和編輯適合不熟悉命令時(shí) nmtui # 持續(xù)監(jiān)控bond狀態(tài)變化用于故障切換測(cè)試 watch -n 1 cat /proc/net/bonding/bond0解讀/proc/net/bonding/bond0輸出Bonding Mode: 確認(rèn)模式。Primary Slave: 主接口如果有設(shè)置。Currently Active Slave: 當(dāng)前流量通過(guò)的接口。MII Status: up/down: 物理鏈路狀態(tài)。Slave Interface: 下面每個(gè)從屬接口的詳細(xì)狀態(tài)包括MII Status和Link Failure Count鏈路失敗計(jì)數(shù)切換時(shí)會(huì)增加。4.2 安全地進(jìn)行配置變更與刪除場(chǎng)景需要修改Bond的IP地址。錯(cuò)誤做法是直接modify bond0的IP然后up。因?yàn)閟lave連接依賴于它。 正確流程# 1. 先關(guān)閉整個(gè)bond組 nmcli connection down bond0 nmcli connection down bond0-slave-ens192 nmcli connection down bond0-slave-ens224 # 2. 修改bond0的IP配置 nmcli connection modify bond0 ipv4.addresses 10.0.1.10/24 # 3. 按順序重新激活 nmcli connection up bond0-slave-ens192 nmcli connection up bond0-slave-ens224 nmcli connection up bond0場(chǎng)景需要徹底刪除Bonding配置。不能只刪bond0。# 1. 關(guān)閉所有相關(guān)連接 nmcli connection down bond0 nmcli connection down bond0-slave-ens192 nmcli connection down bond0-slave-ens224 # 2. 刪除所有連接配置文件 nmcli connection delete bond0 nmcli connection delete bond0-slave-ens192 nmcli connection delete bond0-slave-ens224 # 3. 可選此時(shí)物理網(wǎng)卡會(huì)處于“未托管”狀態(tài)可以為其創(chuàng)建新的獨(dú)立連接 nmcli connection add type ethernet con-name ens192-dhcp ifname ens192 ipv4.method auto4.3 故障模擬與應(yīng)急預(yù)案定期測(cè)試故障切換是保證高可用有效的唯一方法。測(cè)試1模擬主接口物理鏈路故障操作直接拔掉主用網(wǎng)卡如ens192的網(wǎng)線。觀察使用watch -n 0.5 cat /proc/net/bonding/bond0觀察Active Slave切換和Link Failure Count增加。同時(shí)用ping -I bond0 網(wǎng)關(guān)觀察丟包數(shù)量通常miimon100會(huì)丟1-3個(gè)包?;謴?fù)插回網(wǎng)線觀察是否切回如果設(shè)置了primary則切回主接口。測(cè)試2模擬系統(tǒng)內(nèi)接口故障操作nmcli device disconnect ens192(或ip link set ens192 down)。觀察與拔網(wǎng)線效果類似但注意nmcli device status中該設(shè)備狀態(tài)變?yōu)閐isconnected?;謴?fù)nmcli device connect ens192。應(yīng)急預(yù)案文檔應(yīng)記錄Bonding的當(dāng)前模式、成員接口、IP信息??焖贆z查命令cat /proc/net/bonding/bond0。單接口故障時(shí)的預(yù)期現(xiàn)象和切換時(shí)間。如何強(qiáng)制切換主接口echo -ens224 /sys/class/net/bond0/bonding/primary但這是臨時(shí)方法重啟失效永久需改配置。完全回退到單網(wǎng)卡操作的步驟刪除bond連接為原主用網(wǎng)卡創(chuàng)建新連接。經(jīng)過(guò)這些系統(tǒng)的操作和測(cè)試你會(huì)對(duì)服務(wù)器的網(wǎng)絡(luò)韌性有充分的信心。nmcli提供的這套基于連接的管理范式一旦掌握其清晰性和可維護(hù)性遠(yuǎn)超手工編輯配置文件。尤其是在自動(dòng)化運(yùn)維和需要頻繁變更網(wǎng)絡(luò)環(huán)境的云原生場(chǎng)景下這種能力顯得尤為重要。

相關(guān)新聞

ROS語(yǔ)音交互實(shí)戰(zhàn):基于Vosk的離線語(yǔ)音控制機(jī)器人系統(tǒng)搭建

ROS語(yǔ)音交互實(shí)戰(zhàn):基于Vosk的離線語(yǔ)音控制機(jī)器人系統(tǒng)搭建

1. 項(xiàng)目概述:從“小海龜”到“會(huì)說(shuō)話的機(jī)器人”如果你已經(jīng)跟著教程跑通了ROS的“小海龜”例程,讓那個(gè)小三角在屏幕上轉(zhuǎn)了幾圈,心里可能會(huì)想:這確實(shí)很酷,但離我心目中那個(gè)能聽(tīng)會(huì)動(dòng)、能交互的智能機(jī)器人似乎還差了點(diǎn)意思…

2026/7/29 2:46:00 閱讀更多
基于Exif解析與人臉聚類的照片智能分類整理方案與實(shí)踐

基于Exif解析與人臉聚類的照片智能分類整理方案與實(shí)踐

一、引言我最近在整理自己積累多年的照片庫(kù)時(shí),遇到了一個(gè)非常實(shí)際的問(wèn)題:手機(jī)相冊(cè)常年維持在2萬(wàn)張照片,電腦里還有幾個(gè)TB的歷史照片庫(kù)。每次想找某張照片,都得在文件夾里翻很久。于是我花了一些時(shí)間調(diào)研了市面上主流的照片智能管理…

2026/7/29 2:46:00 閱讀更多
菜鳥心得001

菜鳥心得001

LeetCode字符串簡(jiǎn)單題13:羅馬數(shù)字轉(zhuǎn)整數(shù) 思路:根據(jù)ds,本題用字典才是最簡(jiǎn)單最快的方法,但是由于本人還沒(méi)學(xué)字典的用法,所以第一反應(yīng)是用笨拙的逐字循環(huán)讀取,根據(jù)已知條件計(jì)算求和。 問(wèn)題和方案&#xff1a…

2026/7/29 2:46:00 閱讀更多
MicroPython模塊1.2.6解析:從核心機(jī)制到硬件驅(qū)動(dòng)實(shí)戰(zhàn)

MicroPython模塊1.2.6解析:從核心機(jī)制到硬件驅(qū)動(dòng)實(shí)戰(zhàn)

1. 項(xiàng)目概述:從“模塊”到“生態(tài)”的認(rèn)知升級(jí)當(dāng)你第一次在MicroPython的官方文檔或GitHub倉(cāng)庫(kù)里看到“MicroPython模塊 1.2.6”這個(gè)標(biāo)題時(shí),可能會(huì)覺(jué)得這只是一個(gè)普通的版本更新日志。但如果你像我一樣,在嵌入式開(kāi)發(fā)和物聯(lián)網(wǎng)領(lǐng)域摸爬滾打了十幾…

2026/7/29 3:46:02 閱讀更多
AE、VAE、CVAE

AE、VAE、CVAE

簡(jiǎn)單講解一下三個(gè)主要的自動(dòng)編碼器 主要思路都是采用一個(gè)編碼器和一個(gè)解碼器。輸入內(nèi)容經(jīng)過(guò)編碼器編碼為潛變量zzz,潛變量zzz經(jīng)過(guò)解碼器解碼為輸出內(nèi)容。 AE(Auto Encoder),這是最簡(jiǎn)單的自動(dòng)編碼器,其潛變量是一種低維編碼&#x…

2026/7/29 3:46:02 閱讀更多
AI芯片混戰(zhàn):OpenAI用AMD、DeepSeek用昇騰、英偉達(dá)5000億鎖HBM——誰(shuí)在挑戰(zhàn)芯片王座?

AI芯片混戰(zhàn):OpenAI用AMD、DeepSeek用昇騰、英偉達(dá)5000億鎖HBM——誰(shuí)在挑戰(zhàn)芯片王座?

英偉達(dá)的王座到底穩(wěn)不穩(wěn)?這可能是2026年AI行業(yè)最難回答的問(wèn)題之一。過(guò)去十幾天,市場(chǎng)給出了兩個(gè)看起來(lái)有些矛盾的信號(hào):AMD簽下Anthropic和OpenAI的大單,股價(jià)年內(nèi)漲了142%;英偉達(dá)數(shù)據(jù)中心收入依然是AMD的11倍以上&#x…

2026/7/29 3:46:02 閱讀更多
C++實(shí)戰(zhàn)指南:從核心價(jià)值到現(xiàn)代工具鏈,探索高性能編程的未來(lái)

C++實(shí)戰(zhàn)指南:從核心價(jià)值到現(xiàn)代工具鏈,探索高性能編程的未來(lái)

1. 從“老兵”視角看C的當(dāng)下與未來(lái)最近在社區(qū)里,看到不少關(guān)于“C是否過(guò)時(shí)”、“學(xué)C還有沒(méi)有前途”的討論。作為一個(gè)從大學(xué)就開(kāi)始摸C,在工業(yè)界用它寫過(guò)嵌入式驅(qū)動(dòng)、游戲引擎、高頻交易系統(tǒng),也用它調(diào)過(guò)無(wú)數(shù)“段錯(cuò)誤”和“內(nèi)存泄漏”的老兵&…

2026/7/29 3:46:02 閱讀更多
Python中文文本分析實(shí)戰(zhàn):從酒店評(píng)價(jià)挖掘商業(yè)洞察

Python中文文本分析實(shí)戰(zhàn):從酒店評(píng)價(jià)挖掘商業(yè)洞察

1. 項(xiàng)目概述:從酒店評(píng)價(jià)中挖掘商業(yè)洞察最近在復(fù)盤一個(gè)挺有意思的數(shù)據(jù)分析小項(xiàng)目,核心任務(wù)是對(duì)一堆酒店評(píng)價(jià)文本進(jìn)行挖掘。這活兒聽(tīng)起來(lái)簡(jiǎn)單,不就是看看用戶說(shuō)了啥嘛,但真做起來(lái),從數(shù)據(jù)清洗到得出有商業(yè)價(jià)值的結(jié)論&…

2026/7/29 3:36:01 閱讀更多
面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個(gè)月,我在重構(gòu) AlgoMooc 網(wǎng)站過(guò)程中,發(fā)現(xiàn)一個(gè)問(wèn)題:在 Claude Code 里把一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,結(jié)果可能比 1 個(gè) agent 從頭干到尾還慢? 大多數(shù)人的第一反應(yīng)是反過(guò)來(lái)的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫渲染精講

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂(lè)應(yīng)用,模擬了真實(shí)擲骰子的過(guò)程。應(yīng)用投擲兩個(gè)骰子(六面標(biāo)準(zhǔn)骰),使用 Unicode 骰面符號(hào)直觀展示每個(gè)骰子的點(diǎn)數(shù),并伴有快速滾動(dòng)的動(dòng)畫效果?!?/p>

2026/7/29 0:15:24 閱讀更多