5. MySQL 运算符和函数
文章目录
- 【 1. 算术运算符 】
- 【 2. 逻辑运算符 】
- 2.1 逻辑非 (NOT 或者 !)
- 2.2 逻辑与运算符 (AND 或者 &&)
- 2.3 逻辑或 (OR 或者 ||)
- 2.4 异或运算 (XOR)
- 【 3. 比较运算符 】
- 3.1 等于 =
- 3.2 安全等于运算符 <=>
- 3.3 不等于运算符 (<> 或者 !=)
- 3.4 小于等于运算符 <=
- 3.5 小于运算符 <
- 3.6 大于等于运算符 >=
- 3.7 大于运算符 >
- 3.8 是否为空 IS NULL和 IS NOT NULL
- 3.9 介于两者之间 BETWEEN AND
- 3.10 IN和NOT IN
- 【 4. 位运算符 】
- 4.1 位或 |
- 4.2 位与 &
- 位异或 ^
- 位左移 <<
- 位右移 >>
- 位取反 ~
- 【 5. 运算符优先级 】
- 【 6. 函数 】
- MySQL 所提供的运算符可以直接对表中数据或字段进行运算,进而实现用户的新需求,增强了 MySQL 的功能。
例如,学生表中存在一个 birth 字段,这个字段表示学生的出生年份。如果想得到这个学生的实际年龄,可以使用 MySQL 中的算术运算符用当前的年份减学生出生的年份,求出的结果就是这个学生的实际年龄了。
【 1. 算术运算符 】
- MySQL中的算术运算符
| 运算符 | 作用 | 使用方法 |
|---|---|---|
| + | 加法运算 | 用于获得一个或多个值的和 |
| - | 减法运算 | 用于从一个值中减去另一个值 |
| * | 乘法运算 | 使数字相乘,得到两个或多个值的乘积 |
| / | 除法运算,返回商 | 用一个值除以另一个值得到商 |
| %,MOD | 求余运算,返回余数 | 用一个值除以另一个值得到余数 |
- 实例1:加、减
- 创建表 temp,定义数据类型为 INT 的字段 num。
CREATE TABLE temp(num INT); - 向字段 num 插入数据 64。
INSERT INTO temp VALUE (64); - 对 num 的值进行加法和减法运算。对 temp 表中的 num 字段的值进行加法和减法的运算,而且由于+和-的优先级相同,因此先加后减或者先减后加之后的结果是相同的。
SELECT num,num+10,num-3+5,num+36.5 FROM temp;

- 创建表 temp,定义数据类型为 INT 的字段 num。
- 实例2:乘、除
对 temp 表中的 num 进行乘法、除法运算。
对 num 进行除法运算时,由于 64 无法被 3 整除,因此 MySQL 对 num/3 求商的结果保存到了小数点后面四位,结果为 21.3333;64 除以 3 的余数为 1,因此取余运算 num%3 的结果为 1。
SELECT num,num*2,num/2,num/3,num%3 FROM temp;

- 实例3:取余
对于取余运算,还可以使用 MOD(a,b) 函数,MOD(a,b) 相当于 a%b。
SELECT MOD (num,3) FROM temp;

- 实例4:除数为0
数学运算中,除数为 0 的除法是没有意义的。所以在除法运算和取余运算中,如果除数为 0,那么返回结果为 NULL,在除法运算和取余运算中,除数为 0 ,对 num 进行除法求商或者求余运算的结果均为 NULL。
SELECT num,num/0,num%0 FROM temp;

【 2. 逻辑运算符 】
- 逻辑运算符 (布尔运算符),用来确定表达式的真和假。
| 运算符 | 作用 |
|---|---|
| NOT 或者 ! | 逻辑非 |
| AND 或者 && | 逻辑与 |
| OR 和 | |
| XOR | 逻辑异或 |
2.1 逻辑非 (NOT 或者 !)
- NOT 和 ! 都是逻辑非运算符,返回和操作数相反的结果,具体语法规则为:
- 当操作数为 0(假)时,!0=1 ;
- 当操作数为非零值时,!非零=0 ;
- 当操作数为 NULL 时,!NULL=NULL 。
- 实例
分别使用非运算符 NOT 或者 ! 进行逻辑判断。NOT 1+1和! 1+1的返回值不同,这是因为 NOT 与 ! 的优先级不同:- NOT 的优先级低于 +,因此NOT 1+1相当于NOT(1+1),先计算1+1,然后再进行 NOT 运算,由于操作数不为 0,因此NOT 1+1的结果是 0;
- 相反,! 的优先级别要高于 +,因此! 1+1相当于(!1)+1,先计算!1结果为 0,再加 1,最后结果为 1。
SELECT NOT 10,NOT(1-1),NOT-5,NOT NULL,NOT 1+1;
SELECT !10,!(1-1),!-5,!NULL,!1+1;
SELECT !1+1;

