SQL語句(查詢)

單表查詢

常量查詢

讓我們來看一個具體的 SQL 代碼和結果示例,假設有一張名為?orders?的數據表,它存儲了訂單信息,包括訂單編號(order_id)、商品單價(unit_price)、購買數量(quantity)等:

數據表orders

order_idunit_pricequantity
100110.005
100220.003
100315.002
100425.004

現在,我們需要計算每個訂單的總金額(total_amount),即商品單價(unit_price)乘以購買數量(quantity)。

SQL 查詢語句如下:

select order_id, unit_price, quantity, unit_price * quantity as total_amount from orders;

between and 運算符

使用 “BETWEEN” 運算符篩選出年齡在 25 到 30 之間的員工:

-- SQL查詢語句
select name, age, salary from employees where age between 25 and 30;

判斷是否為空值

在數據庫中,有時候數據表的某些字段可能沒有值,即為空值(NULL)。

空值表示該字段的值是未知的、不存在的或者沒有被填寫的。在SQL查詢中,我們可以使用 “IS NULL” 和 “IS NOT NULL” 來判斷字段是否為空值或非空值

模糊查詢

模糊查詢是一種特殊的條件查詢,它允許我們根據模式匹配來查找符合特定條件的數據,可以使用 LIKE 關鍵字實現模糊查詢。

在 LIKE 模糊查詢中,我們使用通配符來代表零個或多個字符,從而能夠快速地找到匹配的數據。

有如下 2 種通配符:

  • 百分號(%):表示任意長度的任意字符序列。
  • 下劃線(_ ):表示任意單個字符。

同理,可以使用?not like?來查詢不包含某關鍵字的信息

邏輯運算符

邏輯運算是一種在條件查詢中使用的運算符,它允許我們結合多個條件來過濾出符合特定條件的數據。

在邏輯運算中,常用的運算符有:

  • AND:表示邏輯與,要求同時滿足多個條件,才返回 true。
  • OR:表示邏輯或,要求滿足其中任意一個條件,就返回 true。
  • NOT:表示邏輯非,用于否定一個條件(本來是 true,用了 not 后轉為 false)

去重

在數據表中,可能存在重復的數據記錄,但如果我們想要過濾掉重復的記錄,只保留不同的記錄,就要使用 SQL 的去重功能。

在 SQL 中,我們可以使用?DISTINCT?關鍵字來實現去重操作。

-- SQL 查詢語句
select distinct class_id from students;

除了按照單字段去重外,DISTINCT?關鍵字還支持根據多個字段的組合來進行去重操作,確保多個字段的組合是唯一的。

示例語法如下:

distinct 字段1, 字段2, 字段3, ...

排序

在查詢數據時,我們有時希望對結果按照某個字段的值進行排序,以便更好地查看數據。

在 SQL 中,我們可以使用?ORDER BY?關鍵字來實現排序操作。ORDER BY?后面跟上需要排序的字段,可以選擇升序(ASC)或降序(DESC)排列。

-- SQL 查詢語句 1
select name, age from students order by age asc;-- SQL 查詢語句 2
select name, score from students order by score desc;

在排序的基礎上,我們還可以根據多個字段的值進行排序。當第一個字段的值相同時,再按照第二個字段的值進行排序,以此類推。

示例語法如下:

order by 字段1 [升序/降序], 字段2 [升序/降序], ...

截斷和偏移

在 SQL 中,我們使用?LIMIT?關鍵字來實現數據的截斷和偏移。
截斷和偏移的一個典型的應用場景是分頁,即網站內容很多時,用戶可以根據頁號每次只看部分數據。

-- LIMIT 后只跟一個整數,表示要截斷的數據條數(一次獲取幾條)
select task_name, due_date from tasks limit 2;-- LIMIT 后跟 2 個整數,依次表示從第幾條數據開始、一次獲取幾條
select task_name, due_date from tasks limit 2, 2;

查詢語句 2 結果,從下標為 2(第 3 條)數據的位置開始獲取 2 條數據:

注:左閉的,但是是下標的索引值

條件分支

使用?case when?可以在查詢結果中根據特定的條件動態生成新的列或對現有的列進行轉換。

示例 SQL 如下:

SELECTname,CASE WHEN (name = '雞哥') THEN '會' ELSE '不會' END AS can_rap
FROMstudent;

查詢結果:

namecan_rap
小明不會
雞哥
李華不會
王五不會

