1.本发明实施例涉及计算机技术领域,特别涉及一种数据处理方法及电子装置。
背景技术:
2.随着网络技术的快速发展,网络安全引起了全社会的高度重视,网络安全通信设备开始被大量部署到实际的网络环境中,现网复杂的拓扑环境和巨大的网络流量对网络安全设备的性能和稳定性提出了更高要求。优秀的软件设计能够充分利用硬件资源,提高网络安全设备整体性能和稳定性。
3.多核网络安全设备通常运行在linux操作系统上,并基于dpdk技术加速网络通信处理速度。典型实现方式:启动dpdk数据面进程与cpu核一对一亲和,每个数据面进程绑定一个接口接收队列,dpdk用户态驱动接口通过rss hash算法选择一个接收队列收报文,每个数据面进程轮询自己绑定的接口队列,整机实现多个数据面进程并行处理报文。数据面进程中的基础转发引擎负责报文的二层以太头、三层ip头和四层tcp头解析、路由查找、session连接维护以及接口队列收发;数据面进程中的安全业务引擎负责对报文做应用层解析和深度安全检测与处理。
4.目前采用的安全数据处理技术包括:
5.现有技术一:
6.基础转发引擎和安全业务引擎运行在一个数据面进程中串行执行。
7.现有技术二:
8.基础转发引擎运行在dpdk数据面进程,安全业务引擎运行在linux管理面进程,两者独立运行。
9.但是上述两种方案的缺陷包括:
10.技术一:
11.1)安全业务无法实现bypass(分流)。由于安全业务和接口收发报文逻辑串行执行,业务处理慢会影响接口收包流程,导致网卡丢包,无法做到跳过业务处理直接转发。
12.2)无法实现独立重启。由于dpdk接口和内存初始化等逻辑是在启动时统一设置,无法单核设置,且引擎间使用共享内存,一个核的安全业务出现内存破坏问题,只能整机重启来恢复。
13.3)设备超过64核时,由于接口队列数有限,无法与cpu核一对一绑定,导致整机性能下降。
14.技术二:
15.1)数据面进程需要通过kni等特殊路径机制将报文发送到linux内核,安全业务再从linux协议栈接收报文做处理,之后再通过此路径发送给数据面进程通过接口将报文转发出去,整个过程中报文经过多次拷贝,大大降低整机新建和数据吞吐性能。
16.2)每个安全业务进程都需要重新进行报文解析和session连接维护,且与数据面进程维护的session不同步,极大增加代码逻辑复杂度和开发工作量,后续维护成本提高。
技术实现要素:
17.本发明提供了一种能够应用在多核设备中,提高基础转发和安全业务处理效率的数据处理方法,及应用该方法的电子设备。
18.为了解决上述技术问题,本发明实施例提供了一种数据处理方法,应用于多核设备中,所述方法包括:
19.建立基础转发进程组,包括多个用于接收并转发报文的工作进程和一个运行在处理器上用于对各进程及资源进行管理的主进程,所述多个工作进程均分别与一处理器核亲和;
20.建立安全业务处理进程组,包括多个安全业务处理进程,所述多个安全业务处理进程均分别与一所述处理器核亲和,用于完成报文的安全业务处理;
21.在所述多个安全业务处理进程与所述主进程间建立第一通道,以使所述多个安全业务处理进程通过所述第一通道完成向所述主进程的注册;
22.在所述多个工作进程与多个安全业务处理进程间建立第二通道,以使所述多个安全业务处理进程通过所述第二通道获得所述报文。
23.可选地,所述多个工作进程创建的各session数据共享,所述主进程与多个工作进程间的全局数据变量共享;
24.所述多个安全业务处理进程内存独立,支持独立重启,且所述多个安全业务处理进程只读访问所述主进程创建的共享内存区中的数据。
25.可选地,所述在所述多个安全业务处理进程与所述主进程间建立第一通道,包括:
26.每个所述安全业务处理进程在启动时均与所述主进程间建立所述第一通道,所述第一通道包括数据包通道;
27.所述在所述多个工作进程与多个安全业务处理进程间建立第二通道,包括:
28.每个所述安全业务处理进程与每个所述工作进程间均建立所述第二通道,所述第二通道包括dpdk无锁队列。
29.可选地,所述安全业务处理进程处理一条session报文时记录的业务数据为对应所述session报文的私有数据,并与对应的所述session报文关联;
30.所述方法还包括:
31.所述安全业务处理进程基于内存占用情况确定数据管理方式;
32.所述安全业务处理进程基于确定的所述数据管理方式独立维护所述私有数据以及与所述私有数据关联的session报文。
33.可选地,所述数据管理方式包括:
34.每个所述安全业务处理进程初始化时申请一块内存池;
35.确定所述session报文的id地址以及私有数据内存池首地址;
36.存储对应所述session报文的私有数据至对应的所述内存池,并基于所述id地址及所述首地址建立快速索引;
37.基于所述session报文的会话年龄校验所述私有数据的有效性。
38.可选地,所述数据管理方式包括:
39.将对应所述session报文的私有数据存储至对应所述安全数据处理进程的目标内存中;
40.对所述目标内存建立哈希链表;
41.确定所述session报文的id地址及会话年龄;
42.至少基于所述session报文的id地址及会话年龄计算哈希索引值。
43.可选地,还包括:
44.所述安全业务处理进程获得所述工作进程删除所述session报文后发送的通知信息,并基于所述通知信息释放对应的所述私有数据。
45.可选地,还包括:
46.所述工作进程在本地建立用于记录年龄的调度表,所述调度表年龄与所述主进程中记录的安全处理业务进程的状态表年龄保持一致;
47.所述工作进程根据主进程的命令行下发的策略对新建session报文进行安全业务处理策略匹配;
48.所述工作进程基于匹配结果和所述调度表确定目标安全业务处理进程;
49.所述工作进程记录所述目标安全业务处理进程的id地址在所述新建session报文中;
50.所述目标安全业务处理进程完成所述新建session报文的处理时,将处理后的所述新建session报文转回至所述工作进程;
51.所述工作进程将接收的所述新建session报文执行路由转发。
52.可选地,还包括:
53.所述工作进程确定当前运行场景是否为目标场景,若是,则转发报文至所述安全业务处理进程,直接执行报文的路由转发,所述目标场景包括所述安全业务处理进程重启、目标报文总数量达到配置的阈值、所述第二通道达到满负荷。
54.本发明另一实施例同时提供一种电子装置,包括:
55.第一建立模块,用于建立基础转发进程组,包括多个用于接收并转发报文的工作进程和一个运行在处理器上用于对各进程及资源进行管理的主进程,所述多个工作进程均分别与一处理器核亲和;
56.第二建立模块,用于建立安全业务处理进程组,包括多个安全业务处理进程,所述多个安全业务处理进程均分别与一所述处理器核亲和,用于完成报文的安全业务处理;
57.第三建立模块,用于在所述多个安全业务处理进程与所述主进程间建立第一通道,以使所述多个安全业务处理进程通过所述第一通道完成向所述主进程的注册;
58.第四建立模块,用于在所述多个工作进程与多个安全业务处理进程间建立第二通道,以使所述多个安全业务处理进程通过所述第二通道获得所述报文。
59.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
60.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
61.图1为本发明实施例中的数据处理方法的方法流程图。
62.图2为本发明另一实施例中的数据处理方法的实际应用过程图。
63.图3为本发明另一实施例中的数据处理方法的部分实际应用过程图。
64.图4为本发明另一实施例中的数据处理方法的部分实际应用过程图。
65.图5为本发明另一实施例中的数据处理方法的部分实际应用过程图。
66.图6为本发明另一实施例中的数据处理方法的部分实际应用过程图。
67.图7为本发明实施例中的电子装置的结构框图。
具体实施方式
68.下面,结合附图对本发明的具体实施例进行详细的描述,但不作为本发明的限定。
69.应理解的是,可以对此处公开的实施例做出各种修改。因此,下述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
70.包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
71.通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本发明的这些和其它特性将会变得显而易见。
72.还应当理解,尽管已经参照一些具体实例对本发明进行了描述,但本领域技术人员能够确定地实现本发明的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
73.当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
74.此后参照附图描述本公开的具体实施例;然而,应当理解,所公开的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所公开的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
75.本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。
76.下面,结合附图详细的说明本发明实施例。
77.如图1和图2所示,本发明实施例提供一种数据处理方法,应用于多核设备中,所述方法包括:
78.建立基础转发进程组,包括多个用于接收并转发报文的工作进程和一个运行在处理器上用于对各进程及资源进行管理的主进程,多个工作进程均分别与一处理器核亲和;
79.建立安全业务处理进程组,包括多个安全业务处理进程,多个安全业务处理进程均分别与一处理器核亲和,用于完成报文的安全业务处理;
80.在多个安全业务处理进程与主进程间建立第一通道,以使多个安全业务处理进程通过第一通道完成向主进程的注册;
81.在多个工作进程与多个安全业务处理进程间建立第二通道,以使多个安全业务处理进程通过第二通道获得报文。
82.本实施例中的方法可以应用在多核设备中,例如64核以上,基于本实施例的方法可以充分利所有处理器核,如cpu核,有效提高整机性能。而且,本实施例中的安全业务处理进程与基础转发进程组中的工作进程是分别通过不同的第一通道和第二通道实现数据传输,各个进程间不会产生影响,即使某个进程发生故障,也不会影响其余进程的运行,使得基础转发进程组(引擎)和安全业务处理进程组(引擎)能够高效,稳定地协作运行,不会发生代码耦合。
83.具体地,本实施例中的安全业务处理进程组可以成为安全业务处理引擎,其包括多个se进程,每个se进程均与一个cpu核亲和,可以是一一对应,也可以是多对一。基础转发进程组可称为基础转发引擎,其包括一个master主进程和多个工作进程,也可称为worker进程。master主进程运行在0核cpu上,负责例如dpdk大页内存、接口驱动等资源初始化和其他进程,包括工作进程和安全业务处理进程(se进程)的管理,worker进程和se进程启动后均需要向master进行注册。每个worker进程和一个cpu核亲和,可以是一一对应,也可以是多对一。每个worker进程同时绑定一个网卡收发队列,用于负责从网卡驱动处接收报文,之后进行路由转发。应用时,本实施例中的基础转发进程组和安全业务处理进程组均可以基于dpdk secondary进程实现。
84.进一步地,本实施例中的多个工作进程创建的各session数据共享,主进程与多个工作进程间的全局数据变量共享;
85.多个安全业务处理进程内存独立,支持独立重启,且多个安全业务处理进程只读访问主进程创建的共享内存区中的数据。
86.例如,具体实施时,可以通过配置文件设置多核设备中各cpu核上运行的进程类型,然后通过脚本设置dpdk运行参数。master和worker进程可编译成一个二进制程序,运行时先启动master进程读取worker数量和绑定的cpu核信息,再由master拉起所有worker进程。各个worker进程间创建的session数据结构共享,当然还可以包括其他数据结构进行共享。master和worker进程间的全局数据变量共享。但本实施例中的worker进程和master进程不支持单独重启。
87.进一步地,se进程被单独编译成一个二进制程序,master进程通过脚本读取配置文件获取se进程启动数量以及cpu核绑定信息,之后拉起所有se进程,各se进程间资源独立,内存独立,而且se进程支持单独重启,以在其他se进程损坏时,仅需重启该损的se进程即可,无需重启整体安全业务处理引擎。同时各se进程还可以基于dlmalloc库进行独立的内存管理。每个se进程通过只读映射master进程创建的共享内存区的方式访问共享内存区,即仅能够只读访问session(报文)等数据,以防止写坏共享内存影响其他进程运行。
88.进一步地,本实施例中在多个安全业务处理进程与主进程间建立第一通道,包括:
89.每个安全业务处理进程在启动时均与主进程间建立第一通道,第一通道包括数据包通道;
90.在多个工作进程与多个安全业务处理进程间建立第二通道,包括:
91.每个安全业务处理进程与每个工作进程间均建立第二通道,第二通道包括dpdk无锁队列。
92.例如,每个se进程和master之间建立的通道为本地socket通道,用于实现se进程向master进程传输注册信息和心跳保活信息。该第一通道数例如可以为m个,与se进程的数
量相同。每个se进程和worker进程之间建立的第二通道可以选择使用dpdk无锁队列rte_ring,用于传输报文和消息。即每个se进程还可以通过dpdk无锁队列接收worker进程转发过来的报文做安全业务处理。该第二通道数例如可以为n m个,其中n为启动的worker进程的数量,m为启动的se进程的数量。
93.具体地,本实施例中统一由master进程管理所有se进程,每个se进程启动后和master进程建立一个本地socket通道,将进程类型等信息注册给master进程,并定时发送心跳给master进程,由master进程维护se状态数据。而对于worker进程,其通过共享内存获取master进程上的se进程的状态信息而生成本地调度表,用于后续确定用户处理报文的se进程。如上所述,每个se进程的内存独立,各进程间不共享数据,se进程出问题后可单独重启,不影响master、worker和其他se进程。而在重启过程中,worker进程更新本地调度表,对应该损坏的se进程的旧session流量直接bypass,并新建session流量调度给同类型的其他se进程;待重新启动后,se进程再次向master进程注册,从而加入worker调度表参与流量处理。
94.进一步地,所述的session由源ip、目的ip、源端口、目的端口和四层协议号表示的五元组构成,表示一条报文流,其用于缓存路由查询结果和安全业务处理结果。各安全业务处理进程处理同一条session报文时记录的业务数据称为这条session(报文)的私有数据。session由worker进程创建,私有数据由se进程产生,私有数据需要和session一对一关联。
95.本实施例中的方法还包括:
96.安全业务处理进程基于内存占用情况确定数据管理方式;
97.安全业务处理进程基于确定的数据管理方式独立维护私有数据以及与私有数据关联的session报文。
98.具体地,se进程对session内存只读映射,独立维护私有数据信息以及与session的对应关系,通过会话年龄保证私有数据的有效性。其中,se进程提供私有数据内存池与哈希链表两种会话私有数据管理方式,具体选择哪种方式可以根据实际内存占用情况选择,若内存占用情况严重,则可以优先选择哈希链表,反之则可以选择内存池。
99.例如,实施例一:
100.数据管理方式包括:
101.每个安全业务处理进程初始化时申请一块内存池;
102.确定session报文的id地址以及私有数据内存池首地址;
103.存储对应session报文的私有数据至对应的内存池,并基于id地址及首地址建立快速索引;
104.基于session报文的会话年龄校验私有数据的有效性。
105.例如,如图3所示,每个se进程初始化时申请一块内存池(session总数*私有数据管理头大小),根据session id可以快速索引私有数据管理头地址并维护对应的session私有数据信息。这种私有数据管理方式优点是索引速度快,无内存申请释放的开销,每个se进程独立,无进程间互斥及内存越界访问风险。其中,图中的dse_private_globle为私有数据内存池首地址,偏移session_id大小之后就是每个私有数据管理结构体。age为session报文的会话年龄,用于校验私有数据有效性,8字节private_data数组保存私有数据地址。
106.实施例二:
107.数据管理方式包括:
108.将对应session报文的私有数据存储至对应安全数据处理进程的目标内存中;
109.对目标内存建立哈希链表;
110.确定session报文的id地址及会话年龄;
111.至少基于session报文的id地址及会话年龄计算哈希索引值。
112.例如,如图4所示,可以使用哈希链表(hash链表)管理私有数据,根据session_id、session_age、hash_lines计算的hash值索引到对应的hash链表头,添加私有数据时需要申请session私有数据管理结构内存,并插入对应的链表,删除私有数据时需要删除对应的链表并释放私有数据管理结构内存。其中,图中的dse_private_hash_globle为初始化完成的哈希链表头内存池首地址,根据session_id、session_age计算的哈希值进行偏移得到链表头。私有数据管理结构体需要申请释放,age保证私有数据有效性、session_id用于哈希冲突检测、8字节private_data为数组保存私有数据地址。
113.进一步地,本实施例中的方法还包括:
114.安全业务处理进程获得工作进程删除session报文后发送的通知信息,并基于通知信息释放对应的私有数据。
115.例如,如图5所示,se进程中session私有数据的释放是在worker进程删除session报文之后,通过msg消息通知se进程进行处理的。考虑新建流量模型下频繁下发msg消息对性能的影响,worker进程会累计删除特定数量(例如32个)session报文时封装一个msg消息发送给se进程,删除私有数据msg消息使用session id:session age的格式进行封装发送。se进程接收msg消息之后批量处理session id:session age索引到对应的私有数据结构内存处,并根据age判断私有数据有效性。对有效的私有数据根据不同模块设置的析构函数进行释放;对于没有私有数据释放回调的,将私有数据地址放入se_private_free_globle资源回收环形队列,由定时器进行计时,超时之后队列自动释放私有数据。
116.进一步地,本实施例中的方法还包括:
117.工作进程在本地建立用于记录年龄的调度表,调度表年龄与主进程中记录的安全处理业务进程的状态表年龄保持一致;
118.工作进程根据主进程的命令行下发的策略对新建session报文进行安全业务处理策略匹配;
119.工作进程基于匹配结果和调度表确定目标安全业务处理进程;
120.工作进程记录目标安全业务处理进程的id地址在新建session报文中;
121.目标安全业务处理进程完成新建session报文的处理时,将处理后的新建session报文转回至工作进程;
122.工作进程将接收的新建session报文执行路由转发。
123.例如,在对worker进程进行报文调度时,为了避免加锁影响性能,如上所述,每个worker进程都在本地生成一个调度表,并记录状态表年龄用于和master进程对比,当master主进程监控的se进程的状态表年龄改变时可快速更新worker进程的本地调度表。运行时worker进程根据master进程下发的命令行中的策略对新建session报文进行安全引擎策略匹配,根据策略匹配结果和调度表选择一个目标se进程,将目标se的id记录在session中,当一个se进程处理完报文后,将报文转回worker进程,由worker进程继续匹配下一条策
略,按顺序记录匹配确定的目标se的id,直到所有策略处理完成,再继续执行路由转发。该session的后续报文直接根据保存的目标se id信息进行报文转发,转发前先获取目标se进程存活状态和报文通道状态,即第二通道状态,如果状态异常则直接执行流量bypass。
124.例如,如图6所示,se1进程和se3进程上运行waf,se2进程和se4进程运行ips。worker进程匹配waf和ips策略后根据本地调度表选择了se1进程和se2进程,并记录下对应的se id,按顺序先将报文转发给se1进程,se1进程处理完将报文和携带的处理结果返回给worker,再调度给se2进程处理,最后worker进程根据查路由得到的报文输出接口,将报文从设备的该接口转发给下一级。其中,图中编号为1和2的部分表示worker进程和se进程的第一次调度,编号为3和4的部分表示第二次调度。
125.进一步地,本实施例中的方法还包括:
126.工作进程确定当前运行场景是否为目标场景,若是,则转发报文至安全业务处理进程,直接执行报文的路由转发,目标场景包括安全业务处理进程重启、目标报文总数量达到配置的阈值、第二通道达到满负荷。
127.例如,在以下场景下,worker进程执行流量bypass,即不做安全业务处理,直接路由转发,所述场景包括:
128.1)跨核队列rte_ring满了;
129.2)跨核报文总数量到达配置的阈值;
130.3)se进程重启。
131.上述实施例所述的数据处理方法可在多核安全设备,如64核以上的设备上充分利用所有cpu核,提升整机性能;可在保证性能前提下实现安全业务引擎单核重启、基础转发引擎上流量bypass,提高设备运行稳定性,从而达到提升设备性价比和降低后期维护成本的目标。另外,本实施例可以基于dpdk secondary进程实现基础转发进程和安全业务进程,用基础转发进程绑定有限的接口队列进行报文收发,安全业务处理进程只做业务处理,两种进程独立编译运行,通过无锁队列实现两种进程间报文零拷贝传输,进一步提升了数据处理效率。
132.如图7所示,本技术另一实施例同时提供一种电子装置,包括:
133.第一建立模块,用于建立基础转发进程组,包括多个用于接收并转发报文的工作进程和一个运行在处理器上用于对各进程及资源进行管理的主进程,多个工作进程均分别与一处理器核亲和;
134.第二建立模块,用于建立安全业务处理进程组,包括多个安全业务处理进程,多个安全业务处理进程均分别与一处理器核亲和,用于完成报文的安全业务处理;
135.第三建立模块,用于在多个安全业务处理进程与主进程间建立第一通道,以使多个安全业务处理进程通过第一通道完成向主进程的注册;
136.第四建立模块,用于在多个工作进程与多个安全业务处理进程间建立第二通道,以使多个安全业务处理进程通过第二通道获得报文。
137.可选地,多个工作进程创建的各session数据共享,主进程与多个工作进程间的全局数据变量共享;
138.多个安全业务处理进程内存独立,支持独立重启,且多个安全业务处理进程只读访问主进程创建的共享内存区中的数据。
139.可选地,在多个安全业务处理进程与主进程间建立第一通道,包括:
140.每个安全业务处理进程在启动时均与主进程间建立第一通道,第一通道包括数据包通道;
141.在多个工作进程与多个安全业务处理进程间建立第二通道,包括:
142.每个安全业务处理进程与每个工作进程间均建立第二通道,第二通道包括dpdk无锁队列。
143.可选地,安全业务处理进程处理一条session报文时记录的业务数据为对应session报文的私有数据,并与对应的session报文关联;
144.所述电子装置还包括:
145.安全业务处理模块,用于基于内存占用情况确定数据管理方式,并基于确定的数据管理方式独立维护私有数据以及与私有数据关联的session报文。
146.可选地,数据管理方式包括:
147.每个安全业务处理进程初始化时申请一块内存池;
148.确定session报文的id地址以及私有数据内存池首地址;
149.存储对应session报文的私有数据至对应的内存池,并基于id地址及首地址建立快速索引;
150.基于session报文的会话年龄校验私有数据的有效性。
151.可选地,数据管理方式包括:
152.将对应session报文的私有数据存储至对应安全数据处理进程的目标内存中;
153.对目标内存建立哈希链表;
154.确定session报文的id地址及会话年龄;
155.至少基于session报文的id地址及会话年龄计算哈希索引值。
156.可选地,所述安全业务处理模块还用于:
157.获得工作进程删除session报文后发送的通知信息,并基于通知信息释放对应的私有数据。
158.可选地,所述电子装置还包括工作模块:
159.用于在本地建立用于记录年龄的调度表,调度表年龄与主进程中记录的安全处理业务进程的状态表年龄保持一致,并根据主进程的命令行下发的策略对新建session报文进行安全业务处理策略匹配;基于匹配结果和调度表确定目标安全业务处理进程;记录目标安全业务处理进程的id地址在新建session报文中;目标安全业务处理进程完成新建session报文的处理时,将处理后的新建session报文转回至工作进程;将接收的新建session报文执行路由转发。
160.可选地,所述工作模块还用于:
161.确定当前运行场景是否为目标场景,若是,则转发报文至安全业务处理进程,直接执行报文的路由转发,目标场景包括安全业务处理进程重启、目标报文总数量达到配置的阈值、第二通道达到满负荷。
162.本技术另一实施例还提供一种电子设备,包括:
163.一个或多个处理器;
164.存储器,配置为存储一个或多个程序;
165.当该一个或多个程序被该一个或多个处理器执行时,使得该一个或多个处理器实现上述处理方法。
166.本技术一实施例还提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的处理方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
167.本技术实施例还提供了一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可读指令,所述计算机可执行指令在被执行时使至少一个处理器执行诸如上文所述实施例中的处理方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
168.需要说明的是,本技术的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(ram)、只读存储介质(rom)、可擦式可编程只读存储介质(eprom或闪存)、光纤、便携式紧凑磁盘只读存储介质(cd
‑
rom)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、天线、光缆、rf等等,或者上述的任意合适的组合。
169.应当理解,虽然本技术是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
170.以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
转载请注明原文地址:https://win.8miu.com/read-29195.html