当前位置: 首页 > news >正文

MySQL日志管理和权限管理(重点)

目录

  • 一、日志管理
    • 1.错误日志
    • 2.二进制日志
    • 3.慢查询日志
  • 二、权限管理(重点)
    • 1.用户登录管理
    • 2.创建用户及授权
    • 3.刷新权限
    • 4.权限简介
    • 5.查看权限
    • 7.修改密码
    • 8、删除用户
    • 9、查看密码复杂度

一、日志管理

日志类型

  • 1、错误日志:启动,停止,关闭失败报错。rpm安装日志位置/var/log/mysqld.log 默认开启
  • 2、通用查询日志:所有的查询都记下来。默认关闭,一般不开启
  • 3、二进制日志(bin log):实现备份,增量备份。只记录改变数据,除了select都记
  • 4、中继日志(Relay log):读取主服务器的binlog,在slave机器本地回放,保持与主服务器数据一致
  • 5、slow log:慢查询日志,指导调优,定义某一个查询语句,执行时间过长,通过日志提供调优建议给开发人员
  • 6、DDL log: 数据定义语言的日志

1.错误日志

[root@localhost ~]# mkdir -p /usr/local/mysql/logs/
[root@localhost ~]# touch /usr/local/mysql/logs/mysqld.log
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/logs/
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
log-error=/usr/local/mysql/logs/mysqld.log
//log-error=/var/log/mysqld.log
//编译安装的在/usr/local/mysql/,yum安装的在/var/log/mysqld.log
[root@localhost ~]# systemctl restart mysqld

2.二进制日志

//Binary Log:需要提前开启
[root@localhost ~]# mkdir -p /usr/local/mysql/logs/mysql-bin
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/logs/mysql-bin
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
log-bin=/usr/local/mysql/logs/mysql-bin/mylog  //如果不指定路径默认在/var/lib/mysql
server-id=1   //AB复制的时候使用,为了防止相互复制,会设置一个ID,来标识谁产生的日志
[root@localhost ~]# systemctl restart mysqld
​
//查看binlog日志
[root@localhost]# cd /usr/local/mysql/logs/mysql-bin/
[root@localhost mysql-bin]# ls
mylog.000001  mylog.index
​
[root@localhost mysql-bin]# mysqlbinlog mylog.000001 -v
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8
​
//取消字符集查看binlog日志
[root@localhost mysql-bin]# mysqlbinlog --no-defaults mylog.000001  -v
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230706 11:51:53 server id 1  end_log_pos 123 CRC32 0x510185a5  Start: binlog v 4, server v 5.7.41-log created 230706 11:51:53 at startup
#Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
WTqmZA8BAAAAdwAAAHsAAAABAAQANS43LjQxLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABZOqZkEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AaWFAVE=
'/*!*/;
# at 123
#230706 11:51:53 server id 1  end_log_pos 154 CRC32 0x8293327a  Previous-GTIDs
#[empty]
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
#End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
#注:
1. 重启mysqld 会截断日志   
2. mysql> flush logs;   //会截断
3. mysql> reset master;   //删除所有binlog,不要轻易使用,相当于:rm -rf /
4. 删除部分mysql> PURGE BINARY LOGS TO 'mylog.000002';   //删除mysqllog.000002之前的日志 purge:清除
5. 暂停 仅当前会话SET SQL_LOG_BIN=0;  //关闭SET SQL_LOG_BIN=1;  //开启
=======================================================================
解决binlog日志不记录insert语句:
1. 登录mysql后,设置binlog的记录格式:mysql> set binlog_format=statement;
2. 然后,最好在my.cnf中添加:binlog_format=statement
3.修改完配置文件之后记得重启服务

3.慢查询日志

1、Slow Query Log :慢查询开关打开后,并且执行的SQL语句达到参数设定的阈值后,就会触发慢查询功能打印出日志
2、慢查询日志主要是记录执行时间超过指定阈值的SQL语句,这些执行时间较长的语句称为"慢查询"。
3、作用:监控和分析慢查询,有助于优化SQL和数据库架构。通过分析慢查询,可以了解哪些SQL执行效率低下,哪些表或者索引需要优化。

