如何理解OSI七層模型和TCP/IP四層模型?HTTP作為如何保存用戶狀態?多服務器節點下 Session方案怎么做

本篇概覽:

  • OSI 七層模型是什么?每一層的作用是什么?TCP/IP四層模型和OSI七層模型的區別是什么?

  • HTTP 本身是無狀態協議,HTTP如何保存用戶狀態?

  • 能不能具體說一下Cookie的工作原理、生命周期、作用域?使用Cookie存儲會話信息會有什么局限?

  • Session和Cookie的區別是什么?如果沒有 Cookie 的話 Session 還能用嗎?多服務器節點下 Session-Cookie 方案如何做?

  • OSI 七層模型是什么?每一層的作用是什么?TCP/IP四層模型和OSI七層模型的區別是什么?

OSI(開放系統互聯)七層模型是一種用于理解和實現網絡通信的分層模型,它將網絡通信過程劃分為七個獨立的功能層。每一層專注于完成特定的任務,并為上一層提供服務,同時依賴下一層的支持。以下是OSI七層模型的詳細描述及其每一層的作用:

圖片


應用層(Application Layer)

  • 作用

    應用層是OSI模型的最高層,直接與用戶交互,提供網絡服務和應用程序接口。

  • 關鍵功能
    • 提供用戶訪問網絡資源的接口。
    • 支持文件傳輸、電子郵件、遠程登錄等功能。
  • 典型協議
    • HTTP(超文本傳輸協議)、FTP(文件傳輸協議)、SMTP(簡單郵件傳輸協議)、DNS(域名系統)。

表示層(Presentation Layer)

  • 作用

    表示層負責數據格式的轉換、加密和壓縮,以確保數據能夠在不同系統之間正確解釋。

  • 關鍵功能
    • 數據編碼和解碼(如ASCII、EBCDIC)。
    • 數據加密和解密(如SSL/TLS)。
    • 數據壓縮和解壓縮。
  • 典型協議
    • SSL/TLS。

會話層(Session Layer)

  • 作用會話層負責建立、管理和終止應用程序之間的會話(通信會話)。
  • 關鍵功能
    • 控制會話的建立、維護和斷開。
    • 提供會話同步和檢查點功能(如斷點續傳)。
  • 典型協議
    • NetBIOS、RPC(遠程過程調用)、PPTP(點對點隧道協議)。

傳輸層(Transport Layer)

  • 作用

    傳輸層負責端到端的通信,確保數據完整、有序地從源主機傳輸到目標主機。

  • 關鍵功能
    • 提供可靠的數據傳輸(如TCP)或不可靠的數據傳輸(如UDP)。
    • 實現流量控制和錯誤恢復。
    • 數據分段和重組。
  • 典型協議
    • TCP(傳輸控制協議):面向連接,可靠傳輸。
    • UDP(用戶數據報協議):無連接,快速但不可靠。

網絡層(Network Layer)

  • 作用

    網絡層負責數據包的路由選擇和轉發,確保數據能夠從源主機到達目標主機。

  • 關鍵功能
    • 提供邏輯地址(如IP地址)。
    • 路由選擇和數據包轉發。
    • 分段和重組數據包。
  • 典型協議/設備
    • 設備:路由器。
    • 協議:IP(IPv4/IPv6)、ICMP、ARP。

數據鏈路層(Data Link Layer)

  • 作用

    數據鏈路層負責在相鄰節點之間可靠地傳輸數據幀,并處理物理層可能引入的錯誤(如比特錯誤)。

  • 關鍵功能
    • 將比特流封裝成幀。
    • 實現流量控制和錯誤檢測與糾正。
    • 定義MAC地址(媒體訪問控制地址)以標識設備。
  • 典型協議/設備
    • 設備:交換機、網橋。
    • 協議:以太網(Ethernet)、PPP(點對點協議)、HDLC。

物理層(Physical Layer)

  • 作用

    物理層負責在物理介質上傳輸原始的比特流(0和1)。它定義了硬件設備(如網卡、電纜等)之間的電氣、機械、功能和規程特性。

  • 關鍵功能
    • 定義電壓、接口、電纜標準等。
    • 實現比特流的傳輸和接收。
    • 提供物理連接的建立、維護和釋放。
  • 典型協議/設備
    • 設備:中繼器、集線器

