C-04.運算符(基礎)

来源:https://www.cnblogs.com/changming06/archive/2023/12/07/17884228.html
-Advertisement-
Play Games

運算符 1.算術運算符 算術運算符主要用於數學運算,其可以連接運算符前後的兩個數值或表達式,對數值或表達式進行 +,-,*,/,%運算。 1.1 加法和減法運算符 mysql> SELECT 100,100 + 0,100 - 0,100 + 50,100 + 50 - 30,100 + 35.5, ...


運算符

1.算術運算符

算術運算符主要用於數學運算,其可以連接運算符前後的兩個數值或表達式,對數值或表達式進行 +,-,*,/,%運算。

1.1 加法和減法運算符

mysql> SELECT 100,100 + 0,100 - 0,100 + 50,100 + 50 - 30,100 + 35.5,100 - 35.5
    -> FROM dual;
+-----+---------+---------+----------+---------------+------------+------------+
| 100 | 100 + 0 | 100 - 0 | 100 + 50 | 100 + 50 - 30 | 100 + 35.5 | 100 - 35.5 |
+-----+---------+---------+----------+---------------+------------+------------+
| 100 |     100 |     100 |      150 |           120 |      135.5 |       64.5 |
+-----+---------+---------+----------+---------------+------------+------------+
1 row in set (0.00 sec)

由運算結果可以得到以下結論

  • 一個整數類型的值對整數進行加法和減法操作,結果還是一個整數。
  • 一個整數類型的值對浮點數進行加法和減法操作,結果是一個浮點數。
  • 加法和減法的優先順序相同,進行先加後減操作和先減後增操作結果一致。
  • 在Java中,+的左右如果有字元串,那麼表示字元串的拼接。但是在MySQL中+只表示數值相加。如果遇到非數值類型,先嘗試轉成數值,如果失敗,就按0計算。(MySQL中字元串拼接,需要使用到字元串函數CONCAT()實現)。

1.2 乘法和除法運算符

mysql> SELECT 100,100 * 1,100 * 1.0, 100/1.0,100 / 2,100 + 2 * 5 / 2, 100 / 3,100 DIV 0
    -> FROM dual;
+-----+---------+-----------+----------+---------+-----------------+---------+-----------+
| 100 | 100 * 1 | 100 * 1.0 | 100/1.0  | 100 / 2 | 100 + 2 * 5 / 2 | 100 / 3 | 100 DIV 0 |
+-----+---------+-----------+----------+---------+-----------------+---------+-----------+
| 100 |     100 |     100.0 | 100.0000 | 50.0000 |        105.0000 | 33.3333 |      NULL |
+-----+---------+-----------+----------+---------+-----------------+---------+-----------+
1 row in set (0.00 sec)
#計算員工的年基本工資
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees;

由運算結果可以得到如下結論

  • 一個數乘以整數1和除以整數1後仍得原數;
  • 一個乘以浮點數1和除以浮點數1後變成浮點數,數值與原數相等;
  • 一個數除以整數後,不管是否能除盡,結果都為一個浮點數;
  • 一個數除以另一個數,除不盡時,結果為一個浮點數,並保留到小數點後4位
  • 乘法和除法的優先順序相同,進行先乘後除的操作和先除後乘操作,得到的結果相同;
  • 在數學運算中,0不能用作除數,在MySQL中,一個數除以0得到NULL;

1.3 求模(求餘)運算符

mysql> SELECT 12 % 3,12 MOD 5 FROM dual;
+--------+----------+
| 12 % 3 | 12 MOD 5 |
+--------+----------+
|      0 |        2 |
+--------+----------+
1 row in set (0.00 sec)
#篩選除employee_id是偶數的員工
SELECT * FROM employees
FROM employee_id MOD 2 = 0;

註意,a % b的公式是 a % b = a - (a / b) * b。用於負數的餘數計算。

2.比較運算符

