tcp高難度問題

以下是針對這些問題,在面試場景下,既保證理論扎實、邏輯清晰,又具備交流延展性的回答思路與內容,可根據實際面試節奏和面試官反饋靈活調整展開:

1. 客戶端端口號如何確定的?

面試官您好,客戶端端口號的確定,本質是操作系統內核動態分配的邏輯。當客戶端發起 TCP 連接(比如調用 connect 函數)時,若應用層沒指定端口,操作系統會從 臨時端口范圍 選一個未被占用的端口分配。以 Linux 為例,臨時端口范圍可通過 /proc/sys/net/ipv4/ip_local_port_range 配置,通常是一段動態端口(比如 32768 - 60999 這類區間 )。系統會遍歷檢查這些端口,找一個處于 CLOSED 或可用狀態的,綁定給客戶端套接字,作為連接的源端口 。簡單說,就是系統為了區分不同客戶端進程的網絡連接,動態選一個閑置端口來用,保證通信時源端口的唯一性 。

2. 客戶端端口動態變化,服務端什么資源消耗最快?

當客戶端端口動態變化、頻繁建立連接時,服務端 文件描述符(File Descriptor,FD ) 消耗往往最快。因為 TCP 連接在 Linux 等系統里,是以文件描述符形式被內核管理的,每個連接對應一個 FD 。服務端每接受一個連接(accept 調用 ),就會新增一個 FD ,用于讀寫數據。同時,這些連接還會占用內核的套接字緩沖區(接收/發送隊列 )、連接跟蹤的哈希表等資源,但 FD 是最直接的“入口”資源,一旦 FD 達到進程/系統限制(比如 ulimit -n 限制 ),服務端就無法再接受新連接,所以在高并發短連接場景,FD 資源池的耗盡往往是最先出現的瓶頸 。當然,具體也得看場景,要是連接建立后數據收發頻繁,緩沖區內存消耗也可能突出,但常規情況 FD 是首當其沖的 。

3. 一個端口可以建立多少 TCP 連接?

從理論和協議設計看,一個端口能建立的 TCP 連接數,核心限制是「四元組(源 IP、源端口、目的 IP、目的端口 )」的唯一性 。對于服務端固定端口(比如 80、443 ),客戶端每次用不同的源 IP + 源端口(動態分配 ),就能建立新連接。所以,服務端一個端口可支持的連接數,上限取決于客戶端的 IP 數量和端口范圍。比如單個客戶端 IP ,源端口最多約 65535(端口號 16 位 ),但實際受臨時端口范圍限制;要是有多個客戶端 IP ,那連接數能大幅擴展。

舉個例子,服務端監聽 80 端口,客戶端 IP 有 100 個,每個客戶端最多用 3 萬左右臨時端口,那理論上服務端 80 端口能承載的連接數就是 100×30000 ≈ 300 萬(當然,實際受系統資源、內核參數限制 )。所以關鍵是四元組的組合,只要四元組不同,一個端口就能支撐大量連接 。

4. 一個 TCP 連接供多少 HTTP 連接使用?

這得看 HTTP 協議的工作模式。如果是 HTTP/1.0 不開啟 Keep-Alive ,一個 TCP 連接只能承載 1 次 HTTP 請求 - 響應,完成后連接就關閉;要是 HTTP/1.0 或 1.1 開啟 Keep-Alive(長連接 ) ,一個 TCP 連接可承載 多個 HTTP 請求 - 響應 ,直到連接因超時、顯式關閉等原因斷開。像瀏覽器訪問一個網頁,可能在一個 TCP 長連接上,依次請求 HTML、CSS、JS 等資源 。到了 HTTP/2 及以上 ,基于同一個 TCP 連接,還能通過 多路復用(Multiplexing ) ,并行處理多個 HTTP 流(可理解為邏輯上的“HTTP 連接” ),實現一個 TCP 連接同時處理大量 HTTP 請求 - 響應,避免隊頭阻塞,提升效率 。所以,從協議設計看,一個 TCP 連接能支撐的 HTTP 連接(或請求 - 響應)數量,在長連接、多路復用機制下,上限由配置的長連接超時、系統資源決定,理論上可以有很多次 。

5. 服務器可以支撐多少 TCP 連接?