case when?支持同時指定多個分支,示例語法如下:

CASE WHEN (條件1) THEN 結果1WHEN (條件2) THEN 結果2...ELSE 其他結果 END
select name,
case when(age > 60) then "老同學"when(age > 20) then "年輕"else "小同學" end as age_level
from student order by name asc

注:case 返回的是一個字段

時間函數

常用的時間函數有:

  • DATE:獲取當前日期
  • DATETIME:獲取當前日期時間
  • TIME:獲取當前時間

示例

假設有一個訂單表?orders,包含以下字段:order_id(訂單號)、order_date(下單日期)、order_time(下單時間)。數據如下:

order_idorder_dateorder_time
12023-08-0112:30:45
22023-08-0114:20:10
32023-08-0209:15:00
42023-08-0218:05:30

使用時間函數獲取當前日期、當前日期時間和當前時間:

-- 獲取當前日期
SELECT DATE() AS current_date;-- 獲取當前日期時間
SELECT DATETIME() AS current_datetime;-- 獲取當前時間
SELECT TIME() AS current_time;

查詢結果:

為了方便對比,放到同一個表格

current_datecurrent_datetimecurrent_time
2023-08-012023-08-01 14:30:0014:30:00

注意,這里的日期、日期時間和時間將根據當前的系統時間來生成,實際運行結果可能會因為當前時間而不同。

字符串

在 SQL 中,字符串處理是一類用于處理文本數據的函數。它們允許我們對字符串進行各種操作,如轉換大小寫、計算字符串長度以及搜索和替換子字符串等。字符串處理函數可以幫助我們在數據庫中對字符串進行加工和轉換,從而滿足不同的需求。

  • upper(xxx)
  • length(xxx)
  • lower(xxx)

聚合函數

在 SQL 中,聚合函數是一類用于對數據集進行?匯總計算?的特殊函數。它們可以對一組數據執行諸如計數、求和、平均值、最大值和最小值等操作。聚合函數通常在 SELECT 語句中配合 GROUP BY 子句使用,用于對分組后的數據進行匯總分析。

常見的聚合函數包括:

  • COUNT:計算指定列的行數或非空值的數量。
  • SUM:計算指定列的數值之和。
  • AVG:計算指定列的數值平均值。
  • MAX:找出指定列的最大值。
  • MIN:找出指定列的最小值。

示例

假設有一個訂單表?orders,包含以下字段:order_id(訂單號)、customer_id(客戶編號)、amount(訂單金額)。數據如下:

order_idcustomer_idamount
1A001100
2A002200
3A001150
4A00350

1)使用聚合函數?COUNT?計算訂單表中的總訂單數:

SELECT COUNT(*) AS order_num
FROM orders;

查詢結果:

order_num
4

2)使用聚合函數?COUNT(DISTINCT 列名)?計算訂單表中不同客戶的數量:

SELECT COUNT(DISTINCT customer_id) AS customer_num
FROM orders;

查詢結果:

customer_num
3

3)使用聚合函數?SUM?計算總訂單金額:

SELECT SUM(amount) AS total_amount
FROM orders;

查詢結果:

total_amount
500

單字段分組

在 SQL 中,分組聚合是一種對數據進行分類并對每個分類進行聚合計算的操作。它允許我們按照指定的列或字段對數據進行分組,然后對每個分組應用聚合函數,如 COUNT、SUM、AVG 等,以獲得分組后的匯總結果。

舉個例子:某個學校可以按照班級將學生分組,并對每個班級進行統計。查看每個班級有多少學生、每個班級的平均成績。這樣我們就能夠對學校各班的學生情況有一個整體的了解,而不是單純看個別學生的信息。

在 SQL 中,通常使用?GROUP BY?關鍵字對數據進行分組。

示例

假設有一個訂單表?orders,包含以下字段:order_id(訂單號)、product_id(商品編號)、customer_id(客戶編號)、amount(訂單金額)。

數據如下:

order_idproduct_idcustomer_idamount
11A001100
21A002200
31A001150
41A00350
52A00150

要查詢使用多字段分組查詢表中?每個客戶?購買的?每種商品?的總金額,相當于按照客戶編號和商品編號分組:

-- 查詢每個用戶購買的每種商品的總金額,按照客戶編號和商品編號分組
SELECT customer_id, product_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id, product_id;

查詢結果:

customer_idproduct_idtotal_amount
A0011250
A001250
A0021200
A003150

having