OSI七層模型通過分層的方式,將復雜的網絡通信任務分解為多個獨立的功能模塊。每一層都專注于完成特定的任務,并為上一層提供支持。這種分層設計使得不同的網絡協議和設備可以協同工作,從而實現跨網絡的通信。

  1. 高三層(應用層、表示層、會話層)

    更接近用戶,負責提供高級的網絡服務和數據處理功能。

  2. 低三層(傳輸層、網絡層、數據鏈路層、物理層)

    主要負責網絡通信的基礎部分,包括數據的傳輸、路由和鏈路管理。

TCP/IP四層模型

從下到上分為四層:

  1. 網絡接口層

    對應OSI的物理層和數據鏈路層,負責硬件相關的數據傳輸。

  2. 網絡層

    對應OSI的網絡層,負責數據包的路由和轉發(如IP協議)。

  3. 傳輸層

    對應OSI的傳輸層,提供端到端的通信(如TCP、UDP協議)。

  4. 應用層

    整合了OSI的應用層、表示層和會話層功能,直接面向用戶(如HTTP、DNS)。

對比維度OSI七層模型TCP/IP四層模型
來源與理念

理論化,先有模型后有協議

實用化,先有協議后有模型

層次劃分

七層(物理層到應用層)

四層(網絡接口層到應用層)

功能整合

細粒度劃分,功能獨立

高三層合并為應用層,功能集成

實際應用

教學與理論研究為主

互聯網通信的基礎,廣泛使用

協議支持

無具體協議綁定

明確綁定具體協議(如TCP、IP)

數據封裝

每層獨立封裝,過程較繁瑣

封裝過程簡潔,效率更高

OSI七層模型更適合用于學習和理解網絡通信的基本原理,而TCP/IP四層模型則因其高效性和實用性,成為現代網絡通信的實際標準。

面試官:HTTP 本身是無狀態協議,HTTP如何保存用戶狀態?

HTTP 是一種無狀態(stateless)協議,這意味著每個請求和響應之間是相互獨立的,服務器不會自動保存用戶的會話狀態。然而,在實際應用中,為了實現用戶狀態的保存(如登錄狀態、購物車信息等),通常采用以下幾種機制:


1. 使用 Cookie

  • 原理

    服務器通過在 HTTP 響應頭中設置?Set-Cookie?字段,將用戶的狀態信息存儲到客戶端。客戶端在后續請求中會自動攜帶該 Cookie,從而實現狀態的傳遞。

  • 示例
    • 服務器返回響應時設置?Set-Cookie: sessionId=abc123; Path=/; HttpOnly

    • 客戶端在下次請求時會在請求頭中添加?Cookie: sessionId=abc123

  • 優點
    • 簡單易用,適合保存少量數據。
    • 支持過期時間、域名限制等安全特性。
  • 缺點
    • 數據存儲在客戶端,可能被篡改或竊取(需配合加密或簽名使用)。

2. 使用 Session

  • 原理

    服務器為每個用戶生成一個唯一的會話標識符(Session ID),并通過 Cookie 或 URL 重寫的方式發送給客戶端。實際的用戶狀態信息(如登錄信息)存儲在服務器端,客戶端僅保存 Session ID。

  • 示例
    • 用戶登錄后,服務器生成一個 Session 并返回?Set-Cookie: sessionId=xyz456

    • 客戶端在后續請求中攜帶?Cookie: sessionId=xyz456,服務器根據 ID 檢索對應的用戶狀態。

  • 優點
    • 敏感數據存儲在服務器端,安全性較高。
    • 減少客戶端的數據存儲負擔。
  • 缺點
    • 服務器需要維護大量會話數據,可能導致性能瓶頸。

3. 使用 Token(如 JWT)

  • 原理

    服務器在用戶登錄成功后生成一個令牌(Token),并將 Token 返回給客戶端。客戶端在后續請求中通過請求頭(如?Authorization: Bearer)攜帶該 Token。服務器通過驗證 Token 的合法性來識別用戶狀態。

  • JWT 示例
    • Token 格式:Header.Payload.Signature,其中 Payload 包含用戶信息(如用戶 ID、角色等)。

    • 客戶端發送請求時攜帶?Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…

  • 優點
    • 無需服務器存儲會話信息,支持分布式部署。
    • Token 可包含自定義數據,減少數據庫查詢。
  • 缺點
    • Token 較大,增加了每次請求的開銷。
    • Token 一旦簽發,無法輕易撤銷(需引入黑名單機制)。