服務器能支撐的 TCP 連接數,受多方面限制:

  • 文件描述符(FD )限制:每個 TCP 連接對應一個 FD ,進程的 FD 上限由 ulimit -n 等配置,系統級的還受 /proc/sys/fs/file-max 限制。比如默認情況下,Linux 進程可能默認 FD 限制是 1024,調大后能到幾萬、幾十萬 。
  • 內存資源:每個 TCP 連接在內核要占用套接字緩沖區(sendbufrecvbuf )、連接控制塊(存儲四元組、狀態等 )等內存。內存總量有限,大量連接會耗盡內存 。
  • 端口資源:服務端雖然監聽固定端口,但客戶端連接的源端口是動態的,不過服務端自身的端口不是瓶頸,主要是客戶端側的源端口可能限制并發(但服務端一般是被連的一方,所以影響小 )。
  • 內核參數與網絡棧性能:像 net.ipv4.tcp_max_syn_backlog(半連接隊列 )、net.core.somaxconn(全連接隊列 )等參數,會影響連接建立的效率;還有網絡處理能力(中斷處理、軟中斷調度 ),高并發下若網絡棧處理不過來,也會成為瓶頸 。

綜合來看,在資源充足(內存足夠、FD 調大 )、參數優化的情況下,現代服務器(比如配置好的物理機 )支撐幾十萬、甚至百萬級 TCP 連接是可行的,但實際得結合業務場景(長連接/短連接、數據收發頻率 )來評估,短連接場景更考驗連接建立的效率,長連接場景更考驗內存和 FD 資源 。

6. 客戶端可以支撐多少 TCP 連接?

客戶端能支撐的 TCP 連接數,同樣受這些限制:

  • 文件描述符限制:客戶端進程的 FD 上限,決定了最多能同時維護多少連接,默認可能較低(比如 1024 ),但可通過 ulimit 等方式調整 。
  • 端口資源:客戶端發起連接時,源端口是動態分配的,依賴臨時端口范圍(比如 Linux 的 ip_local_port_range )。假設臨時端口范圍是 32768 - 60999 ,約 2.8 萬個端口,理論上單個客戶端 IP 最多能同時建立約 2.8 萬條 outbound 連接(因為四元組里源端口要唯一 )。但實際中,系統不會讓端口全被占滿,還要留一些給其他進程,所以單個客戶端 IP 并發連接數通常在萬級左右 。
  • 內存與系統資源:每個連接占用內存、套接字資源,客戶端設備(比如手機、PC )的內存有限,大量連接會導致內存不足、系統卡頓 。

比如,手機客戶端要同時連多個服務器,端口和內存就會限制并發數;而 PC 上的高并發測試工具(如 wrkab ),通過多進程/多線程、調整臨時端口范圍、優化 FD 限制,能模擬出更高的并發連接數,但也受限于設備本身的資源 。

7. TCP 連接后一端 KILL 掉進程會發生什么?斷電斷網呢?

(1)KILL 掉進程

當 TCP 連接的一端(比如客戶端或服務端 )進程被 KILL ,操作系統會做這些事:

  • 主動關閉連接:進程被終止時,內核會為該進程的所有套接字執行 主動關閉 操作,發送 FIN 報文,觸發 TCP 四次揮手流程 。對端收到 FIN 后,會回復 ACK ,然后自己也會按四次揮手邏輯關閉連接(如果對端沒數據要發 )。
  • 資源回收:進程相關的文件描述符、套接字緩沖區等資源,會被內核回收,釋放給系統 。

但要注意,如果是強制 kill(比如 kill -9 ),進程可能沒機會優雅關閉套接字,不過內核依然會在進程退出后,自動清理其占用的套接字資源,發起 FIN 來關閉連接 。

(2)斷電/斷網

要是一端(比如客戶端 )突然斷電、斷網:

  • 對端感知延遲:對端(服務端 )無法立即知道連接中斷,會保持連接的 ESTABLISHED 狀態。直到對端嘗試發送數據(比如服務端給客戶端發心跳、業務數據 ),觸發 超時重傳 ,經過多次重傳失敗后,才會判定連接失效,關閉連接 。
  • TCP Keepalive 的作用:如果兩端啟用了 TCP Keepalive(保活機制 ),當連接空閑超時后,對端會發送 Keepalive 探測包。若收不到響應,經過重試、超時后,會主動關閉連接,釋放資源 。