[root@localhost ~]# mkdir /usr/local/mysql/logs/mysql-slow/
[root@localhost ~]# touch /usr/local/mysql/logs/mysql-slow/slow.log
[root@localhost ~]# chown mysql.mysql /usr/local/mysql/logs/mysql-slow/
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
slow_query_log=1  //开启
slow_query_log_file=/usr/local/mysql/logs/mysql-slow/slow.log
long_query_time=3    //设置慢查询超时间,单位是秒,就是超过3秒的sql查询语句就被认为慢查询sql
[root@localhost ~]# systemctl restart mysqld
//验证查看慢查询日志
mysql> select sleep(6);     //等待 6 秒钟,然后返回结果[root@localhost ~]# cat /usr/local/mysql/logs/mysql-slow/slow.log

二、权限管理(重点)

1.用户登录管理

1.1.本地登录

[root@localhost ~]# mysql -uroot -p'Jianglt@123'

1.2.客户端远程登陆
需要注意的是:远程端也需要有mysql的客户端才行
客户端语法:mysql -u 用户名 -P 端口号 -p 密码 -h ip地址
-P端口号:如果是默认端口号就不用-P指定端口

[root@localhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -p'Jianglt@123'
-bash: mysql: 未找到命令
[root@localhost ~]# yum -y install mysql
[root@localhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -p'Jianglt@123'
ERROR 1130 (HY000): Host '192.168.17.128' is not allowed to connect to this MySQL server
如果报错进入server端服务器,登陆mysql执行授权操作
mysql> use mysql;
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;

1.3.免入库的方法执行sql语句

[root@localhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -p'Jianglt@123' -e 'show databases;'

-h 指定主机名 【默认为localhost】
-大P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
-e 接SQL语句,可以写多条用;隔开

[root@localhost ~]# mysql -h192.168.17.131 -P 3306 -uroot -p'Jianglt@123' -D mysql -e 'select * from user;'
//此处 -D mysql为指定登录的数据库//同时执行2条sql语句
[root@localhost ~]# mysql -h192.168.17.131  -P 3306 -uroot -p'Jianglt@123' -D company -e 'show tables;select  * from employee5;'
+-------------------+
| Tables_in_company |
+-------------------+
| employee5         |
| new_t1            |
| new_t2            |
+-------------------+
+----+---------+--------+------------+------------+-----------------+--------+--------+
| id | name    | sex    | hire_date  | post       | job_description | office | dep_id |
+----+---------+--------+------------+------------+-----------------+--------+--------+
|  3 | jack    | male   | 2018-02-02 | instructor | teach           |    501 |    100 |
|  4 | harry   | male   | 2018-02-02 | hr         | NULL            |    502 |    101 |
|  5 | lili    | female | 2018-02-06 | sale       | salecc          |    503 |    102 |
|  6 | xiaoguo | male   | 2018-02-05 | sale       |                 |    503 |    102 |
+----+---------+--------+------------+------------+-----------------+--------+--------+

​1.4.修改端口(rpm安装)

[root@localhost ~]# vim /etc/my.cnf
port=2222
[root@localhost ~]# systemctl restart mysqld
//在到【mysqld】标签下面添加port=指定端口重启服务

2.创建用户及授权

2.1.方法一:CREATE USER语句创建

#创建用户为tom,并设置密码
mysql> create user tom@'localhost' identified by 'Jianglt@123';#更新授权表
mysql> flush privileges; #查询现有的用户
mysql> select host,user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | tom           |
+-----------+---------------+
4 rows in set (0.00 sec)
注:
identified by 是设置密码的
在用户tom@'  ' 这里可以选择:
%:允许所有主机远程登陆包括localhost。也可以指定某个ip,允许某个ip登陆。也可以是一个网段。
localhos:只允许本地用户登录客户端登录的方式:%                       所有主机远程登录192.168.246.%           192.168.246.0网段的所有主机192.168.246.252         指定主机localhost               只允许本地用户登录
mysql> create user jack@'192.168.17.%' identified by'Jianglt@123';
Query OK, 0 rows affected (0.00 sec)
​
mysql> select host,user from mysql.user;
+--------------+---------------+
| host         | user          |
+--------------+---------------+
| %            | root          |
| 192.168.17.% | jack          |
| localhost    | mysql.session |
| localhost    | mysql.sys     |
| localhost    | tom           |
+--------------+---------------+
5 rows in set (0.00 sec)

2.2.方法二:GRANT 创建用户并同时授权
(注:mysql 8.0必须是先创建用户再授权)
语法:grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' IDENTIFIED BY '口令';
all privileges:授予所有权限,包括SELECT、INSERT、UPDATE、DELETE 等所有权限
on *.*:代表对所有数据库( * )下所有表(.*)

权限列表:

all所有权限(不包括授权权限)
select,update查询,更新的权限
select,insert查询,插入的权限

数据库.表名:

*.*所有库下的所有表
web.*web库下的所有表
web.student_infoweb库下的student_info表

单独授权

#给刚才创建的用户tom授权:
mysql> grant select,insert on *.* to 'tom'@'localhost' identified by 'Jianglt@123';
mysql> flush privileges;
案例:
#创建test用户,并授权所有权限,只允许本地登录,密码为ABcabc123.com@
mysql> grant all privileges on *.* to 'test'@'localhost' IDENTIFIED BY 'ABcabc123.com@';#如果用户已存在,则会修改test用户的登录方式(改成所有主机)和修改登陆密码;如果用户不存在,则会创建
mysql> grant all privileges on *.* to test@'%' identified by 'Jianglt@123';
mysql> flush privileges;

备注
1.无用户时可以创建用户并指定口令
2.口令有密码复杂性要求
3.%表示任意主机
口令复杂性要求出错提示:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
需要执行两个参数来把mysql默认的密码强度的取消

mysql> set global validate_password_policy=0; 
mysql> set global validate_password_mixed_case_count=2;
set global validate_password_policy=0;

控制MySQL密码强度验证的级别:
0 - 低级别,不做任何密码强度验证
1 - 中等级别,密码必须长度为8字节且不能和用户名相同
2 - 高级别,密码必须符合 medum 级别并且包括数字、大小写字母和特殊字符等
set global validate_password_mixed_case_count=2;
控制密码中必须包含的大小写字符数;设置为2表示要求密码中至少包含2个大小写字符

#修改远程登陆:将原来的localhost修改为%或者ip地址
mysql> select host,user from mysql.user;
+--------------+---------------+
| host         | user          |
+--------------+---------------+
| %            | root          |
| 192.168.17.% | jack          |
| localhost    | mysql.session |
| localhost    | mysql.sys     |
| localhost    | test          |
| localhost    | tom           |
+--------------+---------------+
7 rows in set (0.00 sec)
​
mysql> use mysql
mysql> update user set host = '192.168.17.%' where user = 'tom';
mysql> flush privileges;
​
mysql> select host,user from mysql.user;
+--------------+---------------+
| host         | user          |
+--------------+---------------+
| %            | root          |
| %            | test          |
| 192.168.17.% | jack          |
| 192.168.17.% | tom           |
| localhost    | mysql.session |
| localhost    | mysql.sys     |
| localhost    | test          |
+--------------+---------------+
7 rows in set (0.00 sec)

3.刷新权限

修改表之后需要刷新权限

mysql > flush privileges;

4.权限简介

权限权限级别权限说明
CREATE数据库、表或索引创建数据库、表或索引权限
DROP数据库或表删除数据库或表权限
GRANT OPTION数据库、表或保存的程序赋予权限选项
ALTER更改表,比如添加字段、索引等
DELETE删除数据权限
INDEX索引权限
INSERT插入权限
SELECT查询权限
UPDATE更新权限
LOCK TABLES服务器管理锁表权限
CREATE USER服务器管理创建用户权限
REPLICATION SLAVE服务器管理复制权限
SHOW DATABASES服务器管理查看数据库权限

5.查看权限

5.1.看自己的权限

mysql> show grants;
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
​
mysql> show grants\G
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

5.2.看别人的权限

mysql> show grants for tom@'localhost';
+--------------------------------------------------+
| Grants for tom@localhost                         |
+--------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'tom'@'localhost' |
+--------------------------------------------------+
1 row in set (0.00 sec)
​
mysql> show grants for tom@'localhost'\G
*************************** 1. row ***************************
Grants for tom@localhost: GRANT SELECT, INSERT ON *.* TO 'tom'@'localhost'  

6.移除用户权限
语法:REVOKE 权限 ON 数据库.数据表 FROM '用户'@'IP地址';
被回收的权限必须存在,否则会出错
整个数据库,使用 ON datebase.*;
特定的表:使用 ON datebase.table;
6.1.回收指定的权限

#先查看一下tom的权限
mysql> show grants for tom@'localhost';
+--------------------------------------------------+
| Grants for tom@localhost                         |
+--------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'tom'@'localhost' |
+--------------------------------------------------+
1 row in set (0.00 sec)#回收指定的权限
mysql> revoke select,insert on *.* from tom@'localhost';#回收完后再次查看
mysql> show grants for tom@'localhost';
+-----------------------------------------+
| Grants for tom@localhost                |
+-----------------------------------------+
| GRANT USAGE ON *.* TO 'tom'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)
#USAGE的意思:该用户仅被分配了最小的USAGE权限,只允许访问,但无法操作数据
mysql> flush privileges;

6.2.回收所有权限

#​先查看一下test的权限
mysql> show grants for test@'%';
+-------------------------------------------+
| Grants for test@%                         |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)#回收所有权限
mysql> revoke all privileges on *.* from test@'%'; 
mysql> show grants for test@'%';
+----------------------------------+
| Grants for test@%                |
+----------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
+----------------------------------+
1 row in set (0.00 sec)
mysql> flush privileges;

7.修改密码

7.1.root用户修改自己密码

方法一:#123为旧密码
mysql> mysqladmin  -uroot -p'Jianglt@123' password 'Jianglt@123!'
方法二:
mysql> SET PASSWORD='new_password';
报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
​
#你需要执行两个参数来把mysql默认的密码强度的取消了才行
mysql> set global validate_password_policy=0; 
mysql> set global validate_password_mixed_case_count=2;
#这时你再执行
SET PASSWORD = PASSWORD('12345678');

7.2.root修改其他用户密码

mysql> use mysql
#mysql> SET PASSWORD FOR test@'localhost'='new_password'
#用户     =  新密码                                
mysql> set password for test@'localhost'='12345678';
Query OK, 0 rows affected (0.00 sec) 

8、删除用户

8.1.方法一:DROP USER语句删除

mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)

