数据结构——常见的定义

问题答案
Ο标记法(大Ο标记法)是一种用于衡量算法时间复杂度的表示方法。它描述了算法在最坏情况下的运行时间增长率。当我们使用Ο标记法时,我们关注的是算法的上界,即算法的运行时间不会超过Ο(f(n)),其中 f(n) 是输入规模 n 的某个函数。
Ω标记法(大Ω标记法)与Ο标记法相反,它描述了算法在最好情况下的运行时间增长率。当我们使用Ω标记法时,我们关注的是算法的下界,即算法的运行时间不会低于Ω(g(n)),其中 g(n) 是输入规模 n 的某个函数。
Θ标记法(大Θ标记法)结合了Ο标记法和Ω标记法,它描述了算法的运行时间的紧确界。当我们使用Θ标记法时,我们关注的是算法的上界和下界,即算法的运行时间在Θ(h(n)) 的范围内,其中 h(n) 是输入规模 n 的某个函数
线性表的定义:线性表是由 n (n≥0) 个具有相同数据类型的元素组成的有限序列。其中,n 表示线性表的长度,可以为零。线性表中的元素之间存在一对一的关系,即每个元素都有唯一的前驱和后继,除了第一个元素没有前驱,最后一个元素没有后继。
顺序表的定义及其特点:顺序表是一种使用连续的存储空间来存储线性表元素的数据结构。顺序表的特点包括:

元素在内存中的存储是连续的,可以通过下标直接访问元素。
元素的插入和删除操作可能需要移动其他元素,因为顺序表的长度是固定的。
顺序表适用于元素的访问频繁,但插入和删除操作较少的场景。
链式表的定义及其特点链式表是一种使用链式存储结构来存储线性表元素的数据结构。链式表的特点包括:

元素在内存中的存储是非连续的,每个元素都包含一个指针,指向下一个元素的位置。
插入和删除操作简单高效,只需要修改指针的指向,不需要移动其他元素。
链式表的长度可以动态变化,不受固定长度的限制。
链式表适用于频繁进行插入和删除操作的场景,但访问元素需要遍历链表。
线性表的应用:线性表是一种基本的数据结构,在计算机科学和软件开发中有广泛的应用。一些常见的应用包括:

数组:线性表的一种实现方式,广泛用于存储和操作一维数据。
链表:线性表的另一种实现方式,常用于实现栈、队列、链表等数据结构。
栈和队列:基于线性表的特定操作规则,用于实现各种算法和数据结构。
字符串处理:线性表可以用于存储和操作字符串,例如搜索、替换、拼接等操作。
数据库:线性表的概念在数据库中被广泛应用,例如表格中的行和列就可以看作是线性表的结构。
栈的定义:栈是一种特殊的线性表,具有后进先出(LIFO)的特点。它只允许在表的一端进行插入和删除操作,该端称为栈顶。栈顶是唯一允许访问的元素,新元素插入到栈顶,而删除操作也是从栈顶删除元素。
队列的定义队列也是一种特殊的线性表,具有先进先出(FIFO)的特点。它允许在表的一端(队尾)插入元素,而在另一端(队首)删除元素。新元素插入到队尾,而删除操作从队首删除元素。
顺序栈的定义及其特点:顺序栈是使用数组实现的栈。它的特点包括:

使用数组作为底层数据结构,通过下标直接访问栈中的元素。
栈的大小是固定的,需要提前指定栈的最大容量。
插入和删除操作只能在栈顶进行,时间复杂度为O(1)。
当栈满时无法插入新元素,称为栈上溢。
当栈为空时无法删除元素,称为栈下溢。
链式栈的定义及其特点:链式栈是使用链表实现的栈。它的特点包括:

使用链表作为底层数据结构,每个节点包含数据和指向下一个节点的指针。
栈的大小可以动态变化,不受固定容量的限制。
插入和删除操作只在栈顶进行,时间复杂度为O(1)。
不会发生栈上溢和栈下溢的情况,因为链表的长度可以根据需要进行动态调整。
顺序队列的定义及其特点:顺序队列是使用数组实现的队列。它的特点包括:

使用数组作为底层数据结构,通过下标直接访问队列中的元素。
队列的大小是固定的,需要提前指定队列的最大容量。
插入操作在队尾进行,删除操作在队首进行,时间复杂度为O(1)。
当队列满时无法插入新元素,称为队列上溢。
当队列为空时无法删除元素,称为队列下溢。
链式队列的定义及其特点:链式队列是使用链表实现的队列。它的特点包括:

使用链表作为底层数据结构,每个节点包含数据和指向下一个节点的指针。
队列的大小可以动态变化,不受固定容量的限制。
插入操作在队尾进行,删除操作在队首进行,时间复杂度为O(1)。
不会发生队列上溢和队列下溢的情况,因为链表的长度可以根据需要进行动态调整。
栈和队列的应用:栈和队列是常用的数据结构,它们在许多应用中发挥重要作用,例如:

栈常用于表达式求值、函数调用和递归算法等场景。
队列常用于任务调度、缓冲区管理和广度优先搜索等场景。
栈和队列常用于编译器的实现,如语法分析和中间代码生成。
栈和队列在操作系统中的调度算法和内存管理中也有广泛应用。
栈和队列还可以用于解决各种算法问题,如迷宫求解和图的遍历等。
二叉树的定义:二叉树是一种特殊的树结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的子树也是二叉树。每个节点最多有两个子节点,但可以没有子节点。
树的定义:树是一种非线性的数据结构,由节点和边组成。树中有一个特殊的节点称为根节点,其他节点通过边连接起来形成层次结构。树中的节点可以有任意数量的子节点。
森林的定义:森林是由多个互不相交的树组成的集合。每个树都是独立的,没有共享的节点。
二叉树的实现:顺序存储结构:可以使用数组来实现二叉树。通过数组的索引关系,可以快速访问二叉树的节点。对于节点的左子节点,可以通过计算索引的方式找到;对于节点的右子节点,可以通过计算索引的方式找到。顺序存储结构在完全二叉树中效果较好,但对于非完全二叉树会造成空间浪费。

链式存储结构:使用节点对象和指针来表示二叉树。每个节点包含数据和指向左右子节点的指针。通过指针的关系,可以遍历和操作二叉树。链式存储结构比较灵活,适用于各种二叉树的情况。
二叉树的遍历:先序遍历(Preorder Traversal):根节点 -> 左子树 -> 右子树
中序遍历(Inorder Traversal):左子树 -> 根节点 -> 右子树
后序遍历(Postorder Traversal):左子树 -> 右子树 -> 根节点
层序遍历(Level Order Traversal):按层次从上到下、从左到右遍历节点
二叉搜索树(Binary Search Tree)一种特殊的二叉树,左子节点的值小于根节点的值,右子节点的值大于根节点的值。它支持高效的插入、删除和查找操作,常用于实现有序的数据集合。
2-3-4树一种多叉树,每个节点可以存储2个、3个或4个关键字,并且保持树的平衡。它是B树的一种变种,用于实现高效的查找和插入操作。
B树一种平衡的多路搜索树,用于处理大量数据和磁盘存储。B树的特点是每个节点可以存储多个关键字,可以自动调整树的结构以保持平衡。
B+树一种变种的B树,常用于数据库索引。与B树相比,B+树在内部节点只存储关键字,而数据都存储在叶子节点上,提高了查询效率。
Huffman编码一种用于数据压缩的算法,基于二叉树的构建和遍历。它通过将出现频率高的字符用较短的编码表示,从而实现数据的高效压缩。
堆(Heap)一种特殊的二叉树结构,分为最大堆和最小堆。堆常用于优先队列的实现,可以高效地找到最大或最小的元素。
平衡二叉树的定义平衡二叉树是一种特殊的二叉树,它的左子树和右子树的高度差不超过1。平衡二叉树的目的是保持树的平衡,避免出现极端情况下的不平衡,提高插入、删除和查找操作的效率。
平衡因子的定义:平衡因子是指二叉树的左子树高度减去右子树高度的值。平衡因子可以为-1、0或1,如果平衡因子的绝对值大于1,则说明树不平衡。
平衡二叉树的旋转操作:平衡二叉树可以通过旋转操作来调整树的结构,使其保持平衡。常见的旋转操作包括左旋和右旋,通过交换节点的位置来改变树的结构。
树和森林的存储结构:树和森林可以使用链式存储结构来表示。每个节点包含数据和指向子节点的指针。多个树可以通过指针进行连接形成森林。
树和森林的遍历:树的遍历方式包括先序遍历、中序遍历和后序遍历,与二叉树的遍历类似。森林的遍历可以通过对每个树进行遍历来实现。
森林与二叉树的转换:森林可以通过将每个树转换为二叉树来实现。具体的转换方法是,对于每个树的节点,将其第一个子节点作为左子节点,将其兄弟节点作为右子节点,形成二叉树。通过这种方式,可以将森林转换为等价的二叉树。
森林结构的应用:森林结构常用于并查集(Disjoint Set)的实现。并查集是一种用于处理不相交集合的数据结构,通过森林结构来表示各个集合,并提供合并和查找操作,用于解决集合的合并和查询问题。
图的定义:图是由节点(顶点)和连接节点的边组成的一种数据结构。图可以用来表示各种实际问题中的关系和连接。图可以是有向的(边有方向)或无向的(边无方向),可以是带权重的(边具有权重)或无权重的。
图的实现:图可以使用邻接矩阵或邻接表来进行实现。