比較運算符用來對錶達式左邊的操作數和右邊的操作數進行比較,比較的結果為真則返回1,結果為假則返回0,其他情況則返回NULL。
比較運算符經常被用來作為SELECT查詢語句的條件來使用,返回符合條件的結果記錄。

2.1等號運算符(=)

  • (=)判斷等號兩邊的值,字元串或表達式是否相等,如果相等則返回1,不相等則返回0。
  • 在使用等號運算符時,遵循以下規則:
    • 如果等號兩邊都為字元串,則MySQL會按照字元串進行比較,其比較的是每個字元串中字元的ANSI編碼是否相等。
    • 如果等號兩邊都為整數,則MySQL會按照整數來比較兩個值的大小。
    • 如果等號兩邊的值一個是整數,另一個是字元串,則MySQL會將字元串轉化為數字進行比較。
    • 如果等號兩邊的值,字元串或表達式中有一個為NULL,則比較結果為NULL。
  • 對比,SQL中賦值符號為:=。
mysql> SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL,NULL = NULL;
+-------+---------+-------+-----------+-------------------+-----------+-------------+
| 1 = 1 | 1 = '1' | 1 = 0 | 'a' = 'a' | (5 + 3) = (2 + 6) | '' = NULL | NULL = NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
|     1 |       1 |     0 |         1 |                 1 |      NULL |        NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
1 row in set (0.00 sec)
mysql> SELECT 1 = 2, 1 = 'abc', 0 = 'abc', 3 = 'abc';
+-------+-----------+-----------+-----------+
| 1 = 2 | 1 = 'abc' | 0 = 'abc' | 3 = 'abc' |
+-------+-----------+-----------+-----------+
|     0 |         0 |         1 |         0 |
+-------+-----------+-----------+-----------+
1 row in set, 3 warnings (0.00 sec)
#從結果可以看出當=左右兩邊一個是數字一個字元串則,會嘗試將字元串轉成數字,轉換失敗就賦值為0

MySQL中 驗證是否相等是一個'=',Java中是 '=='。

2.2 安全等於運算符(<=>)

(<=>)與等於運算符的作用是相似的,唯一的區別是'<=>'可以用來對NULL進行判斷。在兩個操作數均為NULL時,其返回值是1,而不是NULL,當一個操作數為NULL時,其返回值是0,而不為NULL。

mysql> SELECT 1 <=> '1', 1 <=> 0,'a' <=> 'a',(5 + 3) <=> (2 + 6),'' <=> NULL,NULL <=> NULL FROM dual;
+-----------+---------+-------------+---------------------+-------------+---------------+
| 1 <=> '1' | 1 <=> 0 | 'a' <=> 'a' | (5 + 3) <=> (2 + 6) | '' <=> NULL | NULL <=> NULL |
+-----------+---------+-------------+---------------------+-------------+---------------+
|         1 |       0 |           1 |                   1 |           0 |             1 |
+-----------+---------+-------------+---------------------+-------------+---------------+
1 row in set (0.00 sec)
#查詢commission_pct等於0.40
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = 0.40;

SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> 0.40;

2.3 不等於運算符(<>和!=)

不等於運算符(<>和!=)用於判斷兩邊的數字,字元串或表達式的值是否不相等,如果不相等則返回1,相等返回0。不等於運算符不能判斷NULL值。如果兩邊的值有任意一個為NULL,或兩邊都為NULL,則結果為NULL。SQL語句示例如下:

mysql> SELECT 1 <> 1,1 != 2, 'a' != 'b',(3+4) <> (2+6),'a' != NULL,NULL <> NULL FROM dual;
+--------+--------+------------+----------------+-------------+--------------+
| 1 <> 1 | 1 != 2 | 'a' != 'b' | (3+4) <> (2+6) | 'a' != NULL | NULL <> NULL |
+--------+--------+------------+----------------+-------------+--------------+
|      0 |      1 |          1 |              1 |        NULL |         NULL |
+--------+--------+------------+----------------+-------------+--------------+
1 row in set (0.00 sec)

