大數據學習(121)-sql重點問題

🍋🍋大數據學習🍋🍋

🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。
💖如果覺得博主的文章還不錯的話,請點贊👍+收藏??+留言📝支持一下博主哦🤞


窗口函數使用技巧

窗口函數是 SQL 中處理復雜數據分析的強大工具,常用于排名、累計計算、同比環比等場景。以下從基礎語法、高頻函數、性能優化、典型場景四個維度總結核心技巧,并附示例代碼和避坑指南。

一、基礎語法與核心組件

1. 完整語法結構

sql

<窗口函數> OVER ([PARTITION BY 字段1, 字段2...]  -- 分組依據[ORDER BY 字段1 [ASC/DESC], 字段2...]  -- 排序規則[窗口子句]  -- 可選,定義窗口范圍
)

  • 窗口函數分類

    • 排名函數ROW_NUMBER()RANK()DENSE_RANK()
    • 聚合函數SUM()AVG()COUNT()MAX()MIN()
    • 偏移函數LAG()LEAD()FIRST_VALUE()LAST_VALUE()
  • 執行順序

    1. FROM → WHERE → GROUP BY → HAVING(生成基礎結果集)
    2. 窗口函數計算(基于基礎結果集)
    3. SELECT → ORDER BY → LIMIT(過濾和排序最終結果)

二、高頻窗口函數與典型場景

1. 排名函數:處理排序與去重
函數說明示例(按工資降序)
ROW_NUMBER()強制唯一排名(1,2,3...)ROW_NUMBER() OVER (ORDER BY salary DESC)
RANK()允許并列,跳過后續排名(1,1,3)RANK() OVER (ORDER BY salary DESC)
DENSE_RANK()允許并列,不跳過后續排名(1,1,2)DENSE_RANK() OVER (ORDER BY salary DESC)

典型場景

  • Top N 篩選:查詢每個部門工資最高的 3 人。

    WITH ranked_employees AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rnFROM employees
    )
    SELECT * FROM ranked_employees WHERE rn <= 3;
    
  • 去重:刪除表中重復記錄,保留主鍵最小的行。

    WITH duplicates AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rnFROM users
    )
    DELETE FROM duplicates WHERE rn > 1;
    
2. 聚合函數:動態計算分組統計值

典型場景

  • 累計計算:計算每月累計銷售額。

    SELECT month,sales_amount,SUM(sales_amount) OVER (ORDER BY month) AS cumulative_sales
    FROM monthly_sales;
    
  • 移動平均:計算近 3 天的平均訂單量。

    SELECT order_date,order_count,AVG(order_count) OVER (ORDER BY order_date RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) AS 3_day_avg
    FROM daily_orders;
    
3. 偏移函數:獲取前后行數據
函數說明示例(獲取前一個月銷售額)
LAG(字段, N)當前行向前第 N 行的值LAG(sales, 1) OVER (ORDER BY month)
LEAD(字段, N)當前行向后第 N 行的值LEAD(sales, 1) OVER (ORDER BY month)

典型場景

  • 環比計算

    SELECT month,sales,LAG(sales, 1) OVER (ORDER BY month) AS prev_month_sales,ROUND((sales - LAG(sales, 1) OVER (ORDER BY month)) / LAG(sales, 1) OVER (ORDER BY month) * 100, 2) AS growth_rate
    FROM monthly_sales;
    
  • 異常檢測:找出銷售額突然變化的月份。

    SELECT month,sales,ABS(sales - LAG(sales, 1) OVER (ORDER BY month)) AS sales_change
    FROM monthly_sales
    WHERE ABS(sales - LAG(sales, 1) OVER (ORDER BY month)) > 1000;  -- 變化超過 1000
    

三、窗口子句(Window Frame)高級技巧

1. 窗口范圍定義
-- 語法
<窗口函數> OVER (PARTITION BY ...ORDER BY ...[ROWS/RANGE BETWEEN <起始> AND <結束>]
)

  • ROWS vs RANGE
    • ROWS:按物理行計數(無論值是否相同)。
    • RANGE:按邏輯值范圍(相同值視為同一行)。

示例:計算當前行及前兩行的累計值。

SUM(sales) OVER (ORDER BY monthROWS BETWEEN 2 PRECEDING AND CURRENT ROW
)
2. 常見窗口范圍寫法
窗口范圍說明
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW從組的第一行到當前行(累計值)
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING當前行 + 前一行 + 后一行(移動窗口)
RANGE BETWEEN 7 PRECEDING AND CURRENT ROW當前值的 7 天前到當前(時間窗口)

