精华内容
下载资源
问答
  • 在酷壳上看到《API设计原则》,https://coolshell.cn/articles/18024.html,很自然的找到英文原文《Designing Qt-Style C++ APIs》,https://doc.qt.io/archives/qq/qq13-apis.html 这篇文章以QT和C++为例,说明API...
    在酷壳上看到《API设计原则》,https://coolshell.cn/articles/18024.html,很自然的找到英文原文《Designing Qt-Style C++ APIs》,https://doc.qt.io/archives/qq/qq13-apis.html
    这篇文章以QT和C++为例,说明API设计的注意事项,在文章里还提到Jasmin Blanchette的《The Little Manual of API Design》, 链接在http://www4.in.tum.de/~blanchet/api-design.pdf。之前我还看过《Effective Java》的作者,Joshua Bloch,关于API设计的视频,很有深度,入口在https://www.infoq.com/articles/API-Design-Joshua-Bloch

    如果是设计C语言这样的,非面向对象的接口,那么王咏刚的《从魔力整合针与线谈起》是非常不错的文章。


    也有国外的网友整理了API设计相关的资源,文章在http://digitheadslabnotebook.blogspot.com/2010/07/how-to-design-good-apis.html

    展开全文
  • 以及需要引用接口,接口标识,接口访问协议,接口描述都属于模块外观,其他模块通过这些接口和模块打交道,自然需要在概要设计阶段对接口做细致刻画,初此之外,对于关键模块,外观还应该说明模块非...

              概要设计的目标是描述软件模块的外观以及处理逻辑。模块对外暴露的服务接口,以及需要引用的接口,接口标识,接口的访问协议,接口描述都属于模块的外观,其他的模块通过这些接口和模块打交道,自然需要在概要设计阶段对接口做细致的刻画,初此之外,对于关键的模块,外观还应该说明模块的非功能属性,比如并发处理能力,数据吞吐量以及接口调用的反馈时长等等。处理逻辑是指模块从输入到输出的转换过程,描述其转换算法。无论通过何种图例和表现形式,只要能够清晰地说明模块外观和处理逻辑描述,就是好的概要设计。

             概要设计过程一般包括四块内容,这四块内容都是围绕着外观和处理逻辑这两个目标进行。第一部分是模块划分,把架构设计中划分的业务模块按照开发模式迭代细化,拆分成符合高内聚低耦合的功能模块。第二部分是接口描述,重点要放在刻画模块内外部交互的接口形式。第三个部分是模块的逻辑描述,最后一个部分逻辑模型设计,包括数据库的逻辑模型设计以及值对象的概要说明。

             模块划分

             模块划分的粒度很难确定,不同的设计师会用不同的划分策略,相同的一组功能聚集有人会分为2个功能模块,有的人可能划分为4个或者更多。模块的粒度越大,对模块的维护成本就越大,因为修改模块的任何一个点,都有可能更新整个模块;而且越难以解决模块复杂耦合的问题,随着产品的维护,模块内的耦合会越来越严重,有些是因为新的需求引起模块内联系的增加,而有些是缺少硬约束下采用最直接的方式修改代码造成的。当然也不是模块划分的越小越好,因为小粒度的模块虽然降低了模块自身的维护成本,但过多的模块会增加模块间关系维护的成本以及系统管理的复杂性。

             通常来看,模块划分要符合开闭原则和高内聚和低耦合的原则。开闭原则强调的是维护频度不同的功能不要放在同一个模块内,比如有些需要本地化的功能可以通过接口和实现分离的方式划分为业务模块和二次接口实现模块。高内聚和低耦合的原则强调的是把内部关联紧密和外部交互比较单一的功能划分成一个模块。

             同时鉴于模块划分的重要性,建议尽可能把模块划分的工作前移到架构设计阶段,一方面架构设计团队的整体素质比较高,另外一方面架构设计师更能够站在全局的视角合理地划分模块。

             接口描述

             接口描述应该清晰地说明接口的类型,访问方式,接口的入参和出参。通常在概要设计阶段不考虑物理实现,不需要描述的非常详细,之所以如此关照接口,原因在于通过清晰的接口描述为流程逻辑和后面的详细设计建立一个硬约束。模块内的数据流和控制流的入口和出口都能限定在这个约束之内,方便评审的时候能及时发现设计中存在的问题。

             逻辑描述

             逻辑描述的目标是说清楚从输入到输出的转换过程。根据不同的模块的特点,可以选用不同的描述形式,对于以数据流为主的模块,可以使用数据流图,控制比较复杂的可以使用数据流图或者IPO图,而对于规范使用UML的项目可以考虑使用活动图。

             可能有人会很疑惑在设计中没有谈到是用面向对象方法还是结构化的方法,这可是关键的方法论问题。确实,软件研发的坛子里面除了哪种语言更好的话题以外,最容易挑起纷争的就是结构化分析与设计和面向对象分析与设计之争了。我在这里不做结论,只做一个评说。结构化分析设计出现的比较早,那时候软件的主要使用场景更多是科学计算或者自动化控制,典型的特点是用户交互界面简单,更多是批处理的作业方式,更多关注程序的处理过程是否正确高效。随着PC机时代的到来,人机交互界面在软件中占有越来越重要的地位,原来的一套软件只有一个操作员,而现在可能有很多的使用者,为了清楚地描述不同人群对软件的诉求,业务用例应运而生,这就是面向对象的起点。不同的基因决定了他们各擅道场,一个擅长于后台计算的产品设计,另一个长于面向客户服务的产品设计。

             在设计中,我们可以根据需求把两者的特点灵活地结合在一起,比如算法密集的处理模块,我们可以采用数据流图,而对于和外部交互比较复杂的模块,可以引入用例图标识模块支持的使用场景。

             逻辑模型的设计

             逻辑模块的设计主要是数据库的设计和值对象的设计。对于数据库的逻辑模型,可以统一设计,模块中添加引用。也可以在模块中针对所引用的库表独立描述。这两种方式都可以,如果库表结构比较复杂的建议统一建模,而比较简单的模型可以采用分开描述,提升模块设计的可读性。数据库建模现在已经比较成熟,这里不再多说。

             模块的输入输出,以及中间的数据对象,我们统称为值对象,在概要设计阶段的重点是描述值对象的关键属性。需要注意的一点是值对象要和处理逻辑对应起来,特别是处理逻辑中的数据流,出口入口数据,都要在值对象上加以描述。

    展开全文
  • 案来源:(www.)-[南开大学]20秋学期(1709、1803、1809、1903、1909、2003、2009 )...A、投影B、自然联接C、联接D、选择正确答案:第2题,要想从子过程调用后返回两个结果,下面子过程语句说明合法是()。A、Pub...

    案来源:(www.)-[南开大学]20秋学期(1709、1803、1809、1903、1909、2003、2009 )《数据库技术与程序设计》在线作业

    试卷总分:100    得分:100

    第1题,在Access中要显示"教师表"中姓名和职称的信息,应采用的关系运算是( )。

    A、投影

    B、自然联接

    C、联接

    D、选择

    正确答案:

    第2题,要想从子过程调用后返回两个结果,下面子过程语句说明合法的是()。

    A、PublicSubf2(byvaln%,byvalm%)

    B、PublicSubf1(byrefn%,byvalm%)

    C、PublicSubf1(byrefn%,byrefm%)

    D、PublicSubf2(byvaln%,byrefm%)

    正确答案:

    第3题,关系数据模型()。

    A、只能表示实体之间的1:1联系

    B、只能表示实体之间的1:n联系

    C、只能表示实体之间的m:n联系

    D、可以表示实体之间的上述三种联系

    正确答案:

    第4题,Visual Basic中的"启动对象"是指启动Visual Basic 应用程序时,被自动加载并首次执行的对象。下列关于Visual Basic"启动对象"的描述中,错误的是___。

    A、"启动对象"可以是指定的窗体

    B、"启动对象"可以是SubMain过程

    C、若没有经过设置,则默认的"启动对象"是第一个被创建的窗体

    D、"启动对象"可以是指定的标准模块

    正确答案:

    答案来源:(www.),表达式Chr(Int(Rnd*10+66))产生的范围是()。

    A、"A"~"Z"

    B、"a"~"z"

    C、"B"~"K"

    D、"b"~"k"

    正确答案:

    第6题,创建宏不用定义()。

    A、窗体或报表的属性

    B、宏名

    C、宏操作对象

    D、宏操作目标

    正确答案:

    第7题,关系模型中,一个关键字是()。

    A、可由多个任意属性组成

    B、可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成

    C、至多有一个属性组成

    D、以上都不是

    正确答案:

    第8题,如果表A中的一条记录与表B中的多条记录相匹配,而表B中的一条记录与表A中的一条记录相匹配,则表A与表B存在的关系是()。

    A、一对一

    B、一对多

    C、多对一

    D、多对多

    正确答案:

    第9题,VBA中定义符号常量可以用关键字

    A、Const

    B、Dim

    C、Public

    D、Static

    正确答案:

    答案来源:(www.),数据库管理系统常见的数据模型有3种,它们是()。

    A、网状、关系和语义

    B、层次、关系和网状

    C、环状、层次和关系

    D、关系、面向对象和数据

    正确答案:

    第11题,( )是面向对象程序设计中程序运行的最基本实体。

    A、对象

    B、类

    C、方法

    D、函数

    正确答案:

    答案来源:(www.),执行下列语句的结果为___:

    Switch(36, "green",86, "blue")

    A、"red"

    B、"green"

    C、"blue"

    D、空值

    正确答案:

    第13题,若在数据库中已有同名的表,要通过查询覆盖原表,应使用的查询类型是()。

    A、删除

    B、追加

    C、生成表

    D、更新

    正确答案:

    第14题,下列说法中,不属于数据模型所描述的内容的是( )。

    A、数据结构

    B、数据操作

    C、数据查询

    D、数据约束

    正确答案:

    答案来源:(www.),MsgBox()函数返回值得类型是()。

    A、整型数值

    B、变体

    C、字符串

    D、数值或字符串

    正确答案:

    第16题,假设有一组数据:工资为800元、职称为"讲师"、性别为"男",在下列逻辑表达式中结果为"假"的是()。

    A、工资800 AND 职称="助教" OR 职称="讲师"

    B、性别="女" OR NOT 职称="助教"

    C、工资=800 AND (职称="讲师" OR 性别="女")

    D、工资800 AND (职称="讲师" OR 性别="男")

    正确答案:

    第17题,查询中文系和计算机系的信息,使用的SQL语句是()。

    A、SELECT * FROM 系名 WHERE 系名="中文系" AND "计算机系"

    B、SELECT * FROM 系名 WHERE 系名="中文系" OR "计算机系"

    C、SELECT * FROM系名WHERE 系名="中文系" AND 系名="计算机系"

    D、SELECT * FROM 系名 WHERE 系名="中文系" OR 系名="计算机系"

    正确答案:

    第18题,有关宏操作,下列叙述错误的是()。

    A、使用宏可以启动其他应用程序

    B、宏可以是包含操作序列的一个宏

    C、宏组由若干宏组成

    D、宏的条件表达式中不能引用窗体或报表的控件值

    正确答案:

    第19题,以下变量名中合法的是___。

    A、avg_sum

    B、y+2

    C、100abcd

    D、print

    正确答案:

    答案来源:(www.),Rnd函数不可能为下列值()。

    A、0

    B、1

    C、0.1234

    D、0.0005

    正确答案:

    第21题,某窗体中有一命令按钮,在'窗体视图'中单击此命令按钮,运行另一个应用程序。如果通过调用宏对象完成此功能,则需要执行的宏操作是______。

    A、RunApp

    B、RunCode

    C、RunMacro

    D、RunSQL

    正确答案:

    第22题,下列关系模式中,正确的是()。

    A、学生(姓名,性别,出生日期)

    B、学生(学号,姓名,性别,出生日期,年龄)

    C、学生(学号,姓名,性别,出生日期,课程名,成绩)

    D、学生(学号,姓名,性别,出生日期,照片,简历)

    正确答案:

    第23题,下面对于"对象"的各种描述中错误的是()。

    A、对象是反映客观事物属性及行为特征的描述

    B、对象是面向对象编程的基本元素,是"类"的具体实例

    C、对象都具有可见(视)性

    D、对象把事物的属性和行为封装在一起,是一个动态的概念

    正确答案:

    第24题,下列说法错误的是()。

    A、事件既可以由用户引发,也可以由系统引发

    B、事件代码既能在事件引发时执行,也可以显示调用

    C、在容器对象的嵌套层里,事件的处理具有独立性,每个对象只识别并处理属于自己的事件

    D、事件名称不能由用户创建,是由系统提供的

    正确答案:

    答案来源:(www.),打开一个表应该使用的宏操作是()

    A、OpenForm

    B、OpenQuery

    C、OpenTable

    D、OpenReport

    正确答案:

    第26题,报表不能完成的任务是()。

    A、数据分组

    B、数据排序

    C、输入数据值

    D、数据格式化

    正确答案:

    第27题,打开一个表应该使用的宏操作是____。

    A、OpenForm

    B、OpenQuery

    C、OpenTable

    D、OpenReport

    正确答案:

    第28题,创建宏不用定义____。

    A、窗体或报表的属性

    B、宏名

    C、宏操作对象

    D、宏操作目标

    正确答案:

    第29题,打开查询的宏操作是()。

    A、OpenForm

    B、OpenQuery

    C、Open

    D、OpenModule

    正确答案:

    答案来源:(www.),下列哪个MsgBox函数的系统常量值用于显示Yes及No按钮?

    A、vbOKCancel

    B、vbYesNoCancel

    C、vbYesNo

    D、vbQuestion

    正确答案:

    第31题,Access中备注型字段和文本型字段都能进行排序或索引。

    T、对

    F、错

    正确答案:F

    第32题,ASC关键字是按升序排序的意思,它必须与ORDER BY关键字一起使用。

    T、对

    F、错

    正确答案:

    第33题,内部计算函数"First"的意思是求所在字段内所有的值的最大值。

    T、对

    F、错

    正确答案:

    第34题,通过窗体中绑定型控件可以自动更新相关的数据源。

    T、对

    F、错

    更多答案下载:(www.)

    第35题,在ACCESS数据库中,表是用来存储数据的,而查询是用来处理数据的。

    T、对

    F、错

    正确答案:

    第36题,在表 Students(学号,姓名,性别,出生年月)中,要统计学生的人数和平均年龄,应使用的语句是SELECT COUNT(*) AS 人数,AVG(YEAR(DATE())-YEAR(出生年月)) AS 平均年龄 FROM Students;

    T、对

    F、错

    正确答案:

    第37题,HAVING子句必须跟在GROUP BY子句之后,用来限定分组必须满足的条件。

    T、对

    F、错

    正确答案:

    第38题,在关系模型中,一个关系对应一个二维表。

    T、对

    F、错

    正确答案:

    第39题,直接双击导航窗格中的表格名称就可以打开表设计视图来修改表结构了。

    T、对

    F、错

    正确答案:

    第40题,利用表中的行和列来统计数据的查询是交叉表查询。

    T、对

    F、错

    更多答案下载:(www.)

    第41题,整型、长整型、单精度等数字型字段的取值范围是不同的。

    T、对

    F、错

    正确答案:

    第42题,窗体的数据源可以是表或者查询或者报表。

    T、对

    F、错

    正确答案:F

    第43题,在SQL查询语句中,INSERT命令中必须有INTO关键字。

    T、对

    F、错

    更多答案下载:(www.)

    第44题,客观存在的事物就是实体。

    T、对

    F、错

    正确答案:F

    第45题,在窗体中表示一个"是/否"型的数据,可以使用组合框控件。

    T、对

    F、错

    正确答案:

    第46题,在查询中,编辑记录主要包括添加记录、修改记录、删除记录和导入、导出记录。

    T、对

    F、错

    正确答案:

    第47题,语句123 & 1的执行结果是124

    T、对

    F、错

    正确答案:F

    第48题,Openform宏命令的功能是打开表格。

    T、对

    F、错

    正确答案:

    第49题,要显示格式为"页码/总页数"的页码,应当设置文本框控件的控件来源属性为 =<

    展开全文
  • 这张图是用以说明Linux文件系统是怎样设计的,当时画时候感觉很自然,而且似乎这张图也很清晰地展示了Linux文件系统中inode、block等组建所包含内容。但我总感觉怪怪,尤其是对那些”箭头——>“,总在疑惑”...
    今天在写一篇关于Linux文件系统的博客时,画了一张这样的图:
    
    这张图是用以说明Linux文件系统是怎样设计的,当时画的时候感觉很自然,而且似乎这张图也很清晰地展示了Linux文件系统中inode、block等组建所包含的内容。但我总感觉怪怪的,尤其是对那些”箭头——>“,总在疑惑”箭头“代表的意义,以及我为什么要用箭头来做这样的表述。再加上《鸟哥的Linux私房菜》一书中也有一段类似的内容,它是通过解释”读取/etc/passwd"文件中内容的读取流程来阐述的,该解释同样让我不解。
    归结起来就是,Linux文件系统作为一个设计出来的静态实物,为什么可以通过这两种方式来解释:一种方式是通过画图(我所迷惑的不是画图,而是图中的箭头,给人一种在动态执行的感觉);另一种是通过跟踪一段流程(这也是一个动态的过程)。。。。。。那么问题来了,为什么静态的事物可以通过“动态”的方式去解释呢?这个问题至少让我觉得很是忐忑不安,因为觉得感性上的东西缺乏理论依据作为支撑。
    强迫性地想了半天,总算想出了些结果,不至于那么忐忑。
    1. 画图的方式,尽管标有箭头,但实质上并不是一个动态的过程。。。之所以我们直觉上认为其是动态过程,这与我们的思维习惯有关,因为见到过太多“箭头”表示运动流程的实例,所以一见到箭头就条件反射了。其实箭头的含义有很多,可以用于静态表示A属于B,可以动态表示从A地到达B地,当然也可以静态表示A中存有B中的id,就像这里所用到的。该图中完全可以把箭头全部去掉,剩下的便是静态扁平化的磁盘存储,inode和block之间的关系也是可以看出来的(这里加上箭头只是为了使其之间的关系更加直观)。
    2. 在文件系统中,讨论纯静态的存在是没有任何意义的。也就是说,文件系统本身就具有“被”运动的特性。在操作系统运行的过程中,必然会不停地将inode和block调入内存,利用CPU进行处理读取,其本身便具有了“被”运动的特性。因此“跟踪一段流程”来解释Linux文件系统,并不是说文件系统本身拥有了运动的特性,而是说其作为操作系统被调用的对象而拥有了“运动”的特性。
    3. 跟踪一段流程,只能沿着一条线去“窥视”静态文件系统的一部分,而不具有全局性。所以要通过“跟踪流程”达到阐述整个文件系统的目的,就必须跟踪多段流程,或在每段流程的节点处进行可能的分类讨论。。一般在流程图中,习惯性地使用“箭头”表明一种时间上的前进,这也成了一种“自然”的做法。。
    展开全文
  • 最后转念一想,既然是Perl脚本,那自然应该有Perl脚本相关语句,不管怎样,先在终端窗口中输入perl看看ubuntu中是否自带编译工具,输入完毕之后发现并没有提示异常,说明系统中有这个指令,尝试着在指令前加入perl...
  • 谈一下关于XHTML网页制作

    千次阅读 2005-04-06 23:08:00
    目前看来关于XHTML网页制作大家还存在很多困惑,一一解答有些困难,我现在就XHTML网页与HTML网页制作技法上不同来做一下说明。首先说一下HTML网页制作方法:1。拿到美工设计图开始切图2。用表格把切图拼成...
  • 作者:张泰丰cnblogs.com/ztfjs/p/mysql_primary.html今天要写一篇关于mysql主键、索引文章,mysql研究博主进行还不够深入,今天讨论主题主要是,主键对增删改查具体影响是什么?博主将用具体实验说明。...
  • 目录 写在前面 文法概要 0型文法(对应图灵机) 1型文法(对应线性界线...首先要说明的是:一般文法至少都是0型文法,也就是说0型文法限制最少。若将0型文法比作基类话,1、2、3型文法就是不断继承并加以限...
  • 软件设计规范

    2015-03-11 11:57:50
    要求:从定义开始的设计。完整性,彻底地定义从无开始的整个设计。这是因为软件之软,也是因为硬件平台的多样性和特殊性。 完整把握,从头设计是第一原则。因为软件世界自己并不能统一,还有继续分化的趋势。没有...
  • 第二代则是更直观的图形操作界面,它引出更自然的视觉通信交互,典型代表就是计算机的视窗(Windows)操作系统。   在计算机诞生的早期,用户操作计算机是基于 1981 年问世的 MS-DOS 磁盘操作系统, DOS ...
  • windows 程序设计

    2011-07-24 21:16:30
    PM最初的设计构想是成为Windows的一种保护模式版本,但是图形API改变程度太大,致使软件生产厂商很难提供对这两种平台的支持。 到1990年9月,IBM和Microsoft之间的冲突达到了高峰,导致这两个公司最后分道扬镳。IBM...
  • 电子技术课程设计PPT

    2010-06-23 17:13:45
    电路系统设计的基本原则和设计内容; 电路设计的一般过程; 课程设计报告撰写要求 课程设计与电子产品研制差别 如何提高电子设计能力? 1、多分析各种应用电路图和其工作原理说明。 2、多进行实际动手制作。 3、...
  • 4 最简单 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出概念及在 C 语言中实现 54 4.4 字符数据输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数...
  • java程序设计百事通

    2009-10-18 19:44:04
    “百事”说明本书 内容广泛坚实,知识含量高,这个在本自序中首先讲到了,读者从目录中也能够看出来。书 名中有一个字是“通”,正是作者写作思想所追求目标,因为一本书,无论讲是什么, 如果读者看不懂或者...
  • php高级开发教程说明

    2008-11-27 11:39:22
    整天时间,这个小小循环也许是设计阶段最庞大部分,但另一方面,你可以在不到一天 时间内策划好数千行代码。 同样,我们假定需要一个小脚本来列出某个目录中所有文件,你能够很快地完成它,使 其能从事...
  • 4 最简单 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出概念及在 C 语言中实现 54 4.4 字符数据输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数...
  •   通过前面关于Redis五种数据类型、相关高级特性以及一些简单示例使用,对Redis使用和主要用途应该有所掌握,但是还有一些原理性问题我们在本部分做一个探讨。   本部分参考了一些其他博客,在文后...
  • 关于Java,其优势在于特有JVM平台,在语言上没有明显优势。Java作为面向对象语言,可以非常自然地描述非常复杂场景,所以初学者很容易在使用它时陷入误区。所以学习Java时应关注面向对象设计的理解和使用。 ...
  • C++语言的设计和演化[按需印刷] C++程序设计语言(特别版) 译者: 裘宗燕 知名译者,翻译严谨,喜与读者交流。 裘宗燕教授是北京大学数学学院信息科学系的,关心的主要学术领域包括计算机软件理论、程序设计...
  • C++程序设计语言(特别版)--源代码

    热门讨论 2012-04-23 07:33:51
    C++语言的设计和演化[按需印刷] C++程序设计语言(特别版) 译者: 裘宗燕 知名译者,翻译严谨,喜与读者交流。 裘宗燕教授是北京大学数学学院信息科学系的,关心的主要学术领域包括计算机软件理论、程序设计...
  • C++语言的设计和演化[按需印刷] C++程序设计语言(特别版) 译者: 裘宗燕 知名译者,翻译严谨,喜与读者交流。 裘宗燕教授是北京大学数学学院信息科学系的,关心的主要学术领域包括计算机软件理论、程序设计...
  • 要想开发一个大型的网络在线购物系统,必须有一个正确的设计指导思想,通过合理选择数据结构、网络结构、操作系统以及开发环境,构成一个完善的网络体系结构,才能充分发挥网络的优势。本系统的设计按照下述原则进行...
  • 本书每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。 本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题...
  • 二十三种设计模式【PDF版】

    热门讨论 2011-05-30 14:13:49
    GoF 的设计模式表面上好象也是一种具体的"技术",而且新的设计模式不断在出现,设计模式自有其自己的发展轨道,而这 些好象和 J2EE .Net 等技术也无关! 实际上,GoF 的设计模式并不是一种具体"技术",它讲述的是...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 171
精华内容 68
关键字:

关于自然的设计说明