九、MySQL 常用函数汇总(2)

news2024/11/24 2:13:08

文章目录

  • 一、条件判断函数
    • 1.1 IF(expr,v1,v2)函数
    • 1.2 IFNULL(v1,v2)函数
    • 1.3 CASE函数
  • 二、系统信息函数
    • 2.1 获取MySQL版本号、连接数和数据库名的函数
    • 2.2 获取用户名的函数
    • 2.3 获取字符串的字符集和排序方式的函数
    • 2.4 获取最后一个自动生成的ID值的函数
  • 三、加密函数
    • 3.1 加密函数MD5(str)
    • 3.2 加密函数SHA(str)
    • 3.3 加密函数SHA2(str, hash_length)
  • 四、其他函数
    • 4.1 格式化函数FORMAT(x,n)
    • 4.2 不同进制的数字进行转换的函数
    • 4.3 IP地址与数字相互转换的函数
    • 4.4 加锁函数和解锁函数
    • 4.5 重复执行指定操作的函数
    • 4.6 改变字符集的函数
    • 4.7 改变数据类型的函数

前置知识:

一、数据库开发与实战专栏导学及数据库基础概念入门
二、MySQL 介绍及 MySQL 安装与配置
三、MySQL 数据库的基本操作
四、MySQL 存储引擎及数据类型
五、数据导入与基本的 SELECT 语句
六、MySQL 数据库练习题1(包含前5章练习题目及答案)
七、MySQL 多表查询详解(附练习题及答案----超详细)
八、MySQL 常用函数汇总(1)

一、条件判断函数

条件判断函数也称为控制流程函数,根据满足的不同条件,执行相应的流程。MySQL 中进行条件判断的函数有 IFIFNULLCASE。本小节将分别介绍各个条件判断函数的用法。

1.1 IF(expr,v1,v2)函数

对于 IF(expr, v1, v2) 函数,如果表达式 exprTRUE(expr <> 0 and expr <> NULL),则返回值为 v1,否则返回值为 v2IF() 的返回值为数字值或字符串值,具体情况视其所在的语境而定。使用 IF() 函数进行条件判断,输入语句如下:

mysql> SELECT IF(1>2,2,3), IF(1<2,'yes ','no'),  IF(STRCMP('test','test1'),'no','yes');
+-------------+---------------------+---------------------------------------+
| IF(1>2,2,3) | IF(1<2,'yes ','no') | IF(STRCMP('test','test1'),'no','yes') |
+-------------+---------------------+---------------------------------------+
|           3 | yes                 | no                                    |
+-------------+---------------------+---------------------------------------+
1 row in set (0.00 sec)
#如果v1或v2中只有一个明确是NULL,则IF()函数的结果类型为非NULL表达式的结果类型。

1.2 IFNULL(v1,v2)函数

对于 IFNULL(v1,v2) 函数,假如 v1 不为 NULL,则 IFNULL() 的返回值为 v1,否则其返回值为 v2IFNULL() 的返回值是数字或者字符串,具体情况取决于其所在的语境。使用 IFNULL() 函数进行条件判断,输入语句如下:

mysql> SELECT IFNULL(1,2), IFNULL(NULL,10), IFNULL(1/0, 'wrong');
+-------------+-----------------+----------------------+
| IFNULL(1,2) | IFNULL(NULL,10) | IFNULL(1/0, 'wrong') |
+-------------+-----------------+----------------------+
|           1 |              10 | wrong                |
+-------------+-----------------+----------------------+
1 row in set (0.00 sec)

1.3 CASE函数

CASE 函数的格式是 CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2]…[ELSE rn+1] END,如果 expr 值等于某个 vn,则返回对应位置 THEN 后面的结果;如果与所有值都不相等,则返回 ELSE 后面的 rn+1。使用 CASE value WHEN 语句执行分支操作,输入语句如下:

mysql> SELECT CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
+------------------------------------------------------------+
| CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END |
+------------------------------------------------------------+
| two                                                        |
+------------------------------------------------------------+
1 row in set (0.00 sec)
#使用CASE WHEN语句执行分支操作,输入语句如下:
mysql> SELECT CASE WHEN 1<0 THEN 'true' ELSE 'false' END;
+--------------------------------------------+
| CASE WHEN 1<0 THEN 'true' ELSE 'false' END |
+--------------------------------------------+
| false                                      |
+--------------------------------------------+
1 row in set (0.00 sec)

