達夢數據庫關于參數PK_WITH_CLUSTER的改動分析

目錄

1、PK_WITH_CLUSTER取值為0

2、PK_WITH_CLUSTER取值為1


達夢數據庫的參數PK_WITH_CLUSTER在最近使用過程中發現與前期使用的版本存在差異,特此測試分析一下。具體哪個版本改動的暫未得知。

PK_WITH_CLUSTER,默認值為0,動態會話級參數。

參數含義:在建表語句或增加約束語句中指定主關鍵字時,是否缺省指定為CLUSTER,0:不指定;1:指定

注:該參數對水平分區表、列存儲表和堆表無效

測試版本:

1-3-26-2024.08.21-240039-20046-ENT
--03134284058-20240821-240039-20046 Pack37

接下來創建表,做一些驗證測試。本文使用創建聚集主鍵的方式來做測試,創建聚集索引的效果與之相同。

1、PK_WITH_CLUSTER取值為0

(1)使用SQL語句創建普通表,表中存在主鍵,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T1;
CREATE TABLE T1( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
PRIMARY KEY(ID)
);
--插入測試數據
INSERT INTO T1 VALUES (7,'A',15,1);
INSERT INTO T1 VALUES (1,'A',20,2);
INSERT INTO T1 VALUES (3,'A',53,3);
INSERT INTO T1 VALUES (5,'A',35,4);
INSERT INTO T1 VALUES (10,'A',62,5);
INSERT INTO T1 VALUES (6,'A',18,6);
INSERT INTO T1 VALUES (2,'A',35,7);
INSERT INTO T1 VALUES (4,'A',66,8);
INSERT INTO T1 VALUES (9,'A',24,9);
INSERT INTO T1 VALUES (8,'A',41,10);
COMMIT;

創建表后查看其表定義,由于PK_WITH_CLUSTER為0,所以建表后主鍵自動加了not cluster,建表結果與期望效果一致。

表數據默認以ROWID有序聚集。

(2)創建一張帶有大字段的普通表,表中存在主鍵,主鍵字段非大字段類型,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T2;
CREATE TABLE T2( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
PRIMARY KEY(ID)
);
--插入測試數據
INSERT INTO T2 VALUES (7,'A',15,1,'test');
INSERT INTO T2 VALUES (1,'A',20,2,'test');
INSERT INTO T2 VALUES (3,'A',53,3,'test');
INSERT INTO T2 VALUES (5,'A',35,4,'test');
INSERT INTO T2 VALUES (10,'A',62,5,'test');
INSERT INTO T2 VALUES (6,'A',18,6,'test');
INSERT INTO T2 VALUES (2,'A',35,7,'test');
INSERT INTO T2 VALUES (4,'A',66,8,'test');
INSERT INTO T2 VALUES (9,'A',24,9,'test');
INSERT INTO T2 VALUES (8,'A',41,10,'test');
COMMIT;

創建表后查看其表定義,由于PK_WITH_CLUSTER為0,所以建表后主鍵自動加了not cluster,建表結果與期望效果一致。

表數據默認以ROWID有序聚集。

(3)創建一張帶有大字段的普通表,表中存在主鍵,主鍵字段為大字段類型,建表報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T3;
CREATE TABLE T3( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
PRIMARY KEY(DINFO)
);

報錯信息:“字段[DINFO]不可比較”。

這里可能會聯想到一個參數ENABLE_BLOB_CMP_FLAG(是否支持大字段類型的比較)。但實際將參數ENABLE_BLOB_CMP_FLAG改為1后也是會繼續報錯的,因為此參數的作用主要是解決SQL語句中大字段與字符類型的比較這種情況的。

報錯原因:大字段本身是不支持比較的,在大字段上創建主鍵,其實就相當于對大字段創建唯一素索引,為了確保數據的唯一,會涉及到比較的過程,所以報錯。

(4)?創建一張帶有大字段的普通表,建表時使用cluster顯式創建聚集主鍵,主鍵字段為大字段類型,建表報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T4;
CREATE TABLE T4( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(DINFO)
);

