菜单

数据结构与算法

2019年3月28日 - 2017赌博网站开户送金

不管前几日的总计机技术生成,新技巧的出现,全体都是发源数据结构与算法基础。大家要求温故而知新。

      
算法、架构、策略、机器学习时期的涉嫌。在来回和技术职员交换时,很四个人对算法和架构之间的涉及感到不可通晓,算法是软的,架构是硬的,难道算法和架构还有哪些关联不成?其实否则,算法和架构的涉嫌10分连贯。在网络时期,大家须要用算法处理的多寡规模更为大,供给的处理时间更是短,单一计算机的拍卖能力是不或者满意供给的。而架构技术的前行,带来了不少两样风味的分布式总计平台。算法为了能够利用到那一个分布式总计平台上,往往供给升高,例如:并行总计供给算法能够拆分为可并行总括的多少个单身单位,但为数不少算法不拥有那种可拆分天性,使得不可能简单通过分布式计算来进步功能。那时候,为了促成分布式化的测算作用,须要将算法进行等效改写,使得其具备独立拆分性。另一方面,算法的前进,也扭转会对计量架构提议新的供给。

      
对算法和政策的涉嫌亦是,不过那多个概念并不像算法和架构那样好解释。策略是杀鸡取卵具体难题的伎俩,而算法是化解一类题材的艺术。消除一个现实难题,也许供给将难题解释为3个要么多个算法,一起效果来消除,也恐怕不须要算法。例如,对于天性化消息,大家只怕有三个国策是:重庆大学新闻必要及时展现给用户;而落实的实际算法大概只包括“重庆大学音信挖掘算法”等。

     
机器学习是一类算法的统称,在一定的数额集合上,利用机械学习的算法,自动获得规律,来开始展览展望,机器学习世界大规模的难题回顾分类难题、回归难题等。而估计,越发是对用户的溺爱实行展望是援引领域的中坚难题之一,机器学习算法在缓解此类难题上会产生非常的大的功力。

 

正文

一 、数据结构基础

数组

定义

知识要点

时刻复杂度

链表

定义

要点

时间复杂度

哈希表或哈希图

定义

要点

日子复杂度

二叉树

定义

要点

日子复杂度

贰 、搜索基础

广度优先搜索

定义

要点

时刻复杂度

纵深优先搜索

定义

要点

光阴复杂度

广度优先搜索 VS. 深度优先搜索

一线的界别

三 、高效排序基础

归并排序

定义

要点

时刻复杂度

高效排序

定义

要点

时间复杂度

冒泡排序

定义

要点

日子复杂度

归并排序 VS. 快捷排序

肆 、算法类型基础

递归算法

定义

要点

迭代算法

定义

要点

递归 VS. 迭代

遍历数组的伪代码(这便是干什么选择迭代的来头)

Recursion | Iteration

———————————-|———————————-

recursive method (array, n) | iterative method (array)

if array[n] is not nil | for n from 0 to size of array

print array[n] | print(array[n])

recursive method(array, n+1) |

else |

exit loop

贪婪算法

定义

要点

伪代码:用贪婪算法找到数组中自由五个数字间的最大差值

greedy algorithm (array)

var largest difference = 0

var new difference = find next difference (array[n], array[n+1])

largest difference = new difference if new difference is > largest
difference

repeat above two steps until all differences have been found

return largest difference

这一算法无需比较全部数字两两里面包车型大巴差值,省略了2遍完整迭代。

以下是Big O 核对表

Legend

Excellent

Good

Fair

Bad

Horrible

Data Structure Operations

Data Structure

Time Complexity

 

 

 

 

 

 

 

Space Complexity

 

Average

 

 

 

Worst

 

 

 

Worst

 

Access

Search

Insertion

Deletion

Access

Search

Insertion

Deletion

 

Array

O(1)

O(n)

O(n)

O(n)

O(1)

O(n)

O(n)

O(n)

O(n)

Stack

O(n)

O(n)

O(1)

O(1)

O(n)

O(n)

O(1)

O(1)

O(n)

Singly-Linked List

O(n)

O(n)

O(1)

O(1)

O(n)

O(n)

O(1)