所以,斷電/斷網屬于“被動斷開”,對端需要依賴 TCP 的超時重傳、Keepalive 等機制來檢測,耗時會比主動 KILL 進程更長,期間連接會一直占用資源 。

8. TIME_WAIT 一定出現在客戶端嗎?

不是的!TIME_WAIT 狀態出現在 主動發起關閉連接的一端 。不管是客戶端還是服務端,只要是主動發送 FIN 報文、觸發連接關閉的一方,在收到對端的 FIN 并回復 ACK 后,就會進入 TIME_WAIT 狀態,等待 2MSL 時間 。

舉個例子:

  • 客戶端主動關閉:比如瀏覽器主動關閉標簽頁,觸發四次揮手的第一次 FIN ,客戶端會進入 TIME_WAIT 。
  • 服務端主動關閉:比如服務器配置了連接超時時間,主動發 FIN 斷開連接,服務端也會進入 TIME_WAIT 。

所以,TIME_WAIT 不特定屬于客戶端,誰主動發起關閉,誰就可能進入這個狀態 。像一些長連接場景,服務端可能因超時主動關連,此時服務端就會出現 TIME_WAIT ,這在排查服務器 TIME_WAIT 過多問題時,得留意這種情況 。

9. 高并發場景下,如何解決 TIME_WAIT 過多?

在高并發短連接場景(比如大量 HTTP 短連接 ),TIME_WAIT 過多會占用大量端口、文件描述符資源,導致新連接無法建立。解決思路主要有這些:

(1)調整內核參數
  • 減少 TIME_WAIT 時長:修改 net.ipv4.tcp_fin_timeout(Linux 下 ),默認是 60 秒,可適當調小(比如 30 秒 ),讓 TIME_WAIT 狀態更快釋放端口。但要注意,過短可能導致歷史連接的報文干擾新連接,需結合業務場景評估 。
  • 開啟 TIME_WAIT 復用:啟用 net.ipv4.tcp_tw_reuse(Linux ),允許處于 TIME_WAIT 狀態的端口被新連接復用。但要配合時間戳(net.ipv4.tcp_timestamps = 1 ,默認開啟 ),通過序列號和時間戳驗證,避免報文混淆 。
  • 開啟 TIME_WAIT 快速回收net.ipv4.tcp_tw_recycle(需謹慎使用,因可能與 NAT 網絡沖突,導致連接異常,現代系統已逐漸棄用 )。
(2)應用層優化
  • 使用長連接:盡量用 HTTP 長連接(Keep-Alive )、TCP 長連接,減少短連接的創建/銷毀頻率,從源頭減少 TIME_WAIT 。
  • 連接池復用:服務端和客戶端都可維護連接池,復用已有的 TCP 連接,避免頻繁建連/斷連 。
(3)網絡架構優化
  • 負載均衡器處理:在反向代理(如 Nginx )、負載均衡層,讓 TIME_WAIT 集中在中間層,而非業務服務器。中間層可通過調整參數(如 Nginx 的 keepalive_timeoutreset_timedout_connection ),更高效地管理連接狀態 。

不過,調整內核參數時要非常謹慎,得充分測試,避免因參數不當引發網絡問題(比如報文沖突、連接異常 )。通常優先從應用層優化(長連接、連接池 )入手,再結合內核參數微調,這樣更穩妥 。

這些問題都圍繞 TCP 連接的資源管理、生命周期展開,面試時可以順著“資源限制 - 協議設計 - 實際場景優化”的邏輯,和面試官深入探討,比如聊到 TIME_WAIT 時,還能延伸講講線上遇到的案例、如何通過抓包分析問題,讓回答更生動、體現實戰經驗 。

以下這些 TCP 連接相關問題,都是大廠面試里高頻出現、能考察底層知識理解與深度思考的,附上清晰邏輯的回答思路,方便你和面試官“聊出深度”:

一、TCP 核心原理深挖類

1. TCP 如何實現“可靠傳輸”?(從機制到細節 )

回答要拆解確認、重傳、排序、流量控制、擁塞控制等機制:
“TCP 可靠傳輸是一套組合拳:首先靠序列號 + 確認應答(ACK) ,發送方發數據帶 seq,接收方回 ACK 確認已收到;要是發送方沒收到 ACK ,觸發超時重傳 。同時,接收方會幫數據排序、去重 ,保證應用層收到有序數據。