4. URL 重寫

  • 原理

    將用戶狀態信息(如會話 ID)附加到 URL 中,作為請求的一部分傳遞給服務器。

  • 示例
    • 服務器返回的 URL:http://example.com/cart?sessionId=12345

    • 客戶端點擊鏈接時,會話 ID 隨 URL 發送到服務器。
  • 優點
    • 不依賴 Cookie,適用于禁用 Cookie 的場景。
  • 缺點
    • URL 中暴露狀態信息,存在安全隱患。
    • URL 長度有限制,不適合存儲復雜數據。

5. 隱藏表單字段

  • 原理

    在 HTML 表單中嵌入隱藏字段,用于存儲用戶狀態信息。當用戶提交表單時,這些信息會隨請求一起發送到服務器。

  • 示例
    ?
<input?type="hidden"?name="sessionId"?value="abc123">
  • 優點
    • 簡單易實現,適合特定場景。
  • 缺點
    • 僅適用于 POST 請求,無法覆蓋所有交互場景。
    • 安全性較低,容易被篡改。

總結

方法存儲位置優點缺點
Cookie

客戶端

簡單易用,支持過期時間

數據可能被篡改,存儲容量有限

Session

服務器端

安全性高,敏感數據不暴露

服務器存儲壓力大

Token(JWT)

客戶端

支持分布式,無需服務器存儲

Token 較大,難以撤銷

URL 重寫

URL 中

不依賴 Cookie

存在安全隱患,URL 長度有限

隱藏表單字段

HTML 表單中

實現簡單

僅適用于特定場景,安全性低

綜上所述,HTTP 協議雖然本身是無狀態的,但通過上述機制(如 Cookie、Session、Token 等)可以有效地保存用戶狀態,滿足不同場景的需求。

面試官:能不能具體說一下Cookie的工作原理、生命周期、作用域?使用Cookie存儲會話信息會有什么局限?

Cookie是瀏覽器和服務器之間用于存儲用戶會話信息的小型文本文件Cookie的工作原理涉及多個環節,包括創建、存儲、發送、更新以及安全措施等。以下是Cookie工作原理的詳細介紹:

圖片

1.?Cookie的創建與設置

當用戶首次訪問一個網站時,服務器可以通過HTTP響應頭中的Set-Cookie指令來創建一個Cookie。這個指令包含了Cookie的名稱、值以及一些可選的屬性。

例如:

Set-Cookie: sessionId=abc123;?Path=/;?HttpOnly;?Secure;?Max-Age=3600
  • 鍵值對

    sessionId=abc123表示Cookie的名稱是sessionId,值是abc123

  • 作用域

    Path=/表示這個Cookie在整個網站的所有路徑下都有效。

  • 安全性
    • HttpOnly

      禁止JavaScript訪問這個Cookie,有助于防止跨站腳本攻擊(XSS)。

    • Secure

      表示這個Cookie只能通過HTTPS協議傳輸,有助于防止中間人攻擊。

  • 生命周期

    Max-Age=3600表示這個Cookie在3600秒(1小時)后過期。

2.?Cookie的存儲與管理

瀏覽器會根據域名和路徑規則來存儲Cookie。每個域名下的Cookie都是獨立存儲的,例如,example.com的Cookie和other.com的Cookie是分開存儲的。Cookie的作用域由Path屬性決定,例如,Path=/shop的Cookie只在/shop路徑下有效。

瀏覽器還會根據Cookie的過期時間(Max-AgeExpires屬性)來管理Cookie的生命周期。如果Cookie沒有設置過期時間,它就是一個會話Cookie,會在瀏覽器關閉后自動刪除。如果設置了過期時間,它就是一個持久性Cookie,會在指定的時間后過期。

3.?Cookie的自動攜帶與使用

當用戶再次訪問同一個網站時,瀏覽器會自動將相關Cookie附加到HTTP請求頭中,發送給服務器。例如:

Cookie:?sessionId=abc123

服務器通過解析請求頭中的Cookie信息,可以識別用戶的身份,從而實現會話管理、個性化服務等功能。

例如:

  • 會話管理

    服務器可以通過sessionId來識別用戶是否已經登錄,避免用戶每次訪問都需要重新登錄。

  • 個性化服務

    服務器可以根據Cookie中存儲的用戶偏好(如語言、主題等)來提供定制化的內容。

4.?Cookie的更新與刪除

