一种写入数据方法和装置与流程

文档序号:14609595发布日期:2018-06-05 20:32阅读:164来源:国知局
一种写入数据方法和装置与流程

本发明涉及计算机应用技术领域,特别是涉及一种写入数据方法和装置。



背景技术:

HBase(Hadoop database,海杜普数据库)是一个分布式的、面向列的开源数据库,目前已被广泛应用于海量数据存储和分析中。利用HBase技术可在服务器组上搭建起大规模结构化存储集群,其中,该服务器组可称为Hbase集群。HBase在每个服务器中以表的形式存储数据,每个服务器中有很多张表,称之为Hbase表。

Hbase作为一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,配备有Hbase集群对应的Hbase客户端及其写缓冲区,其中,写缓冲区用于收集Hbase客户端发送的写指令,写指令是指使用Hbase客户端的管理员输入的、针对Hbase表的数据的增加、删除和修改等操作指令,例如在某张HBase表中写入某某数据等。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

现有的写入数据步骤包括:Hbase客户端可以将接收到的写指令发送至写缓冲区。当写缓冲区中的写指令满足预设的条件时,Hbase客户端可以将写缓冲区中的写指令发送至服务器。服务器接收到写指令后,会执行各写指令,向服务器中的Hbase表中写入数据,并生成对应的写入成功或写入失败的写入结果。然而,Hbase客户端将写指令从写缓冲区发送至服务器后,需要等待获取服务器生成的写入结果,才可以继续接收写指令并发送至服务器,使得写入数据的效率低。



技术实现要素:

本发明实施例的目的在于提供一种写入数据方法和装置。具体技术方案如下:

为达到上述目的,本发明实施例公开了一种写入数据方法,应用于客户端,方法包括:

当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区。

可选的,在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器之后,所述方法还包括:

获取对应所述预设数量个写指令的写入结果;

根据所述写入结果,确定所述预设数量个写指令的写入状态。

可选的,所述写入结果为写入成功或写入失败;

所述根据所述写入结果,确定所述预设数量个写指令的写入状态,包括:

当所述写入结果为写入成功时,确定所述预设数量个写指令写入成功;

或者,当所述写入结果为写入失败时,确定所述预设数量个写指令写入失败。

可选的,在所述确定所述预设数量个写指令写入失败之后,所述方法还包括:

将所述预设数量个写指令发送至所述预设暂存区。

可选的,所述预设暂存区满足预设发送条件,包括:

所述预设暂存区中预先暂存的写指令的个数达到所述预设数量;

或者,所述预设暂存区中预先暂存的写指令的大小达到预设阈值;

或者,距离所述预设暂存区上一次满足所述发送条件达到第一预设时长;

或者,在第二预设时长内,所述预设暂存区中的写指令的个数不再增加。

为达到上述目的,本发明实施例公开了一种写入数据装置,应用于客户端,装置包括:

收发模块,用于当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区;

处理模块,用于将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的。

可选的,所述收发模块,还用于获取对应所述预设数量个写指令的写入结果;

所述处理模块,还用于根据所述写入结果,确定所述预设数量个写指令的写入状态。

可选的,所述写入结果为写入成功或写入失败;

所述处理模块,还用于当所述写入结果为写入成功时,确定所述预设数量个写指令写入成功;

或者,当所述写入结果为写入失败时,确定所述预设数量个写指令写入失败。

可选的,所述收发模块,还用于将所述预设数量个写指令发送至所述预设暂存区。

可选的,所述预设暂存区满足预设发送条件,包括:

所述预设暂存区中预先暂存的写指令的个数达到所述预设数量;

或者,所述预设暂存区中预先暂存的写指令的大小达到预设阈值;

或者,距离所述预设暂存区上一次满足所述发送条件达到第一预设时长;

或者,在第二预设时长内,所述预设暂存区中的写指令的个数不再增加。

为达到上述目的,本发明实施例公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的写入数据方法步骤。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的写入数据方法。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的写入数据方法。