O(1)

O(n)

Doubly-Linked List

O(n)

O(n)

O(1)

O(1)

O(n)

O(n)

O(1)

O(1)

O(n)

Skip List

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

O(n)

O(n)

O(n)

O(n log(n))

Hash Table

O(1)

O(1)

O(1)

O(n)

O(n)

O(n)

O(n)

Binary Search Tree

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

O(n)

O(n)

O(n)

O(n)

Cartesian Tree

O(log(n))

O(log(n))

O(log(n))

O(n)

O(n)

O(n)

O(n)

B-Tree

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

Red-Black Tree

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

Splay Tree

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

AVL Tree

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(n)

Array Sorting Algorithms

Algorithm

Time Complexity

 

 

Space Complexity

 

Best

Average

Worst

Worst

Quicksort

O(n log(n))

O(n log(n))

O(n^2)

O(log(n))

Mergesort

O(n log(n))

O(n log(n))

O(n log(n))

O(n)

Timsort

O(n)

O(n log(n))

O(n log(n))

O(n)

Heapsort

O(n log(n))

O(n log(n))

O(n log(n))

O(1)

Bubble Sort

O(n)

O(n^2)

O(n^2)

O(1)

Insertion Sort

O(n)

O(n^2)

O(n^2)

O(1)

Selection Sort

O(n^2)

O(n^2)

O(n^2)

O(1)

Shell Sort

O(n)

O((nlog(n))^2)

O((nlog(n))^2)

O(1)

Bucket Sort

O(n+k)

O(n+k)

O(n^2)

O(n)

Radix Sort

O(nk)

O(nk)

O(nk)

O(n+k)

Graph Operations

Node / Edge Management

Storage

Add Vertex

Add Edge

Remove Vertex

Remove Edge

Query

Adjacency list

O(|V|+|E|)

O(1)

O(1)

O(|V| + |E|)

O(|E|)

O(|V|)

Incidence list

O(|V|+|E|)

O(1)

O(1)

O(|E|)

O(|E|)

O(|E|)

Adjacency matrix

O(|V|^2)

O(|V|^2)

O(1)

O(|V|^2)

O(1)

O(1)

Incidence matrix

O(|V| ⋅ |E|)

O(|V| ⋅ |E|)

O(|V| ⋅ |E|)

O(|V| ⋅ |E|)

O(|V| ⋅ |E|)

O(|E|)

Heap Operations

Type

Time Complexity

 

 

 

 

 

 

 

Heapify

Find Max

Extract Max

Increase Key

Insert

Delete

Merge

Linked List (sorted)

O(1)

O(1)

O(n)

O(n)

O(1)

O(m+n)

Linked List (unsorted)

O(n)

O(n)

O(1)

O(1)

O(1)

O(1)

Binary Heap

O(n)

O(1)

O(log(n))

O(log(n))

O(log(n))

O(log(n))

O(m+n)

Binomial Heap

O(1)

O(log(n))

O(log(n))

O(1)

O(log(n))

O(log(n))

Fibonacci Heap

O(1)

O(log(n))

O(1)

O(1)

O(log(n))

O(1)

Big-O Complexity Chart

 

2017赌博网站开户送金 1

