hadoop(服務器偽分布式搭建)

1. 報錯 Windows 上寫的腳本 拷貝到 Linux(比如 CentOS)系統時會出現。

bash: ./set_java_home.sh: /bin/bash^M: bad interpreter: No such file or directory

報錯原因

^M 是 Windows 的換行符(\r\n)
Linux 使用的是 Unix 格式的換行符(\n)
所以你的腳本第一行的 #!/bin/bash 實際上變成了:
#!/bin/bash^M

解決方法把腳本轉換為 Unix 格式

使用 dos2unix 命令

dos2unix set_java_home.sh
##如果沒有下面就是安裝命令
yum install dos2unix -y

2. 解決centos里面多版本java,統中默認的 Java(通過 alternatives 指定的)自動同步到 JAVA_HOME,以保證一致性。

#!/bin/bash# 配置你的 Java 安裝路徑(按你提供的內容)
JAVA8_PATH="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64"
JAVA11_PATH="/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64"# 參數校驗
if [[ $1 == "8" ]]; thenecho "🔄 正在切換到 Java 8..."sudo alternatives --set java $JAVA8_PATH/jre/bin/javasudo alternatives --set javac $JAVA8_PATH/bin/javacexport JAVA_HOME=$JAVA8_PATH
elif [[ $1 == "11" ]]; thenecho "🔄 正在切換到 Java 11..."sudo alternatives --set java $JAVA11_PATH/bin/javasudo alternatives --set javac $JAVA11_PATH/bin/javacexport JAVA_HOME=$JAVA11_PATH
elseecho "? 參數錯誤,請輸入 8 或 11,例如:"echo "   source ./switch-java.sh 8"echo "   source ./switch-java.sh 11"return 1
fi# 清理舊 PATH 中的 JAVA_HOME 相關路徑
export PATH=$(echo "$PATH" | awk -v RS=: -v ORS=: '/java/ {next} {print}' | sed 's/:$//')# 加入新 JAVA_HOME/bin
export PATH=$JAVA_HOME/bin:$PATH# 顯示結果
echo "? 已切換至 JAVA_HOME: $JAVA_HOME"
java -version
##到對應位置運行這個腳本,前面加上source,就是全局運行,不加的話就是在一個進程里面運行,檢查的時候可能檢查不到
source switch-java.sh 8
source switch-java.sh 11
##檢查命令
echo $JAVA_HOME

下圖是切換Java8的source scripts/switch-java.sh 8
在這里插入圖片描述
下圖是切換java11的source scripts/switch-java.sh 11
在這里插入圖片描述

設置重新啟動服務器,以后默認的環境變量中的java的版本

vim ~/.bashrc
##添加
# 每次登錄自動設置 Java 8 為默認(你自己上面腳本存放的位置)
source $HOME/scripts/switch-java.sh 8
或
# 每次登錄自動設置 Java 11 為默認$HOME指的是根目錄root
source $HOME/scripts/switch-java.sh 11
# 最后執行
source ~/.bashrc

Hadoop

安裝教程
官網鏈接:https://hadoop.apache.org/releases.html
不同的安裝包的區別

文件名含義
source源碼包,需要你自己編譯(不推薦初學者)
binary官方編譯好的二進制包(?推薦)
binary-aarch64針對 ARM 架構的電腦(如蘋果 M1/M2、樹莓派)
binary-lean精簡版本(一般不推薦)

推薦下載的安裝包:Hadoop 3.3.6 binary
下載地址:https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
下載完成后上傳到服務器
我上傳的目錄是/usr/local

cd /usr/local/
tar -zxvf hadoop-3.3.6.tar.gz
mv hadoop-3.3.6 hadoop

執行完上述命令后Hadoop 安裝路徑是 /usr/local/hadoop
在這里插入圖片描述
配置環境變量配置文件

vim ~/.bashrc
#把下面的內容寫到配置文件里面
#我的java已經配置了,不需要配置java了如圖
# Hadoop
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

在這里插入圖片描述

#讓配置文件生效重新加載
source ~/.bashrc
#測試是否生效,如下圖已經安裝完成
hadoop version

