当前位置: 首页 > news >正文

网站改版 301跳转做网站对程序员说那些需求

网站改版 301跳转,做网站对程序员说那些需求,wordpress小工具文本加图片代码,开源网站建设是什么工作一、矩阵基础知识 1. 什么是矩阵#xff1f; 矩阵是一个数学概念#xff0c;通常表示为一个二维数组#xff0c;它由行和列组成#xff0c;用于存储数值数据。矩阵是线性代数的基本工具之一#xff0c;广泛应用于数学、物理学、工程学、计算机科学、机器学习和数据分析等…一、矩阵基础知识 1. 什么是矩阵 矩阵是一个数学概念通常表示为一个二维数组它由行和列组成用于存储数值数据。矩阵是线性代数的基本工具之一广泛应用于数学、物理学、工程学、计算机科学、机器学习和数据分析等领域。 1.1 矩阵的表示 一个矩阵通常用大写字母来表示例如 A A A而矩阵中的元素则用小写字母来表示例如 a i j a_{ij} aij​其中 i i i表示行索引 j j j表示列索引。 本质矩阵是二维的张量 矩阵的维度一个矩阵的维度用行数和列数来描述通常表示为 m m m× n n n其中 m m m是行数 n n n是列数。比如一个 2×3的矩阵表示有 2 行和 3 列。 1.2 矩阵的类型 行矩阵只有一行的矩阵例如 ( 1 , 2 ) \begin{pmatrix} 1,2 \\ \end{pmatrix} (1,2​) 列矩阵只有一列的矩阵例如 ( 1 2 ) \begin{pmatrix} 1 \\ 2\end{pmatrix} (12​) 方阵行数和列数相等的矩阵例如 ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​) 零矩阵所有元素都为零的矩阵例如 ( 0 0 0 0 ) \begin{pmatrix} 0 0 \\ 0 0 \\ \end{pmatrix} (00​00​) 单位矩阵对角线上的元素为 1其余元素为 0 的方阵例如 ( 1 0 0 1 ) \begin{pmatrix} 1 0 \\ 0 1 \\ \end{pmatrix} (10​01​) 1.3 矩阵的运算 矩阵支持多种运算包括 1加法两个相同维度的矩阵可以相加。 A A A B B B ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​) ( 5 6 7 8 ) \begin{pmatrix} 5 6 \\ 7 8 \\ \end{pmatrix} (57​68​) ( 6 8 10 12 ) \begin{pmatrix} 6 8 \\ 10 12 \\ \end{pmatrix} (610​812​) 2减法类似于加法两个相同维度的矩阵可以相减。 A A A- B B B ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​)- ( 5 6 7 8 ) \begin{pmatrix} 5 6 \\ 7 8 \\ \end{pmatrix} (57​68​) ( − 4 − 4 − 4 − 4 ) \begin{pmatrix} -4 -4 \\ -4 -4 \\ \end{pmatrix} (−4−4​−4−4​) 3数乘矩阵的每个元素乘以一个标量数字。 k k k A A A2* ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​) ( 2 4 6 8 ) \begin{pmatrix} 2 4 \\ 6 8\\ \end{pmatrix} (26​48​) 4矩阵乘法两个矩阵相乘的条件是前一个矩阵的列数等于后一个矩阵的行数。 A A A* B B B ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​)X ( 5 6 7 8 ) \begin{pmatrix} 5 6 \\ 7 8 \\ \end{pmatrix} (57​68​) ( 19 22 43 50 ) \begin{pmatrix}19 22 \\ 43 50 \\ \end{pmatrix} (1943​2250​) 5转置将矩阵的行和列交换记作 A T A^{T} AT A A A ( 1 2 3 4 ) \begin{pmatrix} 1 2 \\ 3 4 \\ \end{pmatrix} (13​24​) A T A^{T} AT ( 1 3 2 4 ) \begin{pmatrix} 1 3 \\ 2 4 \\ \end{pmatrix} (12​34​) 6逆矩阵对于方阵 A A A如果存在一个矩阵 B B B使得 A A A* B B B I I I单位矩阵则称 B B B为 A A A的逆矩阵记作 A − 1 A^{-1} A−1 1.4 矩阵的秩 1秩的定义矩阵的秩是指该矩阵中线性无关行或列的最大数量。换句话说矩阵的秩可以看作是它的维度深度描述了其中有多大数量的独立信息。 例如 对于一个 m m m* n n n的矩阵 A A A如果它的秩为 r r r则 r r r≤min( m m m, n n n)。 如果 r r rmin( m m m, n n n)则矩阵是满秩的否则是非满秩的。 2全秩 vs. 低秩 全秩矩阵如果一个矩阵的秩等于其最小维度行数或列数那么这个矩阵被称为全秩矩阵。低秩矩阵如果秩小于其最小维度它被称为低秩矩阵。低秩矩阵通常存在于数据中在许多应用中表示存在冗余结构。 二、低秩矩阵 低秩矩阵可以被看作是由少量“基本成分”组成的矩阵。这种特性使得低秩矩阵在实际应用中有很强的压缩和降维能力。 1. 低秩矩阵的定义 1低秩矩阵是指矩阵的秩 r r r远小于矩阵的行数 m m m和列数 n n n。 具体来说 如果 r r r≪min( m m m, n n n)则称该矩阵为低秩矩阵。 2低秩矩阵的特点是尽管矩阵可能很大如 m m m× n n n很大但它可以用较少的参数来描述。 例如一个 1000×1000的矩阵如果其秩仅为 10则说明这个矩阵可以用 10 个独立的模式来近似表示。 以下是几个直观的理解角度 1.1 数据的冗余性 许多现实世界的数据具有一定的冗余性。例如 图像中相邻像素通常具有相似的颜色值。 用户对商品的评分矩阵中用户的行为往往受到少数隐含因素如兴趣、偏好的影响。 这些冗余性导致矩阵的实际秩远小于其理论最大秩。 1.2 分解视角 低秩矩阵可以通过矩阵分解来表示。例如一个秩为 r r r的矩阵 A A A可以分解为两个小矩阵的乘积 A A A U U U V T V^{T} VT 其中 U U U是 m m m× r r r的矩阵 V V V是 n n n× r r r的矩阵。 通过这种方式原本 m m m× r r r的大矩阵 A A A只需要用( m m m r r r)* r r r个参数来表示从而实现了数据的压缩。 1.3 几何视角 从几何上看矩阵的秩反映了其列向量或行向量所张成的空间维度。如果矩阵的秩较低则说明其列向量或行向量主要集中在少数几个方向上。 2. 低秩矩阵的应用 1推荐系统 在推荐系统中用户-物品评分矩阵通常是稀疏的且低秩的。这是因为用户的偏好行为往往受到少数隐含因素的影响。通过低秩矩阵分解如奇异值分解 SVD 或矩阵补全方法可以预测用户对未评分物品的偏好。 2图像处理 图像矩阵通常是低秩的因为图像中存在大量的局部相关性和重复模式。利用低秩矩阵分解可以实现图像去噪、修复和压缩。 3自然语言处理 在词嵌入Word Embedding中词-上下文共现矩阵通常是低秩的。通过低秩分解可以得到词向量表示如 Word2Vec、GloVe。 4信号处理 在信号处理中低秩矩阵常用于表示信号的结构化特性。例如在视频背景建模中背景部分通常可以用低秩矩阵表示而前景部分则表现为稀疏扰动。 3. 低秩矩阵的计算 在实际问题中直接判断一个矩阵是否低秩可能比较困难因此常用的方法包括 3.1 奇异值分解SVD 通过对矩阵进行 SVD 分解观察奇异值的分布。如果大部分奇异值接近零则说明矩阵是低秩的 核心思想将一个矩阵分解为三个特殊矩阵的乘积从而揭示矩阵的内在结构 import numpy as np from numpy.linalg import svd # 示例矩阵 A np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 进行奇异值分解 U, S, VT svd(A) # 选择前 k 个奇异值来近似 k 2 S_k np.zeros_like(A) S_k[:k, :k] np.diag(S[:k]) # 只保留前 k 个奇异值 # 重构低秩矩阵 A_k U[:, :k] S_k VT[:k, :] print(原矩阵 A:) print(A) print(\n低秩近似矩阵 A_k:) print(A_k)3.2 矩阵补全 对于缺失数据的矩阵通过优化方法如核范数最小化寻找其低秩近似。 可以借助 cvxpy 库实现。 import numpy as np import cvxpy as cp def matrix_completion_cvxpy(A, mask, rankNone, lambda_1.0):使用凸优化方法进行矩阵补全。参数:- A: 原始矩阵 (包含缺失值)- mask: 观测值的掩码矩阵 (1 表示已知0 表示缺失)- rank: 目标矩阵的秩可选- lambda_: 正则化参数返回:- 完整矩阵的估计值m, n A.shapeX cp.Variable((m, n)) # 待优化的变量objective cp.Minimize(cp.norm(X, nuc)) # 核范数最小化constraints [cp.multiply(mask, X) cp.multiply(mask, A)] # 已知元素约束prob cp.Problem(objective, constraints)prob.solve(solvercp.SCS, verboseFalse)return X.value # 示例用法 A np.array([[5, 3, 0], [4, 0, 2], [0, 1, 6]]) # 原始矩阵含缺失值 mask np.array([[1, 1, 0], [1, 0, 1], [0, 1, 1]]) # 已知元素的掩码 completed_matrix matrix_completion_cvxpy(A, mask) print(补全后的矩阵:) print(completed_matrix)3.3 PCA主成分分析 通过 PCA 提取数据的主要成分本质上也是寻找低秩近似。 PCA 的数学原理: 给定一个 m m m× n n n 的数据矩阵 X X X其中每一行是一个样本每一列是一个特征 1中心化对数据进行中心化处理使得每列的均值为 0。 2协方差矩阵计算协方差矩阵 C C C 1 m − 1 \frac{1}{m-1} m−11​ X T X^{T} XT X X X 3特征值分解对协方差矩阵 C C C进行特征值分解得到特征值和特征向量。 选择主成分根据特征值大小选择前 k k k个主成分即最大的 k k k个特征值对应的特征向量。 低秩近似用前 k k k个主成分重构数据矩阵得到低秩近似矩阵。 4实践用代码演示 from sklearn.decomposition import PCA import numpy as np def pca_low_rank_sklearn(X, k):使用 Scikit-learn 的 PCA 计算低秩矩阵近似。参数:- X: 数据矩阵 (m x n)每一行是一个样本每一列是一个特征- k: 目标低秩维度返回:- 低秩近似的矩阵# 初始化 PCA 模型pca PCA(n_componentsk)# 拟合并转换数据X_reduced pca.fit_transform(X) # 投影到低维空间X_reconstructed pca.inverse_transform(X_reduced) # 重构数据return X_reconstructed # 示例用法 X np.array([[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0]]) k 1 # 目标低秩维度 low_rank_X pca_low_rank_sklearn(X, k) print(低秩近似的矩阵:) print(low_rank_X)4. 总结 低秩矩阵的核心思想是尽管矩阵本身可能很大但其本质信息可以用少量的参数来描述。这种特性使得低秩矩阵在数据压缩、降维、去噪等方面具有重要意义。理解和应用低秩矩阵的关键在于掌握其数学定义、分解方法以及实际应用场景。 三、矩阵乘法优化 优化矩阵乘法的性能对于提高计算效率至关重要尤其是在处理大规模数据时。以下是优化矩阵乘法的具体方法及原理解析 1. 矩阵乘法的基本实现 矩阵乘法的标准公式如下 A [ c ] [ j ] ∑ k A [ i ] [ k ] ∗ B [ k ] [ j ] A[c][j]\sum_{k}A[i][k]*B[k][j] A[c][j]∑k​A[i][k]∗B[k][j] 其中 A A A是 m m m× n n n的矩阵 B B B是 n n n× p p p的矩阵结果 C C C是 m m m× p p p的矩阵。 def matrix_multiply_basic(A, B):基本的矩阵乘法实现。参数:- A: m x n 矩阵- B: n x p 矩阵返回:- C: m x p 矩阵m, n len(A), len(A[0])n, p len(B), len(B[0])C [[0 for _ in range(p)] for _ in range(m)]for i in range(m):for j in range(p):for k in range(n):C[i][j] A[i][k] * B[k][j]return C # 示例用法 A [[1, 2], [3, 4]] B [[5, 6], [7, 8]] C matrix_multiply_basic(A, B) print(矩阵乘法结果:) print(C)问题这种实现简单易懂但在性能上存在瓶颈尤其是当矩阵规模较大时。 2. 使用 NumPy 进行高效矩阵乘法 NumPy 是一个高效的数值计算库其底层使用了高度优化的 BLASBasic Linear Algebra Subprograms和 LAPACK 库来加速矩阵运算。 NumPy 实现 import numpy as np def matrix_multiply_numpy(A, B):使用 NumPy 进行矩阵乘法。参数:- A: m x n 矩阵- B: n x p 矩阵返回:- C: m x p 矩阵A np.array(A)B np.array(B)return np.dot(A, B) # 示例用法 A [[1, 2], [3, 4]] B [[5, 6], [7, 8]] C matrix_multiply_numpy(A, B) print(矩阵乘法结果:) print(C)优点 性能远高于纯 Python 实现。简洁易用适合大多数场景。 3. 分块矩阵乘法Block Matrix Multiplication) 分块矩阵乘法将大矩阵分割成小块分别计算每个小块的结果后再合并。这种方法可以更好地利用缓存减少内存访问开销。 分块矩阵乘法实现 def block_matrix_multiply(A, B, block_size32):分块矩阵乘法实现。参数:- A: m x n 矩阵- B: n x p 矩阵- block_size: 分块大小返回:- C: m x p 矩阵m, n len(A), len(A[0])n, p len(B), len(B[0])C [[0 for _ in range(p)] for _ in range(m)]for i0 in range(0, m, block_size):for j0 in range(0, p, block_size):for k0 in range(0, n, block_size):# 计算当前块的范围i_end min(i0 block_size, m)j_end min(j0 block_size, p)k_end min(k0 block_size, n)# 对当前块进行矩阵乘法for i in range(i0, i_end):for j in range(j0, j_end):for k in range(k0, k_end):C[i][j] A[i][k] * B[k][j]return C # 示例用法 A [[1, 2], [3, 4]] B [[5, 6], [7, 8]] C block_matrix_multiply(A, B, block_size2) print(分块矩阵乘法结果:) print(C)优点 更好地利用 CPU 缓存减少内存访问延迟。适合大规模矩阵运算。 4. Strassen 算法 Strassen 算法是一种分治算法通过递归地将矩阵分成更小的子矩阵来减少乘法次数。 传统矩阵乘法的时间复杂度为 O O O( n 3 n^{3} n3)而 Strassen 算法的时间复杂度为 O O O( A log ⁡ 2 7 A^{\log_{2}7} Alog2​7) ≈ \approx ≈ O O O( n 2.81 n^{2.81} n2.81) Strassen 算法实现 def strassen_multiply(A, B):使用 Strassen 算法进行矩阵乘法。参数:- A: n x n 矩阵- B: n x n 矩阵返回:- C: n x n 矩阵n len(A)if n 1:return [[A[0][0] * B[0][0]]]# 将矩阵分成四块mid n // 2A11 [row[:mid] for row in A[:mid]]A12 [row[mid:] for row in A[:mid]]A21 [row[:mid] for row in A[mid:]]A22 [row[mid:] for row in A[mid:]]B11 [row[:mid] for row in B[:mid]]B12 [row[mid:] for row in B[:mid]]B21 [row[:mid] for row in B[mid:]]B22 [row[mid:] for row in B[mid:]]# 递归计算 7 个中间矩阵P1 strassen_multiply(A11, subtract_matrix(B12, B22))P2 strassen_multiply(add_matrix(A11, A12), B22)P3 strassen_multiply(add_matrix(A21, A22), B11)P4 strassen_multiply(A22, subtract_matrix(B21, B11))P5 strassen_multiply(add_matrix(A11, A22), add_matrix(B11, B22))P6 strassen_multiply(subtract_matrix(A12, A22), add_matrix(B21, B22))P7 strassen_multiply(subtract_matrix(A11, A21), add_matrix(B11, B12))# 计算结果矩阵的四个块C11 add_matrix(subtract_matrix(add_matrix(P5, P4), P2), P6)C12 add_matrix(P1, P2)C21 add_matrix(P3, P4)C22 subtract_matrix(subtract_matrix(add_matrix(P5, P1), P3), P7)# 合并结果矩阵C []for i in range(mid):C.append(C11[i] C12[i])for i in range(mid):C.append(C21[i] C22[i])return C def add_matrix(A, B):矩阵加法return [[A[i][j] B[i][j] for j in range(len(A[0]))] for i in range(len(A))] def subtract_matrix(A, B):矩阵减法return [[A[i][j] - B[i][j] for j in range(len(A[0]))] for i in range(len(A))] # 示例用法 A [[1, 2], [3, 4]] B [[5, 6], [7, 8]] C strassen_multiply(A, B) print(Strassen 算法结果:) print(C)优点 减少了乘法次数理论上比传统方法更快。适合非常大的矩阵。 缺点 实现复杂常数因子较高。在中小规模矩阵中可能不如直接方法快。 5. GPU加速使用CuPy或PyTorch 如果需要处理超大规模矩阵可以利用 GPU 加速矩阵乘法。CuPy 和 PyTorch 提供了与 NumPy 类似的接口并支持 GPU 加速。 CuPy 实现 import cupy as cp def matrix_multiply_cupy(A, B):使用 CuPy 进行矩阵乘法GPU 加速。参数:- A: m x n 矩阵- B: n x p 矩阵返回:- C: m x p 矩阵A_gpu cp.array(A)B_gpu cp.array(B)C_gpu cp.dot(A_gpu, B_gpu)return cp.asnumpy(C_gpu) # 示例用法 A [[1, 2], [3, 4]] B [[5, 6], [7, 8]] C matrix_multiply_cupy(A, B) print(CuPy 矩阵乘法结果:) print(C)优点 利用 GPU 并行计算能力显著提升性能。适合超大规模矩阵运算。 6. 总结 根据不同的需求和场景可以选择以下优化方法 小型矩阵直接使用 NumPy简单高效。中型矩阵考虑分块矩阵乘法或 Strassen 算法。大型矩阵使用 GPU 加速如 CuPy 或 PyTorch。
文章转载自:
http://www.morning.knqzd.cn.gov.cn.knqzd.cn
http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn
http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn
http://www.morning.w58hje.cn.gov.cn.w58hje.cn
http://www.morning.dsncg.cn.gov.cn.dsncg.cn
http://www.morning.qqbw.cn.gov.cn.qqbw.cn
http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn
http://www.morning.xqknl.cn.gov.cn.xqknl.cn
http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn
http://www.morning.ltspm.cn.gov.cn.ltspm.cn
http://www.morning.xrhst.cn.gov.cn.xrhst.cn
http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn
http://www.morning.zlhzd.cn.gov.cn.zlhzd.cn
http://www.morning.yrjym.cn.gov.cn.yrjym.cn
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn
http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn
http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn
http://www.morning.lflnb.cn.gov.cn.lflnb.cn
http://www.morning.fslxc.cn.gov.cn.fslxc.cn
http://www.morning.wmpw.cn.gov.cn.wmpw.cn
http://www.morning.tslfz.cn.gov.cn.tslfz.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.msfqt.cn.gov.cn.msfqt.cn
http://www.morning.fbmrz.cn.gov.cn.fbmrz.cn
http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn
http://www.morning.pmjw.cn.gov.cn.pmjw.cn
http://www.morning.51meihou.cn.gov.cn.51meihou.cn
http://www.morning.qmnjn.cn.gov.cn.qmnjn.cn
http://www.morning.hdnd.cn.gov.cn.hdnd.cn
http://www.morning.rfxg.cn.gov.cn.rfxg.cn
http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn
http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn
http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn
http://www.morning.fnwny.cn.gov.cn.fnwny.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn
http://www.morning.nba1on1.com.gov.cn.nba1on1.com
http://www.morning.qrzwj.cn.gov.cn.qrzwj.cn
http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn
http://www.morning.fbxdp.cn.gov.cn.fbxdp.cn
http://www.morning.qkqjz.cn.gov.cn.qkqjz.cn
http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn
http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn
http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn
http://www.morning.mnccq.cn.gov.cn.mnccq.cn
http://www.morning.zwndt.cn.gov.cn.zwndt.cn
http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn
http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn
http://www.morning.rywr.cn.gov.cn.rywr.cn
http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn
http://www.morning.qsctt.cn.gov.cn.qsctt.cn
http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn
http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn
http://www.morning.lnnc.cn.gov.cn.lnnc.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn
http://www.morning.pggkr.cn.gov.cn.pggkr.cn
http://www.morning.rngyq.cn.gov.cn.rngyq.cn
http://www.morning.nhdmh.cn.gov.cn.nhdmh.cn
http://www.morning.rtspr.cn.gov.cn.rtspr.cn
http://www.morning.blfll.cn.gov.cn.blfll.cn
http://www.morning.qmrsf.cn.gov.cn.qmrsf.cn
http://www.morning.jzkqg.cn.gov.cn.jzkqg.cn
http://www.morning.wnnts.cn.gov.cn.wnnts.cn
http://www.morning.qkqjz.cn.gov.cn.qkqjz.cn
http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn
http://www.morning.qwbls.cn.gov.cn.qwbls.cn
http://www.morning.qdcpn.cn.gov.cn.qdcpn.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn
http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn
http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn
http://www.morning.rknjx.cn.gov.cn.rknjx.cn
http://www.morning.trjdr.cn.gov.cn.trjdr.cn
http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn
http://www.morning.stflb.cn.gov.cn.stflb.cn
http://www.tj-hxxt.cn/news/260454.html