8.2.方法二:DELETE语句删除

mysql> DELETE FROM mysql.user  WHERE user='tom' AND host='localhost';#更新授权表:
mysql> FLUSH PRIVILEGES;

9、查看密码复杂度

MySQL 默认启用了密码复杂度设置,插件名字叫做 validate_password,初始化之后默认是安装的
如果没有安装执行下面的命令会返回空或者没有值,这时需要安装该插件

#启用validate_password插件
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
#如果存在,会报错
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
ERROR 1125 (HY000): Function 'validate_password' already exists

9.1.查看密码复杂度

mysql> show variables like 'validate%';  #validate:验证
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

参数解释
validate_password_length :密码最少长度,默认值是8最少是0
validate_password_dictionary_file:用于配置密码的字典文件,字典文件中存在的密码不得使用。
validate_password_policy: 代表的密码策略,默认是MEDIUM(中等强度)
LOW: 不进行任何密码强度检查,任何密码都可以被接受。
MEDIUM: 密码长度至少8个字符,并且不能与用户名相同。
STRONG: 除了满足 MEDIUM 之外,密码还必须包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符。

validate_password_number_count :最少数字字符数,默认1最小是0
validate_password_mixed_case_count :最少的大写字符和小写字符数(同时有大写和小写),默认为1最少是0
validate_password_special_char_count :最少特殊字符数,默认1最小是0