在這里插入圖片描述

hadoop理解

干嘛用的:
是為了解決“單機無法處理超大數據”的問題,通過“分布式存儲(HDFS)+ 分布式計算(MapReduce)”來高效地處理海量數據。
用于存儲和處理超大規模數據(TB、PB 級別)。
原理:
1.把大文件切成小塊分布存儲在多臺機器上(HDFS)
2.把任務拆成小任務并行處理,最后匯總結果(MapReduce)
核心組件與原理圖解
在這里插入圖片描述
Hadoop 核心原理組件解釋

組件功能
HDFS分布式文件系統,把大文件切成塊存到多臺機器,每塊默認保存 3 份(容錯)
MapReduce分布式計算框架,把任務拆成 map → shuffle → reduce,分布式并行處理
YARN資源調度框架,決定哪些機器執行哪些任務
NameNodeHDFS 中的“總目錄”,保存文件結構、塊位置(元數據)
DataNode實際存儲數據塊的節點
ResourceManager管理所有節點資源,分配任務
NodeManager每個節點的“本地資源控制器”,接收任務并執行

應用場景:分布式存儲和海量數據計算,用在“大數據”場景下。

場景描述
日志分析網站、APP、大型平臺的用戶訪問日志分析(TB 級)
數據倉庫(Hive)用 SQL 處理海量結構化數據
ETL 處理(+Sqoop)數據抽取(從 MySQL 導入)、轉換、加載
搜索引擎爬蟲把抓取網頁分布式處理、存儲
圖像視頻處理多節點同時處理圖片/視頻數據(如壓縮、轉碼)
機器學習預處理對大規模訓練數據進行 MapReduce 處理
互聯網企業分析系統淘寶、百度、騰訊、頭條等早期都用了 Hadoop 搭建離線數據處理平臺

Hadoop優勢

優勢說明
高可擴展加機器就能擴容(線性擴展)
高容錯自動備份副本,節點宕了也不會丟數據
大規模處理支持 TB/PB 級別數據處理
高性價比可用普通商用服務器構建分布式平臺
開源生態豐富Hive、Spark、HBase、Flink 都能集成 Hadoop 存儲

不適合的地方

不適合場景說明
實時計算(ms 級)Hadoop 是離線批處理,延遲分鐘級
小數據場景啟動 MapReduce 比處理本身還慢
高頻低延遲系統比如金融交易系統、秒殺系統,不適合 Hadoop
高并發 OLTPHadoop 不支持事務處理和高并發讀寫操作

運行模式

模式是否需要配置 XML是否需要創建 tmp、namenode、datanode 等目錄是否需要啟動服務
1. 本地模式(Local Mode)? 不需要? 不需要? 不需要
2. 偽分布式模式? 需要? 必須創建? 啟動 HDFS/YARN
3. 真分布式模式? 需要? 必須創建(不同節點)? 啟動多節點服務

hadoop部署偽分布式

第一步創建 Hadoop 所需的工作目錄

mkdir -p /usr/local/hadoop/tmp
mkdir -p /usr/local/hadoop/hdfs/namenode
mkdir -p /usr/local/hadoop/hdfs/datanode
目錄作用
/usr/local/hadoop/tmpHadoop 運行時的臨時文件目錄(如鎖文件、緩存)
/usr/local/hadoop/hdfs/namenode存儲 NameNode 元數據(如文件目錄結構、塊位置)
/usr/local/hadoop/hdfs/datanode存儲 DataNode 的實際數據塊(HDFS 文件數據)

NameNode 認為 /usr/local/hadoop/hdfs/namenode 是它的持久存儲位置。
DataNode 把數據塊寫入 /usr/local/hadoop/hdfs/datanode。
tmp 用來緩存、寫日志、寫運行時中間文件。

第 2 步:編輯配置文件
配置文件路徑:/usr/local/hadoop/etc/hadoop/
2.1. core-site.xml

vim /usr/local/hadoop/etc/hadoop/core-site.xml

內容:需要外部訪問配置hdfs://主機名稱:9000

<configuration><property><name>fs.defaultFS</name><value>hdfs://主機名稱(或者是你的ip注意要和下面的文件中的保持一致):9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property>
</configuration>