本发明实施例提供的一种写入数据方法和装置,应用于客户端,当预设暂存区满足预设发送条件时,客户端可以通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将预设数量个写指令从预设暂存区中删除。在通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器时,客户端可以通过第二线程接收新的写指令,将所接收到的新的写指令发送至预设暂存区。利用本发明实施例的写入数据方法,客户端在通过第一线程将预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种写入数据方法的应用场景图;

图2为本发明实施例提供的一种写入数据方法的流程示意图;

图3为本发明实施例提供的一种写入数据装置的结构示意图;

图4为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

现有技术中的写入数据的步骤包括:客户端根据使用客户端的管理员的指令,将接收到的写指令发送至写缓冲区,然后再将写缓冲区中的写指令发送至服务器。服务器接收到写指令并做相应写入处理,之后会产生针对接收到的写指令的写入结果。

但是,客户端在将写指令发送至服务器后,会等待获取服务器生成的针对写指令的写入结果,在等待过程中,客户端无法继续接收写指令,造成写入数据效率低。

为了解决现有技术存在的写入数据效率低的问题,本发明提供了一种写入数据方法和装置,上述方法可以应用于客户端,当预设暂存区满足预设发送条件时,客户端可以通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将预设数量个写指令从预设暂存区中删除。在通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器时,客户端可以通过第二线程接收新的写指令,将所接收到的新的写指令发送至预设暂存区。应用本发明提供的写入数据方法的客户端,在通过第一线程将预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。

上述写入数据方法的具体应用场景参见图1。

如图1所示,客户端10可以通过第二线程接收写指令,将接收到的写指令发送至预设暂存区,其中,预设暂存区可以是客户端10中的内存区域。当预设暂存区满足预设发送条件时,客户端10则通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器11。服务器11接收到预设数量个写指令后,可以执行相应的写入操作。客户端10在将预设数量个写指令发送至服务器11时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。

需要说明的是,本发明实施例提供的一种写入数据方法,优选应用于客户端,具体可以为Hbase(Hadoop database,海杜普数据库)客户端,可以提升系统的实时处理能力和可靠性。本发明以应用于HBase客户端为例进行说明,其他情况与之类似。

参见图2,图2为本发明实施例提供的一种写入数据方法的流程示意图,可以包括如下步骤:

S201:当预设暂存区满足预设发送条件时,通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将预设数量个写指令从预设暂存区中删除。

其中,预设数量可以是根据预设发送条件确定的。预设发送条件可以由技术人员根据经验进行设置,可以根据预设暂存区中的写指令的个数确定,也可以根据预设暂存区中的写指令的大小确定,还可以根据预先设定的时间点确定。具体如何确定,将在后面实施例中具体说明。预设数量个写指令可以是Hbase客户端接收到的使用Hbase客户端的管理员输入的针对Hbase表的写指令。写指令中可以携带要写入的数据,Hbase客户端可以利用写指令实现对Hbase表中数据的增加、删除和修改。预设暂存区可以是Hbase客户端中的内存区域。

一种实现方式中,服务器中的Hbase表可以为多个,Hbase客户端可以为服务器中的每个Hbase表分别分配一块内存区域,将该内存区域作为该Hbase表对应的预设暂存区,用于存储针对该Hbase表的写指令。当某一Hbase表的预设暂存区满足预设发送条件时,Hbase客户端可以开启针对该预设暂存区的写入线程(即第一线程)。Hbase客户端可以通过第一线程将该预设暂存区中的预设数量个写指令发送至服务器,通过第一线程还可以获取服务器生成的针对发送的预设数量个写指令的写入结果。在将预设数量个写指令发送至服务器后,Hbase客户端可以通过第一线程将已发送至服务器的预设数量个写指令从对应的预设暂存区中删除,以使得Hbase客户端可以继续接收新的写指令。

可选的,Hbase客户端可以为一个预设暂存区开启多个写入线程。示例性的,Hbase客户端可以为预设暂存区Y,开启线程A、线程B和线程C。当Hbase客户端通过线程A将预设暂存区Y中预设数量个写指令发送至服务器,等待获取写入结果时,Hbase客户端可以继续接收新的写指令。若预设暂存区Y再次满足预设发送条件时,线程A仍未获取到写入结果。此时,Hbase客户端可以通过线程B将预设暂存区Y中预设数量个写指令发送至服务器,等待获取写入结果。同时,Hbase客户端可以继续接收新的写指令。若预设暂存区Y又一次满足预设发送条件时,线程A和线程B都未获取到写入结果。此时,Hbase客户端可以通过线程C将预设暂存区Y中预设数量个写指令发送至服务器,等待获取写入结果。如此,可以进一步提高写入数据的效率。