2.2 逻辑与运算符 (AND 或者 &&)
- AND 和 && 都是逻辑与运算符,具体语法规则为:
- 当 所有操作数都为非零值并且不为 NULL 时,(非零且非NULL) && (非零且非NULL)=1 ;
- 当 操作数中存在一个或多个操作数为 0 时,(零) && (任意)=0 ;
- 操作数中有任何一个为 NULL 时,(NULL) && (非零)=NULL 。
- 实例
分别使用与运算符 AND 和 && 进行逻辑判断,AND 和 && 的作用相同。
SELECT 1 AND -1,1 AND 0,1 AND NULL, 0 AND NULL;
SELECT 1 && -1,1&&0,1&&NULL,0&&NULL;

2.3 逻辑或 (OR 或者 ||)
- OR 和 || 都是逻辑或运算符,具体语法规则为:
- 如果有任意一个操作数为非零值,则 (非零)||(任意)=1 ;
- 如果有任意一个操作数为 NULL ,另一个操作数是NULL或者零时,则 (NULL)||(NULL或者零)=NULL 。
- 实例
分别使用或运算符 OR 和 || 进行逻辑判断,由结果可以看到,OR 和 || 的作用相同。下面是对各个结果的解析:
SELECT 1 OR -1 OR 0,1 OR 2,1 OR NULL, 0 OR NULL, NULL OR NULL;
SELECT 1 || -1 || 0,1||2,1||NULL,0||NULL,NULL||NULL;

2.4 异或运算 (XOR)
-
XOR 表示逻辑异或,具体语法规则为:
- 当任意一个操作数为 NULL 时,则 (NULL)XOR(任意)=NULL ;
- 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则
(非NULL且非零)XOR(非NULL且非零)=0;
(零)XOR(零)=0 ; - 如果一个为0值,另一个为非 0 值,则 (零)XOR(非零)=1 。
-
实例
SELECT 1 XOR 1,0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1;

【 3. 比较运算符 】
- MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较运算符可以用于比较数字、字符串和表达式的值。注意,字符串的比较是不区分大小写的。
- 比较结果为真,则返回 1;
- 比较结果为假,则返回 0,
- 比较结果不确定,则返回 NULL。
| 运算符 | 作用 |
|---|---|
| = | 等于 |
| <=> | 安全的等于 |
| <> 或者 != | 不等于 |
| <= | 小于等于 |
| >= | 大于等于 |
| > | 大于 |
| IS NULL 或者 ISNULL | 判断一个值是否为空 |
| IS NOT NULL | 判断一个值是否不为空 |
| BETWEEN AND | 判断一个值是否落在两个值之间 |
3.1 等于 =
- = 等于运算符 用来比较两边的操作数是否相等,相等的话返回 1,不相等的话返回 0。具体的语法规则如下:
- 若有一个或两个操作数为 NULL,则比较运算的结果为 NULL。NULL 不能用于 = 比较。即 (NULL) = (任意) 的结果为NULL
- 若两个操作数都是字符串,则按照字符串进行比较。
- 若两个操作数均为整数,则按照整数进行比较。
- 若一个操作数为字符串,另一个操作数为数字,则 MySQL 可以自动将字符串转换为数字。
- 实例
SELECT 1=0,'2'=2,2=2,'0.02'=0,'b'='b',(1+3)=(2+2),NULL=null;

3.2 安全等于运算符 <=>
- <=> 安全等于操作符 和 = 操作符类似,不过 <=> 可以用来判断 NULL 值,具体语法规则为:
- 当两个操作数均为 NULL 时,其返回值为 1 而不为 NULL,即 (NULL)<==>(NULL) 的结果为1
- 而当一个操作数为 NULL 时,其返回值为 0 而不为 NULL,即 (NULL)<==>(非NULL) 的结果为0
SELECT 1=0,'2'=2,2=2,'0.02'=0,'b'='b',(1+3)=(2+2),NULL=null;

