MySQL 账号权限

mysql 在安装好后,默认是没有远端管理账号。

一、账号管理

1. 查看账号列表

MySQL用户账号和信息存储在名为 mysql 的数据库中。一般不需要直接访问 mysql 数据库和表,但有时需要直接访问。例如,查看数据库所有用户账号列表时。

USE mysql;
SELECT DISTINCT(`user`) FROM user;
  • 数据库 mysql 有一个名为 user 的表,它包含所有用户账号。 user 表有一个名为 user 的字段,它存储账号名。
  • 进入数据库 mysql,查看 user 表中的 user 列,由于有些账号会分多行记录,DISTINCT 用于去重。
mysql> USE mysql;
Database changed

mysql> SELECT DISTINCT(`user`) FROM user;
+-----------+
| user      |
+-----------+
| root      |
| mysql.sys |
+-----------+
2 rows in set (0.07 sec)
  • user字段 表示账号名,表示当前数据库有 root 和 mysql.sys 两个账号。

2. 创建账号

可以使用 CREATE USER 语句创建一个新用户账号。

CREATE USER account_name IDENTIFIED BY 'password';
  • IDENTIFIED BY 用于设定密码,MySQL 会先将密码进行加密,在将其保存到 user 表。

使用 GRANT 或 INSERT GRANT 语句也可以创建用户账号,但一般来说 CREATE USER 是最清楚和最简单的句子。
使用 CREATE USER 创建用户账号,必须接着分配访问权限。新创建的用户账号没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作。
可以使用 GRANT 语句创建用户账号并授权,该语句会在文章授权部分讲解。用于账号都存储在数据库 mysql 的 user 表中,理论上也可以通过直接插入行到 user 表来增加用户,不过为安全起见,一般不建议这样做。MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。因此,最好不要直接修改数据库 mysql 中表的数据。

  • 为数据库添加账号 zhangsan 密码为 123456
mysql> CREATE USER zhangsan IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.06 sec)

mysql> SELECT DISTINCT(`user`) FROM user;
+-----------+
| user      |
+-----------+
| root      |
| zhangsan  |
| mysql.sys |
+-----------+
3 rows in set (0.07 sec)
  • 使用 zhangsan 的账号和密码登录,成功登录 MySQL。
[vagrant~] ]$mysql -uzhangsan -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
......
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
注意,不要直接在命令行中输入密码,因为命令行的输入历史都会被记录下来,很同意导致密码泄露。

3. 账号重命名

可以使用 RENAME USER 语句为账号重命名。

RENAME USER old_name TO new_name;
仅 MySQL 5及之后的版本支持  RENAME USER
MySQL 5以前的版本,要重命名一个用户,可使用 UPDATE 直接更新 user 表(谨慎操作)。
  • 将数据库账号 zhangsan 重命名为 lisi
mysql> RENAME USER zhangsan TO lisi;
Query OK, 0 rows affected (0.34 sec)

mysql> SELECT DISTINCT(`user`) FROM user;
+-----------+
| user      |
+-----------+
| lisi      |
| root      |
| mysql.sys |
+-----------+
3 rows in set (0.08 sec)

4. 重置账号密码

可以使用 SET PASSWORD 语句重置账号密码。

SET PASSWORD FOR account_name = Password('password');
使用  SET PASSWORD 重置账号密码。新密码必须通过 Password() 函数进行加密。

当不指定用户名时, SET PASSWORD 会重置当前登录用户的密码。

SET PASSWORD = Password('password');
  • 将账号 lisi 的密码改为 abcdef
mysql> SET PASSWORD FOR lisi = Password('abcdef');
Query OK, 0 rows affected (0.03 sec)
  • 使用 lisi 的账号和新密码登录,成功登录 MySQL。
[vagrant~] ]$mysql -ulisi -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
......
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
  • 将当前登录账号的密码重置为 10086
mysql> SET PASSWORD = Password('10086');
Query OK, 0 rows affected (0.00 sec)

5. 删除账号

可以使用 DROP USER 语句删除账号(以及相关的权限)。

DROP USER account_name;
MySQL 5及之后的版本, DROP USER 删除用户账号时会自动删除所有相关的账号权限。
在MySQL 5以前,  DROP USER 只能用来删除用户账号,不能删除相关的权限。因此,如果使用旧版本的MySQL,需要先用  REVOKE 删除与账号相关的权限,然后再用  DROP USER 删除账号。
  • 删除账号 lisi
mysql> DROP USER lisi;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT DISTINCT(`user`) FROM user;
+-----------+
| user      |
+-----------+
| root      |
| mysql.sys |
+-----------+
2 rows in set (0.07 sec)