報錯信息:“字段[DINFO]不可比較”。

報錯原因:與上述(3)的原因相同。

(5)創建一張普通表,建表時使用cluster顯式創建聚集主鍵,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T5;
CREATE TABLE T5( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
CLUSTER PRIMARY KEY(ID)
);
--插入測試數據
INSERT INTO T5 VALUES (7,'A',15,1);
INSERT INTO T5 VALUES (1,'A',20,2);
INSERT INTO T5 VALUES (3,'A',53,3);
INSERT INTO T5 VALUES (5,'A',35,4);
INSERT INTO T5 VALUES (10,'A',62,5);
INSERT INTO T5 VALUES (6,'A',18,6);
INSERT INTO T5 VALUES (2,'A',35,7);
INSERT INTO T5 VALUES (4,'A',66,8);
INSERT INTO T5 VALUES (9,'A',24,9);
INSERT INTO T5 VALUES (8,'A',41,10);
COMMIT;

創建表后查看其表定義,由于顯式指定了cluster,所以實際創建的聚集主鍵,建表結果與期望效果一致。

表數據以主鍵字段“ID”有序聚集。

(6)創建一張帶有大字段的普通表,建表時使用cluster顯式創建聚集主鍵,主鍵字段非大字段類型,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T6;
CREATE TABLE T6( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(ID)
);
--插入測試數據
INSERT INTO T6 VALUES (7,'A',15,1,'test');
INSERT INTO T6 VALUES (1,'A',20,2,'test');
INSERT INTO T6 VALUES (3,'A',53,3,'test');
INSERT INTO T6 VALUES (5,'A',35,4,'test');
INSERT INTO T6 VALUES (10,'A',62,5,'test');
INSERT INTO T6 VALUES (6,'A',18,6,'test');
INSERT INTO T6 VALUES (2,'A',35,7,'test');
INSERT INTO T6 VALUES (4,'A',66,8,'test');
INSERT INTO T6 VALUES (9,'A',24,9,'test');
INSERT INTO T6 VALUES (8,'A',41,10,'test');
COMMIT;

創建表后查看其表定義,因為顯式指定了cluster,理論上這里應該是聚集主鍵,但實際創建的非聚集主鍵,建表結果與期望效果并不一致,在比較老的版本上這里應該是cluster primary。

原因分析:?在達夢數據庫中,有大字段的表是不建議創建聚集索引的,因為可能存在數據文件快速膨脹的風險。所以這里應該是基于這一點,內部自動進行了轉換,創建為了非聚集主鍵。

因此,表數據仍然以默認的ROWID有序聚集。

(7)創建一張分區表,表中存在主鍵,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T7;
CREATE TABLE T7( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
PRIMARY KEY(ID)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));
--插入測試數據
INSERT INTO T7 VALUES (7,'A',15,1);
INSERT INTO T7 VALUES (1,'A',20,2);
INSERT INTO T7 VALUES (3,'A',53,3);
INSERT INTO T7 VALUES (5,'A',35,4);
INSERT INTO T7 VALUES (10,'A',62,5);
INSERT INTO T7 VALUES (6,'A',18,6);
INSERT INTO T7 VALUES (2,'A',35,7);
INSERT INTO T7 VALUES (4,'A',66,8);
INSERT INTO T7 VALUES (9,'A',24,9);
INSERT INTO T7 VALUES (8,'A',41,10);
COMMIT;

創建表后查看其表定義,由于PK_WITH_CLUSTER為0,所以建表后主鍵自動加了not cluster,建表結果與期望效果一致。

各子分區表中,表數據默認以ROWID有序聚集。

(8)創建一張分區表,建表時使用cluster顯式創建聚集主鍵,建表報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T8;
CREATE TABLE T8( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
CLUSTER PRIMARY KEY(ID)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));

報錯信息:“聚集主鍵必須包含全部分區列”

報錯原因:創建聚集主鍵時,主鍵中需要把分區字段也加上