3.3 不等于运算符 (<> 或者 !=)
- 与 = 的作用相反,<> 和 != 用于判断数字、字符串、表达式是否不相等。
- 如果两侧操作数不相等,返回值为 1,否则返回值为 0; - 如果两侧操作数有一个是 NULL,那么返回值也是 NULL,即 (NULL) <> (任意) 的结果为 NULL

- 如果两侧操作数不相等,返回值为 1,否则返回值为 0; - 如果两侧操作数有一个是 NULL,那么返回值也是 NULL,即 (NULL) <> (任意) 的结果为 NULL
3.4 小于等于运算符 <=
- <= 是小于等于运算符,用来判断左边的操作数是否小于或者等于右边的操作数;
- 如果小于或者等于,返回值为 1,否则返回值为 0;
- 如果两侧操作数有一个是 NULL,那么返回值也是 NULL。即 (NULL) <= (任意) 的结果为 NULL
- 实例
SELECT 'good'<='god',1<=2,4<=4,5.5<=5,(1+3)<=(2+1),NULL<=NULL;

3.5 小于运算符 <
- < 小于运算符 用来判断左边的操作数是否小于右边的操作数;
- 如果小于,返回值为 1,否则返回值为 0;
- 如果两侧操作数有一个是 NULL,那么返回值也是 NULL。即 (NULL) <= (任意) 的结果为 NULL
- 实例
SELECT 'good'<'god',1<2,4<4,5.5<5,(1+3)<(2+1),NULL<NULL;

3.6 大于等于运算符 >=
- >= 大于等于运算符 用来判断左边的操作数是否大于或者等于右边的操作数;
- 如果大于或者等于,返回值为 1,否则返回值为 0;
- 如果两侧操作数有一个是 NULL,那么返回值也是 NULL。即 (NULL) <= (任意) 的结果为 NULL
- 实例
SELECT 'good'>='god',1>=2,4>=4,5.5>=5,(1+3)>=(2+1),NULL>=NULL;

3.7 大于运算符 >
- > 大于运算符 用来判断左边的操作数是否大于右边的操作数;
- 如果大于,返回值为 1,否则返回值为 0;
- 如果两侧操作数有一个是 NULL,那么返回值也是 NULL。即 (NULL) <= (任意) 的结果为 NULL
- 实例
SELECT 'good'>'god',1>2,4>4,5.5>5,(1+3)>(2+1),NULL>NULL;

3.8 是否为空 IS NULL和 IS NOT NULL
- IS NULL 或 ISNULL 运算符用来检测一个值是否为 NULL,如果为 NULL,返回值为 1,否则返回值为 0。
ISNULL 可以认为是 IS NULL 的简写,去掉了一个空格而已,两者的作用和用法都是完全相同的。 - IS NOT NULL 运算符用来检测一个值是否为非 NULL,如果是非 NULL,返回值为 1,否则返回值为 0。
- 实例
SELECT NULL IS NULL,ISNULL(NULL),ISNULL(10),10 IS NOT NULL;

3.9 介于两者之间 BETWEEN AND
- BETWEEN AND 运算符用来判断表达式的值是否位于两个数之间,或者说是否位于某个范围内。
它的语法格式如下:- 在端点值区间内或者等于其中一个端点值,BETWEEN AND 表达式返回值为 1。
expr BETWEEN min AND max
- 实例
SELECT 4 BETWEEN 2 AND 5,4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;

3.10 IN和NOT IN
- MySQL 中的 IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。
- NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0。
- 基本语法
- expr 表示要判断的表达式,
- value1, value2, value3 … valueN 表示列表中的值,MySQL 会将 expr 的值和列表中的值逐一对比。
expr IN ( value1, value2, value3 ... valueN )
expr NOT IN ( value1, value2, value3 ... valueN )
- 实例1
SELECT 2 IN (1,3,5,'thks'),'thks' IN (1,3,5, 'thks');
SELECT 2 NOT IN (1,3,5,'thks'),'thks' NOT IN (1,3,5, 'thks');

- 实例2:对空值 NULL 的处理
当 IN 运算符的两侧有一个为空值 NULL 时,- 如果找不到匹配项,则返回值为 NULL;
- 如果找到了匹配项,则返回值为 1。
SELECT NULL IN (1,3,5,'thks'),10 IN (1,3,NULL,'thks');
SELECT NULL IN (1,3,5,'thks'),10 IN (1,10,NULL,'thks');