為了避免發送太快撐爆接收方緩沖區,有滑動窗口(流量控制) ,接收方通過 ACK 告知自己的窗口大小,發送方動態調整發數據量。更絕的是,TCP 還關注整個網絡的擁堵,用擁塞控制(慢啟動、擁塞避免、快重傳、快恢復 ) ,根據網絡狀況調整發送速率,既保證數據可靠,又不搞垮網絡 。”

2. TCP 三次握手時,“回退 N 幀”和“選擇重傳”會觸發嗎?(結合可靠傳輸機制 )

這類問題考對 TCP 重傳機制的邊界理解:
“三次握手階段,其實還沒進入數據傳輸的可靠傳輸邏輯 。三次握手交換的是 SYN、SYN+ACK、ACK ,這些控制報文的重傳,是簡單的超時重傳(類似回退 N 幀的思路,但沒有數據幀的排序、選擇重傳場景 )。

因為握手階段沒有實際數據,只有連接建立的控制信息,所以不會觸發‘回退 N 幀’(針對連續數據幀的批量重傳 )和‘選擇重傳’(精準重傳單個丟失數據幀 ),就是單純的超時重傳 SYN 或 ACK ,保證連接能建立 。”

3. TCP 連接中,接收方的窗口大小一直為 0 會怎樣?(流量控制極端場景 )

考察對滑動窗口、零窗口探測的理解:
“如果接收方窗口一直為 0 ,發送方會停止發送數據,進入零窗口等待 。但 TCP 有個‘零窗口探測’機制,發送方會周期性發零窗口探測報文 (比如 Linux 下默認 10 秒發一次 ),詢問接收方窗口狀態。

要是接收方回復窗口仍為 0 ,繼續等;一旦回復窗口 >0 ,發送方就根據新窗口大小恢復發送。這樣既避免接收方緩沖區溢出,又保證連接不會因為長期零窗口而‘卡死’ 。”

二、連接狀態與異常場景類

4. TCP 半連接隊列(SYN 隊列 )和全連接隊列(ACCEPT 隊列 )滿了會怎樣?(高并發建連問題 )

大廠常考的“SYN 洪泛攻擊”“連接建立失敗”本質問題:
“半連接隊列存的是收到 SYN 還沒完成三次握手的連接(狀態 SYN_RECV ),全連接隊列存的是完成三次握手、等待應用層 accept 的連接(狀態 ESTABLISHED )。

如果半連接隊列滿,服務器收到新 SYN 時,可能直接丟棄(取決于 tcp_syncookies 等參數,開啟 syncookies 會用 cookie 機制避免隊列溢出 );全連接隊列滿,服務器收到客戶端 ACK(三次握手第三步 )后,無法把連接從半連接隊列移到全連接隊列,會回復 RST 報文 ,客戶端會收到連接重置錯誤(比如 connection reset by peer )。

實際運維里,得調大 net.ipv4.tcp_max_syn_backlog(半連接隊列大小 )、net.core.somaxconn(全連接隊列大小 ),還要結合應用層 accept 速度,避免隊列溢出 。”

5. TCP 連接出現“丟包”,一定是網絡問題嗎?(丟包的多維度分析 )

引導面試官展開討論“丟包”的復雜成因:
“不一定哦!丟包可能分幾種情況:

  • 網絡層丟包:路由擁塞、物理鏈路故障、防火墻攔截,這類是傳統‘網絡問題’,可以用 pingtraceroute 排查。
  • 傳輸層丟包:發送方緩沖區滿導致丟包(比如滑動窗口太小,或者應用層發數據太快 ),或者接收方處理不過來,主動丟棄(不過 TCP 一般不會主動丟,除非緩沖區真的溢出 )。
  • 應用層丟包:比如應用層讀取數據時,沒正確處理 TCP 緩沖區的數據,導致‘邏輯上的丟包’(實際 TCP 層已經收到,應用層沒讀 )。

所以排查丟包,得從網絡、傳輸、應用三層逐步分析,用 tcpdump 抓包看 TCP 報文交互,結合應用日志,才能定位根因 。”

三、協議對比與關聯類

6. TCP 與 QUIC(HTTP/3 基于的協議 )的可靠性有啥區別?(新興協議對比 )

體現對前沿協議的了解,適合大廠考察技術廣度:
“TCP 的可靠性是傳輸層原生實現 ,靠序列號、ACK、重傳、滑動窗口這些機制。而 QUIC 把可靠性‘挪到’應用層 實現,基于 UDP 做了類似 TCP 的序列號、重傳、擁塞控制。