(9)創建一張分區表,建表時使用cluster顯式創建聚集主鍵,聚集主鍵包含分區字段,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T8;
CREATE TABLE T8( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
CLUSTER PRIMARY KEY(ID,AGE)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));
--插入測試數據
INSERT INTO T8 VALUES (7,'A',15,1);
INSERT INTO T8 VALUES (1,'A',20,2);
INSERT INTO T8 VALUES (3,'A',53,3);
INSERT INTO T8 VALUES (5,'A',35,4);
INSERT INTO T8 VALUES (10,'A',62,5);
INSERT INTO T8 VALUES (6,'A',18,6);
INSERT INTO T8 VALUES (2,'A',35,7);
INSERT INTO T8 VALUES (4,'A',66,8);
INSERT INTO T8 VALUES (9,'A',24,9);
INSERT INTO T8 VALUES (8,'A',41,10);
COMMIT;

創建表后查看其表定義,由于顯式指定了cluster,所以實際創建的聚集主鍵,建表結果與期望效果一致。

各子分區表中,表數據以主鍵字段“ID”,“AGE”有序聚集。數據會先以ID排序,當ID相同時按照AGE排序。

(10)創建一張帶有大字段的分區表,表中存在主鍵,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T10;
CREATE TABLE T10( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(ID)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));
--插入測試數據
INSERT INTO T10 VALUES (7,'A',15,1,'test');
INSERT INTO T10 VALUES (1,'A',20,2,'test');
INSERT INTO T10 VALUES (3,'A',53,3,'test');
INSERT INTO T10 VALUES (5,'A',35,4,'test');
INSERT INTO T10 VALUES (10,'A',62,5,'test');
INSERT INTO T10 VALUES (6,'A',18,6,'test');
INSERT INTO T10 VALUES (2,'A',35,7,'test');
INSERT INTO T10 VALUES (4,'A',66,8,'test');
INSERT INTO T10 VALUES (9,'A',24,9,'test');
INSERT INTO T10 VALUES (8,'A',41,10,'test');
COMMIT;

這里問題就出現了,建表的語句中聚集主鍵沒有加分區字段,但是為什么創建沒有報錯呢?以往的老版本上,這里應該也會報錯“聚集主鍵必須包含全部分區列”才對。

查看表定義,發現這里并沒有創建成聚集主鍵,數據庫自動加了not cluster,建表結果與期望效果不一致。

原因分析:這里應該是與(6)的測試情況是一樣的原因,表中因為含有了大字段,所以系統內部自動創建成了非聚集主鍵。

由于最終創建的還是非聚集主鍵,數據還是默認以rowid排序聚集的。

(11)創建一張帶有大字段的分區表,建表時使用cluster顯式創建聚集主鍵,聚集主鍵包含分區字段,建表正常無報錯

--創建一張普通測試表
DROP TABLE IF EXISTS T11;
CREATE TABLE T11( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(ID,AGE)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));
--插入測試數據
INSERT INTO T11 VALUES (7,'A',15,1,'test');
INSERT INTO T11 VALUES (1,'A',20,2,'test');
INSERT INTO T11 VALUES (3,'A',53,3,'test');
INSERT INTO T11 VALUES (5,'A',35,4,'test');
INSERT INTO T11 VALUES (10,'A',62,5,'test');
INSERT INTO T11 VALUES (6,'A',18,6,'test');
INSERT INTO T11 VALUES (2,'A',35,7,'test');
INSERT INTO T11 VALUES (4,'A',66,8,'test');
INSERT INTO T11 VALUES (9,'A',24,9,'test');
INSERT INTO T11 VALUES (8,'A',41,10,'test');
COMMIT;

查看表定義,這里一樣沒有創建成聚集主鍵,盡管滿足了“聚集主鍵必須包含全部分區列”的限制,但大字段數據類型帶來的風險更嚴重,因此還是優先保證規避風險,所以數據庫還是自動加了not cluster,建表結果與期望效果不一致。

同樣是由于創建的非聚集主鍵,數據還是默認以rowid排序聚集的。