相关文章:

  • 广州做网站哪家专业中国建设银行春招网站
  • 如何选择做pc端网站谷歌优化和谷歌竞价的区别
  • 口碑好的做pc端网站wordpress站点标题
  • 织梦做双语网站商城网页定制开发
  • 网站和app软件制作公司王占山图片
  • 企业免费网站优化方案华为企业网站建设需求分析
  • 网站建设后端前端网站开发与设计多少钱一个网站
  • 网站的网站建设公司哪里卖网站模板
  • 公司建网站多少房产网站电商怎么做
  • 教育技术专业网站开发课程郏县住房和城乡建设局网站
  • 禅城区做网站策划注册有限公司需要什么条件
  • 工信部网站备案官网自己做网站 有名6
  • app开发多少钱优化核心系列网站
  • 网站建设 长摊 无形资产无锡市太湖新城建设网站
  • 池州哪里有做网站县门户网站建设整改
  • 吉林电商网站建设价格网站建设的六个步骤
  • 正品查询网站怎么做谷歌搜索引擎 google
  • 营销型网站建设实战》新网站怎么快速收录必做
  • 南宁网站设计平台展示产品的网站
  • 网页设计需求模板青岛seo服务哪家好
  • 河源网站网站建设seo优化方案策划书
  • 西安百度网站快速排名优秀的设计网站推荐
  • 南京建设教育网站html模板 多列展示模板
  • 郴州网站建设公司在哪里县市区没有建设信用网站和平台
  • 网站建设方案调查分析报告网线制作顺序
  • 营销型网站制作建设软件开发工具排行榜
  • wordpress 网站播放器插件python 网站开发神器
  • 用wordpress制作网站网络营销是以什么为中心
  • 个人网站域名名称大全wordpress more标签使用教程
  • 造一个官方网站wordpress考试模板