MySQL的變量分類總結

?

在MySQL中,my.cnf是參數文件(Option Files),類似于ORACLE數據庫中的spfile、pfile參數文件,照理說,參數文件my.cnf中的都是系統參數(這種稱呼比較符合思維習慣),但是官方又稱呼其為系統變量(system variables),那么到底這個叫系統參數或系統變量(system variables)呢? 這個曾經是一個讓我很糾結的問題,因為MySQL中有各種類型的變量,有時候語言就是這么博大精深;相信很多人也對這個問題或多或少有點困惑。其實拋開這些名詞,它們就是同一個事情(東西),不管你叫它系統變量(system variables)或系統參數都可,無需那么糾結。 就好比王三,有人叫他王三;也有人也叫他王麻子綽號一樣。

?

另外,MySQL中有很多變量類型,確實有時候讓人有點混淆不清,本文打算總結一下MySQL數據庫的各種變量類型,理清各種變量類型概念。能夠從全局有個清晰思路。MySQL變量類型具體參考下圖:

?

clip_image001

?

?

?

?

Server System Variables(系統變量)

?

?

MySQL系統變量(system variables)是指MySQL實例的各種系統變量,實際上是一些系統參數,用于初始化或設定數據庫對系統資源的占用,文件存放位置等等,這些變量包含MySQL編譯時的參數默認值,或者my.cnf配置文件里配置的參數值。默認情況下系統變量都是小寫字母。官方文檔介紹如下:

?

The MySQL server maintains many system variables that indicate how it is configured. Each system variable has a default value. System variables can be set at server startup using options on the command line or in an option file. Most of them can be changed dynamically at runtime using the SET statement, which enables you to modify operation of the server without having to stop and restart it. You can also use system variable values in expressions.

?

?

系統變量(system variables)按作用域范圍可以分為會話級別系統變量和全局級別系統變量。如果要確認系統變量是全局級別還是會話級別,可以參考官方文檔,如果Scope其值為GLOBAL或SESSION,表示變量既是全局級別系統變量,又是會話級別系統變量。如果其Scope其值為GLOBAL,表示系統變量為全局級別系統變量。

?

--查看系統變量的全局值

?

select * from information_schema.global_variables;

select * from information_schema.global_variables

? where variable_name='xxxx';

select * from performance_schema.global_variables;

?

?

--查看系統變量的當前會話值

?

select * from information_schema.session_variables;

??? select * from information_schema.session_variables

? where variable_name='xxxx';

select * from performance_schema.session_variables;

?

?

?

?

SELECT @@global.sql_mode, @@session.sql_mode, @@sql_mode;

?

mysql> show variables like '%connect_timeout%';?

mysql> show local variables like '%connect_timeout%';

mysql> show session variables like '%connect_timeout%';

mysql> show global variables like '%connect_timeout%';

?

注意:對于SHOW VARIABLES,如果不指定GLOBAL、SESSION或者LOCAL,MySQL返回SESSION值,如果要區分系統變量是全局還是會話級別。不能使用下面方式,如果某一個系統變量是全局級別的,那么在當前會話的值也是全局級別的值。例如系統變量AUTOMATIC_SP_PRIVILEGES,它是一個全局級別系統變量,但是 show session variables like '%automatic_sp_privileges%'一樣能查到其值。所以這種方式無法區別系統變量是會話級別還是全局級別。

?

mysql> show session variables like?'%automatic_sp_privileges%';
+-------------------------+-------+
| Variable_name?????????? | Value |
+-------------------------+-------+
| automatic_sp_privileges | ON??? |
+-------------------------+-------+
1 row?in?set (0.00 sec)
?
mysql> select * from information_schema.global_variables
??? -> where variable_name='automatic_sp_privileges';
+-------------------------+----------------+
| VARIABLE_NAME?????????? | VARIABLE_VALUE |
+-------------------------+----------------+
| AUTOMATIC_SP_PRIVILEGES | ON???????????? |
+-------------------------+----------------+
1 row?in?set, 1 warning (0.00 sec)
?
mysql> 

?

?

如果要區分系統變量是全局還是會話級別,可以用下面方式:

?

方法1: 查官方文檔中系統變量的Scope屬性。

