基于多容器系统的内核日志读取方法、装置、设备及介质与流程

文档序号:28329437发布日期:2022-01-05 02:25阅读:157来源:国知局
基于多容器系统的内核日志读取方法、装置、设备及介质与流程

1.本公开涉及数据处理领域,特别涉及一种基于多容器系统的内核日志读取方法、装置、电子设备及存储介质。


背景技术:

2.目前,多容器系统的架构中包括用户空间(也可称为上层空间,user space)和内核空间(kernel space),用户空间和内核空间都可以产生日志(log)。其中,用户空间中包括host(主系统)空间和多个cell(容器)空间。
3.实际应用中,host空间启动完成后,可创建cell1空间、cell2空间、

celln空间等。host空间、cell1空间、cell2空间、

celln中均存在对应的logd进程,各个logd进程都是隔离的,用户空间中的各个空间通过logd进程写入内核空间中的内核日志也是隔离的。
4.host空间拥有较高的权限,可通过logd进程读取内核空间中的内核日志,可是为了保证多容器系统的安全,host空间不向用户开放。现有的各个cell空间无法通过logd进程从内核空间中读取内核日志。这样的情况下,若用户空间中的某个应用程序运行失败,由于无法获取该应用程序在内核空间中对应的内核日志,则无法了解该应用程序运行失败的原因,无法针对失败的原因对该应用程序进行优化。
5.因此,在保证多容器系统运行安全的前提下,来自用户空间的进程如何从内核空间中获取内核日志是目前亟需解决的技术问题。


技术实现要素:

6.为了解决上述技术问题,本公开实施例提供了一种基于多容器系统的内核日志读取方法、装置、设备及存储介质。
7.第一方面,本公开提供了一种基于多容器系统的内核日志读取方法,所述方法应用于多容器系统的内核空间,所述方法包括:
8.接收来自第一进程的内核日志读取请求;其中,所述第一进程属于所述多容器系统的用户空间;
9.确定所述第一进程对应的用户空间标识,作为第一空间标识;
10.将所述第一空间标识对应的内核日志返回至所述第一进程。
11.一种可选的实施方式中,所述将所述第一空间标识对应的内核日志返回至所述第一进程之前,还包括:
12.在监测到内核日志产生行为时,获取所述内核日志产生行为所产生的内核日志;
13.确定所述内核日志产生行为对应的用户空间标识;
14.将所述内核日志与所述用户空间标识的对应关系进行存储。
15.一种可选的实施方式中,所述用户空间包括主系统host空间,所述将所述内核日志与所述用户空间标识的对应关系进行存储之前,还包括:
16.如果未获取到所述内核日志产生行为对应的用户空间标识,则将所述内核日志产
生行为所产生的内核日志与host空间标识的对应关系进行存储;其中,所述host空间标识用于标识所述host空间。
17.一种可选的实施方式中,所述用户空间包括host空间,所述将所述第一空间标识对应的内核日志返回至所述第一进程之前,还包括:
18.确定所述第一空间标识是否为所述host空间的标识;
19.相应的,所述将所述第一空间标识对应的内核日志返回至所述第一进程,包括:
20.如果确定所述第一空间标识为所述host空间的标识,则将所述内核空间内的内核日志返回至所述第一进程。
21.一种可选的实施方式中,所述确定所述第一进程对应的用户空间标识,作为第一空间标识之前,还包括:
22.当接收到来自所述第一进程的注册请求时,确定所述第一进程所属的用户空间的用户空间标识;
23.记录所述第一进程与所述用户空间标识之间的对应关系。
24.一种可选的实施方式中,所述内核空间内记录有多个进程与用户空间标识之间的对应关系。
25.第二方面,本公开提供了一种基于多容器系统的内核日志读取装置,所述装置应用于多容器系统的内核空间,所述装置包括:
26.接收单元,用于接收来自第一进程的内核日志读取请求;其中,所述第一进程属于所述多容器系统的用户空间;
27.第一确定单元,用于确定所述第一进程对应的用户空间标识,作为第一空间标识;
28.第一返回单元,用于将所述第一空间标识对应的内核日志返回至所述第一进程。
29.一种可选的实施方式中,所述装置还包括:
30.获取单元,用于在监测到内核日志产生行为时,获取所述内核日志产生行为所产生的内核日志;
31.第二确定单元,用于确定所述内核日志产生行为对应的用户空间标识;
32.第一存储单元,用于将所述内核日志与所述用户空间标识的对应关系进行存储。
33.第三方面,本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的基于多容器系统的内核日志读取方法第四方面,
34.第四方面,本公开提供了一种电子设备,所述电子设备包括:
35.处理器;
36.用于存储所述处理器可执行指令的存储器;
37.所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一所述的基于多容器系统的内核日志读取方法。
38.本公开实施例提供了一种基于多容器系统的内核日志读取方法,该方法应用于多容器系统的内核空间,首先,接收来自第一进程的内核日志读取请求;其中,第一进程属于多容器系统的用户空间;确定第一进程对应的用户空间标识,作为第一空间标识;然后,将第一空间标识对应的内核日志返回至第一进程。可见,本公开实施例基于第一进程对应的用户空间标识,将第一空间标识对应的内核日志返回至第一进程,使得第一进程所属的用
户空间仅从内核空间中获取自身对应的内核日志,保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
附图说明
39.通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
40.图1为现有技术中多容器系统的内核日志读取方法的流程示意图;
41.图2为本公开实施例提供的一种基于多容器系统的内核日志读取方法的流程示意图;
42.图3为本公开实施例提供的一种基于多容器系统的用户空间中的多个进程在内核空间中的审计子系统注册的示意图;
43.图4为本公开实施例提供的另一种基于多容器系统的内核日志读取的流程示意图;
44.图5为本公开实施例提供的一种基于多容器系统的内核日志读取装置结构示意图;
45.图6为本公开实施例提供的一种电子设备的结构图。
具体实施方式
46.下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
47.在软件系统开发领域,操作系统的架构中包括用户空间(也可称为上层空间,user space)和内核空间(kernel space),其中,用户空间包括host(主系统)空间以及由host空间创建的多个cell(容器)空间,内核空间中包括审计系统(audit system),审计系统中包括审计子系统(audit subsystem)。用户空间和内核空间是双向联系,例如,通过host空间的操作及调用可深入内核空间的审计子系统,审计子系统也可以返回日志至host空间。
48.随着应用程序的增多,单容器操作系统不能满足用户的需求,因此,基于需求创建了多容器操作系统。host空间启动完成后,可在用户空间中创建cell1空间、cell2空间、

