Java【網絡原理】(4)HTTP協議


目錄

1.前言

2.正文

2.1自定義協議

2.2HTTP協議

2.2.1抓包工具

2.2.2請求響應格式

2.2.2.1URL

2.2.2.2urlencode

2.2.3認識方法

2.2.3.1GET與POST

2.2.3.2PUT與DELETE

2.2.4請求頭關鍵屬性

3.小結


1.前言

哈嘍大家好啊,今天來繼續給大家帶來Java中網絡原理的學習,本節主要學習的是HTTP協議,在講HTTP協議之前還會補充一個知識點(自定義協議),本節學完后就是HTTPS的學習了,那么廢話不多說讓我們開始吧。

2.正文

2.1自定義協議

在平時寫代碼的時候,咱們往往跟應用層打交道,應用層中涉及到的網絡通訊協議,很多都是程序員自己定制的。那么到底如何自定義協議呢?

自定義協議,分成兩個階段:

  1. 根據需求, 明確傳輸哪些信息
  2. 約定好信息組織的格式.

其中有許多組織信息的格式,主要包含以下四種:

設計協議時,數據組織格式直接影響可讀性、傳輸效率、解析復雜度。以下通過生活化案例,對比四種常見格式:行文本、XML、JSON、Protobuf。


1. 行文本格式

特點:用簡單分隔符(如逗號、豎線)組織數據,適合結構簡單的場景。
類比:快遞單上的信息——用空格或橫線分隔收件人、電話、地址。

示例:用戶登錄協議

login|user123|e10adc3949ba59abbe56e057f20f883e|mobile
  • 字段解釋

    • login:命令類型(登錄)

    • user123:用戶名

    • e10adc...:MD5加密后的密碼

    • mobile:設備類型

優點

  • 體積小,解析簡單(直接按分隔符拆分)。

  • 適合嵌入式設備或性能受限的場景。

缺點

  • 擴展性差(新增字段需調整解析邏輯)。

  • 無數據類型區分(所有內容都是字符串)。


2. XML格式

html 和 xml 都是成對的標簽構成的鍵值對結構~
html 標簽內容都是固定的。大佬們約定好的,你不能亂寫,也不能創建新的標簽(現在 html5 允許自定義標簽了)xml 標簽內容是自定義的。

特點:通過標簽嵌套表示數據,適合復雜結構化數據。
類比:書本目錄——用章節標題和子標題分層組織內容。

示例:訂單數據傳輸

<order><id>1001</id><customer><name>張三</name><phone>13800138000</phone></customer><items><item><product_id>P100</product_id><quantity>2</quantity></item><item><product_id>P200</product_id><quantity>1</quantity></item></items>
</order>

優點

  • 結構清晰,支持嵌套和復雜數據類型。

  • 可讀性強(標簽自帶語義)。

缺點

  • 冗余標簽多,體積大(傳輸效率低)。

  • 解析復雜。

現在xml使用的已經很少了,主要是下面的json。


3. JSON格式

特點:輕量級的鍵值對結構,兼顧可讀性和簡潔性。
類比:表格簡歷——用“字段名:值”清晰展示信息。

示例:用戶消息推送

{"type": "message","sender": "user123","receiver": "user456","content": "晚上一起吃飯嗎?","timestamp": 1629780000,"extras": {"emotion": "開心","priority": 1}
}

優點

  • 語法簡潔(比XML體積小)。

  • 天然支持嵌套對象和數組。

  • 廣泛支持(幾乎所有編程語言都有解析庫)。

適用場景

  • RESTful API 接口(90%的互聯網API使用JSON)。

  • 前端與后端數據交互。


4. Protobuf(Protocol Buffers)(C++用的比較多)

特點:二進制編碼,高性能,需預定義數據結構(.proto文件)。
類比:密碼本——收發雙方需提前約定編碼規則,傳輸時用二進制壓縮。

優點

  • 體積極小(比JSON小3-10倍)。

  • 解析速度極快(無需反射,直接內存映射)。

  • 強類型約束(減少數據錯誤)。

缺點

  • 可讀性差(二進制不可直接閱讀)。

  • 需預編譯生成代碼(開發流程稍復雜)。