提示: 一个 CASE 表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在的语境而定。如果用在字符串语境中,则返回结果为字符串。如果用在数字语境中,则返回结果为十进制值、实数值或整数值。

二、系统信息函数

本小节将介绍常用的系统信息函数。MySQL中的系统信息有数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。

2.1 获取MySQL版本号、连接数和数据库名的函数

VERSION() 返回表示 MySQL 服务器版本的字符串,这个字符串使用 utf8字符集。查看当前 MySQL 版本号,输入语句如下:

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.30    |
+-----------+
1 row in set (0.00 sec)

CONNECTION_ID() 返回 MySQL 服务器当前连接的次数,每个连接都有各自唯一的ID。查看当前用户的连接数,输入语句如下:

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|            4968 |
+-----------------+
1 row in set (0.00 sec)

SHOW PROCESSLIST; SHOW FULL PROCESSLIST; processlist 命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态、帮助识别出有问题的查询语句等。如果是 root 账号,能看到所有用户的当前连接;如果是其他普通账号,则只能看到自己占用的连接。show processlist 只列出前100条,如果想全部列出,可使用 show full processlist 命令。

mysql> SHOW PROCESSLIST;
+------+-----------------+-----------------+-------------+---------+--------+------------------------+------------------+
| Id   | User            | Host            | db          | Command | Time   | State                  | Info             |
+------+-----------------+-----------------+-------------+---------+--------+------------------------+------------------+
|    5 | event_scheduler | localhost       | NULL        | Daemon  | 712096 | Waiting on empty queue | NULL             |
| 4966 | root            | localhost:49935 | work-spider | Sleep   |   1858 |                        | NULL             |
| 4967 | root            | localhost:51134 | work-spider | Sleep   |   1858 |                        | NULL             |
| 4968 | root            | localhost:51868 | NULL        | Query   |      0 | init                   | SHOW PROCESSLIST |
+------+-----------------+-----------------+-------------+---------+--------+------------------------+------------------+
4 rows in set (0.00 sec)
#各个列的含义和用途:
#1.Id列,用户登录MySQL时,系统分配的是 connection id
#2.User列,显示当前用户。如果不是root,这个命令就只显示用户权限范围内的SQL语句。
#3.Host列,显示这个语句是从哪个IP的哪个端口上发出的,可以用来追踪出现问题语句的用户。
#4.db列,显示这个进程目前连接的是哪个数据库。
#5.Command列,显示当前连接执行的命令,一般取值为休眠(Sleep)、查询(Query)、连接(Connect)。
#6.Time列,显示这个状态持续的时间,单位是秒。
#7.State列,显示使用当前连接的SQL语句的状态,很重要的列。后续会有所有状态的描述,State只是语句执行中的某一个状态。
#一个SQL语句,以查询为例,可能需要经过Copying to tmp table、Sorting result、Sending data等状态才可以完成。
#8.Info列,显示这个SQL语句,是判断问题语句的一个重要依据。

DATABASE()SCHEMA() 函数返回使用 utf8 字符集的默认(当前)数据库名。查看当前使用的数据库,输入语句如下:

mysql> SELECT DATABASE(),SCHEMA();
+-------------+-------------+
| DATABASE()  | SCHEMA()    |
+-------------+-------------+
| mysql_study | mysql_study |
+-------------+-------------+
1 row in set (0.00 sec)

2.2 获取用户名的函数

USER()、CURRENT_USER()、CURRENT_USER()、SYSTEM_USER() 和 SESSION_USER() 这几个函数返回当前被 MySQL 服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存取权限的 MySQL 账户。一般情况下,这几个函数的返回值是相同的。获取当前登录用户名称,输入语句如下:

mysql> SELECT USER(), CURRENT_USER(), SYSTEM_USER();
+----------------+----------------+----------------+
| USER()         | CURRENT_USER() | SYSTEM_USER()  |
+----------------+----------------+----------------+
| root@localhost | root@%         | root@localhost |
+----------------+----------------+----------------+
1 row in set (0.00 sec)
#返回结果值表明了当前账户连接服务器时的用户名及所连接的客户主机,root为当前登录的用户名,localhost为登录的主机名。