celln空间等。host空间是负责管理整个容器系统,用于启动、关闭和切换容器等。
49.日志是常见的调试与分析问题的方法,目前的多容器操作系统中,仅用户空间的host空间可以从内核空间读取日志。随着操作系统的不断升级,日志的主要逻辑实现及保存在用户空间,并引入了logd的守护进程用来进行日志的读写操作。logd为android系统中的守护进程,也可称为用户空间的审计进程,其用于负责保存用户空间的日志与读取内核空间传递的内核日志。
50.host空间、cell1空间、cell2空间、

celln中均存在对应的logd进程,各个logd进程都是隔离的,用户空间中的各个空间通过logd进程写入内核空间中的内核日志也是隔离的。
51.目前,由于linux原生的限制,多容器系统的内核空间(kernel space)的审计子系统每次只允许一个用户空间中的一个audit进程注册,并且audit进程只能来自host空间的init_namespace。也就是说,用户空间中host空间可通过logd进程读取内核空间中的内核日志,各个cell空间无法通过logd进程从内核空间中读取内核日志。这样的情况下,若用户空间中的某个应用程序运行失败,由于无法获取该应用程序在内核空间中对应的内核日志,则无法了解该应用程序运行失败的原因,无法针对失败的原因对该应用程序进行优化。因此,在保证多容器系统运行安全的前提下,来自用户空间的进程如何从内核空间中获取内核日志是目前亟需解决的技术问题。
52.图1为现有技术中多容器系统的内核日志读取方法的流程示意图,其中,多容器系统中包括host空间、cell1空间和cell2空间,假设cell1表示生活空间,cell2表示安全空间。目前,只有host空间能读取在内核空间中对应的内核日志,cell空间无法读取在内核空间中对应的内核日志,例如,cell1空间和cell2空间无法读取内核空间中的内核日志。现有技术中为了保证多容器系统的安全,host空间不向用户开放。在用户使用终端设备时,开机后即进入安全空间(cell2),用户可以在cell1空间(生活空间)与cell2空间(安全空间)切换。假设生活空间中某个应用程序运行失败,由于无法获取该应用程序在内核空间中对应的内核日志,则无法了解该应用程序运行失败的原因,无法针对失败的原因对该应用程序进行优化。
53.为此,本公开提供了一种基于多容器系统的内核日志读取方法,该方法应用于多容器系统的内核空间,首先,接收来自第一进程的内核日志读取请求;其中,第一进程属于多容器系统的用户空间;确定第一进程对应的用户空间标识,作为第一空间标识;然后,将第一空间标识对应的内核日志返回至第一进程。可见,本公开实施例基于第一进程对应的用户空间标识,将第一空间标识对应的内核日志返回至第一进程,使得第一进程所属的用户空间仅从内核空间中获取自身对应的内核日志,保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
54.示例性方法
55.本公开实施例涉及的多容器系统是基于lxc技术,利用linux kernel中的namespace+cgroup特性,并基于android系统环境来实现android多容器系统。其中,lxc(linux container)是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
56.多容器系统的架构中包括用户空间(也可称为上层空间,user space)和内核空间(kernel space),其中,用户空间中包括host(主系统)空间和多个cell(容器)空间。
57.图2为本公开实施例提供的一种基于多容器系统的内核日志读取方法的流程示意图,其中,该方法应用于多容器系统的内核空间。如图2所示,包括如下步骤:
58.步骤201,接收来自第一进程的内核日志读取请求;其中,所述第一进程属于所述多容器系统的用户空间。
59.本公开实施例中,第一进程可以是用户空间中host空间、cell1空间、cell2空间、