四、性能優化與避坑指南

1. 索引優化
  • 為?PARTITION BY?和?ORDER BY?字段創建復合索引

    CREATE INDEX idx_dept_salary ON employees (dept_id, salary);
    
    ?
    • 適用場景:頻繁按部門分組并按工資排序的查詢。
  • 覆蓋索引:若查詢僅需窗口函數結果,可創建覆蓋索引避免回表。

    CREATE INDEX idx_month_sales ON monthly_sales (month, sales);
    
2. 避免重復計算
  • 用 CTE 緩存中間結果
    WITH ranked_data AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rnFROM employees
    )
    SELECT * FROM ranked_data WHERE rn <= 3;  -- 避免重復計算排名
    
3. 窗口函數 vs 自連接
  • 窗口函數更高效
    -- 低效:自連接計算部門平均工資
    SELECT e.emp_id,e.salary,d.avg_salary
    FROM employees e
    JOIN (SELECT dept_id, AVG(salary) AS avg_salary FROM employees GROUP BY dept_id
    ) d ON e.dept_id = d.dept_id;-- 高效:窗口函數直接計算
    SELECT emp_id,dept_id,salary,AVG(salary) OVER (PARTITION BY dept_id) AS avg_salary
    FROM employees;
    

五、高頻面試題

問題 1:如何用窗口函數實現用戶留存分析?

答案示例

WITH first_login AS (SELECT user_id,MIN(login_date) AS first_dateFROM user_loginGROUP BY user_id
),
login_days AS (SELECT fl.user_id,fl.first_date,ul.login_date,DATEDIFF(ul.login_date, fl.first_date) AS days_since_firstFROM first_login flJOIN user_login ul ON fl.user_id = ul.user_id
)
SELECT first_date,COUNT(DISTINCT user_id) AS new_users,SUM(CASE WHEN days_since_first = 1 THEN 1 ELSE 0 END) AS day1_retained,ROUND(SUM(CASE WHEN days_since_first = 1 THEN 1 ELSE 0 END) / COUNT(DISTINCT user_id) * 100, 2) AS day1_retention_rate
FROM login_days
GROUP BY first_date
ORDER BY first_date;
問題 2:窗口函數中?ORDER BY?的作用是什么?

答案要點

  • 對聚合函數ORDER BY?定義窗口范圍的排序規則(如累計值按時間遞增)。
  • 對排名函數ORDER BY?決定按哪個字段排名(如按工資降序排名)。
  • 若省略?ORDER BY:窗口范圍默認為整個分區(所有行)。
問題 3:LAG()?和?LEAD()?的區別是什么?

答案要點

  • LAG():獲取當前行之前的第 N 行數據(用于環比、歷史對比)。
  • LEAD():獲取當前行之后的第 N 行數據(用于預測、提前預警)。

六、實戰建議

  1. 復雜查詢分步驟編寫

    -- 步驟 1:計算基礎數據
    WITH base_data AS (SELECT user_id,order_date,ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date) AS order_rankFROM orders
    )
    -- 步驟 2:篩選首次訂單
    SELECT * FROM base_data WHERE order_rank = 1;
    
  2. 結合業務場景選擇窗口函數

    • 排名需求:用?ROW_NUMBER()/RANK()
    • 時間序列分析:用?LAG()/LEAD()
    • 動態聚合:用?SUM() OVER()/AVG() OVER()
  3. 注意窗口范圍邊界

    -- 錯誤:未指定 ORDER BY,默認窗口為整個分區
    SUM(sales) OVER (PARTITION BY month)  -- 返回每月總和,而非累計值-- 正確:明確 ORDER BY,計算累計值
    SUM(sales) OVER (PARTITION BY month ORDER BY day)
    

總結:窗口函數使用策略

場景推薦函數關鍵參數
分組排名ROW_NUMBER(),?RANK()PARTITION BY,?ORDER BY
累計計算SUM() OVER(),?AVG() OVER()ORDER BY,?ROWS BETWEEN
時間序列對比LAG(),?LEAD()ORDER BY, 偏移量(如 1)
移動窗口統計AVG() OVER(),?MAX() OVER()ORDER BY,?ROWS/RANGE
首尾值獲取FIRST_VALUE(),?LAST_VALUE()ORDER BY,?ROWS BETWEEN