在 SQL 中,HAVING 子句用于在分組聚合后對分組進行過濾。它允許我們對分組后的結果進行條件篩選,只保留滿足特定條件的分組。

HAVING 子句與條件查詢 WHERE 子句的區別在于,WHERE 子句用于在?分組之前?進行過濾,而 HAVING 子句用于在?分組之后?進行過濾。

多表查詢

cross join

在 SQL 中,關聯查詢是一種用于聯合多個數據表中的數據的查詢方式。

其中,CROSS JOIN?是一種簡單的關聯查詢,不需要任何條件來匹配行,它直接將左表的?每一行?與右表的?每一行?進行組合,返回的結果是兩個表的笛卡爾積。

SELECT e.emp_name, e.salary, d.department, d.manager
FROM employees e
CROSS JOIN departments d;

上面的 SQL 還可以簡化為:

SELECT e.emp_name, e.salary, d.department, d.manager
FROM employees e, departments d;

關聯查詢(inner-join)

在 SQL 中,INNER JOIN 是一種常見的關聯查詢方式,它根據兩個表之間的關聯條件,將滿足條件的行組合在一起。

注意,INNER JOIN 只返回兩個表中滿足關聯條件的交集部分,即在兩個表中都存在的匹配行。

示例

假設有一個員工表?employees,包含以下字段:emp_id(員工編號)、emp_name(員工姓名)、department(所屬部門)、salary(工資)。數據如下:

emp_idemp_namedepartmentsalary
1小明技術部5000
2雞哥財務部6000
3李華銷售部4500

假設還有一個部門表?departments,包含以下字段:department(部門名稱)、manager(部門經理)、location(所在地)。數據如下:

departmentmanagerlocation
技術部張三上海
財務部李四北京
銷售部王五廣州
摸魚部趙二吐魯番

使用 INNER JOIN 進行關聯查詢,根據員工表和部門表之間的公共字段?部門名稱(department)?進行匹配,將員工的姓名、工資以及所屬部門和部門經理組合在一起:

SELECT e.emp_name, e.salary, e.department, d.manager
FROM employees e
JOIN departments d ON e.department = d.department;

查詢結果如下:

emp_namesalarydepartmentmanager
小明5000技術部張三
雞哥6000財務部李四
李華4500銷售部王五

我們會發現,使用 INNER_JOIN 后,只有兩個表之間存在對應關系的數據才會被放到查詢結果中。

關聯查詢(outer-join)

在 SQL 中,OUTER JOIN 是一種關聯查詢方式,它根據指定的關聯條件,將兩個表中滿足條件的行組合在一起,并?包含沒有匹配的行?。

在 OUTER JOIN 中,包括 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 兩種類型,它們分別表示查詢左表和右表的所有行(即使沒有被匹配),再加上滿足條件的交集部分。

SELECT e.emp_name, e.salary, e.department, d.manager
FROM employees e
LEFT JOIN departments d ON e.department = d.department;

注:左查詢會將 employees 所有的行都羅列出來,然后滿足條件的會將 departments 中的信息帶著

子查詢

子查詢是指在一個查詢語句內部?嵌套?另一個完整的查詢語句,內層查詢被稱為子查詢。子查詢可以用于獲取更復雜的查詢結果或者用于過濾數據。

當執行包含子查詢的查詢語句時,數據庫引擎會首先執行子查詢,然后將其結果作為條件或數據源來執行外層查詢。

打個比方,子查詢就像是在一個盒子中的盒子,外層查詢是大盒子,內層查詢是小盒子。執行查詢時,我們首先打開小盒子獲取結果,然后將小盒子的結果放到大盒子中繼續處理。

示例

假設我們有以下兩個數據表:orders?和?customers,分別包含訂單信息和客戶信息。

orders 表:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

customers 表:

customer_idnamecity
101AliceNew York
102BobLos Angeles
103CharlieChicago

現在,我們希望查詢出有訂單總金額 > 200 的客戶的姓名和城市信息,示例 SQL 如下:

-- 主查詢
SELECT name, city
FROM customers
WHERE customer_id IN (-- 子查詢SELECT DISTINCT customer_idFROM ordersWHERE total_amount > 200
);

在上述 SQL 中,先通過子查詢從訂單表中過濾查詢出了符合條件的客戶 id,然后再根據客戶 id 到客戶信息表中查詢客戶信息,這樣可以少查詢很多客戶信息數據。