總結一下:

  1. 行文本 (最原始)
  2. xml(比較原始,可讀性好,冗余較多)
  3. json(主流的方式,可讀性好,冗余一般)
  4. protobuf(高性能場景下使用的方式,可讀性差,冗余最小)
格式體積可讀性解析速度適用場景
行文本最小簡單配置、傳感器數據
XML復雜企業級系統
JSON中等中等Web API、前后端交互
Protobuf最小最快高性能通信、IoT、微服務

下文就要展開我們的重點HTTP協議了。?


2.2HTTP協議

HTTP是一問一答模式的協議,客戶端發來一個請求,服務器就返回一個響應,請求和響應一一對應。對于HTTP協議的學習我們需要借助抓包工具來進行。

2.2.1抓包工具

抓包工具是什么呢?是用來干什么的呢?

1. 什么是抓包?

抓包(Packet Capture)指捕獲網絡傳輸中的數據包,并對其進行分析的過程。

  • 就像在快遞運輸線上安裝監控攝像頭,記錄每個包裹的來源、目的地和內容。


2. 為什么需要抓包?

有以下幾個場景:

  • 調試網絡問題:定位連接超時、丟包等問題。

  • 分析協議行為:查看HTTP請求、DNS解析等細節。

  • 安全審計:檢測惡意流量(如DDoS攻擊、數據泄露)。

  • 性能優化:分析網絡延遲、帶寬占用。


3. 抓包工具的工作原理

  1. 網卡混雜模式

    • 默認情況下,網卡只接收目標地址是自己的數據包。

    • 開啟混雜模式后,網卡會捕獲流經它的所有數據包(包括其他設備的流量)。

  2. 協議解析與過濾

    • 抓包工具根據協議規范(如TCP/IP、HTTP)解析二進制數據包,提取可讀信息。

    • 支持按協議類型、IP地址、端口號等條件過濾數據。

  3. 存儲與展示

    • 數據包可保存為文件(如.pcap格式),供后續分析。

    • 工具提供可視化界面,展示數據包的層次結構和字段內容。

講完了什么是抓包,接下來介紹兩個抓包工具:

1.Wireshark

官網:Wireshark · Go Deep https://www.wireshark.org/

核心功能:

  • 多協議支持:解析超過2000種協議(如HTTP、TCP、DNS、ICMP)。

  • 深度分析:展示數據包的每一層(從物理層到應用層)。

  • 過濾與統計:支持復雜過濾語法,提供流量統計圖表。


2.Fiddler

官網:Web Debugging Proxy and Troubleshooting Tools | Fiddler https://www.telerik.com/fiddler

核心功能:

  • HTTP/HTTPS代理:攔截所有經過代理的Web請求。

  • 請求/響應修改:實時修改請求參數、響應內容。

  • 性能分析:統計頁面加載時間、資源大小。

  • 自動化腳本:通過Fiddler Script自定義處理邏輯。


二者對比:

?

對比維度WiresharkFiddler
協議支持所有網絡層協議(TCP/IP、ICMP、ARP等)主要HTTP/HTTPS,部分FTP、WebSocket
抓包層級底層(原始數據包)應用層(HTTP請求/響應)
操作系統跨平臺(Windows、macOS、Linux)僅Windows(經典版)
性能影響高(捕獲所有流量)低(僅代理流量)
簡而言之:wireshark抓很多協議,使用門檻較高。而fiddler專門抓HTTP,功能簡單,使用也簡單。

這里我們往后就使用fiddler。


2.2.2請求響應格式

這里我們通過fiddler來抓一個請求與響應:

請求

  1. 首行:請求方法 URL 版本號
  2. 請求頭(header):鍵值對結構,每一行是一個鍵值對,鍵和值之間使用:空格 分割,HTTP 請求頭中的鍵有哪些取值,對應的值又有哪些取值,都是由標準約定的。
  3. 空行:用來標識header結束了。
  4. 正文(body):部分請求有正文,部分沒有(像上面這個就沒有)。

響應

  1. 首行
  2. 響應頭:也是鍵值對
  3. 空行:表示header部分結束/
  4. 正文?

下文我們要講解寫請求與相應的關鍵屬性。?

2.2.2.1URL

URL(Uniform Resource Locator,統一資源定位符)是互聯網上資源的唯一地址,用于定位網頁、圖片、API 等資源。
類比:就像現實中的“快遞地址”,告訴瀏覽器如何找到目標資源。

