一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据查询的方法和装置与流程

2021-10-23 02:52:00 来源:中国专利 TAG:装置 数据查询 特别 数据库 方法


1.本技术涉及数据库技术领域,特别涉及一种数据查询的方法和装置。


背景技术:

2.在互联网、物联网等行业中,时序数据库被广泛应用,较为常用的时序数据库如基于hbase(一种分布式的开源数据库)的opentsdb(open time series database,开发时序数据库)。在opentsdb中对数据以rowkey(行键)和value(值)的形式存储。其中,rowkey的形式为“measurement(度量项),timestamp(时间戳),标签1,标签2
……”
。其中,每个标签由tagk(tag key,标签键)和tagv(tag value,标签值),例如对于标签1可以表示为:tagk(tag key,标签键)1=tagv(tag value,标签值)1的形式。下面对rowkey列举一例进行说明,例如:measurement可以为cpu(central processing unit,处理器)使用率,tagk1可以为服务器标识,tagv1可以为host1,tagk2可以为cpu标识,tagv2可以为cpu1,时间戳可以为1574834400(2019年11月27日14点0分0秒)。另外,在一个rowkey中,由measurement和多个tag的集合可以称为时间线。
3.目前,在上述数据库中查询数据时,需要输入查询条件,该查询条件可以包括数据写入时间范围,目标度量项,目标标签。数据库则需要筛选出时间戳在写入时间范围内,且度量项为目标度量项的rowkey。将包含有目标标签的rowkey,对应的value返回给用户。在判断一个rowkey是否包含目标标签时,可以按照如下方法判断:例如,对于数据库中存储的一个rowkey为“measurement1,timestamp1,tag1,tag2,tag3,tag4”,查询条件中包括目标标签“tag4”,则在判断该rowkey是否包含tag4时,需要依次和tag1,tag2,tag3,tag4进行比对,最后确定该rowkey包含该tag4。
4.在实现本技术的过程中,发明人发现相关技术至少存在以下问题:
5.在rowkey中的标签数量很多时,而检索条件中的目标标签又在相应的rowkey中处于比较靠后的位置,那么在判断一个rowkey是否包含该目标标签时,需要比对多项无需比对的标签,这样使得数据查询的效率较低。


技术实现要素:

6.本技术实施例提供了一种数据查询的方法和装置,能够解决当前时序数据库中数据查询效率低的问题。所述技术方案如下:
7.第一方面,提供了一种数据查询的方法,所述方法包括:
8.接收终端发送的数据查询请求,其中,所述数据查询请求中携带有待查询度量项、至少一个待查询标签和数据写入时间信息;
9.在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项和所述至少一个待查询标签中的标签值共同对应的目标时间线;
10.基于所述数据写入时间信息和所述目标时间线,生成目标行键;
11.基于所述目标行键对应的数据,向所述终端返回查询结果数据。
12.在一种可能的实现方式中,所述在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项及所述至少一个待查询标签中的标签值共同对应的目标时间线,包括:
13.在存储的多个预设度量项分别对应的预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项对应的预设标签键的标签值和时间线的对应关系;
14.在所述待查询度量项对应的预设标签键的标签值和时间线的对应关系中,确定每个待查询标签的标签值对应的时间线;
15.在所述每个待查询标签的标签值对应的时间线中,确定出相同的目标时间线。
16.在一种可能的实现方式中,所述方法还包括:
17.接收新写入数据;
18.如果所述新写入数据中的度量项是所述预设度量项,则获取所述新写入数据中的时间线;
19.如果所述新写入数据中的时间线不在所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中,则确定所述新写入数据中是否包括所述预设标签键;
20.如果所述新写入数据中包括所述预设标签键,则将所述新写入数据中所述预设标签键的标签值和所述新写入数据中的时间线,添加到所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
21.在一种可能的实现方式中,所述基于所述数据写入时间信息和所述目标时间线,生成目标行键,包括:
22.按照行键中的预设时间单位,获取所述数据写入时间信息对应的多个数据写入时间点,其中,每个数据写入时间点之间的时间间隔为所述预设时间单位;
23.对于每个数据写入时间点,按照预设行健格式,在所述目标时间线中插入所述数据写入时间点,得到上述数据写入时间点对应的目标行键。
24.在一种可能的实现方式中,所述数据查询请求中还携带有数据筛选条件,所述基于所述目标行键对应的数据,向所述终端返回查询结果数据,包括:
25.将所述目标行键对应的数据中,满足所述数据筛选条件的数据作为查询结果数据,返回所述终端。
26.在一种可能的实现方式中,所述数据查询请求中还携带有数据聚合信息,所述基于所述目标行键对应的数据,向所述终端返回查询结果数据,包括:
27.对所述目标行键对应的数据,执行所述数据聚合信息对应的聚合计算,得到查询结果数据;
28.向所述终端返回所述查询结果数据。
29.第二方面,提供了一种数据查询的装置,所述装置包括:
30.接收模块,用于接收终端发送的数据查询请求,其中,所述数据查询请求中携带有待查询度量项、至少一个待查询标签和数据写入时间信息;
31.确定模块,用于在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项和所述至少一个待查询标签中的标签值共同对应的目标时间线;
32.生成模块,用于基于所述数据写入时间信息和所述目标时间线,生成目标行键;
33.发送模块,用于基于所述目标行键对应的数据,向所述终端返回查询结果数据。
34.在一种可能的实现方式中,所述确定模块,用于:
35.在存储的多个预设度量项分别对应的预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项对应的预设标签键的标签值和时间线的对应关系;
36.在所述待查询度量项对应的预设标签键的标签值和时间线的对应关系中,确定每个待查询标签的标签值对应的时间线;
37.在所述每个待查询标签的标签值对应的时间线中,确定出相同的目标时间线。
38.在一种可能的实现方式中,所述装置还包括,写入模块,用于:
39.接收新写入数据;
40.如果所述新写入数据中的度量项是所述预设度量项,则获取所述新写入数据中的时间线;
41.如果所述新写入数据中的时间线不在所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中,则确定所述新写入数据中是否包括所述预设标签键;
42.如果所述新写入数据中包括所述预设标签键,则将所述新写入数据中所述预设标签键的标签值和所述新写入数据中的时间线,添加到所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
43.在一种可能的实现方式中,所述数据查询请求中还携带有数据筛选条件,所述基于所述目标行键对应的数据,所述生成模块,用于:
44.按照行键中的预设时间单位,获取所述数据写入时间信息对应的多个数据写入时间点,其中,每个数据写入时间点之间的时间间隔为所述预设时间单位;
45.对于每个数据写入时间点,按照预设行健格式,在所述目标时间线中插入所述数据写入时间点,得到上述数据写入时间点对应的目标行键。
46.在一种可能的实现方式中,所述数据查询请求中还携带有数据筛选条件,所述基于所述目标行键对应的数据,所述发送模块,用于:
47.将所述目标行键对应的数据中,满足所述数据筛选条件的数据作为查询结果数据,返回所述终端。
48.在一种可能的实现方式中,所述数据查询请求中还携带有数据聚合信息,所述发送模块,用于:
49.对所述目标行键对应的数据,执行所述数据聚合信息对应的聚合计算,得到查询结果数据;
50.向所述终端返回所述查询结果数据。
51.第三方面、提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述第一方面所述的数据查询的方法所执行的操作。
52.第四方面,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述第一方面所述的数据查询的方法所执行的操作。
53.本技术实施例提供的技术方案带来的有益效果是:
54.通过本技术实施例,根据数据查询请求中携带的待查询度量项、至少一个待查询标签和数据写入时间信息,以及存储的预设度量项、预设标签键的标签值和时间线的对应
关系,确定待查询度量项及每个待查询标签的标签值共同对应的目标时间线。然后,可以根据数据写入时间信息和目标时间线,生成目标行键。这样,无需再按照标签依次比对,即可直接确定出目标行键,返回目标行键对应的查询结果数据,可以有效提高数据查询的效率。
附图说明
55.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
56.图1是本技术实施例提供的一种实施环境示意图;
57.图2是本技术实施例提供的一种数据查询的方法流程图;
58.图3是本技术实施例提供的一种建立预设度量项、预设标签键的标签值和时间线的对应关系的方法流程图;
59.图4是本技术实施例提供的一种建立预设度量项、预设标签键的标签值和时间线的对应关系的方法流程图;
60.图5是本技术实施例提供的一种数据查询的装置结构示意图;
61.图6是本技术实施例提供的一种服务器的结构示意图。
具体实施方式
62.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
63.图1是本技术实施例提供的一种实施环境的示意图。参见图1,在本技术实施例的实施环境中可以包括有终端和服务器,其中,终端可以为用户侧的计算机设备,例如,笔记本电脑、台式机等,服务器可以为单体服务器,也可以为服务器集群,在服务器中可以部署有时序数据库。时序数据库可以用于存储工业设备的使用数据、应用程序的使用数据等。用户可以通过终端向该部署有时序数据库的服务器发送数据查询请求,以查询相应的数据。
64.图2是本技术实施例提供的一种数据查询的方法的流程示意图。参见图2,该数据查询的方法的处理流程可以包括如下步骤:
65.步骤201、接收终端发送的数据查询请求。
66.其中,数据查询请求中携带有待查询度量项、至少一个待查询标签值和数据写入时间信息。数据写入时间信息可以为数据写入的时间范围。
67.在实施中,用户可以通过终端向时序数据库发送数据查询请求,时序数据库接收该数据查询请求。该数据查询请求可以为sql(structured query language,结构化查询语言)。下面对数据查询请求进行举例说明。
68.例如,数据查询请求可以为“select*from tsdb where measurement=