QUIC 的優勢是連接遷移(換網絡不中斷連接 )多路復用無隊頭阻塞 ,但可靠性實現更靈活,也依賴應用層自己的邏輯。比如 QUIC 的重傳不需要等 RTO(超時重傳 ),收到重復 ACK 可以更快觸發,而且擁塞控制算法可定制(不像 TCP 受限于內核實現 )。

不過 TCP 更成熟、兼容性好,QUIC 還在推廣期,兩者在可靠性的‘實現層級’和‘靈活性’上差異挺大 。”

7. TCP 如何與 TLS(HTTPS 加密 )協同工作?(應用層協議聯動 )

結合 HTTPS 場景,考察協議棧聯動:
“HTTPS 里,TCP 是 TLS 的‘傳輸底座’。流程是:先建立 TCP 連接(三次握手 ),然后在 TCP 之上跑 TLS 握手(交換證書、協商加密算法、生成會話密鑰 ),TLS 握手完成后,應用層的 HTTP 數據會被加密,再通過 TCP 傳輸。

這里有個關鍵點:TLS 握手的報文,也是通過 TCP 傳輸的,所以 TCP 的擁塞控制、可靠傳輸,會影響 TLS 握手的效率(比如 TLS 握手包丟了,TCP 會重傳 )。而且,TLS 有自己的記錄層(Record Layer ) ,會把應用數據分片、加密,這些分片在 TCP 層又會被封裝成 TCP 報文,兩層的‘分片’邏輯得協同,否則可能出現‘TCP 分片 + TLS 分片’導致的額外開銷 。

實際優化 HTTPS 性能時,會調 TCP 擁塞控制算法(比如 BBR ),或者用 TLS 1.3 的 0 - RTT 功能,減少握手次數,這些都離不開 TCP 和 TLS 的協同 。”

四、實戰與優化類

8. 如何優化 TCP 連接的建立時間?(低延遲場景必問 )

針對“秒開”“低延遲”需求,拆解優化點:
“想讓 TCP 建連更快,得從三次握手、網絡路徑、協議特性下手:

  • 三次握手優化:用 TCP Fast Open(TFO ),客戶端第一次發 SYN 時帶數據(需要服務端支持 TFO ,并提前交換 cookie ),減少一次 RTT(往返時間 )。
  • 網絡路徑優化:用 CDN 讓服務器離用戶更近,或者優化網絡拓撲(比如 BGP 選路 ),減少物理距離帶來的延遲。
  • 協議棧優化:調小 TCP 初始 RTO(超時重傳時間 ),避免建連時因超時重傳等待太久;或者用 HTTP/3(基于 QUIC ),實現‘0 - RTT’建連(部分場景 )。

另外,服務端要避免 SYN 隊列、ACCEPT 隊列溢出,否則建連會失敗或延遲,得結合內核參數(tcp_max_syn_backlogsomaxconn )和應用層 accept 邏輯優化 。”

9. 高并發下,如何優化 TCP 連接的吞吐量?(性能優化核心 )

考察對 TCP 擁塞控制、緩沖區、網卡的理解:
“優化吞吐量得‘全鏈路’考慮:

  • 擁塞控制:選更激進的算法,比如 Linux 下的 BBR(適合高帶寬低延遲網絡 ),比傳統 CUBIC 能更高效利用帶寬。
  • 緩沖區調優:調大 TCP 發送/接收緩沖區(net.ipv4.tcp_wmemnet.ipv4.tcp_rmem ),避免因緩沖區小導致數據發不出去或接收慢,但要結合內存資源,別搞溢出。
  • 網卡與中斷:開啟網卡多隊列、RSS(接收端擴展 ),把網絡中斷分發到多個 CPU 核處理,避免單核心瓶頸;還能調中斷 coalescing(合并中斷 ),減少中斷次數,提升吞吐量。
  • 應用層配合:應用層別頻繁 read/write ,用批量讀寫減少系統調用開銷;或者用異步 IO、零拷貝(sendfile ),減少數據在用戶態和內核態的拷貝時間 。

這些優化得結合實際場景(比如是長連接大吞吐量,還是短連接高并發 ),通過壓測(iperfwrk )找瓶頸點 。”