一個典型的 URL 格式如下:

https://www.example.com:8080/path/to/page?name=John&age=30#section1

分解為以下核心部分:

[協議]://[域名]:[端口]/[路徑]?[查詢參數]#[錨點]
  • 協議:定義客戶端與服務器之間的通信規則。
  • 域名:將 IP 地址(如?192.168.1.1)轉換為易記的名稱。
  • 端口:標識服務器上的具體服務(類似“門牌號”)。
  • 路徑:指定服務器上的資源位置(類似文件路徑)。
  • 查詢參數:向服務器傳遞附加參數,格式為?key=value
  • 錨點:定位頁面內的特定位置(不會發送到服務器)。

2.2.2.2urlencode

為了給大家更好展示urlencode是什么,這里附上實際例子,我在瀏覽器搜索你好。

可以看到:

https://www.sogou.com/web?query=%E4%BD%A0%E5%A5%BD&_ast=1745143368&_asf=www.sogou.com&w=01029901&p=40040100&dp=1&cid=&s_from=result_up&sourceid=5_01_03&sessiontime=1745143614785

我們去實際抓包:

可以看到搜多的字符串均被轉義。

URL編碼(Percent-Encoding)是一種將特殊字符非ASCII字符轉換為安全格式的機制,確保URL在互聯網中正確傳輸和解析。

為什么需要URL編碼?

URL 中本身就有一些特殊符號,代表不同的特殊含義。query string 的內容都是程序員自定義的萬一 query string 里也包含了特殊含義的符號咋辦?所以就需要URL編碼


urlencode 把數據的二進制內容,每個字節取出來十六進制表示,前面加上%

2.2.3認識方法

方法安全冪等典型場景
GET????獲取資源
POST????創建資源或觸發操作
PUT????替換整個資源
DELETE????刪除資源
PATCH????*部分更新資源
HEAD????獲取響應頭信息
OPTIONS????查詢支持的請求方法
TRACE????調試(通常禁用)
CONNECT????建立代理隧道(如 HTTPS)

tips:PATCH 的冪等性需由具體實現保證。?


下文講解幾個最常見的方法?

2.2.3.1GET與POST

HTTP 協議中,GET?和?POST?是最常用的兩種方法,它們在用途、數據傳輸方式、安全性等方面有顯著區別。

GET:通過 URL 傳遞參數

  • 格式http://example.com/api?name=Alice&age=30

  • 特點

    • 參數可見,適合非敏感數據(如搜索關鍵字)。

    • 參數會被瀏覽器歷史記錄、服務器日志記錄。


POST:通過請求體傳遞參數

  • 格式:參數封裝在請求體中,支持多種格式(如 JSON、表單數據)。

  • 特點

    • 參數不可見,適合敏感數據(如密碼、支付信息)。

    • 支持復雜數據結構(如文件上傳)。

兩個典型場景:

  1. 登錄。
  2. 上傳 =>請求帶有正文的,正文就是保存了當前上傳的數據的內容上述請求中,圖片本身是二進制的,通過特殊方式進行轉碼(base64 編碼,把二進制轉成文本)其實 body 也是可以直接填二進制數據 ~

GET與POST對比:

  • 語義上,二者可以混著用,GET與POST沒有本質區別。
  • 攜帶數據的方式上,POST也可以帶有query string,GET也可以帶有body
  • GET常被設計成冪等,POST無要求。
  • GET常認為能被緩存(冪等情況下),而POST不行。
