【Mysql】用户授权(GRANT)语法介绍和示例

news/2024/6/24 8:57:08/文章来源:https://blog.csdn.net/weixin_44823875/article/details/137218891

【Mysql】用户授权(GRANT)语法介绍和示例

  • 【一】Mysql用户授权(GRANT)语法
    • 【1】授予用户权限语法
    • 【2】GRANT语句中的<权限类型>的使用说明如下:
      • (1)授予数据库权限时,<权限类型>可以指定为以下值:
      • (2)授予表权限时,<权限类型>可以指定为以下值:
      • (3)授予列权限时,<权限类型>的值只能指定为 SELECT、INSERT 和 UPDATE,同时权限后面需要加上列名列表 column-list。
      • (4)最有效率的权限是用户权限。
    • 【3】WITH GRANT OPTION的作用
    • 【4】使用 SELECT 语句查询所有用户的权限,如下所示。
  • 【二】mysql授权GRANT ALL PRIVILEGES三种示例
    • (1)改表法
    • (2)授权法
    • (3)另外一种方法
    • (4)其他
  • 【三】MySQL增删改查报(INSERT、DROP、UPDATE、SELECT、CREATE)command denied to user 'xx'@'localhost' for table 'test'
    • 【1】查看用户权限
    • 【2】创建mysql用户
    • 【3】用户权限授权

【一】Mysql用户授权(GRANT)语法

当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用 SHOW GRANT FOR 语句来查询用户的权限。

注意:新创建的用户只有登录 MySQL 服务器的权限,没有任何其他权限,不能进行其他操作。

USAGE ON*.* 表示该用户对任何数据库和任何表都没有权限。

【1】授予用户权限语法

对于新建的 MySQL 用户,必须给它授权,可以用 GRANT 语句来实现对新建用户的授权。
语法格式:

GRANT
<权限类型> [ ( <列名> ) ] [ , <权限类型> [ ( <列名> ) ] ]
ON <对象> <权限级别> TO <用户>
其中<用户>的格式:
<用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>
[ WITH GRANT OPTION]
| MAX_QUERIES_PER_HOUR <次数>
| MAX_UPDATES_PER_HOUR <次数>
| MAX_CONNECTIONS_PER_HOUR <次数>
| MAX_USER_CONNECTIONS <次数>

语法说明如下:
(1)<列名>
可选项。用于指定权限要授予给表中哪些具体的列。

(2) ON 子句
用于指定权限授予的对象和级别,如在 ON 关键字后面给出要授予权限的数据库名或表名等。

(3)<权限级别>
用于指定权限的级别。可以授予的权限有如下几组:
1-列权限,和表中的一个具体列相关。例如,可以使用 UPDATE 语句更新表 students 中 student_name 列的值的权限。
2-表权限,和一个具体表中的所有数据相关。例如,可以使用 SELECT 语句查询表 students 的所有数据的权限。
3-数据库权限,和一个具体的数据库中的所有表相关。例如,可以在已有的数据库 mytest 中创建新表的权限。
4-用户权限,和 MySQL 中所有的数据库相关。例如,可以删除已有的数据库或者创建一个新的数据库的权限。

对应地,在 GRANT 语句中可用于指定权限级别的值有以下几类格式:
1-:表示当前数据库中的所有表。
2-
.:表示所有数据库中的所有表。
3-db_name.
:表示某个数据库中的所有表,db_name 指定数据库名。
4-db_name.tbl_name:表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名。
5-tbl_name:表示某个表或视图,tbl_name 指定表名或视图名。
6-db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名。
7-TO 子句:用来设定用户口令,以及指定被赋予权限的用户 user。若在 TO 子句中给系统中存在的用户指定口令,则新密码会将原密码覆盖;如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户指定口令。

【2】GRANT语句中的<权限类型>的使用说明如下:

(1)授予数据库权限时,<权限类型>可以指定为以下值:

SELECT:表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
INSERT:表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
DELETE:表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
UPDATE:表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
REFERENCES:表示授予用户可以创建指向特定的数据库中的表外键的权限。
CREATE:表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
ALTER:表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
SHOW VIEW:表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
CREATE ROUTINE:表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
ALTER ROUTINE:表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
INDEX:表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
DROP:表示授予用户可以删除特定数据库中所有表和视图的权限。
CREATE TEMPORARY TABLES:表示授予用户可以在特定数据库中创建临时表的权限。
CREATE VIEW:表示授予用户可以在特定数据库中创建新的视图的权限。
EXECUTE ROUTINE:表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
LOCK TABLES:表示授予用户可以锁定特定数据库的已有数据表的权限。
ALL 或 ALL PRIVILEGES:表示以上所有权限。

(2)授予表权限时,<权限类型>可以指定为以下值:

SELECT:授予用户可以使用 SELECT 语句进行访问特定表的权限。
INSERT:授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限。
DELETE:授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限。
DROP:授予用户可以删除数据表的权限。
UPDATE:授予用户可以使用 UPDATE 语句更新特定数据表的权限。
ALTER:授予用户可以使用 ALTER TABLE 语句修改数据表的权限。
REFERENCES:授予用户可以创建一个外键来参照特定数据表的权限。
CREATE:授予用户可以使用特定的名字创建一个数据表的权限。
INDEX:授予用户可以在表上定义索引的权限。
ALL 或 ALL PRIVILEGES:所有的权限名。

(3)授予列权限时,<权限类型>的值只能指定为 SELECT、INSERT 和 UPDATE,同时权限后面需要加上列名列表 column-list。

(4)最有效率的权限是用户权限。

授予用户权限时,<权限类型>除了可以指定为授予数据库权限时的所有值之外,还可以是下面这些值:
1-CREATE USER:表示授予用户可以创建和删除新用户的权限。
2-SHOW DATABASES:表示授予用户可以使用 SHOW DATABASES 语句查看所有已有的数据库的定义的权限。

【实例】使用 GRANT 语句创建一个新的用户 testUser,密码为 testPwd。用户 testUser 对所有的数据有查询、插入权限,并授予 GRANT 权限。输入的 SQL 语句和执行过程如下所示。

mysql> GRANT SELECT,INSERT ON *.*-> TO 'testUser'@'localhost'-> IDENTIFIED BY 'testPwd'-> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.05 sec)

使用 SELECT 语句查询用户 testUser 的权限,如下所示。

mysql> SELECT Host,User,Select_priv,Grant_priv-> FROM mysql.user-> WHERE User='testUser';
+-----------+----------+-------------+------------+
| Host      | User     | Select_priv | Grant_priv |
+-----------+----------+-------------+------------+
| localhost | testUser | Y           | Y          |
+-----------+----------+-------------+------------+
1 row in set (0.01 sec)

【3】WITH GRANT OPTION的作用

数据库添加用户语句:

grant all privileges on testdb.* to ‘test_user’@’localhost’ identified by “jack” with grant option;

WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。

如果不想这个用户有这个grant的权限,可以不加这句

【4】使用 SELECT 语句查询所有用户的权限,如下所示。