S202:在通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至预设暂存区。

其中,第二线程可以为与第一线程相异步的线程。

Hbase客户端可以通过第二线程接收新的写指令,然后解析该写指令,确定出该写指令携带的数据所在的Hbase表,并将该写指令发送至确定出的Hbase表对应的预设暂存区。

现有技术中,Hbase客户端也可以根据异步写入方式,在将写指令发送至服务器后,继续接收新的写指令。但是,根据该异步写入方式,Hbase客户端首先会将写指令发送至写缓冲区,且只有当写缓冲区满时,才会将写缓冲区中的写指令发送至服务器,会造成写入数据的延迟。

由上述可见,利用本发明实施例提供的写入数据方法,Hbase客户端在通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,进而提高写入数据的效率。

可选的,Hbase客户端在通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器之后,还可以,获取对应预设数量个写指令的写入结果。根据写入结果,确定预设数量个写指令的写入状态。

其中,由于写指令本身没有状态信息可言,故Hbase客户端可以为写指令标记对应的写入状态。其中,写入状态可以包括:等待写入、写入成功和写入失败。例如,可以设计一种新的数据结构A,一个数据结构A封装有一个写指令及其写入状态,即可实现为每个写指令标记各自的写入状态。并且,当新构造出一个数据结构A时,该数据结构A中写指令的写入状态默认为“等待写入”。其他任何可以实现本发明实施例的标记方法,均属于本发明实施例的保护范围,在此不一一赘述。

一种实现方式中,Hbase客户端通过第一线程将预设暂存区中预先暂存的预设数量个写指令发送至服务器之后,可以通过第一线程获取服务器返回的针对预设数量个写指令的写入结果。根据获取的写入结果,将预设数量个写指令的写入状态从等待写入更新为写入成功或者写入失败。具体的,如果在第三预设时长内,Hbase客户端未接收到服务器返回的针对预设数量个写指令的写入结果,Hbase客户端可以确定预设数量个写指令的写入结果为写入失败。

由上述可见,利用本发明实施例提供的写入数据方法,Hbase客户端可以确定写指令的写入状态,以使得Hbase客户端可以根据写入状态进行相应处理,提高写入数据的效率。

在本发明的一个具体实施例中,写入结果可以为写入成功或写入失败。

根据写入结果,确定预设数量个写指令的写入状态,可以包括:

当写入结果为写入成功时,确定预设数量个写指令写入成功。

或者,当写入结果为写入失败时,确定预设数量个写指令写入失败。

具体的,Hbase客户端根据获取的写入结果并不能确定出预设数量个写指令中写入成功的写指令和写入失败的写指令。

因此,当Hbase客户端通过第一线程获取的服务器返回的写入结果为写入成功时,Hbase客户端可以确定发送至服务器的预设数量个写指令全部写入成功,即将预设数量个写指令的写入状态从等待写入更新为写入成功;当通过第一线程获取的服务器返回的写入结果为写入失败时,Hbase客户端可以确定发送至服务器的预设数量个写指令全部写入失败,即将预设数量个写指令的写入状态从等待写入更新为写入失败。

由上述可见,利用本发明实施例提供的写入数据方法,Hbase客户端可以确定写指令的写入状态为写入成功或者写入失败,以使得Hbase客户端可以根据写入状态进行相应处理,提高写入数据的效率。

在本发明的一个具体实施例中,在确定预设数量个写指令写入失败之后,上述方法还包括:将预设数量个写指令发送至预设暂存区。

具体的,针对写入状态为写入失败的预设数量个写指令,Hbase客户端可以将写入失败的预设数量个写指令重新发送至预设暂存区,以使得Hbase客户端可以继续将写入失败的预设数量个写指令发送至服务器。另外,Hbase客户端还可以分析写入失败的原因,从而定位Hbase集群和Hbase表的问题等等,实现对Hbase实现更加细致和灵活的控制。