服務器可以通過再次發送Set-Cookie指令來更新Cookie的值或屬性。例如,服務器可以延長Cookie的有效期,或者修改Cookie的作用域。

要刪除一個Cookie,服務器可以發送一個同名的Cookie,并將其過期時間設置為一個已經過去的時間。例如:

Set-Cookie: sessionId=abc123;?Max-Age=0

5.?Cookie的安全與限制

盡管Cookie在Web開發中非常有用,但它也面臨一些安全風險:

  • 跨站腳本攻擊(XSS)

    如果Cookie沒有設置HttpOnly屬性,惡意腳本可能會竊取Cookie中的信息。

  • 跨站請求偽造(CSRF)

    攻擊者可以利用Cookie來偽造用戶的請求。

此外,Cookie還有一些限制:

  • 大小限制

    單個Cookie的大小通常不能超過4KB。

  • 數量限制

    每個域名下可以存儲的Cookie數量是有限的。

6.?Cookie的替代方案

隨著Web技術的發展,Cookie不再是一些場景下的最佳選擇。以下是一些Cookie的替代方案:

  • LocalStorage/SessionStorage

    HTML5提供的本地存儲方案,容量更大(通常5-10MB),但僅限于客戶端使用。

  • Token認證

    使用JWT(JSON Web Token)等令牌來代替Cookie,可以減少服務器存儲壓力,并提高安全性。

總結

Cookie通過服務器創建、瀏覽器存儲與自動攜帶的機制,實現了用戶狀態的持久化。它在會話管理、個性化服務等方面發揮著重要作用,但開發者也需要注意其安全性和限制,并根據實際需求選擇合適的存儲方案。

面試官:Session和Cookie的區別是什么?如果沒有 Cookie 的話 Session 還能用嗎?多服務器節點下 Session-Cookie 方案如何做?

Session 的工作原理詳解

Session和Cookie類似,也是 Web 開發中用于跟蹤用戶狀態的重要機制,它允許服務器在多個請求之間識別和記住特定的用戶,從而實現個性化的用戶體驗和安全的用戶認證。

以下是 Session 工作原理的詳細步驟:

1.?Session 的創建
  • 用戶首次訪問

    當用戶第一次訪問服務器時,服務器會創建一個新的 Session 對象。這個過程通常是由服務器端的編程語言和框架自動完成的,無需開發者手動干預。

  • 生成 Session ID

    服務器為 Session 對象分配一個唯一的標識符,稱為 Session ID。這個 ID 通常是一個隨機生成的字符串,用于在后續的請求中識別和檢索對應的 Session 對象。

  • 傳遞 Session ID

    服務器將 Session ID 通過某種方式傳遞給客戶端,通常是將其存儲在用戶的瀏覽器中,例如作為 Cookie 的值或者在 URL 中作為參數。

2.?Session 的存儲
  • 服務器端存儲

    Session 對象通常存儲在服務器的內存中,但也可以存儲在其他地方,如數據庫、文件系統等。存儲方式取決于服務器的配置和應用程序的需求。

  • 內存存儲

    速度快,但服務器重啟或內存不足時數據可能丟失。

  • 數據庫存儲

    持久性強,支持 Session 共享和集群化,但速度相對較慢。

  • 文件系統存儲

    簡單,但速度較慢,不利于 Session 共享。

3.?Session 的傳遞與使用
  • 客戶端攜帶 Session ID

    在用戶的后續請求中,瀏覽器會自動將 Session ID(通常通過 Cookie 方式)發送到服務器。

  • 服務器驗證 Session ID

    服務器根據客戶端發送的 Session ID,去查找對應的 Session 對象。如果找到,服務器會加載該用戶的會話數據。

  • 讀寫 Session 數據

    服務器根據當前請求,讀取或修改該用戶的 Session 數據,以完成各種業務邏輯處理,如保存用戶的登錄狀態、購物車內容等。

4.?Session 的銷毀
  • 會話結束

    當會話結束時,服務器會銷毀對應的 Session 對象,釋放占用的資源。會話結束的情況包括用戶關閉瀏覽器、會話超時、用戶主動注銷等。

  • 超時設置

    服務器可以設置一個會話超時時間,當用戶在一段時間內沒有活動時,服務器會自動銷毀 Session 對象。

  • 主動銷毀

    用戶主動注銷時,服務器應該銷毀對應的 Session 對象,以確保用戶的隱私和安全。

網頁源代碼示例(Node.js + Express)