方法2: 使用SET VARIABLE_NAME=xxx; 如果報ERROR 1229 (HY000),則表示該變量為全局,如果不報錯,那么證明該系統變量為全局和會話兩個級別。

???

?

mysql> SET AUTOMATIC_SP_PRIVILEGES=OFF;
?
ERROR 1229 (HY000): Variable?'automatic_sp_privileges'?is a GLOBAL?variable?and should be set?with?SET?GLOBAL

?

?

?

可以使用SET命令修改系統變量的值,如下所示:

?

修改全局級別系統變量:

?

SET?GLOBAL max_connections=300;
?
SET @@global.max_connections=300;

?

注意:更改全局變量的值,需要擁有SUPER權限

?

修改會話級別系統變量:

?

?? SET @@session.max_join_size=DEFAULT;

? SET max_join_size=DEFAULT;? --默認為會話變量。如果在變量名前沒有級別限定符,表示修改會話級變量。

?? SET SESSION max_join_size=DEFAULT;

?

如果修改系統全局變量沒有指定GLOBAL或@@global的話,就會報Variable 'xxx' is a GLOBAL variable and should be set with SET GLOBAL這類錯誤。

?

mysql> set max_connections=300;
ERROR 1229 (HY000): Variable?'max_connections'?is a GLOBAL?variable?and should be set?with?SET?GLOBAL
mysql> set?global max_connections=300;
Query OK, 0 rows affected (0.00 sec)
?
mysql> 

?

?

?

系統變量(system variables)按是否可以動態修改,可以分為系統動態變量(Dynamic System Variables)和系統靜態變量。怎么區分系統變量是動態和靜態的呢? 這個只能查看官方文檔,系統變量的"Dynamic"屬性為Yes,則表示可以動態修改。Dynamic Variable具體可以參考https://dev.mysql.com/doc/refman/5.7/en/dynamic-system-variables.html

?

另外,有些系統變量是只讀的,不能修改的。如下所示:

?

mysql>

mysql> set global innodb_version='5.6.21';

ERROR 1238 (HY000): Variable 'innodb_version' is a read only variable

mysql>

?

?

另外,還有一個Structured System Variables概念,其實就是系統變量是一個結構體(Strut),官方介紹如下所示:

?

Structured System Variables

?

A structured variable differs from a regular system variable in two respects:

?

Its value is a structure with components that specify server parameters considered to be closely related.

?

There might be several instances of a given type of structured variable. Each one has a different name and refers to a different resource maintained by the server.

?

?

?

?

Server Status Variables(服務器狀態變量)

?

?

MySQL狀態變量(Server Status Variables)是當前服務器從啟動后累計的一些系統狀態信息,例如最大連接數,累計的中斷連接等等,主要用于評估當前系統資源的使用情況以進一步分析系統性能而做出相應的調整決策。這個估計有人會跟系統變量混淆,其實狀態變量是動態變化的,另外,狀態變量是只讀的:只能由MySQL服務器本身設置和修改,對于用戶來說是只讀的,不可以通過SET語句設置和修改它們,而系統變量則可以隨時修改。狀態變量也分為會話級與全局級別狀態信息。有些狀態變量可以用FLUSH STATUS語句重置為零值。

?

關于查看狀態變量,show status也支持like匹配查詢。如下所示:

?

show status like '%variable_name%'

show global status like '%variable_name%'

?

??

#當前測試環境
ysql> select version() from dual;
-----------+
 version() |
-----------+
 5.7.21??? |
-----------+
?row?in?set (0.00 sec)
?? 
mysql> show status;? --查看所有的狀態變量
?
?
?
ysql> show global status like?'Aborted_connects%';
------------------+-------+
 Variable_name??? | Value |
------------------+-------+
 Aborted_connects | 2???? |
------------------+-------+
?row?in?set (0.01 sec)
?
ysql> show session status like?'Aborted_connects%';
------------------+-------+
 Variable_name??? | Value |
------------------+-------+
 Aborted_connects | 2???? |
------------------+-------+
?row?in?set (0.00 sec)
?
ysql> select * from information_schema.global_status;
RROR 3167 (HY000): The 'INFORMATION_SCHEMA.GLOBAL_STATUS' feature is disabled; see the documentation for?'show_compatibility_56'
ysql> #
ysql> show variables like?'%show_compatibility_56%';
-----------------------+-------+
 Variable_name???????? | Value |