(12)創建一張帶有大字段的分區表, 表中存在主鍵或聚集主鍵,且主鍵或聚集主鍵是大字段,或者主鍵或聚集主鍵包含大字段的情況,均會報錯。

--報錯,分區表,主鍵為大字段
--創建一張普通測試表
DROP TABLE IF EXISTS T12;
CREATE TABLE T12( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
PRIMARY KEY(DINFO)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));--報錯,分區表,聚集主鍵為大字段
--創建一張普通測試表
DROP TABLE IF EXISTS T12;
CREATE TABLE T12( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(DINFO)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));--報錯,分區表,主鍵含大字段
--創建一張普通測試表
DROP TABLE IF EXISTS T12;
CREATE TABLE T12( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
PRIMARY KEY(ID,DINFO)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));--報錯,分區表,聚集主鍵含大字段
--創建一張普通測試表
DROP TABLE IF EXISTS T12;
CREATE TABLE T12( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(ID,DINFO)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));--報錯,分區表,聚集主鍵包含全部分區列,且含大字段
--創建一張普通測試表
DROP TABLE IF EXISTS T12;
CREATE TABLE T12( 
ID INTEGER,
NAME VARCHAR(30), 
AGE INT,
ORD INT,
DINFO CLOB,
CLUSTER PRIMARY KEY(ID,AGE,DINFO)
)
PARTITION BY RANGE(AGE) INTERVAL(10)(
PARTITION P1 VALUES EQU OR LESS THAN (18),
PARTITION P2 VALUES EQU OR LESS THAN (35),
PARTITION P3 VALUES EQU OR LESS THAN (60),
PARTITION P4 VALUES EQU OR LESS THAN (100));

報錯原因與(3)測試的原因相同。

2、PK_WITH_CLUSTER取值為1

當PK_WITH_CLUSTER=1時,其實就是免去了顯式指定CLUSTER的方法,自動創建為了聚集主鍵或聚集索引,根據前文PK_WITH_CLUSTER取值為0時的測試結果及原因,其實可以猜到PK_WITH_CLUSTER取值為1時不同情況下的測試結果,因此這里直接寫實際測試結果,不再過多贅述各測試結果出現的原因。

(1)使用SQL語句創建普通表,表中存在主鍵,建表正常無報錯,創建的是聚集主鍵
(2)創建一張帶有大字段的普通表,表中存在主鍵,主鍵字段非大字段類型,建表正常無報錯,創建的是非聚集主鍵
(3)創建一張帶有大字段的普通表,表中存在主鍵,主鍵字段為大字段類型,建表報錯。報錯信息:“字段[DINFO]不可比較”
(4)創建一張帶有大字段的普通表,建表時使用cluster顯式創建聚集主鍵,主鍵字段為大字段類型,建表報錯。報錯信息:“字段[DINFO]不可比較”
(5)創建一張普通表,建表時使用cluster顯式創建聚集主鍵,建表正常無報錯,創建的是聚集主鍵
(6)創建一張帶有大字段的普通表,建表時使用cluster顯式創建聚集主鍵,主鍵字段非大字段類型,建表正常無報錯,創建的是非聚集主鍵
(7)創建一張分區表,表中存在主鍵,建表正常無報錯,創建的是非聚集主鍵
(8)創建一張分區表,建表時使用cluster顯式創建聚集主鍵,建表報錯。報錯信息:“聚集主鍵必須包含全部分區列”
(9)創建一張分區表,建表時使用cluster顯式創建聚集主鍵,聚集主鍵包含分區字段,建表正常無報錯,創建的是聚集主鍵
(10)創建一張帶有大字段的分區表,表中存在主鍵,建表正常無報錯,創建的是非聚集主鍵
(11)創建一張帶有大字段的分區表,建表時使用cluster顯式創建聚集主鍵,聚集主鍵包含分區字段,建表正常無報錯,創建的是非聚集主鍵
(12)創建一張帶有大字段的分區表, 表中存在主鍵或聚集主鍵,且主鍵或聚集主鍵是大字段,或者主鍵或聚集主鍵包含大字段的情況,均會報錯。報錯信息:“字段[DINFO]不可比較”
?