celln空间中任意一个空间对应的logd进程,通过logd进程可以进行日志的读写操
作。本公开实施例后续介绍host空间、cell1空间和cell2空间对应的logd进程。
60.内核日志,是指存储在内核空间中的日志。内核日志读取请求用于请求对内核空间中的内核日志进行读取操作。
61.步骤202,确定所述第一进程对应的用户空间标识,作为第一空间标识。
62.其中,用户空间标识用于唯一标识用户空间。
63.本公开实施例中,用户空间标识包括host空间标识和各个cell空间标识。假设第一进程为host空间的logd进程,则第一进程对应的用户空间标识是指host空间标识;假设第一进程为某个cell空间的logd进程,则第一进程对应的用户空间标识是指该cell空间的空间标识。
64.实际应用中,可以预先存储进程与用户空间标识之间的对应关系。
65.一种可选的实施方式中,可以通过内核空间的task_struct任务结构保存进程与用户空间标识之间的对应关系,包括第一进程所属的用户空间标识与第一进程之间的对应关系。例如,内核空间的task_struct结构中保存host空间标识、cell1空间标识和cell2空间标识以及各个空间标识分别对应的进程。
66.目前,多容器系统的内核空间中包括审计子系统(audit subsystem),内核空间中的日志的主要逻辑由审计子系统负责,用户空间对应的logd进程通过netlink协议与内核空间中的审计子系统进行交互,包括规则下发与读取日志等功能。内核空间在启动阶段初始化审计子系统时,创建一个netlink socket链接,auditd启动audit_receive内核线程处理来自用户空间的请求,包括内核日志读取请求、解析规则请求,使能audit开关请求等工作。
67.由于linux原生的限制,多容器系统的内核空间(kernel space)的审计子系统每次只允许一个用户空间中的一个audit进程注册,并且audit进程只能来自host空间的init_namespace。也就是说,用户空间中只有host空间可以对内核空间的审计子系统进行audit进程注册,各个cell空间无法对内核空间的审计子系统进行audit进程注册,这样各个cell空间无法通过logd进程从内核空间中读取内核日志。
68.为了解决上述问题,本公开实施例中的多容器系统的内核空间允许各个用户空间的进程进行注册。具体的,当内核空间接收到来自第一进程的注册请求时,确定第一进程所属的用户空间的用户空间标识;并记录第一进程与所述用户空间标识之间的对应关系。内核空间内可以记录有多个进程与用户空间标识之间的对应关系,表征内核空间可以同时允许多个用户空间的注册。
69.一种可选的实施方式中,内核空间可以将注册的进程与用户空间标识之间的对应关系,存储于内核空间的task_struct结构。
70.图3为本公开实施例提供的一种基于多容器系统的用户空间中的多个进程在内核空间中的审计子系统注册的示意图。内核空间中的审计子系统接收用户空间中的host空间对应的logd进程、cell1空间对应的logd进程或cell2空间对应的logd进程的注册请求时,审计子系统创建各个logd进程对应的审计连接audit_connection。
71.其中,logd进程通过netlink协议与内核空间的审计子系统建立通讯连接,当内核空间接收到来自host空间对应的logd进程或cell空间对应的logd进程的注册请求时,内核空间的审计子系统确定logd进程所属的用户空间标识;并在内核空间中记录该logd进程与
该logd进程所属的用户空间标识之间的对应关系。
72.本公开实施例中,用户空间中不仅允许host空间对内核空间的审计子系统进行audit进程注册,也允许各个cell空间对内核空间的审计子系统进行audit进程注册,这样有利于用户空间通过logd进程从内核空间中读取内核日志,特别是有利于cell空间的logd进程从内核空间中获取cell空间所产生的对应的内核日志。
73.实际应用中,内核空间内记录有多个进程与用户空间标识之间的对应关系。例如,内核空间内不仅记录有logd进程与host空间标识之间的对应关系,还记录有logd进程与多个cell空间标识之间的对应关系。
74.步骤203,将所述第一空间标识对应的内核日志返回至所述第一进程。
75.实际应用中,用户空间一般通过logd\slogd等进程进行内核日志的写入(内核日志产生行为)。其中,内核日志的产生主要来自两个方式,一个方式是在内核空间调用printk等方式写入内核日志,另一个方式是通过审计逻辑写入内核日志。不同的用户空间可采用不同的操作系统表示用户空间对应的日志产生行为。例如,可通过system_call系统操作触发host空间对应的日志产生行为,通过fork系统操作触发cell空间对应的日志产生行为等。
76.一种可选的实施方式中,内核空间中的审计子系统监测到内核日志产生行为时,获取内核日志产生行为所产生的内核日志;确定内核日志产生行为对应的用户空间标识;并将内核日志与用户空间标识的对应关系进行存储。
77.一种可选的实施方式中,产生的内核日志与其对应的用户空间标识可以存储在审计子系统中的audit_buffer审计缓冲区中。当审计子系统的audit_buffer接收来自host空间对应的进程的内核日志读取请求时,将host空间标识对应的内核日志返回至host空间对应的进程。当审计子系统的audit_buffer接收来自各个cell空间对应的进程的内核日志读取请求时,将各个cell空间标识对应的内核日志返回至该cell空间对应的进程。
78.由于内核空间中记录了多个进程与用户空间标识之间的对应关系,当内核空间的审计子系统监测日志产生行为时,获取内核日志产生行为所产生的内核日志;并确定内核日志产生行为对应于用户空间标识。如果确定内核日志产生行为对应于host空间标识,将该产生的内核日志与host空间标识的对应关系进行存储。如果确定内核日志产生行为对应于某个cell空间标识,将该产生的内核日志与该cell空间标识的对应关系进行存储。
79.当内核空间的审计子系统接收来自host空间对应的logd进程或者cell空间对应的logd进程对内核日志的读取请求时,内核空间从task_struct结构中确定该logd进程对应的是host空间标识还是某个cell空间标识,进一步的,基于logd进程对应的用户空间标识,获取内核空间与该用户空间标识对应的内核日志,然后将获取到的内核日志返回至该logd进程,这样保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
80.本公开提供了一种基于多容器系统的内核日志读取方法,该方法应用于多容器系统的内核空间,首先,接收来自第一进程的内核日志读取请求;其中,第一进程属于多容器系统的用户空间;确定第一进程对应的用户空间标识,作为第一空间标识;然后,将第一空间标识对应的内核日志返回至第一进程。可见,本公开实施例基于第一进程对应的用户空间标识,将第一空间标识对应的内核日志返回至第一进程,使得第一进程所属的用户空间
仅从内核空间中获取自身对应的内核日志,保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
81.基于上述实施例描述的内容,内核空间的审计子系统在监测到内核日志产生行为时,如果未获取到内核日志产生行为对应的用户空间标识,则将内核日志产生行为所产生的内核日志与host空间标识的对应关系进行存储。假设审计子系统在监测到内核日志产生行为,无法确定内核日志产生行为对应的用户空间标识是cell1对应的空间标识,还是cell2应的空间标标识时,则将内核日志产生行为所产生的内核日志与host空间标识的对应关系进行存储。这样通过host空间对应的logd进程能读取内核空间内的所有的内核日志,有利于了解应用程序运行失败的原因,针对失败的原因对应用程序进行优化。
82.图4为公开实施例提供的另一种基于多容器系统的内核日志读取的流程示意图。
83.用户通过logcat命令读取内核日志,第一进程在接收到logcat命令之后,通过访问审计子系统读取内核日志。在用户空间中,用户读取一般通过logcat命令读取内核日志。当内核空间中的审计子系统接收来自第一进程的内核日志读取请求时,审计子系统首先获取第一进程对应的第一空间标识,并确定第一空间标识是否为host空间的标识。如果确定第一空间标识为host空间的标识,则将内核空间内的所有内核日志返回至第一进程。如果确定第一空间标识为某个cell空间的标识,则将内核空间内该cell空间对应的内核日志返回至第一进程。
84.本公开实施例提供了一种基于多容器系统的内核日志读取方法,host空间对应的logd进程能读取内核空间内的所有内核日志,cell空间对应的logd进程只能读取内核空间中该cell空间产生的内核日志,保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
85.示例性装置
86.与上述示例性方法相对应的,本公开实施例还提供了一种基于多容器系统的内核日志读取装置,参考图5,为本公开实施例提供的一种基于多容器系统的内核日志读取装置;所述装置包括:
87.接收单元501,用于接收来自第一进程的内核日志读取请求;其中,所述第一进程属于所述多容器系统的用户空间;
88.第一确定单元502,用于确定所述第一进程对应的用户空间标识,作为第一空间标识;
89.第一返回单元503,用于将所述第一空间标识对应的内核日志返回至所述第一进程。
90.一种可选的实施方式中,所述将所述第一空间标识对应的内核日志返回至所述第一进程之前,所述装置包括:
91.获取单元,用于在监测到内核日志产生行为时,获取所述内核日志产生行为所产生的内核日志;
92.第二确定单元,用于确定所述内核日志产生行为对应的用户空间标识;
93.第一存储单元,用于将所述内核日志与所述用户空间标识的对应关系进行存储。
94.一种可选的实施方式中,所述用户空间包括主系统host空间,所述将所述内核日志与所述用户空间标识的对应关系进行存储之前,所述装置包括:
95.第二存储单元,用于在未获取到所述内核日志产生行为对应的用户空间标识时,将所述内核日志产生行为所产生的内核日志与host空间标识的对应关系进行存储;其中,所述host空间标识用于标识所述host空间。
96.一种可选的实施方式中,所述用户空间包括host空间,所述将所述第一空间标识对应的内核日志返回至所述第一进程之前,所述装置包括:
97.第三确定单元,用于确定所述第一空间标识是否为所述host空间的标识;
98.相应的,所述将所述第一空间标识对应的内核日志返回至所述第一进程,包括:
99.第二返回单元,用于在确定所述第一空间标识为所述host空间的标识时,将所述内核空间内的内核日志返回至所述第一进程。
100.一种可选的实施方式中,所述确定所述第一进程对应的用户空间标识,作为第一空间标识之前,所述装置包括:
101.第四确定单元,用于当接收到来自所述第一进程的注册请求时,确定所述第一进程所属的用户空间的用户空间标识;
102.记录单元,用于记录所述第一进程与所述用户空间标识之间的对应关系。
103.一种可选的实施方式中,所述内核空间内记录有多个进程与用户空间标识之间的对应关系。
104.本公开提供了一种基于多容器系统的内核日志读取装置,该装置应用于多容器系统的内核空间,首先,接收来自第一进程的内核日志读取请求;其中,第一进程属于多容器系统的用户空间;确定第一进程对应的用户空间标识,作为第一空间标识;然后,将第一空间标识对应的内核日志返回至第一进程。可见,本公开实施例基于第一进程对应的用户空间标识,将第一空间标识对应的内核日志返回至第一进程,使得第一进程所属的用户空间仅从内核空间中获取自身对应的内核日志,保证了多容器系统的运行安全,同时实现了用户空间能够从内核空间读取内核日志的功能。
105.示例性电子设备
106.下面,参考图6来描述根据本公开实施例的电子设备。图6为本公开实施例提供的一种电子设备的结构图。该电子设备60可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
107.如图6所示,电子设备60包括一个或多个处理器601和存储器602。
108.处理器601可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备60中的其他组件以执行期望的功能。
109.存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所述的本公开的各个实施例的各个步骤以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
110.在一个示例中,电子设备60还可以包括:输入装置603和输出装置604,这些组件通
过总线系统和/或其他形式的连接机构(未示出)互连。
111.例如,在该电子设备是第一设备或第二设备时,该输入装置603可以是上述的麦克风或麦克风阵列,用于捕捉声源的输入信号。在该电子设备是单机设备时,该输入装置603可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
112.此外,该输入装置603还可以包括例如键盘、鼠标等等。
113.该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输入装置603可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
114.当然,为了简化,图6中仅示出了该电子设备60中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备60还可以包括任何其他适当的组件。
115.除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的各个步骤。
116.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
117.此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的各个步骤。
118.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
119.以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
120.本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
121.还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
122.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
123.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1