计算机科学中最首要的叁11个算法

  1. A*
    搜索算法——图形搜索算法,从给定起源到给定终点计算出路径。当中使用了一种启发式的预计,为各种节点推测通过该节点的特等路径,并以之为各样地方排定次序。算法以博取的顺序访问这几个节点。由此,A*搜索算法是最棒优先搜索的范例。
  2. 集束搜索(又名定向寻找,Beam
    Search)——最棒优先搜索算法的优化。使用启发式函数评估它检查的种种节点的能力。然则,集束搜索只可以在每一个深度中发现最前面包车型地铁m个最符合条件的节点,m是固定数字——集束的增长幅度。
  3. 二分查找(Binary
    Search)——在线性数组中找特定值的算法,每一个步骤去掉五成不符合供给的数额。
  4. 分层界定算法(Branch and
    Bound)——在各样最优化难题中搜索特定最优消除决方案的算法,尤其是针对离散、组合的最优化。
  5. Buchberger算法——一种数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。
  6. 数据压缩——选取一定编码方案,使用更少的字节数(或是其余音信承载单元)对音讯编码的过程,又叫来源编码。
  7. Diffie-Hellman密钥沟通算法——一种加密协议,允许双方在预先不打听对方的情事下,在不安全的通信信道中,共同建立共享密钥。该密钥今后可与1个对称密码一起,加密继承报导。
  8. Dijkstra算法——针对没有负值权重边的有向图,计算个中的纯粹起源最短算法。
  9. 离散微分算法(Discrete differentiation)
  10. 动态规划算法(Dynamic
    Programming)——呈现相互覆盖的子难题和最优子框架结构算法
  11. 欧几里得算法(Euclidean
    algorithm)——计算多少个整数的最大公约数。最古老的算法之一,出现在公元前300前欧几里得的《几何原本》。
  12. 期待-最大算法(Expectation-maximization
    algorithm,又名EM-Training)——在计算测算中,期望-最大算法在可能率模型中追寻或然最大的参数推测值,当中模型重视于未发现的潜在变量。EM在四个步骤中交替总括,第壹步是计量期望,利用对藏身变量的水保估量值,总结其最大只怕估摸值;第3步是最大化,最大化在第2步上求得的最大恐怕值来总结参数的值。
  13. 马上傅里叶变换(法斯特 Fourier
    transform,FFT)——总计离散的傅里叶变换(DFT)及其反转。该算法应用范围很广,从数字信号处理到消除偏微分方程,到高速计算大整数乘积。
  14. 梯度下落(Gradient
    descent)——一种数学上的最优化算法。
  15. 哈希算法(Hashing)
  16. 堆排序(Heaps)
  17. Karatsuba乘法——要求形成上千位整数的乘法的种类中运用,比如计算机代数系统和命运程序库,即使选用长乘法,速度太慢。该算法发现于1963年。
  18. LLL算法(Lenstra-Lenstra-Lovasz lattice
    reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。LLL算法在偏下公共密钥加密方法中有大批量选拔:背包加密系统(knapsack)、有一定设置的奔驰M级SA加密等等。
  19. 最大流量算法(马克西姆um
    flow)——该算法试图从3个流量互连网中找到最大的流。它优势被定义为找到这么1个流的值。最大流难题得以用作更复杂的互连网流难点的特定情景。最大流与网络中的界面有关,那正是最大流-最小截定理(马克斯-flow
    min-cut theorem)。福特-Fulkerson 能找到1个流互联网中的最大流。
  20. 合并排序(Merge Sort)
  21. Newton法(Newton’s
    method)——求非线性方程(组)零点的一种关键的迭代法。
  22. Q-learning学习算法——那是一种通过学习动作值函数(action-value
    function)完结的加剧学习算法,函数接纳在加以状态的加以动作,并盘算出希望的功力价值,在其后依据一定的政策。Q-leanring的优势是,在不要求环境模型的情状下,能够比较可选拔行动的盼望效能。
  23. 四回筛法(Quadratic
    Sieve)——现代整数因子分解算法,在实践中,是近期已知第三快的此类算法(稍低于数域筛法Number
    FieldSieve)。对于111人以下的十一位整数,它仍是最快的,而且都觉着它比数域筛法更简约。
  24. RANSAC——是“RANdom SAmple
    Consensus”的缩写。该算法依照一多重观看得到的数额,数据中含有非常值,测度四个数学模型的参数值。其基本若是是:数据包蕴非异化值,也便是能够透过一些模型参数解释的值,异化值正是这一个不相符模型的数据点。
  25. QashqaiSA——公钥加密算法。第二个适用于以签署作为加密的算法。QashqaiSA在电商户业中仍普遍利用,我们也信任它有丰富安全长度的公钥。
  26. Schönhage-Strassen算法——在数学中,Schönhage-Strassen算法是用来形成大整数的乘法的便捷渐近算法。其算法复杂度为:O(N
    log(N) log(log(N))),该算法使用了傅里叶变换。
  27. 单纯型算法(Simplex
    Algorithm)——在数学的优化理论中,单纯型算法是常用的技能,用来找到线性规划难点的数值解。线性规划难题回顾在一组实变量上的一雨后春笋线性不等式组,以及2个等候最大化(或最小化)的固定线性函数。
  28. 奇异值分解(Singular value
    decomposition,简称SVD)——在线性代数中,SVD是最首要的实数或复数矩阵的解释方法,在信号处理和总括中有三种选取,比如总计矩阵的伪逆矩阵(以求解最小二乘法难题)、化解超定线性系统(overdetermined
    linear systems)、矩阵逼近、数值天气预先报告等等。
  29. 求解线性方程组(Solving a system of linear
    equations)——线性方程组是数学中最古老的题材,它们有无数采用,比如在数字信号处理、线性规划中的估计和展望、数值分析中的非线性难题逼近等等。求解线性方程组,能够使用高斯—约当消去法(Gauss-Jordanelimination),或是柯列斯基分解( Cholesky decomposition)。
  30. Strukturtensor算法——应用于形式识别领域,为持有像素找出一种总计办法,看看该像素是不是处在同质区域(
    homogenous region),看看它是否属于边缘,依旧是3个极端。
  31. 统一查找算法(Union-find)——给定一组成分,该算法平常用来把这一个因素分为三个分别的、彼此不重合的组。不相交集(disjoint-set)的数据结构能够跟踪那样的切分方法。合并查找算法能够在此种数据结构上完结七个有效的操作:
    • 搜索:判断某一定元素属于哪个组。
    • 合并:联合或合并五个组为一个组。
  32. 维特比算法(Viterbi
    algorithm)——寻找藏身状态最有大概类别的动态规划算法,那种系列被称作维特比路径,其结果是一名目繁多能够考察到的风云,越发是在隐藏的马克ov模型中。

现实中算法

Linux内核中的基本数据结构和算法

  1. 链表双向链表无锁链表
  2. B+
    ,代码中的注释将会报告您有的教材中无法学到的内容:

    这是二个大约的B+树完毕,作者写它的目标是作为练兵,并以此驾驭B+树的干活原理。结果该兑现发挥了它的实用价值。

    二个不常常在教材中提及的技能:最小值应该放在左侧,而不是左侧。一个节点内装有被应用的槽位应该在左手,没有接纳的节点应该为NUL,大多数的操作只遍历3回具有的槽位,在首先个NUL处终止。

  3. 带权重的不变列表用于互斥锁驱动等;

  4. 红黑树用于调度、虚拟内部存款和储蓄器管理、跟踪文件讲述符和目录条目等;

  5. 区间树
  6. Radix树,用于内存管理、NFS相关查找和网络有关的效率;

    radix树的1个广泛的用法是保留页面结构体的指针;

  7. 事先级堆,文字上的叙说,首固然在教科书中贯彻,用于control
    group系统
    ;

    包含指针的只允许不难插入的静态大小优先级堆,基于CLMurano(算法导论)第7章

  8. 哈希函数,引用Knuth和她的一篇杂谈:

    Knuth建议选取与机械和工具字长所能表明的最大整数约成黄金比例的素数来做乘法散列,Chuck
    Lever 证实了那一个技术的得力;

    http://www.citi.umich.edu/techreports/reports/citi-tr-00-1.pdf

    这个采取的素数是位稀疏的,也正是说对他们的操作能够采取移动和加法来替换机器中一点也不快的乘法操作;

  9. 多少代码,比如那几个驱动,他们是祥和完成的哈希函数

  10. 哈希表,用于落到实处索引节点文件系统完整性检查等;

  11. 位数组,用于拍卖flags、中断等,在Knuth第④卷中有对其特点的叙述;
  12. Semaphores
    spin
    locks
  13. 二叉树搜索用于暂停处理注册缓存查找等;
  14. 动用B-树举行二叉树查找
  15. 深度优先搜索和她的变体被使用于目录配置

    在命名空间树中实践2个修改过的纵深优先算法,开端(和平息于)start_handle所明确的节点。当与参数匹配的节点被发觉之后,回调函数将会被调用。假若回调函数再次来到多个非空的值,搜索将会应声结束,那个值将会回传给调用函数;

  16. 广度优先搜索用来在运营时检查锁的正确性;

  17. 链表上的集合排序用于垃圾堆回收文件系统一管理理等;
  18. 在某个驱动程序的库函数里,冒泡排序居然也被达成了
  19. Knuth-Morris-Pratt
    字符串匹配

    Knuth、Morris和 Pratt
    [1]兑现了二个线性时间复杂度字符串匹配算法。该算法完全避开了对转移函数DELTA的显式计算。其十分时间为O(n)(当中n是文本长度),只利用三个援救函数PI[1…m](个中m是形式的长短),形式的预处理时间是O(m)。PI那个数组允许DELTA函数在须求时能神速运转。大体上,对轻易状态q=0,1,…,m和任意SI罗红霉素A中的字符”a”,PI[“q”]封存了独自于”a”的新闻,并用以计算DELTA(“q”,
    “a”)。由于PI那几个数组只包涵m个条目,而DELTA包蕴O(m|SI红霉素A|)个条目,我们通过总括PI进而在预处理时间保存|SI丙胺博莱霉素A|的全面,而非计算DELTA。

    [1] Cormen, Leiserson, Rivest, Stein Introdcution to Algorithms,
    2nd Edition, MIT Press

    [2] See finite automation theory

  20. Boyer-Moore形式匹配,如下是引用和对别的算法的应用建议;

    Boyer-穆尔字符串匹配算法:

    [1] A Fast String Searching Algorithm, R.S. Boyer and Moore.
    Communications of the Association for Computing Machinery, 20(10),
    1977, pp. 762-772.
    http://www.cs.utexas.edu/users/moore/publications/fstrpos.pdf

    [2] Handbook of Exact String Matching Algorithms, Thierry
    Lecroq, 2004
    http://www-igm.univ-mlv.fr/~lecroq/string/string.pdf

    专注:由于Boyer-Moore(BM)自右向左做同盟,有一种可能是七个一双两好分布在不相同的块中,那种景况下是不能找到别的匹配的。

    若果您想确定保障这样的政工不会生出,使用Knuth-Pratt-Morris(KMP)算法来取代。相当于说,依据你的安装采用适当的字符串查找算法。

    若是你选拔文本搜索框架结构来过滤、互联网入侵检查和测试(NIDS)或然其余安全为指标,那么选取KMP。假若您提到品质,比如您在分拣数据包,并应用服务品质(QoS)策略,并且你不介意大概须要在遍布在多少个部分中十分,然后就分选BM。

Chromium 浏览器中的数据结构和算法

  1. 伸展树

    此树会被分配政策参数化,那么些方针负责在C的随机存款和储蓄空间和区域中分配列表,参见zone.h

  2. 德姆o中选用了Voronoi

  3. 遵照Bresenham算法的价签管理

还要,代码中还隐含了部分第1方的算法和数据结构,例如:

  1. 二叉树
  2. 红黑树
  3. AVL树
  4. 用于压缩的Rabin-Karp字符串匹配
  5. 计量自动机的后缀
  6. 苹果落成的布隆过滤器
  7. 布氏算法

编制程序语言类库

  1. C++
    STL
    ,包蕴的有列表、堆、栈、向量、排序、搜索和堆操作算法
  2. Java
    API
    这一个广阔,包括的太多
  3. Boost C++
    类库
    ,包括了例如Boyer-摩尔和Knuth-Morris-Pratt字符串匹配算法等;

分红和调度算法

  1. 近期最少使用算法有各类兑现格局,在Linux内核中是基于列表达成的;
  2. 任何可能供给通晓的是先入先出、最不常用和轮询;
  3. VAX、VMS系统中山大学量采纳FIFO的变体;
  4. Richard
    Carr
    钟表算法被用于Linux中页面帧替换;
  5. AMD i860电脑中接纳了随机替换策略;
  6. 自适应缓存替换被用来一些IBM的蕴藏控制中,由于专利原因在PostgreSQL唯有简短的采取;
  7. Knuth在TAOCP第③卷中涉嫌的小伙伴内部存款和储蓄器分配算法被用于Linux内核中,FreeBSD和Facebook都在行使jemalloc并发分配器;

*nix系统中的主题器件

  1. grep和awk都完成了使用汤普森-McNaughton-Yamada营造算法完成从正则表明式中创设NFA
  2. tsort完结了拓扑排序
  3. fgrep实现了Aho-Corasick
    字符串匹配算法
  4. GNU grep,据作者Mike
    Haertel所说,实现了Boyer-Moore算法
  5. Unix中的crypt(1)实现了哑谜机(Enigma
    Machine)中的加密算法的变种;
  6. Doug Mcllroy基于和James合营的原型完结的Unix
    diff
    ,比用来测算Levenshtein距离的正式动态规划算法更好,Linux版本被用来计量最短编辑距离;

加密算法

  1. Merkle树,越发是TigerTree Hash的变种,用于点对点的程序,例如GTK
    Gnutella

    LimeWire;
  2. MD5用来为软件包提供销商业学校验码,还用于*nix系统(Linux实现)中的完整性校验,同时她还协助Windows和OS
    X系统;
  3. OpenSSL福寿年高了特殊需求加密算法,诸如AES,Blowfish,DES,SHA-1,SHA-2,GL450SA,DES等;

编译器

  1. yacc和bison实现了2017赌博网站开户送金,LALR解析器
  2. 支配算法用于基于SSA格局的最优化编写翻译器;
  3. lex和flex将正则表明式编写翻译为NFA;

减弱和图纸处理

  1. 为GIF图片格式而产出的Lempel-Zivsraf算法在图片处理程序中时常被运用,从一个大约的*nix组件转化为叁个扑朔迷离的次第;

  2. 运营长度编码被用于生成PCX文件(用于Paintbrush那个顺序中),压缩BMP文件和TIFF文件;

  3. 小波压缩(Wavelet压缩)是JPEG 3000的基础,所以具有生成JPEG
    3000文书的单反相机都以落到实处了那个算法;

  4. Reed-Solomon纠错用于Linux内核、CD驱动、条形码读取,并且结合卷积从航行团队开始展览图片传输;

争执驱动条款学习算法(Conflict Driven Clause Learning)

自3000年的话,在工业标准中的SAT(布尔知足性难点)求解器的周转时刻每年都在成倍收缩。这一上扬的3个可怜主要的原因是争辩驱动条款学习算法(Conflict
Driven Clause Learning)的行使,它构成了戴维斯Logemann和Loveland的封锁编制程序和人为智能切磋技术的原始故事集中有关布尔约束传播的算法。具体来说,工业建立模型中SAT被认为是1个不难易行的标题(见讨论)。对小编的话,这是近代最伟大的中标故事之一,因为它整合了进取的算法、巧妙的筹划思路、实验报告,并以一致的共同努力来消除那几个标题。马里克和Zhang的CACM杂谈是2个很好的读书材质。许多学院都在讲解这几个算法,但常见是在逻辑或方式化方法的科目中。

 

 


可望对你集团应用开发与商店新闻化有扶持。 别的您恐怕感兴趣的篇章:

视觉直观感受 7 种常用的排序算法

匈牙利(Hungary) Sapientia 大学的 6
种排序算法舞蹈录像

摄像:6 分钟演示 15 种排序算法

SOTiguanTING:可视化呈现排序算法的原理,协理单步查看

VisuAlgo:通过动画学习算法和数据结构

软件开发的专业化
IT基础框架结构规划方案一(网络种类规划)
IT基础架构规划方案二(计算机体系与机房规划安插) 
IT基础架构规划方案三(IT基础软件和系统规划)
公司应用之性质实时衡量系统演变
云总结参考架构几例
智能运动导游化解方案简介
人力能源管理种类的嬗变

如有想精通更多软件研发 , 系统 IT集成 , 企业消息化
等音讯,请关心自个儿的微信订阅号:

2017赌博网站开户送金 2

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
正文版权归小编和天涯论坛共有,欢迎转发,但未经小编同意必须保留此段注脚,且在篇章页面显然地方给出原来的作品连接,否则保留追究法律权利的权利。
该小说也还要发布在自家的独自博客中-Petter Liu
Blog

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图