const?express =?require('express');const?session =?require('express-session');const?app =?express();
// 配置 Session(存儲于服務器內存,有效期 30 分鐘)app.use(session({??secret:?'your-secret-key',?// 加密 Session ID 的密鑰??resave:?false,?// 是否強制保存未修改的 Session??saveUninitialized:?true,?// 是否保存未初始化的 Session??cookie: {?maxAge:?1800000?}?// Session ID Cookie 的有效期(30 分鐘)}));
// 設置 Session 數據app.get('/login',?(req, res) =>?{? req.session.user?= {?id:?123,?name:?'Alice'?};?// 存儲用戶信息? res.send('Session 已設置');});
// 讀取 Session 數據app.get('/profile',?(req, res) =>?{??const?user = req.session.user;?// 讀取用戶信息? res.send(`歡迎,?${user.name}`);});
// 銷毀 Sessionapp.get('/logout',?(req, res) =>?{? req.session.destroy((err) =>?{? ??if?(err) {? ? ??console.error(err);? ? ? res.send('注銷失敗');? ? }?else?{? ? ? res.send('注銷成功');? ? }? });});
app.listen(3000,?() =>?{??console.log('服務器已啟動,端口 3000 正在監聽中...');});

Session和Cookie的關鍵區別如下:

特性

Cookie

Session

存儲位置

客戶端(瀏覽器)

服務器端

有效期

可長期或會話級

服務器配置或用戶行為決定

安全性

較低(客戶端可見)

較高(數據存于服務器)

存儲大小

≤4KB

無固定上限(依賴服務器資源)

依賴關系

可獨立使用

通常依賴 Cookie 存儲 Session ID

在多服務器節點環境下,實施Session-Cookie方案需要解決的核心問題是Session共享與同步,確保用戶在不同服務器間切換時,會話狀態保持一致。以下是具體方案及實現步驟:

一、Session共享與同步機制

1.?粘性會話(Sticky Session)
  • 原理

    通過負載均衡器(如Nginx)將同一用戶的所有請求固定分配到同一臺服務器。

  • 配置示例(Nginx)
    upstream backend {ip_hash; ?# 基于客戶端IP的哈希值分配請求server?192.168.1.100:8080;server?192.168.1.101:8080;
    }
  • 缺點
    • 服務器負載可能不均衡。
    • 單臺服務器故障會導致用戶會話丟失。
2.?Session復制
  • 原理

    服務器之間實時同步Session數據,確保所有服務器擁有相同的Session信息。

  • 實現方式
    • Tomcat集群

      配置Cluster節點和DeltaManager

    • Spring Session

      集成Redis等緩存服務器。

  • 缺點
    • 網絡帶寬消耗大。
    • 服務器間耦合度高。
3.?共享存儲
  • 原理

    將Session數據存儲在共享存儲中(如數據庫、緩存服務器、文件系統),所有服務器通過統一接口訪問。

  • 技術選型
    • 數據庫

      ? ? MySQL(持久化存儲,但性能較低)。

    • 緩存服務器

      Redis(高性能,支持過期時間)。

    • 文件系統

      NFS(簡單易用,但性能較低)。

二、具體實現步驟(以Redis為例)

1.?技術選型
  • Redis

    作為共享存儲,提供高性能的Session讀寫。

  • Spring Boot

    集成Spring Session簡化開發。

Java 多節點共享cookie session java分布式session共享_java

2.?配置步驟
  • 添加依賴

  • <!-- Spring Session 依賴 -->
    <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId>
    </dependency>
    <!-- Redis 客戶端依賴 -->
    <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>
    </dependency>
  • Redis配置

  • @Configuration
    public?class?RedisConfig?{@Beanpublic?RedisConnectionFactory?redisConnectionFactory() {return?new?LettuceConnectionFactory(new?RedisStandaloneConfiguration("localhost",?6379));}
    }
  • 啟用Spring Session

  • @Configuration
    @EnableRedisHttpSession
    public?class?SessionConfig?{//?無需額外配置
    }

3.?代碼示例
存儲Session
@RestController
public?class?SessionController?{@PostMapping("/login")public?String?login(HttpSession session,?@RequestParam?String?username) {session.setAttribute("username", username);return?"登錄成功";}
}
讀取Session
@RestController
public?class?SessionController?{? ??@GetMapping("/profile")? ??public?String?profile(HttpSession session) {? ? ? String?username = (String) session.getAttribute("username");? ? ? ?return?"歡迎, "?+ username;? ?}
}

