资源的处理方法及装置制造方法

文档序号:6628556阅读:173来源:国知局
资源的处理方法及装置制造方法
【专利摘要】本发明公开了一种资源的处理方法及装置,该资源的处理方法包括:将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数;对资源对象进行监控,并根据资源对象的状态更新对应的引用计数;以及根据资源对象的引用计数处理对应的资源对象。本发明实施例,通过将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数,然后对资源对象进行监控,并根据资源对象的状态更新对应的引用计数,最后根据资源对象的引用计数处理对应的资源对象,从而可以在不额外增加其他硬件设备的前提下,有效提高对使用时间有限制的资源对象的利用率,大大降低了实现成本,且实现简单,适用性强。
【专利说明】
资源的处理方法及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种资源的处理方法及装置。

【背景技术】
[0002]在软件的开发过程中,经常需要对一些数量有限的资源进行大批量的申请和使用,因为这些资源数量有限,所以使用时往往需要对申请者的使用时间进行限制,即申请者只能在有限的时间内使用这些资源。
[0003]由于只能在有限的时间内使用这些资源,因此,必须对这些资源进行有效地管理。目前的一种管理方法是,在每个资源对象中保存最后被激活的时刻Tl,然后用一个定时器,每T时间遍历一遍所有资源对象,对那些现在时刻T2减去Tl大于使用时间的资源对象进行处理。这种做法全局只有一个定时器,不过每T时间就要检查全部资源对象,如果资源对象数目巨大,则会比较费时。另一种管理方法是,在每个资源对象中设置一个定时器,预设使用时间为T,在超过T时就处理资源对象。当然,每次收到数据就要更新资源对象中的定时器。这种做法需要很多个定时器,会频繁更新资源对象中的定时器,如果资源对象数目比较大,对事件循环造成压力,且比较费时。
[0004]由此可见,不论哪种管理方法都需要设置定时器,实现成本高、比较复杂,且比较费时。


【发明内容】

[0005]本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种提高资源对象利用率优点的资源的处理方法及装置。
[0006]本发明实施例提供了一种资源的处理方法,该资源的处理方法包括:将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数;对资源对象进行监控,并根据资源对象的状态更新对应的引用计数;以及根据资源对象的引用计数处理对应的资源对象。
[0007]上述资源的处理方法实施例,通过将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数,然后对资源对象进行监控,并根据资源对象的状态更新对应的引用计数,最后根据资源对象的引用计数处理对应的资源对象,从而可以在不额外增加其他硬件设备的前提下,有效提高对使用时间有限制的资源对象的利用率,大大降低了实现成本,且实现简单,适用性强。
[0008]本发明实施例还提供了一种资源的处理装置,该资源的处理装置包括:添加模块,用于将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数;更新模块,用于对资源对象进行监控,并根据资源对象的状态更新对应的引用计数;以及处理模块,用于根据资源对象的引用计数处理对应的资源对象。
[0009]上述资源的处理装置实施例,通过添加模块将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数,通过更新模块对资源对象进行监控,并根据资源对象的状态更新对应的引用计数;通过处理模块根据资源对象的引用计数处理对应的资源对象,从而可以在不额外增加其他硬件设备的前提下,有效提高对使用时间有限制的资源对象的利用率,大大降低了实现成本,且实现简单,适用性强。

【专利附图】

【附图说明】
[0010]图1是根据本发明一个实施例的资源的处理方法的流程图。
[0011]图2是根据本发明一个实施例的数据结构的示意图一。
[0012]图3是根据本发明一个实施例的数据结构的示意图二。
[0013]图4是根据本发明一个实施例的数据结构的示意图三。
[0014]图5是根据本发明一个实施例的数据结构的示意图四。
[0015]图6是根据本发明一个实施例的数据结构的示意图五。
[0016]图7是根据本发明一个实施例的数据结构的示意图六。
[0017]图8是根据本发明一个实施例的数据结构的示意图七。
[0018]图9是根据本发明一个实施例的数据结构的示意图八。
[0019]图10是根据本发明一个实施例的数据结构的示意图九。
[0020]图11是根据本发明另一个实施例的资源的处理方法的流程图。
[0021]图12是根据本发明一个实施例的资源的处理装置的结构示意图。