MySQL [mysql]>  SELECT Host,Db,User,Select_priv,Grant_priv FROM mysql.db ; 
+--------------+--------------------+---------------+-------------+------------+
| Host         | Db                 | User          | Select_priv | Grant_priv |
+--------------+--------------------+---------------+-------------+------------+
| localhost    | performance_schema | mysql.session | Y           | N          |
| localhost    | sys                | mysql.sys     | N           | N          |
| %            | cloud_manager_v2   | feeduser      | Y           | N          |
| %            | xiaojin_airflow    | rw_airflow    | Y           | N          |
| 10.20.250.12 | xiaojin_airflow    | rw_airflow    | Y           | N          |
| 10.20.250.13 | xiaojin_airflow    | rw_airflow    | Y           | N          |
| 10.20.250.12 | data_center        | rw_airflow    | Y           | N          |
| 10.20.250.13 | data_center        | rw_airflow    | Y           | N          |
+--------------+--------------------+---------------+-------------+------------+
8 rows in set (0.00 sec)MySQL [mysql]>  SELECT Host,User,Select_priv,Grant_priv FROM mysql.user ; 
+--------------+---------------+-------------+------------+
| Host         | User          | Select_priv | Grant_priv |
+--------------+---------------+-------------+------------+
| localhost    | root          | Y           | Y          |
| localhost    | mysql.session | N           | N          |
| localhost    | mysql.sys     | N           | N          |
| %            | root          | Y           | Y          |
| %            | feeduser      | N           | N          |
| %            | rw_airflow    | N           | N          |
| 10.20.250.12 | rw_airflow    | N           | N          |
| 10.20.250.13 | rw_airflow    | N           | N          |
+--------------+---------------+-------------+------------+
8 rows in set (0.00 sec)

【二】mysql授权GRANT ALL PRIVILEGES三种示例

(1)改表法

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从"localhost"改成"%"

mysql -u root -p vmware
mysql>use mysql;  
mysql>update user set host = '%' where user = 'root';  
mysql>select host, user from user; 

(2)授权法

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

1-如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY  'mypassword' WITH GRANT OPTION; 
FLUSH   PRIVILEGES; 

2-如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;   
FLUSH   PRIVILEGES;  

注意授权后必须FLUSH PRIVILEGES;否则无法立即生效。

(3)另外一种方法

在安装mysql的机器上运行:

1)、d:\mysql\bin\>mysql -h localhost -u root 
//这样应该可以进入MySQL服务器 
2)、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION 
//赋予任何主机访问数据的权限 
3)、mysql>FLUSH PRIVILEGES 
//修改生效 
4)、mysql>EXIT 
//退出MySQL服务器 

这样就可以在其它任何的主机上以root身份登录啦!

(4)其他

mysql> grant all privileges on *.* to 'energy_pf'@'192.168.2.65' identified by 'energy_pf' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> plush privileges;

允许用户energy_pf从ip为192.168.2.65的主机连接到mysql服务器的任意数据库(.),并使用energy_pf作为密码

【三】MySQL增删改查报(INSERT、DROP、UPDATE、SELECT、CREATE)command denied to user ‘xx’@‘localhost’ for table ‘test’

【1】查看用户权限

show grants; 

结果

+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.01 sec)
————————————————

【2】创建mysql用户

mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password';

命令说明:
(1)username:新建的用户名,用于链接数据库的登录名
(2)host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
(3)password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

列举一些常见的创建例子:

mysql> CREATE USER 'mumu'@'localhost' IDENTIFIED BY '123456';  # 只能本地登录
mysql> CREATE USER 'thomas'@'192.168.1.73' IDENDIFIED BY '123456';# 仅限192.168.1.73登录
mysql> CREATE USER 'lin'@'%' IDENTIFIED BY '123456'; # 任意远程主机,需要密码
mysql> CREATE USER 'huea'@'%' IDENTIFIED BY '';# 任意远程主机,无需密码
mysql> CREATE USER 'thomas'@'%';# 任意远程主机,无需密码

以上就完成了用户的创建,用户也能成功连接上,但是一旦对数据库增删改查操作均会报错:

INSERTDROPUPDATESELECTCREATE, ALTER等)command denied to user 'xxx'@'localhost' for table 'table'

出现这个问题原因在于该用户没有这些权限,解决方式就是需要给用户授权增删改查的权限。

【3】用户权限授权

mysql> GRANT privileges ON databasename.tablename TO 'username'@'host'

命令说明:
privileges: 要赋予用户的权限,如INSERT、DROP、UPDATE、SELECT、CREATE, ALTER等
databasename: 数据库,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
tablename: 数据表,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
username: 用户名,用于链接数据库的登录名
host: 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

列举一些常见的创建例子:

mysql> GRANT SELECT, INSERT ON test.user TO 'thomas'@'%'; # 给thomas分配test库的user表查询、插入权限 
mysql> GRANT ALL ON *.* TO 'thomas'@'%'; # 给thomas分配所有库所有表的所有权限  
mysql> GRANT ALL ON test.* TO 'thomas'@'%'; # 给thomas分配test库的所有表的所有权限

注意:以上面这种授权方式给用户授权权限,该用户没有权限创建新用户,更没权限授权用户的权限

(1)创建用户

mysql> CREATE USER 'lin'@'%' IDENTIFIED BY '123456';
1227 - Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

(2)用户授权

mysql> GRANT INSERT ON `comment`.* TO 'lin'@'%';
1044 - Access denied for user 'lin'@'%' to database 'comment'

如果想让创建的用户经过授权也可以创建并授权的权限,那么需要用以下命令:

mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

也就是在常规授权的命令后加上’WITH GRANT OPTION’即可,如果想让执行后的命令立即生效,可以在执行语句后执行以下命令:

mysql> FLUSH PRIVILEGES;

FLUSH PRIVILEGES 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险!!

设置与更改用户密码

SET PASSWORD FOR 'username'@'host' = '123456';
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果是当前登陆用户用:

SET PASSWORD = '123456';

撤销用户权限
REVOKE跟GRANT的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

REVOKE privilege ON databasename.tablename FROM 'lin'@'host';

删除用户

DROP USER 'lin'@'host';

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

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

相关文章

非关系型数据库--------------Redis配置与优化

目录 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.2.1非关系型数据库产生背景 1.3关系型非关系型区别 二、Redis 2.1redis简介 2.2Redis命中机制和淘汰机制 2.3Redis 具有以下优点 2.3.1具有极高的数据读写速度 2.3.2redis支持丰富的数据…

2024年最受欢迎的 19 个 VS Code 主题排行榜

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

四川古力未来科技抖音小店:把握电商新风口,前景无限广阔

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限潜力&#xff0c;成为了众多创业者和投资者关注的焦点。四川古力未来科技抖音小店&#xff0c;正是站在这一风口浪尖上的新兴力量&#xff0c;其前景之广阔&#xff0c;令人瞩目。 抖音&#xff0c;作为一款…

[Python人工智能] 四十五.命名实体识别 (6)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型(注意力问题探讨)

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解融合Bert的实体识别研究,使用bert4keras和kears包来构建Bert+BiLSTM-CRF模型。这篇文章将详细结合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别…

RWKV_Pytorch:支持多硬件适配的开源大语言模型推理框架

亲爱的技术探索者们&#xff0c;今天我要向大家隆重推荐一个在开源社区中崭露头角的项目——RWKV_Pytorch。这是一个基于Pytorch的RWKV大语言模型推理框架&#xff0c;它不仅具备高效的原生Pytorch实现&#xff0c;而且还扩展了对多种硬件的适配支持&#xff0c;让模型的部署和…

Ubuntu joystick 测试手柄 xbox

Ubuntu joystick 测试手柄 xbox 测试使用Ubuntu20.04 测试环境在工控机 安装测试 实际测试使用的手柄是北通阿修罗2pro 兼容xbox Ubuntu20.04主机 连接手柄或者无线接收器后查看是否已经检测到&#xff1a; ls /dev/input找到输入中的 js0 即为手柄输入 需要安装joysti…

数据可视化为什么能在智慧港口中发挥作用?

随着全球贸易活动日益频繁&#xff0c;港口作为国际贸易的重要节点&#xff0c;其运营效率与智能化程度直接影响着整个物流链的效能。在此背景下&#xff0c;智慧港口的概念应运而生&#xff0c;它借助先进的信息技术手段对传统港口进行改造升级&#xff0c;其中&#xff0c;数…

HarmonyOS 应用开发之任务(Mission)管理场景介绍