邻接矩阵:使用二维数组来表示图的连接关系。矩阵的行和列分别表示图中的节点,矩阵的元素表示节点之间的连接关系。对于无向图,邻接矩阵是对称的;对于有向图,邻接矩阵不一定对称。邻接矩阵适用于节点数量较少且边的数量相对较多的稠密图。

邻接表:使用链表或数组的列表来表示图的连接关系。每个节点对应一个链表或数组,链表或数组中存储与该节点直接相连的节点。邻接表适用于节点数量较多且边的数量相对较少的稀疏图。
图的基本操作包括:添加节点和边:向图中添加新的节点和边。
删除节点和边:从图中删除指定的节点和边。
查询节点和边:查询图中是否存在指定的节点和边。
获取节点的邻居:获取与指定节点直接相连的节点。
获取图的顶点数和边数:统计图中节点和边的数量。
图的两种遍历:深度优先搜索(Depth-First Search,DFS):从图的某个节点开始,沿着一条路径尽可能深入地访问节点,直到无法继续深入,然后回溯到上一个节点,继续访问其他路径。DFS使用栈来保存待访问的节点。

广度优先搜索(Breadth-First Search,BFS):从图的某个节点开始,首先访问该节点,然后依次访问该节点的所有邻居节点,再依次访问邻居节点的邻居节点,以此类推。BFS使用队列来保存待访问的节点。
图的基本应用:最小生成树(Minimum Spanning Tree):在无向带权图中,最小生成树是连接所有节点并且总权重最小的树。常用的算法有Prim算法和Kruskal算法。

最短路径(Shortest Path):在有向或无向带权图中,最短路径是指两个节点之间权重最小的路径。常用的算法有Dijkstra算法和Bellman-Ford算法。

拓扑排序(Topological Sorting):拓扑排序是对有向无环图进行排序,使得所有的边的起点在排序中都排在终点的前面。拓扑排序常用于任务调度、依赖关系分析等场景。