2.3 获取字符串的字符集和排序方式的函数

CHARSET(str) 返回字符串 str 自变量的字符集。使用 CHARSET() 函数返回字符串使用的字符集,输入语句如下:

mysql> SELECT CHARSET('abc'), CHARSET(CONVERT('abc' USING latin1)), CHARSET(VERSION());
+----------------+--------------------------------------+--------------------+
| CHARSET('abc') | CHARSET(CONVERT('abc' USING latin1)) | CHARSET(VERSION()) |
+----------------+--------------------------------------+--------------------+
| gbk            | latin1                               | utf8mb3            |
+----------------+--------------------------------------+--------------------+
1 row in set (0.00 sec)
#CHARSET('abc')返回系统默认的字符集gbk
#CHARSET(CONVERT('abc' USING latin1))返回的字符集为latin1
#前面介绍过,VERSION()返回的字符串使用utf8字符集,因此CHARSET返回结果为utf8mb3

COLLATION(str) 返回字符串 str 的字符排列方式。使用 COLLATION() 函数返回字符串的排列方式,输入语句如下:

mysql> SELECT COLLATION('abc'),COLLATION(CONVERT('abc' USING utf8));
+------------------+--------------------------------------+
| COLLATION('abc') | COLLATION(CONVERT('abc' USING utf8)) |
+------------------+--------------------------------------+
| gbk_chinese_ci   | utf8mb3_general_ci                   |
+------------------+--------------------------------------+
1 row in set, 1 warning (0.00 sec)
#可以看到,使用不同字符集时字符串的排列方式不同

2.4 获取最后一个自动生成的ID值的函数

LAST_INSERT_ID() 函数返回最后生成的 AUTO_INCREMENT 值。使用 SELECT LAST_INSERT_ID 查看最后一个自动生成的列值。

mysql> CREATE TABLE worker(Id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, Name VARCHAR(30));
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO worker VALUES(NULL, 'jimy');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO worker VALUES(NULL, 'amo');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM worker;
+----+------+
| Id | Name |
+----+------+
|  1 | jimy |
|  2 | amo  |
+----+------+
2 rows in set (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)
mysql> INSERT INTO worker VALUES  (NULL, 'Kevin'),(NULL,'Michal'),(NULL,'Nick');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+
1 row in set (0.00 sec)
#结果显示,LAST_INSERT_ID值不是5而是3,这是为什么呢?在向数据表中插入一条新记录时,LAST_INSERT_ID()返回带有AUTO_INCREMENT约束
#的字段最新生成的值2;继续向表中同时添加3条记录,读者可能以为这时LAST_INSERT_ID值为5,可显示结果却为3,
#这是因为当使用一条INSERT语句插入多行时,LAST_INSERT_ID()只返回插入的第一行数据时产生的值,在这里为第3条记录。
#之所以这样,是因为这使依靠其他服务器复制同样的 INSERT语句变得简单。提示:LAST_INSERT_ID是与数据表无关的,如果向表a
#插入数据后再向表b插入数据,那么LAST_INSERT_ID返回表b中的Id值。

三、加密函数

加密函数主要用来对数据进行加密处理,以保证某些重要数据不被别人获取。这些函数在保证数据库安全时非常有用。本小节将介绍各种加密函数的作用和使用方法。

3.1 加密函数MD5(str)

MD5(str) 为字符串算出一个 MD5 128 比特校验和。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL。使用 MD5 函数加密字符串,输入语句如下:

mysql> SELECT MD5 ('amoxiang');
+----------------------------------+
| MD5 ('amoxiang')                 |
+----------------------------------+
| 64504e1a9608f2847b7c18abfdf97ad4 |
+----------------------------------+
1 row in set (0.00 sec)

3.2 加密函数SHA(str)

SHA(str) 使用原明文密码 str 计算并返回加密后的密码字符串,当参数为NULL时,返回 NULLSHA 加密算法比 MD5 更加安全。使用 SHA 函数加密密码,输入语句如下:

mysql> SELECT SHA('amo23456');
+------------------------------------------+
| SHA('amo23456')                          |
+------------------------------------------+
| 6a3149de98a3bc36cc5d7baa0edbd6aa6141b512 |
+------------------------------------------+
1 row in set (0.00 sec)

3.3 加密函数SHA2(str, hash_length)

SHA2(str, hash_length) 使用 hash_length 作为长度,加密 strhash_length 支持的值为224、256、384、512和0。其中,0等同于256。使用 SHA2 加密字符串,输入语句如下:

mysql> SELECT SHA2('tom123456',0) A,sha2('tom123456',256) B\G
*************************** 1. row ***************************
A: 9242a986a9edbd14a60450e9284a372efeff7e9f6209f675fdc4457f55de5e27
B: 9242a986a9edbd14a60450e9284a372efeff7e9f6209f675fdc4457f55de5e27
1 row in set (0.00 sec)

四、其他函数

本小节将要介绍的函数不能笼统地归为一类,但是这些函数也非常有用,例如重复指定操作函数、改变字符集函数、IP地址与数字转换函数等。本小节将介绍这些函数的作用和用法。

4.1 格式化函数FORMAT(x,n)

FORMAT(x,n) 将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串的形式返回。若 n 为0,则返回结果函数不含小数部分。使用 FORMAT 函数格式化数字,保留小数点位数为指定值,输入语句如下:

mysql> SELECT FORMAT(12332.123456, 4), FORMAT(12332.1,4), FORMAT(12332.2,0);
+-------------------------+-------------------+-------------------+
| FORMAT(12332.123456, 4) | FORMAT(12332.1,4) | FORMAT(12332.2,0) |
+-------------------------+-------------------+-------------------+
| 12,332.1235             | 12,332.1000       | 12,332            |
+-------------------------+-------------------+-------------------+
1 row in set (0.00 sec)

4.2 不同进制的数字进行转换的函数

CONV(N, from_base, to_base) 函数进行不同进制数之间的转换,返回值为数值 N 的字符串表示,由 from_base 进制转化为 to_base 进制。如有任意一个参数为 NULL,则返回值为 NULL。自变量 N 被理解为一个整数,但是可以被指定为一个整数或字符串。进制数最小基数为 2,最大基数为 36。使用 CONV 函数在不同进制数值之间转换,输入语句如下:

mysql> SELECT CONV('a',16,2), CONV(15,10,2), CONV(15,10,8), CONV(15,10,16);
+----------------+---------------+---------------+----------------+
| CONV('a',16,2) | CONV(15,10,2) | CONV(15,10,8) | CONV(15,10,16) |
+----------------+---------------+---------------+----------------+
| 1010           | 1111          | 17            | F              |
+----------------+---------------+---------------+----------------+
1 row in set (0.00 sec)

CONV('a',16,2) 将十六进制的 a 转换为二进制表示的数值,十六进制的 a 表示十进制的数值10,二进制的数值 1010 正好等于十进制的数值10;CONV(15,10,2) 将十进制的数值 15 转换为二进制值,结果为 1111CONV(15,10,8) 将十进制的数值 15 转换为八进制值,结果为 17CONV(15,10,16) 将十进制的数值 15 转换为十六进制值,结果为 F。进制说明:

  1. 二进制,采用0和1两个数字来表示的数。它以2为基数,逢二进一。
  2. 八进制,采用0、1、2、3、4、5、6、7八个数字,以数字0开头,逢八进一。
  3. 十进制,采用 0~9,共10个数字表示,逢十进一。
  4. 十六进制,由 0~9A~F 组成,以数字 0x 开头。它与十进制的对应关系是:0~9 对应 0~9A~F 对应 10~15

4.3 IP地址与数字相互转换的函数

INET_ATON(expr) 给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8bit地址。使用 INET_ATON 函数将字符串网络点地址转换为数值网络地址,输入语句如下:

mysql> SELECT INET_ATON('209.207.224.40');
+-----------------------------+
| INET_ATON('209.207.224.40') |
+-----------------------------+
|                  3520061480 |
+-----------------------------+
1 row in set (0.00 sec)

INET_NTOA(expr) 函数给定一个数字网络地址(4或8bit),返回作为字符串的该地址的点地址表示。使用 INET_NTOA 函数将数值网络地址转换为字符串网络点地址,输入语句如下:

#可以看到,INET_NTOA和INET_ATON互为反函数
mysql> SELECT INET_NTOA(3520061480);
+-----------------------+
| INET_NTOA(3520061480) |
+-----------------------+
| 209.207.224.40        |
+-----------------------+
1 row in set (0.00 sec)

4.4 加锁函数和解锁函数

GET_LOCK(str,timeout) 函数设法使用字符串 str 给定的名字得到一个锁,超时为 timeout 秒。若成功得到锁,则返回1;若操作超时,则返回0;若发生错误,则返回 NULL。假如有一个用 GET_LOCK() 得到的锁,当执行 RELEASE_LOCK() 函数或连接断开(正常或非正常)时,这个锁就会解除。

RELEASE_LOCK(str) 函数解开被 GET_LOCK() 获取的、用字符串 str 所命名的锁。若锁被解开,则返回1;若该线程尚未创建锁,则返回0(此时锁没有被解开);若命名的锁不存在,则返回 NULL。若该锁从未被 GET_LOCK() 的调用获取,或锁已经被提前解开,则该锁不存在。

IS_FREE_LOCK(str) 函数检查名为 str 的锁是否可以使用(换言之,没有被封锁)。若锁可以使用,则返回1(没有人在用这个锁);若这个锁正在被使用,则返回0;出现错误,则返回 NULL(诸如不正确的参数)。

IS_USED_LOCK(str) 函数检查名为 str 的锁是否正在被其他人使用(换言之,被封锁)。若被封锁,则返回使用该锁的客户端的连接标识符(connection ID),否则返回 NULL。使用加锁、解锁函数,输入语句如下:

mysql> SELECT GET_LOCK('lock1',10) AS GetLock, IS_USED_LOCK('lock1') AS ISUsedLock, IS_FREE_LOCK('lock1') AS ISFreeLock,
 RELEASE_LOCK('lock1') AS ReleaseLock;
+---------+------------+------------+-------------+
| GetLock | ISUsedLock | ISFreeLock | ReleaseLock |
+---------+------------+------------+-------------+
|       1 |       4968 |          0 |           1 |
+---------+------------+------------+-------------+
1 row in set (0.00 sec)

4.5 重复执行指定操作的函数

BENCHMARK(count,expr) 函数重复 count 次执行表达式 expr。它可以用于计算 MySQL 处理表达式的速度。结果值通常为0(0只是表示处理过程很快,并不是没有花费时间)。另一个作用是它可以在 MySQL 客户端内部报告语句执行的时间。使用 BENCHMARK 重复执行指定函数,输入语句如下:

mysql> SELECT SHA('newpwd');
+------------------------------------------+
| SHA('newpwd')                            |
+------------------------------------------+
| c7f005b657906521157aa3fc261afe886d51f792 |
+------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT BENCHMARK(500000, SHA('newpwd'));
+----------------------------------+
| BENCHMARK(500000, SHA('newpwd')) |
+----------------------------------+
|                                0 |
+----------------------------------+
1 row in set (0.18 sec)

4.6 改变字符集的函数

带有 USING 参数的 CONVERT(...USING...) 函数用来在不同的字符集之间转化数据。使用 CONVERT() 函数改变字符串的默认字符集,输入语句如下:

mysql> SELECT CHARSET('string'),CHARSET(CONVERT('string' USING latin1));
+-------------------+-----------------------------------------+
| CHARSET('string') | CHARSET(CONVERT('string' USING latin1)) |
+-------------------+-----------------------------------------+
| gbk               | latin1                                  |
+-------------------+-----------------------------------------+
1 row in set (0.00 sec)

4.7 改变数据类型的函数

CAST(x , AS type)CONVERT(x, type) 函数将一个类型的值转换为另一个类型的值,可转换的 typeBINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。使用 CASTCONVERT 函数进行数据类型的转换,SQL语句如下:

mysql> SELECT CAST(100 AS CHAR(2)), CONVERT('2018-10-01 12:12:12',TIME);
+----------------------+-------------------------------------+
| CAST(100 AS CHAR(2)) | CONVERT('2018-10-01 12:12:12',TIME) |
+----------------------+-------------------------------------+
| 10                   | 12:12:12                            |
+----------------------+-------------------------------------+
1 row in set, 1 warning (0.00 sec)