2.4 空運算符(IS NULL或ISNULL)

空運算符(IS NULL或ISNULL),判斷一個值是否為NULL,如果為NULL則返回1,否則返回0。SQL語句示例如下:

mysql> SELECT NULL IS NULL,ISNULL(NULL),ISNULL('c'), 1 IS NULL FROM dual;
+--------------+--------------+-------------+-----------+
| NULL IS NULL | ISNULL(NULL) | ISNULL('c') | 1 IS NULL |
+--------------+--------------+-------------+-----------+
|            1 |            1 |           0 |         0 |
+--------------+--------------+-------------+-----------+
1 row in set (0.00 sec)
#查詢commission_pct等於NULL。比較如下的四種寫法。
SELECT employee_id,commission_pct FROM employees WHERE ISNULL(commission_pct);
SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> NULL;

#該條語句錯誤 判斷一個值是否是NULL不能使用等號運算符
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = NULL;

2.5 非空運算符(IS NOT NULL)

非空運算符(IS NOT NULL) 判斷一個值是否不為NULL,如果不為NULL返回1,否則返回0。SQL語句示例如下:

mysql> SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL FROM dual;
+------------------+-----------------+---------------+
| NULL IS NOT NULL | 'a' IS NOT NULL | 1 IS NOT NULL |
+------------------+-----------------+---------------+
|                0 |               1 |             1 |
+------------------+-----------------+---------------+
1 row in set (0.00 sec)
#查詢commission_pct不等於NULL。
SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
SELECT employee_id,commission_pct FROM employees WHERE NOT commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE NOT ISNULL(commission_pct);

2.6 最小值運算符

least adj.小的 adv.最小
語法格式為:LEAST(值1,值2,....,值n)。其中,"值n"表示參數列表中有n個值。在有兩個或多個參數的情況下,返回最小值。

mysql> SELECT LEAST(1,0.0,2),LEAST('a','f','e'),LEAST(1,NULL,2) FROM dual;
+----------------+--------------------+-----------------+
| LEAST(1,0.0,2) | LEAST('a','f','e') | LEAST(1,NULL,2) |
+----------------+--------------------+-----------------+
|            0.0 | a                  |            NULL |
+----------------+--------------------+-----------------+
1 row in set (0.00 sec)

從結果得到,當參數是整數或浮點數時,LEAST返回其中最小的值,當參數為字元串時,返回字母表中順序最靠前的字元,當比較值列表有NULL時,不能判斷大小,返回值為NULL。

2.7 最大值運算符

greatest adj.大的,極大的;adv.很好地
語法格式為:GREATEST(值1,值2,...值n)。其中,n表示參數列表中有n個值。當有兩個或多個參數時,返回最大值。但如果值中有NULL,則返回NULL。

mysql> SELECT GREATEST(1,0,2),GREATEST('e','f','a'),GREATEST(1,NULL,2) FROM dual;
+-----------------+-----------------------+--------------------+
| GREATEST(1,0,2) | GREATEST('e','f','a') | GREATEST(1,NULL,2) |
+-----------------+-----------------------+--------------------+
|               2 | f                     |               NULL |
+-----------------+-----------------------+--------------------+
1 row in set (0.00 sec)

從結果得到,當參數是整數或浮點數時,GREATEST返回其中最大的值,當參數為字元串時,返回字母表中順序最靠後的字元,當比較值列表有NULL時,不能判斷大小,返回值為NULL。

2.8 BETWEEN AND運算符

BETWEEN運算符使用的格式通常為SELECT D FROM TABLE WHERE C BETWEEN A AND B,此時,當 A =< C <= B時,結果為1,否則為0;