五、總結:大廠愛考這些方向

  • 底層機制深挖:三次握手/四次揮手的細節、可靠傳輸的實現邏輯、擁塞控制的流程。
  • 異常與邊界場景:隊列溢出、丟包、零窗口、連接異常中斷的處理。
  • 協議協同與對比:和 QUIC、TLS、HTTP 的聯動,理解不同層級協議如何配合。
  • 實戰優化:建連優化、吞吐量優化、高并發場景的參數調優與問題排查。

面試時,遇到這類問題別慌,先拆解“協議層級”“機制目的”“實際場景影響”,再結合原理延伸案例(比如“線上遇到過 SYN 隊列滿,是怎么排查的” ),就能和面試官深入交流,體現你的技術深度與實戰思維啦~

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

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

相關文章

廣東省省考備考(第二十八天6.13)—資料分析(第二節課)

基期與現期 官方定義:作為對比參照的是基期,而相對于基期比較的是現期 通俗說法:時間靠前的為基期,時間靠后的為現期 增長量與增長率 增長量用來表述基期量與現期量變化的絕對量; 增長率用來表述基期量與現期量變化…

pytorch 中前向傳播和后向傳播的自定義函數

系列文章目錄 文章目錄 系列文章目錄一、torch.autograd.function代碼實例 在開始正文之前,請各位姥爺動動手指,給小店增加一點訪問量吧,點擊小店,同時希望我的文章對你的學習有所幫助。本文也很簡單,主要講解pytorch的…

【項目實訓#08】HarmonyOS知識圖譜前端可視化實現

【項目實訓#08】HarmonyOS知識圖譜前端可視化實現 文章目錄 【項目實訓#08】HarmonyOS知識圖譜前端可視化實現一、背景簡介二、技術方案與架構設計2.1 技術選型2.2 組件架構設計 三、知識圖譜可視化組件實現3.1 KGResultTab組件設計組件模板結構不同狀態的處理用戶交互控制節點…

【軟件開發】什么是DSL