2.2 hdfs-site.xml

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

內容:

<configuration><!-- 設置副本數為1(偽分布式) --><property><name>dfs.replication</name><value>1</value></property><!-- NameNode 存儲目錄 --><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/hdfs/namenode</value></property><!-- DataNode 存儲目錄 --><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/hdfs/datanode</value></property><!-- DataNode 注冊使用公網IP(重要) --><property><name>dfs.datanode.hostname</name><value>你自己的主機名稱或者是ip</value></property><!-- DataNode 與客戶端通信使用 hostname(IP) --><property><name>dfs.datanode.use.datanode.hostname</name><value>true</value></property><!-- 客戶端使用 hostname(IP) 訪問 DataNode --><property><name>dfs.client.use.datanode.hostname</name><value>true</value></property><!-- 開放 NameNode RPC(綁定到所有網卡) --><property><name>dfs.namenode.rpc-bind-host</name><value>0.0.0.0</value></property><!-- 可選:關閉主機名校驗,允許 IP 注冊 --><property><name>dfs.namenode.reject-unresolved-datanode-hostname</name><value>false</value></property></configuration>

2.3 mapred-site.xml

vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

內容:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

2.4 yarn-site.xml

vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

內容:

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>

第三步配置免密登錄

ssh-keygen -t rsa        # 全部回車
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh localhost            # 確保不需要輸入密碼

第四步:格式化 HDFS(只做一次)

hdfs namenode -format
#后面如果再需要格式化需要關閉這兩個
stop-dfs.sh
stop-yarn.sh

第五步:啟動命令

#停止命令
stop-dfs.sh
#啟動命令
start-dfs.sh
start-yarn.sh
#jps用于列出當前系統中所有的HotSpot Java虛擬機進程
jps                             # 查看服務是否正常## 報錯
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
#你在用 root 用戶執行 start-dfs.sh 命令
#Hadoop 默認不允許你用 root 來啟動 HDFS 守護進程(安全考慮)## 下面是解決方法 以及其他命令
#創建用戶
useradd hadoop
passwd hadoop
#把Hadoop 安裝目錄權限改給 hadoop 用戶:
chown -R hadoop:hadoop /usr/local/hadoop
#給hadoop用戶賦予sudo權限(centos7)
usermod -aG wheel hadoop
#其他關于防火墻的命令可選
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
#切換用戶
su - hadoop
vim ~/.bashrc #編輯,不同用戶不同的環境變量文件
#切換完用戶后從新配置java和hadoop的環境變量(如下圖)
#我Java的環境變量是一個腳本文件(Java8 和java11需要切換),根據自己的需求配置
#保存后再執行(讓配置文件生效)
source ~/.bashrc
#驗證是否生效
echo $JAVA_HOME
echo $HADOOP_HOME
which hadoop

在這里插入圖片描述
在這里插入圖片描述總總結:hadoop是什么,是用來處理海量數據的,然后有兩大核心模塊,一個就是,分布式文件HDFS(Hadoop Distributed File System),里面有兩種節點NameNode和DataNode ,HDFS會把一個大文件分成塊(block默認大小是128MB)每個塊會有多個副本存在不同的服務器上(默認3個),具體的內容存在DataNode里面,而NameNode相當于DataNode的目錄。

hadoop操作上傳,下載,讀取文件的命令

#查看HDFS的根目錄
hdfs dfs -ls /
# 創建用戶目錄
hdfs dfs -mkdir -p /user/hadoop
# 創建臨時目錄(某些程序可能會用到)
hdfs dfs -mkdir /tmp
# 設置臨時目錄權限為 777(某些程序依賴)
hdfs dfs -chmod -R 777 /tmp上傳文件
hdfs dfs -put /本地路徑/文件名 /HDFS目標路徑
#列子
hdfs dfs -put /home/hadoop/files/劍來01.mp4 /user/hadoop/
#查看是否上傳成功
hdfs dfs -ls /user/hadoop/

在這里插入圖片描述

