SQL的窗口函數

SQL的窗口函數

文章目錄

    • SQL的窗口函數
        • 1. 介紹
        • 2. 聚合函數
          • 0.數據準備
          • 1. AVG
          • 2. COUNT
          • 3. MAX
          • 4. MIN
          • 5. 標準差
          • 6. SUM
        • 3. 排序函數
          • 1. CUME_DIST
          • 2. RANK, DENSE_RANK, ROW_NUMBER
          • 3. PERCENT_RANK
          • 4. NTILE
        • 4. 值函數(偏移函數)
          • 1. FIRST_VALUE
          • 2. LAST_VALUE
          • 3. LAG
          • 4. LEAD
          • 5. NTH_VALUE
        • END

1. 介紹

窗口函數分類:聚合函數、排序函數和值函數(偏移函數)。
SQL中的窗口函數是一種特殊的函數,它能夠在查詢結果中創建一個窗口或者窗口集合,然后對這個窗口進行計算。窗口函數可以用于分析和匯總數據,同時保留原始查詢結果的行順序。
窗口函數基于查詢結果的行數據進行計算,窗口函數運行在HAVING子句之后、 ORDER BY子句之前。窗口函數需要特殊的關鍵字OVER子句來指定窗口即觸發一個窗口函數。

2. 聚合函數
AVG:該函數用于計算平均值。
COUNT:該函數用于計算記錄數。
MAX:該函數用于計算最大值。
MIN:該函數用于計算最小值。
STDDEV:返回數值的總體標準差。
STDDEV_SAMP:返回一組數值(整數、小數或浮點)的樣本標準差。
SUM:該函數用于計算匯總值。
0.數據準備
-- 數據準備
WITH t_sales_info AS (SELECT * FROM (VALUES('A', '2023-06-01', '2023', '1', 36.0), ('A', '2023-09-01', '2023', '2', 48.0), ('B', '2023-09-07', '2023', '2', 48.0), ('C', '2023-10-10', '2023', '3', 23.0), ('A', '2023-11-11', '2023', '3', 23.0), ('C', '2023-12-11', '2023', '3', 23.0), ('A', '2024-01-01', '2024', '2', 48.0), ('B', '2024-02-02', '2024', '2', 48.0), ('C', '2024-02-04', '2024', '1', 36.0), ('C', '2024-02-11', '2024', '1', 36.0), ('B', '2024-03-16', '2024', '3', 23.0), ('B', '2024-04-01', '2024', '3', 23.0), ('A', '2024-04-14', '2024', '3', 23.0), ('C', '2024-04-21', '2024', '3', 23.0), ('B', '2024-05-07', '2024', '3', 23.0)) AS tbl_name(customer_id, order_date, year, product_id, product_price)
)
1. AVG
該函數用于計算平均值。
輸入值類型:BIGINT、DOUBLE或FLOAT。
返回值類型:DOUBLE。
-- order by 可以省略
SELECT customer_id, order_date, `year`, product_id, product_price, AVG(product_price) OVER(PARTITION BY customer_id ORDER BY customer_id) AS price_avg 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceprice_avg
A2024-04-142024323.035.6
A2024-01-012024248.035.6
A2023-09-012023248.035.6
A2023-06-012023136.035.6
A2023-11-112023323.035.6
B2024-05-072024323.033.0
B2023-09-072023248.033.0
B2024-02-022024248.033.0
B2024-03-162024323.033.0
B2024-04-012024323.033.0
C2024-04-212024323.028.2
C2023-10-102023323.028.2
C2023-12-112023323.028.2
C2024-02-042024136.028.2
C2024-02-112024136.028.2
-- 分組字段和排序字段不一致時, 會先分組, 再根據排序字段分組累計求平均值; 
-- 如下: 先計算 A+2023 平均值, 到2024時計算 A+2023+2024 平均值
SELECT customer_id, order_date, `year`, product_id, product_price, AVG(product_price) OVER(PARTITION BY customer_id ORDER BY `year`) AS price_avg 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceprice_avg
A2023-09-012023248.035.666666666666664
A2023-06-012023136.035.666666666666664
A2023-11-112023323.035.666666666666664
A2024-01-012024248.035.6
A2024-04-142024323.035.6
B2023-09-072023248.048.0
B2024-05-072024323.033.0
B2024-02-022024248.033.0
B2024-03-162024323.033.0
B2024-04-012024323.033.0
C2023-10-102023323.023.0
C2023-12-112023323.023.0
C2024-04-212024323.028.2
C2024-02-042024136.028.2
C2024-02-112024136.028.2
2. COUNT
該函數用于計算記錄數。
輸入值類型:數值、字符串類型或BOOLEAN類型。
返回值類型:BIGINT。
-- 2. COUNT:該函數用于計算記錄數。
SELECT customer_id, order_date, `year`, product_id, product_price, COUNT(product_id) OVER(PARTITION BY customer_id, `year` ORDER BY `year`) AS product_ct 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceproduct_ct
A2023-09-012023248.03
A2023-06-012023136.03
A2023-11-112023323.03
A2024-01-012024248.02
A2024-04-142024323.02
B2023-09-072023248.01
B2024-05-072024323.04
B2024-02-022024248.04
B2024-03-162024323.04
B2024-04-012024323.04
C2023-10-102023323.02
C2023-12-112023323.02
C2024-04-212024323.03
C2024-02-042024136.03
C2024-02-112024136.03
3. MAX
該函數用于計算最大值。
輸入值類型:該函數支持輸入任意類型的參數,但是BOOLEAN類型的數據不允許參與運算。
返回值類型:與該函數的輸入值類型保持一致。注意:當列中的值為NULL時,該行不參與計算。
-- 3. MAX:該函數用于計算最大值。
SELECT customer_id, order_date, `year`, product_id, product_price, MAX(product_price) OVER(PARTITION BY customer_id ORDER BY customer_id) AS product_ct 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceproduct_ct
A2024-04-142024323.048.0
A2024-01-012024248.048.0
A2023-09-012023248.048.0
A2023-06-012023136.048.0
A2023-11-112023323.048.0
B2024-05-072024323.048.0
B2023-09-072023248.048.0
B2024-02-022024248.048.0
B2024-03-162024323.048.0
B2024-04-012024323.048.0
C2024-04-212024323.036.0
C2023-10-102023323.036.0
C2023-12-112023323.036.0
C2024-02-042024136.036.0
C2024-02-112024136.036.0
4. MIN
該函數用于計算最小值。
輸入值類型:該函數支持輸入任意類型的參數,但是BOOLEAN類型的數據不允許參與運算。
返回值類型:與該函數的輸入值類型保持一致。注意:當列中的值為NULL時,該行不參與計算。
-- 4. MIN:該函數用于計算最小值。
SELECT customer_id, order_date, `year`, product_id, product_price, MIN(product_price) OVER(PARTITION BY customer_id ORDER BY customer_id) AS product_ct 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceproduct_ct
A2024-04-142024323.023.0
A2024-01-012024248.023.0
A2023-09-012023248.023.0
A2023-06-012023136.023.0
A2023-11-112023323.023.0
B2024-05-072024323.023.0
B2023-09-072023248.023.0
B2024-02-022024248.023.0
B2024-03-162024323.023.0
B2024-04-012024323.023.0
C2024-04-212024323.023.0
C2023-10-102023323.023.0
C2023-12-112023323.023.0
C2024-02-042024136.023.0
C2024-02-112024136.023.0
5. 標準差
STDDEV:返回數值的總體標準差。
STDDEV_SAMP:返回一組數值(整數、小數或浮點)的樣本標準差。
樣本標準差=方差的算術平方根=s=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/(n-1))
總體標準差=σ=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n )
-- 5. 標準差。
SELECT customer_id, order_date, `year`, product_id, product_price, STDDEV(product_price) OVER(PARTITION BY customer_id ORDER BY customer_id) AS price_std, STDDEV_SAMP(product_price) OVER(PARTITION BY customer_id ORDER BY customer_id) AS price_std_samp 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceprice_stdprice_std_samp
A2024-04-142024323.011.1821285987954912.501999840025595
A2024-01-012024248.011.1821285987954912.501999840025595
A2023-09-012023248.011.1821285987954912.501999840025595
A2023-06-012023136.011.1821285987954912.501999840025595
A2023-11-112023323.011.1821285987954912.501999840025595
B2024-05-072024323.012.2474487139158913.693063937629153
B2023-09-072023248.012.2474487139158913.693063937629153
B2024-02-022024248.012.2474487139158913.693063937629153
B2024-03-162024323.012.2474487139158913.693063937629153
B2024-04-012024323.012.2474487139158913.693063937629153
C2024-04-212024323.06.3686733312362647.12039324756716
C2023-10-102023323.06.3686733312362647.12039324756716
C2023-12-112023323.06.3686733312362647.12039324756716
C2024-02-042024136.06.3686733312362647.12039324756716
C2024-02-112024136.06.3686733312362647.12039324756716
6. SUM
該函數用于計算匯總值。
輸入值類型:BIGINT、DOUBLE或FLOAT。
返回值類型:BIGINT。
-- 6. SUM:該函數用于計算匯總值。
SELECT customer_id, order_date, `year`, product_id, product_price, SUM(product_price) OVER(PARTITION BY customer_id, `year` ORDER BY `year`) AS price_sum
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_priceprice_sum
A2023-09-012023248.0107.0
A2023-06-012023136.0107.0
A2023-11-112023323.0107.0
A2024-01-012024248.071.0
A2024-04-142024323.071.0
B2023-09-072023248.048.0
B2024-05-072024323.0117.0
B2024-02-022024248.0117.0
B2024-03-162024323.0117.0
B2024-04-012024323.0117.0
C2023-10-102023323.046.0
C2023-12-112023323.046.0
C2024-04-212024323.095.0
C2024-02-042024136.095.0
C2024-02-112024136.095.0
3. 排序函數
CUME_DIST:返回一組數值中每個值的累計分布。
RANK:返回數據集中每個值的排名。
DENSE_RANK:返回一組數值中每個數值的排名。
ROW_NUMBER:根據行在窗口分區內的順序,為每行數據返回一個唯一的有序行號,行號從1開始。
PERCENT_RANK:返回數據集中每個數據的排名百分比,其結果由(r - 1) / (n - 1)計算得出。其中r為RANK()計算的當前行排名, n為當前窗口分區內總的行數。
NTILE:將每個窗口分區的數據分散到桶號從1到n的n個桶中。