什么是DSL DSL(Domain-Specific Language,領域特定語言)是一種為特定領域或任務設計的編程語言,目的在于提高該領域中的表達能力與開發效率。 1 在腳本語言中的 DSL 是什么? 在腳本語言(如 Python、Lua、…

JasperReport生成PDF/A類型文檔

當JasperReport導出的文檔為PDF/A模式時,該PDF為只讀可以防止被修改。 設置導出參數 JRPdfExporter exporter new JRPdfExporter();exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrints));exporter.setExporterOutput(new SimpleOutputStre…

微信小程序使用畫布實現飄落泡泡功能

微信小程序使用畫布實現飄落泡泡功能:從組件封裝到頁面調用的完整實踐 先看示例截圖: 一、背景與技術選型 在微信小程序中實現類似于飄落的泡泡或者櫻花飄落的功能,一般主要有 Canvas 和圖片兩種方案: (1&#xff…

使用STM32設置GPIO中斷

使用S? 32設置GPIO中斷 中斷示例按鍵中斷實例設計:EXTI0和EXTI9硬件連接分析STM32代碼實現代碼說明 中斷示例 設計一個按鍵中斷的實例。設置兩個中斷:EXTI0、EXTI9, 在EXTI9的中斷服務之程序中實現LED燈的控制 按鍵中斷實例設計&#xff…

解決在微信小程序中view組件下的text和images設置了樣式display: flex; align-items: center;對不齊

原始代碼的問題 <view style"display: flex; align-items: center;"><text style"line-height: 1;">全國</text><image src"/images/xia.png" style"height: 20rpx; width: 20rpx; display: block;"></im…

歸并排序詳解:優雅的分治藝術

什么&#xff1f;歸并排序&#xff1f;這讓博主想起了大學那會被《數據結構與算法》支配的恐懼… 哈哈言歸正傳&#xff0c;一直想對算法做一個專欄&#xff0c;因為其實工作中很少很少有機會用到算法&#xff0c;倒是很多工具方法底層會使用&#xff0c;工作被各種需求業務“折…

新零售視域下實體與虛擬店融合的技術邏輯與商業模式創新——基于開源AI智能名片與鏈動2+1模式的S2B2C生態構建

摘要&#xff1a;新零售的核心在于打破線上線下邊界&#xff0c;構建“人、貨、場”的全場景融合生態。本文提出&#xff0c;實體線下店與虛擬店的協同發展是新零售的重要演進方向&#xff0c;其底層邏輯在于滿足消費者作為“現實人”的體驗需求與“虛擬人”的效率需求。通過引…

可視化圖解算法51:尋找第K大(數組中的第K個最大的元素)

牛客網 面試筆試 TOP101 | LeetCode 215. 數組中的第K個最大元素 1. 題目 描述 有一個整數數組&#xff0c;請你找出數組中第 k 大的數。 給定一個整數數組 a ,同時給定它的大小n和要找的 k &#xff0c;請返回第 k 大的數(包括重復的元素&#xff0c;不用去重)&…

DataWhale-零基礎網絡爬蟲技術(一)

課程鏈接先給各位 ↓↓↓ &#xff08;點擊即可食用.QAQ Datawhale-學用 AI,從此開始 一、引言 還是在筆記的開始&#xff0c;嘮嘮一些自己的故事 十年前第一次接觸網絡&#xff0c;也可以說是第一次接觸計算機的時候&#xff0c;那時候還是在中學階段&#xff0c;那時候大…

Linux02

目錄 linux常用命令 用戶和權限 壓縮和解壓縮 其他相關命令 Linux中安裝常用軟件 1.1. jdk的安裝 1.1.1. 卸載linux中自帶的open-jdk 1.1.2. 把安裝包上傳到 linux上 1.1.3. 解壓安裝包 1.1.4. 配置環境變量 1.1.5 驗證環境變量 1.3 安裝mysql 1.3.1. 檢查依賴 1.…

JavaSE超詳細筆記-網絡編程篇-基于黑馬

1. 什么是網絡編程【理解】 1.1 概念 在網絡通信協議下&#xff0c;不同計算機上運行的程序&#xff0c;進行的數據傳輸。 應用場景: 即時通信、網游對戰、金融證券、國際貿易、郵件、等等。 不管是什么場景&#xff0c;都是計算機跟計算機之間通過網絡進行數據傳輸Java中可以使…

時序數據庫Influxdb3 core安裝

本文介紹時序數據庫Influxdb3 core(開源版本)的安裝和簡單使用以及調優參數的介紹。 預期&#xff1a; 安裝時序數據庫Influxdb3 core 創建數據庫mydb 寫入數據&#xff1b; 使用influxdb3-cli 和 grafana2種方式查詢寫入的數據 前期準備&#xff1a; linux服務器(本文服…

區間合并:區間合并問題

區間合并&#xff1a;區間合并問題 區間合并 www.acwing.com/problem/content/805/ 按區間的左端點排序 掃描整個區間&#xff0c;在這過程中把可能有交點的區間合并 全包含&#xff1a;不做改動相交&#xff1a;right 后移相離&#xff1a;更新至下一個維護區間 import j…

中國古代數學符號的演進 | 算籌 / 符號 / 算法

注&#xff1a;本文為“中國古代數學符號”相關合輯。 圖片清晰度受引文原圖所限。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 這個中國古代的數學瑰寶&#xff0c;到底厲害在哪&#xff1f; 原創 朱一文 科普中國 2024 年 07 月 31 日 15:30 北…

XMLDecoder、LDAP 注入與修復

問題&#xff1a;XMLDecoder注入 針對 xml 解碼器的注入攻擊 反序列化用戶控制的 XML &#xff0c;程序沒有進行驗證&#xff0c; 會讓攻擊者有機會在服務器上執行惡意代 碼。 例&#xff1a;下面代碼片段中&#xff0c; XMLDecoder 處理不可信的輸入。 ... XMLDecode…

Unity 對象層級處理小結

一.第一優先級Camera Culling Mask屬性指定Camera顯示的Layer,可以多選 Depth:Depth大的Camera顯示的Layer顯示在前面 二.避免使用PositionZ調整遮擋關系 在 2D 游戲中,雖然可以通過 Z 軸來調整顯示順序,但這與 2D 游戲的設計理念不符。在可以控制顯示層級的多個要素或方…

python基礎舉例

最近又重新開始學python&#xff0c;淺淺記錄下學習到的東西&#xff08;也方便自己回顧看&#xff09; 縮進、空格對于python很重要&#xff0c;一定要注意&#xff01; 以下代碼是基于pycharm編寫的。 01 輸出 #注釋 # 單行注釋用# &#xff0c;ctrl/是單行注釋的快捷鍵 # …