12. MySQL 日志

文章目录

  • 【 1. 日志的基本原理 】
  • 【 2. 错误日志 Error Log 】
    • 2.1 启动和设置错误日志
    • 2.2 查看错误日志
    • 2.3 删除错误日志
  • 【 3. 二进制日志 Binary Log 】
    • 3.1 启动和设置二进制日志
    • 3.2 查看二进制日志
    • 3.3 删除二进制文件
      • 删除所有二进制日志
      • 删除小于指定编号的二进制日志
      • 删除创建时间之前的二进制日志
    • 3.4 暂时停止二进制日志
    • 3.5 二进制日志的其他设置
    • 3.6 使用二进制日志还原数据库
  • 【 4. 通用查询日志 General Query Log 】
    • 4.1 启动和设置通用查询日志
    • 4.2 查看通用查询日志
    • 4.3 停止通用查询日志
    • 4.4 删除通用查询日志
  • 【 5. 慢查询日志 Slow Query Log 】
    • 5.1 启动和设置慢查询日志
    • 5.2 查看慢查询日志
    • 5.3 删除慢查询日志

【 1. 日志的基本原理 】

  • 任何一种数据库,都会拥有各种各样的 日志 ,用来 记录数据库的运行情况、日常操作和错误等信息,分析这些日志,可以帮助我们了解 MySQL 数据库的运行情况、日常操作、错误信息和哪些地方需要进行优化
    例如,当用户 root 登录到 MySQL 服务器后,就会在日志文件里记录该用户的登录事件、执行操作等信息。当 MySQL 服务器运行时出错,出错信息就会被记录到日志文件里。
  • MySQL 也有不同类型的日志文件,各自存储了不同类型的日志。
    MySQL中4 种日志:
    • 在 MySQL 所支持的日志文件里,除了二进制日志文件外,其它日志文件都是文本文件
    • 默认情况下 MySQL 只会启动错误日志文件,而 其它日志则需要手动启动
日志类型作用
二进制日志该日志文件会以 二进制的形式记录数据库的各种操作,但不记录查询语句。
错误日志该日志文件会记录 MySQL 服务器的启动、关闭和运行错误 等信息。
通用查询日志该日志记录 MySQL 服务器的启动和关闭信息、客户端的连接信息、更新、查询数据记录的 SQL 语句 等。
慢查询日志记录执行事件超过指定时间的操作,通过工具分析慢查询日志可以定位 MySQL 服务器性能瓶颈所在。
  • 日志的缺点
    • 启动日志后,虽然可以对 MySQL 服务器性能进行维护,但是会 降低 MySQL 的执行速度
      例如,一个查询操作比较频繁的 MySQL 中,记录通用查询日志和慢查询日志要花费很多的时间。
    • 日志文件还会 占用大量的硬盘空间。对于用户量非常大、操作非常频繁的数据库,日志文件需要的存储空间甚至比数据库文件需要的存储空间还要大。

【 2. 错误日志 Error Log 】

  • 错误日志(Error Log) 是 MySQL 中最常用的一种日志,主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况 等。
  • 错误日志中记录的并非全是错误信息 ,例如 MySQL 如何启动 InnoDB 的表空间文件、如何初始化自己的存储引擎等,这些也记录在错误日志文件中。

2.1 启动和设置错误日志

  • MySQL 数据库中,默认开启错误日志功能 。一般情况下,错误日志存储在 MySQL 数据库的data 数据文件夹下,通常名称为 hostname.err,其中 hostname 表示 MySQL 服务器的主机名。
  • 在 MySQL 配置文件中(在Linux上通常是 my.cnf ,在Windows上是 my.ini ,可以用记事本打开),错误日志所记录的信息可以通过 log-error 和 log-warnings 来定义:
    • log-err 定义 是否启用错误日志功能和错误日志的存储位置
    • log-warnings 定义是否将警告信息也记录到错误日志中。
  • 将 log_error 选项加入到 MySQL 配置文件的 [mysqld] 组中,基本语法:
    • dir 参数指定错误日志的存储路径;
    • filename 参数指定错误日志的文件名;
    • 省略参数时文件名默认为主机名即 hostname.err,存放在 Data 目录中。
    • 重启 MySQL 服务后,参数开始生效,可以在指定路径下看到 filename.err 的文件 。