​9.2.查看密码策略

mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)

策略
0 or LOW 设置密码长度(由参数validate_password_length指定)
1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符
2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中

9.3.查看密码的长度

mysql> select @@validate_password_length; 
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

​9.4.设置密码复杂度

mysql> set global validate_password_length=1;   #设置密码长度为1个
mysql> set global validate_password_number_count=2;  #设置密码数字最少为2个

9.5.设置密码复杂性策略

mysql> set global validate_password_policy=LOW;     #设置密码策略,数字也可以
mysql> flush privileges; #刷新授权

相关文章:

MySQL日志管理和权限管理(重点)

目录 一、日志管理1.错误日志2.二进制日志3.慢查询日志 二、权限管理(重点)1.用户登录管理2.创建用户及授权3.刷新权限4.权限简介5.查看权限7.修改密码8、删除用户9、查看密码复杂度 一、日志管理 日志类型 1、错误日志:启动,停止,关闭失败报…...

Maven 使用教程(二)

一、如何创建JAR并将其安装在本地存储库中? 制作JAR文件非常简单,可以通过执行以下命令来完成: mvn package现在可以查看${project.basedir}/target目录,您将看到生成的JAR文件。 现在,您需要将生成的工件&#xff0…...

[Swift]同一个工程管理多个Target