可以看到,CAST(100 AS CHAR(2)) 将整数数据 100 转换为带有两个显示宽度的字符串类型,结果为 10CONVERT('2018-10-01 12:12:12',TIME)DATETIME 类型的时间值转换为 TIME 类型,结果为 12:12:12

窗口函数与聚合函数将结合实际查询案例进行讲解,故 MySQL 函数篇不再赘述。

至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习数据库的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

东宝商城项目(三)——用户注册功能的实现(后端)

本文是我做项目过程中记录的学习笔记&#xff0c;用于记录项目开发流程&#xff0c;第一次做项目有很多不懂的地方&#xff0c;本文可读性暂时很差。 我目前的学习目标是走完项目开发流程&#xff0c;知道独立开发一个项目并让项目上线需要经历哪些步骤&#xff0c;需要学到哪些…

java.util.ConcurrentModificationException: null异常

创作背景&#xff1a;在加强for循环中使用了remove操作 原因&#xff1a; 在官方文档中ConcurrentModificationException的介绍如下&#xff1a; public class ConcurrentModificationException extends RuntimeException 某个线程在 Collection 上进行遍历时&#xff0c;通…

Spring入门-IOC/DI注解管理与整合mybatis及Junit(2)

1&#xff0c;核心容器 前面已经完成bean与依赖注入的相关知识学习&#xff0c;接下来我们主要学习的是IOC容器中的核心容器。 这里所说的核心容器&#xff0c;大家可以把它简单的理解为ApplicationContext&#xff0c;前面虽然已经用到过&#xff0c;但是并没有系统的学习&a…

1.15日报

完成font.css global.css login.vue request.js 今天完成了前端与后端的联通&#xff0c;并成功响应请求。返回登录成功欣喜。 遇到的问题&#xff1a; 我的body设置了&#xff1a; margin:0; padding:0; 但是页面四周还有白色留边。原因&#xff1a;body设置无边框了&a…

用Scipy理解Gamma函数

文章目录Gamma函数对数Gamma函数复数域的Gamma函数Gamma函数 Γ\GammaΓ函数是阶乘的解析延拓&#xff0c;在概率论中非常常见&#xff0c;例如Gamma分布表示某个事件在某个时刻发生第nnn次的概率&#xff1a;Gamma分布详解 Γ\GammaΓ函数显含在Γ\GammaΓ分布中&#xff0c;其…

linux基本功系列之pwd命令实战

本文目录 文章目录一. pwd命令介绍二. 语法格式及常用选项2.1 语法格式2.2 常用参数三. 参考案例3.1 显示所在目录的完整路径3.2 显示符号链接的路径 -P 参数3.3 查看上一次所在的工作目录3.4 查看PWD的版本四. pwd的命令类型总结前言&#x1f680;&#x1f680;&#x1f680; …

7、redis数据库jedis省份缓存案例

Redis 1. 概念&#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL Not Only SQL)&#xff0c;意即“不仅仅是SQL”&#xff0c;是一项全新的数据库理念&#xff0c;泛指非关系型的数据库。 随着互联网web2.0网站的兴起…

IO流练习(三)