上述語句的查詢結果:

namecity
BobLos Angeles
CharlieChicago

子查詢(exists)

之前的教程講到,子查詢是一種強大的查詢工具,它可以嵌套在主查詢中,幫助我們進行更復雜的條件過濾和數據檢索。

其中,子查詢中的一種特殊類型是 “exists” 子查詢,用于檢查主查詢的結果集是否存在滿足條件的記錄,它返回布爾值(True 或 False),而不返回實際的數據。

示例

假設我們有以下兩個數據表:orders?和?customers,分別包含訂單信息和客戶信息。

orders 表:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

customers 表:

customer_idnamecity
101AliceNew York
102BobLos Angeles
103CharlieChicago
104趙二China

現在,我們希望查詢出?存在訂單的?客戶姓名和訂單金額。

使用 exists 子查詢的方式,SQL 代碼如下:

-- 主查詢
SELECT name, total_amount
FROM customers
WHERE EXISTS (-- 子查詢SELECT 1FROM ordersWHERE orders.customer_id = customers.customer_id
);

上述語句中,先遍歷客戶信息表的每一行,獲取到客戶編號;然后執行子查詢,從訂單表中查找該客戶編號是否存在,如果存在則返回結果。

查詢結果如下:

nametotal_amount
Alice200
Bob350
Charlie500

和 exists 相對的是 not exists,用于查找不滿足存在條件的記錄。

組合查詢

在 SQL 中,組合查詢是一種將多個 SELECT 查詢結果合并在一起的查詢操作。

包括兩種常見的組合查詢操作:UNION 和 UNION ALL。

  1. UNION 操作:它用于將兩個或多個查詢的結果集合并,?并去除重復的行?。即如果兩個查詢的結果有相同的行,則只保留一行。

  2. UNION ALL 操作:它也用于將兩個或多個查詢的結果集合并,?但不去除重復的行?。即如果兩個查詢的結果有相同的行,則全部保留。

示例

假設我們有以下兩個數據表:table1?和?table2,分別包含不同部門的員工信息。

table1 表:

emp_idnameagedepartment
101Alice25HR
102Bob28Finance
103Charlie22IT

table2 表:

emp_idnameagedepartment
101Alice25HR
201David27Finance
202Eve24HR
203Frank26IT

現在,我們想要合并這兩張表的數據,分別執行 UNION 操作和 UNION ALL 操作。

UNION 操作:

SELECT name, age, department
FROM table1
UNION
SELECT name, age, department
FROM table2;

UNION 操作的結果,去除了重復的行(名稱為 Alice):

nameagedepartment
Alice25HR
Bob28Finance
Charlie22IT
David27Finance
Eve24HR
Frank26IT

UNION ALL 操作:

-- UNION ALL操作
SELECT name, age, department
FROM table1
UNION ALL
SELECT name, age, department
FROM table2;

結果如下,保留了重復的行:

nameagedepartment
Alice25HR
Bob28Finance
Charlie22IT
Alice25HR
David27Finance
Eve24HR
Frank26IT

開窗函數

在 SQL 中,開窗函數是一種強大的查詢工具,它允許我們在查詢中進行對分組數據進行計算、?同時保留原始行的詳細信息?。

開窗函數可以與聚合函數(如 SUM、AVG、COUNT 等)結合使用,但與普通聚合函數不同,開窗函數不會導致結果集的行數減少。

打個比方,可以將開窗函數想象成一種 “透視鏡”,它能夠將我們聚焦在某個特定的分組,同時還能看到整體的全景。

sum over

本節我們先講第一個開窗函數:sum over。

該函數用法為:

SUM(計算字段名) OVER (PARTITION BY 分組字段名)

示例

假設我們有訂單表?orders,表格數據如下:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

現在,我們希望計算每個客戶的訂單總金額,并顯示每個訂單的詳細信息。

示例 SQL 如下:

SELECT order_id, customer_id, order_date, total_amount,SUM(total_amount) OVER (PARTITION BY customer_id) AS customer_total_amount
FROMorders;

查詢結果:

order_idcustomer_idorder_datetotal_amountcustomer_total_amount
11012023-01-01200320
31012023-01-10120320
21022023-01-05350350
41032023-01-15500500

在上面的示例中,我們使用開窗函數 SUM 來計算每個客戶的訂單總金額(customer_total_amount),并使用 PARTITION BY 子句按照customer_id 進行分組。從前兩行可以看到,開窗函數保留了原始訂單的詳細信息,同時計算了每個客戶的訂單總金額。