四、總結

方案

優點

缺點

粘性會話

配置簡單

負載不均衡,單點故障

Session復制

實時同步

網絡帶寬消耗大

共享存儲(Redis)

高性能,擴展性強

依賴外部存儲

Token替代

無狀態,適合分布式系統

需要處理Token生成與驗證

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

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

相關文章

深入剖析 RocketMQ 中的 DefaultMQPushConsumerImpl:消息推送消費的核心實現

前言 在 Apache RocketMQ 的消息消費體系中&#xff0c;RocketMQ 提供了DefaultMQPushConsumer&#xff08;推送消費&#xff09;和DefaultMQPullConsumer&#xff08;拉取消費&#xff09;兩種主要消費方式。DefaultMQPushConsumer與DefaultMQPullConsumer在消息獲取方式&…

Linux編程:2、進程基礎知識

一、進程基本概念 1、進程與程序的區別 程序&#xff1a;靜態的可執行文件&#xff08;如電腦中的vs2022安裝程序&#xff09;。進程&#xff1a;程序的動態執行過程&#xff08;如啟動后的vs2022實例&#xff09;&#xff0c;是操作系統分配資源的單位&#xff08;如 CPU 時…

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄

React Router 中 navigate 后瀏覽器返回按鈕不起作用的問題記錄 在使用 React Router&#xff08;v6&#xff09;開發項目時&#xff0c;我遇到了一個讓人困惑的問題&#xff1a; 當我從 /article 頁面使用 navigate("/article/next") 進行跳轉后&#xff0c;點擊瀏…

[面試精選] 0094. 二叉樹的中序遍歷

文章目錄 1. 題目鏈接2. 題目描述3. 題目示例4. 解題思路5. 題解代碼6. 復雜度分析 1. 題目鏈接 94. 二叉樹的中序遍歷 - 力扣&#xff08;LeetCode&#xff09; 2. 題目描述 給定一個二叉樹的根節點 root &#xff0c;返回 它的 中序 遍歷 。 3. 題目示例 示例 1 : 輸入&…

Addressable-配置相關

1、Profile 概述窗口配置 主要用于配置Addressable打包&#xff08;構建&#xff09;加載AB包時使用的一些變量,這些變量定義了 在哪里保存打包&#xff08;構建&#xff09;的AB包運行時在哪里加載AB包 可以添加自定義變量&#xff0c;以便在打包加載時使用,之后在設置 組中…

aws(學習筆記第四十三課) s3_sns_sqs_lambda_chain

文章目錄 aws(學習筆記第四十三課) s3_sns_sqs_lambda_chain學習內容&#xff1a;1. 整體架構1.1 代碼鏈接1.2 整體架構1.3 測試代碼需要的修改1.3.1 unit test代碼中引入stack的修改1.3.2 test_outputs_created代碼中把錯誤的去掉 2. 代碼解析2.1 生成dead_letter_queue死信隊…

Python訓練營打卡Day43

kaggle找到一個圖像數據集&#xff0c;用cnn網絡進行訓練并且用grad-cam做可視化 進階&#xff1a;并拆分成多個文件 config.py import os# 基礎配置類 class Config:def __init__(self):# Kaggle配置self.kaggle_username "" # Kaggle用戶名self.kaggle_key &quo…

hive 3集成Iceberg 1.7中的Java版本問題

hive 3.1.3 集成iceberg 1.7.2創建Iceberg表報錯如下&#xff1a; Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/iceberg/mr/hive/HiveIcebergStorageHandler has been compiled by a more recent version of the Java Runtime …

文本切塊技術(Splitter)

為什么要分塊&#xff1f; 將長文本分解成適當大小的片段&#xff0c;以便于嵌入、索引和存儲&#xff0c;并提高檢索的精確度。 用ChunkViz工具可視化分塊 在線使用 ChunkViz github https://github.com/gkamradt/ChunkViz 如何確定大模型所能接受的最長上下文 可以從…

C++:用 libcurl 發送一封帶有附件的郵件

編寫mingw C 程序&#xff0c;用 libcurl 發送一封帶有附件的郵件 下面是一個使用 MinGW 編譯的 C 程序&#xff0c;使用 libcurl 發送帶附件的郵件。這個程序完全通過代碼實現 SMTP 郵件發送&#xff0c;不依賴外部郵件客戶端&#xff1a; // send_email.cpp #include <i…