1.编程题 Homework01.java (1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp (2)在e:\\mytemp目录下&#xff0c;创建文件hello.txt (3)如果hello.txt已经存在&#xff0c;提示该文件已经存在&#xff0c;就不要再重复创建了。 &#xff08;4&#xff09;并且在hello.tx…

Java加解密(八)数字证书

目录数字证书1 定义2 证书组成结构3 公钥基础设施&#xff08;PKI&#xff09;3.1 PKI的组成3.2 PKI的相关标准3.3 信任模型4 证书的应用场景5 证书链6 生成证书6.1 通过CA生成可信证书6.1.1 国际权威认证机构6.1.2 生成CSR6.1.2.1 使用XCA生成CSR6.1.2.2 使用OpenSSL生成CSR6.…

每日一题-力扣(leetcode)2059. 转化数字的最小运算数

传送门 题目描述 给你一个下标从 0 开始的整数数组 nums &#xff0c;该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。 整数 x 的值最开始设为 start &#xff0c;你打算执行一些运算使 x 转化为 goal 。你可以对数字 x 重复执行下述运算&#xff1a; 如果…

AtCoder Beginner Contest 284解题报告(A-D)

A - Sequence of Strings Problem Statement You are given N strings S1​,S2​,…,SN​ in this order. Print SN​,SN−1​,…,S1​ in this order. Constraints 1≤N≤10N is an integer.Si​ is a string of length between 1 and 10, inclusive, consisting of lowe…

【Redis】Redis实现分布式锁

【Redis】Redis实现分布式锁 文章目录【Redis】Redis实现分布式锁1. 分布式锁概念2. 为什么要实现分布式锁2.1 并发安全问题3. 分布式锁的实现方案3.1 Redis实现分布式锁3.1.1 定义分布锁接口和类3.1.2 编写lua脚本3.1.3 使用线程锁3.1.4 总结在实现分布式锁之前&#xff0c;首…

aardio - 升级bindConfig函数,支持多属性和多子组件

一、需求分析 aardio的 winform.bindConfig() 函数&#xff0c;绑定后&#xff0c;一个组件&#xff0c;只能保存一个属性。 有时候需要同时保存多个属性&#xff0c;比如一个comobox组件&#xff0c;需要保存项目列表&#xff0c;同时保存当前选中的项目索引。当前这个bindC…

代码随想录算法训练营第十八天二叉树 java : .106 从中序与后序遍历序列构造二叉树113. 路径总和ii 112 路径总和 513.找树左下角的值

文章目录前言LeetCode 513.找树左下角的值题目讲解思路那么如何找最左边的呢&#xff1f;Leetcode 112 路径总和题目讲解LeetCode 113. 路径总和ii题目讲解Leetcode 106 从中序与后序遍历序列构造二叉树题目讲解前言 人的不幸在于他们不想走自己的那条路&#xff0c;总想走别人…

大数据必学Java基础(一百二十四):Maven的常见插件

文章目录 Maven的常见插件 一、编辑器插件 二、资源拷贝插件 三、tomcat插件 Maven的常见插件

Dubbo 服务暴露

Dubbo 服务暴露 1. 服务暴露时序图 2. 源码分析 DubboBootstrap.exportServices 从配置管理器中获取到所有的ServiceConfig实例&#xff0c;遍历&#xff0c;然后一个一个的暴露。 ServiceConfig.export 如果DubboBootstrap为空&#xff0c;也就没有初始化&#xff0c;就初…

猴子都能看懂的噪声(noise)专题

背景 除了生成各种奇形怪状与自然景观&#xff0c;噪声也有其他美妙的用途&#xff01; 工作原因&#xff0c;经常接触与噪声相关的画面效果&#xff08;火焰啊&#xff0c;画面扰动啊之类的&#xff09;&#xff0c;做的时候一知半解&#xff0c;傻傻分不清楚各种形态的nois…

Java文件:XWPFDocument导出Word文档

文章目录一、前言二、基本的概念三、Maven依赖(JAR)四、Word模板1.正文段落2.正文表格3.页眉4.页脚五、XWPFDocument的使用5.4导出Word文档1.word模板2.PdfTest测试类3.ISystemFileService接口4.SystemFileServiceImpl实现类5.结果六、遇到问题5.1输出为word的时候换行符无效一…

NR5G基础概念扫盲

文章目录前言BWP未完待续前言 随着人工智能、万物互联时代的到来&#xff0c;人类社会进入到一个新的阶段。新兴的科技产业对信息社会基础设施提出了更高的要求&#xff0c;对低时延、大带宽、高流量的需求&#xff0c;催生了5G技术&#xff0c;并推动其蓬勃发展。通信&#x…

【深入浅出XML】包装纯粹信息的标记语言

XMLXML的定义和概述&#x1f3b6;XML的定义&#x1f3b6;XML的最好描述&#x1f3b6;HTML和XML的重要区别&#x1f3b6;XML的文档结构&#x1f3b6;其他一些标记XML和优势&#x1f3b6;XML的优势XML解析&#x1f3b6;DOM解析❔解析测试&#x1f91e;解析步骤&#x1f91e;案例测…