語法

function over (partition by a order by b RANGE|ROWS BETWEEN start AND end)       
分區規范:用于將輸入行分散到不同的分區中,過程和GROUP BY子句的分散過程相似。
排序規范:決定輸入數據行在窗口函數中執行的順序。
窗口區間:指定計算數據的窗口邊界。
窗口區間支持RANGE、ROWS兩種模式:RANGE按照計算列值的范圍進行定義。ROWS按照計算列的行數進行范圍定義。RANGE、ROWS中可以使用BETWEEN start AND end指定邊界可取值。BETWEEN start AND end取值為:CURRENT ROW,當前行。N PRECEDING,前n行。UNBOUNDED PRECEDING,直到第1行。N FOLLOWING,后n行。UNBOUNDED FOLLOWING,直到最后1行。
1. CUME_DIST
返回一組數值中每個值的累計分布。
返回結果:在窗口分區中對窗口進行排序后的數據集,包括當前行和當前行之前的數據行數。排序中任何關聯值均會計算成相同的分布值。
返回值類型:DOUBLE。
-- 1. CUME_DIST:返回一組數值中每個值的累計分布。
SELECT customer_id, order_date, `year`, product_id, product_price, CUME_DIST() OVER(PARTITION BY customer_id ORDER BY order_date) AS cume_dist 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricecume_dist
A2023-06-012023136.00.2
A2023-09-012023248.00.4
A2023-11-112023323.00.6
A2024-01-012024248.00.8
A2024-04-142024323.01.0
B2023-09-072023248.00.2
B2024-02-022024248.00.4
B2024-03-162024323.00.6
B2024-04-012024323.00.8
B2024-05-072024323.01.0
C2023-10-102023323.00.2
C2023-12-112023323.00.4
C2024-02-042024136.00.6
C2024-02-112024136.00.8
C2024-04-212024323.01.0
2. RANK, DENSE_RANK, ROW_NUMBER
返回數據集中每個值的排名: RANK() 會跳過重復值; DENSE_RANK() 不會跳過重復值序號; ROW_NUMBER() 不包含重復值, 相同名次按順序排列;
排名值是將當前行之前的行數加1,不包含當前行。因此,排序的關聯值可能產生順序上的空隙,而且這個排名會對每個窗口分區進行計算。
DENSE_RANK()與RANK()功能相似,但是DENSE_RANK()關聯值不會產生順序上的空隙。
返回值類型:BIGINT。
SELECT customer_id, product_price, RANK() OVER(PARTITION BY customer_id ORDER BY product_price) AS rk , DENSE_RANK() OVER(PARTITION BY customer_id ORDER BY product_price) AS d_rk , ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY product_price) AS rn
FROM t_sales_info ;
customer_idproduct_pricerkd_rkrn
A23.0111
A23.0112
A36.0323
A48.0434
A48.0435
B23.0111
B23.0112
B23.0113
B48.0424
B48.0425
C23.0111
C23.0112
C23.0113
C36.0424
C36.0425
3. PERCENT_RANK
命令說明:返回數據集中每個數據的排名百分比,其結果由(r - 1) / (n - 1)計算得出。其中,r為RANK()計算的當前行排名, n為當前窗口分區內總的行數。
返回值類型:DOUBLE。
SELECT customer_id, order_date, `year`, product_id, product_price, RANK() OVER(PARTITION BY customer_id ORDER BY product_price) AS rk , PERCENT_RANK() OVER(PARTITION BY customer_id ORDER BY product_price) AS pr
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricerkpr
A2024-04-142024323.010.0
A2023-11-112023323.010.0
A2023-06-012023136.030.5
A2024-01-012024248.040.75
A2023-09-012023248.040.75
B2024-05-072024323.010.0
B2024-03-162024323.010.0
B2024-04-012024323.010.0
B2023-09-072023248.040.75
B2024-02-022024248.040.75
C2024-04-212024323.010.0
C2023-10-102023323.010.0
C2023-12-112023323.010.0
C2024-02-042024136.040.75
C2024-02-112024136.040.75
4. NTILE
命令說明:將每個窗口分區的數據分散到桶號從1到n的n個桶中。桶號值最多間隔1,如果窗口分區中的數據行數不能均勻地分散到每一個桶中,則剩余值將從第1個桶開始,每1個桶分1行數據。例如,有6行數據和4個桶, 最終桶號值為1 1 2 2 3 4。返回值類型:BIGINT。
SELECT customer_id, order_date, `year`, product_id, product_price, NTILE(4) OVER(PARTITION BY `year` ORDER BY order_date) AS rk 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricerk
A2023-06-012023136.01
A2023-09-012023248.01
B2023-09-072023248.02
C2023-10-102023323.02
A2023-11-112023323.03
C2023-12-112023323.04
A2024-01-012024248.01
B2024-02-022024248.01
C2024-02-042024136.01
C2024-02-112024136.02
B2024-03-162024323.02
B2024-04-012024323.03
A2024-04-142024323.03
C2024-04-212024323.04
B2024-05-072024323.04
4. 值函數(偏移函數)
FIRST_VALUE:返回窗口分區第1行的值。
LAST_VALUE返回窗口分區最后1行的值。
LAG:返回窗口內距離當前行之前偏移offset后的值。
LEAD:返回窗口內距離當前行偏移offset后的值。
NTH_VALUE:返回窗口內偏移指定offset后的值,偏移量從1開始。
1. FIRST_VALUE
命令說明:返回窗口分區第一行的值。返回值類型:與輸入參數類型相同。
SELECT customer_id, order_date, `year`, product_id, product_price, FIRST_VALUE(product_id) OVER(PARTITION BY customer_id ORDER BY order_date) AS fv 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricefv
A2023-06-012023136.01
A2023-09-012023248.01
A2023-11-112023323.01
A2024-01-012024248.01
A2024-04-142024323.01
B2023-09-072023248.02
B2024-02-022024248.02
B2024-03-162024323.02
B2024-04-012024323.02
B2024-05-072024323.02
C2023-10-102023323.03
C2023-12-112023323.03
C2024-02-042024136.03
C2024-02-112024136.03
C2024-04-212024323.03
2. LAST_VALUE
命令說明:返回窗口分區最后一行的值。LAST_VALUE默認統計范圍是 rows between unbounded preceding and current row,即取當前行數據與當前行之前的數據進行比較。如果像FIRST_VALUE那樣直接在每行數據中顯示最后一行數據,需要在 order by 條件的后面加上語句:rows between unbounded preceding and unbounded following。返回值類型:與輸入參數類型相同。
SELECT customer_id, order_date, `year`, product_id, product_price, FIRST_VALUE(product_id) OVER(PARTITION BY customer_id ORDER BY order_date) AS lv 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricelv
A2023-06-012023136.01
A2023-09-012023248.02
A2023-11-112023323.03
A2024-01-012024248.02
A2024-04-142024323.03
B2023-09-072023248.02
B2024-02-022024248.02
B2024-03-162024323.03
B2024-04-012024323.03
B2024-05-072024323.03
C2023-10-102023323.03
C2023-12-112023323.03
C2024-02-042024136.01
C2024-02-112024136.01
C2024-04-212024323.03
SELECT customer_id, order_date, `year`, product_id, product_price, LAST_VALUE(product_id) OVER(PARTITION BY customer_id ORDER BY order_date ROWS BETWEEN unbounded preceding AND unbounded following ) AS lv 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricelv
A2023-06-012023136.03
A2023-09-012023248.03
A2023-11-112023323.03
A2024-01-012024248.03
A2024-04-142024323.03
B2023-09-072023248.03
B2024-02-022024248.03
B2024-03-162024323.03
B2024-04-012024323.03
B2024-05-072024323.03
C2023-10-102023323.03
C2023-12-112023323.03
C2024-02-042024136.03
C2024-02-112024136.03
C2024-04-212024323.03
3. LAG
LAG(x[, offset[, default_value]])   命令說明:返回窗口內距離當前行之前偏移offset后的值。
偏移量起始值是0,也就是當前數據行。偏移量可以是標量表達式,默認offset是1 。
如果偏移量的值是null或者大于窗口長度,則返回default_value;如果沒有指定default_value,則返回null。
返回值類型:與輸入參數類型相同。
SELECT customer_id, order_date, `year`, product_id, product_price, LAG(product_id, 1, '無') OVER(PARTITION BY customer_id ORDER BY order_date) AS lag1 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricelag1
A2023-06-012023136.0
A2023-09-012023248.01
A2023-11-112023323.02
A2024-01-012024248.03
A2024-04-142024323.02
B2023-09-072023248.0
B2024-02-022024248.02
B2024-03-162024323.02
B2024-04-012024323.03
B2024-05-072024323.03
C2023-10-102023323.0
C2023-12-112023323.03
C2024-02-042024136.03
C2024-02-112024136.01
C2024-04-212024323.01
4. LEAD
LEAD(x[,offset[, default_value]])  命令說明:返回窗口內距離當前行偏移offset后的值。偏移量offset起始值是0,也就是當前數據行。偏移量可以是標量表達式,默認offset是1 。如果偏移量的值是null或者大于窗口長度,則返回default_value;如果沒有指定default_value,則返回null。返回值類型:與輸入參數類型相同。
SELECT customer_id, order_date, `year`, product_id, product_price, LEAD(product_id, 1) OVER(PARTITION BY customer_id ORDER BY order_date) AS lead1 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricelead1
A2023-06-012023136.02
A2023-09-012023248.03
A2023-11-112023323.02
A2024-01-012024248.03
A2024-04-142024323.0\N
B2023-09-072023248.02
B2024-02-022024248.03
B2024-03-162024323.03
B2024-04-012024323.03
B2024-05-072024323.0\N
C2023-10-102023323.03
C2023-12-112023323.01
C2024-02-042024136.01
C2024-02-112024136.03
C2024-04-212024323.0\N
5. NTH_VALUE
NTH_VALUE(x, offset) 命令說明:返回窗口內偏移指定offset后的值,偏移量從1開始。如果偏移量offset是null或者大于窗口內值的個數,則返回null;如果偏移量offset為0或者負數,則系統提示報錯。返回值類型:與輸入參數類型相同。
SELECT customer_id, order_date, `year`, product_id, product_price, NTH_VALUE(product_id, 2) OVER(PARTITION BY customer_id ORDER BY order_date) AS nv1 
FROM t_sales_info ;
customer_idorder_dateyearproduct_idproduct_pricenv1
A2023-06-012023136.0\N
A2023-09-012023248.02
A2023-11-112023323.02
A2024-01-012024248.02
A2024-04-142024323.02
B2023-09-072023248.0\N
B2024-02-022024248.02
B2024-03-162024323.02
B2024-04-012024323.02
B2024-05-072024323.02
C2023-10-102023323.0\N
C2023-12-112023323.03
C2024-02-042024136.03
C2024-02-112024136.03
C2024-04-212024323.03
END

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

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