mysql> SELECT 1 BETWEEN 0 AND 1,10 BETWEEN 11 AND 12,'b' BETWEEN 'a' AND 'c' FROM dual;
+-------------------+----------------------+-------------------------+
| 1 BETWEEN 0 AND 1 | 10 BETWEEN 11 AND 12 | 'b' BETWEEN 'a' AND 'c' |
+-------------------+----------------------+-------------------------+
|                 1 |                    0 |                       1 |
+-------------------+----------------------+-------------------------+
1 row in set (0.00 sec)
SELECT last_name,salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;

2.9 IN運算符

IN運算符用於判斷給定的值是否是IN列表中的一個值,如果是則返回1,否則返回0。如果給定的值為NULL,或者IN列表中存在NULL,則結果為NULL。

mysql> SELECT 'a' IN('a','b','c'),1 IN(2,3),NULL IN('a','b'),'a' IN ('a',NULL) FROM dual;
+---------------------+-----------+------------------+-------------------+
| 'a' IN('a','b','c') | 1 IN(2,3) | NULL IN('a','b') | 'a' IN ('a',NULL) |
+---------------------+-----------+------------------+-------------------+
|                   1 |         0 |             NULL |                 1 |
+---------------------+-----------+------------------+-------------------+
1 row in set (0.00 sec)
SELECT employee_id,last_name,salary,manager_id
FROM employees
WHERE manager_id IN(100,101,201);

2.10 NOT IN運算符

IN運算符相反值

2.11 LIKE運算符

LIKE運算符主要用來匹配字元串,常用於模糊匹配,如果滿足條件則返回1,否則返回0。如果給定的值或者匹配條件為NULL,則返回結果為NULL。
LIKE運算符通常使用如下通配符:

"%":匹配0或多個字元
"_":只能匹配一個字元
mysql> SELECT NULL LIKE 'abc','abc' LIKE NULL FROM dual;
+-----------------+-----------------+
| NULL LIKE 'abc' | 'abc' LIKE NULL |
+-----------------+-----------------+
|            NULL |            NULL |
+-----------------+-----------------+
1 row in set (0.00 sec)
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';

SELECT first_name
FROM employees
WHERE first_name LIKE '_o%';
ESCAPE
  • 匹配特殊符號的:使用轉義符。例如將[%]轉為[$%]、[]轉為[$],然後再加上[ESCAPE '$']即可。
SELECT job_id
FROM jobs
WHERE job_id LIKE "IT\_%";
  • 如果使用\表示轉義,必須省略ESCAPE。如果不是\,需要加上ESCAPE。
SELECT job_id
FROM jobs
WHERE job_id LIKE "IT$_%" ESCAPE '$';


不省略ESCAPE '\'無法執行。

2.12 REGEXP運算符

REGEXP運算符用來匹配字元串,語法格式為:expr REGEXP 匹配條件。如果expr滿足匹配條件,返回1,不滿足,返回0。
若expr或匹配條件任意一個為NULl,結果為NULL。
REGEXP運算符再匹配時,常用的通配符。

mysql> SELECT 'shkstart' REGEXP '^s','shkstart' REGEXP 't$','shkstart' REGEXP 'hk'
    -> FROM dual;
+------------------------+------------------------+------------------------+
| 'shkstart' REGEXP '^s' | 'shkstart' REGEXP 't$' | 'shkstart' REGEXP 'hk' |
+------------------------+------------------------+------------------------+
|                      1 |                      1 |                      1 |
+------------------------+------------------------+------------------------+
1 row in set (0.00 sec)

mysql> SELECT 'wind' REGEXP 'w..d','wind' REGEXP '[w]';
+----------------------+---------------------+
| 'wind' REGEXP 'w..d' | 'wind' REGEXP '[w]' |
+----------------------+---------------------+
|                    1 |                   1 |
+----------------------+---------------------+
1 row in set (0.00 sec)

3.邏輯運算符

邏輯運算符主要用來判斷表達式的真假,在MySQL中,邏輯運算符的返回結果為1,0,NULL。
MySQL中支持的4種邏輯運算符如下