-----------------------+-------+
 show_compatibility_56 | OFF?? |
-----------------------+-------+
?row?in?set (0.00 sec)
?
ysql> set?global show_compatibility_56=on;
uery OK, 0 rows affected (0.00 sec)
?
ysql> select * from information_schema.global_status;
-----------------------------------------------+---------------------------------------+
 VARIABLE_NAME????????????????????????????????? VARIABLE_VALUE???????????????????????? |
-----------------------------------------------+---------------------------------------+
 ABORTED_CLIENTS?????????????????????????????? | 138097??????????????????????????????? |
 ABORTED_CONNECTS????????????????????????????? | 5???????????????????????????????????? |
 BINLOG_CACHE_DISK_USE???????????????????????? | 0???????????????????????????????????? |
 BINLOG_CACHE_USE????????????????????????????? | 0???????????????????????????????????? |
....................................................................................
?
?
?
select * from performance_schema.global_status;
select * from performance_schema.session_status;

?

?

注意:MySQL 5.7以后系統變量和狀態變量需要從performance_schema中進行獲取,information_schema仍然保留了GLOBAL_STATUS,GLOBAL_VARIABLES兩個表做兼容,如果希望沿用information_schema中進行查詢的習慣,5.7提供了show_compatibility_56參數,設置為ON可以兼容5.7之前的用法,否則就會報錯(ERROR 3167 (HY000)).

?

?

?

?

User-Defined Variables(用戶自定義變量)

?

?

用戶自定義變量,顧名思義就是用戶自己定義的變量。用戶自定義變量是基于當前會話的。 也就是說用戶自定義變量的作用域局限于當前會話(連接),由一個客戶端定義的用戶自定義變量不能被其他客戶端看到或使用。(例外:可以訪問performance_schema.user_variables_by_thread表的用戶可以看到所有會話的定義的用戶自定義變量,當然僅僅能看到那些會話定義了哪些變量,而不能訪問這些變量。)。當客戶端會話退出時,當前會話所有的自定義變量都會自動釋放。

一般可以在SQL語句將值存儲在用戶自定義變量中,然后再利用另一條SQL語句來查詢用戶自定義變量。這樣以來,可以在不同的SQL間傳遞值。

?

另外,用戶自定義變量是大小寫不敏感的,最大長度為64個字符,用戶自定義變量的形式一般為@var_name,其中變量名稱由字母、數字、._$組成。當然,在以字符串或者標識符引用時也可以包含其他特殊字符(例如:@'my-var',@"my-var",或者@`my-var`)。。使用SET設置變量時,可以使用=或者:=操作符進行賦值。對于SET,可以使用=或:=來賦值,對于SELECT只能使用:=來賦值。如下所示:

?

???

mysql> set @$test1="test";
Query OK, 0 rows affected (0.00 sec)
mysql> select @$test1 from dual;
+---------+
| @$test1 |
+---------+
| test??? |
+---------+
1 row?in?set (0.00 sec)
?
mysql> 
mysql> set @"ac#k":='kerry';
Query OK, 0 rows affected (0.00 sec)
?
mysql> select @"ac#k" from dual;
+---------+
| @"ac#k" |
+---------+
| kerry?? |
+---------+
1 row?in?set (0.00 sec)
?
mysql> 
?
?
mysql> select version() from dual;
+-----------+
| version() |
+-----------+
| 5.7.21??? |
+-----------+
1 row?in?set (0.00 sec)
?
mysql> 
mysql> set @my_test=1200;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select @my_test;
+----------+
| @my_test |
+----------+
|???? 1200 |
+----------+
1 row?in?set (0.00 sec)
?
mysql> select connection_id() from dual;
+-----------------+
| connection_id() |
+-----------------+
|????????? 149379 |
+-----------------+
1 row?in?set (0.00 sec)
?
mysql> SELECT c.id, 
??? ->??????? b.thread_id
??? -> FROM?? performance_schema.threads b 
??? ->???? join information_schema.processlist c 
??? ->????????? ON b.processlist_id = c.id 
??? -> where c.id=149379;
+--------+-----------+
| id???? | thread_id |
+--------+-----------+
| 149379 |??? 149404 |
+--------+-----------+
1 row?in?set (0.00 sec)
?
mysql> select @My_Test, @my_TEST from dual;
+----------+----------+
| @My_Test | @my_TEST |
+----------+----------+
|???? 1200 |???? 1200 |
+----------+----------+
1 row?in?set (0.00 sec)
?
mysql> 