二、权限管理

访问控制

MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。

考虑以下情况:

  • 多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;
  • 某些用户需要读表,但可能不需要更新表;
  • 你可能想允许用户添加数据,但不允许他们删除数据;
  • 某些用户(管理员)可能需要处理用户账号的权限,但多数用户不需要;
  • 你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据;
  • 你可能想根据用户登录的地点限制对某些功能的访问。

这些都只是例子,但有助于说明一个重要的事实,即你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。

严肃对待 root 账号的使用

MySQL 会默认创建一个名为 root 的用户账号,它对整个 MySQL 服务器具有完全的控制。不过在日常的 MySQL 操作中(特别是生产环境),决不能使用 root 账号登录。应该创建一系列的账号,有的用于管理,有的供用户使用,有的供开发人员使用,等等。应该严肃对待 root 账号的使用,仅在绝对需要时使用它。

访问控制的目的

  • 防止用户的恶意企图。
  • 防止用户无意识错误造成数据错乱。这是更为常见的情况。如错打 SQL 语句,在不合适的数据库中操作或其他一些用户错误。

通过保证用户不能执行他们不应该执行的语句,访问控制有助于避免这些情况的发生。

查看账号权限

SHOW GRANTS[ FOR account_name][@host];
  • 当不使用 FOR 指定用户时,默认是查看自己的账号权限。
  • 当使用 SHOW GRANTS FOR account_name@host 时,可查看指定账号在指定主机下的权限。可以在数据库 mysql 中使用 SELECT user,host FROM user; 查看账号的主机列表。
mysql> USE mysql;
Database changed

mysql> SELECT user,host FROM user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| root      | %         |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
3 rows in set (0.06 sec)

host字段: 表示账号可以在哪些主机或IP地址登录。% 代表任何IP地址都可以登录(生产环境中这样做是非常危险的),localhost 表示只允许本机登录。

将  host 设为  %,就代表任何IP地址都可以访问该数据库,在生产环境中这样做是非常危险的。
也可以使用其他手段来提高数据库安全性:比如设置防火墙、iptable;如果是云平台的数据库还可以通过安全组等方式提高安全性。
  • 查看自己的账号(root)权限。
mysql> SHOW GRANTS;
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
  • 查看账号 root 在 localhost 下的权限。
mysql> SHOW GRANTS FOR root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
输出结果显示账号  root 有一个权限  ALL PRIVILEGES ON *.*,表示  root 账号可以操作所有数据库和所有表。
  • 使用 CREATE USER 创建一个账号 zhangsan,并查看 zhangsan 的账号权限。
mysql> CREATE USER zhangsan IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR zhangsan;
+---------------------------------------------------------------------------------------------------------+
| Grants for zhangsan@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhangsan'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
输出结果显示账号  zhangsan 有一个权限  USAGE ON *.* 。 USAGE 表示根本没有权限,所以,此结果表示  zhangsan 对任意数据库和任意表上对任何东西都没有操作权限。
  • 登录账号 zhangsan,并尝试进入 test 数据库,被拒绝。
[vagrant~] ]$mysql -uzhangsan -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
......
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
ERROR 1044 (42000): Access denied for user 'zhangsan'@'%' to database 'test'
使用  CREATE USER 创建的用户账号默认没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作。

为已存在的账号设置权限

可以使用 GRANT 语句为账号设置权限。至少给出以下信息:

  • 账号名。
  • 被授予访问权限的数据库或表。
  • 要授予的权限。
GRANT <权限> ON <数据库名>.<表名> TO <账户名>;
  • 给账号 zhangsan 赋予在 test 数据库内的任意表查找和添加数据的权限。
mysql> GRANT SELECT, INSERT ON test.* TO 'zhangsan';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR zhangsan;
+---------------------------------------------------------------------------------------------------------+
| Grants for zhangsan@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhangsan'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, INSERT ON `test`.* TO 'zhangsan'@'%'                                                      |
+---------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
授权后必须FLUSH PRIVILEGES,否则无法立即生效。
  • 登录账号 zhangsan,可以成功进入到数据库 test,在 user 表中插入一条数据,并从 user 表查找数据。
mysql> USE test;
Database changed

mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| user           |
+----------------+
1 row in set (0.00 sec)