3.1 邏輯非運算符(NOT,!)

邏輯運算符(NOT或!),表示當給定的值為0時返回1,給定的值為非0值時返回0,給定的值為NULL時,返回NULL。

mysql> SELECT NOT 1,NOT 0,NOT (1 + 1),NOT !1,NOT NULL;
+-------+-------+-------------+--------+----------+
| NOT 1 | NOT 0 | NOT (1 + 1) | NOT !1 | NOT NULL |
+-------+-------+-------------+--------+----------+
|     0 |     1 |           0 |      1 |     NULL |
+-------+-------+-------------+--------+----------+
1 row in set, 1 warning (0.00 sec)
SELECT last_name,job_id
FROM employees
WHERE job_id NOT IN('IT_PROG','ST_CLERK');

3.2 邏輯與運算符(AND,&&)

邏輯與(AND或&&)運算符是當給定的所有值均為非0值,並且都不為NULL時,返回1;給定的一個值或者多個值為0則返回0,否則返回NULL。SQL Server中只支持AND,不能用&&。

mysql> SELECT 1 AND -1,0 AND 1,0 AND NULL,1 AND NULL FROM dual;
+----------+---------+------------+------------+
| 1 AND -1 | 0 AND 1 | 0 AND NULL | 1 AND NULL |
+----------+---------+------------+------------+
|        1 |       0 |          0 |       NULL |
+----------+---------+------------+------------+
1 row in set (0.00 sec)
mysql> SELECT employee_id,last_name,job_id,salary
    -> FROM employees
    -> WHERE salary >= 10000
    -> AND job_id LIKE '%MAN%';

3.3 邏輯或運算符(OR,||)

邏輯或(OR或||)運算符是當給定的值都不為NULL,並且任何一個值為非0值時,則返回1,否則返回0,當一個值為NULL,並且另一個值為非0值時,返回1,否則返回NULL,當兩個值都為NULL時,返回NULL。SQL Server中只支持OR,不能用||

mysql> SELECT 1 OR -1,1 OR 0,1 OR NULL, 0 || NULL,NULL || NULL FROM dual;
+---------+--------+-----------+-----------+--------------+
| 1 OR -1 | 1 OR 0 | 1 OR NULL | 0 || NULL | NULL || NULL |
+---------+--------+-----------+-----------+--------------+
|       1 |      1 |         1 |      NULL |         NULL |
+---------+--------+-----------+-----------+--------------+
1 row in set, 2 warnings (0.00 sec)
#查詢基本薪資不在9000 - 12000之間的
mysql> SELECT employee_id,salary FROM employees
    -> WHERE NOT(salary >= 9000 AND salary <= 12000);

註意,OR可以和AND一起使用,但是在使用時要註意兩者的優先順序,由於AND的優先順序高於OR,因此先對AND的操作數進行操作,再與OR的操作數計算。

3.4 邏輯異或運算符(XOR)

邏輯異或(XOR)運算符是當給定的值中任意一個值為NULL時,則返回NULL;如果兩個非NULL的值都是0或者都不等於0時,返回0;如果一個值為0,另一個值不為0時,則返回1;

mysql> SELECT 1 XOR -1,1 XOR 0,0 XOR 0,1 XOR NULL,1 XOR 1 XOR 1,0 XOR 0 XOR 0 FROM dual;
+----------+---------+---------+------------+---------------+---------------+
| 1 XOR -1 | 1 XOR 0 | 0 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 | 0 XOR 0 XOR 0 |
+----------+---------+---------+------------+---------------+---------------+
|        0 |       1 |       0 |       NULL |             1 |             0 |
+----------+---------+---------+------------+---------------+---------------+
1 row in set (0.00 sec)

4.位運算符

位運算是在二進位數上進行計算的運算符。位運算符會先將操作數轉成二進位數,然後進行位運算,最後再將結果從二進位轉會十進位數。
MySQL支持的位運算符如下:

