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

自动驾驶软件同步方法、装置、存储介质及计算机设备与流程

2023-04-25 07:10:36 来源:中国专利 TAG:


1.本技术涉及自动驾驶技术领域,尤其涉及一种自动驾驶软件同步方法、装置、存储介质及计算机设备。


背景技术:

2.自动驾驶软件在投入使用之前,需要在大量自动驾驶运算平台中进行软件模拟,以评估自动驾驶软件的算法和质量。
3.但自动驾驶软件的体积比较大,通常为几十个gb,并且经常需要进行版本更新,分发频率较高,而将自动驾驶软件分发到各自动驾驶运算平台需要消耗大量的存储空间、网络资源和计算资源,不利于快速实现软件分发。


技术实现要素:

4.本技术实施例提供了一种自动驾驶软件同步方法、装置、存储介质及计算机设备,能够节省分发自动驾驶软件所需的存储空间、网络资源和计算资源,提高分发效率。
5.第一方面,本技术提供了一种自动驾驶软件同步方法,应用于自动驾驶运算平台,所述方法包括:
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.图1为一个实施例中,自动驾驶软件同步方法的流程图;
36.图2为一个实施例中,根据目标版本软件的版本信息获取目标版本软件的元数据步骤的流程图;
37.图3为一个实施例中,自动驾驶软件同步装置的结构框图;
38.图4为一个实施例中,计算机设备的内部结构图。
具体实施方式
39.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.本技术提供的自动驾驶软件同步方法,应用于包括多个自动驾驶运算平台的自动驾驶云平台,自动驾驶软件在分发至自动驾驶车辆之前,需要在自动驾驶云平台中进行模拟测试,在编译完成一个自动驾驶软件并将软件上云后,自动驾驶云平台计算自动驾驶软件中的每个文件的内容生成每个文件的文件指纹,将每个文件存储至分布式存储系统,完成后生成自动驾驶软件的元数据,元数据包括每个文件的文件名、文件更新时间、文件指纹及其在分布式存储系统的存储路径。自动驾驶运算平台在需要同步新版本软件时,创建软链接用于直接调用对应文件。
41.如图1所示,本技术提供了一种自动驾驶软件同步方法,应用于自动驾驶运算平台,所述方法包括步骤s101-s104,其中:
42.步骤s101,根据目标版本软件的版本信息获取目标版本软件的元数据。
43.其中,所述元数据包括所述目标版本软件的每个文件的文件名、预定义的相对路径、文件指纹及其在分布式存储系统的存储路径。版本信息包括目标版本软件的版本号,版本号与元数据相关联,通过版本号可以获取元数据。目标版本软件中各文件的文件指纹为自动驾驶软件云平台对文件内容进行计算得到的,可以采用md5算法(message-digest algorithm,信息摘要算法)、sha256算法(secure hash algorithm 256,安全散列256算法)、crc算法(cyclic redundancy check,循环冗余校验算法)计算文件指纹,不需要自动驾驶车辆在同步时读入新版软件进行计算,车端直接获取元数据即可。
44.在其中一个实施例中,分布式存储系统为对象存储系统、数据库或文件存储系统。
45.在其中一个实施例中,所述目标版本软件中每个文件在所述分布式存储系统中的存储路径根据每个文件的文件指纹创建,使存储路径与文件指纹关联,便于定位目标文件。
46.步骤s102,根据每个文件的文件名、预定义的相对路径及本地目标目录,确定每个文件的本地同步路径。
47.其中,本地同步路径是文件在本地的存储路径,预定义的相对路径是指预先定义的在自动驾驶运算平台用于存储自动驾驶软件的本地目标目录中的相对路径。例如,文件的文件名为a.so,相对路径为lib/,本地目标目录为/tmp/d/,则该文件的本地同步路径为/tmp/d/lib/a.so。
48.步骤s103,根据本地缓存目录、每个文件的文件指纹及存储路径,确定每个文件在本地缓存的响应路径。
49.其中,响应路径为用于从分布式存储系统或与分布式存储系统连接的分布式缓存系统加载文件指纹对应的文件的路径,本地缓存目录是自动驾驶运算平台用于缓存数据的目录。
50.文件指纹是基于文件的内容计算得到的,与文件相对应,文件内容发生改变,文件指纹也会发生改变,将文件指纹与响应路径相关,若目标版本软件中存在与本地版本相同的文件时,创建的响应路径也是相同的,并且若已经被缓存到本地,也不会影响缓存数据的使用,直接通过原路径调用即可。例如,文件的文件指纹为1234567890,存储路径为file://file_1234567890,本地缓存目录为/mnt/cache,则响应路径为/mnt/cache/file_1234567890。
51.在其中一个实施例中,响应路径用于从分布式存储系统加载对应文件指纹的文件。
52.在其中一个实施例中,在架构中设置有分布式缓存系统时,响应路径用于从与分布式存储系统连接的分布式缓存系统加载对应文件指纹的文件。分布式缓存系统能够提高对象读取速度,会管理用户要读取的文件,并将最近高频使用的文件加载到分布式缓存系统的内存中,提高读取近期使用率较高文件的速度,对于内存中没有缓存过文件,分布式缓存系统根据响应路径再从分布式存储系统加载。在其中一个实施例中,分布式缓存系统为对象缓存系统。
53.步骤s104,基于每个文件对应的本地同步路径和响应路径创建从本地同步路径指向响应路径的软链接并保存。
54.软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。创建每个文件从本地同步路径执行相应路径的软链接保存,在完成目标版本软件的同步后,运行目标版本软件时,加载本地目标目录下的文件,对于本地目标目录下以及响应路径下没有缓存的文件则通过软链接从分布式存储系统或与分布式存储系统连接的分布式缓存系统调用。
55.本技术提供的自动驾驶软件同步方法,应用于需要进行软件模拟的自动驾驶运算平台,根据所要运行的目标版本软件的版本信息获取目标版本软件的元数据,元数据包括该目标版本软件中每个文件的文件名、预定义的相对路径、文件指纹及其在分布式存储系统的存储路径,根据每个文件的文件名、预定义的相对路径及自动驾驶运算平台的本地目
标目录确定每个文件同步到本地的本地同步路径,根据本地缓存目录、每个文件的文件指纹及存储路径确定每个文件在本地缓存的响应路径,响应路径为用于从分布式存储系统或与分布式存储系统连接的分布式缓存系统加载文件指纹对应的文件的路径,基于每个文件对应的本地同步路径和响应路径创建从本地同步路径指向响应路径的软链接并保存,即对目标版本软件的每个文件均创建软链接,通过软链接实现文件的调用,不需要自动驾驶运行平台完整地获取目标版本软件,基于自动驾驶软件在版本更新时可能只有小部分文件为新增或是发生了修改,而响应路径与文件指纹相关,对于没有变动的文件其文件指纹也不会发生变动,通过软链接进行调用可以避免重复保存已有文件,只有本地没有的文件才会进行加载,节省分发自动驾驶软件所需的存储空间、网络资源和计算资源,提高分发效率。
56.如图2所示,在其中一个实施例中,所述根据目标版本软件的版本信息获取所述目标版本软件的元数据,包括:
57.步骤s201,根据版本信息及预设的元数据文件名生成加载路径。
58.根据预设的规则,任意版本软件的元数据的文件名固定,但在分布式存储系统中存储在不同的路径,元数据在分布式存储系统的相对路径通常为版本号与元数据文件名组合生成,例如,目标版本软件的版本为v,预设的元数据文件名为version.txt,则相对路径为v/version.txt,基于相对路径以及云平台发布的服务器地址生成加载路径,例如https://cache.server.com/v/version.txt。
59.步骤s203,根据加载路径从分布式存储系统或与分布式存储系统连接的分布式缓存系统加载目标版本软件的元数据。
60.在其中一个实施例中,加载路径用于从分布式存储系统加载目标版本软件的元数据。
61.在其中一个实施例中,在架构中设置有分布式缓存系统时,加载路径用于从与分布式存储系统连接的分布式缓存系统加载目标版本软件的元数据。分布式缓存系统能够提高对象读取速度,会管理用户要读取的文件,并将最近高频使用的文件加载到分布式缓存系统的内存中,提高读取近期使用率较高文件的速度,对于内存中没有缓存过文件,分布式缓存系统根据响应路径再从分布式存储系统加载。在其中一个实施例中,分布式缓存系统为对象缓存系统。
62.在其中一个实施例中,所述方法还包括:
63.在运行所述目标版本软件时,根据每个文件对应的软链接加载对应文件。
64.在其中一个实施例中,执行所述根据目标版本软件的版本信息获取所述目标版本软件的元数据之前,还包括:
65.获取模拟运行任务;
66.根据所述模拟运行任务获取所述目标版本软件的版本信息。
67.由于自动驾驶软件可能根据自动驾驶运算平台所要执行模拟运行任务的不同,也会存在差异,因此可以在获取到模拟运行任务时,根据模拟运行任务确定需要获取目标版本软件,获取目标版本软件的版本信息,进而进行目标版本软件的同步。
68.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而
且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
69.下面对本技术实施例提供的自动驾驶软件同步装置进行描述,下文描述的自动驾驶软件同步装置与上文描述的自动驾驶软件同步方法可相互对应参照。
70.如图3所示,本技术实施例提供了一种自动驾驶软件同步装置300,应用于自动驾驶运算平台,所述装置包括:
71.元数据获取模块301,用于根据目标版本软件的版本信息获取所述目标版本软件的元数据;其中,所述元数据包括所述目标版本软件的每个文件的文件名、预定义的相对路径、文件指纹及其在分布式存储系统的存储路径;
72.第一确定模块302,用于根据每个文件的文件名、预定义的相对路径及本地目标目录,确定每个文件的本地同步路径;
73.第二确定模块303,用于根据本地缓存目录、每个文件的文件指纹及存储路径,确定每个文件在本地缓存的响应路径;所述响应路径为用于从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载文件指纹对应的文件的路径;
74.软链接创建模块304,用于基于每个文件对应的本地同步路径和响应路径创建从本地同步路径指向响应路径的软链接并保存。
75.在其中一个实施例中,所述元数据获取模块包括:
76.版本信息获取单元,用于获取目标版本软件的版本信息;
77.加载路径生成单元,用于根据所述版本信息及预设的元数据文件名生成加载路径;
78.元数据加载单元,用于根据所述加载路径从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载所述目标版本软件的元数据。
79.在其中一个实施例中,所述装置还包括:
80.文件加载模块,用于在运行所述目标版本软件时,根据每个文件对应的软链接加载对应文件。
81.在其中一个实施例中,所述装置还包括:
82.任务获取模块,用于获取模拟运行任务;
83.版本信息获取模块,用于根据所述模拟运行任务获取所述目标版本软件的版本信息。
84.上述自动驾驶软件同步装置中各个模块的划分仅仅用于举例说明,在其他实施例中,可将自动驾驶软件同步装置按照需要划分为不同的模块,以完成上述自动驾驶软件同步装置的全部或部分功能。上述自动驾驶软件同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
85.在一个实施例中,本技术还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行
以下步骤:
86.根据目标版本软件的版本信息获取所述目标版本软件的元数据;其中,所述元数据包括所述目标版本软件的每个文件的文件名、预定义的相对路径、文件指纹及其在分布式存储系统的存储路径;
87.根据每个文件的文件名、预定义的相对路径及本地目标目录,确定每个文件的本地同步路径;
88.根据本地缓存目录、每个文件的文件指纹及存储路径,确定每个文件在本地缓存的响应路径;所述响应路径为用于从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载文件指纹对应的文件的路径;
89.基于每个文件对应的本地同步路径和响应路径创建从本地同步路径指向响应路径的软链接并保存。
90.在其中一个实施例中,计算机可读指令被处理器执行时还实现以下步骤:
91.根据所述版本信息及预设的元数据文件名生成加载路径;
92.根据所述加载路径从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载所述目标版本软件的元数据。
93.在其中一个实施例中,计算机可读指令被处理器执行时还实现以下步骤:
94.在运行所述目标版本软件时,根据每个文件对应的软链接加载对应文件。
95.在其中一个实施例中,计算机可读指令被处理器执行时还实现以下步骤:
96.获取模拟运行任务;
97.根据所述模拟运行任务获取所述目标版本软件的版本信息。
98.在一个实施例中,本技术还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述一个或多个处理器执行所述计算机可读指令时,执行以下步骤:
99.根据目标版本软件的版本信息获取所述目标版本软件的元数据;其中,所述元数据包括所述目标版本软件的每个文件的文件名、预定义的相对路径、文件指纹及其在分布式存储系统的存储路径;
100.根据每个文件的文件名、预定义的相对路径及本地目标目录,确定每个文件的本地同步路径;
101.根据本地缓存目录、每个文件的文件指纹及存储路径,确定每个文件在本地缓存的响应路径;所述响应路径为用于从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载文件指纹对应的文件的路径;
102.基于每个文件对应的本地同步路径和响应路径创建从本地同步路径指向响应路径的软链接并保存。
103.在其中一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
104.根据所述版本信息及预设的元数据文件名生成加载路径;
105.根据所述加载路径从所述分布式存储系统或与所述分布式存储系统连接的分布式缓存系统加载所述目标版本软件的元数据。
106.在其中一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
107.在运行所述目标版本软件时,根据每个文件对应的软链接加载对应文件。
108.在其中一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
109.获取模拟运行任务;
110.根据所述模拟运行任务获取所述目标版本软件的版本信息。
111.示意性地,在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种自动驾驶软件同步方法。
112.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
113.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
114.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
115.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
116.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他
实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
117.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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