MYSQL之存儲篇

MYSQL之存儲篇

  • 存儲過程簡介
    • 存儲過程優點:
  • MySQL的存儲過程
    • MySQL存儲過程的創建
      • 1.格式
      • 2.聲明分割符
      • 3.參數
      • 4.變量
      • 5.注釋
      • 6.MySQL存儲過程的調用
      • 7. MySQL存儲過程的查詢
      • 8.MySQL存儲過程的修改
      • 9.MySQL存儲過程的刪除
      • 10. MySQL存儲過程的控制語句
      • 11.MySQL存儲過程的基本函數

存儲過程簡介

我們常用的操作數據庫語言SQL語句在執行的時候需要要先編譯,然后執行,而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字并給定參數(如果該存儲過程帶有參數)來調用執行它。

一個存儲過程是一個可編程的函數,它在數據庫中創建并保存。它可以有SQL語句和一些特殊的控制結構組成。當希望在不同的應用程序或平臺上執行相同的函數,或者封裝特定功能時,存儲過程是非常有用的。數據庫中的存儲過程可以看做是對編程中面向對象方法的模擬。它允許控制數據的訪問方式。

存儲過程優點:

(1).存儲過程增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的運算。

(2).存儲過程允許標準組件是編程。存儲過程被創建后,可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句。而且數據庫專業人員可以隨時對存儲過程進行修改,對應用程序源代碼毫無影響。

(3).存儲過程能實現較快的執行速度。如果某一操作包含大量的Transaction-SQL代碼或分別被多次執行,那么存儲過程要比批處理的執行速度快很多。因為存儲過程是預編譯的。在首次運行一個存儲過程時查詢,優化器對其進行分析優化,并且給出最終被存儲在系統表中的執行計劃。而批處理的Transaction-SQL語句在每次運行時都要進行編譯和優化,速度相對要慢一些。

(4).存儲過程能過減少網絡流量。針對同一個數據庫對象的操作(如查詢、修改),如果這一操作所涉及的Transaction-SQL語句被組織程存儲過程,那么當在客戶計算機上調用該存儲過程時,網絡中傳送的只是該調用語句,從而大大增加了網絡流量并降低了網絡負載。

(5).存儲過程可被作為一種安全機制來充分利用。系統管理員通過執行某一存儲過程的權限進行限制,能夠實現對相應的數據的訪問權限的限制,避免了非授權用戶對數據的訪問,保證了數據的安全。

MySQL的存儲過程

存儲過程是數據庫存儲的一個重要的功能,但是MySQL在5.0以前并不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終于開始已經支持存儲過程,這樣即可以大大提高數據庫的處理速度,同時也可以提高數據庫編程的靈活性。

MySQL存儲過程的創建

1.格式

MySQL存儲過程創建的格式:CREATE PROCEDURE 過程名 ([過程參數[,…]])
[特性 …] 過程體

mysql>  
mysql> 
DELIMITER  /
CREATE PROCEDURE proc1(OUT s int)  
BEGIN SELECT COUNT(*) INTO s FROM user; END  /DELIMITER ; 