mysql> INSERT INTO user (username, email) VALUES ('zhangsan', 'zhangsan@gmail.com');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SELECT * FROM user;
+----+----------+--------------------+----------+--------+------------+
| id | username | email              | password | status | created_at |
+----+----------+--------------------+----------+--------+------------+
|  1 | zhangsan | zhangsan@gmail.com | NULL     |      0 |          0 |
+----+----------+--------------------+----------+--------+------------+
1 row in set (0.00 sec)
  • 当 zhangsan 想要使用 UPDATE 和 DELETE 命令修改和删除这条数据时,被提示没有权限。
mysql> UPDATE user SET email='zhangsanfeng@gmail.com' WHERE username='zhangsan';
ERROR 1142 (42000): UPDATE command denied to user 'zhangsan'@'localhost' for table 'user'

mysql> DELETE FROM user WHERE username='zhangsan';
ERROR 1142 (42000): DELETE command denied to user 'zhangsan'@'localhost' for table 'user'

 创建账号并设置权限

GRANT <权限> ON <数据库名>.<表名> TO <账户名>@<主机名/IP> IDENTIFIED BY '<密码>'[ WITH GRANT OPTION];
WITH GRANT OPTION 用于赋予账号使用  GRANT 和  REVOKE 命令的权限,用于给账号授权和取消授权。此权限级别极高,一般只会将此权限授予数据库管理员账号。
  • 创建账号 lisi 密码为 abcdef,在任何IP地址都可以登录,同时赋予 lisi 在 test 数据库内的任意表数据的增删改查权限。
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO 'lisi'@'%' IDENTIFIED BY 'abcdef';
Query OK, 0 rows affected (0.00 sec)
将  host 设为  %,就代表任何IP地址都可以访问该数据库,在生产环境中这样做是非常危险的。
也可以使用其他手段来提高数据库安全性:比如设置防火墙、iptable;如果是云平台的数据库还可以通过安全组等方式提高安全性。
  • 登录账号 lisi,可以成功进入到数据库 test,并对 user 表数据进行增删改查。
[vagrant~] ]$mysql -ulisi -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
......
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
Database changed

mysql> INSERT INTO user (username, email) VALUES ('lisi', 'lisi@gmail.com');
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> SELECT * FROM user;
+----+----------+--------------------+----------+--------+------------+
| id | username | email              | password | status | created_at |
+----+----------+--------------------+----------+--------+------------+
|  1 | zhangsan | zhangsan@gmail.com | NULL     |      0 |          0 |
|  2 | lisi     | lisi@gmail.com     | NULL     |      0 |          0 |
+----+----------+--------------------+----------+--------+------------+
2 rows in set (0.00 sec)

mysql> UPDATE user SET email='lisiguang@gmail.com' WHERE username='lisi';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> DELETE FROM user WHERE username='zhangsan';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM user;
+----+----------+---------------------+----------+--------+------------+
| id | username | email               | password | status | created_at |
+----+----------+---------------------+----------+--------+------------+
|  2 | lisi     | lisiguang@gmail.com | NULL     |      0 |          0 |
+----+----------+---------------------+----------+--------+------------+
1 row in set (0.00 sec)

撤销账号指定权限

可以使用 REVOKE 语句撤销账号指定权限。REVOKE 是 GRANT 的反操作。

REVOKE <权限> ON <数据库名>.<表名> FROM <账户名>;
  • 删除账号 lisi 的 DELETE 权限。
mysql> REVOKE DELETE ON test.* FROM lisi;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR lisi;
+-----------------------------------------------------------------------------------------------------+
| Grants for lisi@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'lisi'@'%' IDENTIFIED BY PASSWORD '*C2D24DCA38E9E862098B85BF0AB35CAA52803797' |
| GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'lisi'@'%'                                              |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.04 sec)
  • 当 lisi 想要使用 DELETE 命令删除数据时,被提示没有权限。
mysql> DELETE FROM user WHERE username='lisi';
ERROR 1142 (42000): DELETE command denied to user 'lisi'@'localhost' for table 'user'

权限说明

GRANT 和 REVOKE 可在几个层次上控制访问权限:

  • 整个服务器,使用 GRANT ALL 和 REVOKE ALL
  • 整个数据库,使用 ON database.*
  • 特定的表,使用 ON database.table
  • 特定的列;
  • 特定的存储过程。