- 实例3:对非空值 NOT NULL 的处理
NOT IN 恰好与 IN 相反,- 当 NOT IN 运算符的两侧有一个为空值 NULL 时,如果找不到匹配项,则返回值为 NULL;
- 如果找到了匹配项,则返回值为 0。
SELECT NULL NOT IN (1,3,5,'thks'),10 NOT IN (1,0,NULL,'thks');
SELECT NULL NOT IN (1,3,5,'thks'),10 NOT IN (1,10,NULL,'thks');

【 4. 位运算符 】
- 位运算 就是按照内存中的比特位(Bit)进行操作,这是计算机能够支持的最小单位的运算。程序中所有的数据在内存中都是以二进制形式存储的,位运算就是对这些二进制数据进行操作。
位运算一般用于操作整数,对整数进行位运算才有实际的意义。整数在内存中是以补码形式存储的,正数的补码形式和原码形式相同,而负数的补码形式和它的原码形式的数值位取反+1。 - MySQL 中的位运算符
| 运算符 | 说明 | 使用形式 | 举例 |
|---|---|---|---|
| | | 位或 | a | b | 5 | 8 |
| & | 位与 | a & b | 5 & 8 |
| ^ | 位异或 | a ^ b | 5 ^ 8 |
| ~ | 位取反 | ~a | ~5 |
| << | 位左移 | a << b | 5 << 2,表示整数 5 按位左移 2 位 |
| >> | 位右移 | a >> b | 5 >> 2,表示整数 5 按位右移 2 位 |
4.1 位或 |
- 参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。
例如1|1结果为 1,0|0结果为0,1|0结果为1,这和逻辑运算中的||非常类似。 - 实例
- 10 的补码为 1010,15 的补码为 1111,按位或运算之后,结果为 1111,即整数 15;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位或运算之后,结果为 111,即整数 15。
- -7 的补码为 60 个‘1’加 1001,-1 的补码为 64 个‘1’,按位或运算之后,结果为 64 个‘1’,即整数 18446744073709551615。
SELECT 10|15,9|4|2;
SELECT -7|-1;

4.2 位与 &
- 参与&运算的两个二进制位都为 1 时,结果就为 1,否则为 0。
例如1|1结果为 1,0|0结果为 0,1|0结果为 0,这和逻辑运算中的&&非常类似。 - 实例
- 10 的补码为 1010,15 的补码为 1111,按位与运算之后,结果为 1010,即整数 10;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位与运算之后,结果为 0000,即整数 0。
- -7 的补码为 60 个‘1’加 1001,-1 的补码为 64 个‘1’,按位与运算之后,结果为 60 个‘1’加 1001,即整数 18446744073709551609。
SELECT 10 & 15,9 & 4 & 2;
SELECT -7&-1;

位异或 ^
- 参与^运算的两个二进制位不同时,结果为 1,相同时,结果为 0。
例如1|1结果为 0,0|0结果为 0,1|0结果为1。 - 实例
- 10 的补码为 1010,15 的补码为 111,按位异或运算之后,结果为 0101,即整数 5;1 的补码为 0001,0 的补码为 0000,按位异或运算之后,结果为 0001;1 和 1 本身二进制位完全相同,因此结果为 0。
- -7 的补码为 60 个‘1’加 1001,-1 的补码为 64 个‘1’,按位异或运算之后,结果为 110,即整数 6。
SELECT 10^15,1^0,1^1;
SELECT -7^-1;

位左移 <<
- 位左移是按指定值的补码形式进行左移,左移指定位数之后,左边高位的数值被移出并丢弃,右边低位空出的位置用 0 补齐。
基本语法:- 其中,n 指定值 expr 要移位的位数,n 必须为非负数。
expr << n
- 实例
- 1 的补码为 0000 0001,左移两位之后变成 0000 0100,即整数 4;4 的补码为 0000 0100,左移两位之后变成 0001 0000,即整数 16。
- -7 的补码为 60 个‘1’加 1001,左移两位之后变成 56 个‘1’加 1110 0100,即整数 18446744073709551588。
SELECT 1<<2,4<<2;
SELECT -7<<2;

位右移 >>
- 位右移 是按指定值的补码形式进行右移,右移指定位数之后,右边低位的数值被移出并丢弃,左边高位空出的位置用 0 补齐。
- 实例
- 1 的补码为 0000 0001,右移 1 位之后变成 0000 0000,即整数 0;16 的补码为 0001 0000,右移两位之后变成 0000 0100,即整数 4。
- -7 的补码为 60 个‘1’加 1001,右移两位之后变成 0011 加 56 个‘1’加 1110,即整数 4611686018427387902。
SELECT 1>>1,16>>2;
SELECT -7>>2;