1.准备 先创建一个测试工程“ADemo”,右键其Target选择Duplicate,再复制一个Target为“ADemo2”。 再选择TARGETS下方的“”,添加一个APP到项目中,这个命名为“BDemo”。 2、管理多个Target 可以对三个target分别导入不同的框…...

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 在本文中,我们将讨论如何在.NET MA…...

1967作为子字符串出现在单词中的字符串数目

java解法,程度:简单 说明 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。 子字符串 是字符串中的一个连续字符序列。 示例 1: 输入:patter…...

CocosCreator 面试题(二)JavaScript中的prototype的理解

1、原型(prototype)的作用 在JavaScript中,每个函数都有一个特殊的属性叫做"prototype",它是一个对象。 原型(prototype)在JavaScript中用于实现对象之间的继承和共享属性。当创建一个函数时&am…...

python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果

作者:CSDN @ _养乐多_ 本文详细记录了从Excel读取用于训练机器学习模型的数据,包括独立变量和因变量数据,以供用于机器学习模型的训练。这些机器学习模型包括但不限于随机森林回归模型(RF)和支持向量机回归模型(SVM)。随后,我们将测试数据集应用于这些模型,进行预测和…...

pycharm连接gitlab

1、下载安装gitlab 下载地址:Git - Downloading Package 下载后傻瓜式安装,注意勾选配置环境变量 未配置自己配置,电脑-属性-高级系统配置-环境变量 系统变量path:添加git安装目录下bin目录 2、检验安装完成 桌面右键git-open…...

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序:排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。(比如:冒泡、插入、基数、归并) 非稳定排序:排…...

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五) 一、算法介绍二、具体实现1.代码2.效果一、算法介绍 继续SIFT关键点的提取介绍,之前已经基于高程和颜色分别提取了关键点,这里是基于强度信息,若遇到文件无法读取强度问题,请参考上一篇博文,下面是具体的实现…...

uniapp打包配置

安卓: 首先不管是什么打包都需要证书,安卓的证书一般都是公司提供或者自己去申请。然后把包名等下图框住的信息填上,点击打包即可。 ios:ios需要使用mac到苹果开发者平台去申请证书,流程可以参考下边的链接 参考链接…...

人大金仓分析型数据库最大量限制

数据库支持的最大量限制: 维度 限制 数据库大小 无限 表大小 无限 行大小 1.6 TB 域大小 1 GB 每个表的行数 281474976710656 (2^48) 每个表 / 视图的列数 1600 每个表的索引数 无限 每个索引的列数 32 每个表的表级约束 无限 表名长度 63 字节 列出的“无限”…...

centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口

当使用jps -lv查看java虚拟机进程 app.jar启动后,居然出现两个启动进程,而且他们的端口都一样,同一端口,是不允许启动两个相同app的。 使用进程ps查看进程工具 #ps -aux 参数说明: a: 显示跟当前终端关联的所有进…...

【算法|双指针系列No.7】leetcodeLCR 007. 三数之和

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...

ubuntu修改IP地址

参考:ubuntu修改配置IP地址和DNS的方法总结(4种)_ubuntu设置ip地址-CSDN博客 面对ubuntu18以上的版本,主要有两种界面:图形化界面和纯命令行界面。 图形化界面配置比较简单,命令行配置稍许复杂&#xff0c…...

java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中 讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类 但 这建立在 bean是自己定义的 如果 这是个第三方的类呢? 就比如 我们在 application 中写了一套数据源的加载规则 但需要用第…...

windows系统安装openssl并且转换证书格式

概述 碎碎念,如果你有MAC电脑,就别折腾了,直接用MAC电脑吧,不用安装直接用openssl 本文主要讲到了openssl的基本使用方法,开发环境为windows,开发工具为VS2019.本文主要是说明openssl如何使用,不介绍任何理…...

【GO】基础速成

简单介绍一下go好处 编译语言,可以提前报错同时又有python的一些优点,自带多线程 开始学习 学习网站:学习网站 值 包含:字符串、整型、浮点型、布尔型等等 字符串可以 进行拼接。 需要注意的是布尔型在go里面不自动转化为in…...