4.1 按位與運算符(&)

按位與(&)運算符將給定對應的二進位數逐位進行邏輯與運算。當給定的對應的二進位位的數值都為1時,則該位返回1,否則返回0。

mysql> SELECT 1 & 10,20 & 30 FROM dual;
+--------+---------+
| 1 & 10 | 20 & 30 |
+--------+---------+
|      0 |     20  |
+--------+---------+
1 row in set (0.00 sec)

假定是int類型32位 前24位是0,只寫後8位。1的二進位數,00000001,10的二進位數,00001010,20的二進位數,00010100,30的二進位數,00011110。所以 1 & 10的結果是00000000,十進位結果為0,20 & 30的結果是00010100,十進位結果是20。

4.2 按位或運算符(|)

按位與(|)運算符將給定對應的二進位數逐位進行邏輯或運算。當給定的對應的二進位位的數值有一個或都為1時,則該位返回1,否則返回0。

mysql> SELECT 1 | 10,20 | 30;
+--------+---------+
| 1 | 10 | 20 | 30 |
+--------+---------+
|     11 |      30 |
+--------+---------+
1 row in set (0.00 sec)

假定是int類型32位 前24位是0,只寫後8位。1的二進位數,00000001,10的二進位數,00001010,20的二進位數,00010100,30的二進位數,00011110。所以 1 | 10的結果是00001011,十進位結果為11,20 | 30的結果是00011110,十進位結果是30。

4.3 按位異或運算符(^)

按位異或(^)運算符將給定對應的二進位數逐位進行邏輯異或運算。當給定的對應的二進位位的數值不同時,則該位返回1,否則返回0。

mysql> SELECT 1 ^ 10,20 ^ 30 FROM dual;
+--------+---------+
| 1 ^ 10 | 20 ^ 30 |
+--------+---------+
|     11 |      10 |
+--------+---------+
1 row in set (0.00 sec)

假定是int類型32位 前24位是0,只寫後8位。1的二進位數,00000001,10的二進位數,00001010,20的二進位數,00010100,30的二進位數,00011110。所以 1 ^ 10的結果是00001011,十進位結果為11,20 | 30的結果是00001010,十進位結果是10。

4.4 按位取反運算符(~)

按位取反(~)運算符將給定對應的二進位數逐位進行邏輯取反運算。~1 -> 0,~0 -> 1。

mysql> SELECT 20 & ~1 FROM dual;
+---------+
| 20 & ~1 |
+---------+
|      20 |
+---------+
1 row in set (0.00 sec)

取反運算符(~)的優先順序高於按位與(&)運算符的優先順序所以 10 & ~1。首先,對數字1進行按位取反運算 1的二進位 前24位是0,後8位00000001,取反操作,01111111,11111111,11111111,11111110,這是1的取反的二進位結果,20的二級制00000000,00000000,00000000,00010100,再進行與運算,結果是00000000,00000000,00000000,00010100 十進位是20。

4.5 按位右移運算符(>>)

按位右移(>>)運算符,將給定的值的二進位數的所有位右移指定的位數。右移指定的位數後,右邊低位的數值移出丟棄,左邊高位空出的位置補0。

mysql> SELECT 1 >> 2,4 >> 1;
+--------+--------+
| 1 >> 2 | 4 >> 1 |
+--------+--------+
|      0 |      2 |
+--------+--------+
1 row in set (0.00 sec)

1的二進位數,只寫後8位,0000 0001,右移2位 0000 0000,十進位是0。4的二進位是 0000 0100,右移1位為 0000 0010,對應的十進位數位2。

4.6 按位左移運算符(<<)

按位左移(<<)運算符,將給定的值的二進位數的所有位左移指定的位數。左移指定的位數後,左邊高位的數值移出丟棄,右邊低位空出的位置補0