log-error=dir/{filename}

2.2 查看错误日志

  • 应用背景
    MySQL 服务器发生异常时,管理员可以 在错误日志中找到发生异常的时间、原因,然后根据这些信息来解决异常
  • MySQL 中,SHOW 命令可以 查看错误日志文件所在的目录及文件名信息
    例如下面的结果显示我的错误日志文件在MySQL安装路径的DATA下。
SHOW VARIABLES LIKE 'log_error';

在这里插入图片描述

  • 错误日志以文本文件的形式存储,直接通过记事本查看:
    在这里插入图片描述

2.3 删除错误日志

  • 可以在 cmd 命令行 中使用 mysqladmin 命令来开启新的错误日志,以 保证 MySQL 服务器上的硬盘空间
    基本语法:
    • 执行该命令后,MySQL 服务器首先会 自动创建一个新的错误日志,然后 将旧的错误日志更名为 filename.err-old
mysqladmin -uroot -p flush-logs

在这里插入图片描述

【 3. 二进制日志 Binary Log 】

  • 二进制日志(Binary Log) 也可叫作 变更日志(Update Log) ,主要用于 记录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,不包含数据记录查询操作
  • 应用背景
    如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。
  • 默认情况下,二进制日志功能是关闭的。 可以通过以下命令查看二进制日志是否开启,基本语法:
SHOW VARIABLES LIKE 'log_bin';

在这里插入图片描述

3.1 启动和设置二进制日志

  • 在 MySQL 中,可以通过 在配置文件的[mysqld]组中添加 log-bin 选项来开启二进制日志
    基本语法:
    • dir 参数指定二进制文件的存储路径;
    • filename 参数指定二进制文件的文件名,其形式为 filename.number,number 的形式为 000001、000002 等。
    • 如果没有 dir 和 filename 参数,二进制日志将默认存储在数据库的data数据目录下,默认的文件名为 hostname-bin.number,其中 hostname 表示主机名。
      比如我的是 PROMETHUS-BIN
    • 每次重启 MySQL 服务后,都会生成一个新的二进制日志文件,这些日志文件的文件名中 filename 部分不会改变,number 会不断递增。
log-bin=dir/[filename]

3.2 查看二进制日志

  • 查看二进制日志文件列表:
SHOW binary logs;
  • 查看当前正在写入的二进制日志文件:
SHOW master status;
  • 查看二进制日志文件内容
    二进制日志使用二进制格式存储,不能直接打开查看 。如果需要查看二进制日志,必须使用 mysqlbinlog 命令。
    • mysqlbinlog 命令只在当前文件夹下查找指定的二进制日志,因此需要在二进制日志所在的目录下运行该命令,否则将会找不到指定的二进制日志文件。
mysqlbinlog filename.number
  • 实例
    使用 mysqlbinlog 命令,来查看 指定目录下的 mylog.000001 文件
    mysqlbinlog "F:\ProgramData\MySQL\MySQL Server 8.4\Data\PROMETHUS-bin.000001"
    在这里插入图片描述
  • 除了 filename.number 文件,MySQL 还会生成一个名为 filename.index 的文件,这个文件 存储着所有二进制日志文件的列表,可以用记事本打开该文件。
    例如我的是PROMETHUS-bin.index:
    在这里插入图片描述

3.3 删除二进制文件

  • 二进制日志中记录着大量的信息,如果很长时间 不清理二进制日志,将会浪费很多的磁盘空间

删除所有二进制日志

  • 登录 MySQL 数据库后,可以执行该语句来删除所有二进制日志。删除所有二进制日志后,MySQL 将会重新创建新的二进制日志,新二进制日志的编号从 000001 开始