示例

假設我們有訂單表?orders,表格數據如下:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

現在,我們希望計算每個客戶的訂單總金額,并顯示每個訂單的詳細信息。

示例 SQL 如下:

SELECT order_id, customer_id, order_date, total_amount,SUM(total_amount) OVER (PARTITION BY customer_id) AS customer_total_amount
FROMorders;

查詢結果:

order_idcustomer_idorder_datetotal_amountcustomer_total_amount
11012023-01-01200320
31012023-01-10120320
21022023-01-05350350
41032023-01-15500500

在上面的示例中,我們使用開窗函數 SUM 來計算每個客戶的訂單總金額(customer_total_amount),并使用 PARTITION BY 子句按照customer_id 進行分組。從前兩行可以看到,開窗函數保留了原始訂單的詳細信息,同時計算了每個客戶的訂單總金額。

sum over (partition … by … order by … asc)

注:這個是一個一個累加上去,并且按照order by 的升降序

示例

假設我們有訂單表?orders,表格數據如下:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

現在,我們希望計算每個客戶的歷史訂單累計金額,并顯示每個訂單的詳細信息。

SELECT order_id, customer_id, order_date, total_amount,SUM(total_amount) OVER (PARTITION BY customer_id ORDER BY order_date ASC) AS cumulative_total_amount
FROMorders;

結果將是:

order_idcustomer_idorder_datetotal_amountcumulative_total_amount
11012023-01-01200200
31012023-01-10120320
21022023-01-05350350
41032023-01-15500500

在上面的示例中,我們使用開窗函數 SUM 來計算每個客戶的歷史訂單累計金額(cumulative_total_amount),并使用 PARTITION BY 子句按照 customer_id 進行分組,并使用 ORDER BY 子句按照 order_date 進行排序。從結果的前兩行可以看到,開窗函數保留了原始訂單的詳細信息,同時計算了每個客戶的歷史訂單累計金額;相比于只用 sum over,同組內的累加列名稱

rank

示例

假設我們有訂單表?orders,表格數據如下:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

現在,我們希望為每個客戶的訂單按照訂單金額降序排名,并顯示每個訂單的詳細信息。

SELECT order_id, customer_id, order_date, total_amount,RANK() OVER (PARTITION BY customer_id ORDER BY total_amount DESC) AS customer_rank
FROMorders;

查詢結果:

order_idcustomer_idorder_datetotal_amountcustomer_rank
11012023-01-012001
31012023-01-101202
21022023-01-053501
41032023-01-155001

在上面的示例中,我們使用開窗函數 RANK 來為每個客戶的訂單按照訂單金額降序排名(customer_rank),并使用 PARTITION BY 子句按照 customer_id 進行分組,并使用 ORDER BY 子句按照 total_amount 從大到小進行排序。

可以看到,開窗函數保留了原始訂單的詳細信息,同時計算了每個客戶的訂單金額排名。

row_number

示例

假設我們有訂單表?orders,表格數據如下:

order_idcustomer_idorder_datetotal_amount
11012023-01-01200
21022023-01-05350
31012023-01-10120
41032023-01-15500

現在,我們希望為每個客戶的訂單按照訂單金額降序排列,并且分配一個 row_number 編號,示例 SQL 語句如下:

SELECT order_id, customer_id, order_date, total_amount,ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY total_amount DESC) AS row_number
FROMorders;

結果將是:

order_idcustomer_idorder_datetotal_amountrow_number
41032023-01-155001
21022023-01-053501
11012023-01-012001
31012023-01-101202

在上面的示例中,我們使用開窗函數 ROW_NUMBER 為每個客戶的訂單按照訂單金額降序排列,并為每個訂單分配了一個編號(row_number),并使用 PARTITION BY 子句按照 customer_id 進行分組,并使用 ORDER BY 子句按照 total_amount 進行排序。

lag / lead

開窗函數 Lag 和 Lead 的作用是獲取在當前行之前或之后的行的值,這兩個函數通常在需要比較相鄰行數據或進行時間序列分析時非常有用。

1)Lag 函數

Lag 函數用于獲取?當前行之前?的某一列的值。它可以幫助我們查看上一行的數據。

Lag 函數的語法如下:

LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)