# 查看文件塊和位置
hdfs fsck /user/hadoop/劍來01.mp4 -files -blocks -locations
輸出:
Status: HEALTHY
# ? 文件健康,未缺塊、未損壞Number of data-nodes:	1
# 📦 當前集群中只有1個 DataNode(單節點偽分布式)Number of racks:	1
# 📶 當前僅配置了1個機架(Rack)Total dirs:	0
# 📁 總共目錄數量為0(因為只檢查了一個文件)Total symlinks:	0
# 🔗 符號鏈接數量為0(HDFS中很少使用符號鏈接)Replicated Blocks:Total size:	2655188930 B# 📄 文件總大小約 2.65GBTotal files:	1# 📁 本次檢查的文件數量Total blocks (validated):	20 (avg. block size 132759446 B)# 📦 文件被切分為20個塊,每個塊平均約132MB(符合HDFS默認128MB)Minimally replicated blocks:	20 (100.0 %)# ? 所有塊至少有1個副本,符合設定的副本數Over-replicated blocks:	0 (0.0 %)# 📈 沒有副本數量超出配置的塊Under-replicated blocks:	0 (0.0 %)# 📉 沒有副本數量不足的塊Mis-replicated blocks:	0 (0.0 %)# ?? 塊沒有分布不合理(如所有副本都集中在同一節點)的問題Default replication factor:	1# 🔁 當前系統默認副本數為1(單節點無法設置更高)Average block replication:	1.0# 📊 所有塊平均有1個副本Missing blocks:	0# ? 沒有缺失的塊Corrupt blocks:	0# ? 沒有損壞的塊Missing replicas:	0 (0.0 %)# ? 所有副本都存在,沒有副本缺失Blocks queued for replication:	0# 📋 沒有等待復制的塊(說明副本充足)Erasure Coded Block Groups:Total size:	0 BTotal files:	0Total block groups (validated):	0Minimally erasure-coded block groups:	0Over-erasure-coded block groups:	0# ?? 未使用 Erasure Coding(糾刪碼),這是一種高級存儲方式,用于節省空間,當前未啟用# 查看集群副本默認配置
hdfs getconf -confKey dfs.replication
# 輸出文件大小
hdfs dfs -du -h /user/hadoop/
#下載
hdfs dfs -get /user/hadoop/劍來01.mp4 ./
#預覽內容
#查看文件的開頭
hdfs dfs -cat /user/hadoop/data1.txt | head
#查看結尾(日志)
hdfs dfs -tail /user/hadoop/log.txt
#查看前幾行
hdfs dfs -cat /user/hadoop/data2.csv | head -n 5
#過濾
hdfs dfs -ls /user/hadoop/ | grep '\.csv'
#查找
hdfs dfs -find / -name "*.csv"
#查找特定名字
hdfs dfs -find / -name "data2025-*.txt"
#刪除
hdfs dfs -rm /user/hadoop/劍來01.mp4
#用 hdfs dfs -ls 查看上傳了哪些文件
#用 -cat、-tail、head 查看內容判斷是不是你要的
#用 -du -h 看大小,或 grep / find 輔助篩選

Hadoop端口介紹

端口類型服務用法是否瀏覽器能訪問
9000RPC通信端口NameNodeHadoop 命令通信(如 put、get、ls)? 不行,后臺服務端口
9870Web UINameNode Web瀏覽 HDFS 目錄、查看塊位置? 可以
9864Web UIDataNode Web查看 DataNode 狀態和數據塊? 可以
8088Web UIYARN ResourceManager查看作業運行狀態? 可以

hadoop安全模式

重新啟動的時候會進入到安全模式

# 查看安全模式狀態
hdfs dfsadmin -safemode get
#強制退出安全模式
hdfs dfsadmin -safemode leave
# 輸出示例:
# Safe mode is ON
# 或
# Safe mode is OFF

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

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

相關文章

超詳細 anji-captcha滑塊驗證springboot+uniapp微信小程序前后端組合

目錄 1&#xff1a;pom文件引入jar包 2&#xff1a;配置文件 3&#xff1a;踩坑-1 4&#xff1a;踩坑-2 5&#xff1a;后端二次驗證 6&#xff1a;自定義背景圖 給用戶做的一個小程序&#xff0c;被某局安全驗證后&#xff0c;說登錄太簡單&#xff0c;沒有驗證碼等行為認…