RESET MASTER;

删除小于指定编号的二进制日志

  • 每个二进制日志文件后面有一个 6 位数的编号,如 000001。使用 PURGE MASTER LOGS TO 语句,可以 删除指定二进制日志的编号之前的日志,基本语法:
    • 该语句将删除编号小于 filename.number 的所有二进制日志。
PURGE MASTER LOGS TO 'filename.number';

删除创建时间之前的二进制日志

  • 使用 PURGE MASTER LOGS TO 语句,可以 删除指定时间之前创建的二进制日志,基本语法:
    • 其中,“hh”为 24 制的小时。该语句将删除在指定时间之前创建的所有二进制日志。
PURGE MASTER LOGS TO 'yyyy-mm-dd hh:MM:ss';

3.4 暂时停止二进制日志

  • 问题背景
    在配置文件中设置了 log_bin 选项之后,MySQL 服务器将会一直开启二进制日志功能;删除该选项后就可以停止二进制日志功能,如果需要再次启动这个功能,需要重新添加 log_bin 选项;由于这样比较麻烦,所以 MySQL 提供了暂时停止二进制日志功能的语句。如果用户不希望自己执行的某些 SQL 语句记录在二进制日志中,可以在执行这些 SQL 语句之前暂停二进制日志功能。
  • 使用 SET 语句来暂停/开启二进制日志功能,基本语法:
    • 0 表示暂停二进制日志功能,1 表示开启二进制功能。
SET SQL_LOG_BIN=0/1;

3.5 二进制日志的其他设置

  • my.ini 中的 [mysqld] 组下面有几个设置参数是关于二进制日志的,这里以expire_logs_day 和 max_binlog_size 为例讲述。
  • expire_logs_day 定义了 MySQL 清除过期日志的时间、二进制日志自动删除的天数。默认值为 0,表示“没有自动删除”,当 MySQL 启动或刷新二进制日志时可能删除。
expire_logs_days = 10
  • max_binlog_size 定义了 单个文件的大小限制,如果二进制日志写入的内容大小超出给定值,日志就会发生滚动(关闭当前文件,重新打开一个新的日志文件)。不能将该变量设置为大于 1GB 或小于 4096B(字节),其默认值是 1GB。
max_binlog_size = 100M

3.6 使用二进制日志还原数据库

  • 二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句、UPDATE 语句、CREATE 语句等。如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的操作,结合数据库备份来还原数据库。
  • 数据库恢复的流程
    数据库遭到意外损坏时,应该 先使用最近的备份文件来还原数据库;另外备份之后,数据库可能进行了一些更新,这时可以 使用二进制日志来还原
  • 还原数据库的基本语法:
    • 先使用 mysqlbinlog 命令来读取 filename.number 中的内容,再使用 mysql 命令将这些内容还原到数据库中。
    • 使用 mysqlbinlog 命令进行还原操作时,必须是编号(number)小的先还原。例如,mylog.000001 必须在 mylog.000002 之前还原。
mysqlbinlog filename.number | mysql -u root -p

【 4. 通用查询日志 General Query Log 】

  • 通用查询日志(General Query Log) 用来 记录用户的所有操作,包括启动和关闭 MySQL 服务、更新语句和查询语句等。
  • 默认情况下,通用查询日志功能是关闭的,可以通过以下命令查看通用查询日志是否开启:
    结果中的 general_log_file 变量指定了通用查询日志文件所在的位置。
SHOW VARIABLES LIKE '%general%';

在这里插入图片描述

4.1 启动和设置通用查询日志

  • 在 MySQL 中,可以通过 在配置文件的[mysqld]组中添加 log 选项来开启通用查询日志,格式如下:
    • dir 参数指定通用查询日志的存储路径;
    • filename 参数指定日志的文件名。如果不指定存储路径,通用查询日志将默认存储到 MySQL 数据库的数据文件夹下。如果不指定文件名,默认文件名为 hostname.log,其中 hostname 表示主机名。