由上述可见,利用本发明实施例提供的写入数据方法,Hbase客户端可以将写入失败的写指令重新发送至预设暂存区,完成数据的写入,提高写入数据的准确度。

在本发明的一个具体实施中,预设暂存区满足预设发送条件,包括:

预设暂存区中预先暂存的写指令的个数达到预设数量;

或者,预设暂存区中预先暂存的写指令的大小达到预设阈值;

或者,距离预设暂存区距离上一次满足发送条件达到第一预设时长;

或者,在第二预设时长内,预设暂存区中的写指令的个数不再增加。

其中,预设数量、预设阈值、第一预设时长和第二预设时长可以由技术人员根据经验进行设置。

具体的,可以根据业务需要,灵活制定预设发送条件。例如,预设发送条件,可以是上述预设暂存区中预先暂存的写指令的个数达到预设数量;或者,预设暂存区中预先暂存的写指令的大小达到预设阈值;或者,距离预设暂存区上一次满足发送条件达到第一预设时长;或者,在第二预设时长内,预设暂存区中的写指令的个数不再增加,也即在第二预设时长内,Hbase客户端未接收到新的写指令。

需要说明的是,在确定上述预设发送条件时,需要保证预设暂存区中预先暂存的写指令不会超出Hbase客户端写缓冲区的大小。

上述给出的预设发送条件仅仅作为示例,并不应该构成对本发明实施例的限定。

由上述可见,利用本发明实施例提供的写入数据方法,Hbase客户端可以制定灵活的发送条件,提高写入数据的效率。

参见图3,图3为本发明实施例提供的一种写入数据装置的结构示意图,与图2所示的流程图相对应,该装置可以包括:

收发模块301,用于当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区;

处理模块302,用于将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的。

可选的,所述收发模块301,还用于获取对应所述预设数量个写指令的写入结果;

所述处理模块302,还用于根据所述写入结果,确定所述预设数量个写指令的写入状态。

可选的,所述写入结果为写入成功或写入失败;

所述处理模块302,还用于当所述写入结果为写入成功时,确定所述预设数量个写指令写入成功;

或者,当所述写入结果为写入失败时,确定所述预设数量个写指令写入失败。

可选的,所述收发模块301,还用于将所述预设数量个写指令发送至所述预设暂存区。

可选的,所述预设暂存区满足预设发送条件,包括:

所述预设暂存区中预先暂存的写指令的个数达到所述预设数量;

或者,所述预设暂存区中预先暂存的写指令的大小达到预设阈值;

或者,距离所述预设暂存区上一次满足所述发送条件达到第一预设时长;

或者,在第二预设时长内,所述预设暂存区中的写指令的个数不再增加。

由上述可见,利用本发明实施例提供的写入数据装置,Hbase客户端在通过第一线程预设暂存区中预先暂存的预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,进而提高写入数据的效率。

本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,

存储器403,用于存放计算机程序;

处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:

当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区。

需要说明的是,上述写入数据方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。

本发明实施例提供的电子设备,在通过第一线程将预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。

上述电子设备提到的通信总线404可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口402用于上述电子设备与其他设备之间的通信。

存储器403可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器403还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器401可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本发明实施例提供的写入数据方法。

具体的,上述写入数据方法,包括:

当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区。

需要说明的是,上述写入数据方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。

通过运行本发明实施例提供的计算机可读存储介质中存储的指令,在通过第一线程将预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例提供的写入数据方法。

具体的,上述写入数据方法,包括:

当预设暂存区满足预设发送条件时,通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器,并将所述预设数量个写指令从所述预设暂存区中删除,其中,所述预设数量是根据所述预设发送条件确定的;

在所述通过第一线程将所述预设暂存区中预先暂存的预设数量个写指令发送至服务器时,通过第二线程接收新的写指令,将所接收到的新的写指令发送至所述预设暂存区。

需要说明的是,上述写入数据方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。

通过运行本发明实施例提供的计算机可读存储介质中存储的指令,在通过第一线程将预设数量个写指令发送至服务器时,可以通过第二线程继续接收新的写指令,能够提高写入数据的效率。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及包含指令的计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1