?

?

?clip_image002

?

?

mysql> select connection_id() from dual;
+-----------------+
| connection_id() |
+-----------------+
|????????? 151821 |
+-----------------+
1 row?in?set (0.00 sec)
?
mysql> select @my_test from dual;
+----------+
| @my_test |
+----------+
| NULL???? |
+----------+
1 row?in?set (0.00 sec)
?
mysql> select * from performance_schema.user_variables_by_thread;
+-----------+---------------+----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+---------------+----------------+
|??? 149404 | my_test?????? | 1200?????????? |
+-----------+---------------+----------------+
1 row?in?set (0.00 sec)
?
mysql> 

?

?

clip_image003

?

?

?

用戶自定義變量注意事項,以下為總結:

?

1:未定義的用戶自定義變量初始值是NULL

?

mysql> select @kerry from dual;
?
+--------+
?
| @kerry |
?
+--------+
?
| NULL?? |
?
+--------+
?
1 row?in?set (0.00 sec)

?

注意:使用未定義變量不會產生任何語法錯誤,由于其被初始化為NULL值,如果沒有意識到這一點,非常容易犯錯。如下所示:

?

mysql> select @num1, @num2 :=@num1+1 from dual;
+-------+-----------------+
| @num1 | @num2 :=@num1+1 |
+-------+-----------------+
| NULL? |??????????? NULL |
+-------+-----------------+
1 row?in?set (0.00 sec)
?
mysql>

?

?

?

2:用戶變量名對大小寫不敏感(上面已經敘述,此處從略)

?

3:自定義變量的類型是一個動態類型。

?

MySQL中用戶自定義變量,不嚴格限制數據類型的,它的數據類型根據你賦給它的值而隨時變化。而且自定義變量如果賦予數字值,是不能保證進度的。官方文檔介紹:

?

User variables can be assigned a value from a limited set of data types: integer, decimal, floating-point, binary or nonbinary string, or NULL value. Assignment of decimal and real values does not preserve the precision or scale of the value. A value of a type other than one of the permissible types is converted to a permissible type. For example, a value having a temporal or spatial data type is converted to a binary string. A value having the JSON data type is converted to a string with a character set of utf8mb4 and a collation of utf8mb4_bin.

?

?

?

4:賦值的順序和賦值的時間點并不總是固定的,這依賴于優化器的決定。

?

?

使用用戶自定義變量的一個最常見的問題就是沒有注意到在賦值和讀取用戶自定義變量的時候可能是在查詢的不同階段。例如,在SELECT語句中進行賦值然后再WHERE子句中讀取用戶自定義變量,則可能用戶自定義變量取值并不不是你所想象的那樣,如下例子所示,因為按照MySQL語句的執行順序,WHERE部分優先與SELECT部分操作,所以你會看到msgid 和 @rownum的最大值為6.

?

mysql> select msgid from message order?by msgid limit 12;
+-------+
| msgid |
+-------+
|???? 1 |
|???? 2 |
|???? 3 |
|???? 4 |
|???? 5 |
|???? 6 |
|???? 7 |
|??? 11 |
|??? 12 |
|??? 13 |
|??? 18 |
|??? 19 |
+-------+
12 rows?in?set (0.00 sec)
?
mysql> set @rownum := 0;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select msgid , @rownum := @rownum +1 as rownum
??? -> from message
??? -> where @rownum <=5;
+-------+--------+
| msgid | rownum |
+-------+--------+
|???? 1 |????? 1 |
|???? 2 |????? 2 |
|???? 3 |????? 3 |
|???? 4 |????? 4 |
|???? 5 |????? 5 |
|???? 6 |????? 6 |
+-------+--------+
6 rows?in?set (0.00 sec)
?
mysql> select msgid , @rownum := @rownum +1 as rownum
??? -> from message
??? -> where @rownum <=5;
Empty set (0.00 sec)
?
mysql> select @rownum from dual;
+---------+
| @rownum |
+---------+
|?????? 6 |
+---------+
1 row?in?set (0.00 sec)
?
mysql> 

?

clip_image004

