sqldumper.exe
的起源可以追溯到 Microsoft SQL Server 的开发和运行时管理中。它作为 SQL Server 的一部分,主要用于处理数据库引擎遇到的关键错误和异常情况。
具体来说,sqldumper.exe
主要功能包括:
-
异常处理和故障捕获:当 SQL Server 数据库引擎遇到严重错误时,如内存访问错误、关键线程死锁或其他导致数据库服务无法继续正常运行的问题,
sqldumper.exe
负责捕获有关这些问题的详细信息。 -
生成 .mdmp 文件:
sqldumper.exe
将收集到的关键错误信息保存为.mdmp
文件。这种文件格式是 Windows 上用于存储程序崩溃信息的标准格式,其中包含了导致程序异常终止的根本原因的详细内容,如内存状态、线程堆栈等。 -
支持故障排除和性能分析:生成的
.mdmp
文件对于诊断和解决 SQL Server 引擎的故障、性能问题以及其他异常行为至关重要。它可以帮助开发人员和系统管理员准确地定位和分析导致问题的根本原因,从而采取有效的修复措施。
因此,sqldumper.exe
可以说是 SQL Server 的一个关键工具,用于确保数据库引擎在面对严重错误时能够及时采取措施并提供详尽的诊断信息,以保证数据库系统的稳定性和可靠性。
sqldumper.exe
是一个与 Microsoft SQL Server 相关的工具程序,用于处理数据库引擎的故障和异常情况。以下是关于 sqldumper.exe
的详细信息:
-
定义:
sqldumper.exe
是 SQL Server 的一个进程,用于捕获和处理 SQL Server 引擎遇到的关键错误或异常情况。它负责收集有关问题的详细信息,并生成一个.mdmp
文件,以便后续分析和故障排除。
-
功能和特点:
- 异常处理:当 SQL Server 遇到严重错误时,
sqldumper.exe
负责捕获相关信息,如堆栈跟踪、内存状态、相关线程的状态等。 - 生成 .mdmp 文件:
sqldumper.exe
将收集到的信息保存为一个.mdmp
文件,这是一个用于存储 Windows 程序崩溃信息的标准格式文件。 - 支持自动化和手动操作:可以配置
sqldumper.exe
自动捕获故障信息,也可以手动启动以进行特定场景下的调试和故障排除。
- 异常处理:当 SQL Server 遇到严重错误时,
-
使用场景:
- 故障排除:主要用于识别和解决 SQL Server 引擎的崩溃或性能问题。
- 性能分析:帮助开发人员和管理员分析 SQL Server 的性能瓶颈和异常行为。
- 版本升级和迁移:在进行 SQL Server 版本升级或迁移时,
sqldumper.exe
可以提供有用的诊断信息,确保顺利进行。
-
为什么使用
sqldumper.exe
:- 故障诊断:对于生产环境中的 SQL Server,
sqldumper.exe
提供了一种捕获关键错误信息的重要机制,有助于迅速诊断和解决问题。 - 精准定位:生成的
.mdmp
文件包含详细的诊断信息,有助于开发团队准确定位问题的根本原因。 - 支持服务:作为 Microsoft SQL Server 的一部分,
sqldumper.exe
提供了微软支持团队用于分析客户报告的关键工具。
- 故障诊断:对于生产环境中的 SQL Server,
sqldumper.exe
是 SQL Server 的一个重要组件,专门用于捕获和处理关键错误,帮助管理员和开发人员快速定位和解决 SQL Server 引擎的故障和异常情况。
sqldumper.exe
的发展经历了几个主要阶段,主要随着 Microsoft SQL Server 的版本演变而改进和完善。以下是关于 sqldumper.exe
发展阶段的简要描述:
-
早期阶段(SQL Server 2000及之前):
- 在 SQL Server 2000 及之前的版本中,故障处理和异常捕获相对简单。
sqldumper.exe
的角色主要是捕获基本的错误信息,并生成基本的崩溃转储文件,以便开发人员和管理员可以分析和排查问题。
- 在 SQL Server 2000 及之前的版本中,故障处理和异常捕获相对简单。
-
SQL Server 2005 阶段:
- 随着 SQL Server 2005 的推出,Microsoft 开始加强对故障处理和性能分析的支持。
sqldumper.exe
在这个阶段得到了改进,能够捕获更详细的错误信息和性能数据,生成更为完整和有用的崩溃转储文件(.mdmp
文件)。
- 随着 SQL Server 2005 的推出,Microsoft 开始加强对故障处理和性能分析的支持。
-
SQL Server 2008 和之后的版本:
- 随着数据库管理系统的发展,
sqldumper.exe
继续演进,逐步增强其故障诊断和性能分析的能力。特别是在多版本并存、集群部署、高可用性环境中,sqldumper.exe
的功能进一步扩展,以支持更复杂的环境和场景下的故障排除需求。
- 随着数据库管理系统的发展,
-
现代阶段(最新版本):
- 目前,
sqldumper.exe
作为 SQL Server 的重要组成部分,已经成为故障排除和性能优化的关键工具之一。它能够捕获大规模数据库系统中出现的各种错误,生成详尽的诊断信息,帮助管理员和开发人员快速定位和解决问题,从而提高数据库系统的稳定性和可靠性。
- 目前,
随着 SQL Server 技术的不断发展和用户需求的变化,sqldumper.exe
在功能和性能上持续改进和完善,以应对越来越复杂的数据库管理和运维挑战。
sqldumper.exe
的功能可以大致分为几个主要分类,主要是为了支持 SQL Server 在面对故障、异常和性能问题时能够提供有效的诊断和分析工具。以下是它的功能分类:
-
异常处理和故障捕获:
sqldumper.exe
的首要功能是在 SQL Server 运行过程中捕获关键的异常和故障情况。这些异常包括但不限于内存访问错误、关键线程死锁、数据库引擎崩溃等。它能够捕获到发生异常时的堆栈跟踪、内存状态信息等关键数据。
-
生成崩溃转储文件:
- 当 SQL Server 遇到严重错误或崩溃时,
sqldumper.exe
会生成一个称为.mdmp
文件的崩溃转储文件。这些文件包含了导致 SQL Server 异常终止的详细信息,如异常发生时的内存快照、线程状态、执行堆栈等。这些文件对于后续的故障排查和问题分析至关重要。
- 当 SQL Server 遇到严重错误或崩溃时,
-
故障诊断和分析:
- 生成的
.mdmp
文件不仅用于故障诊断,还可以支持更深入的性能分析。通过分析崩溃转储文件,管理员和开发人员可以了解 SQL Server 运行时发生异常的具体原因,有助于快速定位和修复问题。
- 生成的
-
支持自动化和远程操作:
sqldumper.exe
还支持自动化和远程操作。在某些情况下,可以配置 SQL Server 自动捕获崩溃转储文件,或者远程触发sqldumper.exe
以便在分布式环境中收集关键的故障信息。
sqldumper.exe
是 SQL Server 关键的故障管理工具之一,通过其捕获、分析和报告的功能,大大提升了管理员和开发人员在处理 SQL Server 故障和性能问题时的效率和准确性。
sqldumper.exe
的底层原理涉及多个技术方面,主要用于捕获和处理 SQL Server 发生的异常和崩溃情况。以下是其主要的底层原理:
-
异常捕获:
- 当 SQL Server 运行时发生严重错误或异常,操作系统会将相应的异常信息传递给
sqldumper.exe
。这些异常包括但不限于访问冲突、空指针引用、非法操作等。sqldumper.exe
负责接收和处理这些异常。
- 当 SQL Server 运行时发生严重错误或异常,操作系统会将相应的异常信息传递给
-
生成崩溃转储文件:
sqldumper.exe
的主要任务之一是生成崩溃转储文件(.mdmp
文件)。这些文件包含了 SQL Server 在异常情况下的当前内存状态、线程调用堆栈、寄存器状态等关键信息。这些数据对于后续的故障排查和分析非常重要。
-
堆栈跟踪和内存快照:
- 当
sqldumper.exe
接收到异常时,它会记录所有活动线程的当前执行堆栈。这些堆栈跟踪信息显示了异常发生时各个线程的调用路径,有助于确定异常的来源和传播路径。同时,sqldumper.exe
还会捕获当前的内存快照,包括堆内存状态和栈内存状态。
- 当
-
数据收集和处理:
sqldumper.exe
在生成崩溃转储文件后,会将这些文件保存到指定的位置。这些文件通常很大,因为它们包含了大量的调试信息和内存快照。SQL Server 的管理员和开发人员可以利用这些文件进行深入的故障诊断和性能分析。
-
配置和自动化:
- 系统管理员可以配置
sqldumper.exe
的行为,例如设置何时生成崩溃转储文件、文件的保存位置等。这种配置允许在不同的部署场景下灵活应对异常和故障情况。
- 系统管理员可以配置
sqldumper.exe
作为 SQL Server 的关键组成部分,通过捕获异常、生成崩溃转储文件并提供详细的诊断信息,帮助管理员和开发人员快速定位和解决 SQL Server 运行时遇到的各种问题。
sqldumper.exe
的架构主要围绕以下几个方面设计,以支持 SQL Server 在面对异常和崩溃时的诊断和故障排查:
-
异常处理和捕获:
sqldumper.exe
被设计为一个能够在 SQL Server 进程遇到严重异常时自动启动并捕获异常信息的应用程序。它通过操作系统提供的异常处理机制,接收和处理由 SQL Server 进程生成的异常信息。
-
生成崩溃转储文件:
- 主要功能之一是生成崩溃转储文件(
.mdmp
文件),这些文件包含了 SQL Server 在异常情况下的关键信息,如内存状态、线程状态和执行堆栈。sqldumper.exe
确保这些文件能够快速、准确地记录发生在 SQL Server 进程中的问题。
- 主要功能之一是生成崩溃转储文件(
-
配置和自定义:
sqldumper.exe
的架构允许管理员根据需求进行配置和自定义。这包括设置何时生成转储文件、生成文件的路径、文件名格式等。这种灵活性使得它可以适应不同的部署和使用场景。
-
调试信息收集:
- 除了捕获异常的基本信息外,
sqldumper.exe
还能够收集大量的调试信息,这些信息对于后续的故障分析至关重要。例如,它会捕获当前进程的内存布局、所有线程的调用堆栈、已加载的模块信息等,这些信息帮助管理员了解异常发生时的环境和上下文。
- 除了捕获异常的基本信息外,
-
安全性和稳定性:
- 作为一个系统级的工具,
sqldumper.exe
的架构必须具备高度的安全性和稳定性。它需要确保在处理异常和生成转储文件时不会进一步危及系统的稳定性,并且生成的转储文件只能被授权的人员访问和分析。
- 作为一个系统级的工具,
sqldumper.exe
的架构旨在提供一个高效、可靠的异常处理和诊断工具,帮助 SQL Server 管理员和开发人员在面对各种异常情况时能够快速定位问题并采取相应的修复措施。
sqldumper.exe
主要应用于以下几个场景,以支持 SQL Server 的稳定性、故障排查和性能优化:
-
异常处理和崩溃分析:
- 当 SQL Server 进程遇到严重异常或崩溃时,
sqldumper.exe
负责捕获当前进程的状态信息,并生成崩溃转储文件(.mdmp
文件)。这些文件包含了发生异常时的内存状态、线程调用堆栈、寄存器状态等重要信息。这些转储文件对于后续的故障分析和修复至关重要。
- 当 SQL Server 进程遇到严重异常或崩溃时,
-
性能问题分析:
- 除了处理崩溃外,
sqldumper.exe
也可以用于收集 SQL Server 进程的性能信息。管理员可以配置sqldumper.exe
定期生成性能转储文件,这些文件包含了 SQL Server 的当前状态、查询执行情况、数据库引擎内部的性能统计等。这些信息有助于识别性能瓶颈并进行优化。
- 除了处理崩溃外,
-
调试和开发支持:
- 开发人员和 SQL Server 的技术支持团队可以利用
sqldumper.exe
生成的转储文件来进行调试和问题排查。通过分析转储文件中的详细信息,他们可以了解异常发生时的上下文和调用路径,快速定位问题的根本原因。
- 开发人员和 SQL Server 的技术支持团队可以利用
-
自动化故障诊断:
- 在生产环境中,
sqldumper.exe
可以配置为自动响应特定类型的异常或错误。例如,可以设置在 SQL Server 进程因内存访问错误而崩溃时自动启动sqldumper.exe
并生成转储文件。这种自动化的故障诊断机制有助于及时发现和处理生产环境中的问题。
- 在生产环境中,
-
安全审计和合规性:
- 生成的崩溃转储文件包含敏感的系统和应用程序信息,因此在处理和存储这些文件时需要符合安全审计和合规性要求。
sqldumper.exe
的设计考虑了这些方面,确保生成的转储文件不会泄露敏感信息,并且能够被合法授权的人员访问和分析。
- 生成的崩溃转储文件包含敏感的系统和应用程序信息,因此在处理和存储这些文件时需要符合安全审计和合规性要求。
sqldumper.exe
是 SQL Server 的关键工具之一,用于处理异常、收集性能数据、支持调试和开发,并且帮助管理员和开发人员有效管理和优化 SQL Server 的运行。
当涉及使用 sqldumper.exe
时,以下是一个初级使用教程的大纲,可以帮助管理员和开发人员快速了解如何配置和利用这个工具来捕获 SQL Server 的异常和性能数据:
1. 理解 sqldumper.exe
- 介绍
sqldumper.exe
:- 解释
sqldumper.exe
是什么,它的作用以及为什么在 SQL Server 中是重要的。 - 强调其用途:捕获异常、生成崩溃转储文件、收集性能数据等。
- 解释
2. 配置 sqldumper.exe
- 确定何时生成转储文件:
- 讨论什么情况下
sqldumper.exe
会自动启动并生成转储文件,比如严重异常、崩溃等。 - 提及如何配置
sqldumper.exe
的行为,如何调整生成转储文件的触发条件和频率。
- 讨论什么情况下
3. 生成和管理转储文件
- 转储文件的存储位置和格式:
- 指定转储文件生成的默认位置和命名规则。
- 提供如何管理这些转储文件的建议,比如定期清理或移动存档文件。
4. 分析转储文件
- 使用转储文件进行故障诊断:
- 解释如何打开和分析生成的
.mdmp
转储文件。 - 指导如何从转储文件中提取有用的信息,如内存状态、线程堆栈等。
- 解释如何打开和分析生成的
5. 收集和分析性能数据
- 配置
sqldumper.exe
收集性能数据:- 讨论如何配置
sqldumper.exe
以定期生成性能转储文件。 - 提供如何解释这些性能转储文件中的信息,如查询执行统计、数据库引擎状态等。
- 讨论如何配置
6. 安全和合规性考虑
- 转储文件的安全性和访问控制:
- 强调生成的转储文件可能包含敏感信息,如何确保其安全存储和处理。
- 提供符合安全审计和合规性要求的最佳实践建议。
7. 最佳实践和附加资源
- 最佳实践和建议:
- 提供一些常见问题的解决方案和预防措施,以及如何优化
sqldumper.exe
的配置以满足特定环境的需求。
- 提供一些常见问题的解决方案和预防措施,以及如何优化
- 附加资源:
- 列出其他可以帮助进一步学习和理解
sqldumper.exe
的资源,如官方文档、社区论坛或技术支持资源。
- 列出其他可以帮助进一步学习和理解
通过这样一个大纲,用户可以逐步学习如何配置和使用 sqldumper.exe
来帮助管理 SQL Server 的稳定性和性能。
sqldumper.exe
中级使用教程的大纲,帮助管理员和开发人员更深入地理解和利用这个工具来管理 SQL Server 的异常和性能数据:
1. 深入理解 sqldumper.exe
sqldumper.exe
的工作原理:- 回顾
sqldumper.exe
的基本功能和目的。 - 解释它如何与 SQL Server 集成以捕获异常、生成转储文件和收集性能数据。
- 回顾
2. 配置高级转储选项
- 配置和自定义
sqldumper.exe
行为:- 深入研究如何配置
sqldumper.exe
的高级选项,如何调整生成转储文件的详细条件和选项。 - 讨论如何利用注册表或配置文件修改默认行为,以适应特定的故障排除和性能监控需求。
- 深入研究如何配置
3. 分析和解释转储文件
- 深入转储文件的分析:
- 提供更进一步的转储文件分析技术,包括如何使用调试工具(如 WinDbg)来解析
.mdmp
文件。 - 指导如何从堆栈跟踪、内存状态和线程信息中获取深层次的故障诊断数据。
- 提供更进一步的转储文件分析技术,包括如何使用调试工具(如 WinDbg)来解析
4. 高级性能监控和优化
- 利用
sqldumper.exe
进行性能优化:- 讨论如何配置
sqldumper.exe
来定期收集详细的性能数据。 - 提供如何解释性能转储文件中的查询执行计划、系统资源使用情况和数据库引擎状态等信息。
- 讨论如何配置
5. 故障排除最佳实践
- 应对复杂故障的最佳实践:
- 提供处理复杂故障和异常情况时的最佳实践,包括如何利用
sqldumper.exe
收集足够的数据以进行彻底的故障排查。
- 提供处理复杂故障和异常情况时的最佳实践,包括如何利用
6. 安全性和合规性考虑
- 转储文件的安全管理:
- 强调处理转储文件时的安全性和隐私保护考虑,如何确保转储文件不包含敏感信息,并在必要时进行加密或安全存储。
7. 实际案例和应用场景
- 实际案例和解决方案:
- 提供几个典型的案例研究或场景,说明如何使用
sqldumper.exe
解决特定的故障或优化性能问题。
- 提供几个典型的案例研究或场景,说明如何使用
8. 进阶资源和支持
- 进阶学习资源:
- 列出更多深入学习
sqldumper.exe
的资源,如官方文档、社区论坛、微软支持等。
- 列出更多深入学习
通过这样的中级使用教程大纲,用户可以更全面地掌握如何利用 sqldumper.exe
进行高级故障排查和性能监控,有效地管理和优化 SQL Server 的运行。
sqldumper.exe
的高级使用教程大纲时,以下是一个详细的安排,旨在帮助管理员和开发人员更深入地理解和利用这个工具来管理 SQL Server 的异常和性能数据:
1. 理解 sqldumper.exe
的基本原理
sqldumper.exe
概述- 介绍
sqldumper.exe
的基本功能和用途。 - 解释其如何与 SQL Server 集成以捕获和处理异常。
- 介绍
2. 配置和启用 sqldumper.exe
- 配置
sqldumper.exe
- 讨论如何配置
sqldumper.exe
以捕获不同类型的异常和错误。 - 如何在注册表或配置文件中设置
sqldumper.exe
的参数来满足特定需求。
- 讨论如何配置
3. 处理和分析转储文件
- 转储文件的分析
- 提供如何解析和分析
.mdmp
转储文件的步骤。 - 使用调试工具(如 WinDbg)展示如何提取关键信息,如堆栈跟踪、内存状态和线程信息。
- 提供如何解析和分析
4. 高级转储选项和配置
- 高级转储选项
- 深入研究
sqldumper.exe
的高级选项,如何调整转储文件的详细信息和生成条件。 - 如何根据需要配置特定的错误类型和异常条件。
- 深入研究
5. 性能监控和优化
- 利用
sqldumper.exe
进行性能监控- 讨论如何配置
sqldumper.exe
以收集 SQL Server 的性能数据。 - 如何解释性能转储文件中的查询执行计划、资源使用情况和数据库引擎状态。
- 讨论如何配置
6. 实际案例和最佳实践
- 实际案例和解决方案
- 提供几个典型的案例研究,展示如何使用
sqldumper.exe
解决实际的故障和性能问题。 - 分享最佳实践,包括如何有效地利用
sqldumper.exe
进行故障排除和优化。
- 提供几个典型的案例研究,展示如何使用
7. 安全性和合规性考虑
- 转储文件的安全管理
- 强调处理转储文件时的安全性和隐私保护措施。
- 如何确保转储文件中不包含敏感信息,并在必要时进行安全存储或加密。
8. 进阶资源和支持
- 学习资源和支持
- 提供进一步学习
sqldumper.exe
的资源,如官方文档、社区论坛和支持通道。
- 提供进一步学习
通过这样的高级使用教程大纲,用户能够全面掌握如何配置、使用和分析 sqldumper.exe
,从而更有效地管理 SQL Server 的异常和性能问题,提升系统的稳定性和性能。
sqldumper.exe
的专家级使用教程时,以下是一个深入的大纲,旨在帮助高级管理员和开发人员深入了解和利用这个工具来处理 SQL Server 的异常、性能监控和优化:
1. sqldumper.exe
概述和基础知识
sqldumper.exe
概述- 理解
sqldumper.exe
的基本功能和作用。 - 探讨它在 SQL Server 中的角色和集成方式。
- 理解
2. 配置和启用 sqldumper.exe
- 配置
sqldumper.exe
- 深入研究如何配置
sqldumper.exe
以捕获特定类型的异常和错误。 - 讨论注册表、配置文件或其他方法中的高级参数设置。
- 深入研究如何配置
3. 分析和处理转储文件
- 转储文件分析
- 使用专业调试工具(如 WinDbg)详细解释如何分析
.mdmp
转储文件。 - 提取关键信息,如异常堆栈、内存状态和线程信息的技术细节。
- 使用专业调试工具(如 WinDbg)详细解释如何分析
4. 高级转储配置选项
- 高级转储配置
- 深入研究
sqldumper.exe
的高级选项,如何调整转储文件的详细信息级别和生成条件。 - 设置特定的错误和异常条件来触发转储。
- 深入研究
5. 性能监控和优化使用 sqldumper.exe
- 性能监控
- 讨论如何配置
sqldumper.exe
以收集和分析 SQL Server 的性能数据。 - 解释如何使用性能转储文件来优化查询执行计划、资源利用和数据库引擎状态。
- 讨论如何配置
6. 实际案例和高级解决方案
- 实际案例研究
- 提供多个复杂案例研究,展示如何使用
sqldumper.exe
解决实际的高级故障和性能挑战。 - 分享高级故障排除技术和优化策略。
- 提供多个复杂案例研究,展示如何使用
7. 安全性和合规性考虑
- 安全性管理
- 讨论在处理转储文件时的安全性措施和隐私保护。
- 如何确保转储文件中不泄露敏感数据,并实施安全存储或加密。
8. 进阶资源和支持
- 学习资源和支持
- 提供进一步深入学习
sqldumper.exe
的资源,如官方文档、高级技术论坛和支持渠道。
- 提供进一步深入学习
这个专家级教程大纲将帮助用户全面掌握 sqldumper.exe
的高级用法,从而在处理 SQL Server 异常、性能监控和优化方面达到更高的效率和精度。
sqldumper.exe
的顶级使用教程大纲时,这里是一个详细的大纲,旨在帮助管理员和开发人员掌握如何有效地使用这个工具来处理 SQL Server 中的异常、性能监控和优化:
1. sqldumper.exe
概述和基础知识
- 介绍
sqldumper.exe
- 理解
sqldumper.exe
的基本作用和目的。 - 解释它在 SQL Server 中的重要性和应用场景。
- 理解
2. 配置和启用 sqldumper.exe
- 配置
sqldumper.exe
- 深入讨论如何配置
sqldumper.exe
以捕获不同类型的异常和错误。 - 包括注册表、配置文件和其他方法中的设置步骤和选项。
- 深入讨论如何配置
3. 处理和分析转储文件
- 处理转储文件
- 解释如何处理生成的
.mdmp
转储文件。 - 包括使用 WinDbg 或其他调试工具进行分析,提取关键信息如堆栈跟踪、内存状态和线程信息。
- 解释如何处理生成的
4. 高级转储设置和优化
- 高级转储设置
- 深入研究
sqldumper.exe
的高级选项和配置。 - 讨论如何调整转储文件的详细级别和生成条件,以适应特定的故障和性能监控需求。
- 深入研究
5. 性能监控和优化
- 性能监控
- 如何使用
sqldumper.exe
收集和分析 SQL Server 的性能数据。 - 优化查询执行计划、资源利用和数据库引擎状态的实际方法和技术。
- 如何使用
6. 实际案例和解决方案
- 实际案例分析
- 提供多个实际案例,展示
sqldumper.exe
如何帮助解决复杂的故障和性能问题。 - 分享实用的故障排除技巧和优化策略。
- 提供多个实际案例,展示
7. 安全性和合规性考虑
- 安全性管理
- 在处理转储文件时如何确保安全性和隐私保护。
- 实施安全存储和加密,以防止敏感数据泄露。
8. 进阶资源和支持
- 学习资源和支持
- 提供进一步深入学习
sqldumper.exe
的资源,包括官方文档、社区论坛和支持渠道。
- 提供进一步深入学习
这个顶级使用教程大纲将帮助您系统地了解和掌握 sqldumper.exe
的高级用法,从而提升 SQL Server 管理和优化的能力,有效解决复杂的问题和提升系统性能。
标签:文件,exe,sqldumper,转储,Server,SQL From: https://www.cnblogs.com/suv789/p/18305899