任务&#xff08;Mission&#xff09;管理相关的基本概念如下&#xff1a; AbilityRecord&#xff1a;系统服务侧管理一个UIAbility实例的最小单元&#xff0c;对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。MissionRecord&#xff1a;任务…

物联网学习2、MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

Kubernetes(K8S)学习(四):K8S之Storage

K8S之Storage 一、Storage1.1、Volume1.2、PersistentVolume&#xff08;PV&#xff09;1.3、PersistentVolumeClaim&#xff08;PVC&#xff09;1.4、StorageClass1.5、PV的状态和回收策略 kubernetes使用NFS共享存储有两种方式&#xff1a; &#xff08;1&#xff09;手动方式…

Spring——框架介绍

每一个Java技术中都会存在一个“核心对象”&#xff0c;这个核心对象来完成主要任务为了得到核心对象&#xff0c;需要创建若干个辅助对象&#xff0c;从而导致开发步骤增加JDBC中 JDBC 核心对象——PreparedStatement 通过DriverManager得到数据库厂商提供的Driver对象DriverM…

如何在Win10部署Oracle数据库并实现无公网IP使用PL SQL远程访问

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

Vivado VIO IP核(Virtual Input/Output)的使用

前言 在Aurora通信工程中&#xff0c;有一个专门产生Aurora数据包的模块&#xff0c;该模块在Aurora ip准备好后会自动根据计数器产生发送的数据包。 但现在希望能实时地控制数据包的发送以及中断&#xff0c;这时候可以采用vivado的vio ip核处理。 VIO IP 调用VIO IP核可以…

MySQL主从复制与读写分离(重要!)

目录 引言 一、主从复制 1.1 MySQL主从复制原理 1.1.1 为什么进行复制&#xff1f; 1.1.2 谁复制谁&#xff1f; 1.1.3 数据放在什么地方&#xff1f; 1.1.4 MySQL主从版本问题 1.2 MySQL的复制类型 1.3 MySQL主从复制的工作过程 1.4 MySQL主从复制延迟原因 1.5 MyS…

云原生(七)、Kubernetes初学 + 裸机搭建k8s集群

Kubernetes简介 Kubernetes&#xff08;通常简称为K8s&#xff09;是一个开源的容器编排平台&#xff0c;最初由Google设计和开发&#xff0c;现在由Cloud Native Computing Foundation&#xff08;CNCF&#xff09;维护。它旨在简化容器化应用程序的部署、扩展和管理。 Kube…

[GN] Spring Security 和 SHiro的配置使用

文章目录 SHiroSpring Security SHiro Shrio安全框架更灵活和简单&#xff0c;代码易读使用简单 但授权第三方登录需要手动实现 配置shrio的核心内容 安全管理器 realm Configuration public class ShiroConfig {//0.配置shrioFilterBean("shiroFilter")public Sh…

什么是跨域问题,SpringBoot如何解决?

目录 什么是跨域&#xff1f;如何解决跨域问题&#xff1f;JSONP (JSON with Padding)CORS(跨源资源共享)CrossOrigin注解实现WebMvcConfigurer addCorsMappingsCorsFilter 代理服务器反向代理(推荐) 什么是跨域&#xff1f; 跨域是指浏览器为了安全性&#xff0c;设定的一种同…

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…

【Java面试题系列】基础篇

目录 基本常识标识符的命名规则八种基本数据类型的大小&#xff0c;以及他们的封装类3*0.10.3返回值是什么short s1 1; s1 s1 1;有什么错? short s1 1; s1 1;有什么错?简述&&与&的区别&#xff1f;简述break与continue、return的区别&#xff1f;Arrays类的…

常见的三维建模软件有哪些?

云端地球是一款免费的在线实景三维建模软件&#xff0c;不需要复杂的技巧&#xff0c;只要需要手机&#xff0c;多拍几张照片&#xff0c;就可以得到完整的三维模型&#xff01; 无论是大场景倾斜摄影测量还是小场景、小物体建模&#xff0c;都可以通过云端地球将二维数据向三…