?

如上所示,第二次查詢可能你想要的邏輯跟實際邏輯已經出現了偏差,這個是使用自定義變量需要小心的地方。因為用戶自定義變量在當前會話中也算一個全局變量,它已經變成了6,where條件后面的 @rownum <= 5 邏輯為false了。一不小小心就會出現和你預想的結果出現偏差。

?

?

不要在同一個非SET語句中同時賦值并使用同一個用戶自定義變量,因為WHERE和SELECT是在查詢執行的不同階段被執行的。如果在查詢中再加入ORDER BY的話,結果可能會更不同;

?

mysql> set @rownum :=0;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select msgid , @rownum := @rownum +1 as rownum
??? -> from message
??? -> where @rownum <=5;
+-------+--------+
| msgid | rownum |
+-------+--------+
|???? 1 |????? 1 |
|???? 2 |????? 2 |
|???? 3 |????? 3 |
|???? 4 |????? 4 |
|???? 5 |????? 5 |
|???? 6 |????? 6 |
+-------+--------+
6 rows?in?set (0.00 sec)
?
mysql> 
?
?
?
mysql> set @rownum := 0;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select msgid, @rownum := @rownum +1 as rownum
??? -> from message
??? -> where @rownum <=5
??? -> order?by msgcontent;
+-------+--------+
| msgid | rownum |
+-------+--------+
|??? 20 |????? 1 |
|??? 28 |????? 2 |
|??? 43 |????? 3 |
|??? 47 |????? 4 |
..................
..................
|??? 22 |???? 57 |
|??? 69 |???? 58 |
|??? 40 |???? 59 |
|??? 52 |???? 60 |
|??? 24 |???? 61 |
|??? 66 |???? 62 |
|??? 51 |???? 63 |
+-------+--------+
63 rows?in?set (0.00 sec)
?
mysql> 

?

clip_image005

?

?

如果按msgid排序,那么又是正常的,那三者有啥區別呢?

?

mysql> set @rownum :=0;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select msgid, @rownum := @rownum +1 as rownum
??? -> from message
??? -> where @rownum <=5
??? -> order?by msgid;
+-------+--------+
| msgid | rownum |
+-------+--------+
|???? 1 |????? 1 |
|???? 2 |????? 2 |
|???? 3 |????? 3 |
|???? 4 |????? 4 |
|???? 5 |????? 5 |
|???? 6 |????? 6 |
+-------+--------+
6 rows?in?set (0.00 sec)
?
mysql> 

?

我們先看執行計劃

?

image

?

官方的解釋如下:

?

In a SELECT statement, each select expression is evaluated only when sent to the client. This means that in a HAVING, GROUP BY, or ORDER BY clause, referring to a variable that is assigned a value in the select expression list does not work as expected

?

在SELECT語句中,每個選擇表達式僅在發送給客戶端時才被計算。 這意味著在HAVING,GROUP BY或ORDER BY子句中,引用在選擇表達式列表中指定值的用戶自定義變量不能按預期工作。 也就是說用戶自定義變量的值是在結果集發送到客戶端后才計算的

?

測試官方的例子:

?

clip_image006

?

?

clip_image007

?

?

這種解釋算是比較權威的,但是,讓人有點不解的是,SQL執行順序中WHERE在SELECT操作之前, 但是第一個SQL語句又怎么解釋呢?有種解釋是MySQL優化器在某些場景下可能會將這些變量優化掉,這可能導致代碼不按預想的方式運行。 解決這個問題的辦法是讓變量的賦值和取值發生在執行查詢的同一階段,如下所示:

?

clip_image008

?

?

?

?

關于用戶自定義變量,如果運用的好,能夠寫出高效簡潔的SQL語句,如果運用不當,也可能把自己給坑了。這個完全取決于使用它的人。

?

官方文檔也有介紹用戶自定義變量不適合使用場景。摘抄部分如下:

?

User variables may be used in most contexts where expressions are permitted. This does not currently include contexts that explicitly require a literal value, such as in the LIMIT clause of a SELECT statement, or the IGNORE N LINES clause of a LOAD DATA statement.

?

User variables are intended to provide data values. They cannot be used directly in an SQL statement as an identifier or as part of an identifier, such as in contexts where a table or database name is expected, or as a reserved word such as SELECT.