使用AVPlayer播放FairPlay DRM視頻的最佳實踐

01DRM 介紹DRM&#xff0c;即數字版權管理&#xff08;Digital Rights Management&#xff09;&#xff0c;是指使用加密技術保護視頻內容、通過專業技術安全地存儲和傳輸密鑰&#xff08;加密密鑰和解密密鑰&#xff09;、并允許內容生產商設置商業規則&#xff0c;限制內容觀…

《機器學習數學基礎》補充資料:拉格朗日乘子法

瑞士數學家歐拉&#xff08;Leonhard Euler&#xff0c;1707-1783&#xff09;的大名&#xff0c;如雷貫耳——歐拉&#xff0c;是按德文發音翻譯。歐拉不僅是公認的十八世紀最偉大的數學家&#xff0c;還是目前史上最多產的數學家。所著的書籍及論文多達 886 部&#xff08;篇…

【PTA數據結構 | C語言版】二叉堆的樸素建堆操作

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個順序存儲的數據用樸素建堆操作調整為最小堆&#xff1b;最后順次輸出堆中元素以檢驗操作的正確性。 輸入格式&#xff1a; 輸入首先給出一個正整數 c&#xff08;≤1…

深入解析PyQt5信號與槽的高級玩法:解鎖GUI開發新姿勢

信號與槽機制是PyQt框架實現組件間通信的核心技術。掌握其高級用法能極大提升開發效率和代碼靈活性。本文將通過六大核心模塊&#xff0c;結合實戰案例&#xff0c;全方位解析信號與槽的進階使用技巧。自定義信號與槽的完全指南 1. 信號定義規范 class CustomWidget(QWidget):#…

gitee某個分支合并到gitlab目標分支

一、克隆Gitee倉庫到本地 git clone https://gitee.com/用戶名/倉庫名.gitcd 倉庫名二、添加 GitLab 倉庫作為遠程倉庫 git remote add gitlab https://gitlab.com/用戶名/倉庫名.git三、查看所有遠程倉庫 git remote -v四、拉取 Gitee 上的目標分支 git fetch origin 分支名五…

PyQt5信號與槽(信號與槽的高級玩法)

信號與槽的高級玩法 高級自定義信號與槽 所謂高級自定義信號與槽&#xff0c;指的是我們可以以自己喜歡的方式定義信號與槽函 數&#xff0c;并傳遞參數。自定義信號的一般流程如下&#xff1a; &#xff08;1&#xff09;定義信號。 &#xff08;2&#xff09;定義槽函數。 &a…

第5天 | openGauss中一個用戶可以訪問多個數據庫

接著昨天繼續學習openGauss,今天是第五天了。今天學習內容是使用一個用戶訪問多個數據庫。 老規矩&#xff0c;先登陸墨天輪為我準備的實訓實驗室 rootmodb:~# su - omm ommmodb:~$ gsql -r創建表空間music_tbs、數據庫musicdb10 、用戶user10 并賦予 sysadmin權限 omm# CREATE…

Vue3 Anime.js超級炫酷的網頁動畫庫詳解

簡介 Anime.js 是一個輕量級的 JavaScript 動畫庫&#xff0c;它提供了簡單而強大的 API 來創建各種復雜的動畫效果。以下是 Anime.js 的主要使用方法和特性&#xff1a; 安裝 npm install animejs 基本用法 <script setup> import { ref, onMounted } from "vu…

苦練Python第18天:Python異常處理錦囊

苦練Python第18天&#xff1a;Python異常處理錦囊 原文鏈接&#xff1a;https://dev.to/therahul_gupta/day-18100-exception-handling-with-try-except-in-python-3m5a 作者&#xff1a;Rahul Gupta 譯者&#xff1a;倔強青銅三 前言 大家好&#xff0c;我是倔強青銅三。是一名…

JVM——如何對java的垃圾回收機制調優?