五子棋(C语言实现)

目录 构思 1、主程序 2、初始化 3、游戏菜单 4、打印棋盘 6、玩家下棋 7、判断输赢 8、功能整合 人机下棋 完整版: game.h game.c text.c 测试功能代码 构思 五子棋不必多介绍了,大家小时候都玩过哈。 我们要通过程序实现这个小游戏&…...

thymeleaf,bootstrap-fileinput 多文件上传

组件遍历上传 一、前端 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org" > <head><th:block th:include"include :: header(修改固定资产信息)" /><th:block th:include"include :: date…...

爬虫 | 基础模块了解

文章目录 &#x1f4da;http协议&#x1f4da;requests模块&#x1f4da;re模块&#x1f407; re.I 或 re.IGNORECASE&#x1f407;re.M或 re.MULTILINE&#x1f407;re.S 或 re.DOTALL&#x1f407; re.A 或 re.ASCII&#x1f407; re.X 或 re.VERBOSE&#x1f407;特殊字符类…...

CSS复习笔记

CSS 文章目录 CSS1.概念2.CSS 引入方式3.选择器基础选择器:标签选择器类选择器id 选择器通配符选择器 复合选择器:**后代选择器****子代选择器****并集选择器****交集选择器-了解****伪类选择器** 结构伪类选择器&#xff1a;**:nth-child&#xff08;公式&#xff09;**伪元素…...

编译linux的设备树

使用make dtbs命令时 在arch/arm 的目录Makefile文件中有 boot : arch/arm/boot prepare 和scripts是空的 在文件scripts/Kbuild.include中 变量build : -f $(srctree)/scripts/Makefile.build obj build变量虽然没有在arch/arm 的目录Makefile文件中定义&#xff0c;但…...

⛳ MyBatis 中 Mapper 接口工作原理实例解析

&#x1f38d;目录 ⛳ MyBatis 中 Mapper 接口工作原理实例解析&#x1f3a8; 一、Mapper 接口是怎么找到实现类的&#xff1f;&#x1f43e; 二、从一段代码看起&#x1f69c; 三、Mapper 接口&#x1f3ed; 四、Mapper 接口的动态代理类的生成&#x1f381; 五、总结 ⛳ MyBa…...

Android 音频可视化

Android音频可视化&#xff0c;指的是将音频的频率绘制到屏幕上&#xff0c;达到一种视觉效果&#xff0c;使播放或录制过程更加生动形象。 在Android进行视频可视化涉及的三个主要知识点,其中比较难以理解的傅里叶变换公式。 Android原生的Visualizer使用&#xff08;获取频…...

刷机与救砖避坑指南

提示&#xff1a;快速进行刷机和救砖学习理解 文章目录 一、刷机1.什么是刷机&#xff0c;需要进行那些准备&#xff1f;2.刷机1.解开bl&#xff08;bootloader&#xff09;锁2.刷入TWRP和Magsik3.刷入第三方ROM 二、救砖&#xff08;9008&#xff09;1.手机售后一键线刷包&…...

软件建模知识点

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…...

WSL 配置 Linux

WSL 配置 Linux Windows 启动 Linux 子系统 控制面板 -> 程序和功能&#xff0c; 将 适用于 Linux 的 Windows 子系统 勾选。 安装 Terminal 在 Microsoft Store 市场上搜索 Terminal 安装 Windows Terminal。 安装 编译工具链 sudo apt update # 更新软件包 sudo apt i…...

VS Code:CMake配置

概述 在VSCode和编译器MinGW安装完毕后&#xff0c;要更高效率的进行C/C开发&#xff0c;采用CMake。CMake是一个开源、跨平台的编译、测试和打包工具&#xff0c;它使用比较简单的语言描述编译&#xff0c;安装的过程&#xff0c;输出Makefile或者project文件&#xff0c;再去…...

Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)

Flex 词法分析 此为电子科技大学编译技术 实验1&#xff1a;词法分析 将具体实现中的三个文件和自己的实验报告一起上传才能通过 根据词法分析实验中给定的文法&#xff0c;利用 flex 设计一词法分析器&#xff0c;该分析器从标准输入读入源代码后&#xff0c;输出单词的类别编…...