通過靈活組合窗口函數、窗口子句和索引優化,可高效解決各類復雜數據分析需求,提升 SQL 查詢的表達能力和執行效率。

用簡單的話直接說明partition by 與group by 的主要區別

核心區別

  1. 分組后結果行數

    • GROUP BY:合并分組,結果行數減少(每組1行)。
    • PARTITION BY:保留原始行,結果行數不變(每組多行)。
  2. 功能用途

    • GROUP BY:用于聚合統計(如求和、計數)。
    • PARTITION BY:用于窗口計算(如排名、累計值)。

一句話總結

  • GROUP BY?是“合并同類項”,生成新的匯總行;
  • PARTITION BY?是“分組加特效”,在原數據上疊加計算結果。

在出一些相關的sql上的細節問題

以下是補充的?SQL 細節問題清單,聚焦高頻考點中的易錯點和細節差異,覆蓋?JOIN、聚合函數、NULL 處理、索引優化?等維度,附答案要點和示例代碼:

一、JOIN 細節問題

1. LEFT JOIN 與 INNER JOIN 的結果差異

問題
兩張表?A (id: 1,2,3)?和?B (id: 2,3,4),執行?A LEFT JOIN B ON A.id = B.id?和?A INNER JOIN B ON A.id = B.id?的結果分別是什么?

答案要點

  • LEFT JOIN:返回 A 的所有行(1,2,3),匹配不上的 B 字段填?NULL
    SELECT A.id, B.id FROM A LEFT JOIN B ON A.id = B.id;
    -- 結果:(1,NULL), (2,2), (3,3)
    
  • INNER JOIN:僅返回匹配的行(2,3)。
    SELECT A.id, B.id FROM A INNER JOIN B ON A.id = B.id;
    -- 結果:(2,2), (3,3)
    
2. ON 與 WHERE 條件的執行順序

問題
LEFT JOIN?中,ON A.x = B.x AND B.y = 'value'?和?WHERE B.y = 'value'?的區別是什么?

答案要點

  • ON 條件:在連接時過濾右表(B),不影響左表(A)的保留。
    SELECT A.id, B.y FROM A LEFT JOIN B ON A.id = B.id AND B.y = 'active';
    -- 結果:A 的所有行,B 中不滿足 y='active' 的行填 NULL
    
  • WHERE 條件:在連接后過濾整個結果集,可能導致左表行被剔除。
    SELECT A.id, B.y FROM A LEFT JOIN B ON A.id = B.id WHERE B.y = 'active';
    -- 結果:僅保留 B.y='active' 的行,等價于 INNER JOIN
    

二、聚合函數細節

3. COUNT 的不同用法

問題
COUNT(*)COUNT(column)COUNT(DISTINCT column)?的區別是什么?

答案要點

  • COUNT(*):統計所有行,包括?NULL?值。
  • COUNT(column):統計 column 非?NULL?的行。
  • COUNT(DISTINCT column):統計 column 非重復且非?NULL?的值。

示例

CREATE TABLE test (id INT, name VARCHAR(10));
INSERT INTO test VALUES (1, NULL), (2, 'Alice'), (3, 'Alice');SELECT COUNT(*) AS count_all,          -- 結果:3COUNT(name) AS count_name,      -- 結果:2(排除 NULL)COUNT(DISTINCT name) AS count_distinct;  -- 結果:1(去重后 'Alice')
4. 聚合函數與 NULL 的關系

問題
SUM(column)AVG(column)?遇到?NULL?值如何處理?

答案要點

  • 聚合函數忽略?NULL
    CREATE TABLE sales (amount INT);
    INSERT INTO sales VALUES (100), (NULL), (200);SELECT SUM(amount) AS total,     -- 結果:300(忽略 NULL)AVG(amount) AS average;   -- 結果:150(計算時排除 NULL)
    
  • 若需包含?NULL:用?COALESCE?轉換為 0。
    SELECT SUM(COALESCE(amount, 0)) AS total,  -- 結果:300 + 0 = 300AVG(COALESCE(amount, 0)) AS average;  -- 結果:(100+0+200)/3 = 100
    

三、NULL 處理細節

5. NULL 的比較規則

問題
WHERE column = NULL?和?WHERE column IS NULL?的區別是什么?

答案要點

  • =?無法判斷?NULL
    SELECT * FROM users WHERE email = NULL;  -- 永遠返回空結果
    
  • 必須用?IS NULL?或?IS NOT NULL
    SELECT * FROM users WHERE email IS NULL;  -- 正確
    