log=dir/filename

4.2 查看通用查询日志

  • 如果希望了解用户最近的操作,可以查看通用查询日志。通用查询日志以文本文件的形式存储,可以 直接使用记事本打开通用查询日志

4.3 停止通用查询日志

  • 将 MySQL 配置文件中的相关配置注释掉,然后重启服务器,来停止通用查询日志,如下所示:
#log=dir\filename
  • 设置 MySQL 的环境变量 general_log 为关闭状态 也可以停止该日志,示例如下:
SET GLOBAL general_log=off;

4.4 删除通用查询日志

  • 问题背景
    由于通用查询日志会记录用户的所有操作,如果数据库的使用非常频繁,通用查询日志将会占用非常大的磁盘空间,对系统性能影响较大。所以在一般情况下,数据管理员可以删除很长时间之前的通用查询日志或关闭此日志,以保证 MySQL 服务器上的硬盘空间。
  • 在 MySQL 中,可以使用 mysqladmin 命令来开启新的通用查询日志,新的通用查询日志会直接覆盖旧的查询日志,不需要再手动删除了。
    基本语法:
    • 如果希望备份旧的通用查询日志,必须先将旧的日志文件拷贝出来或者改名。然后,再执行 mysqladmin 命令。
mysqladmin -uroot -p flush-logs
  • 除了上述方法之外,还可以 手动删除通用查询日志,删除之后需要重新启动 MySQL 服务,重启之后就会生成新的通用查询日志。
    如果希望备份旧的日志文件,可以将旧的日志文件改名,然后重启 MySQL 服务。

【 5. 慢查询日志 Slow Query Log 】

  • 慢查询日志(Slow Query Log) 用来 记录在 MySQL 中执行时间超过指定时间的查询语句通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。 通俗的说,MySQL 慢查询日志是排查问题的 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。如果不是调优需要,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。
  • 默认情况下,慢查询日志功能是关闭的。 可以通过以下命令查看是否开启慢查询日志功能。
    • slow_query_log:慢查询开启状态
    • slow_query_log_file:慢查询日志存放的位置(一般设置为 MySQL 的数据存放目录)
    • long_query_time:查询超过多少秒才记录
SHOW VARIABLES LIKE 'slow_query%';

在这里插入图片描述

5.1 启动和设置慢查询日志

  • 可以通过 log-slow-queries 选项开启慢查询日志。通过 long_query_time 选项来 设置时间值,时间以秒为单位,如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志 。将 log_slow_queries 选项和 long_query_time 选项加入到配置文件的 [mysqld] 组中。格式如下:
    • dir 参数指定慢查询日志的存储路径,如果不指定存储路径,慢查询日志将默认存储到 MySQL 数据库的数据文件夹下。
    • filename 参数指定日志的文件名,生成日志文件的完整名称为 filename-slow.log。 如果不指定文件名,默认文件名为 hostname-slow.log,hostname 是 MySQL 服务器的主机名。
    • n 参数是设定的时间值,该值的单位是秒。如果不设置 long_query_time 选项,默认时间为 10 秒。
log-slow-queries=dir\filename
long_query_time=n
  • 还可以通过以下命令启动慢查询日志、设置指定时间:
SET GLOBAL slow_query_log=ON/OFF;
SET GLOBAL long_query_time=n;

5.2 查看慢查询日志

  • 如果想查看哪些查询语句的执行效率低,可以从慢查询日志中获得信息。和错误日志、查询日志一样,慢查询日志也是以文本文件的形式存储的,可以 直接通过记事本打开查看