(1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";“為分隔符,如果我們沒有聲明分割符,那么編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將”;"當做存儲過程中的代碼,不會執行這些代碼,用完了之后要把分隔符還原。

(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

(3)過程體的開始與結束使用BEGIN與END進行標識。

2.聲明分割符

如果是用MySQL的Administrator管理工具時,可以直接創建,不再需要聲明。

3.參數

MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN,OUT,INOUT,形式如:

CREATE PROCEDURE([[IN |OUT |INOUT ] 參數名 數據類形…])

IN 輸入參數:表示該參數的值必須在調用存儲過程時指定,在存儲過程中修改該參數的值不能被返回,為默認值

OUT 輸出參數:該值可在存儲過程內部被改變,并可返回

INOUT 輸入輸出參數:調用時指定,并且可被改變和返回

IN參數例子

mysql > DELIMITER //  
mysql > CREATE PROCEDURE demo_in_parameter(IN p_in int)  
-> BEGIN   
-> SELECT p_in;   
-> SET p_in=2;   
-> SELECT p_in;   
-> END;   
-> //  
mysql > DELIMITER ; 

執行結果:

mysql > SET @p_in=1;  
mysql > CALL demo_in_parameter(10);  
+------+  
| p_in |  
+------+  
|   1  |   
+------+  +------+  
| p_in |  
+------+  
|   2  |   
+------+  mysql> SELECT @p_in;  
+-------+  
| @p_in |  
+-------+  
|  1    |  
+-------+  

p_in雖然在存儲過程中被修改,但并不影響@p_id的值

OUT參數例子

mysql > DELIMITER //  
mysql > CREATE PROCEDURE demo_out_parameter(OUT p_out int)  
-> BEGIN 
-> SELECT p_out;  
-> SET p_out=2;  
-> SELECT p_out;  
-> END;  
-> //  
mysql > DELIMITER ; 

執行結果:

mysql > SET @p_out=1;  
mysql > CALL sp_demo_out_parameter(@p_out);  
+-------+  
| p_out |   
+-------+  
| NULL  |   
+-------+  +-------+  
| p_out |  
+-------+  
|   2   |   
+-------+  mysql> SELECT @p_out;  
+-------+  
| p_out |  
+-------+  
|   2   |  
+-------+  

INOUT參數例子

mysql > DELIMITER //   
mysql > CREATE PROCEDURE demo_inout_parameter(INOUT p_inout int)   
-> BEGIN 
-> SELECT p_inout;  
-> SET p_inout=2;  
-> SELECT p_inout;   
-> END;  
-> //   
mysql > DELIMITER ; 

執行結果:

mysql > SET @p_inout=1;  
mysql > CALL demo_inout_parameter(@p_inout) ;  
mysql > select @p_inout;
+---------+  
| p_inout |  
+---------+  
|    1    |  
+---------+  +---------+  
| p_inout |   
+---------+  
|    2    |  
+---------+  mysql > SELECT @p_inout;  
+----------+  
| @p_inout |   
+----------+  
|    2     |  
+----------+ 

4.變量

變量定義

DECLARE variable_name [,variable_name…] datatype [DEFAULT value];

其中,datatype為MySQL的數據類型,如:int, float, date, varchar(length)

DECLARE l_int int unsigned default 4000000;  
DECLARE l_numeric number(8,2) DEFAULT 9.95;  
DECLARE l_date date DEFAULT '1999-12-31';  
DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59';  
DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded';   

變量賦值

 SET 變量名 = 表達式值 [,variable_name = expression ...]

用戶變量

在MySQL客戶端使用用戶變量

mysql > SELECT 'Hello World' into @x;  
mysql > SELECT @x;  
+-------------+  
|   @x        |  
+-------------+  
| Hello World |  
+-------------+  
mysql > SET @y='Goodbye Cruel World';  
mysql > SELECT @y;  
+---------------------+  
|     @y              |  
+---------------------+  
| Goodbye Cruel World |  
+---------------------+  mysql > SET @z=1+2+3;  
mysql > SELECT @z;  
+------+  
| @z   |  
+------+  
|  6   |  
+------+  

在存儲過程中使用用戶變量

mysql > CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');  
mysql > SET @greeting='Hello';  
mysql > CALL GreetWorld( );  
+----------------------------+  
| CONCAT(@greeting,' World') |  
+----------------------------+  
|  Hello World               |  
+----------------------------+  

在存儲過程間傳遞全局范圍的用戶變量

mysql> CREATE PROCEDURE p1()   SET @last_procedure='p1';  
mysql> CREATE PROCEDURE p2() SELECT CONCAT('Last procedure was ',@last_proc);  
mysql> CALL p1( );  
mysql> CALL p2( );  
+-----------------------------------------------+  
| CONCAT('Last procedure was ',@last_proc  |  
+-----------------------------------------------+  
| Last procedure was p1                         |  
+-----------------------------------------------+  

①用戶變量名一般以@開頭

②濫用用戶變量會導致程序難以理解及管理

5.注釋

MySQL存儲過程可使用兩種風格的注釋

雙模杠:-- 一般用于單行注釋

c風格: 一般用于多行注釋

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc1 --name存儲過程名  
-> (IN parameter1 INTEGER)   
-> BEGIN   
-> DECLARE variable1 CHAR(10);   
-> IF parameter1 = 17 THEN   
-> SET variable1 = 'birds';   
-> ELSE 
-> SET variable1 = 'beasts';   
-> END IF;   
-> INSERT INTO table1 VALUES (variable1);  
-> END   
-> //  
mysql > DELIMITER ;  

6.MySQL存儲過程的調用

用call和你過程名以及一個括號,括號里面根據需要,加入參數,參數包括輸入參數、輸出參數、輸入輸出參數。具體的調用方法可以參看上面的例子。

7. MySQL存儲過程的查詢

采用show tables;進行查看數據庫;

存儲過程的查詢:

select name from mysql.proc where db=’數據庫名’;

或者

select routine_name from information_schema.routines where routine_schema='數據庫名';

或者

show procedure status where db='數據庫名';

查看當前存儲過程的詳細:

SHOW CREATE PROCEDURE 數據庫.存儲過程名;

8.MySQL存儲過程的修改

ALTER PROCEDURE

更改用CREATE PROCEDURE 建立的預先指定的存儲過程,其不會影響相關存儲過程或存儲功能。

9.MySQL存儲過程的刪除

刪除一個存儲過程比較簡單,和刪除表一樣:

DROP PROCEDURE

從MySQL的表格中刪除一個或多個存儲過程。

10. MySQL存儲過程的控制語句

(1). 變量作用域

內部的變量在其作用域范圍內享有更高的優先權,當執行到end。變量時,內部變量消失,此時已經在其作用域外,變量不再可見了,應為在存儲
過程外再也不能找到這個申明的變量,但是你可以通過out參數或者將其值指派
給會話變量來保存其值。

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc3()  -> begin -> declare x1 varchar(5) default 'outer';  -> begin -> declare x1 varchar(5) default 'inner';  -> select x1;  -> end;  -> select x1;  -> end;  -> //  
mysql > DELIMITER ;  

(2). 條件語句

if-then -else語句

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc2(IN parameter int)  -> begin -> declare var int;  -> set var=parameter+1;  -> if var=0 then -> insert into t values(17);  -> end if;  -> if parameter=0 then -> update t set s1=s1+1;  -> else -> update t set s1=s1+2;  -> end if;  -> end;  -> //  
mysql > DELIMITER ;  

case語句:

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc3 (in parameter int)  -> begin -> declare var int;  -> set var=parameter+1;  -> case var  -> when 0 then   -> insert into t values(17);  -> when 1 then   -> insert into t values(18);  -> else   -> insert into t values(19);  -> end case;  -> end;  -> //  
mysql > DELIMITER ; 

(3). 循環語句

while ···· end while:

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc4()  -> begin -> declare var int;  -> set var=0;  -> while var<6 do  -> insert into t values(var);  -> set var=var+1;  -> end while;  -> end;  -> //  
mysql > DELIMITER ; 

repeat···· end repeat:

它在執行操作后檢查結果,而while則是執行前進行檢查。

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc5 ()  -> begin   -> declare v int;  -> set v=0;  -> repeat  -> insert into t values(v);  -> set v=v+1;  -> until v>=5  -> end repeat;  -> end;  -> //  
mysql > DELIMITER ;  

loop ·····end loop:

loop循環不需要初始條件,這點和while 循環相似,同時和repeat循環一樣不需要結束條件, leave語句的意義是離開循環。

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc6 ()  -> begin -> declare v int;  -> set v=0;  -> LOOP_LABLE:loop  -> insert into t values(v);  -> set v=v+1;  -> if v >=5 then -> leave LOOP_LABLE;  -> end if;  -> end loop;  -> end;  -> //  
mysql > DELIMITER ;  

LABLES 標號:

標號可以用在begin repeat while 或者loop 語句前,語句標號只能在合法的語句前面使用。可以跳出循環,使運行指令達到復合語句的最后一步。

(4). ITERATE迭代

ITERATE:

通過引用復合語句的標號,來從新開始復合語句

mysql > DELIMITER //  
mysql > CREATE PROCEDURE proc10 ()  -> begin -> declare v int;  -> set v=0;  -> LOOP_LABLE:loop  -> if v=3 then   -> set v=v+1;  -> ITERATE LOOP_LABLE;  -> end if;  -> insert into t values(v);  -> set v=v+1;  -> if v>=5 then -> leave LOOP_LABLE;  -> end if;  -> end loop;  -> end;  -> //  
mysql > DELIMITER ; 

11.MySQL存儲過程的基本函數

(1).字符串類

CHARSET(str) //返回字串字符集
CONCAT (string2 [,… ]) //連接字串
INSTR (string ,substring ) //返回substring首次在string中出現的位置,不存在返回0
LCASE (string2 ) //轉換成小寫
LEFT (string2 ,length ) //從string2中的左邊起取length個字符
LENGTH (string ) //string長度
LOAD_FILE (file_name ) //從文件讀取內容
LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定開始位置
LPAD (string2 ,length ,pad ) //重復用pad加在string開頭,直到字串長度為length
LTRIM (string2 ) //去除前端空格
REPEAT (string2 ,count ) //重復count次
REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
RPAD (string2 ,length ,pad) //在str后用pad補充,直到長度為length
RTRIM (string2 ) //去除后端空格
STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,
SUBSTRING (str , position [,length ]) //從str的position開始,取length個字符,
注:mysql中處理字符串時,默認第一個字符下標為1,即參數position必須大于等于1

mysql> select substring('abcd',0,2);  
+-----------------------+  
| substring('abcd',0,2) |  
+-----------------------+  
|                       |  
+-----------------------+  
1 row in set (0.00 sec) 
mysql> select substring('abcd',1,2);  
+-----------------------+  
| substring('abcd',1,2) |  
+-----------------------+  
|     ab                |  
+-----------------------+  
1 row in set (0.02 sec)  
TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
UCASE (string2 ) //轉換成大寫
RIGHT(string2,length) //取string2最后length個字符
SPACE(count) //生成count個空格

(2).數學類

ABS (number2 ) //絕對值
BIN (decimal_number ) //十進制轉二進制
CEILING (number2 ) //向上取整
CONV(number2,from_base,to_base) //進制轉換
FLOOR (number2 ) //向下取整
FORMAT (number,decimal_places ) //保留小數位數
HEX (DecimalNumber ) //轉十六進制
注:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX(‘DEF’)返回4142143
也可以傳入十進制整數,返回其十六進制編碼,如HEX(25)返回19
LEAST (number , number2 [,…]) //求最小值
MOD (numerator ,denominator ) //求余
POWER (number ,power ) //求指數
RAND([seed]) //隨機數
ROUND (number [,decimals ]) //四舍五入,decimals為小數位數]

注:返回類型并非均為整數,如:
(1)默認變為整形值

mysql> select round(1.23);  
+-------------+   | round(1.23) |  
+-------------+   |           1 |  
+-------------+   1 row in set (0.00 sec)
mysql> select round(1.56);  
+-------------+  
| round(1.56) |  
+-------------+  
|           2 |  
+-------------+  
1 row in set (0.00 sec) 

(2)可以設定小數位數,返回浮點型數據

mysql> select round(1.567,2);  
+----------------+  
| round(1.567,2) |  
+----------------+  
|           1.57 |  
+----------------+  
1 row in set (0.00 sec) 
SIGN (number2 ) //

(3).日期時間類

ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區
CURRENT_DATE ( ) //當前日期
CURRENT_TIME ( ) //當前時間
CURRENT_TIMESTAMP ( ) //當前時間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間
DATEDIFF (date1 ,date2 ) //兩個日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串
MONTHNAME (date ) //英文月份名
NOW ( ) //當前時間
SEC_TO_TIME (seconds ) //秒數轉成時間
STR_TO_DATE (string ,format ) //字串轉成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉秒數]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分返回符號,正負或0
SQRT(number2) //開平方

在這里歡迎大家的點贊、關注、評論,以此來促進大家互相學習交流,同時可以讓新加入的小伙伴更快的了解新知識!!!

文章內容切記不可用于非法行為,造成經濟損失概不負責,造成的后果自行承擔;如有侵權,請聯系作者進行刪除。

≧???≦ 1分2分都是愛,感謝已經打賞的老板,和正在打賞的老板們 ≧???≦

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

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

相關文章

mybatis配置環境流程

mybatis配置環境流程 為啥要用mybatis&#xff1a;通過Mybatis實現快速訪問后端pgsql、mysql等數據庫。 1.修改pom.xml&#xff0c;添加mybatis相關依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-s…

React + SpringBoot開發用戶中心管理系統

用戶中心項目搭建筆記 技術棧 前端技術棧 “react”: “^18.2.0”,ant-design-pro 后端技術棧 SpringBoot 2.6.x 項目源碼地址 https://gitee.com/szxio/user-center 前端項目搭建 快速搭建一個后端管理系統項目框架 初始化 antDesignPro 官網&#xff1a; https://…

Spel表達式使用案例

package com.example.demo.api;import com.example.demo.model.User; import lombok.extern.slf4j.Slf4j;<

CSS Web前端框架:深入剖析與應用實踐

CSS Web前端框架&#xff1a;深入剖析與應用實踐 在快速發展的Web技術領域&#xff0c;CSS Web前端框架已成為構建現代化、高效且響應式網頁的關鍵工具。它們不僅簡化了開發過程&#xff0c;還提高了代碼的可維護性和復用性。然而&#xff0c;面對眾多紛繁復雜的框架選擇&…

ByteBuddy字節碼增強器

Byte Buddy是java的字節碼增強器&#xff0c;一個優雅的運行時java代碼生成庫&#xff0c;使用時需要慎重 文檔地址&#xff1a;http://bytebuddy.net/#/tutorial-cn 1. 引入ByteBuddy <!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy --><depend…

LeetCode---哈希表

242. 有效的字母異位詞 給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意&#xff1a;若 s 和 t 中每個字符出現的次數都相同&#xff0c;則稱 s 和 t 互為字母異位詞。 代碼示例&#xff1a; //時間復雜度: O(n) //空間復雜度: O(1) c…

Java生成PDF筆記整理

引入依賴, groupId:com.itextpdf, version:8.0.4, artifactId如下kernel,io,layout,forms創建pdf對象try(ByteArrayOutputStream outputStream new ByteArrayOutputStream()){PdfWriter writer new PdfWriter(outputStream, new WriterProperties().setFullCompressionMode(t…

離線安裝python庫

1. 下載安裝包 在聯網機器上安裝 # 選擇符合目標架構的版本&#xff0c;主要是libc版本和python版本 pip download --platformmanylinux2010_x86_64 --only-binary:all: --python-version3.7.4 tabulate # 或者 pip download --platformmanylinux_2_5_x86_64 --only-binary:a…

do...while循環

基本語法 while循環&#xff0c;是先判斷條件再執行。 do...while循環&#xff0c;是先斬后奏&#xff0c;先至少執行一次循環語句塊中的邏輯&#xff0c;再判斷是否繼續。 do {//do while 循環語句塊; } while (bool類型的值);注意&#xff1a;do...while語句&#xff0c;存…

Common Lisp筆記

在計劃學習函數式編程的時候&#xff0c;我一開始打算學習的是 F#。因為我朋友就是在 DTU 上的學&#xff0c;F# 就是 DTU&#xff08;丹麥理工&#xff09;開發的。但是由于 F# 和微軟的 .NET 綁定&#xff0c;而在 macOS 上&#xff0c;目前版本的 .NET 的是有些問題的&#…

2020編程語言排序:探索編程界的熱門與趨勢

2020編程語言排序&#xff1a;探索編程界的熱門與趨勢 在數字時代的浪潮中&#xff0c;編程語言作為構建數字世界的基石&#xff0c;其流行度和影響力不容忽視。2020年&#xff0c;各大編程語言在各自的領域里展現出獨特的魅力和實力。本文將從四個方面、五個方面、六個方面和…

線性代數|機器學習-P3乘法和因式分解矩陣

文章目錄 1. 矩陣分解2. S Q Λ Q T SQ\Lambda Q^T SQΛQT3. A U Σ V T AU\Sigma V^T AUΣVT4. A LU 分解5. 矩陣的四個子空間 1. 矩陣分解 目前我們有很多重要的矩陣分解&#xff0c;每個分解對應于多個前提條件&#xff0c;分解方法&#xff0c;分解后的形狀會中如下&…

【Vue】v-for中的key

文章目錄 一、引入問題二、分析問題 一、引入問題 語法&#xff1a; key屬性 "唯一值" 作用&#xff1a;給列表項添加的唯一標識。便于Vue進行列表項的正確排序復用。 為什么加key&#xff1a;Vue 的默認行為會嘗試原地修改元素&#xff08;就地復用&#xff09;…

馬寶國和沈有容-UMLChina建模知識競賽第5賽季第12輪

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 參考潘加宇在《軟件方法》和UMLChina公眾號文章中發表的內容作答。在本文下留言回答。 只要最先答對前3題&#xff0c;即可獲得本輪優勝。 如果有第4題&#xff0c;第4題為附加題&am…

大模型備案語料來源安全要求

大模型備案的語料來源安全要求&#xff0c;對服務提供者的要求如下。 a&#xff09;語料來源管理方面&#xff1a; 1&#xff09;面向特定語料來源進行采集前&#xff0c;應對該來源語料進行安全評估&#xff0c;語料內容中含違法不良信息超過5%的&#xff0c;不應采集該來源…

R語言ggplot2包繪制網絡地圖

重要提示&#xff1a;數據和代碼獲取&#xff1a;請查看主頁個人信息&#xff01;&#xff01;&#xff01; 載入R包 rm(listls()) pacman::p_load(tidyverse,assertthat,igraph,purrr,ggraph,ggmap) 網絡節點和邊數據 nodes <- read.csv(nodes.csv, row.names 1) edges…

【Python技術】AI編程新手快速入門學習LangChain大模型框架

如果我們要搞AI智能體&#xff0c;普通人一般 借助騰訊元器、 coze、KIMI 或者其他大平臺搞一搞&#xff0c;比如我配置的coze智能體在微信公眾號聊天。 對于程序員來說&#xff0c;一言不合就喜歡搞代碼。 前面文章也介紹了不少關于AI知識庫問答&#xff0c;AIagent 不少開源…

利用AI技術革新學習筆記整理:邁向高效學習的新時代

利用AI技術革新學習筆記整理&#xff1a;邁向高效學習的新時代 在數字化時代&#xff0c;學習方式正在經歷一場革命。人工智能&#xff08;AI&#xff09;技術的融入&#xff0c;讓學習筆記的整理變得更加高效、智能。本文將探討如何利用AI整理學習筆記&#xff0c;以及這一技…

指紋采集技術

目錄 1.概述 1.1 捺印油墨采集 1.2 現場指紋提取 1.3 在線指紋采集 2. 指紋采集器的關鍵技術指標 2.1 采集面積 2.2 分辨率 2.3 圖像質量 2.4 耐用性 1.概述 最早的指紋采集技術是油墨法&#xff0c;至少已經有上百年的歷史。1990年代出現了活體指紋采集器&#xff0c…

數據庫(入門)

文章目錄 一、數據庫(DB) 二、數據庫管理系統&#xff08;DBMS&#xff09; 三、SQL&#xff08;結構化查詢語言&#xff09; 四、三者的關系 五、端口號&#xff08;port number&#xff09; 一、數據庫(DB) 定義&#xff1a;按照一定格式存儲數據的一些文件的組合。 簡單來…