关键路径(Critical Path):关键路径是在有向带权图中,从起点到终点的最长路径。关键路径上的任务决定了整个项目的最短完成时间,常用于项目管理和进度控制。
查找的定义:查找是指在一个数据集合中寻找特定元素的过程。在计算机科学中,查找是一种常见的操作,用于确定某个元素是否存在于给定的数据结构中,并且可能返回该元素的位置或其他相关信息。
顺序查找法(Sequential Search)顺序查找是一种简单直接的查找方法。它从数据集合的第一个元素开始,逐个比较每个元素,直到找到目标元素或遍历完整个数据集合。如果找到目标元素,返回其位置;如果遍历完整个数据集合仍未找到目标元素,则返回不存在的标记。
折半查找法(Binary Search折半查找是一种高效的查找方法,但要求数据集合必须是有序的。它通过将数据集合分成两半,并与目标元素进行比较,以确定目标元素可能存在的区间。然后,根据比较结果,将查找范围缩小到可能包含目标元素的一半,并重复这个过程,直到找到目标元素或确定不存在。
散列(Hash)技术散列技术是一种基于散列函数的查找方法。散列函数将元素映射到一个固定大小的散列地址(索引),并将元素存储在该地址处。当要查找元素时,通过散列函数计算出元素的散列地址,并在该地址处查找元素。散列技术通常用于实现散列表(Hash Table)数据结构,提供快速的查找操作。
排序的定义:排序是将一组数据按照特定规则重新排列的过程,使得数据按照升序或降序的方式有序排列。排序算法是计算机科学中的基本操作,广泛应用于各种应用场景,例如数据分析、数据库操作、搜索算法等。
排序可以分为两种类型:内排序(Internal Sorting):
内排序是指所有待排序的数据可以全部加载到内存中进行排序。内排序算法的主要挑战是如何在有限的内存空间中高效地进行排序。

外排序(External Sorting):
外排序是指待排序的数据量太大,无法一次性全部加载到内存中进行排序。外排序算法通过在内存和外部存储(如硬盘)之间多次读写数据,以及利用合适的数据结构和算法来完成排序。
排序的稳定性定义:排序算法的稳定性指的是对于具有相同关键字的元素,在排序前后它们的相对位置是否保持不变。如果排序算法能够保持相同关键字元素的相对顺序,则称该排序算法是稳定的;否则,称该排序算法是不稳定的
直接插入排序(Insertion Sort):从第二个元素开始,将当前元素插入已排序的子数组中的适当位置。
重复上述步骤,直到所有元素都被插入到正确的位置。
冒泡排序(Bubble Sort):从第一个元素开始,比较相邻的两个元素,如果顺序错误,则交换它们的位置。
重复上述步骤,直到没有需要交换的元素。
简单选择排序(Selection Sort):找到未排序部分中的最小元素,将其与未排序部分的第一个元素交换位置。
重复上述步骤,直到所有元素都被排序。
Shell排序(Shell Sort):根据一定的间隔将待排序的元素分组,对每个分组进行插入排序。
逐渐缩小间隔,重复上述步骤,直到间隔为1,完成最后一次插入排序。
快速排序(Quick Sort)选择一个基准元素,将小于基准的元素放在左边,大于基准的元素放在右边。
对左右两个子数组递归地应用相同的步骤,直到每个子数组只有一个元素或为空。
堆排序(Heap Sort):将待排序的序列构建为一个最大堆(或最小堆)。
依次将堆顶元素与堆的最后一个元素交换,并重新调整堆,重复此过程直到整个序列有序。
归并排序(Merge Sort):将待排序的序列递归地划分为两个子序列,对每个子序列进行排序。
将两个有序子序列合并为一个有序序列。
基数排序(Radix Sort):将待排序的元素按照各个位上的数字进行排序,从低位到高位依次进行。
对每个位上的数字进行计数排序,重复上述步骤,直到所有位都被处理。
K路归并排序(K-way Merge Sort):将待排序的序列分成K个子序列,对每个子序列进行排序。
将K个有序子序列合并为一个有序序列。
矩阵的定义:矩阵是一个按照行和列排列的二维数组。它由m行n列的元素组成,其中每个元素可以是数字、符号、字符或其他类型的数据。矩阵通常用于表示和处理多维数据,例如图像处理、线性代数、网络分析等领域。
串的定义:串是由零个或多个字符组成的有限序列。它是一种常见的数据类型,用于表示文本、字符串、DNA序列等。串中的字符可以是字母、数字、符号或其他字符。
特殊矩阵的压缩存储:特殊矩阵是指具有特定规律或特殊性质的矩阵,例如对称矩阵、上三角矩阵、下三角矩阵等。由于特殊矩阵中存在大量的重复元素或零元素,可以使用压缩存储方法来减少存储空间。

一种常见的特殊矩阵压缩存储方法是对称矩阵的压缩存储。对称矩阵是指满足A[i][j] = A[j][i]的矩阵。在压缩存储中,只需要存储矩阵的上(或下)三角部分的元素和对应的行(或列)索引即可。这样可以减少一半的存储空间。
稀疏矩阵的三元组表示法:稀疏矩阵是指大部分元素为零的矩阵。为了节省存储空间,可以使用三元组表示法来表示稀疏矩阵。三元组表示法使用三个数组来存储非零元素的值、行索引和列索引。

具体而言,对于一个m行n列的稀疏矩阵,可以定义三个数组:

value数组:存储非零元素的值,长度为非零元素的个数。
row数组:存储非零元素对应的行索引,长度为非零元素的个数。
col数组:存储非零元素对应的列索引,长度为非零元素的个数。
通过这种方式,可以紧凑地表示稀疏矩阵,并且只需存储非零元素的信息,大大减少了存储空间的使用。
串的模式匹配:串的模式匹配是指在一个较长的文本串中查找一个较短的模式串的过程。模式匹配算法用于确定模式串在文本串中的出现位置或判断是否存在匹配。
一种常见的模式匹配算法是KMP算法(Knuth-Morris-Pratt算法)。KMP算法通过预处理模式串构建一个部分匹配表(Partial Match Table),然后利用这个表在文本串中进行匹配。KMP算法的关键思想是在匹配过程中,当出现不匹配的字符时,利用部分匹配表中的信息,跳过一些无需重新比较的字符,从而提高匹配效率。

其他常见的模式匹配算法还包括朴素的暴力匹配算法、Boyer-Moore算法、Rabin-Karp算法等。每种算法都有其特点和适用场景,选择合适的模式匹配算法取决于数据规模、匹配要求和性能需求等因素。

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

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

相关文章

TikTok与环保:短视频如何引领可持续生活方式?

在数字时代,社交媒体平台扮演着塑造文化和价值观的关键角色。而TikTok,作为一款全球短视频平台,不仅塑造着用户的娱乐方式,还在悄然地引领着可持续生活方式的潮流。本文将深入探讨TikTok与环保之间的关系,分析短视频如…

Spring源码分析---Bean 的生命周期 03

来源:Spring 3. Bean 的生命周期 自定义一个 SpringBoot 的主启动类: SpringBootApplication public class A03Application {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(A03Applicatio…

go-carbon v2.3.0 圣诞特别版发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

go-carbon v2.3.0 圣诞节特别版发布,这应该是 2023 年的最后一个版本,祝大家圣诞节快乐! carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错…

pytorch 实现 Restormer 主要模块(多头通道自注意力机制和门控制结构)

前面的博文读论文:Restormer: Efficient Transformer for High-Resolution Image Restoration 介绍了 Restormer 网络结构的网络技术特点,本文用 pytorch 实现其中的主要网络结构模块。 1. MDTA(Multi-Dconv Head Transposed Attention:多头…

选择免费的SSL证书,还是付费的?

作为一个互联网文章作者,我会根据具体的使用场景和需求来选择SSL证书。通常情况下,如果是用于个人网站或者小型项目,我会倾向于选择免费的SSL证书,比如 JoySSL提供的免费证书。这样可以在不增加额外费用的情况下为网站提供安全的加…

静态HTTP与CDN:如何优化内容分发

大家好,今天我们来聊聊静态HTTP和CDN这对“黄金搭档”。没错,就是那个让你的网站内容像闪电一样传遍全球的CDN! 首先,我们来了解一下静态HTTP。它就像是那个老实可靠的邮差,每次都按时按点地把你的内容送到用户手中。…

第二十一章博客

计算机应用实现了多台计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据。编写网络应用程序前,首先必须明确所要使用的网络协议…

Node.js中处理特殊字符的文件名,安全稳妥的方案

在Node.js中,通过path模块提供的basename方法,我们可以轻松地从文件路径中提取文件名。然而,这个方法在处理特殊字符时存在一些问题,因为它会对这些字符进行转义,导致在不同操作系统上的兼容性问题。在这篇文章中&…

C++ boost planner_cond_.wait(lock) 报错1225

1.如下程序段 boost unique_lock doesn’t own the mutex: Operation not permitted 问题: 其中makePlan是一个线程。这里的unlock导致错误这个报错 boost unique_lock doesn’t own the mutex: Operation not permitted bool navigation::makePlan(){ //cv::named…

MySQL中如何快速定位占用CPU过高的SQL

作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。 技术人人都可以磨炼,但处理问题的思…

华为OD机试 - 多段线数据压缩(Java JS Python C)

在线OJ刷题 题目详情 - 多段线数据压缩 - Hydro 题目描述 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多线段的走向只能是水平、竖直、斜向45度。 上图中的多线段可以用下面的坐标串表示:(2,8),(3,7),(3,6),(3,5),(4,4),(5,3),(6,2),(7,3),(…

042、序列模型

之——从时序中获取信息 目录 之——从时序中获取信息 杂谈 正文 1.建模 2.方案A-马尔科夫假设 3.方案B-潜变量模型 4.简单实现 杂谈 很多连续的数据都是有前后的时间相关性的,并不是每一个单独的数据是随机出现的。在时序中会蕴含一些空间结构的变化信息、…

【数据科学】一文彻底理清数据、数据类型、数据结构的概念

一、什么是数据? 入门数据学科,首先第一步要认识数据什么,可能大多数人都无法对数据做一个准确的定义,在我们印象中,提到数据首先头脑浮现的是数据表格,是一堆堆数字,那么数据就是数字吗&#x…

SpringBoot 2.0 中默认 HikariCP 数据库连接池原理解析

作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、Tomcat JDBC Connection Pool、Druid 等&am…

阿里云服务器记录

阿里云服务器记录 CentOS 8.4 64位 SCC版 CentOS 7.9 64位 SCC版 CentOS 7.9 64位 CentOS 7.9 64位 UEFI版 Alibaba Cloud Linux Anolis OS CentOS Windows Server Ubuntu Debian Fedora OpenSUSE Rocky Linux CentOS Stream AlmaLinux 阿里云服务器有个scc版,这个…

Flask+Mysql项目docker-compose部署(Pythondocker-compose详细步骤)

一、前言 环境: Linux、docker、docker-compose、python(Flask)、Mysql 简介: 简单使用Flask框架写的查询Mysql数据接口,使用docker部署,shell脚本启动 优势: 采用docker方式部署更加便于维护,更加简单快…

如何在Go中使用模板

引言 您是否需要以格式良好的输出、文本报告或HTML页面呈现一些数据?你可以使用Go模板来做到这一点。任何Go程序都可以使用text/template或html/template包(两者都包含在Go标准库中)来整齐地显示数据。 这两个包都允许你编写文本模板并将数据传递给它们,以按你喜欢的格式呈…

“C语言“——scanf()、getchar() 、putchar()、之间的关系

scanf函数说明 scanf函数是对来自于标准输入流的输入数据作格式转换,并将转换结果保存至format后面的实参所指向的对象。 而const char*format 指向的字符串为格式控制字符串,它指定了可输入的字符串以及赋值时转换方法。 简单来说给一个打印格式(输入…

【并发编程篇】源码分析,手动创建线程池

文章目录 🛸前言🌹Executors的三大方法 🍔简述线程池🎆手动创建线程池⭐源码分析✨代码实现,手动创建线程池🎈CallerRunsPolicy()🎈AbortPolicy()🎈DiscardPolicy()🎈Dis…

LNPMariadb数据库分离|web服务器集群

LNP&Mariadb数据库分离|web服务器集群 网站架构演变单机版LNMP独立数据库服务器web服务器集群与Session保持 LNP与数据库分离1. 准备一台独立的服务器,安装数据库软件包2. 将之前的LNMP网站中的数据库迁移到新的数据库服务器3. 修改wordpress网站配置…