mysql> SELECT 1 << 2,4 << 1;
+--------+--------+
| 1 << 2 | 4 << 1 |
+--------+--------+
|      4 |      8 |
+--------+--------+
1 row in set (0.00 sec)

1的二進位數,只寫後8位,0000 0001,左移2位 0000 0100,十進位是4。4的二進位是 0000 0100,右移1位為 0000 1000,對應的十進位數位8。
區分左右,看符號兩根線匯聚的點的方向。以及左移和右移不改變符號位。也就是對應二進位的首位。

5.運算符的優先順序


數字編號越大,優先順序越高。

6.正則表達式

正則表達式通常被用來檢索和替換,符合某個模式的文本內容,根據指定的匹配模式匹配文本中符合要求的特殊字元串。例如,從一個文本文件中提取電話號碼,查找一篇文章中重覆的單詞或者替換用戶輸入的某些敏感詞語等,這些地方都可以使用正則表達式,正則表達式強大而且靈活,可以應用於非常複雜的查詢。
MySQL中使用REGEXP關鍵字指定正則表達式的字元匹配模式,下表列出了REGEXP操作符中常用字元匹配列表。

只是為了記錄自己的學習歷程,且本人水平有限,不對之處,請指正。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 什麼是中間件 在ASP.NET Core中,中間件(Middleware)是一個可以處理HTTP請求或響應的軟體管道。 ASP.NET Core中給中間件組件的定位是具有非常特定的用途。例如,我們可能有需要一個中間件組件驗證用戶,另一個中間件來處理錯誤,另一個中間件來提供靜態文件,如JavaS ...
  • 一:背景 1. 講故事 前幾天有位朋友找到我,說他的程式會偶發性的報 存儲空間不足,無法處理此命令 的錯誤,讓我幫忙看下到底怎麼回事,哈哈,人家是有備而來,dump都準備好了,話不多說,直接分析開乾。 二:WinDbg 分析 1. 捕獲dump中的異常 一般來講別人說的只是一個參考,我們需要自己到d ...
  • 在前面的隨筆,我對我們開發的審批工作流做了不少的介紹,其中有包括WInform的、Vue+Element、Bootstrap Asp.net的,在各個框架上,我們都儘量爭取界面能夠一致化,以便客戶能夠在不同的前端上有相同的用戶體驗,並結合不同的前端特點,做了一些優化處理,本篇隨筆對WPF應用框架中工... ...
  • 1. C/S 與 B/S C/S結構系統是什麼 Client/Server結構(C/S結構)是大家熟知的客戶機和伺服器結構。它是軟體系統體繫結構,通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷 B/S結構系統是什麼 B/S結構(Bro ...
  • 在 .NET 開發中,Serilog 是一款廣受歡迎的日誌庫,它提供了強大的日誌記錄功能,具有豐富的特性和高度的可擴展性。Serilog 的優秀之處包括: 可擴展性: Serilog 可以輕鬆擴展以滿足不同的日誌記錄需求,例如日誌存儲、格式化和過濾。它支持各種插件和自定義擴展,讓你可以根據項目的具體 ...
  • tmux教程 功能 分屏。 允許斷開Terminal連接後,繼續運行進程。 結構 // 一個tmux可以包含多個session,一個session可以包含多個window,一個window可以包含多個pane。 tmux: session 0: window 0: pane 0 pane 1 pan ...
  • 近幾天發現MarkdownPad有一些小問題,打開時會彈出以下報錯信息,告訴你打開文件的許可權不夠 解決方法如下: 1、複製報錯信息中的文件路徑'C:\Users\Administrator\AppData \Roaming\wyUpdate AU\ApricitySoftware-MarkdownP ...
  • 版本 Linux 6.5 背景 在學習cgroupv2的時候,想給子cgroup開啟cpu控制器結果失敗了: # 查看可以開啟哪些控制器 root@ubuntu-vm:/sys/fs/cgroup# cat cgroup.controllers cpuset cpu io memory hugetl ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...