6. COALESCE 與 IFNULL 的區別

問題
COALESCE(value1, value2)?和?IFNULL(value1, value2)?的區別是什么?

答案要點

  • COALESCE:支持多個參數,返回第一個非?NULL?值(標準 SQL)。
    COALESCE(NULL, 1, 2)  -- 結果:1
    
  • IFNULL:僅支持兩個參數(MySQL 特有)。
    IFNULL(NULL, 1)  -- 結果:1
    

四、索引優化細節

7. 復合索引的最左匹配原則

問題
索引?(a, b, c)?能加速哪些查詢?

答案要點

  • 可加速
    WHERE a = 1              -- 匹配 a
    WHERE a = 1 AND b = 2    -- 匹配 a,b
    WHERE a = 1 AND b = 2 AND c = 3  -- 匹配 a,b,c
    
  • 無法加速
    WHERE b = 2              -- 未從 a 開始
    WHERE a = 1 AND c = 3    -- 跳過 b
    
8. 索引失效的常見場景

問題
哪些操作會導致索引失效?

答案要點

  • 對索引字段使用函數
    WHERE YEAR(create_time) = 2023  -- 索引失效
    
  • 隱式類型轉換
    WHERE id = '123'  -- 若 id 為 INT,觸發類型轉換
    
  • 范圍查詢后的字段
    WHERE a > 10 AND b = 20  -- 索引 (a, b) 僅 a 生效
    

五、SQL 執行順序細節

9. SQL 子句的執行順序

問題
寫出?SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT?的執行順序。

答案要點

  1. FROM?→ 2.?WHERE?→ 3.?GROUP BY?→ 4.?HAVING?→ 5.?SELECT?→ 6.?ORDER BY?→ 7.?LIMIT
10. 子查詢與 JOIN 的性能差異

問題
何時使用子查詢,何時使用 JOIN?

答案要點

  • 子查詢:適用于單行 / 單列的結果(如標量子查詢)。
    SELECT name FROM users WHERE id = (SELECT user_id FROM orders WHERE order_id = 1);
    
  • JOIN:適用于多表關聯,性能通常更優。
    SELECT u.name FROM users u JOIN orders o ON u.id = o.user_id WHERE o.order_id = 1;
    

六、日期時間處理細節

11. 日期比較的常見陷阱

問題
如何查詢?2023-01-01?到?2023-01-31?之間的數據?

答案要點

  • 正確寫法
    WHERE date_column >= '2023-01-01' AND date_column < '2023-02-01';
    
  • 錯誤寫法
    WHERE date_column BETWEEN '2023-01-01' AND '2023-01-31';  -- 可能漏掉 23:59:59 的記錄
    
12. 不同數據庫的日期函數差異

問題
如何獲取當前日期?

答案要點

數據庫函數
MySQLCURDATE()?或?NOW()
PostgreSQLCURRENT_DATE?或?NOW()
SQL ServerGETDATE()

七、字符串處理細節

13. 字符串拼接的語法差異

問題
如何拼接字符串?'Hello'?和?'World'

答案要點

數據庫語法
MySQLCONCAT('Hello', 'World')
PostgreSQL`'Hello''World'`
SQL Server'Hello' + 'World'
14. 字符串截取函數

問題
如何截取字符串?'abcdef'?的前 3 個字符?

答案要點

數據庫函數
MySQLSUBSTRING('abcdef', 1, 3)
PostgreSQLSUBSTRING('abcdef', 1, 3)
SQL ServerSUBSTRING('abcdef', 1, 3)

八、業務場景細節

15. 如何實現分頁查詢?

問題
查詢第 10 頁(每頁 10 條)的數據。

答案要點

  • MySQL/PostgreSQL
    SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 90;  -- 第 10 頁
    
  • 優化大分頁
    SELECT * FROM users WHERE id > 90 LIMIT 10;  -- 通過主鍵定位,避免全表掃描
    
16. 如何設計自增主鍵?

問題
自增主鍵 vs UUID 的適用場景?

答案要點

  • 自增主鍵:性能優,適合頻繁插入(如訂單表)。
    CREATE TABLE orders (id BIGINT AUTO_INCREMENT PRIMARY KEY, ...);
    
  • UUID:分布式場景,避免主鍵沖突(如用戶表)。
    CREATE TABLE users (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), ...);
    