?

?

?

局部變量

?

?

?

局部變量:作用范圍在begin到end語句塊之間。在該語句塊里設置的變量。declare語句專門用于定義聲明局部變量。

?

?

局部變量與用戶自定義變量的區分在于下面這些方面:

?

1.用戶自定義變量是以"@"開頭的。局部變量沒有這個符號。

?

2.定義變量方式不同。用戶自定義變量使用set語句,局部變量使用declare語句定義

?

3.作用范圍不同。局部變量只在begin-end語句塊之間有效。在begin-end語句塊運行完之后,局部變量就消失了。而用戶自定義變量是對當前連接(會話)有效。

?

?

?

?

?

?

?

參考資料:

?

https://dev.mysql.com/doc/refman/5.7/en/user-variables.html

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

https://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html

https://dev.mysql.com/doc/refman/5.7/en/structured-system-variables.html

https://dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html

https://www.jianshu.com/p/357a02fb2d64

轉載于:https://www.cnblogs.com/kerrycode/p/9021378.html

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

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

相關文章

859. 親密字符串

859. 親密字符串 給你兩個字符串 s 和 goal &#xff0c;只要我們可以通過交換 s 中的兩個字母得到與 goal 相等的結果&#xff0c;就返回 true &#xff1b;否則返回 false 。 交換字母的定義是&#xff1a;取兩個下標 i 和 j &#xff08;下標從 0 開始&#xff09;且滿足 …

python函數不同類型參數順序

python函數的參數定義順序必須為&#xff1a; 必須參數&#xff08;位置參數&#xff09;&#xff0c;默認參數&#xff0c;可變參數&#xff0c;命名關鍵字參數&#xff0c;關鍵字參數 如以下定義&#xff1a; def f1(a, b, c0, *args, d, **kw): print(a , a, b , b, c , c, …

亞洲國家互聯網滲透率_發展中亞洲國家如何回應covid 19

亞洲國家互聯網滲透率The COVID-19 pandemic has severely hit various economies across the world, with global impact estimated between USD 6.1 trillion and USD 9.1 trillion, equivalent to a loss of 7.1% to 10.5% of global gross domestic product (GDP).[1] More…

create-react-app項目使用假數據

做新項目的時候&#xff0c;前端每次要等后端接口準備好再開始&#xff0c;就會延期&#xff0c;等后端接口準備好了&#xff0c;前端這邊的項目又會相互緊張&#xff0c;如果前端跟后端同時進行&#xff0c;前期將框架&#xff0c;基礎做好&#xff0c;定好接口文檔&#xff0…

1854. 人口最多的年份

1854. 人口最多的年份 給你一個二維整數數組 logs &#xff0c;其中每個 logs[i] [birthi, deathi] 表示第 i 個人的出生和死亡年份。 年份 x 的 人口 定義為這一年期間活著的人的數目。第 i 個人被計入年份 x 的人口需要滿足&#xff1a;x 在閉區間 [birthi, deathi - 1] 內…

snake4444勒索病毒成功處理教程方法工具達康解密金蝶/用友數據庫sql后綴snake4444...

*snake4444勒索病毒成功處理教程方法 案例&#xff1a;筆者負責一個政務系統的第三方公司的運維&#xff0c;上班后發現服務器的所有文件都打不開了&#xff0c;而且每個文件后面都有一個snake4444的后綴&#xff0c;通過網絡我了解到這是一種勒索病毒。因為各個文件不能正常打…

有史以來最漂亮的游戲機

The recent reveal of the PlayStation 5’s design has divided the gaming world. There are those who appreciate its bold, daring industrial design and those who would have preferred something a little less outlandish; perhaps a little more traditional.噸 他最…

springboot-添加攔截器

在我們日常開發的過程中&#xff0c;經常會遇到這一類問題&#xff0c;要求需要用戶登錄以后才能夠訪問其他的內容&#xff0c;否則不行&#xff0c;那么解決這一問題最好的辦法就是運用攔截器&#xff0c;攔截器可以和多種處理請求的web框架結合&#xff0c;今天所講的就是與s…

1945. 字符串轉化后的各位數字之和