权 限说 明
ALL除 GRANT OPTION 外的所有权限
ALTER使用 ALTER TABLE
ALTER ROUTINE使用 ALTER PROCEDURE 和 DROP PROCEDURE
CREATE使用 CREATE TABLE
CREATE ROUTINE使用 CREATE PROCEDURE
CREATE TEMPORARY TABLES使用 CREATE TEMPORARY TABLE
CREATE USER使用 CREATE USER、DROP USER、RENAME USER 和 REVOKE ALL PRIVILEGES
使用 CREATE VIEW
使用 DELETE
CREATE VIEW使用 DROP TABLE
DELETE使用 CALL 和存储过程
DROP使用 SELECT INTO OUTFILE 和 LOAD DATA INFILE
EXECUTE使用 GRANT 和 REVOKE
FILE使用 CREATE INDEX 和 DROP INDEX
GRANT OPTION使用 INSERT
INDEX使用 LOCK TABLES
INSERT使用 SHOW FULL PROCESSLIST
LOCK TABLES使用 FLUSH
PROCESS服务器位置的访问
RELOAD由复制从属使用
REPLICATION CLIENT使用 SELECT
REPLICATION SLAVE使用 SHOW DATABASES
SELECT使用 SHOW CREATE VIEW
SHUTDOWN使用 mysqladmin shutdown(用来关闭MySQL)
SUPER使用 CHANGE MASTER、KILL、LOGS、PURGE、MASTER 和 SET GLOBAL。还允许 mysqladmin 调试登录
UPDATE使用 UPDATE
USAGE无访问权限

权限控制流程

最后附一张《MySQL性能调优与架构设计》中的权限控制流程图。

以 SELECT id,name FROM test.t4 where status = 'deleted'; 为例。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Matplotlib数据可视化(二)

目录 1.rc参数设置 1.1 lines.linestype取值 1.2 lines.marker参数的取值 1.3 绘图中文预设 1.4 示例 1.4.1 示例1 1.4.2 示例2 1.rc参数设置 利用matplotlib绘图时为了让绘制出的图形更加好看&#xff0c;需要对参数进行设置rc参数设置。可以通过以下代码查看matplotli…

揭秘!体育比赛是如何快人一步购票的

最近&#xff0c;各类体育赛事正如火如荼的进行中&#xff0c;作为资深体育迷&#xff0c;看着赛场上的英雄们正在为荣誉和胜利而拼搏&#xff0c;内心也跟着激情澎湃起来。 为了享受精彩纷呈的赛事&#xff0c;越来越多体育迷选择亲临现场&#xff0c;感受更真实的比赛氛围&a…

VR仿真实训系统编辑平台赋予老师更多自由和灵活性

为了降低院校教师在VR虚拟现实方面应用的门槛&#xff0c;VR公司深圳华锐视点融合多年的VR虚拟仿真实训系统制作经验&#xff0c;制作了VR动物课件编辑器&#xff0c;正在逐渐受到师生们的关注和应用。 简单来说&#xff0c;VR畜牧专业课件编辑器是一种可以制作虚拟现实动物教学…

【WPF】 本地化的最佳做法

【WPF】 本地化的最佳做法 资源文件英文资源文件 en-US.xaml中文资源文件 zh-CN.xaml 资源使用App.xaml主界面布局cs代码 App.config辅助类语言切换操作类资源 binding 解析类 实现效果 应用程序本地化有很多种方式&#xff0c;选择合适的才是最好的。这里只讨论一种方式&#…

HTTP响应状态码大全:从100到511,全面解析HTTP请求的各种情况

文章目录 前言一、认识响应状态码1. 什么是HTTP响应状态码2. Http响应状态码的作用3. 优化和调试HTTP请求的建议 二、1xx 信息响应1. 认识http信息响应2. 常见的信息响应状态码 三、2xx 成功响应1. 认识HTTP成功响应2. 常见的成功响应状态码 四、3xx 重定向1. 认识http重定向2.…

WS2812B————动/静态显示

一&#xff0c;系统架构 二&#xff0c;芯片介绍 1.管脚说明 2.数据传输时间 3.时序波形 4.数据传输方法 5.常用电路连接 三&#xff0c;代码展示及说明 驱动模块 在驱动模块首先选择使用状态机&#xff0c;其中包括&#xff0c;空闲状态&#xff0c;复位清空状态&#xff0c…

LeetCode150道面试经典题-- 合并两个有序链表(简单)

1.题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2.示例 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输…

STM32 FLASH 读写数据

1. 《STM32 中文参考手册》&#xff0c;需要查看芯片数据手册&#xff0c;代码起始地址一般都是0x8000 0000&#xff0c;这是存放整个项目代码的起始地址 2. 编译信息查看代码大小&#xff0c;修改代码后第一次编译后会有这个提示信息 2.1 修改代码后编译&#xff0c;会有提示…

谈谈IP地址和子网掩码的概念及应用

