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

一种SQL语句风险检测方法、装置、设备及介质与流程

2022-06-01 06:50:03 来源:中国专利 TAG:

一种sql语句风险检测方法、装置、设备及介质
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种sql语句风险检测方法、装置、设备及介质。


背景技术:

2.sql(structured query language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利。同时,提高sql的使用安全性,也是非常重要的课题。
3.有鉴于此,需要更有效和更高效的sql语句风险检测方案。


技术实现要素:

4.本说明书实施例提供一种sql语句风险检测方法、装置、设备及介质,用以解决如何更有效和更高效地进行sql语句风险检测的技术问题。
5.为解决上述技术问题,本说明书实施例提供如下技术方案:
6.本说明书实施例提供一种sql语句风险检测方法,包括:
7.获取目标对象对应的二进制文件,判断所述二进制文件是否包含对预设操作的调用;其中,所述预设操作是删除数据表或删除数据表中的数据的操作;
8.若所述二进制文件包含对预设操作的调用,则判断用于执行所述预设操作的sql语句是否存在条件约束语句;
9.若用于执行所述预设操作的sql语句不存在条件约束语句,则判断所述sql语句存在风险。
10.本说明书实施例提供一种sql语句风险检测装置,包括:
11.调用分析模块,用于获取目标对象对应的二进制文件,判断所述二进制文件是否包含对预设操作的调用;其中,所述预设操作是删除数据表或删除数据表中的数据的操作;
12.约束分析模块,用于若所述二进制文件包含对预设操作的调用,则判断用于执行所述预设操作的sql语句是否存在条件约束语句;
13.风险分析模块,用于若用于执行所述预设操作的sql语句不存在条件约束语句,则判断所述sql语句存在风险。
14.本说明书实施例提供一种sql语句风险检测设备,包括:
15.至少一个处理器;
16.以及,
17.与所述至少一个处理器通信连接的存储器;
18.其中,
19.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的sql语句风险检测方法。
20.本说明书实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有
计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的sql语句风险检测方法。
21.本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
22.上述技术方案能够在不运行程序及sql语句的情况下,通过静态分析的方式检测出sql语句存在的风险,从而提高sql语句风险检测效果和效率。特别的,上述技术方案能够针对sql语句是否存在删除数据表或删除数据表中数据(特别是删除数据表中全部数据)的风险进行检测,进一步提高风险检测效果。
附图说明
23.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对本说明书实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面介绍的附图仅仅是本说明书中记载的实施例可能涉及的部分附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是本说明书第一个实施例中的sql语句风险检测方法的执行主体示意图。
25.图2是本说明书第一个实施例中的sql语句风险检测方法的流程示意图。
26.图3是本说明书第一个实施例中的中间表示图示意图。
27.图4是本说明书第一个实施例中的函数调用图示意图。
28.图5是本说明书第一个实施例中的数据流转图示意图。
29.图6是本说明书第二个实施例中的sql语句风险检测装置的结构示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例的附图,对本说明书实施例的技术方案清楚、完整地进行描述。显然,本说明书所描述的实施例仅仅是本技术的部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
31.sql(structured query language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利。
32.然而,在传统的单一系统应用中,sql语句的调用仅能通过应用本身在系统内被触发,无法通过外部请求或外部调用触发,因此单一系统应用中sql语句的调用相对而言是可控的。正因如此,对于sql语句的风险检测长期被忽略。
33.并且,为了满足互联网业务规模、业务复杂性的增长,以及适应系统快速构建、部署的需要,传统的单一系统架构逐渐被微服务架构取代。微服务架构通常支持服务注册以及rpc(远程调用)。单个微服务应用可以在注册中心注册服务,并允许其他微服务应用通过rpc使用其对外暴露的接口触发相应的操作。这就使得,sql语句的调用不仅可以在本应用中被触发,同时也可以通过本应用对外暴露的rpc接口被外部应用随时触发。可见,由于微服务系统中存在对外暴露的接口,sql语句的调用变得不可控,sql语句的风险可能伴随着对外暴露的接口一起暴露给客户端。
34.特别的,有的sql语句具有删除数据库中的数据表或数据表的数据的功能。这种
sql语句一旦被不当调用,可能导致数据表或数据表中部分或全部数据被删除,数据库将无法响应对数据表的数据查询请求,严重影响数据库中所存储数据的安全性及完整性,也会对数据表所关联应用的稳定性及可靠性造成严重威胁。
35.另外,现有技术中,对sql语句的检测通常限于检测sql语句的语法及sql植入等常见问题,并不能对sql语句的数据表数据删除功能进行检测。
36.本说明书第一个实施例(以下简称“实施例一”)提供了一种sql语句风险检测方法,实施例一的执行主体可以是终端(包括但不限于手机、计算机、pad、电视)或者服务器或者操作系统或者应用程序或者sql语句风险检测平台或者sql语句风险检测系统等,即执行主体可以是多种多样的,可以根据需要设置、使用或者变换执行主体。另外,也可以有第三方应用程序协助所述执行主体执行实施例一。例如图1所示,可以由服务器来执行实施例一中的sql语句风险检测方法,并且可以在(用户所持有的)终端上安装(与所述服务器)相对应的应用程序,终端或应用程序与服务器之间可以进行数据传输,通过终端或应用程序来进行数据的采集或输入或输出或(向用户)进行页面或信息处理,从而辅助服务器执行实施例一中的sql语句风险检测方法。
37.如图2所示,实施例一提供的sql语句风险检测方法包括:
38.s01:(执行主体)获取目标对象对应的二进制文件,判断所述二进制文件是否包含对预设操作的调用;其中,所述预设操作是删除数据表或删除数据表中的数据的操作;
39.实施例一中,所述目标对象可以是各种各样的应用程序(包括但不限于小程序、微服务应用程序)。
40.实施例一的执行主体可以通过合适的方式获取目标对象对应的二进制文件。其中,用户可以将目标对象对应的二进制文件导入实施例一的执行主体,或者实施例一的执行主体可以根据用户操作从自身或其他主体处获取目标对象对应的二进制文件,或者用户可以通过其他主体将目标对象对应的二进制文件发送给实施例一的执行主体。
41.一般来说,所述二进制文件是可被计算机执行,用以提供所述目标对象的功能的文件。其中,所述二进制文件可以是源代码或安装包或jar包等。
42.获取目标对象对应的二进制文件后,实施例一的执行主体可以判断所述二进制文件是否包含对预设操作的调用。其中,所述预设操作可以是删除数据表或删除数据表中的数据的操作。
43.实施例一中,所述数据表是数据存储的常见形式,是构成数据库的基本元素,数据表的定义可以参照现有技术。
44.实施例一中,判断所述二进制文件是否包含对预设操作的调用,可以包括:
45.s011:判断所述二进制文件是否包含对目标sql语句的调用;其中,所述目标sql语句为用于执行预设操作的sql语句;
46.实施例一的执行可以判断所述二进制文件是否包含对目标sql语句的调用,即判断所述二进制文件是否能够调用目标sql语句,所述目标sql语句为用于执行所述预设操作的sql语句。
47.实施例一中,判断所述二进制文件是否包含对目标sql语句的调用并不需要运行所述二进制文件,而是采用静态分析方式判断所述二进制文件是否包含对目标sql语句的调用。
48.实施例一中,判断所述二进制文件是否包含对目标sql语句的调用,可以包括:
49.s0111:判断所述二进制文件中的函数是否调用了目标sql语句;
50.实施例一中,判断所述二进制文件中的函数是否调用了目标sql语句,可以包括:对所述二进制文件中的任一函数,确定该函数对应的sql调用id(即所调用的sql语句的id);定位所述sql调用id对应的sql语句,根据所述sql调用id对应的sql语句是否为目标sql语句,判断所述二进制文件中的该函数是否调用了目标sql语句。即对所述二进制文件中的任一函,若“该函数对应的sql调用id”对应的sql语句为目标sql语句,则判断该函数调用了目标sql语句。
51.为了便于判断所述二进制文件中的函数是否调用了目标sql语句,也为了便于判断函数对应的sql调用id,实施例一中,判断所述二进制文件中的函数是否调用了目标sql语句,可以包括:(实施例一的执行主体)建立数据库调用模型,所述数据库调用模型用于表征所述二进制文件中的函数对sql语句的调用关系,即目标对象中存在的数据库调用情况;根据所述数据库调用模型判断所述二进制文件中的函数是否调用了目标sql语句(也可以判断函数对应的sql调用id)。
52.具体的,建立数据库调用模型可以包括:对所述二进制文件中所有的orm框架(例如ibatis,mybatis)相关的xml文件进行扫描,并对所述xml文件中包含的所有sql进行表字段建模,从而建立数据库调用模型。所述数据库调用模型包括下列的一项或多项:
53.所述二进制文件中所调用的sql语句的类型;
54.所述二进制文件中所调用的sql语句的sql调用id;
55.所述二进制文件中所调用的sql语句对应的数据库表信息;
56.所述二进制文件中所调用的sql语句对应的数据库字段信息;
57.所述二进制文件中所调用的sql语句对应的程序变量字段信息。
58.通过建立数据库调用模型,可以建立所述二进制文件中“对sql语句的调用”与sql语句之间的关联,也就建立了所述二进制文件中的函数对sql语句的调用关系,以及sql中数据库字段和程序中的数据变量、字段之间的关联关系。例如,对于“getsqlmapclienttemplate().queryforobject("ms-load-user-details",param)”来说,通过数据库调用模型,识别出loaduserdetail函数调用了“ms-load-user-details”绑定的sql语句,并且还可以确定sql语句中传入的变量id,name,email这三个字段来源于loaduserdetail中的局部变量param,sql语句查询的结果将返回给符合条件的phone字段和address字段信息,并将信息封装在user类型的对象中返回给应用程序(即目标对象)。也就是说,通过数据库调用模型,可以获得函数对sql语句的调用关系,即确定函数调用了什么sql语句,也可以确定函数对应的sql调用id,进而判断函数是否调用了目标sql语句。
59.另外,实施例一的执行主体可以预先建立所述二进制文件的中间表示图,例如图3所示。中间表示图是应用程序源代码与目标代码之间的中间表示(即翻译的中介),通过中间表示图,可以将应用程序(即目标对象)中的知识/信息以及其他相关的程序行为和信息通过对应的算法以图(即节点和边)的形式进行表示,以便于抽象和理解程序行为,并可以直接在图上按序进行高效的指定分析及操作。实施例一中,可以借助中间表示图和静态程序分析来建立所述数据库调用模型。
60.实施例一中,若“该函数对应的sql调用id”对应的sql语句不是目标sql语句,则可
以通过函数间调用关系判断该函数间接调用了目标sql语句。即判断所述二进制文件中的函数是否调用了目标sql语句,还可以包括:(实施例一的执行主体)建立所述二进制文件中的函数间调用关系(即各函数间的相互调用关系);对所述二进制文件中的任一函数,根据所述函数间调用关系确定该函数的下级函数;其中,该函数的下级函数为该函数所调用的函数;
61.若该函数的下级函数调用了目标sql语句,则判断该函数调用了目标sql语句。也就是说,对所述二进制文件中的任一函数,由于该函数会调用其下级函数,而若该函数的下级函数调用了目标sql语句,则相当于该函数间接调用了目标sql语句。
62.实施例一中,建立所述二进制文件中的函数间调用关系,可以包括:建立所述二进制文件的中间表示图(如上述);基于所述中间表示图,结合静态程序分析算法建立所述二进制文件中的函数间调用关系。具体的,实施例一的执行主体可以基于中间表示图建立函数调用图(call graph,例如图4所示,图4中的节点“function”表示函数,节点之间的边代表调用关系或控制依赖关系),通过函数调用图,便于确定过程间分析(interprocedural analysis)的函数之间上下文调用关系,即函数间调用关系,从而获得更加精确的函数间调用分析结果。
63.中间表示图根据其结构可以分为线性ir(intermediate representation)、图ir和混合ir,实施例一中可以选择合适的中间表示图。
64.s0113:根据所述二进制文件中的函数是否调用了目标sql语句,判断所述二进制文件是否包含对目标sql语句的调用。
65.若所述二进制文件中有函数调用了目标sql语句,则判断所述二进制文件包含对目标sql语句的调用;或,若所述二进制文件中没有函数调用目标sql语句,则判断所述二进制文件不包含对目标sql语句的调用。
66.s013:根据所述二进制文件是否包含对目标sql语句的调用,判断所述二进制文件是否包含对预设操作的调用。
67.若所述二进制文件包含对目标sql语句的调用,则判断所述二进制文件包含对预设操作的调用;或,若所述二进制文件不包含对目标sql语句的调用,则判断所述二进制文件不包含对预设操作的调用。
68.s03:(执行主体)若所述二进制文件包含对预设操作的调用,则判断用于执行所述预设操作的sql语句是否存在条件约束语句;
69.若所述二进制文件包含对预设操作的调用,则实施例一的执行主体可以判断用于执行所述预设操作的sql语句(即目标sql语句)是否存在条件约束语句。
70.实施例一中,可以通过所述数据库调用模型确定sql语句之间的关联,进而判定任一目标sql语句是否存在条件约束语句。
71.s05:(执行主体)若用于执行所述预设操作的sql语句不存在条件约束语句,则判断所述sql语句存在风险。
72.对任一目标sql语句,若实施例一的执行主体判断该目标sql语句不存在条件约束语句,则实施例一的执行主体判断该目标sql语句存在风险。即若该目标sql语句没有条件约束语句,则该目标sql语句可能被(目标对象或其他应用程序)无约束调用,从而执行预设操作(包括执行删除数据表或数据表中的部分或全部数据的操作),即该目标sql语句存在
的风险是调用风险。若该目标sql语句是用于执行“删除数据表的操作”的sql语句,则该目标sql语句被无约束调用,可以导致数据表被删除;若该目标sql语句是用于执行“删除数据表中的数据的操作”的sql语句,则该目标sql语句被无约束调用,可以导致数据表中的数据(包括数据表中的全部数据)被删除。
73.若判断该目标sql语句存在条件约束语句,则实施例一的执行主体判断该目标sql语句的条件约束语句是否存在永真情况。若判断该目标sql语句的条件约束语句存在永真情况,则说明该目标sql语句仍然可以被无约束调用,从而产生上述无约束调用风险。
74.实施例一中,判断该目标sql语句的条件约束语句是否存在永真情况,可以包括:建立所述二进制文件中的数据流转关系,根据所述数据流转关系判断该目标sql语句的条件约束语句是否存在永真情况。
75.其中,根据所述数据流转关系判断该目标sql语句的条件约束语句是否存在永真情况,可以包括:根据所述数据流转关系,确定“该目标sql语句的条件约束语句”对应的数据库字段(在所述二进制文件中)的数据流转信息;根据所述数据流转信息判断所述数据库字段可能的赋值信息;根据所述赋值信息判断“该目标sql语句的条件约束语句”对应的数据库字段是否存在永真的赋值;根据“该目标sql语句的条件约束语句”对应的数据库字段是否存在永真的赋值,判断该目标sql语句的条件约束语句是否存在永真情况。即若该目标sql语句的条件约束语句存在永真的赋值,则判断该目标sql语句的条件约束语句存在永真情况;或,若该目标sql语句的条件约束语句不存在永真的赋值,则判断该目标sql语句的条件约束语句不存在永真情况。
76.实施例一中,建立所述二进制文件中的数据流转关系,可以包括:建立所述二进制文件的中间表示图(如上述);基于所述中间表示图建立所述二进制文件中的函数间调用关系(即函数调用图);基于所述函数间调用关系建立所述二进制文件中的数据流转关系。其中,实施例一的执行主体基于所述函数调用图生成数据流转图(如图5所示,示出了数据库字段x的流传过程),所述数据流转图包含字段、节点以及描述字段间数据传递关系的边(即数据依赖关系),通过数据流转图可以确定数据库字段的约束(constraints)。通过求解约束,可以确定出任一个数据库字段在所述二进制文件或目标对象中的数据流转情况,从而判断该数据库字段可能存在的赋值情况,进而判断是否存在永真的赋值(即1=1,a=a),即判断是否存在永真情况。
77.当然,也可以通过其他数据流分析算法,例如field-based算法建立所述数据流转图。
78.实施例一中,可以使用所述数据库调用模型补充函数调用图上数据库操作相关的db调用节点,同时也可以使用所述数据库调用模型数据流转换图上与db操作相关的数据流转。
79.实施例一中,对任一函数,若该函数调用(包括间接调用)了目标sql语句,则可以判断该目标所调用的目标sql语句是否存在条件约束语句;若该目标所调用的目标sql语句不存在条件约束语句,则该目标所调用的目标sql语句存在上述风险;若该目标所调用的目标sql语句存在条件约束语句,则判断该目标所调用的目标sql语句的条件约束语句是否存在永真情况;若该目标所调用的目标sql语句的条件约束语句存在永真情况,则该目标所调用的目标sql语句存在上述风险;或,若该目标所调用的目标sql语句的条件约束语句不存
在永真情况,则该目标所调用的目标sql语句不存在上述风险。
80.对任一目标sql语句,若判断该目标sql语句存在风险,则实施例一的执行主体可以对该目标sql语句进行定位和突出显示,并可以将调用该目标sql语句的函数进行定位和突出显示。
81.实施例一中,能够在不实际运行应用程序或目标对象或sql语句的情况下,通过语法分析、函数调用建模、字段数据流转等静态程序分析手段对二进制文件进行分析,以判断目标sql语句是否存在条件约束语句以及对条件约束语句是否可能永真进行求解,从而准确检测出sql语句存在的风险,提高sql语句风险检测效果和效率,保障数据库中存储的数据的安全性、完整性以及目标对象的可靠性和稳定性。基于此,上述所有内容中所述“调用”意指能够调用,并非实际已经调用,即不需要实际运行应用程序或目标对象或sql语句。
82.特别的,实施例一创造性地提出,针对sql语句是否存在删除数据表或删除数据表中数据(特别是删除数据表中全部数据)的风险进行检测,进一步提高风险检测效果和针对性。
83.sql语言和所述二进制文件中的语言(即程序语言,例如java语言)是不同语言,实施例一中通过数据库调用模型既能够基于程序语言分析和程序(或java)相关的数据调用和数据流转,又能够基于sql语言分析与sql相关的字段流转信息,进而将数据库调用模型用于建立数据流转图,所建立的数据流转图实现了sql语言和程序语言的跨越和融合,能够更全面、准确分析数据库字段在二进制文件和sql中的流转情况和赋值情况。
84.实施例一的执行主体可以是区块链节点,实施例一中所建立的中间表示图、函数调用建模以及函数调用图、数据流转图等可以经所述区块链共识后存储到实施例一的执行主体的各同区块链节点中,防止其在应用于sql语句的风险检测过程中被篡改,提高风险检测结果的可靠性。
85.如图6所示,本说明书第二个实施例提供一种与实施例一所述sql语句风险检测方法对应的sql语句风险检测装置,包括:
86.调用分析模块202,用于获取目标对象对应的二进制文件,判断所述二进制文件是否包含对预设操作的调用;其中,所述预设操作是删除数据表或删除数据表中的数据的操作;
87.约束分析模块204,用于若所述二进制文件包含对预设操作的调用,则判断用于执行所述预设操作的sql语句是否存在条件约束语句;
88.风险分析模块206,用于若用于执行所述预设操作的sql语句不存在条件约束语句,则判断所述sql语句存在风险。
89.可选的,所述约束分析模块204,用于若用于执行所述预设操作的sql语句存在条件约束语句,则判断所述条件约束语句是否存在永真情况;
90.所述风险分析模块206,用于若所述条件约束语句存在永真情况,则判断所述sql语句存在风险。
91.可选的,判断所述二进制文件是否包含对预设操作的调用,包括:
92.判断所述二进制文件是否包含对目标sql语句的调用;其中,所述目标sql语句为用于执行预设操作的sql语句;
93.根据所述二进制文件是否包含对目标sql语句的调用,判断所述二进制文件是否
包含对预设操作的调用。
94.可选的,判断所述二进制文件是否包含对目标sql语句的调用,包括:
95.判断所述二进制文件中的函数是否调用了目标sql语句;
96.根据所述二进制文件中的函数是否调用了目标sql语句,判断所述二进制文件是否包含对目标sql语句的调用。
97.可选的,判断所述二进制文件中的函数是否调用了目标sql语句,包括:
98.对所述二进制文件中的任一函数,确定该函数对应的sql调用id;
99.根据所述sql调用id对应的sql语句是否为目标sql语句,判断所述二进制文件中的该函数是否调用了目标sql语句。
100.可选的,判断所述二进制文件中的函数是否调用了目标sql语句,包括:
101.建立所述二进制文件对应的数据库调用模型,所述数据库调用模型用于表征所述二进制文件中的函数对sql语句的调用关系;
102.根据所述数据库调用模型判断所述二进制文件中的函数是否调用了目标sql语句。
103.可选的,所述数据库调用模型包括下列的一项或多项:
104.所述二进制文件中所调用的sql语句的类型;
105.所述二进制文件中所调用的sql语句的sql调用id;
106.所述二进制文件中所调用的sql语句对应的数据库表信息;
107.所述二进制文件中所调用的sql语句对应的数据库字段信息;
108.所述二进制文件中所调用的sql语句对应的程序变量字段信息。
109.可选的,判断所述二进制文件中的函数是否调用了目标sql语句,还包括:
110.建立所述二进制文件中的函数间调用关系;
111.对所述二进制文件中的任一函数,根据所述函数间调用关系确定该函数的下级函数;其中,该函数的下级函数为该函数所调用的函数;
112.若该函数的下级函数调用了目标sql语句,则判断该函数调用了目标sql语句。
113.可选的,建立所述二进制文件中的函数间调用关系,包括:
114.建立所述二进制文件的中间表示图;
115.基于所述中间表示图建立所述二进制文件中的函数间调用关系。
116.可选的,判断所述条件约束语句是否存在永真情况,包括:
117.建立所述二进制文件中的数据流转关系,根据所述数据流转关系判断所述条件约束语句是否存在永真情况。
118.可选的,根据所述数据流转关系判断所述条件约束语句是否存在永真情况,包括:
119.根据所述数据流转关系,确定所述条件约束语句对应的数据库字段的数据流转信息;
120.根据所述数据流转信息判断所述数据库字段可能的赋值信息;
121.根据所述赋值信息判断所述数据库字段是否存在永真的赋值;
122.根据所述数据库字段是否存在永真的赋值,判断所述条件约束语句是否存在永真情况。
123.可选的,建立所述二进制文件中的数据流转关系,包括:
124.建立所述二进制文件的中间表示图;
125.基于所述中间表示图建立所述二进制文件中的函数间调用关系;
126.基于所述函数间调用关系建立所述二进制文件中的数据流转关系。
127.可选的,所述sql语句存在的风险为调用风险。
128.可选的,所述风险分析模块206,用于若判断所述sql语句存在风险,则对存在风险的sql语句进行定位和突出显示。
129.本说明书第三个实施例提供一种sql语句风险检测设备,包括:
130.至少一个处理器;
131.以及,
132.与所述至少一个处理器通信连接的存储器;
133.其中,
134.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行实施例一所述的sql语句风险检测方法。
135.本说明书第四个实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现实施例一所述的sql语句风险检测方法。
136.上述各实施例可以结合使用,不同实施例之间或同一实施例内的名称相同的模块可以是相同或不同的模块。
137.上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
138.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
139.本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
140.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作
专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
141.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
142.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
143.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
144.本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
145.本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用
于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
146.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
147.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
148.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
149.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
150.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
151.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
152.本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
153.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
154.以上所述仅为本说明书实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同
替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献