九、面試應答技巧

  1. 分步驟解釋復雜問題
    例如解釋窗口函數時:

    " 第一步,PARTITION BY?將數據分組;第二步,ORDER BY?確定每組內的排序;第三步,窗口函數對每組數據進行計算。"

  2. 主動對比不同方案
    例如優化慢查詢時:

    "我會先分析執行計劃,若發現全表掃描,優先添加索引;若索引已存在但仍慢,考慮是否需要拆分大查詢或使用覆蓋索引。"

  3. 結合業務場景舉例
    例如解釋反范式化時:

    "在電商訂單表中,我們冗余存儲了用戶姓名,因為訂單查詢時 90% 的場景需要展示用戶信息,這樣能減少 JOIN 操作,提升查詢速度。"

總結

SQL 面試的細節陷阱主要集中在:

  1. 邏輯差異LEFT JOIN?vs?INNER JOINON?vs?WHEREGROUP BY?vs?PARTITION BY
  2. NULL 處理NULL?不能用?=?比較,聚合函數默認忽略?NULL
  3. 索引優化:復合索引的最左匹配、索引失效場景。
  4. 函數差異:不同數據庫的日期 / 字符串函數語法。

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

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

相關文章

【QT】QString和QStringList去掉空格的方法總結

目錄 一、QString去掉空格 1. 移除字符串首尾的空格&#xff08;trimmed&#xff09; 2. 移除字符串中的所有空格&#xff08;remove&#xff09; 3. 僅移除左側&#xff08;開頭&#xff09;或右側&#xff08;結尾&#xff09;空格 4. 替換多個連續空格為單個空格 5. 移…

電腦 IP 地址修改工具,輕松實現異地登陸

在互聯網時代&#xff0c;異地登陸需求日益頻繁 —— 訪問區域限制內容、跨區協作、優化游戲體驗等場景&#xff0c;都需要通過修改 IP 地址實現。 一、IP 地址基礎認知 IP 地址是設備的網絡身份標識&#xff0c;不同地區分配不同 IP 段。通過修改 IP&#xff0c;可模擬目標地…

[BUG]Debian/Linux操作系統中 安裝 curl等軟件顯示無候選安裝(E: 軟件包 curl 沒有可安裝候選)

本文內容組織形式 問題描述失效原因解決方案首先修改源列表為國內確認當前系統的版本Debian 11 (Bullseye)Debian 12 (Bookworm) 執行系統升級更新系統重新安裝curl 結語 問題描述 日期&#xff1a;20250526 操作系統&#xff1a; debian darkchunkdebian:/home$ sudo apt i…

leetcode hot100刷題日記——12.反轉鏈表

解答&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…

JavaSE核心知識點04工具04-01(JDK21)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 JavaSE核心知識點04工具04-01&#xff08;JD…

數據庫入門:以商品訂單系統為例

數據庫入門&#xff1a;以商品訂單系統為例 一、前言 數據庫是現代軟件開發中不可或缺的基礎&#xff0c;掌握數據庫的基本概念和操作&#xff0c;是每個開發者的必經之路。本文將以“商品-品牌-客戶-訂單-訂單項”為例&#xff0c;帶你快速入門數據庫的核心知識和基本操作。…

UE失落方舟特效學習 筆記01

通過法線扭曲貼圖 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_0" ExportPath"/Script/UnrealEd.MaterialGraphNode/Engine/Transient.M_RadialUV_01:MaterialGraph_0.MaterialGraphNode_0"Begin Object Class/Script/E…

跨境支付風控失效?用代理 IP 構建「地域 - 設備 - 行為」三維防護網

針對跨境支付風控失效問題&#xff0c;結合代理IP技術構建「地域-設備-行為」三維防護網是當前最有效的解決方案。以下是基于最新實踐的技術路徑與策略指南&#xff1a; 一、地域維度&#xff1a;IP地理特征精準匹配 IP屬地真實性驗證 優先選擇住宅代理IP&#xff08;Residenti…

AI的“軟肋”:架構設計與業務分析的壁壘

盡管人工智能&#xff08;AI&#xff09;在代碼生成、數據分析等方面取得了顯著進展&#xff0c;但在架構設計和業務分析的核心領域&#xff0c;人類的智慧和經驗仍然是不可替代的。這些領域往往涉及高度的抽象思維、戰略遠見、對復雜商業邏輯的深刻理解以及在模糊不清的環境中…

【Redis實戰篇】基于Redis的功能實現附近商鋪查詢(Geo),用戶簽到與統計(Bitmap),網站UV統計(HyperLogLog)