tensorflow image_dataset_from_directory 訓練數據集構建

以數據集 https://www.kaggle.com/datasets/vipoooool/new-plant-diseases-dataset 為例 目錄結構 訓練圖像數據集要求&#xff1a; 主目錄下包含多個子目錄&#xff0c;每個子目錄代表一個類別。每個子目錄中存儲屬于該類別的圖像文件。 例如 main_directory/ ...cat/ ...…

遨游Spring AI:第一盤菜Hello World

Spring AI的正式版已經發布了&#xff0c;很顯然&#xff0c;接下來我們要做的事情就是寫一個Hello World。 總體思路就是在本地搭建一個簡單的大模型&#xff0c;然后編寫Spring AI代碼與模型進行交互。 分五步&#xff1a; 1. 安裝Ollama&#xff1b; 2. 安裝DeepSeek&…

華為云Flexus+DeepSeek征文|基于華為云Flexus X和DeepSeek-R1打造個人知識庫問答系統

目錄 前言 1 快速部署&#xff1a;一鍵搭建Dify平臺 1.1 部署流程詳解 1.2 初始配置與登錄 2 構建專屬知識庫 2.1 進入知識庫模塊并創建新庫 2.2 選擇數據源導入內容 2.3 上傳并識別多種文檔格式 2.4 文本處理與索引構建 2.5 保存并完成知識庫創建 3接入ModelArts S…

Java優化:雙重for循環

在工作中&#xff0c;經常性的會出現在兩張表中查找相同ID的數據&#xff0c;許多開發者會使用兩層for循環嵌套&#xff0c;雖然實現功能沒有問題&#xff0c;但是效率極低&#xff0c;一下是一個簡單的優化過程&#xff0c;代碼耗時湊從26856ms優化到了748ms。 功能場景 有兩…

Prompt Tuning:生成的模型文件有什么構成

一、為什么Prompt Tuning會生成模型文件? 1. Prompt Tuning的本質:優化可訓練的「提示參數」 核心邏輯:Prompt Tuning(提示調優)是一種輕量級的微調技術,僅優化模型輸入層的提示向量(Prompt Embedding)或少量額外參數,而非更新整個預訓練模型的權重。生成模型文件的原…

ARM SMMUv3簡介(一)

1.概述 SMMU&#xff08;System Memory Management Unit&#xff0c;系統內存管理單元&#xff09;是ARM架構中用于管理設備訪問系統內存的硬件模塊。SMMU和MMU的功能類似&#xff0c;都是將虛擬地址轉換成物理地址&#xff0c;不同的是MMU轉換的虛擬地址來自CPU&#xff0c;S…

在 Windows 系統上運行 Docker 容器中的 Ubuntu 鏡像并顯示 GUI

在 Windows 上安裝一個 X Server&#xff08;如 VcXsrv 或 X410&#xff09;&#xff0c;Ubuntu 容器通過網絡將圖形界面轉發到 Windows。 步驟&#xff1a; 安裝 X Server&#xff1a; 推薦使用VcXsrv&#xff0c;免費開源。 安裝后運行 XLaunch&#xff0c;選擇&#xff1…

Vue3學習(4)- computed的使用

1. 簡述與使用 作用&#xff1a;computed 用于基于響應式數據派生出新值&#xff0c;其值會自動緩存并在依賴變化時更新。 ?緩存機制?&#xff1a;依賴未變化時直接返回緩存值&#xff0c;避免重復計算&#xff08;通過 _dirty 標志位實現&#xff09;。?響應式更新?&…

【HarmonyOS 5】出行導航開發實踐介紹以及詳細案例

以下是 ?HarmonyOS 5? 出行導航的核心能力詳解&#xff08;無代碼版&#xff09;&#xff0c;聚焦智能交互、多端協同與場景化創新&#xff1a; 一、交互革新&#xff1a;從被動響應到主動服務 ?意圖驅動導航? ?自然語義理解?&#xff1a;用戶通過語音指令&#xff08;如…

csrf攻擊學習

原理 csrf又稱跨站偽造請求攻擊&#xff0c;現代網站利用Cookie、Session 或 Token 等機制識別用戶身份&#xff0c;一旦用戶訪問某個網站&#xff0c;瀏覽器在之后請求會自動帶上這些信息來識別用戶身份。用戶在網站進行請求或者操作時服務器會給出對應的內容&#xff0c;比如…