执行语句的识别方法及装置与流程

文档序号:29466678发布日期:2022-04-02 03:34阅读:91来源:国知局
1.本技术涉及互联网运维领域,具体而言,涉及一种执行语句的识别方法及装置。
背景技术
::2.结构化查询语言(structuredquerylanguage,sql),是一种数据库查询和程序设计语言,是目前使用最广泛的关系型数据库操作语言。在数据库管理系统中,使用sql语言来实现数据的存取、查询、更新等功能。sql是一种非过程性语言,只需要提出“做什么”,而不需要指明“怎么做”。3.慢sql语句就是查询慢的sql语句,是指mysql记录所有执行超过long_query_time参数设定的时长阈值的sql语句的日志。该日志能为sql语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。long_query_time的默认值是10,意思是运行10s之上的数据。4.在实际的生产场景中,数据库sql语句在适应不同业务或者不同使用者时产生了千变万化的种类,这其中部分会产生慢sql现象,该现象可能会频繁地进行i/o操作进而长时间地占用cpu,成为产生数据库故障的诱因。5.针对上述由于慢sql语句会频繁地进行i/o操作进而长时间地占用cpu造成数据库故障的问题,目前尚未提出有效的解决方案。技术实现要素:6.本技术实施例提供了一种执行语句的识别方法及装置,以至少解决由于慢sql语句会频繁地进行i/o操作进而长时间地占用cpu造成数据库故障的技术问题。7.根据本技术实施例的一个方面,提供了一种执行语句的识别方法,包括:获取待预测执行语句;将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;比较执行时长与预设时长;依据比较结果确定待预测执行语句是否为目标执行语句。8.可选地,将待预测执行语句输入至神经网络模型进行预测之前,所述方法还包括:获取多个历史执行语句的信息,其中,信息包括:多个历史执行语句和多个历史执行语句的执行时长;根据信息构造多个目标矩阵;将多个目标矩阵和多个历史执行语句的执行时长输入至神经网络模型进行训练,得到训练好的神经网络模型。9.可选地,根据信息构造多个目标矩阵,包括:获取历史执行语句的执行计划信息,并将执行计划信息构造为第一矩阵;将历史执行语句转换为树形结构,并依据树形结构构造第二矩阵;将第一矩阵和第二矩阵合并为目标矩阵。10.可选地,将历史执行语句转换为树形结构,并依据树形结构构造第二矩阵,包括:将历史执行语句转换为树形结构;按照前序遍历算法遍历树形结构,生成结果集;依据结果集构造第二矩阵。11.可选地,将第一矩阵和第二矩阵合并为目标矩阵,包括:将第一矩阵进行转置处理,得到第三矩阵;将第二矩阵和第三矩阵进行拼接,得到目标矩阵。12.可选地,将多个目标矩阵和多个历史执行语句的执行时长输入至神经网络模型进行训练,得到训练好的神经网络模型,包括:将多个目标矩阵按照预设比例进行随机组合,得到训练集和测试集;将训练集和测试集输入神经网络模型进行预测,得到训练好的神经网络模型。13.可选地,依据比较结果确定待预测执行语句是否为目标执行语句,包括:在待预测执行语句的执行时长大于或等于预设时长的情况下,将待预测执行语句确定为目标执行语句;在待预测执行语句的执行时长小于预设时长的情况下,确定待预测执行语句不是目标执行语句。14.根据本技术实施例的另一方面,还提供了一种执行语句的识别装置,包括:获取模块,用于获取待预测执行语句;预测模块,用于将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;比较模块,用于比较执行时长与预设时长;确定模块,用于依据比较结果确定待预测执行语句是否为目标执行语句。15.根据本技术实施例的再一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的执行语句的识别方法。16.根据本技术实施例的再一方面,还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的执行语句的识别方法。17.在本技术实施例中,采用获取待预测执行语句;将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;比较执行时长与预设时长;依据比较结果确定待预测执行语句是否为目标执行语句的方式,通过构建神经网络模型来预测sql语句的执行时长,达到了识别慢sql语句的目的,从而实现了界定不同情况下的慢sql场景、准确识别慢sql场景、提升数据库的运维能力的技术效果,进而解决了由于慢sql语句会频繁地进行i/o操作进而长时间地占用cpu造成数据库故障技术问题。附图说明18.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:19.图1是根据本技术实施例的一种用于实现执行语句的识别方法的计算机终端(或移动设备)的硬件结构框图;20.图2是根据本技术实施例的一种执行语句的识别方法的流程图;21.图3是根据本技术实施例的一种可选的神经网络模型的构建方法的示意图;22.图4根据本技术实施例的一种可选的树形结构的示意图;23.图5是根据本技术实施例的一种可选的神经网络模型的结构示意图;24.图6是根据本技术实施例的一种执行语句的识别装置的结构框图。具体实施方式25.为了使本
技术领域
:的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。26.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。27.现有的对慢sql问题处理的主要方法是围绕系统中运行的慢sql语句进行查找识别或运行后判定,这样存在以下问题:28.1)需要使用数据库管理方法检索正在执行中的sql语句,检索和判定过程花费较长时间,耗费人力和系统资源。29.2)采用传统的语句识别需要一定量的慢sql样本。30.另一种方案虽然设计了慢sql语句的识别方法,以及预测查询时间的方法,但依然存在以下不足:31.1)该方案识别慢sql的方式为根据历史已有的慢sql语句,来计算当前语句和历史语句特征的相似度,这样需要已有的一定量历史慢sql样本,如果样本过少会使结果不准确。32.2)需要建立一个历史慢sql库,建立该库已经意味着大量的慢sql语句形成,代价是无形中也给数据库造成故障的几率提升。33.3)历史慢sql库中的慢sql时间界定定义问题。例如历史慢sql库中的慢sql语句界限为执行时间超过10s,但如果有一定需求在该业务下想调整为判定超过5s为慢sql,则慢sql库出现不适用问题。34.4)利用语句特征的相似度,存在一定情况下的误判。采用一般预测的编码方式,预测不够准确。例如sql语句1解构为“查询a表条件b”,该sql语句已知为一条慢sql语句,待识别的语句为“查询a~表条件b”,这两条语句条件相同,查询方法相同,并且查询表名略相似,则相似度达到阈值,但如果仅仅是由于a表表设计结构的问题(例如无索引),但b表表结构正常,则待识别语句可能不是一条慢sql语句,这样造成了判定失误。35.鉴于此,本发明提出了一种基于神经网络的利用组合编码方式的慢sql语句预测方法,在预测前的编码方式上做了革新,来直接预测sql语句的执行时间是否大于某限定值,大于则为慢sql语句,小于则为否。本发明不需要大量慢sql样本,并且从最直观的时间角度入手预测,更有效地提升了慢sql预测的准确性;并且本发明相比传统的对比识别方法,有了一定的可扩展性,可以调整不同场景下的限定值重新界定不同情况下的慢sql场景;本发明重点在于对于其他sql类预测的技术中,采用了新型的组合编码方式。36.本技术实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现执行语句的识别方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为bus总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。37.应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本技术实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。38.存储器104可用于存储应用软件的软件程序以及模块,如本技术实施例中的执行语句的识别方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。39.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。40.显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。41.根据本技术实施例,提供了一种执行语句的识别方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。42.图2是根据本技术实施例的一种执行语句的识别方法的流程图,如图2所示,该方法包括如下步骤:43.步骤s202,获取待预测执行语句;44.对于不同的待预测执行语句,可反复使用该编码方式来提供结果,用于提供神经网络的输入。45.步骤s204,将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;46.步骤s206,比较执行时长与预设时长;47.步骤s208,依据比较结果确定待预测执行语句是否为目标执行语句。48.通过上述步骤,通过构建神经网络模型来预测sql语句的执行时长,达到了识别慢sql语句的目的,从而实现了界定不同情况下的慢sql场景、准确识别慢sql场景、提升数据库的运维能力的技术效果。49.根据本技术的一个可选的实施例,执行步骤s204将待预测执行语句输入至神经网络模型进行预测之前,所述方法还包括:获取多个历史执行语句的信息,其中,信息包括:多个历史执行语句和多个历史执行语句的执行时长;根据信息构造多个目标矩阵;将多个目标矩阵和多个历史执行语句的执行时长输入至神经网络模型进行训练,得到训练好的神经网络模型。50.首先从数据库全量查询历史中获取历史执行语句的信息,包括历史执行语句及其执行时间。然后根据信息构造多个目标矩阵,将得到的最终矩阵作为输入,时间作为标签,可输入神经网络模型训练,得到训练好的神经网络模型。51.将该矩阵用在神经网络的输入中,以时间为输出标签,所得到的预测效果好于其他编码方式,求出的时间精度更高,用于神经网络能够充分提取编码的特征,较为精准地预测sql的执行时间。52.根据本技术的另一个可选的实施例,根据信息构造多个目标矩阵,包括:获取历史执行语句的执行计划信息,并将执行计划信息构造为第一矩阵;将历史执行语句转换为树形结构,并依据树形结构构造第二矩阵;将第一矩阵和第二矩阵合并为目标矩阵。53.可选地,执行计划信息即explain结果,第一矩阵为8*n矩阵,第二矩阵为m*8矩阵。explain结果用于分析某条sql语句的执行过程和执行效率,即执行计划信息。首先获取语句的explain结果,并构造8*n矩阵;然后将sql语句转化为解析树,并构造m*8矩阵,最后合并两个矩阵,得到(m+n)*8矩阵,该步骤的示意图如图3所示。54.从数据库历史查询记录中获取历史执行语句的explain结果及时间,例如:语句selectoffer_idfromofferwhereoffer_name=‘作废’,查询时间为0.025s,该语句的explain结果如下表。[0055][0056]通过在数据库执行语句前增加explain关键字,得到explain结果。该结果反映了sql语句执行的具体细节,结果为一个10列的表格,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、extra。将原始数据中执行语句构造为sql解析数,例如语句:selectoffer_idfromofferwhereoffer_name=‘作废’,其中select,from,where这些均为sql中的关键词,offer是源表,offer_name,‘作废’这些为条件,offer_id为查询的列,则可构造为树,如图4所示。[0057]矩阵的第一行为id的权重值的二进制结果,权重值计算方法为所有id值乘以id值对应的个数(表示为cnt(id)),然后最终的和,即:[0058][0059]第二行为select_type编码结果,编码方式为one-hot位值对应,方式如下表:[0060][0061]第三行为type,编码方式类似select_type,见下表:[0062]allindexrangerefeq_refconstsystemnull1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1ꢀꢀꢀꢀꢀꢀꢀꢀ1[0063]第四行为possible_keys的种类个数的二进制结果,相同索引为一种;[0064]第五行为键的种类总和,方法同第四行;[0065]第六行为索引字节数之和的二进制结果,即(sum(key_len))b;[0066]第七行为ref种类总和的二进制结果;[0067]第八行为所有rows值的总和二进制结果。[0068]经过以上步骤最终形成的矩阵为:[0069][0070]根据本技术的再一个可选的实施例,将历史执行语句转换为树形结构,并依据树形结构构造第二矩阵,包括:将历史执行语句转换为树形结构;按照前序遍历算法遍历树形结构,生成结果集;依据结果集构造第二矩阵。[0071]sql解析树即采用语法分析,把sql语句解析为一颗语法树,然后再按照语法的转换规则把sql语句转换到sqlserver上可执行的语句,实现不同数据库平台的转换。前序遍历算法即二叉树遍历的一种,首先访问根节点然后遍历左子树,最后遍历右子树。[0072]将历史执行语句构造为sql解析树,对该树进行前序遍历,遍历后按照指定位结果再构造为m*8矩阵。将sql语句构造为sql解析树,是数据库系统实现中sql进行编译的一个步骤,这个步骤将sql语句转换成一定结构的树,对该树进行前序遍历可生成一个结果集,再将该结果集以一定方式构建为m*8的矩阵,构建方式如下:[0073]第一列取基础动作的操作类型指定位,例如query,create,delete等,操作类型和位数对应关系如下表:[0074]querycreateupdatedelete1ꢀꢀꢀꢀ1ꢀꢀꢀꢀ1ꢀꢀꢀꢀ1[0075]第二列为所有关键字个数的二进制,同一类不能合并为一个;[0076]第三列为sellist和的二进制结果;[0077]第四列为fromlist和的二进制结果;[0078]第五列为用于条件判断的列名种类总和二进制结果;[0079]第六列为用于条件判断的条件个数,例如大于、小于、等于的条件个数,同一类不能合并为一个;[0080]第七列为用于条件的具体判断值的个数,例如where关键字后对列名的判断值;[0081]第八列为结果集中所有元素的个数。[0082]例如,将上述得到的树进行前序遍历,形成结果集:{query,select,sellist:1,attribute,offer_id,from,fromlist:1,relation,offer,where,equals,attribute,name,‘=’,attribute_literal,’作废’},然后矩阵的构建方式为:[0083]第一列取结果集中基础动作的操作类型指定位,二进制结果作为首列,上例中query为1,操作类型和位数对应关系见下表:[0084]querycreateupdatedelete1ꢀꢀꢀꢀ1ꢀꢀꢀꢀ1ꢀꢀꢀꢀ1[0085]第二列为结果集中所有关键字个数的二进制,上述结果为select,from,where3个;[0086]第三列为结果集中sellist和的二进制结果,上述为1;[0087]第四列为结果集中fromlist和的二进制结果,上述为1;[0088]第五列为结果集中用于条件判断的列名种类总和二进制结果,仅有一个offer_name,所以为1;[0089]第六列为结果集中用于条件判断的条件个数,例如大于,小于,等于的条件个数,同一类不能合并为一个,上述为‘=’,所以为1;[0090]第七列为结果集中用于条件的具体判断值的个数,例如where关键字后对列名的判断值,上述仅有‘作废’一个,所以为1;[0091]第八列为结果集中所有元素的个数,上述为16。[0092]经过以上步骤最终形成的矩阵为:[0093][0094]在本技术的一些可选的实施例中,将第一矩阵和第二矩阵合并为目标矩阵,包括:将第一矩阵进行转置处理,得到第三矩阵;将第二矩阵和第三矩阵进行拼接,得到目标矩阵。[0095]将上述得到的n*8矩阵和m*8矩阵进行合并,通过将n*8矩阵进行转置处理再和m*8矩阵进行拼接,最后得到矩阵(m+n)*8,即为最终得到的输入矩阵。该矩阵可作为输入层结果,对应运行时间作为标签,可输入神经网络模型进行训练。[0096]在本技术的另一些可选的实施例中,将多个目标矩阵和多个历史执行语句的执行时长输入至神经网络模型进行训练,得到训练好的神经网络模型,包括:将多个目标矩阵按照预设比例进行随机组合,得到训练集和测试集;将训练集和测试集输入神经网络模型进行预测,得到训练好的神经网络模型。[0097]不断重复以上步骤,可获得大量目标矩阵数据集,随机打乱后可按一定比例作为训练集和测试集,不断输入神经网络训练,得到训练好的神经网络模型,如图5所示。然后输入待预测执行语句,可以输出运行时间,完成对sql语句的执行时间的预测。神经网络模型的输入层,隐层,输出层的结构可自行调整,隐层和输出层选用相应激活函数。[0098]根据本技术的一个可选的实施例,执行步骤s208依据比较结果确定待预测执行语句是否为目标执行语句,包括:在待预测执行语句的执行时长大于或等于预设时长的情况下,将待预测执行语句确定为目标执行语句;在待预测执行语句的执行时长小于预设时长的情况下,确定待预测执行语句不是目标执行语句。[0099]将得到的结果与定义的慢sql阈值对比,完成慢sql识别。[0100]本技术使用的执行语句的识别方法,可以以最终结果的均方误差(meamsquareerror,mse)作为评价指标,比较5个例句下的效果。与使用普通的单explain结果编码、单语法树编码、以及其他方案的对比如下:[0101][0102]由此可见,本技术相对于其他单一或传统的编码方式,有着较为精准的预测效果,更能准确识别慢sql场景。[0103]本发明是一种采用组合编码技术的来预测进而识别数据库中慢sql语句的方法,可通过预测sql语句执行时间的神经网络输入数据,提高判别慢sql的准确性。本技术基于神经网络,并利用组合编码方式实现慢sql语句预测并识别,在预测前的编码方式上做了革新,来直接预测sql语句的执行时间是否大于某限定值。本技术不需要慢sql样本,并且从最直观的时间角度入手预测,更有效地提升了慢sql预测的准确性;相比传统的对比识别方法,有了一定的可扩展性,可以界定不同情况下的慢sql场景;在编码上采用了组合编码方式,用于神经网络时,所得到的结果更加准确,更接近真实值;从语句执行时间维度入手,相比其他特征方法更加直观,更易于判断。[0104]图6是根据本技术的一种执行语句的识别装置的结构框图,如图6所示,该装置包括:[0105]获取模块60,用于获取待预测执行语句;[0106]预测模块62,用于将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;[0107]比较模块64,用于比较执行时长与预设时长;[0108]确定模块66,用于依据比较结果确定待预测执行语句是否为目标执行语句。[0109]使用本技术的组合编码方式,相对于其他单一或传统的编码方式,有着较为精准的预测效果,从最直观的时间角度入手预测,更有效地提升了慢sql识别的准确性,更能准确识别慢sql场景提升数据库运维效能。本技术可以加入到当前数据库系统运维的管理方法中,提前精准识别慢sql,降低数据库故障发生几率,提升运维能力;也可以和预警类系统结合,在慢sql语句执行之前,以告警等方式阻断大量慢sql语句的执行。[0110]需要说明的是图6所示实施例的优选实施方式可以参见图2所示实施例的相关描述,此处不再赘述。[0111]根据本技术实施例的再一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的执行语句的识别方法。[0112]上述非易失性存储介质用于存储执行以下功能的程序:获取待预测执行语句;将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;比较执行时长与预设时长;依据比较结果确定待预测执行语句是否为目标执行语句。[0113]本技术实施例还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的执行语句的识别方法。[0114]上述处理器用于运行执行以下功能的程序:获取待预测执行语句;将待预测执行语句输入至神经网络模型进行预测,得到待预测执行语句的执行时长;比较执行时长与预设时长;依据比较结果确定待预测执行语句是否为目标执行语句。[0115]上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。[0116]在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。[0117]在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。[0118]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0119]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0120]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。[0121]以上所述仅是本技术的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1