參數解釋:

  • column_name:要獲取值的列名。
  • offset:表示要向上偏移的行數。例如,offset為1表示獲取上一行的值,offset為2表示獲取上兩行的值,以此類推。
  • default_value:可選參數,用于指定當沒有前一行時的默認值。
  • PARTITION BYORDER BY子句可選,用于分組和排序數據。

2)Lead 函數

Lead 函數用于獲取?當前行之后?的某一列的值。它可以幫助我們查看下一行的數據。

Lead 函數的語法如下:

LEAD(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY sort_column)

參數解釋:

  • column_name:要獲取值的列名。
  • offset:表示要向下偏移的行數。例如,offset為1表示獲取下一行的值,offset為2表示獲取下兩行的值,以此類推。
  • default_value:可選參數,用于指定當沒有后一行時的默認值。
  • PARTITION BYORDER BY子句可選,用于分組和排序數據。
示例

以下是一個示例,假設我們有一個學生成績表scores,其中包含學生的成績和考試日期:

student_idexam_datescore
1012023-01-0185
1012023-01-0578
1012023-01-1092
1012023-01-1580

現在我們想要查詢每個學生的考試日期和上一次考試的成績,以及下一次考試的成績,示例 SQL 如下:

SELECT student_id,exam_date,score,LAG(score, 1, NULL) OVER (PARTITION BY student_id ORDER BY exam_date) AS previous_score,LEAD(score, 1, NULL) OVER (PARTITION BY student_id ORDER BY exam_date) AS next_score
FROMscores;

結果將是:

student_idexam_datescoreprevious_scorenext_score
1012023-01-0185NULL78
1012023-01-05788592
1012023-01-10927880
1012023-01-158092NULL

在上面的示例中,我們使用 Lag 函數獲取每個學生的上一次考試成績(previous_score),使用 Lead 函數獲取每個學生的下一次考試成績(next_score)。如果沒有上一次或下一次考試,對應的列將顯示為 NULL。

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

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

相關文章

Java 大視界 -- Java 大數據機器學習模型在金融市場波動預測與資產配置動態調整中的應用

Java 大視界 -- Java 大數據機器學習模型在金融市場波動預測與資產配置動態調整中的應用引言:正文:一、Java 構建的金融數據處理架構1.1 多源數據實時融合與清洗1.2 跨市場數據關聯(風險傳導分析)二、Java 驅動的市場波動預測模型…

基于muduo庫的圖床云共享存儲項目(一)

基于muduo庫的圖床云共享存儲項目(一)項目簡介整體架構項目依賴基礎組件muduo庫Channel類Poller / EpollPoller 類EventLoopAcceptor類FastDfsJSON的使用項目簡介 當前所實現的項目是一個基于muduo庫的圖床云共享存儲項目,他的主要的功能就是…

數字化轉型三階段:從信息化、數字化到數智化的戰略進化

企業的數字化轉型包括信息化、數字化、數智化三個階段,并非一個階段結束才能進入到下一個階段。01信息化→業務數據化信息化是將企業在生產經營過程中產生的業務信息進行記錄、儲存和管理,通過電子終端呈現,便于信息的傳播與溝通。信息化是對…

SpringBoot如何獲取系統Controller名稱和方法名稱

