精华内容
下载资源
问答
  • 立体匹配算法(局部立体匹配 、全局立体匹配 、深度学习立体匹配 )
    千次阅读
    2021-11-19 14:16:02

    前言

    双目立体匹配的原理类似于人类的视觉原理:分别单独使用左眼和单独使用右眼去观察一个物体,该物体在两个视角中的相对位置会存在一定的偏移,人类视觉系统可以根据该偏移去判断该物体的距离远近。

    同样的,在双目立体匹配中,只要能在两张图像中正确地找到匹配点,结合相机的内部参数和外部参数,就能精准地计算出空间点距离拍摄相机的距离。

    目录

    一、立体匹配简介

    二、国内外研究现状

    更多相关内容
  • 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ; 局部变量可以与全局变量同名, 在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器 而言...
  • 如果该方向在局部改进很大,但并没有指向代价低得多的遥远区域,那么我们有可能在单点处克服以上所有困难,但仍然表现不佳。Goodfellow等人认为大部分训练的运行时间取决于到达解决方案的轨迹长度。如下图所示,学习...

    分类目录:《机器学习中的数学》总目录
    相关文章:
    · 病态
    · 局部极小值
    · 高原、鞍点和其他平坦区域
    · 梯度消失和梯度爆炸
    · 非精确梯度
    · 局部和全局结构间的弱对应


    迄今为止,我们讨论的许多问题都是关于损失函数在单个点的性质——若 J ( θ ) J(\theta) J(θ)是当前点 θ \theta θ的病态条件,或者 θ \theta θ在悬崖中,或者 θ \theta θ是一个下降方向不明显的鞍点,那么会很难更新当前步。

    如果该方向在局部改进很大,但并没有指向代价低得多的遥远区域,那么我们有可能在单点处克服以上所有困难,但仍然表现不佳。Goodfellow等人认为大部分训练的运行时间取决于到达解决方案的轨迹长度。如下图所示,学习轨迹将花费大量的时间探寻一个围绕山形结构的宽弧。
    局部最优导致的问题
    大多数优化研究的难点集中于训练是否找到了全局最小点、局部极小点或是鞍点,但在实践中神经网络不会到达任何一种临界点。下图表明神经网络通常不会到达梯度很小的区域。甚至,这些临界点不一定存在。例如,损失函数 − log ⁡ p ( y ∣ x ; θ ) -\log p(y|x;\theta) logp(yx;θ)可以没有全局最小点,而是当随着训练模型逐渐稳定后,渐近地收敛于某个值。对于具有离散的 y y y和Softmax分布 p ( y ∣ x ) p(y|x) p(yx)的分类器而言,若模型能够正确分类训练集上的每个样本,则负对数似然可以无限趋近但不会等于零。同样地,实值模型 p ( y ∣ x ) = N ( y ; f ( θ , β − 1 ) ) p(y|x)=N(y;f(\theta,\beta^{-1})) p(yx)=N(y;f(θ,β1))的负对数似然会趋向于负无穷——如果 f ( θ ) f(\theta) f(θ)能够正确预测所有训练集中的目标 y y y,学习算法会无限制地增加 β \beta β。上图给出了一个失败的例子,即使没有局部极小值和鞍点,该例还是不能从局部优化中找到一个良好的代价函数值。
     梯度下降通常不会到达任何类型的临界点
    未来的研究需要进一步探索影响学习轨迹长度和更好地表征训练过程的结果。许多现有研究方法在求解具有困难全局结构的问题时,旨在寻求良好的初始点,而不是开发非局部范围更新的算法。

    梯度下降和基本上所有的可以有效训练神经网络的学习算法,都是基于局部较小更新。之前的小节主要集中于为何这些局部范围更新的正确方向难以计算。我们也许能计算目标函数的一些性质,如近似的有偏梯度或正确方向估计的方差。在这些情况下,难以确定局部下降能否定义通向有效解的足够短的路径,但我们并不能真的遵循局部下降的路径。目标函数可能有诸如病态条件或不连续梯度的问题,使得梯度为目标函数提供较好近似的区间非常小。在这些情况下,步长为 ϵ \epsilon ϵ的局部下降可能定义了到达解的合理的短路经,但是我们只能计算步长为 δ < < ϵ \delta<<\epsilon δ<<ϵ的局部下降方向。在这些情况下,局部下降或许能定义通向解的路径,但是该路径包含很多次更新,因此遵循该路径会带来很高的计算代价。有时,比如说当目标函数有一个宽而平的区域,或是我们试图寻求精确的临界点(通常来说后一种情况只发生于显式求解临界点的方法,如牛顿法)时,局部信息不能为我们提供任何指导。在这些情况下,局部下降完全无法定义通向解的路径。在其他情况下,局部移动可能太过贪心,朝着下坡方向移动,却和所有可行解南辕北辙,或者是用舍近求远的方法来求解问题。

    不管哪个问题最重要,如果存在一个区域,我们遵循局部下降便能合理地直接到达某个解,并且我们能够在该良好区域上初始化学习,那么这些问题都可以避免。最终的观点还是建议在传统优化算法上研究怎样选择更佳的初始化点,以此来实现目标更切实可行。

    一些理论结果表明,我们为神经网络设计的任何优化算法都有性能限制。通常这些结果不影响神经网络在实践中的应用。

    一些理论结果仅适用于神经网络的单元输出离散值的情况。然而,大多数神经网络单元输出光滑的连续值,使得局部搜索求解优化可行。一些理论结果表明,存在某类问题是不可解的,但很难判断一个特定问题是否属于该类。其他结果表明,寻找给定规模的网络的一个可行解是很困难的,但在实际情况中,我们通过设置更多参数,使用更大的网络,能轻松找到可接受的解。此外,在神经网络训练中,我们通常不关注某个函数的精确极小点,而只关注将其值下降到足够小以获得一个良好的泛化误差。对优化算法是否能完成此目标进行理论分析是非常困难的。因此,研究优化算法更现实的性能上界仍然是学术界的一个重要目标。

    展开全文
  • 什么全局变量,局部变量,静态局部变量,静态全局变量 到这里,我们就可以很容易区分上面的变量类型了。实际上这里只是换了一种说法: 全局:具有文件作用域的变量 静态:具有静态存储期或内部链接属性 局部:具有...

    来源:公众号【编程珠玑】

    作者:守望先生

    
     

    前言

    这些是编程语言中的基本概念,如果你还不是非常明确地清楚标题的问题,并且不知道作用域,链接属性,存储期等概念的具体含义,那么本文你不该错过。为了更加清晰的理解我们的问题,需要先了解三个概念:作用域,链接属性,存储期。

    作用域

    C语言中,作用域用来描述标识符能够被哪些区域访问。

    而常见作用域有以下几种:

    为了便于说明,我们来看一个例子,就很容易理解了:

    /****************************作者:守望先生来源:公众号编程珠玑个人博客:https://www.yanbinghu.com***************************************/#include <stdio.h>int num1 = 222;         //定位在函数外,具有文件作用域static int num2 = 111;  //定义在函数外,具有文件作用域int swap(int *a,int *b); //这里的a,b是函数原型作用域int swap(int *a,int *b){    if(NULL== a || NULL == b)        goto error;        else    {        int temp = *a;  //定义在函数内,块作用域        *a = *b;        *b = temp;        return 0;    }    //printf("temp is %d\n",temp);   //因为temp具有块作用域,因此在这里不能直接使用    error://goto语句的标签,函数作用域,因此在前面就可以引用        {            printf("input para is NULL\n");            return -1;        }}int main(void){    printf("num1=%d,num2=%d\n",num1,num2);    swap(&num1,&num2);  //num1 num2具有文件作用域,可以在main函数中直接使用    printf("num1=%d,num2=%d",num1,num2);    return 0;}
    #include <stdio.h>
    int num1 = 222;         //定位在函数外,具有文件作用域
    static int num2 = 111;  //定义在函数外,具有文件作用域
    int swap(int *a,int *b)//这里的a,b是函数原型作用域
    int swap(int *a,int *b)
    {
        if(NULL== a || NULL == b)
            goto error;    
        else
        {
            int temp = *a;  //定义在函数内,块作用域
            *a = *b;
            *b = temp;
            return 0;
        }
        //printf("temp is %d\n",temp);   //因为temp具有块作用域,因此在这里不能直接使用
        error://goto语句的标签,函数作用域,因此在前面就可以引用
            {
                printf("input para is NULL\n");
                return -1;
            }
    }
    int main(void)
    {
        printf("num1=%d,num2=%d\n",num1,num2);
        swap(&num1,&num2);  //num1 num2具有文件作用域,可以在main函数中直接使用
        printf("num1=%d,num2=%d",num1,num2);
        return 0;
    }

    可以看到,error标签具有函数作用域,整个函数内都可见,而temp具有块作用域,因此在大括号外部,不能直接使用它。而num1和num2具有文件作用域,因此main函数可以直接使用它。

    链接属性

    在《hello程序是如何变成可执行文件的》我们说到了编译的过程,最后一个步骤就是链接。链接属性决定了在不同作用域的同名标识符能否绑定到同一个对象或者函数。或者说,不同作用域的标识符在编译后是否是同一个实体。

    c变量有三种链接属性:

    再稍作解释,没有static修饰,且具有文件作用域的变量,他们在链接时,多个同名标识符的变量最终都绑定到同一个实体。而static修饰的具有文件作用域的变量就不一样了,不同文件内,即便标识符名字相同,它们也绑定到了不同的实体。

    因此,如果我们希望某个变量或函数只在某一个文件使用,那么使用static修饰是一个很好的做法。

    同样的,来看一个例子。

    /****************************作者:守望先生来源:公众号编程珠玑个人博客:https://www.yanbinghu.com***************************************/#include <stdio.h>int a = 5;   //文件作用域,外部链接属性,其他文件可通过extern int a的方式使用该文件的astatic b = 6;  //文件作用域,内部链接属性,即便其他文件也有同名标识符,它们也是不同的int main(void){    int sum = 0 ; //无链接属性    sum = a + b;    printf("sum is %d\n",sum);    return 0;}
    #include <stdio.h>
    int a = 5;   //文件作用域,外部链接属性,其他文件可通过extern int a的方式使用该文件的a
    static b = 6;  //文件作用域,内部链接属性,即便其他文件也有同名标识符,它们也是不同的
    int main(void)
    {
        int sum = 0 ; //无链接属性
        sum = a + b;
        printf("sum is %d\n",sum);
        return 0;
    }

    从代码中可以看到,a和b都具有文件作用域,a具有外部链接属性,而b具有内部链接属性,sum具有块作用域,因此无链接属性。

    存储期

    实际上作用域和链接属性都描述了标识符的可见性,而存储期则描述了这些标识符对应的对象的生存期。存储期,也分下面几种:

    关于初始化,可参考《C语言入坑指南-被遗忘的初始化》。
    同样地,我们通过下面的代码来更好地理解存储期:

    /****************************作者:守望先生来源:公众号编程珠玑个人博客:https://www.yanbinghu.com***************************************/#include <stdio.h>int num1 = 222;         //静态存储期static int num2 = 111;  //静态存储期int add(int a,int b){    static int tempSum = 0;  //静态存储期    tempSum = tempSum + a + b;    return tempSum;}int main(void){    printf("num1=%d,num2=%d\n",num1,num2);    int sum = 0;  //自动存储期    sum = add(num1,num2);    printf("first time sum=%d\n",sum);//sum = 333    sum = add(num1,num2);    printf("second time sum=%d\n",sum); //sum = 666    return 0;}
    #include <stdio.h>
    int num1 = 222;         //静态存储期
    static int num2 = 111;  //静态存储期
    int add(int a,int b)
    {
        static int tempSum = 0;  //静态存储期
        tempSum = tempSum + a + b;
        return tempSum;
    }
    int main(void)
    {
        printf("num1=%d,num2=%d\n",num1,num2);
        int sum = 0;  //自动存储期
        sum = add(num1,num2);
        printf("first time sum=%d\n",sum);//sum = 333
        sum = add(num1,num2);
        printf("second time sum=%d\n",sum); //sum = 666
        return 0;
    }

    另外,如果我们通过nm命令查看编译出来的程序文件的符号表,我们可以找到num1,num2,tempSum,而没有sum,前者所用的内存数量在编译时就确定了。关于nm命令的使用可以参考《linux常用命令-开发调试篇》。

    $ gcc -g -o lifetime lifetime.c $ nm lifetime|grep num10000000000601038 D num1$ nm lifetime|grep num2000000000060103c d num2$ nm lifetime|grep tempSum0000000000601044 b tempSum.2289$ nm lifetime|grep sum$|grep num1
    0000000000601038 D num1
    $ nm lifetime|
    grep num2
    000000000060103c d num2
    $ nm lifetime|grep tempSum
    0000000000601044 b tempSum.2289
    $ nm lifetime|
    grep sum
    $

    什么全局变量,局部变量,静态局部变量,静态全局变量

    到这里,我们就可以很容易区分上面的变量类型了。实际上这里只是换了一种说法:
    全局:具有文件作用域的变量
    静态:具有静态存储期或内部链接属性
    局部:具有函数或块作用域的变量

    因而结合起来,也就很好理解了。

    当然,这仅仅是为了区分它们,这并不是它们的严格定义。更好的方法,是通过代码来理解:

    #include <stdio.h>int num1 = 222;         //全局变量static int num2 = 111;  //静态全局变量int add(int a,int b){    static int tempSum = 0;  //静态局部变量    tempSum = tempSum + a + b;    return tempSum;}int main(void){    printf("num1=%d,num2=%d\n",num1,num2);    int sum = 0;  //局部变量    sum = add(num1,num2);    printf("first time sum=%d\n",sum);//sum = 333    return 0;}
    int num1 = 222;         //全局变量
    static int num2 = 111;  //静态全局变量
    int add(int a,int b)
    {
        static int tempSum = 0;  //静态局部变量
        tempSum = tempSum + a + b;
        return tempSum;
    }
    int main(void)
    {
        printf("num1=%d,num2=%d\n",num1,num2);
        int sum = 0;  //局部变量
        sum = add(num1,num2);
        printf("first time sum=%d\n",sum);//sum = 333
        return 0;
    }

    总结

    本文总结如下:

    参考

    https://en.wikipedia.org/wiki/Global_variables

    https://en.wikipedia.org/wiki/Local_variable

    《C11标准文档》


    关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

    640?wx_fmt=jpeg

    展开全文
  • 局部变量与全局变量

    千次阅读 2021-01-08 11:31:01
    局部变量与全局变量的关系是一个非常重要且细致的问题,在这方面,稍不注意就非常容易出问题。现稍作总结。 变量的作用域 变量的作用域是指变量的使用范围。根据变量的作用域,可以将变量分为局部变量与全局变量。 ...

    局部变量与全局变量的关系是一个非常重要且细致的问题,在这方面,稍不注意就非常容易出问题。现稍作总结。

    变量的作用域

    变量的作用域是指变量的使用范围。根据变量的作用域,可以将变量分为局部变量与全局变量。

    局部变量

    在一个函数内复合语句内定义的变量称为局部变量。此外,函数的形参也属于局部变量。
    局部变量只允许在其定义的函数或复合语句中使用,离开所在的函数或复合语句后该局部变量将不能使用。

    • main()函数中定义的变量不能在其余的函数中使用。
    • 复合语句中定义的变量只能在该复合语句中使用
    • for()循环中定义的变量只能在该循环语句中使用

    重要说明
    局部变量是在执行该函数或复合语句时自动建立,当该函数或复合语句执行完毕后将自动释放。所以在不同的函数或复合语句中定义同名的局部变量,也不会相互干扰。

    全局变量

    全局变量声明与所有函数之外,可以被所有函数使用。

    #include <iostream>
    using namespace std;
    
    int a=3,b=5;//定义了全局变量a,b
    
    int fun(int a,int b)//函数形参也是a,b
    {
        return a>b?a:b;
    }
    
    int main()
    {
        int a=8;//在main()中定义了局部变量a
        cout<<fun(a,b);//输出a,b中的最大值
        return 0;
    }
    //运行结果
    8
    

    在上述代码中定义了全局变量a、b,又在main()中定义了局部变量a,这是被允许的。并且,在main()中调用了fun()函数,且实参为main()中定义的a与全局变量b,注意,fun()是在main()中调用的,其实参为main()中的a,并非是全局变量a。所以实际上传递的参数的值为fun(8,5),而不是fun(3,5)。
    系统规定,当局部变量与全局变量同名时,在该函数或者复合语句内,局部变量优先于全局变量,也即“局部变量优先”原则。
    在这种情况下,即在函数或者复合语句内有和全局变量同名的变量时,当想使用全局变量,需要在变量前加作用域运算符“::”。

    #include <iostream>
    using namespace std;
    
    int a=3;//定义了全局变量a
    
    int main()
    {
        int a=8;//在main()中定义了局部变量a
        cout<<::a;//输出全局变量a
        return 0;
    }
    //运行结果
    3
    
    展开全文
  • 全局特征和局部特征

    千次阅读 2021-12-09 01:50:14
    全局特征是指对每一张行人图片的全局信息进行一个特征抽取,这个全局特征没有任何的空间信息。 缺点: 噪声区域会对全局特征造成极大的干扰(背景杂波)。 姿态的不对齐造成信息不对齐,也会使得全局特征无法匹配。 ...
  • 普通局部变量 存在栈区 不初始化内容随机 只在定义的复合语句中有效 复合语句结束变量空间释放 普通全局变量 存在全局区 不初始化内容为0 整个进程结束空间释放 能被当前源文件或其他源文件使用,其他源文件使用时...
  • 最后,提出了一种优化框架,将局部区别和全局稀有度值结合起来,以获得点云的最终显著性检测结果。我们将所提出的方法与几种相关算法进行了比较,并将其应用于一些计算机图形应用程序,例如兴趣点检测、视点选择和...
  • Lua全局变量与局部变量

    千次阅读 2019-04-22 16:55:52
    在lua中,局部变量(变量名前加 local)与全局变量类似于C语言中的概念: print(a) --打印变量nil a=111 --全局变量(整个lua文件中都可以使用,向下的范围) do local a=0--局部变量在语句块的结束 a=1 ...
  • Python中都全局变量和局部变量

    千次阅读 多人点赞 2020-10-31 17:14:44
    下述代码中,t是全局变量,m是局部变量 t = 1 def func(x): m = 2 return x//m 规则 1. 局部变量和全局变量是不同的变量,即使变量名相同 局部变量是函数中的占位符,与全局变量可能重名,但不是同一个变量 ...
  • Python中局部变量和全局变量的详解

    千次阅读 2021-09-26 18:55:31
    1.局部变量 定义: 局部变量,就是在函数内部定义的变量 约束: 其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的 实例: def test1(): a = 120 print("我是局部变量a:",a) a = ...
  • JNI:全局引用&局部引用&弱全局引用

    千次阅读 2022-03-05 00:44:08
    这些引用在 JNI 中分为三种 全局引用 (Global Reference) 局部引用 (Local Reference) 弱全局引用 (Weak Global Reference), JDK 1.2 引入 1. 局部引用 最常见的引用类型,基本上通过JNI返回来的引用都是局部...
  • 全局变量和局部变量 (1)全局变量和局部变量的含义: 在函数体内部定义的变量叫做局部变量,在函数体外部定义的变量叫做全局变量。局部变脸只能在定义的那个函数体的内部进行使用,而全局变量在所有函数内部都...
  • 批处理脚本中的局部全局变量

    千次阅读 2019-04-02 09:41:11
    调用SETLOCAL命令,使变量限制在局部访问范围,以调用ENDLOCAL为结束边界,即SETLOCAL和ENDLOCAL之间的变量为局部变量。 @echo off set globalvar=110 SETLOCAL set var=220 set /A var=%var% + 5 echo %var% echo ...
  • 前端页面局部全局)刷新方法

    千次阅读 2019-07-11 15:42:26
    前端页面局部全局)刷新方法 JS / Jquery 刷新方法: //div的局部刷新 <div class="dl"></div> $(".dl").load(location.href+" .dl"); //全页面的刷新方法 window.location.reload()刷新当前...
  • perl 局部全局变量

    千次阅读 2020-07-30 23:34:52
    局部变量 局部变量范围是局部的,它存在于这两个花括号(通常称为代码块)之间,在该块之外这个变量不存在。 这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如if,if-else等,或任何循环块,如for,...
  • c语言中的局部变量和全局变量

    千次阅读 2021-08-05 22:52:14
    我们按照变量的作用域范围可以把变量划分为局部变量和全局变量; 局部变量 局部变量出现在三种地方: (1)在函数的开头定义的变量 (2) 在函数内的复合语句内定义的变量 (3)形式参数 在一个函数内部定义的变量只在...
  • 局部变量和全局变量,以及作用范围

    万次阅读 多人点赞 2018-11-11 13:56:55
    变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 变量按作用域分:  全局变量:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量...
  • 全局变量是编程术语中的一种,源自于变量之分。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。...全局变量和局部变量的区别:1、作用域不...
  • c#局部变量和全局变量

    千次阅读 2020-07-29 20:02:49
    局部变量:声明在函数体内的变量,称之为局部变量。 using System; namespace MSN { class MainClass { int Add(int num1, int num2) { int sum;//局部变量 sum = num1 + num2; return sum; } public...
  • python局部全局变量

    千次阅读 2021-02-09 23:19:00
    全局变量和局部变量1、局部变量局部变量就是python函数内定义的变量其作用范围也就是函数内部有效而且优先,出了此函数就无效操作name='全局'def fun1():name='局部'print('fun1:',name)def fun2():print(name)def ...
  • 全局变量、局部变量、静态全局变量、静态局部变量的区别
  • 1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器...
  • js把局部变量变为全局变量

    千次阅读 2019-01-08 23:45:42
    <!DOCTYPE html>    <title>title    //函数的自调用---自调用函数 ... //页面加载后....//局部变量 ...//局部变量 ... //如何把局部变量变成全局变量?  //把局部变量给window就可以了  
  • 全局变量和局部变量一些常见问题 3.1全局变量跟局部变量重名 当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope。 当全局变量遇上局部变量时...
  • 局部变量和全局变量

    千次阅读 2020-11-02 15:34:48
    全局变量:就是在函数外部定义的变量。(注意是定义在所有函数的外部)。所有的函数内部都可以使用这个变量。 二、局部变量 1. 函数外部不能使用局部变量。【例1】【例2】 2. ...
  • ReID基础 | 全局特征和局部特征

    千次阅读 2021-04-07 11:28:47
    经过仿射变换后的图片是一一对齐的,头部对头部… 将原图和仿射图分别放入一个网络得到特征,进行融合,全局特征loss、融合特征loss、局部特征loss。 Spindle Net(经典): 利用姿态点估计模型,得到14个姿态点。 ...
  • JavaScript把局部变量变成全局变量

    千次阅读 2021-04-19 17:01:57
    文章目录函数的自调用——自调用函数使用形式注意那么如何把局部变量变成全局变量?应用案例1——将随机数对象赋给window应用案例2——产生随机位置小方块 首先我们要知道函数的自调用 函数的自调用——自调用函数 一...
  • 局部变量与全局变量的区别

    千次阅读 2020-10-20 09:13:48
    1、定义不同:局部变量指的是在函数内定义的变量,全局变量指的是在函数外定义的变量。2、内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。3. 生命期不同:全局变量的生命期和主程序一样,随...
  • 全局数组和局部数组

    千次阅读 2020-12-20 11:01:05
    *全局数组和局部数组 自己写桶排序程序时发现了一个大数组无法使用局部变量的问题,必须使用全局变量,总结时发现了博主这篇很好的文章,收藏! 注:本文转自http://blog.sina.com.cn/s/blog_4a033b090100zdsd.html ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 574,180
精华内容 229,672
关键字:

局部影响全局