cpu.load’and starttime>1574870400and endtime<1572192000and host=host1 and cpu=cpu2”。在该数据查询请求中,measurement=

cpu.load’表示待查询度量项为cpu.load(central processing unit.load处理器负载)。starttime>1574870400and endtime<1572192000表示数据写入时间在1574870400到1572192000之间,其中,
1574870400和1572192000为时间戳的形式,分别表示2019年10月28日0点和2019年11月28日0点。host=host1 and cpu=cpu2表示待查询标签为host(主机)=host1和cpu=cpu2。该数据查询请求表示在tsdb(time-series database,时序数据库)中查询2019年10月28日0点到2019年11月28日0点写入的host1中的cpu2的负载数据。
69.需要说明的是,数据查询请求中除上述待查询度量项、待查询标签值和数据写入时间信息外,还可以包括有一些附加查询条件。下面,以上述对2019年10月28日到2019年11月28日一个月内写入的host1中的cpu2的负载数据进行查询为例,对附加查询条件进行说明。在对应的数据查询请求中还可以包括有附件查询条件负载大于80%,那么,上述数据查询请求即表示用户需要查询2019年10月28日到2019年11月28日一个月内写入的host1中的cpu2的大于80%的负载数据。
70.步骤202、在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,确定待查询度量项及所述至少一个待查询标签中的标签值共同对应的目标时间线。
71.在实施中,时序数据库中可以存储有预设度量项、预设标签键的标签值和时间线的对应关系。由于部分度量项对应的数据,或者部分标签键对应的数据,用户查询的可能性极低,那么,对于这部分度量项和标签键可以不建立和时间线的对应关系。而只对预设度量项和预设标签键的标签值建立和时间线的对应关系。这样,无需对全部度量项和全部标签键的标签值建立和时间线对应关系,可以节省存储空间,并且使得该对应关系中数据量较小,查询效率也可以更高。
72.对于预设度量项、预设标签键的标签值和时间线的对应关系的建立可以有多种可能的方法,下面对其中几种方法进行说明。
73.方法一、预先建立完整的预设度量项、预设标签键的标签值和时间线的对应关系。
74.对于同一个时序数据库来说,预设度量项的是固定的,并且每个预设度量项对应的可能标签组合也是固定的,即在同一个时序数据库中的时间线的可能情况也是固定的。那么,技术人员可以在预先组合出所有可能预设度量项和预设标签键的标签值对应的时间线,并预设度量项、预设标签键的标签值和时间线对应存储。
75.方法二、在接收数据时更新预设度量项、预设标签键的标签值和时间线的对应关系。
76.技术人员可以预先通过时序数据库的schema接口上传预设度量项和预设标签键信息。例如,可以以如下形式上传预设度量项和预设标签键信息:“{measurement:cpu.load,tagk1:{name:host,isindex:true},tagk2:{name:cpu,isindex:true}}”。该语句表示预设度量项为cpu.load,预设标签键为host和cpu。在后续有新写入数据时,可以只对包括有预设度量项和预设标签键的新写入数据提取时间线,建立该新写入数据中的预设度量项、预设标签键的标签值和时间线的对应关系。参见图3,提供了该方法二对应的建立预设度量项、预设标签键的标签值和时间线的对应关系的方法流程图,可以包括如下步骤:
77.s1、接收新写入数据。
78.其中,新写入数据中可以包括行键和值,行键中依次包括度量项、时间戳和标签。
79.s2、判断该新写入数据中的度量项是否为预设度量项。
80.s3、如果该新写入数据中的度量项是预设度量项,则获取该新写入数据中的时间线。
81.将新写入数据中行键的时间戳去除,即为该新写入数据中的时间戳。
82.s4、判断该新写入数据中的时间线是否在存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
83.s5、如果该新写入数据中的时间线不在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,则判断该新写入数据中是否包括预设标签键。
84.s6、如果该新写入数据中包括预设标签键,则将该新写入数据中预设标签键的标签值和新写入数据中的时间线,添加到存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
85.方法三、按照预设周期,获取新写入数据并建立预设度量项、预设标签键的标签值和时间线的对应关系。
86.参见图3,提供了该方法三对应的建立预设度量项、预设标签键的标签值和时间线的对应关系的方法流程图,可以包括如下步骤:
87.s7、每当达到预设周期,逐个获取当前周期内的新写入数据。
88.其中,预设周期可以根据需求设置,例如可以设置为1小时。
89.s8、判断当前获取的新写入数据中的度量项是否为预设度量项。
90.s9、如果当前获取的新写入数据中的度量项是预设度量项,则获取当前获取的新写入数据中的时间线。
91.s10、判断当前获取的新写入数据中的时间线是否在存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
92.s11、如果当前获取的新写入数据中的时间线不在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,则判断当前获取的新写入数据中是否包括预设标签键。
93.s12、如果当前获取的新写入数据中包括预设标签键,则将当前获取的新写入数据中预设标签键的标签值和新写入数据中的时间线,添加到存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
94.如下表1所示为一种预设度量项、预设标签键的标签值和时间线的对应关系。
95.表1
[0096][0097]
当然,对于不同的预设度量项,可以分为不同对应关系表,如下表2和表3为度量项cpu.load和io.load分别对应的预设标签键的标签值和时间线的对应关系。
[0098]
表2
[0099][0100]
表3
[0101][0102]
需要说明的是,以上各表中时间线那一列每一个不同的数字代表一个不同的时间线。在实际使用中,时间线可以以度量项,标签键和标签值的直接表示,还可以那种预设编码方式对度量项,标签键和标签值进行编码后进行表示。
[0103]
在查询数据时,对于上述不同预设度量项对应不同的预设标签键的标签值和时间线的对应关系的情况,可以先确定待查询度量项对应的预设标签键的标签值和时间线的对应关系。然后,查询出每个待查询标签的标签值对应的时间线,再对时间线取交集,将相同的时间线作为目标时间线。
[0104]
例如,数据查询请求中的待查询度量项为cpu.load,待查询标签的标签值为cpu2和host1。则可以通过查询上述表2,确定cpu2对应的时间线包括3,5,host1对应的时间线包括1,3,6,8。然后,对于cpu2对应的时间线和host1对应的时间线取交集,确定出待查询度量项和待查询标签的标签值共同对应的目标时间线为3。
[0105]
步骤203、基于数据写入时间信息和目标时间线,生成目标行键。
[0106]
在实施中,可以先按照行键中的预设时间单位,获取写入时间信息对应的多个数据写入时间点。例如,行键中的预设时间单位通常可以为1小时,数据写入时间信息为2019年11月20日0点到2019年11月20日3点,则可以获取到该数据写入时间信息对应的数据写入时间点为2019年11月20日0点、2019年11月20日1点、2019年11月20日2点和2019年11月20日3点和2019。然后,对于获取到的每个数据写入时间点,可以根据时序数据库中行键的格式,在目标时间线中度量项和第一个标签之间插入该数据写入时间点,生成目标行键。此处,插入的数据写入时间点可以以时间戳的形式插入。这样,对于每个数据写入时间点均可以得到一个目标行键。
[0107]
步骤204、基于目标行键对应的数据,向终端返回查询结果数据。
[0108]
在实施中,可以获取到每个目标行键对应的数据,并返回终端。
[0109]
在一种可能的实现方式中,在上述数据查询请求中还可以携带有数据筛选条件,相应的,在步骤204中的处理可以如下:将目标行键对应的数据中,满足数据筛选条件的数据作为查询结果数据,返回终端。
[0110]
在实施中,根据用户的实际需求,该数据筛选条件可以有多种多样。例如,对于查询的数据为cpu负载,则该数据筛选条件可以为cpu负载的范围限定,如大于90%,那么,可以在查询到的数据中将值大于90%的数据作为查询结果数据,返回终端。
[0111]
在一种可能的实现方式中,在上述数据查询请求中还可以携带有数据聚合信息,相应的,在步骤204中的处理可以如下:对目标行键对应的数据,执行数据聚合信息对应的聚合计算,得到查询结果数据。向终端返回查询结果数据。
[0112]
在实施中,根据用户的实际需求,该数据聚合信息可以为取均值、求和、取标准差等。例如,对于查询的数据为cpu负载,则数据聚合计算可以为取均值,那么,可以计算查询到的数据中所有值的均值,并将该均值作为查询结果数据返回终端,还可以将该均值和查询到的数据一同作为查询结果数据返回终端。
[0113]
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0114]
通过本技术实施例,根据数据查询请求中携带的待查询度量项、至少一个待查询标签和数据写入时间信息,以及存储的预设度量项、预设标签键的标签值和时间线的对应关系,确定待查询度量项及每个待查询标签的标签值共同对应的目标时间线。然后,可以根据数据写入时间信息和目标时间线,生成目标行键。这样,无需再按照标签依次比对,即可直接确定出目标行键,返回目标行键对应的查询结果数据,可以有效提高数据查询的效率。
[0115]
基于相同的技术构思,本技术实施例还提供了一种数据查询的装置,如图5所示,该装置包括:接收模块510、确定模块520、生成模块530和发送模块540,其中:
[0116]
接收模块510,用于接收终端发送的数据查询请求,其中,所述数据查询请求中携带有待查询度量项、至少一个待查询标签和数据写入时间信息;
[0117]
确定模块520,用于在存储的预设度量项、预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项和所述至少一个待查询标签中的标签值共同对应的目标时间线;
[0118]
生成模块530,用于基于所述数据写入时间信息和所述目标时间线,生成目标行键;
[0119]
发送模块540,用于基于所述目标行键对应的数据,向所述终端返回查询结果数据。
[0120]
在一种可能的实现方式中,所述确定模块520,用于:
[0121]
在存储的多个预设度量项分别对应的预设标签键的标签值和时间线的对应关系中,确定所述待查询度量项对应的预设标签键的标签值和时间线的对应关系;
[0122]
在所述待查询度量项对应的预设标签键的标签值和时间线的对应关系中,确定每个待查询标签的标签值对应的时间线;
[0123]
在所述每个待查询标签的标签值对应的时间线中,确定出相同的目标时间线。
[0124]
在一种可能的实现方式中,所述装置还包括,写入模块,用于:
[0125]
接收新写入数据;
[0126]
如果所述新写入数据中的度量项是所述预设度量项,则获取所述新写入数据中的时间线;
[0127]
如果所述新写入数据中的时间线不在所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中,则确定所述新写入数据中是否包括所述预设标签键;
[0128]
如果所述新写入数据中包括所述预设标签键,则将所述新写入数据中所述预设标签键的标签值和所述新写入数据中的时间线,添加到所述存储的预设度量项、预设标签键的标签值和时间线的对应关系中。
[0129]
在一种可能的实现方式中,所述生成模块530,用于:
[0130]
按照行键中的预设时间单位,获取所述数据写入时间信息对应的多个数据写入时间点,其中,每个数据写入时间点之间的时间间隔为所述预设时间单位;
[0131]
对于每个数据写入时间点,按照预设行健格式,在所述目标时间线中插入所述数据写入时间点,得到上述数据写入时间点对应的目标行键。
[0132]
在一种可能的实现方式中,所述数据查询请求中还携带有数据筛选条件,所述基于所述目标行键对应的数据,所述发送模块540,用于:
[0133]
将所述目标行键对应的数据中,满足所述数据筛选条件的数据作为查询结果数据,返回所述终端。
[0134]
在一种可能的实现方式中,所述数据查询请求中还携带有数据聚合信息,所述发送模块540,用于:
[0135]
对所述目标行键对应的数据,执行所述数据聚合信息对应的聚合计算,得到查询结果数据;
[0136]
向所述终端返回所述查询结果数据。
[0137]
需要说明的是:上述实施例提供的数据查询的装置在查询数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部
分功能。另外,上述实施例提供的数据查询的装置与数据查询的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0138]
图6是本技术实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)601和一个或一个以上的存储器602,其中,所述存储器602中存储有至少一条指令,所述至少一条指令由所述处理器601加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0139]
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成下述实施例中数据查询的方法。例如,所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0140]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0141]
以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