5.3 删除慢查询日志

  • 慢查询日志的删除方法与通用日志的删除方法是一样的,可以使用 mysqladmin 命令来删除。mysqladmin 命令的语法如下:
    • 执行该命令后,命令行会提示输入密码;输入正确密码后,将执行删除操作。新的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。
    • 通用查询日志和慢查询日志都是使用这个命令,使用时一定要注意,一旦执行这个命令,通用查询日志和慢查询日志都只存在新的日志文件中
      如果需要备份旧的慢查询日志文件,必须先将旧的日志改名,然后重启 MySQL 服务或执行 mysqladmin 命令。
mysqladmin -uroot -p flush-logs
  • 数据库管理员也可以 手动删除慢查询日志,删除之后需要重新启动 MySQL 服务

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

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

相关文章

ICPC2024 邀请赛西安站(7/8/13)

心得 [ICPC2024 Xian I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷 7表示赛时ac了7个&#xff0c;8表示含补题总共ac数&#xff0c;13表示题目总数 题目 M. Chained Lights 打表&#xff0c;发现只有k1是YES //#include <bits/stdc.h> #include<iostream&…

LCTF 2018 bestphp‘s revenge

考点:Soap原生类Session反序列化CRLF注入 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); session_start(); if (isset($_GET[name])) { $_SESSION[name] $_GET[name]; } var_dump($_SESSION); $a array(reset($_…

路由黑洞处理

今天BGP基础实验碰到了路由黑洞 BGP承载于IGP之上&#xff0c;BGP路由天生要递归&#xff0c;才能找出口 在E的BGP去A&#xff0c;下一跳只有B&#xff0c;但是流量走了两条路&#xff0c;c和d BGP路由黑洞&#xff1a; 控制层面可达&#xff0c;数据层面不可达; 路由条目在BG…

查看远程桌面端口,查看服务器的远程桌面端口的方法

如果你正在寻找一种方法来检查服务器的远程桌面端口&#xff0c;那么请务必按照以下步骤操作&#xff0c;以确保准确且安全地获取所需信息。这不仅是一个技术问题&#xff0c;更是一个关于效率和安全性的重要议题。 首先&#xff0c;你需要明确&#xff0c;远程桌面端口通常是…

C++之第十一课

课程列表 十分抱歉拖更了这么久&#xff0c;在之前的第十课里也有网友反馈了一个问题&#xff1a; 说的没错&#xff0c;怪我在审稿时没有注意图片&#xff0c;所以这里修正一下&#xff1a; 在此也十分感谢“我有一些感想……”网友的提醒&#xff01; 好了&#xff0c;回到…

【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)

导航&#xff1a; 本文一些内容需要聚簇索引、非聚簇索引、B树、覆盖索引、索引下推等前置概念&#xff0c;虽然本文有简单回顾&#xff0c;但详细可以参考下文的【MySQL高级篇】 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成…

Linux——内存管理代码分析

虚空间管理 页框和页的关系 页框 将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个页框&#xff0c;也叫页帧&#xff0c;即物理页面&#xff0c;是linux划分内存空间的结果。 每个页框都有一个页框号&#xff0c;即内存块号、物理块号。 页 将用户…

app自动识别ios或安卓手机,微信浏览器,并下载相应的apk安装包

来源是安卓下载界面显示: 来源是IOS下载界面显示: 源码 <!DOCTYPE html> <html lang="en"><head

流水线建构apk、abb实战(二)

gradlew 命令生成apk、aab包 其实构建应用程序包就几个命令&#xff1a; ### 生成AAB&#xff1a; gradlew bundleRelease #输出到[project]/build/outputs/bundle/release/下 gradlew bundleDebug### 生成APK&#xff1a; gradlew assembleRelease gradlew assembleDebug###…

今日arXiv最热大模型论文:大模型都能怎么用?中南大学最新综述:大模型时代的自然语言处理

还记得2022年末ChatGPT的横空出世&#xff0c;带来了整个NLP乃至AI领域的震动&#xff0c;随后如LLaMA、ChatGLM、Qwen等类ChatGPT大模型&#xff08;LLM&#xff09;开始如雨后春笋般涌现&#xff0c;这些先进的模型不仅展示了在零样本学习中的出色表现&#xff0c;还在多种NL…

ToonCrafter——自动生成动画中间帧与动画上色

1、引言 动画制作对许多人来说都是一项专业且复杂的工作&#xff0c;需要学习专门的知识、掌握特定的工具&#xff0c;并投入大量的时间和精力才能获得成果。不过&#xff0c;最近推出的一款 AI 动画制作工具 ToonCrafter 有望改变这一现状。 它只需两张图像即可生成连贯流畅…

Turntin查重报告解读,如何根据颜色标准修改essay作业

留学生是学术生涯&#xff0c;撰写essay作业时是最常见的学习状态。在这样一个过程中&#xff0c;常常会遇到许多问题&#xff0c;当然&#xff0c;最需要注意便是抄袭问题。为了确定我们的essay符合标准&#xff0c;通常许多学生会选择使用Turnitin查重&#xff08;www.checkt…

神经网络搭建(1)----nn.Sequential

神经网络模型构建 采用CIFAR10中的数据&#xff0c;并对其进行简单的分类。以下图为例 输入&#xff1a;3通道&#xff0c;3232 ( 经过一个55的卷积) → 变成32通道&#xff0c;3232的图像 (经过22的最大池化) → 变成32通道&#xff0c;1616的图像 ( 经过一个55的卷积) → 变…

英伟达再创历史,市值超越苹果,跃居全球第二大上市公司

进入2024年&#xff0c;英伟达股价依然突飞猛进。 今天凌晨&#xff0c;英伟达凭借其在AI领域强劲的创新能力和市场势头&#xff0c;达成了历史性的里程碑——市值首次突破3万亿美元&#xff0c;成功超越苹果&#xff0c;成为全球市值第二大上市公司。 排名仅次于微软。 英伟达…

从零开始实现自己的串口调试助手(7) -隐藏面板/刷新串口号/实现多文本

隐藏/拓展面板/历史: ui界面操作: 选中隐藏面板按钮&#xff0c;勾选checkable 创建bool类型的槽函数 隐藏/拓展面板槽函数: void Widget::on_btnHideTable_clicked(bool checked) {if(checked){ui->btnHideTable->setText("拓展面板");ui->groupBoxTexts-…

Kotlin 网络请求小例子(Ktor)

文章目录 导入依赖创建 Http 客户端 其实还是借着 Ktor 学一学 Kotlin 如何导入依赖&#xff0c;这应该是我们 Kotlin 基础专栏的最后一期了。 Ktor 是 Kotlin 官方的一个网络请求库&#xff0c;它具有优秀且精炼的 API&#xff0c;并且是跨平台的。 本教程参考自 Ktor 文档 …

f1c100s 荔枝派 系统移植

一。交叉编译环境配置 1.1下载交叉工具链&#xff1a;https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/ 1.2解压安装 在home目录下新建 工程目录&#xff1a;mkdir f1c100s_project 将windows下的gcc-linaro-7.2.1-2017.11-x86…

AI大模型日报#0606:智谱AI开源GLM-4-9B、Pika再融5.8亿

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

Ubuntu虚拟机安装(基于Vmware17)

Ubuntu虚拟机安装&#xff08;基于Vmware17&#xff09; Ubuntu和CentOS是两种流行的Linux发行版&#xff0c;Ubuntu默认安装了图形化桌面环境&#xff0c;对于新手来学习相对来说较为友好&#xff0c;能够满足日常的学习和使用。CentOS则通常被用于服务器环境&#xff0c;常运…

【再探】Java—Java 沙箱机制与类加载器

沙箱&#xff08;Sandbox&#xff09;机制是将Java程序限定在JVM特定的运行范围内&#xff0c;并严格限制代码对本地系统资源的访问&#xff0c;以保证代码的有效隔离&#xff0c;防止对本地系统造成破坏。 1 安全模型 类在加载过程中&#xff0c;类加载器会为类设置初始的安…