【具体实施方式】
[0022]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0023]下面参考附图描述本发明实施例的资源的处理方法及装置。
[0024]图1是根据本发明一个实施例的资源的处理方法的流程图。
[0025]如图1所示,该资源的处理方法包括:
[0026]S101,将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数。
[0027]在该实施例中,将对使用时间有限制的资源称为资源对象。其中,这些资源对象可以是网络通信中的网络链接,也可以是操作系统分配的文件句柄等。
[0028]上述预设的数据结构可以为循环队列或其他环形数据结构等。在该实施例中,以循环队列为例进行描述,为了描述方便,使用如图2所示的类似刻度盘的数据结构表示将该循环队列,其中,具有时间刻度的格子组成环形的循环队列,格子上的数字表示其包含的资源对象的剩余使用时间,格子中可以包含一个表(Table),例如哈希表;另外,还有一个指向队尾的指针即尾指针(tail),这个指针每单位时间(假定为T)移动一格。
[0029]在该实施例中,在单位时间内可以接收一个或多个具有相同或不同生命周期资源对象,并将接收到的资源对象的智能指针添加到与自己的生命周期对应的循环队列中,即不同的循环队列可以与具有不同生命周期的资源对象相对应。所谓智能指针,实际上是一种类模板,当其实例化后包含有指向动态分配内存的指针,它通过重载运算符来模拟指针的行为,同时在适当的时候释放内存,以达到自动管理内存的目的。
[0030]同时,为了统计资源对象的引用计数,该实施例的智能指针可以为面向资源共享的智能指针,这类智能指针内部通常存在使用资源的计数器,称为引用计数,即基于引用计数的智能指针。
[0031]S102,对资源对象进行监控,并根据资源对象的状态更新对应的引用计数。
[0032]如图2所示,刻度盘上每个格子中的数字表示其包含的资源对象的剩余使用时间,例如,格子上的数字为6时,表示这个格子中包含的资源对象的剩余使用时间为6T ;格子上的数字为5时,表示这个格子中包含的资源对象的剩余使用时间为5T ;依此类推。
[0033]在该实施例中,将接收到的资源对象的智能指针添加到对应的格子中后,对该资源对象进行监控,若该资源对象在其剩余使用时间内被激活,则将该资源对象的智能指针添加到tail指针指向的格子中,此时,该资源对象的引用计数累加一(引用计数的初始值为零),同时,若该资源对象的智能指针不是在加入循环队列的那个单位时间内被激活,则该资源对象的剩余使用时间也会被更新,以图2为例,即被更新为6T。因此,若有两个资源对象的智能指针在第一单位时间内同时加入同一格子中,且只有其中一个资源对象在另一单位时间内被激活,则被激活资源对象的剩余使用时间大于未被激活资源对象的剩余使用时间。
[0034]需要说明的是,在该实施例中,之所以将被激活的资源对象的智能指针添加到tai I指针所指向的格子,是为了使实现更简单和更高效。
[0035]S103,根据资源对象的引用计数处理对应的资源对象。
[0036]在该实施例中,整个刻度盘可以实现为循环队列typedef boost::circular_buffer<Table>Cqueue,每个格子的哈希表实现可以为 typedef boost::unordered_set〈ObjPtr>Table。在每个单位时间结束时可向循环队列的队尾添加一个空表,这样CirCUlar_bUffer会自动弹出队首元素的Table,以图2为例,即弹出显示数字为“O”的格子中的Table,并对队首Table中保存的资源对象的智能指针根据其引用计数进行处理例如使用或释放对应的资源对象等,从而实现资源对象生命周期的自动化管理。
[0037]当队首元素包含的资源对象被处理后,这些资源对象的引用计数会减一,当引用计数递减到零时,说明该资源对象没有在任何一个格子里出现,那么该资源对象将被处理,例如被释放。
[0038]上述资源的处理方法实施例,通过将待管理的资源对象添加到预设的数据结构中,并为资源对象初始化引用计数,然后对资源对象进行监控,并根据资源对象的状态更新对应的引用计数,最后根据资源对象的引用计数处理对应的资源对象,从而可以在不额外增加其他硬件设备的前提下,有效提高对使用时间有限制的资源对象的利用率,大大降低了实现成本,且实现简单,适用性强。
[0039]为了更详细地描述本发明实施例的技术方案,下面列举几个场景进行描述:
[0040]场景一:未被激活资源对象被处理的过程
[0041]假设,在某个时刻接收到资源对象(Obj) 1,为Objl设置基于引用计数的智能指针,并将该智能指针放到当前的格子中(tail所指向的格子),它的剩余使用时间是6T,如图3所示;此后Objl没有被激活,T时间后,tail指向下一个格子,Objl的剩余使用时间是5T,如图4所示;又过了 5T,tail指向Objl之前的那个格子,如图5所示,Objl即将被处理;下一个T时间,tail重新指向Objl原来所在的格子,清空其中的资源对象,对Objl做相应的处理,如图6所示。
[0042]场景二:资源对象在剩余使用时间内被激活刷新的过程
[0043]如果资源对象Objl在剩余使用时间内被激活,就将它的智能指针移到当前的格子里,如图7所示,Ob jI的剩余使用时间是3T,此时ObjI被激活,它的剩余使用时间恢复为6T,如图8所示。
[0044]场景三:多个资源对象加入循环队列后被处理的过程
[0045]每个格子可以容纳一个或多个资源对象,比如,首先接收到Objl,随后接收到0bj2,如图9所示,此时tail还没有移动,故两个资源对象可以位于同一个格子中,具有相同的剩余使用时间。一段时间之后,Objl被激活,而0bj2 —直没有被激活,那么Objl被移到当前的格子中,这时Objl的剩余使用时间比0bj2长,如图10所示。
[0046]需要说明的是,上述三个场景下资源对象的最大剩余使用时间相同,故其智能指针可以添加到同一刻度盘对应的循环队列中,但如果资源对象的最大剩余使用时间不同,则可以通过使用多个刻度盘将最大剩余使用时间不同的资源对象放入对应的刻度盘进行管理。
[0047]图11是根据本发明另一个实施例的资源的处理方法的流程图,假设在该实施例中,需要通过N个文件句柄将计算机中的文件复制到N个外部设备,当外部设备在预设的使用时间内未完成拷贝时,就需要对文件句柄进行释放。
[0048]如图11所示,该资源的处理方法包括:
[0049]S201,接收到操作系统分配的N个文件句柄,将N个文件句柄的稚嫩指针添加到循环队列中,并为这N个文件句柄初始化各自的引用计数。
[0050]在该实施例中,这N个文件句柄就是对使用时间有限制的资源对象。
[0051]在该实施例中,使用如图2所示的类似刻度盘的数据结构表示将该循环队列,其中,具有时间刻度的格子组成环形的循环队列,格子上的数字表示其包含的资源对象的剩余使用时间,格子中可以包含一个表(Table),例如哈希表;另外,还有一个指向队尾的指针即尾指针(tail),这个指针每单位时间(假定为T)移动一格。
[0052]S202,对这N个文件句柄进行监控,并根据每个文件句柄的状态更新对应的引用计数。
[0053]在该实施例中,将接收到的N个文件句柄的智能指针添加到对应的格子中后,对这N个文件句柄进行监控,若某个文件句柄在其剩余使用时间内被激活,则将该文件句柄的智能指针添加到tail指针指向的格子中,此时,引用计数累加一,同时,若该资源对象的智能指针不是在加入循环队列的那个单位时间内被激活,则该资源对象的剩余使用时间也会被更新。
[0054]S203,根据这N个文件句柄的引用计数处理这N个文件句柄。
[0055]在该实施例中,在每个单位时间结束时可向循环队列的队尾添加一个空表,这样循环队列会自动弹出队首元素,以图2为例,即弹出显示数字为“O”的格子中的文件句柄,若该文件句柄的引用计数为1,则继续使用该文件句柄,然后引用计数会递减至O ;若该文件句柄的引用计数为0,则释放该文件句柄,然后通过插入空表弹出下一格子中的文件句柄,并根据对应文件句柄的引用计数决定使用或释放该文件句柄,重复上述操作,直至处理完一个文件句柄。
[0056]上述资源的处理方法实施例,当外部设备在预设的使用时间内未完成拷贝时,就可以对文件句柄进行释放,从而使得被释放的文件句柄可以被再次使用,提高了文件句柄的利用率,且大大降低了实现成本,且实现简单,适用性强。
[0057]类似地,采用上述方式还可以对网络链接资源对象进行处理,在网络链接建立成功后,将建立成功的网络链接添加到循环队列中,并根据这些网络链接的状态更新其引用计数,然后根据引用计数处理对应的网络链接,从而实现对长时间不活跃的空闲链接进行处理,并保持最多的有效链接可供使用。
[0058]为了实现上述实施例,本发明还提出一种资源的处理装置。
[0059]图12是根据本发明一个实施例的资源的处理装置的结构示意图,如图12所示,该资源的处理装置包括:添加模块11、更新模块12和处理模块13,其中:
[0060]添加模块11用于将待管理的资源对象添加到预设的数据结构中,并为上述资源对象初始化引用计数,更新模块12用于对上述资源对象进行监控,并根据上述资源对象的状态更新对应的引用计数,处理模块13用于根据上述资源对象的引用计数处理对应的资源对象。
[0061]在该实施例中,将对使用时间有限制的资源称为资源对象。其中,这些资源对象可以是网络通信中的网络链接,也可以是操作系统分配的文件句柄等。
[0062]上述预设的数据结构可以为循环队列或其他环形数据结构等。在该实施例中,以循环队列为例进行描述,为了描述方便,使用如图2所示的类似刻度盘的数据结构表示将该循环队列,其中,具有时间刻度的格子组成环形的循环队列,格子上的数字表示其包含的资源对象的剩余使用时间,格子中可以包含一个表(Table),例如哈希表;另外,还有一个指向队尾的指针即尾指针(tail),这个指针每单位时间(假定为T)移动一格。
[0063]其中,上述添加模块11具体可以接收至少一个资源对象,为接收到的上述资源对象设置智能指针,并将上述智能指针添加到与上述资源对象的生命周期对应的数据结构中。具体地,上述智能指针可以为面向资源共享的智能指针,这类智能指针内部通常存在使用资源的计数器,称为引用计数,即基于引用计数的智能指针。
[0064]如图2-10所示,刻度盘上每个格子中的数字表示其包含的资源对象的剩余使用时间,例如,格子上的数字为6时,表示这个格子中包含的资源对象的剩余使用时间为6T ;格子上的数字为5时,表示这个格子中包含的资源对象的剩余使用时间为5T ;依此类推。
[0065]具体地,上述更新模块12可以用于:根据上述资源对象在对应的剩余使用时间内的激活状态或去激活状态,更新对应的引用计数,还可以用于:根据被激活资源对象的激活时机更新上述被激活资源对象的剩余使用时间。
[0066]例如,将接收到的资源对象的智能指针添加到对应的格子中后,对该资源对象进行监控,若该资源对象在其剩余使用时间内被激活,则将该资源对象的智能指针添加到tail指针指向的格子中,此时,该资源对象的引用计数累加一(引用计数的初始值为零),同时,若该资源对象的智能指针不是在加入循环队列的那个单位时间内被激活,则该资源对象的剩余使用时间也会被更新,以图2为例,即被更新为6T。因此,若有两个资源对象的智能指针在第一单位时间内同时加入同一格子中,且只有其中一个资源对象在另一单位时间内被激活,则被激活资源对象的剩余使用时间大于未被激活资源对象的剩余使用时间。
[0067]需要说明的是,在该实施例中,之所以将被激活的资源对象的智能指针添加到tai I指针所指向的格子,是为了使实现更简单和更高效。
[0068]另外,上述处理模块13可以用于:在每个单位时间结束时向上述循环队列的队尾添加一个空表,以自动弹出上述循环队列的队首元素;以及根据上述队首元素中包含的上述资源对象的引用计数确定使用或释放对应的资源对象。当队首元素包含的资源对象被处理后,这些资源对象的引用计数会减一,当引用计数递减到零时,说明该资源对象没有在任何一个格子里出现,那么该资源对象将被处理,例如被释放。
[0069]上述资源的处理装置实施例,通过添加模块将待管理的资源对象添加到预设的数据结构中,并为上述资源对象初始化引用计数,通过更新模块对上述资源对象进行监控,并根据上述资源对象的状态更新对应的引用计数;通过处理模块根据上述资源对象的引用计数处理对应的资源对象,从而可以在不额外增加其他硬件设备的前提下,有效提高对使用时间有限制的资源对象的利用率,大大降低了实现成本,且实现简单,适用性强。
[0070]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0071]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0072]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0073]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(R0M),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0074]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0075]本【技术领域】的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0076]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0077]上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【权利要求】
1.一种资源的处理方法,其特征在于,包括: 将待管理的资源对象添加到预设的数据结构中,并为所述资源对象初始化引用计数; 对所述资源对象进行监控,并根据所述资源对象的状态更新对应的引用计数;以及 根据所述资源对象的引用计数处理对应的资源对象。
2.根据权利要求1所述的方法,其特征在于,所述将待管理的资源对象添加到预设的数据结构中,包括: 接收至少一个资源对象,为接收到的所述资源对象设置智能指针,并将所述智能指针添加到与所述资源对象的生命周期对应的数据结构中。
3.根据权利要求2所述的方法,其特征在于,所述智能指针包括基于引用计数的智能指针,所述数据结构包括循环队列,所述循环队列具有不同的剩余使用时间。
4.根据权利要求3所述的方法,其特征在于,所述根据所述资源对象的状态更新对应的引用计数,包括: 根据所述资源对象在对应的剩余使用时间内的激活状态或去激活状态,更新对应的引用计数。
5.根据权利要求4所述的方法,其特征在于,还包括: 根据被激活资源对象的激活时机更新所述被激活资源对象的剩余使用时间。
6.根据权利要求4或5所述的方法,其特征在于,所述生命周期包括多个单位时间,所述根据所述资源对象的引用计数处理对应的资源对象,包括: 在每个单位时间结束时向所述循环队列的队尾添加一个空表,以自动弹出所述循环队列的队首元素;以及 根据所述队首元素中包含的所述资源对象的引用计数确定使用或释放对应的资源对象。
7.一种资源的处理装置,其特征在于,包括: 添加模块,用于将待管理的资源对象添加到预设的数据结构中,并为所述资源对象初始化引用计数; 更新模块,用于对所述资源对象进行监控,并根据所述资源对象的状态更新对应的引用计数;以及 处理模块,用于根据所述资源对象的引用计数处理对应的资源对象。
8.根据权利要求7所述的装置,其特征在于,所述添加模块,具体用于: 接收至少一个资源对象,为接收到的所述资源对象设置智能指针,并将所述智能指针添加到与所述资源对象的生命周期对应的数据结构中。
9.根据权利要求8所述的装置,其特征在于,所述智能指针包括基于引用计数的智能指针,所述数据结构包括循环队列,所述循环队列具有不同的剩余使用时间。
10.根据权利要求9所述的装置,其特征在于,所述更新模块,具体用于: 根据所述资源对象在对应的剩余使用时间内的激活状态或去激活状态,更新对应的引用计数。
11.根据权利要求10所述的装置,其特征在于,所述更新模块,还用于: 根据被激活资源对象的激活时机更新所述被激活资源对象的剩余使用时间。
12.根据权利要求10或11所述的装置,其特征在于,所述生命周期包括多个单位时间,所述处理模块,具体用于: 在每个单位时间结束时向所述循环队列的队尾添加一个空表,以自动弹出所述循环队列的队首元素;以及 根据所述队首元素中包含的所述资源对象的引用计数确定使用或释放对应的资源对象。
【文档编号】G06F9/44GK104298507SQ201410502836
【公开日】2015年1月21日 申请日期:2014年9月26日 优先权日:2014年9月26日
【发明者】陈先强, 梅林海 申请人:科大讯飞股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1