特性GETPOST
用途獲取資源(查詢數據)提交數據(創建或修改資源)
參數位置URL 查詢字符串(?key=value請求體(Body)
數據長度限制受限(URL 長度通常 ≤2048 字符)理論上無限制(取決于服務器配置)
緩存可被瀏覽器緩存不可緩存
冪等性冪等(多次請求結果相同)非冪等(多次請求可能產生不同結果)
安全性參數明文暴露在 URL 中(需 HTTPS)參數在請求體中(仍需 HTTPS 加密)
書簽/分享可保存為書簽或分享鏈接不可直接保存或分享

2.2.3.2PUT與DELETE

直接開講:

PUT 方法

  • 用途完整替換資源(客戶端需提供資源的全部新數據)。

  • 特點

    • 冪等性:多次請求效果相同(重復替換結果一致)。

    • 安全性:非安全操作(修改資源)。

    • 數據位置:請求體中傳遞完整的資源內容。


DELETE 方法

  • 用途刪除指定資源

  • 特點

    • 冪等性:多次刪除同一資源效果相同(刪除后資源不再存在)。

    • 安全性:非安全操作(修改資源)。

    • 數據位置:通常無需請求體,通過 URL 標識資源。


特性PUTDELETE
目的替換資源(全量更新)刪除資源
冪等性??(多次替換結果一致)??(多次刪除結果一致)
請求體需要(包含完整新數據)通常不需要
典型狀態碼200 OK / 201 Created204 No Content / 200 OK

這樣,方法中重要的“增刪改查”已經講解完畢。?

2.2.4請求頭關鍵屬性

這邊也是各重頭戲,講到請求頭中各種關鍵屬性,可能跟前文會有所重復,但為了內容完整還是一并寫出。

1. 鍵值對結構

  • 定義:HTTP 頭部以?鍵: 值?的形式組織,鍵與值之間用冒號分隔。(RFC標準文檔)

  • 作用:提供標準化、可擴展的元數據傳遞方式。

  • 示例

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
    Content-Type: application/json
  • 注意事項

    • 鍵不區分大小寫(如?content-type?與?Content-Type?等效)。

    • 多個值可用逗號分隔(如?Accept: text/html, application/json)。


2. Host

  • 定義:指定請求的目標域名和端口(HTTP/1.1 強制要求)。

  • 作用

    • 區分同一服務器上的多個網站(虛擬主機)。

    • 幫助反向代理或負載均衡器正確路由請求。

  • 示例

    Host: example.com:8080
  • 場景

    • 訪問?http://example.com?和?http://anotherexample.com?時,服務器通過?Host?頭返回不同內容。


3. Content-Length

  • 定義:表示請求體或響應體(body)的字節長度(十進制數字)。

  • 作用

    • 服務器/客戶端明確需讀取的數據量,避免粘包問題。

    • 對于?POST?或?PUT?請求,必須準確計算。

  • 示例

    Content-Length: 1024
  • 注意事項

    • 若使用分塊傳輸(Transfer-Encoding: chunked),無需設置此頭。


4. Content-Type

  • 定義:指示請求體或響應體的媒體類型(MIME 類型)。

  • 作用

    • 告知服務器如何解析請求體(如 JSON、表單數據)。

    • 指導客戶端(如瀏覽器)如何渲染響應內容。

  • 常見類型

    類型

    用途

    text/html

    HTML 網頁

    application/json

    JSON 數據

    application/x-www-form-urlencoded

    表單提交(鍵值對)

    multipart/form-data

    文件上傳

  • 示例

    Content-Type: application/json; charset=utf-8

5. User-Agent

  • 定義:標識客戶端(如瀏覽器、爬蟲)的類型和版本,里面表示了用戶使用的設備的瀏覽器和操作系統的情況。

  • 作用

    • 服務器適配不同客戶端(如返回移動端頁面)。

    • 統計用戶設備分布或檢測惡意爬蟲。

  • 示例

    User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1

6. Referer

  • 定義:表示當前請求的來源頁面 URL。即這個頁面是從哪個頁面跳轉來的。

  • 作用

    • 分析流量來源(如廣告點擊統計)。

    • 防盜鏈(限制圖片僅允許從特定網站加載)。

  • 示例

    Referer: https://www.google.com/
  • 注意事項

    • 隱私模式下或某些瀏覽器可能不發送此頭。


7. Cookie

  • 定義:cookie 就是瀏覽器允許網頁在本地硬盤存儲數據的一種機制,而不是讓網頁代碼直接訪問文件系統(避免風險),而是做了一層抽象。Cookie 這里是按照鍵值對的方式來存儲數據的,瀏覽器中可以直接看到當前頁面保存的 cookie 有哪些的。瀏覽器保存了這些 cookie 之后,就會在后續給服務器發送請求的時候,把這些 cookie 鍵值對放到 請求 cookie header 中傳輸給服務器。

  • 作用

    • 會話管理(如用戶登錄狀態)。

    • 個性化設置(如語言偏好、主題)。

  • 示例

    Cookie: sessionId=abc123; theme=dark

3.小結

今天的分享到這里就結束了,喜歡的小伙伴點點贊點點關注,你的支持就是對我最大的鼓勵,大家加油!

?

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

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

相關文章

Android學習總結之APK打包流程

一、預處理階段&#xff08;編譯前準備&#xff09; 1. AIDL 文件處理&#xff08;進程間通信基礎&#xff09; 流程&#xff1a; 用于實現 Android 系統中不同進程間的通信&#xff08;IPC&#xff09;。在項目構建時&#xff0c;AIDL 編譯器會將 .aidl 文件編譯為 Java 接口…

BDO分廠積極開展“五個一”安全活動

BDO分廠為規范化學習“五個一”活動主題&#xff0c;按照“上下聯動、分頭準備 、差異管理、資源共享”的原則&#xff0c;全面激活班組安全活動管理新模式&#xff0c;正在積極開展班組安全活動&#xff0c;以單元班組形式對每個班組每周組織一次“五個一”安全活動。 丁二醇單…

【音視頻】FLV格式分析

FLV概述 FLV(Flash Video)是Adobe公司推出的?種流媒體格式&#xff0c;由于其封裝后的?視頻?件體積?、封裝簡單等特點&#xff0c;?常適合于互聯?上使?。?前主流的視頻?站基本都?持FLV。采?FLV格式封裝的?件后綴為.flv。 FLV封裝格式是由?個?件頭(file header)和…

Java表達式1.0

Java開發工具 在當今的Java開發領域&#xff0c;IntelliJ IDEA已然成為了眾多開發者心目中的首選利器&#xff0c;它被廣泛認為是目前Java開發效率最快的IDE工具。這款備受矚目的開發工具是由JetBrains公司精心打造的&#xff0c;而JetBrains公司總部位于風景如畫的捷克共和國首…

Map遍歷

第一種遍歷方式鍵找值&#xff1a; 增強for循環&#xff1a; 通過獲取元素中的鍵&#xff0c;get到對應的值&#xff0c;通過增強for循環獲取集合里的鍵&#xff0c;然后用get方法通過鍵獲取值 代碼演示&#xff1a; import java.text.ParseException; import java.util.*;…

內網穿透服務器—FRP

某天某刻空閑的時候跟同事聊的本地的存儲服務如果我想讓其他公網內的用戶使用&#xff08;這個存儲服務只是一個臨時文件傳遞站&#xff0c;碎文件&#xff0c;安全低的&#xff09;&#xff0c;然后我們就探討到了FRP一個比較久遠的技術&#xff0c;來做內網穿透&#xff0c;下…

力扣每日打卡16 781. 森林中的兔子(中等)

力扣 781. 森林中的兔子 中等 前言一、題目內容二、解題方法1. 哈希函數&#xff08;來自評論區大佬的解題方法&#xff09;2.官方題解2.1 方法一&#xff1a;貪心 前言 這是刷算法題的第十六天&#xff0c;用到的語言是JS 題目&#xff1a;力扣 781. 森林中的兔子 (中等) 一、…

基于深度學習的線性預測:創新應用與挑戰

一、引言 1.1 研究背景 深度學習作為人工智能領域的重要分支&#xff0c;近年來在各個領域都取得了顯著的進展。在線性預測領域&#xff0c;深度學習也逐漸興起并展現出強大的潛力。傳統的線性預測方法在處理復雜數據和動態變化的情況時往往存在一定的局限性。而深度學習憑借…

黑馬點評redis改 part 3

優惠券秒殺 全局唯一id 每個店鋪都可以發布優惠券&#xff1a; 當用戶搶購時&#xff0c;就會生成訂單并保存到tb_voucher_order這張表中&#xff0c;而訂單表如果使用數據庫自增ID就存在一些問題&#xff1a;實際開發中數據庫ID一般不會參與業務邏輯 增加一個訂單號字段就好…

低代碼開發平臺:企業數字化轉型的加速器

一、引言 在數字化時代&#xff0c;企業的轉型需求日益迫切。為了在激烈的市場競爭中保持領先地位&#xff0c;企業需要快速響應市場變化、優化業務流程、提升運營效率。然而&#xff0c;傳統的軟件開發模式往往面臨開發周期長、成本高、靈活性差等問題&#xff0c;難以滿足企業…

個人所得稅

文章目錄 一、名詞解釋二、個人所得稅計算方法 (舉例)1.累計預扣預繳應納稅所得額、本期應預扣預繳稅額2.個人所得稅預扣率表一3.個人所得稅計算舉例 三、專項附加扣除政策介紹四、年度匯算清繳政策介紹五、常見問答 一、名詞解釋 累計預扣法是指扣繳義務人在一個納稅年度內預…

二進制和docker兩種方式部署Apache pulsar(standalone)

#作者&#xff1a;閆乾苓 文章目錄 1、二進制安裝部署Pulsar(standalone)1.1 安裝配置JDK1.2 下載解壓pulsar安裝包1.3 啟動獨立模式的Pulsar 集群1.4 創建主題測試1.5 向主題寫入消息測試1.6 從主題中讀取消息測試 2.docker安裝部署Pulsar(standalone)2.1 使用docker 啟動Pul…

如何在 Go 中創建和部署 AWS Lambda 函數

AWS Lambda 是一個無服務器計算平臺&#xff0c;您可以使用自己喜歡的編程語言編寫代碼&#xff0c;無需擔心設置虛擬機。 您只需為 Lambda 函數的調用次數和運行時間&#xff08;毫秒&#xff09;付費。 我們大多數人都了解 JavaScript 和 Python&#xff0c;但它們的內存效率…

STM32配置系統時鐘

1、STM32配置系統時鐘的步驟 1、系統時鐘配置步驟 先配置系統時鐘&#xff0c;后面的總線才能使用時鐘頻率 2、外設時鐘使能和失能 STM32為了低功耗&#xff0c;一開始是關閉了所有的外設的時鐘&#xff0c;所以外設想要工作&#xff0c;首先就要打開時鐘&#xff0c;所以后面…

[安全實戰]逆向工程核心名詞詳解

逆向工程核心名詞詳解 一、調試與執行類 1. 斷點&#xff08;Breakpoint&#xff09; 定義&#xff1a;在代碼中設置標記&#xff0c;使程序執行到此處時暫停類型&#xff1a; 普通斷點&#xff1a;通過INT3指令實現條件斷點&#xff1a;滿足特定條件時觸發內存斷點&#xf…

Mac mini 安裝mysql數據庫以及出現的一些問題的解決方案

首先先去官網安裝一下mysql數據庫&#xff0c;基本上都是傻瓜式安裝的流程&#xff0c;我也就不詳細說了。 接下來就是最新版的mysql安裝的時候&#xff0c;他就會直接讓你設置一個新的密碼。 打開設置&#xff0c;拉到最下面就會看到一個mysql的圖標&#xff1a; 我設置的就是…

聚寬策略----國九條后中小板微盤小改,年化135.40%

最近在研究的聚寬策略&#xff0c;一般技術分析的我直接轉qmt了&#xff0c;財務因子有一點麻煩&#xff0c;我直接利用我開發強大的服務器系統&#xff0c;直接讀取信號&#xff0c;最近在優化一下系統&#xff0c;最近在開發對接bigquant的交易系統&#xff0c;完成了api數據…

C語言狀態字與庫函數詳解:概念辨析與應用實踐

C語言狀態字與庫函數詳解&#xff1a;概念辨析與應用實踐 一、狀態字與庫函數的核心概念區分 在C語言系統編程中&#xff0c;"狀態字"和"庫函數"是兩個經常被混淆但本質完全不同的概念&#xff0c;理解它們的區別是掌握系統編程的基礎。 1. 狀態字&…

End-to-End從混沌到秩序:基于LLM的Pipeline將非結構化數據轉化為知識圖譜

摘要:本文介紹了一種將非結構化數據轉換為知識圖譜的端到端方法。通過使用大型語言模型(LLM)和一系列數據處理技術,我們能夠從原始文本中自動提取結構化的知識。這一過程包括文本分塊、LLM 提示設計、三元組提取、歸一化與去重,最終利用 NetworkX 和 ipycytoscape 構建并可…

Leetcode 3523. Make Array Non-decreasing

Leetcode 3523. Make Array Non-decreasing 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3523. Make Array Non-decreasing 1. 解題思路 這一題思路上來說就是一個棧的問題&#xff0c;就是從后往前依次考察每一個元素&#xff0c;顯然&#xff0c;當前位置要么被舍棄&…