GC 調優的核心思路就是盡可能的使對象在年輕代被回收&#xff0c;減少對象進入老年代。 具體調優還是得看場景根據 GC 日志具體分析&#xff0c;常見的需要關注的指標是 Young GC 和 Full GC 觸發頻率、原因、晉升的速率、老年代內存占用量等等。 比如發現頻繁會產生 Ful GC&am…

正則表達式使用示例

下面以 Vue&#xff08;前端&#xff09;和 Spring Boot&#xff08;后端&#xff09;為例&#xff0c;展示正則表達式在前后端交互中的應用&#xff0c;以郵箱格式驗證為場景&#xff1a;1.前端<template><div class"register-container"><h3>用戶…

云端微光,AI啟航:低代碼開發的智造未來

文章目錄前言一、引言&#xff1a;技術浪潮中的個人視角初次體驗騰訊云開發 Copilot1.1 低代碼的時代機遇1.1.1 為什么低代碼如此重要&#xff1f;1.2 AI 的引入&#xff1a;革新的力量1.1.2 Copilot 的亮點1.3 初學者的視角1.3.1 Copilot 帶來的改變二、體驗記錄&#xff1a;云…

圖片上傳實現

圖片上傳change函數圖片上傳圖片上傳到服務器上傳的圖片在該頁面中顯示修改界面代碼最終實現效果change函數 這里我們先用輸入框控件來舉例&#xff1a; 姓名&#xff1a;<input typetext classname>下面我們來寫 js 語句&#xff0c;對控件進行綁事件來獲取輸入框內的…

【PTA數據結構 | C語言版】多叉堆的上下調整

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個已經滿足 d 叉最小堆順序約束的數據直接讀入最小堆&#xff1b;隨后將下一個讀入的數據 x 插入堆&#xff1b;再執行刪頂操作并輸出刪頂的元素&#xff1b;最后順次輸…

selenium后續!!

小項目案例:實現批量下載網頁中的資源根據15.3.2小節中的返回網頁內容可知,用戶只有獲取了網頁中的圖片url才可以將圖片下載到*在使用selenium庫渲染網頁后,可直接通過正則表達式過濾出指定的網頁圖片&#xff0c;從而實現批量下載接下來以此為思路來實現一個小項目案例。項目任…

深度解析Linux文件I/O三級緩沖體系:用戶緩沖區→標準I/O→內核頁緩存

在Linux文件I/O操作中&#xff0c;緩沖區的管理是一個核心概念&#xff0c;主要涉及用戶空間緩沖區和內核空間緩沖區。理解這兩者的區別和工作原理對于高效的文件操作至關重要。 目錄 一、什么是緩沖區 二、為什么要引入緩沖區機制 三、三級緩沖體系 1、三級緩沖體系全景圖…

【每日算法】專題十三_隊列 + 寬搜(bfs)

1. 算法思路 BFS 算法核心思路 BFS&#xff08;廣度優先搜索&#xff09;使用 隊列&#xff08;Queue&#xff09;按層級順序遍歷圖或樹的節點。以下是 C 實現的核心思路和代碼模板&#xff1a; 算法框架 #include <queue> #include <vector> #include <un…

【動手實驗】發送接收窗口對 TCP傳輸性能的影響

環境準備 服務器信息 兩臺騰訊云機器 t04&#xff08;172.19.0.4&#xff09;、t11&#xff08;172.19.0.11&#xff09;&#xff0c;系統為 Ubuntu 22.04&#xff0c;內核為 5.15.0-139-generic。默認 RT 在 0.16s 左右。 $ ping 172.19.0.4 PING 172.19.0.4 (172.19.0.4) …

28、鴻蒙Harmony Next開發:不依賴UI組件的全局氣泡提示 (openPopup)和不依賴UI組件的全局菜單 (openMenu)、Toast

目錄 不依賴UI組件的全局氣泡提示 (openPopup) 彈出氣泡 創建ComponentContent 綁定組件信息 設置彈出氣泡樣式 更新氣泡樣式 關閉氣泡 在HAR包中使用全局氣泡提示 不依賴UI組件的全局菜單 (openMenu) 彈出菜單 創建ComponentContent 綁定組件信息 設置彈出菜單樣…