相關文章

ChatGPT4.0 的優勢、升級 4.0 為什么這么難以及如何進行升級?

前言 “ChatGPT4.0一個月多少人民幣?” ”chatgpt4賬號“ ”chatgpt4 價格“ “chatgpt4多少錢” 最近發現很多小伙伴很想知道關于ChatGPT4.0的事情,于是寫了這篇帖子,幫大家分析一下。 一、ChatGPT4.0 的優勢 (PS:…

LINUX基礎培訓二十七之shell標準輸入、輸出、錯誤

一、Shell 輸入/輸出重定向 大多數 UNIX 系統命令從你的終端接受輸入并將所產生的輸出發送回??到您的終端。一個命令通常從一個叫標準輸入的地方讀取輸入,默認情況下,這恰好是你的終端。同樣,一個命令通常將其輸出寫入到標準輸出&#xff…

【樹莓派系統配置+python3.8+環境配置踩坑點匯總】raspberrypi

最近又開始搞樹莓派的深度學習模型。很多windows端的環境需要在樹莓派上重新部署,中間出現了非常多的問題。主要以各種庫的下載安裝為主要。 首先,第一個問題: 樹莓派系統燒錄之后,默認apt一般需要升級看,而默認下載…

無窮級數法求Π

任務描述 本關任務:編寫一個無窮級數法計算圓周率的小程序。 相關知識 為了完成本關任務,你需要掌握: 無窮級數法 無窮級數法 π 是個超越數,圓周率的超越性否定了化圓為方這種尺規作圖精確求解問題的可能性。有趣的是&…

【Spring】18 Bean 定義繼承

文章目錄 介紹聲明式配置抽象Bean定義繼承的配置項注意:抽象Bean預實例化結論 Spring 框架提供了一個強大的功能,稱為 Bean 定義繼承, 允許開發人員高效地在 bean 之間重用和自定義配置。在本篇文章中我們將介紹 Bean 定義繼承的概念&#x…

JVM性能優化

運行時優化 方法內聯 方法內聯,是指 JVM在運行時將調用次數達到一定閾值的方法調用替換為方法體本身 ,從而消除調用成本,并為接下來進一步的代碼性能優化提供基礎,是JVM的一個重要優化手段之一。 注: C的inline屬于編…

babylonsjs入門-基礎模版

基于babylonjs封裝的一些功能和插件 ,希望有更多的小伙伴一起玩babylonjs; 歡迎加群(點擊群號傳送):464146715 官方文檔 中文文檔 案例傳送門 ? 懶得打字,你們直接去copy組件吧,主要看這2…

舊版android模擬器,37歲程序員被裁

前言 從18年畢業至今,就職過兩家公司,大大小小項目做了幾個,非常感謝我的兩位老大,在我的android成長路上給予我很多指導,亦師亦友的關系。 從年前至今參加面試了很多公司,也收到了幾家巨頭的offer&#…

transformer--編碼器2(前饋全連接層、規范化層、子層鏈接結構、編碼器層、編碼器)

前饋全連接層 什么是前饋全連接層: 在Transformer中前饋全連接層就是具有兩層線性層的全連接網絡 前饋全連接層的作用: 考慮注意力機制可能對復雜過程的擬合程度不夠,通過增加兩層網絡來增強模型的能力 code # 前饋全連接層 class PositionwiseFeedForward(nn.Module):de…

絕地求生:發現吃雞號被盜,怎么操作才是最正確的

首先閑游盒先了解一下盜號者的盜號流程 一般盜號的流程是先把你steam上的皮膚飾品出售,然后把余額轉走,再把steam賬號作為黑號進行出售。 所以當閑游盒發現號被盜的時候也分為兩種情況:一種是他正在出售商品的時候,你收到郵箱提示…

Linux命令行與shell腳本編程大全-3-4

第三部分高級shell腳本編程 第17章創建函數 17.1 腳本函數基礎 17.1.1 創建函數 在bash shell 腳本中創建函數的語法有兩種。第一種語法是使用關鍵字function,隨后跟 上分配給該代碼塊的函數名: function name { commands } 17.1.2 使用函數 要在腳…

代碼隨想錄算法訓練營Day46 | 139.單詞拆分、多重背包(卡碼網56.攜帶礦石資源)

139.單詞拆分 可以理解為一道 完全背包 排列 的題&#xff0c;dp數組定義和遞推公式部分腦子需要轉個彎 1、DP數組定義&#xff1a;一維滾動數組vector<bool>。dp[j]表示字符串s的[0, j]子串是否能夠匹配。 2、DP數組初始化&#xff1a;dp[0]初始化為true&#xff0c;其…

Multi-Head Attention詳解

文中大部分內容以及圖片來自&#xff1a;https://medium.com/hunter-j-phillips/multi-head-attention-7924371d477a 當使用 multi-head attention 時&#xff0c;通常d_key d_value &#xff08;d_model / n_heads&#xff09;&#xff0c;其中n_heads是頭的數量。研究人員稱…

01-Vue2 介紹與指令的使用

1. Vue核心 1.1. Vue簡介 1.1.1. 官網 中文官網Vue.js - 漸進式 JavaScript 框架 | Vue.js (vuejs.org)https://cn.vuejs.org/ 英文官網Vue.js - The Progressive JavaScript Framework | Vue.js (vuejs.org)https://vuejs.org/ 1.1.2. 介紹與描述 VUE是構建于用戶界面的漸進…

靶機滲透之sar

Name: Sar: 1Date release: 15 Feb 2020Author: LoveSeries: Sar Download: https://drive.google.com/open?id1AFAmM21AwiAEiVFUA0cSr_GeAYaxd3lQ 對于vulnhub中的靶機&#xff0c;我們都需先下載鏡像&#xff0c;然后導入VM&#xff0c;并將網絡連接改為NAT模式。首先我們…

UDP數據報套接字編程入門

目錄 1.TCP和UDP的特點及區別 1.1TCP的特點 1.2UDP的特點 1.3區別 2.UDP Socket的api的介紹 2.1DatagramSocket API 2.2DatagramPacket API 3.回顯客戶端與服務器 3.1回顯服務器 3.1.1UdpEchoServer類的創建 3.1.2服務器的運行方法start() 3.1.3main部分 3.1.4.完整…

C# CAD PaletteSet.Style各種外觀和行為樣式

ps.Style 是 Autodesk.AutoCAD.Windows.PaletteSet 類的一個屬性&#xff0c;用于定義調色板集&#xff08;PaletteSet&#xff09;的各種外觀和行為樣式。它可以是 PaletteSetStyles 枚舉類型的組合值 PaletteSetStyles 枚舉中包含以下一些選項&#xff1a; NameEditable&am…

統計子矩陣

一、題目描述 P8783 [藍橋杯 2022 省 B] 統計子矩陣 二、算法簡析 2.1 二維前綴和 我們知道&#xff0c;只要確定了矩陣的左上頂點和右下頂點&#xff0c;一個矩陣就被固定了。因此&#xff0c;我們可以遍歷這兩個頂點&#xff0c;達到遍歷所有子矩陣的目的&#xff0c;復雜…

AutoSAR(基礎入門篇)12.5-Dem

目錄 一、Dem簡介 二、Dem消抖 1、計數模式 1. 普通增減計數 2. 反向歸零增減模式

在微服務整合dubbo,以為微服務版的若依為例

在微服務整合dubbo&#xff0c;以為微服務版的若依為例 一、環境二、整合過程1、父模塊依賴2、生產者3、消費者 三、修改若依的服務調用方式為dubbo1、改造系統模塊2、改造認證授權中心 四、整合過程遇到的問題1、出現循環引用2、出現依賴沖突3、啟動出現端口號被占用4、出現某…