文章目錄 附近商鋪GEOSEARCH 實現語法參數解釋 GEORADIUS 實現基本語法參數詳解必選參數可選參數參數詳解必選參數 代碼實現 用戶簽到BitmapRedis 中 Bitmap 基本操作1. 設置位值2. 獲取位值3. 統計位值為 1 的數量4. 位圖運算 Spring Data Redis 中操作 Bitmap1. 操作示例(1) …

【C++高階一】二叉搜索樹

【C高階一】二叉搜索樹剖析 1.什么是二叉搜索樹2.二叉搜索樹非遞歸實現2.1插入2.2刪除2.2.1刪除分析一2.2.2刪除分析二 2.3查找 3.二叉搜索樹遞歸實現3.1插入3.2刪除3.3查找 4.完整代碼 1.什么是二叉搜索樹 任何一個節點&#xff0c;他的左子樹的所有節點都比他小&#xff0c;右…

前端面試熱門知識點總結

URL從輸入到頁面展示的過程 版本1 1.用戶在瀏覽器的地址欄輸入訪問的URL地址。瀏覽器會先根據這個URL查看瀏覽器緩存-系統緩存-路由器緩存&#xff0c;若緩存中有&#xff0c;直接跳到第6步操作&#xff0c;若沒有&#xff0c;則按照下面的步驟進行操作。 2.瀏覽器根據輸入的UR…

Swagger | 解決Springboot2.x/3.x不兼容和依賴報錯等問題

目錄 不兼容報錯提醒 1. 修改Spring Boot版本 2. 修改application.yml配置文件 3. 使用其他替代方案 依賴兼容 配置 Yaml 文件 依賴報錯提醒 解決方法 1. 選擇一個庫 2. 移除springfox依賴 3. 添加springdoc依賴 4. 配置springdoc 5. 清理項目 6. 啟動項目 示例代…

C++默認構造函數、普通構造函數、拷貝構造、移動構造、委托構造及析構函數深度解析

目錄 一、默認構造函數&#xff08;Default Constructor&#xff09;二、普通構造函數&#xff08;General Constructor&#xff09;三、拷貝構造函數&#xff08;Copy Constructor&#xff09;四、移動構造函數&#xff08;Move Constructor&#xff0c;C11&#xff09;五、委…

JVM 深度解析

一、JVM 概述 1.1 什么是 JVM&#xff1f; JVM&#xff08;Java Virtual Machine&#xff0c;Java 虛擬機&#xff09;是 Java 程序運行的核心引擎。它像一個“翻譯官”&#xff0c;將 Java 字節碼轉換為機器能理解的指令&#xff0c;并管理程序運行時的內存、線程等資源。 …

OpenCV CUDA 模塊圖像過濾-----創建一個計算圖像導數的濾波器函數createDerivFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::createDerivFilter 是 OpenCV CUDA 模塊中的一個工廠函數&#xff0c;用于創建一個計算圖像導數的濾波器。這個濾波器可以用來計算圖像…

Spring Boot 接口開發實戰指南

Spring Boot 接口開發實戰指南 一、基礎接口開發步驟 1.1 添加必要依賴 <!-- pom.xml --> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></depen…

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形

題目 3325: 藍橋杯2025年第十六屆省賽真題-2025 圖形 時間限制: 2s 內存限制: 192MB 提交: 494 解決: 206 題目描述 小藍要畫一個 2025 圖形。圖形的形狀為一個 h w 的矩形&#xff0c;其中 h 表示圖形的高&#xff0c;w 表示圖形的寬。當 h 5,w 10 時&#xff0c;圖形如下所…

UML 時序圖 使用案例

UML 時序圖 UML 時序圖 (Sequence Diagram)時序圖的主要元素消息類型詳解時序圖示例時序圖繪制步驟時序圖的應用場景 UML 時序圖 (Sequence Diagram) 時序圖是UML(統一建模語言)中用于展示對象之間交互行為的動態視圖&#xff0c;它特別強調消息的時間順序。 時序圖的主要元素…

PPT連同備注頁(演講者模式)一塊轉為PDF

首先&#xff0c;進入創建PDF/XPS&#xff1a; 然后進入選項&#xff1a; 發布選項-發布內容里選備注頁&#xff1a; 導出的原始結果是這樣的&#xff1a; 這個時候裁剪一下&#xff0c;范圍為所有頁面&#xff1a; 最終結果&#xff1a; 如果導出不選“備注頁”而是只勾選“包…