位取反 ~
- 位取反 是将参与运算的数据按对应的补码进行反转,也就是做 NOT 操作,即 1 取反后变 0,0 取反后变为 1。
- 实例
- 常量 1 的补码为 63 个‘0‘加 1 个’1‘,位取反后就是 63 个’1‘加一个’0‘,转换为二进制后就是 18446744073709551614。
SELECT ~1,~18446744073709551614; - 可以使用 BIN() 函数查看 1 取反之后的结果,BIN() 函数的作用是将一个十进制数转换为二进制数,SQL 语句如下:
SELECT BIN(~1);

- 常量 1 的补码为 63 个‘0‘加 1 个’1‘,位取反后就是 63 个’1‘加一个’0‘,转换为二进制后就是 18446744073709551614。
- 实例2
使用位取反运算符进行运算。- 逻辑运算5&~1 中,由于位取反运算符‘~’的级别高于位与运算符‘&’,因此先对 1 进行取反操作,结果为 63 个‘1’加一个‘0’,然后再与整数 5 进行与运算,结果为 0100,即整数 4。
SELECT 5 & ~1;

- 逻辑运算5&~1 中,由于位取反运算符‘~’的级别高于位与运算符‘&’,因此先对 1 进行取反操作,结果为 63 个‘1’加一个‘0’,然后再与整数 5 进行与运算,结果为 0100,即整数 4。
【 5. 运算符优先级 】
- 运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,一般情况下,级别高的运算符优先进行计算,如果级别相同,MySQL 按表达式的顺序从左到右依次计算。
- 另外,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。
| 优先级由低到高排列 | 运算符 |
|---|---|
| 1 | =(赋值运算)、:= |
| 2 | II、OR |
| 3 | XOR |
| 4 | &&、AND |
| 5 | NOT |
| 6 | BETWEEN、CASE、WHEN、THEN、ELSE |
| 7 | =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN |
| 8 | | |
| 9 | & |
| 10 | <<、>> |
| 11 | -(减号)、+ |
| 12 | *、/、% |
| 13 | ^ |
| 14 | -(负号)、〜(位反转) |
| 15 | ! |
【 6. 函数 】
- MySQL 函数 是 MySQL 数据库提供的 内部函数,这些内部函数可以帮助用户更加方便地处理表中的数据。函数就像预定的公式一样存放在数据库里,每个用户都可以调用已经存在的函数来完成某些功能。
- 函数可以很方便的地实现业务逻辑的重用,并且 MySQL 数据库允许用户自己创建函数,以适应实际的业务操作。正确使用函数会让读者在编写 SQL 语句时起到事半功倍的效果。
SELECT、INSERT、UPDATE 和 DELETE 语句及其子句(例如 WHERE、ORDER BY、HAVING 等)中都可以使用 MySQL 函数。
例如,数据表中的某个数据是负数,现在需要将这个数据显示为整数,这时就可以在 SELECT 语句中使用绝对值函数。
| 函数类型 | 描述 |
|---|---|
| 数学函数 | 主要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数和获得随机数的函数等。 |
| 字符串函数 | 主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母都变成小写或大写字母的函数和获取子串的函数等。 |
| 日期和时间函数 | 主要用于处理日期和时间。其中包括获取当前时间的函数、获取当前日期的函数、返回年份的函数和返回日期的函数等。 |
| 条件判断函数 | 主要用于在 SQL 语句中控制条件选择。其中包括 IF 语句、CASE 语句和 WHERE 语句等。 |
| 系统信息函数 | 主要用于获取 MySQL 数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数和获取数据库版本的函数等。 |
| 加密函数 | 主要用于对字符串进行加密解密。其中包括字符串加密函数和字符串解密函数等。 |
| 其他函数 | 主要包括格式化函数和锁函数等。 |
- MySQL常用函数汇总
- MySQL 官方参考文档
相关文章:
5. MySQL 运算符和函数
文章目录 【 1. 算术运算符 】【 2. 逻辑运算符 】2.1 逻辑非 (NOT 或者 !)2.2 逻辑与运算符 (AND 或者 &&)2.3 逻辑或 (OR 或者 ||)2.4 异或运算 (XOR) 【 3. 比较运算符 】3.1 等于 3.2 安全等于运算符 <>3.3 不等于运算符 (<> 或者 !)3.4 小于等于运算符…...
Linux学习之vi文本编辑器的使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
【数据结构】链表与顺序表的比较
不同点: 顺序表和链表是两种常见的数据结构,他们的不同点在于存储方式和插入、删除操作、随机访问、cpu缓存利用率等方面。 一、存储方式不同: 顺序表: 顺序表的存储方式是顺序存储,在内存中申请一块连续的空间,通…...
dart 基本语法
//入口方法 main() 或 void main() //数据类型 原生数据类型 String int double bool null 注意:String 包函 ‘’ “” ‘’’ ‘’’ 三种形式复杂数据类型 list Set Map自定义数据类型 class inheritance动态数据类型 var 注:dart 是静态类型语言&a…...
【经验分享】嵌入式入坑经历(选段)
文章目录 你现在的工作中所用到的专业知识有哪些呢?为什么想转行了?后来为什么从事了嵌入式行业呢?你对嵌入式的兴趣是何时培养起来的?你是怎么平衡兴趣爱好和工作的关系的?平时做的事情对你现在的工作有哪些帮助?对于有志学习嵌入式开发的在校大学生…...
Docker面试整理-Docker与虚拟机的区别是什么?
Docker 容器和传统的虚拟机(VM)都是提供隔离的运行环境以部署和运行应用程序的技术,但它们在架构和性能上存在显著的不同。了解这些差异可以帮助你选择最适合特定需求的解决方案: 基础架构:虚拟机:每个虚拟机都包括完整的操作系统、应用程序、必需的库和二进制文件,运行在…...
Java:JDK8 GC中ParNew和CMS的问题说明
JDK8中常用如下的垃圾收集器,它们分别运用在年轻代和老年代: ParNew : 年轻代垃圾收集器,多线程,采用标记—复制算法。 CMS:老年代的收集器,全称(Concurrent Mark and Sweep)&#…...
学单片机前先学什么?
先学c语言和数字电路 这里默认你说的单片机是51单片机,通过你的问题,我猜你的单片机应该还没有入门,如果是入门的话,一般都是从51单片机开始的。刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从…...
数据可视化:Matplotlib 与 Seaborn
数据可视化是数据分析中至关重要的一部分,它能帮助我们直观地理解数据的分布、趋势和关系。Python 中,Matplotlib 和 Seaborn 是两个最常用的可视化库。本文将详细介绍如何使用 Matplotlib 和 Seaborn 进行数据可视化,包括基本图形、图形定制…...
【linux】自定义快捷命令/脚本
linux自定义快捷命令 场景自定义命令自定义脚本 场景 深度学习经常要切换到自己环境,conda activate mmagic,但是又不想每次重复打这么多字,想使用快捷命令直接切换。 自定义命令 使用别名(alias)或自定义脚本来创建…...
使用onnxruntime加载YOLOv8生成的onnx文件进行目标检测
在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…...
QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数
在窗体里放置一个单行文本编辑控件(QLineEdit)、一个标签控件(QLabel)和一个文本浏览控件(QTextBrowser),在单行文 本编辑控件里的文本被编辑时,标签控件和文本浏览控件都会同步显示…...
C++ AVL树 详细讲解
目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查 …...
Faster R-CNN:端到端的目标检测网络
本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络,在用户看来,它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN,我们还必须快速概…...
如何给 MySQL 表和列授予权限?(官方版)
目录 授予表级别权限 授予列级别权限 如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤,也是企业级使用MySQL数据库的起步点,以下分别参照官方教程整理的MySQL数据库的权限操作。 以下的语句可以直接使用MySQL的命令行进行操作(如何…...
攻防世界testre做法(考点:base58)
在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。 base64编码原理:1,在使用base64加…...
计算机视觉与模式识别实验1-1 图像的直方图平衡
文章目录 🧡🧡实验流程🧡🧡1.读入图像‘rice.png’,在一个窗口中显示灰度级n64,128和256的图像直方图。2.调解图像灰度范围,观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…...
【C++课程学习】:C++入门(函数重载)
🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🌈函数重载: 🍉1.参数个数不同: 🍉2.参数…...
skywalking介绍及搭建
链路追踪框架比对: skywalking安装部署: 下载地址:Downloads | Apache SkyWalking 配置微服务与skywalking整合: copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins,然后重启skywalking 监控界面…...
分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构
导语 焊接是汽车制造过程中一个关键环节,白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用,主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
深度解析云存储:概念、架构与应用实践
在数据爆炸式增长的时代,传统本地存储因容量限制、管理复杂等问题,已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性,成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理,云存储正重塑数据存储与…...