个人主页&#xff1a;insist--个人主页​​​​​​ 本文专栏&#xff1a;网络基础——带你走进网络世界 本专栏会持续更新网络基础知识&#xff0c;希望大家多多支持&#xff0c;让我们一起探索这个神奇而广阔的网络世界。 目录 一、IP地址的概念 二、IP地址的分类 1、A类 …

centos安装pandoc

1、首先从官网下载安装包(Release pandoc 3.1.6 jgm/pandoc GitHub) 2、上传到服务器(这里放到 /root目录下了)&#xff0c;进行解压 tar -zxvf pandoc-3.1.6-linux-amd64.tar.gz&#xff0c;解压后的文件 3、然后使用命令 ln -s /root/pandoc-3.1.6/bin/pandoc /usr/bin/p…

20230818 数据库自整理部分

并发事务 脏读 一个事务读取到另一事务还没有提交的数据 事务B读取了事务A还没有提交的数据 不可重复读 一个事务先后读取同一条记录&#xff0c;但是两次读取的数据不同&#xff0c;称之为不可重复读 查询出来的数据不一样 1步骤b还没有提交 3步骤b已经提交 幻读 一个…

CSS中的transform属性有哪些值?并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ translate()⭐ rotate()⭐ scale()⭐ skew()⭐ matrix()⭐ scaleX() 和 scaleY()⭐ rotateX()、rotateY() 和 rotateZ()⭐ translateX() 和 translateY()⭐ skewX() 和 skewY()⭐ perspective()⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&…

解决生成式AI落地之困,亚马逊云科技提供完整解决方案

生成式AI技术无疑是当前最大的时代想象力之一。 资本、创业者、普通人都在涌入生成式AI里去一探究竟&#xff1a;“百模大战”连夜打响&#xff0c;融资规模连创新高&#xff0c;各种消费类产品概念不断涌现……根据Bloomberg Intelligence 的报告&#xff0c;2022年生成式AI 市…

8.利用matlab完成 符号微积分和极限 (matlab程序)

1.简述 一、符号微积分 微积分的数值计算方法只能求出以数值表示的近似解&#xff0c;而无法得到以函数形式表示的解析解。在 MATLAB 中&#xff0c;可以通过符号运算获得微积分的解析解。 1. 符号极限 MATLAB 中求函数极限的函数是 limit&#xff0c;可用来求函数在指定点的…

java面试基础 -- 方法重载 方法重写

目录 重载 重写 重载 方法的重载是指在同一个类中定义多个方法, 他们具有相同的名称, 但是具有不同的参数列表, 例如: public void myMethod(int arg1) {// 方法体 }public void myMethod(int arg1, int arg2) {// 方法体 }public void myMethod(String arg1) {// 方法体 }…

机器学习中基本的数据结构说明

数据维度或数据结构 当我们在机器学习或深度学习的领域内处理数据&#xff0c;我们通常会遇到四种主要的数据结构&#xff1a;标量&#xff0c;向量&#xff0c;矩阵和张量。理解这些基本数据结构是非常重要的&#xff0c;因为它们是机器学习算法和神经网络的核心。下面是对这…

牛客网华为OD前端岗位,面试题库练习记录02

题目一 删除字符串中出现次数最少的字符(HJ23) JavaScript Node ACM 模式 const rl require("readline").createInterface({ input: process.stdin }); var iter rl[Symbol.asyncIterator](); const readline async () > (await iter.next()).value;void (asyn…

工业物联网网关是什么?有什么作用?

工业物联网网关是工业领域中的一种重要设备&#xff0c;它在工业物联网系统中充当桥梁和连接器的角色。作为边缘计算的关键组件之一&#xff0c;工业物联网网关用于实现工业设备、传感器、PLC、DCS、OPC等各种设备的数据采集、处理、转发和控制。它在工业物联网系统中发挥着关键…

【图书推荐 | 测试】—《测试设计思想》

前言 随着科技的不断发展&#xff0c;互联网的不断进步&#xff0c;日益出现了一种趋势&#xff1a;测试设计将成为一种跨领域的综合性工作&#xff0c;测试者将成为一种跨领域的通用型人才。由此清华大学出版社推出了一本名为《测试设计思想》的书籍&#xff0c;由知名专家周…

Chrome

Chrome 简介下载 简介 Chrome 是由 Google 开发的一款流行的网络浏览器。它以其快速的性能、强大的功能和用户友好的界面而闻名&#xff0c;并且在全球范围内被广泛使用。Chrome 支持多种操作系统&#xff0c;包括 Windows、macOS、Linux 和移动平台。 Chrome官网: https://ww…