這種代碼里面的Controller和里面的方法怎么獲取代碼:/*** 獲取所有Controller名稱*/ApiDescription("獲取所有Controller名稱")PostMapping("/getControllerNames")public Result getControllerNames() {return dataDesensitizationRulesServic…

(二十二)深入了解AVFoundation-編輯:視頻變速功能-實戰在Demo中實現視頻變速

一. 引言視頻變速(Speed Ramp)是視頻編輯中最常見的特效之一:慢動作(Slow Motion):強調細節,讓觀眾捕捉到肉眼難以察覺的瞬間;快動作(Fast Motion)&#xff1…

MCP零基礎學習(7)|實戰指南:構建論文分析智能體

在之前的教程中,我們已經介紹了 MCP(Model Context Protocol)的基本概念及其核心組件。在本篇教程中,我們將通過一個實際案例,演示如何運用 MCP 構建一個能夠分析學術論文的智能體。這個智能體將具備讀取 PDF 文件、提…

Unity URP半透明物體自身交疊解決方案

前言 在 Unity 的通用渲染管線(URP)中,處理半透明物體的自身交疊是一個常見挑戰。當半透明物體(如玻璃、水或透明材質)的某些部分相互重疊時,可能會出現渲染順序問題,導致視覺瑕疵。 對惹&…

哈希算法入門:深入淺出講明白HASH哈希算法

一、先搞懂:哈希算法到底是 “啥玩意兒”?咱們先別碰復雜概念,從你每天都會遇到的事說起 —— 你會發現,“哈希思維” 其實早就藏在生活里了。(一)生活中的 “哈希例子”:給東西 “貼標簽、找位…

Vuex 和 Pinia 各自的優點

核心總結(一句話概括) Vuex:Vue 官方曾經的狀態管理標準解決方案,成熟穩定,概念清晰,但語法稍顯冗長。Pinia:Vue 官方推薦的新一代狀態管理庫,API 設計極其簡潔,完美支持…

幾種方式實現文件自動上傳到服務器共享文件夾

文章目錄一、方案核心邏輯二、詳細實現步驟(以Windows系統為例)1. 確認服務器共享文件夾的“訪問權限”(前提)2. 選擇“傳輸觸發方式”(按需求選實時/周期)(1)周期傳輸(如…

Milvus介紹及多模態檢索實踐

1、核心組件 1.1 Collection (集合) 可以用一個圖書館的比喻來理解 Collection: Collection (集合): 相當于一個圖書館,是所有數據的頂層容器。一個 Collection 可以包含多個 Partition,每個 Partition 可以包含多個 Entity。 Partition (分區…

第二十三天-LCD液晶顯示實驗

一、LCD結構體定義LCD為LCD_TypeDef類型的指針,指向0x6C000000的地址空間(bank1分區4的地址范圍)。為什么需要并上0x000007FE呢?因為雖然驅動SRAM的時序和16位8080接口時序(驅動LCD時序)很像,但…

SQL性能調優

MySQL出現性能差的原因有哪些? 可能是 SOL查詢使用了全表掃描,也可能是查詢語句過于復雜,如多表 IOIN 或嵌套子查詢。 也有可能是單表數據量過大。 通常情況下,添加索引就能解決大部分性能問題。對于一些熱點數據,還可以通過增加…

dapo:開源大規模llm強化學習系統的突破與實現

本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術! ? 1. dapo概述:開源llm強化學習系統的重要突破 dapo&…

【車載開發系列】ParaSoft集成測試環境配置(五)

【車載開發系列】ParaSoft集成測試環境配置(五) 【車載開發系列】ParaSoft集成測試環境配置(五) 【車載開發系列】ParaSoft集成測試環境配置(五) 一. 剝離硬件環境的設置 二. 靈活使用編譯開關 三. 導入修改后的bdf文件 四. 自動生成底層樁函數 五. 開始跑集成測試用例 六…

大模型(一)什么是 MCP?如何使用 Charry Studio 集成 MCP?

目錄一、什么是 MCP?1.1 🤔 開始之前的思考1.2 MCP 的定義1.3 MCP 結構二、MCP 的使用2.1 uv 的安裝2.2 MCP 廣場2.3 MCP 的配置2.4 MCP 的依賴安裝2.5 Charry Studio2.6 測試結果背景: MCP 這個概念大概是 2025 年上半年火起來的&#xff0c…

源碼導航頁

一、Python捕捉動作發送到Unity驅動模型跟著動(獲取源碼) 二、AI輸入法源碼(獲取源碼) 三、Java企業級后臺管理系統-登錄授權角色菜單(獲取源碼) 四、Jetson實現純視覺導航(獲取源碼&#xff09…

HTTP/2 性能提升的核心原因

一、協議架構優化??二進制分幀(Binary Framing)?HTTP/2 將傳統文本格式的報文(如請求頭、數據體)拆分為獨立的二進制幀(Frame),每個幀包含流標識符(Stream ID)&#x…

vulnhub-billu_b0x靶機滲透

一、靶場詳情 Billu_b0x 是 Vulnhub 上的經典中等難度靶機,主要考察從信息收集到提權的完整滲透流程:先通過端口和目錄掃描發現網站入口,利用 SQL 注入或文件包含進入后臺并上傳 WebShell,再通過反彈 Shell 獲取低權限用戶&#…

C# 相機內存復用(減少圖像采集耗時)以及行數復用

背景我們在做圖像處理時,都會對一些相機的SDK進行開發完成圖像采集的操作,為后續圖像處理做準備。本文主要的目的是降低圖像采集的耗時,應用在一些高速檢測的場景下。利用循環隊列內存復用的方式,去掉或者減少新建內存的時間。線掃…