1945. 字符串轉化后的各位數字之和 給你一個由小寫字母組成的字符串 s &#xff0c;以及一個整數 k 。 首先&#xff0c;用字母在字母表中的位置替換該字母&#xff0c;將 s 轉化 為一個整數&#xff08;也就是&#xff0c;‘a’ 用 1 替換&#xff0c;‘b’ 用 2 替換&#…

墨刀原型制作 位置選擇_原型制作不再是可選的

墨刀原型制作 位置選擇The ‘role’ of a designer has been a topic of discussion several many years now. In the past decade, the role of a Designer got split into several different roles like — Graphic Designer, User Experience Designer, Interaction Designe…

eclipse maven 構建簡單springmvc項目

環境&#xff1a;eclipse Version: Oxygen.3a Release (4.7.3a) 創建maven Project項目&#xff0c;目錄結構 修改工程的相關編譯屬性 修改pop.xml&#xff0c;引入springmvc相關包 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.…

1859. 將句子排序

1859. 將句子排序 一個 句子 指的是一個序列的單詞用單個空格連接起來&#xff0c;且開頭和結尾沒有任何空格。每個單詞都只包含小寫或大寫英文字母。 我們可以給一個句子添加 從 1 開始的單詞位置索引 &#xff0c;并且將句子中所有單詞 打亂順序 。 比方說&#xff0c;句子…

醫動力Android基于CC組件化框架的探索與實踐

為什么要組件化? 醫動力App作為公司的核心產品已經有多年歷史了,隨著版本的不斷迭代,功能越來越多,代碼量越來越大,不可避免的會產生一下問題: 業務越來越復雜&#xff0c;維護成本高;業務耦合度高&#xff0c;代碼越來越臃腫&#xff0c;團隊內部多人協作開發困難;編譯時間長…

使用協同過濾推薦電影

ALSO, ARE RECOMMENDER SYSTEMS INFLUENCING OUR TASTE??此外&#xff0c;推薦系統是否影響我們的口味&#xff1f; An excerpt on creating a movie recommender system similar to the OTT platforms.有關創建類似于OTT平臺的電影推薦系統的摘錄。 INTRODUCTION介紹 For…

423. 從英文中重建數字

423. 從英文中重建數字 給你一個字符串 s &#xff0c;其中包含字母順序打亂的用英文單詞表示的若干數字&#xff08;0-9&#xff09;。按 升序 返回原始的數字。 例 1&#xff1a;輸入&#xff1a;s "owoztneoer" 輸出&#xff1a;"012"示例 2&#xf…

錦欣生殖獲戰略投資,華平、信銀領投,紅杉、藥明康德跟投

9月16日消息&#xff0c;錦欣生殖近日宣布已完成新一輪的戰略投資&#xff0c;本輪融資由原戰略股東華平投資及新引入的中信銀行旗下信銀投資領投&#xff0c;紅杉資本中國基金、藥明康德等跟投。完成本輪融資后&#xff0c;華平投資及信銀投資分別成為錦欣生殖的第二及第三大股…

數據暑假實習面試_面試數據科學實習如何準備

數據暑假實習面試Unfortunately, on this occasion, your application was not successful, and we have appointed an applicant who…不幸的是&#xff0c;這一次&#xff0c;您的申請沒有成功&#xff0c;我們已經任命了一位符合以下條件的申請人&#xff1a; Sounds famili…

兩道簡單的入門題

1&#xff09;  for循環求100以內奇數和 1 #include<stdio.h> 2 int main(){ 3 int ans0;//定義一個答案變量存儲答案 4 for(int i1;i<100;i)//用for從1循環到100&#xff0c;如果i%2&#xff01;0&#xff08;%是一種取余運算&#xff09; 5 if(…

1716. 計算力扣銀行的錢

1716. 計算力扣銀行的錢 Hercy 想要為購買第一輛車存錢。他 每天 都往力扣銀行里存錢。 最開始&#xff0c;他在周一的時候存入 1 塊錢。從周二到周日&#xff0c;他每天都比前一天多存入 1 塊錢。在接下來每一個周一&#xff0c;他都會比 前一個周一 多存入 1 塊錢。 給你 …

谷歌 colab_如何在Google Colab上使用熊貓分析

谷歌 colabRecently, pandas have come up with an amazing open-source library called pandas-profiling. Generally, EDA starts by df.describe(), df.info() and etc which to be done separately. Pandas_profiling extends the general data frame report using a singl…