總結:達夢數據庫底層修改策略,使得無論參數PK_WITH_CLUSTER是否為1,無論是否指定CLUSTER關鍵字顯式創建聚集索引或聚集主鍵,目前均會自動避免出現聚簇表中有大字段的現象。此外,當參數PK_WITH_CLUSTER為1時,如果沒有顯式指定CLUSTER關鍵字,創建的分區表主鍵不滿足“包含全部分區列”的條件,會自動創建成非聚集主鍵。

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

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

相關文章

android11使用gpio口控制led狀態燈

目錄 一、簡介 二、解決方法 A、底層驅動 B、上層調用 C、驗證 一、簡介 1、需求:這里是用2個gpio口來控制LED燈,開機時默認亮藍燈,按開機鍵,休眠亮紅燈,喚醒亮藍燈。 原理圖: 這里由于主板上電阻R63…

windows 利用nvm 管理node.js 2025最新版

1.首先在下載nvm 下載鏈接 2. 下載最新版本的nvm 3. 同意協議 注意:選擇安裝路徑 之后一直下一步即可 可以取消勾選 open with Powershell 勾選后它會自動打開Powershell 這里選用cmd 輸入以下命令查看是否安裝成功 nvm version 查看已經安裝的版本 我之前自…

深入淺出:UniApp 從入門到精通全指南

https://juejin.cn/post/7440119937644101684 uni-app官網 本文是關于 UniApp 從入門到精通的全指南,涵蓋基礎入門(環境搭建、創建項目、項目結構、編寫運行)、核心概念與進階知識(組件與開發、頁面路由與導航、數據綁定與響應式…

MySQL ——數據的增刪改查

一、DML語言 1.1 insert插入數據 語法:insert [into] 表名 [字段名] values(值列表); 插入一行數據 第一種:insert into file1(id,name,age) values (1,‘aa’,11); 第二種:insert into file1 values(1,‘aa’,11); 插入多行數…

【CF記錄】貪心——A. Scrambled Scrabble

https://codeforces.com/contest/2045/problem/A 思路: 由于Y有兩種選擇,NG也是,那我們可以枚舉以下情況:選i個Y做輔音,j個NG做輔音 然后貪心選擇最長的即可,觀察到S最長為5000,即使是也不會…

C語言【指針篇】(四)

前言:正文1. 字符指針變量2. 數組指針變量2.1 數組指針變量是什么?2.2 數組指針變量怎么初始化 3. 二維數組傳參的本質4. 函數指針變量4.1 函數指針變量的創建4.2 函數指針變量的使用4.3 兩段有趣的代碼4.3.1 typedef關鍵字 5. 函數指針數組6. 轉移表 總結 前言&am…

React + TypeScript 實戰指南:用類型守護你的組件

TypeScript 為 React 開發帶來了強大的類型安全保障,這里解析常見的一些TS寫法: 一、組件基礎類型 1. 函數組件定義 // 顯式聲明 Props 類型并標注返回值 interface WelcomeProps {name: string;age?: number; // 可選屬性 }const Welcome: React.FC…

【玩轉正則表達式】將正則表達式中的分組(group)與替換進行結合使用

