精华内容
下载资源
问答
  • ES6常用最新特性:1.变量let和常量const 他们作用域只限制于{}大括号内,不再像以前一样被置顶依次输出0到9这样方法也比一千更加简洁2.模板字符串第一:字符串格式化const name = 'lux'console.log(`hello ${...

    ES6常用最新特性:

    1.变量let和常量const  他们的作用域只限制于{}大括号内,不再像以前一样被置顶

    依次输出0到9这样的方法也比一千更加简洁

    2.模板字符串

    第一:字符串格式化

    const name = 'lux'

    console.log(`hello ${name}`) 

    采用了${}来界定

    第二:字符串一行行拼接或者多行字符串以前用\;现在直接 ’ ‘反引号就可以了

    const template = `<div>

            <span>helloworld</span>

        </div>`

    第三:对于字符串ES6有很多不错的方法

    // 1.includes:判断是否包含然后直接返回布尔值

    const str = 'hahay'

    console.log(str.includes('y')) // true

    // 2.repeat: 获取字符串重复n次

    const str = 'he'

    console.log(str.repeat(3)) // 'hehehe'

    //如果你带入小数, Math.floor(num) 来处理

    // s.repeat(3.1) 或者 s.repeat(3.9) 都当做成s.repeat(3) 来处理

    // 3. startsWith 和 endsWith 判断是否以给定文本开始或者结束const str = 'hello world!'

    console.log(str.startsWith('hello')) // true

    console.log(str.endsWith('!')) // true

    3函数

    1:函数的快捷写法(箭头函数)

    不需要function关键字来创建函数

    省略return关键字

    继承当前上下文的this关键字

    //例如:

        [1,2,3].map(x => x + 1)

    //等同于:

        [1,2,3].map((function(x){

            return x + 1

    }).bind(this))

    Ps:当函数有且只有一个参数时可以省略那个小括号

    2:扩展的对象功能

    3:更方便的数据访问

    之前获取对象的信息是一个一个获取,现在ES6则是直接从对象或者数组里取出数据存为变量

    //对象

    const people = { name: 'lux', age: 20 }

    const { name, age } = people

    console.log(`${name} --- ${age}`)

    //数组

    const color = ['red', 'blue']

    const [first, second] = color

    console.log(first) //'red'

    console.log(second) //'blue'

    4:Spread Operator展开运算符

    组装对象或者数组

    Import和export:导入导出模块,


    展开全文
  • 版本。 SQL> select * from v$...10053跟踪发现优化器优化后把CC解析为 a表了: SELECT A.AA AA, A.BB BB, A.CC CC, A.DD DD FROM LZJ.T_LZJ2 B, LZJ.T_LZJ1 A WHERE A.CC > 5 AND A. AA = B.AA;
  • 分别在触觉单模态和视触觉双模态下,采用平置按压和捏持弯曲触摸方式,通过与参考织物对比评价织物试样柔软感。采用相关性分析确定影响织物柔软感主要物理指标,以该指标为刺激量用logistic函数拟合正确判断率...
  • es6一些特性

    2017-09-04 21:28:02
    历时将近6年时间来制定新 ECMAScript 标准 ECMAScript 6, 这里摘取了ES6一些新语法,新特性, 功能特别强大,个人感觉非常好用
  • java的特性

    2018-03-17 12:41:25
    (本文只是作者读书的总结,不作为... java的设计的目地是让开发者感觉简学易用,假如你一个丰富的c++程序员,那么学习java不费吹灰之力,因为java继承了c和c++语法和面向对象的特性 [b]安全[/b] 当你从互联...
    (本文只是作者读书的总结,不作为自己的著作和商业用途,仅供自己记录和学习之用,如
    涉及到版权问题,本文可以立刻删除。仅此公示。)

    [b]简单[/b]
    java的设计的目地是让开发者感觉简学易用,假如你一个丰富的c++程序员,那么学习java不费吹灰之力,因为java继承了c和c++语法和面向对象的特性

    [b]安全[/b]
    当你从互联网上下载一个可执行文件的时候,下载完成,都反复检查病毒,生怕电脑被病毒入侵。除了病毒,另一种恶意的程序也必须警惕。这种恶意的程序可通过搜索你计算机本地文件系统的内容来收集你的私人信息。Java在网络应用程序和你的计算机之间提供了一道防火墙,也就我们说的JVM

    [b]可移植[/b]
    java的可移植关键是字节码。字节码在jvm下运行,只要不同平台集成jvm,则相同的字节码文件被不同平台的jvm解释执行,从而达到可移植性。

    [b]面向对象(封装、继承、多态)[/b]
    ⑴对象。
    对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅
    能表示具体的事物,还能表示抽象的规则、计划或事件。[2]
    ⑵对象的状态和行为。
    对象具有状态,一个对象用数据值来描述它的状态。
    对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
    对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中[2]
    ⑶类。
    具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,
    类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
    类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
    类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。[2]
    [b]健壮[/b]
    程序失败的两个主要原因:内存管理错误和误操作引起的异常情况(也就是运行时错误)
    在传统的编程环境下,内存管理是一项困难、乏味的任务。例如,在C/C++中,程序员必须手工地分配并且释放所有的动态内存。这有时会导致问题,因为程序员可能忘记释放原来分配的内存,或者释放了其他部分程序正在使用的内存。 Java通过替你管理内存分配和释放,可以从根本上消除这些问题(事实上,释放内存是完全自动的,因为Java为闲置的对象提供内存垃圾自动收集),还有java有异常机制,各种异常都有自己把控。

    [b]多线程[/b]

    [b]体系结构中立[/b]
    由于jvm的结构中立,导致不管操作系统升级,处理器升级,还是系统资源的变更,都对程序的运行没有任何影响。“只要写一次程序,在任何地方、任何时间该程序永远都能运行”.

    [b]解释性和高性能[/b]
    java是解释执行语言,而且java的字节码经过仔细设计,和容易被JIT编译技术将字节码直接转换成高性能的本机语言。

    [b]分布式[/b]
    java为Internet的分布式环境而设计,因为处理tcp/ip协议。提供远方法的远程调用的软件包,这个特性使客户端/服务器编程达到了无与伦比的抽象级。

    [b]动态[/b]
    Java程序带有多种的运行时类型信息,用于在运行时校验和解决对象访问问题
    展开全文
  • Unity的特性总结

    2021-03-05 20:10:35
    言归正传,说起特性,我会想起有一次面试,面试官问我用过哪些unity的特性.当时懵懂的我压根不知道特性是啥,但其实当时是用过特性的 至少下边这两个我觉得初学者都会用过吧. [HideInInspector]//关闭在Inspector视图...

    终于脱离了军工单位,我也终于跳出了藩篱,回到互联网的怀抱.博客也终于可以继续更新了,喜大普奔,毕竟每周都有涨粉 哈哈哈感觉不更新对不起自己的良心

    言归正传,说起特性,我会想起有一次面试,面试官问我用过哪些unity的特性.当时懵懂的我压根不知道特性是啥,但其实当时是用过特性的 至少下边这两个我觉得初学者都会用过吧.

      [HideInInspector]//关闭在Inspector视图的显示
      public string message;
    
      [SerializeField] //序列化
      public string message;

    但是当时对这个没有什么概念 ,只是知道这俩东西的作用,并不太清楚他们是什么,当然了 这俩就是属于unity的特性啦.当然 作为一个很实用的功能,特性是有很多的,下边是总结,暂时到这里 后边再补 哈哈

    为了排版不那么丑 把图片缩小了但是点开还是能看原图的

    稍微补几个..好多

    Editor命名空间下的就不写了,大概是这么多 还是有很多是比较实用滴 更新完毕

    总结
    特性 描述
    代码 编辑器内效果
    Serializable 序列化一个类,作为一个子属性显示在监视面板。
    NonSerialized 反序列化一个变量,并且在监视版上隐藏。
    AddComponentMenu 可以添加一个组件菜单项到编辑器里。实际意义不大
    ColorUsage 可以修改Color的配置,是否显示Alpha通道,或者使用HDR模式。有图代码的提示显示了其参数含义,不得不说rider是真的好用哈哈哈
    ContextMenu 为挂载脚本的物体的Inspector界面脚本添加一个脚本右键选项,点击执行方法内的逻辑

     

    ContextMenuItem 字段右键菜单添加一个自定义方法,鼠标在上边右键弹出点击执行对应方法,两个参数一个是弹出的名称,第二个是要执行的方法名

     

    CreateAssetMenu 用于ScriptableObject的子类,将这个类(相当于资源文件添加到Asset菜单项中),关于ScriptableObject具体可以看这位大神的博客

     

    .....  
    Header 标题特性,给监视版加一个小标题。常用语给其他人编辑器内调整参数使用.

     

    HelpURL 给类提供一个自定义文档URL。如图可以按Ctrl+鼠标左键跳转到目标。

     

       
    Range
    给属性加滑动条,可以设定范围,拖动改变值.

     

    Space Inspector界面属性的间隔 ,这个有意思,如果觉得属性太密集觉得不舒服可以加个这个.或者几类属性之间想做个间隔的时候用

     

    TextArea
    文本空间,默认三行 也可以设定范围 设定最低和最多的行数,多的滚动条滑动,少的时候显示最低的行数 不设定,也是最低3行

     

    Tooltip
    鼠标放属性上会有提示内容

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • C#特性的使用

    2021-04-06 23:37:02
    本文章主要记录一下C#特性的使用,主要是通过特性获取枚举描述,通过特性对实体进行验证 一、通过特性获取枚举 首先创建一个简单枚举。 public enum GenderEnum { /// <summary> /// 男性 /// </...


    前言

    好记性不如烂笔头,感觉记性越来越差了,还是得靠记下来才靠谱,方便以后自己查阅

    本文章主要记录一下C#特性的使用,主要是通过特性获取枚举的描述,通过特性对实体进行验证


    一、通过特性获取枚举

    首先创建一个简单的枚举

     public enum GenderEnum
        {
            /// <summary>
            /// 男性
            /// </summary>
            [EnumRemark("男性")]
            Man = 0,
            /// <summary>
            /// 女性
            /// </summary>
            [EnumRemark("女性")]
            Woman = 1,
        }
    

    该枚举的字段上有一个自定义的特性 EnumRemarkAttribute,代码如下:

     /// <summary>
        /// 枚举描述特性
        /// </summary>
        [AttributeUsage(AttributeTargets.Field,AllowMultiple =true,Inherited =true)]
        public class EnumRemarkAttribute :Attribute
        {
    
            public string Remark { get; set; }
    
            public EnumRemarkAttribute(string remark)
            {
                this.Remark = remark;
            }
        }
    

    该特性包括一个属性,一个带参的构造函数,
    顶部有一个特性AttributeUsage,它主要的作用就是对我们创建的自定义特性进行 一些约束,
    具体的作用可以参考 链接: https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/attributes/general.

    新建一个扩展方法来获取枚举上的描述

     /// <summary>
        /// 枚举描述特性扩展方法
        /// </summary>
        public static class EnumRemarkAttributeExtension
        {
            /// <summary>
            /// 获取枚举描述
            /// </summary>
            /// <param name="enumValue"></param>
            /// <returns></returns>
            public static string GetRemark(this Enum enumValue)
            {
                var type = enumValue.GetType();
                FieldInfo fileInfo = type.GetField(enumValue.ToString());
                if (fileInfo != null)
                {
                    if (fileInfo.IsDefined(typeof(EnumRemarkAttribute), true))
                    {
                        var att = (EnumRemarkAttribute)fileInfo.GetCustomAttribute(typeof(EnumRemarkAttribute));
                        return att.Remark;
                    }                
                }
                return string.Empty;
            }
        }
    

    简单运行一下

     			//获取枚举描述
                Console.WriteLine(GenderEnum.Man.GetRemark());
                Console.WriteLine(GenderEnum.Woman.GetRemark());
    

    运行结果如下图:
    运行结果

    二、通过特性对实体进行验证

    新建实体:

    public class Student
        {
            public  int ID { get; set; }
    
            [NonEmptyValidate("学生姓名不能为空")]
            [MaxLengthValidate(5)]       
            public string Name { get; set; }
    
            public string StudentNo { get; set; }
    
            public string MobilePhone { get; set; }
    
            [EmailValidate]
            public int Email { get; set; }
    
            public GenderEnum Gender { get; set; }
        }
    

    新建自定义验证基类

        /// <summary>
        /// 自定义验证基类
        /// </summary>
        [AttributeUsage(AttributeTargets.Property,AllowMultiple =true,Inherited =true)]
        public abstract class BaseValidateAttribute : Attribute
        {
            protected abstract string ErrMessage { get; set; }
            public abstract ValidateResult Validate(object value);
        }
    

    新建的验证特性都继承自BaseValidateAttribute抽象类

    /// <summary>
        /// 非空验证
        /// </summary>
        public class NonEmptyValidateAttribute : BaseValidateAttribute
        {
            protected override string ErrMessage { get; set; } = "该项不能为空";
            public NonEmptyValidateAttribute()
            {
            }
            public NonEmptyValidateAttribute(string errMsg)
            {
                this.ErrMessage = errMsg;
            }
    
            public override ValidateResult Validate(object value)
            {
                var result = new ValidateResult();
                result.IsValid = !(value is null);
                if (!result.IsValid)
                {
                    result.ErrMessage = ErrMessage;
                }
                return result;
            }
        }
    

    最大长度验证

     /// <summary>
        /// 最大长度
        /// </summary>
        public class MaxLengthValidateAttribute : BaseValidateAttribute
        {
            private int MaxLenth { get; set; }
            protected override string ErrMessage { get; set; } = "该项长度不能大于";
    
            public MaxLengthValidateAttribute(int maxLength, string errMsg = "")
            {
                this.MaxLenth = maxLength;
                if (!string.IsNullOrWhiteSpace(errMsg))
                {
                    this.ErrMessage = errMsg;
                }           
            }
    
            public override ValidateResult Validate(object value)
            {
                var result = new ValidateResult();
                if (value != null)
                {
                    result.IsValid = value.ToString().Length <= MaxLenth;
                    if (!result.IsValid)
                    {
                        result.ErrMessage = $"{ErrMessage}{MaxLenth}";
                    }
                }
                return result;
            }
        }
    

    邮箱格式验证

      public class EmailValidateAttribute : BaseValidateAttribute
        {
            protected override string ErrMessage { get; set; } = "邮箱格式错误";
    
            private string regExp = @"^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$";
    
            public EmailValidateAttribute(string errMsg = "")
            {
                if (!string.IsNullOrWhiteSpace(errMsg))
                {
                    this.ErrMessage = errMsg;
                }
            }
    
            public override ValidateResult Validate(object value)
            {
                var result = new ValidateResult();
                if (!IsMatch(value?.ToString(),regExp,true,false))
                {
                    result.IsValid = false;
                    result.ErrMessage = ErrMessage;
                }
                return result;
            }
    
    
            /// <summary>
            /// 验证字符串是否匹配正则表达式描述的规则
            /// </summary>
            /// <param name="inputStr">待验证的字符串</param>
            /// <param name="patternStr">正则表达式字符串</param>
            /// <param name="ifIgnoreCase">匹配时是否不区分大小写</param>
            /// <param name="ifValidateWhiteSpace">是否验证空白字符串</param>
            /// <returns>是否匹配</returns>
            public bool IsMatch(string inputStr, string patternStr, bool ifIgnoreCase, bool ifValidateWhiteSpace)
            {
                if (!ifValidateWhiteSpace && string.IsNullOrWhiteSpace(inputStr))
                    return false;//如果不要求验证空白字符串而此时传入的待验证字符串为空白字符串,则不匹配
                Regex regex = null;
                if (ifIgnoreCase)
                    regex = new Regex(patternStr, RegexOptions.IgnoreCase);//指定不区分大小写的匹配
                else
                    regex = new Regex(patternStr);
                return regex.IsMatch(inputStr);
            }
        }
    

    新建一个扩展方法

     public static class ValidateAttributeExtension
        {
            public static ValidateResult Validate<T>(this T t) where T : new()
            {
                var result = new ValidateResult()
                {
                    IsValid = true
                };
                var type = typeof(T);
                foreach (PropertyInfo property in type.GetProperties())
                {
                    if (property.IsDefined(typeof(BaseValidateAttribute), true))
                    {
                        var thisValue = property.GetValue(t);
                        var atrributes = property.GetCustomAttributes(typeof(BaseValidateAttribute));
                        foreach (BaseValidateAttribute atrribute in atrributes)
                        {
                            var validateResult = atrribute.Validate(thisValue);
                            if (!validateResult.IsValid)
                            {
                                result.IsValid = false;
                                result.ErrMessage += validateResult.ErrMessage+",";
                            }                      
                        }
                        if (result.ErrMessage.Length > 0)
                        {
                            result.ErrMessage = result.ErrMessage.Remove(result.ErrMessage.Length - 1);
                        }
    
                    }
                }
                return result;
            }
        }
    

    这些功能在.NET系统库都是有的,写下来主要就是记录下特性的使用方式和技巧,在实际工作中可以通过这种方式的使用来扩展一些自己的方法,减少一些工作量和代码的重复编写.

    展开全文
  • 原标题:Python 十大重要特性简单易学:Python是一种代表简单主义思想语言。阅读一个良好Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。Python极其容易上手,因为...
  • C#中的特性(Attribute)

    千次阅读 2014-06-14 21:36:00
    个人感觉C#中的特性(Attribute)和Java中的注解(Annotation)的使用是
  • Linuxbash基础特性

    2020-02-07 10:48:25
    我看了这位大佬一篇文章,感觉不错,有助于各位理解 https://www.jianshu.com/p/a702a01db5c7 基础特性一 history命令: 命令历史:shell进程会在其会话中保存此前用户提交过命令 可以使用 ~]# history 查看 ...
  • 对Java四大特性的理解

    千次阅读 2017-11-10 18:57:57
    工作几年再回头聊这些三大特性感觉很easy,的确这是Java入门知识,但是要把这几个特性说清楚及平时怎么使用,估计好多人含糊其辞,大家估计都是心里明白,爱在心中口难开。这其实是我们对Java三大特性理解不深,...
  • 数据库ACID特性

    2018-07-23 11:03:02
     这个问题我想先简单介绍一下这四个特性再介绍一下如果没有这四个特性会产生数据库读取哪些异常。  首先说下原子性,原子性简单讲就是一个操作集合,要么都执行,要么都不执行。 其次是一致性,感觉这个用官方...
  • spring的特性

    2014-07-10 12:59:18
    一、SpringIoC(Inversion of Control)。...IoC又被翻译成“控制反转”,也不知道是谁翻译得这么别扭,感觉很深奥词。其实,原理很简单,用一句通俗话来说:就是用XML来定义生成对象。Io
  • MySQL的的主要特性

    千次阅读 2008-08-07 19:18:00
    这段时间吧MYSQL手册看了下,准备要好好学学这个了,感觉很有用。毕竟很多公司都在使用MYSQL,对于我来说很有学习价值。 贴下学习: 下面介绍了MySQL数据库软件一些重要特性。关于当前特性和即将提供特性的更多...
  • JDK8特性

    2018-12-24 11:54:00
    这两天开始看jdk8特性,先看了Lembda表达式和Stream,就一个感觉,优雅。 赶紧将这两天成果总结一下 一、Lembda表达式 Lembda表达式格式 lembda表达式是一个简洁、可传递匿名函数,实现了把代码块赋值给一个变量...
  • JDK8特性

    2018-12-24 11:54:00
    这两天开始看jdk8特性,先看了Lembda表达式和Stream,就一个感觉,优雅。 赶紧将这两天成果总结一下 一、Lembda表达式 Lembda表达式格式 lembda表达式是一个简洁、可传递匿名函数,实现了把代码块赋值给一个变量...
  • 容易忽略CSS特性

    2020-12-13 13:33:09
    CSS初学感觉很简单,但随着学习深入才感觉CSS水由多深,平常总会遇到各种坑,先总结一些经常遇到坑 大小写不敏感 虽然我们平时在写CSS时候都是用小写,但其实CSS并不是大小写敏感 CSS Code复制内容到剪贴...
  • 关于c++11特性

    2016-11-11 00:56:20
    关于c++11特性 今天将vs2015安装上,跑了几个c++11特性的代码,感觉c++11特性简化了一些代码逻辑,例如for循环遍历容器,另外c++11增加了一些新语法,例如auto 等。 感觉又有学了,加油!
  • 面向对象三大特性

    2018-01-03 15:58:00
    而我们在做一般的数据库项目的时候,感觉好少用到继承和多态的思想,本文将讲述,如何在一般的数据库管理系统上用上这些特性,使你的代码更具有面向对象的特性. 一、封装 封装的定义: 每个对象都包含了他能进行操作...
  • 标记字段的特性 [Space] 在Inspector面板上显示的字段之间形成一个空隙,可以带参数[Space(30)],表示空隙的宽度。 [Header(“XXX”)] 在Inspector面板上给定义的字段的上一行加段描述,可以将显示的字段内容隔离...
  • 目前还在用Xcode 7.3 一直没有更新,毕竟可怜了我弄那么多插件。...每个版本Xcode都会带来很多新特性,Xcode 8也不例外,这些新特性会给我们开发带来便利,也会带来很多坑。所以今天打算写一篇文章,详细讲一下X
  • Maven2特性

    2015-05-13 21:23:49
    原文摘自:爱尔兰咖啡味道 Maven2特性 2007年10月10日 星期三 下午 04:54 Maven 出现到现在也有很长时间了,初识它的感觉至今仍清晰印在脑海中。现在想来,当时从 Ant 移情 Maven 想法其实很朴素,就是...
  • JDK 7下载地址已经发布了,好久不关注Java方面消息了,也很久没更新过这里,不过JDK...发布之前让我们先来看看 Java 7 都有什么新特性吧。 Java 7 架构图: jdk1.7下载 新特性一览表: Swing 新增 J...
  • go语言特性总结

    2016-03-13 21:36:58
    Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸
  • Go语言特性总结

    2018-08-12 11:41:32
    Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在...
  • 数据库事务四大特性以及事务隔离级别(网上看到感觉很好,做个记录)  本篇讲诉数据库中事务四大特性(ACID),并且将会详细地说明事务隔离级别。  如果一个数据库声称支持事务操作,那么该数据库...
  • 接回来说道我们的ecmascript6,也就是ecmascript的第六个版本,它新增了很多新的特性,在现代前端体系中不得不学,不然你学现代前端框架的时候感觉像看天书,哪跟哪都不知道,比如: import{Button,Radio,Icon}...
  • C++面向对象特性

    2016-07-15 08:42:15
    工作了两年过后,感觉对C++一些特性反而忘了一些,很多概念都模糊了。昨天看了《MFC深入浅出》第二章,对C++知识进行了或多或少回顾,其中一些概念,歇久了不去看,总是会遗忘。"温故而知新,不亦说乎",...
  • php7一些新特性总结

    2018-04-13 17:23:00
    之前使用的环境是 php5.4,所有也会有 php5.5 和 php5.6 的特性总结进来,这里只列出我觉得在项目中可能用到的特性,主要内容来自 php手册的附录。 Generators (PHP 5 >= 5.5.0, PHP 7) 通过添加 yield 关键字...
  • angularJS的特性总结

    千次阅读 2016-12-14 17:30:27
    刚开始学习,看了这篇文章,理解不是很透彻,但感觉总结很精辟,所以转载过来,方便日后再读 Angular JS (Angular.JS) 是一组用来开发Web页面框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,790
精华内容 2,316
关键字:

感觉的特性