在文本處理和數據分析領域,正則表達式(Regular Expressions,簡稱regex)是一種功能強大的工具。它不僅能夠幫助我們匹配和搜索字符串中的特定模式,還能通過分組(Grouping)和替換(Subs…

Flutter 學習之旅 之 flutter 不使用插件,簡單實現一個 Toast 功能

Flutter 學習之旅 之 flutter 不使用插件,簡單實現一個 Toast 功能 目錄 Flutter 學習之旅 之 flutter 不使用插件,簡單實現一個 Toast 功能 一、簡單介紹 二、簡單介紹 Toast 1. 確保正確配置 navigatorKey 2. 避免重復顯示 Toast 3. 確保 Toast …

《OpenCV》——dlib(人臉應用實例)

文章目錄 dlib庫dlib庫——人臉應用實例——表情識別dlib庫——人臉應用實例——疲勞檢測 dlib庫 dlib庫的基礎用法介紹可以參考這篇文章:https://blog.csdn.net/lou0720/article/details/145968062?spm1011.2415.3001.5331,故此這篇文章只介紹dlib的人…

學習日記-250305

閱讀論文:Leveraging Pedagogical Theories to Understand Student Learning Process with Graph-based Reasonable Knowledge Tracing ps:代碼邏輯最后一點還沒理順,明天繼續 4.2 Knowledge Memory & Knowledge Tracing 代碼研究: 一般…

【AI大模型】DeepSeek + Kimi 高效制作PPT實戰詳解

目錄 一、前言 二、傳統 PPT 制作問題 2.1 傳統方式制作 PPT 2.2 AI 大模型輔助制作 PPT 2.3 適用場景對比分析 2.4 最佳實踐與推薦 三、DeepSeek Kimi 高效制作PPT操作實踐 3.1 Kimi 簡介 3.2 DeepSeek Kimi 制作PPT優勢 3.2.1 DeepSeek 優勢 3.2.2 Kimi 制作PPT優…

【ESP-ADF】在 VSCode 安裝 ESP-ADF 注意事項

1.檢查網絡 如果您在中國大陸安裝,請使用魔法上網,避免無法 clone ESP-ADF 倉庫。 2.VSCode 安裝 ESP-ADF 在 VSCode 左側活動欄選擇 ESP-IDF:explorer,展開 advanced 并點擊 Install ESP-ADF 然后會出現選擇 ESP-ADF 安裝目錄。 如果出現…

關于2023新版PyCharm的使用

考慮到大家AI編程的需要,建議大家安裝新版Python解釋器和新版PyCharm,下載地址都可以官網進行: Python:Download Python | Python.org(可以根據需要自行選擇,建議選擇3.11,保持交流版本一致&am…

輕松部署 Stable Diffusion WebUI 并實現局域網共享訪問:解決 Conda Python 版本不為 3.10.6 的難題

這篇博文主要為大家講解關于sd webui的部署問題,大家有什么不懂的可以隨時問我,如果沒有及時回復,可聯系:1198965922 如果后續大家需要了解怎么用代碼調用部署好的webui的接口,可以在評論區留言哦,博主可以…

Leetcode 103: 二叉樹的鋸齒形層序遍歷

Leetcode 103: 二叉樹的鋸齒形層序遍歷 問題描述: 給定一個二叉樹,返回其節點值的鋸齒形層序遍歷(即第一層從左到右,第二層從右到左,第三層從左到右,依此類推)。 適合面試的解法:廣…

Linux中的進程間通信的方式及其使用場景

在 Linux 系統中,進程間通信(Inter-Process Communication, IPC)是指不同進程之間傳遞數據、共享信息的機制。Linux 提供了多種進程間通信的方式,每種方式都有不同的特點和使用場景。以下是常見的幾種進程間通信方式及其應用場景&…

springBoot集成emqx 實現mqtt消息的發送訂閱

介紹 我們可以想象這么一個場景,我們java應用想要采集到電表a的每小時的用電信息,我們怎么拿到電表的數據?一般我們會想 直接 java 后臺發送請求給電表,然后讓電表返回數據就可以了,事實上,我們java應用發…

vue Table 表格自適應窗口高度,表頭固定

當表格內縱向內容過多時&#xff0c;可選擇固定表頭。 代碼很簡單&#xff0c;其實就是在table 里面定一個 height 屬性即可。 <template><el-table:data"tableData"height"250"borderstyle"width: 100%"><el-table-columnprop…

多線程-JUC

簡介 juc&#xff0c;java.util.concurrent包的簡稱&#xff0c;java1.5時引入。juc中提供了一系列的工具&#xff0c;可以更好地支持高并發任務 juc中提供的工具 可重入鎖 ReentrantLock 可重入鎖&#xff1a;ReentrantLock&#xff0c;可重入是指當一個線程獲取到鎖之后&…