一种pptl规范挖掘系统和方法

文档序号:1952074 发布日期:2021-12-10 浏览:30次 >En<

阅读说明:本技术 一种pptl规范挖掘系统和方法 (PPTL (Power Point Label) standard mining system and method ) 是由 张南 宁新亚 段振华 田聪 王小兵 赵亮 陆旭 于斌 于 2021-08-14 设计创作,主要内容包括:本发明属于计算机程序设计语言及应用技术领域,公开了一种PPTL规范挖掘系统和方法,所述PPTL规范挖掘系统,包括Trace生成模块、Trace解析模块、PPTL-LNFG转换模块、LNFG实例化模块、LNFG检测模块和挖掘结果返回模块。本发明利用完全正则的PPTL形式化待挖掘的性质,将PPTL一次性转为LNFG从而减少时间的浪费,再用类似广度优先遍历的方式将trace中的事件与LNFG边上的PPTL状态公式进行对比,从而挖掘出满足程序执行trace的规范,且减少出现内存崩溃的情况,很好地解决了现有技术挖掘规范时由于重复将相同或类似的PPTL转为NF而导致挖掘时间过长的问题。(The invention belongs to the technical field of computer programming language and application, and discloses a PPTL specification mining system and method. The invention utilizes the completely regular PPTL formalization to-be-excavated property, converts the PPTL into the LNFG at one time so as to reduce the waste of time, compares the event in the trace with the PPTL state formula on the LNFG side in a similar breadth-first traversal mode, thereby excavating the specification meeting the program execution trace, reducing the occurrence of memory collapse and well solving the problem of overlong excavation time caused by repeatedly converting the same or similar PPTL into NF in the prior art when excavating the specification.)

一种PPTL规范挖掘系统和方法

技术领域

本发明属于计算机程序设计语言及应用技术领域,尤其涉及一种PPTL规范挖掘系统和方法。

背景技术

目前,软件系统规范是系统需求的形式化描述。规范可以通过捕获程序中的重要特征来帮助人们更好地理解软件功能,提高软件的可维护性。规范还可用于测试和验证,以提高软件系统的正确性和可靠性。然而,由于种种原因,很多软件系统缺乏形式化规范,特别是对于大多数遗产legacy软件系统,这使得软件的维护变得困难。由于程序的复杂性,程序开发语言种类的多样性,以及程序部署、运行的困难性等原因,使得从程序中挖掘规范非常困难的。为解决这个问题,目前关于程序时序行为的说明和推理已经得到广泛关注,其中,基于动态分析的规范挖掘方法是通过挖掘由程序生成的一组轨迹trace,以推导出程序、API或软件的其它方面可能的时序规范。

目前大多数规范挖掘方法使用线性时序逻辑(Linear Temporal Logic,LTL)和计算树逻辑(Computation Tree Logic,CTL)作为性质描述语言。由于LTL和CTL表达能力的限制,一些复杂的时序性质如周期性重复性不能被很好地表示。命题投影时序逻辑(Propositional Projection Temporal Logic,PPTL)具有完全正则表达能力,除了LTL和CTL能够形式化的时序性质之外,PPTL还能够描述另外两种性质:区间相关性质和周期性重复性质。基于模式库的PPTL规范挖掘算法和工具PPTLMiner很好地解决了LTL和CTL表达能力有限的问题,但是,当模式中原子命题和trace中事件个数过多时,会出现检测时递归过深从而导致时间过长或内存崩溃的问题。因此亟待开发出一种既能解决LTL和CTL表达能力的限制又能解决递归过深的规范挖掘系统并提出对应解决方法。

通过上述分析,现有技术存在的问题及缺陷为:

(1)现有软件系统缺乏形式化规范,特别是对于大多数遗产legacy软件系统,这使得软件的维护变得困难。

(2)由于程序的复杂性,程序开发语言种类的多样性,以及程序部署、运行的困难性等原因,使得从程序中挖掘规范非常困难的。

(3)由于LTL和CTL表达能力的限制,一些复杂的时序性质如周期性重复性不能被很好地表示。

(4)当模式中原子命题和trace中事件个数过多时,基于模式库的PPTL规范挖掘算法和工具PPTLMiner会出现检测时递归过深从而导致时间过长或内存崩溃的问题。

解决以上问题及缺陷的难度为:解决LTL和CTL表达能力限制的解决方法是用PPTL来形式化待挖掘的性质,但是基于模式库的PPTL规范挖掘存在递归过深的不足,容易出现trace检测次数爆炸的问题,甚至出现内存崩溃无法挖掘出规范的严重后果,因此需要进一步提高程序的执行效率。

解决以上问题及缺陷的意义为:基于LNFG的PPTL规范挖掘在解决LTL和CTL表达能力限制的基础上,在PPTL公式中原子命题过多和trace中事件个数过多时,大大减少出现时间过长和内存崩溃的情况,在实际应用中更具实用性和有效性。

发明内容

针对现有技术存在的问题,本发明提供了一种PPTL规范挖掘系统和方法,尤其涉及一种基于LNFG(LabeledNormal Form Graph)的PPTL规范挖掘系统、方法、设备及终端,旨在解决现有技术进行规范挖掘时出现的时间过长、内存崩溃的问题。

本发明是这样实现的,一种PPTL规范挖掘系统,所述PPTL规范挖掘系统,包括Trace生成模块、Trace解析模块、PPTL_LNFG转换模块、LNFG实例化模块、LNFG检测模块和挖掘结果返回模块。

其中,所述Trace生成模块,用于生成待挖掘规范的trace文件;

所述Trace解析模块,用于生成trace文件中的事件集Events;

所述PPTL_LNFG转换模块,用于生成PPTL公式对应的LNFG形式;

所述LNFG实例化模块,用于通过将事件集中的事件替换LNFG中的原子命题实现LNFG的实例化;

所述LNFG检测模块,用于通过检测trace文件和实例化后的LNFG实现挖掘满足trace的PPTL实例;

所述挖掘结果返回模块,用于返回PPTL实例及其置信度。

进一步,所述Trace生成模块由动态不变量生成子模块和trace过滤子模块组成;

其中,所述动态不变量生成子模块由Daikon实现,输入是用C/C++、Java、C#、Eiffel、Perl和Visual Basic在内的语言编写的可执行程序,输出是包含程序中API、方法调用、全局/局部变量、方法返回值的dtrace文件,dtrace文件体现程序行为;

所述trace过滤子模块由DTraceFilter实现,输入是Daikon输出的dtrace文件,输出是仅含方法调用序列的trace;

通过多次将可执行程序输入Trace生成模块,最终生成包含多条trace的trace文件,且相邻trace之间用分隔符分割,分隔符支持用户自定义。

本发明的另一目的在于提供一种应用所述的PPTL规范挖掘系统的PPTL规范挖掘方法,所述PPTL规范挖掘方法,包括:用PPTL公式形式化待挖掘的性质,将PPTL公式转为对应的LNFG形式,用类似广度优先遍历的方式对trace和LNFG进行检测,从而挖掘出满足trace的PPTL实例。

所述PPTL规范挖掘方法,还包括以下步骤:

步骤一,将待挖掘的可执行程序输入Trace生成模块,输出一个仅包含程序中方法调用的函数序列,即trace文件,trace文件体现程序中方法调用行为,且用作LNFG检测模块的一个输入;

步骤二,将trace文件输入Trace解析模块,输出一个包含trace中所有出现的事件的集合Events,并将方法调用抽象为事件,Events用于后续LNFG实例化模块的输入;

步骤三,将用户选择的待挖掘的一个PPTL公式P输入PPTL_LNFG转换模块,输出P对应的LNFG形式,LNFG用于后续LNFG实例化模块的一个输入,并用邻接链表存储LNFG以提高内存利用率;

步骤四,将步骤二输出的事件集Events和步骤三输出的LNFG同时输入LNFG实例化模块,输出用邻接链表保存的实例化的LNFG,实例化的LNFG用作LNFG检测模块的一个输入;

步骤五,将步骤一输出的trace和步骤四输出的实例化的LNFG同时输入LNFG检测模块,输出表示PPTL是否满足此条trace的布尔变量,布尔变量用作后续规范挖掘返回模块中置信度计算的依据;

步骤六,重复执行步骤五直至所有实例化的LNFG均完成与trace文件的检测,计算每个实例化的PPTL实例满足trace文件的置信度并返回。

进一步,步骤二中,将trace文件输入Trace解析模块,输出事件集合Events,Trace解析模块通过遍历trace文件中所有trace的事件,提取中所有出现在trace文件中的事件集合Events,即提取程序执行过程中用到的所有方法调用函数的集合。

进一步,步骤三中,所述将用户选择的待挖掘的一个PPTL公式P输入PPTL_LNFG转换模块,输出P对应的LNFG形式,用邻接链表进行存储,包括:

所述PPTL_LNFG转换模块先将PPTL公式转化为对应的NF形式,再转为LNFG形式,一个PPTL公式P的LNFG形式是一个有向图G=(CL(P),EL(P),V0,L={Li,…,Lm}),其中CL(P)表示图G的结点集合,每一个结点对应一个PPTL公式,且为时序公式,EL(P)表示图G的边集,每条边对应一个PPTL公式,且为状态公式,每一条边表示两个结点间的迁移条件,V0表示图G的初始结点的集合,L表示图G中结点的标记集合;由于基于LNFG的PPTL规范挖掘方法对处于结点的PPTL公式不感兴趣,仅仅应用其边上的PPTL公式,故将LNFG中的结点用非负整数唯一标识,即进行匿名化从而节省存储空间;采用邻接链表数据结构来存储LNFG,其中头结点的数据域为当前结点匿名化后的编号,表示当前状态,邻接点域表示当前结点经过PPTL公式后的下一结点匿名化后的编号,表示下一状态,边结点的权值域存储PPTL公式的语法树,表示迁移条件。

进一步,步骤四中,所述将事件集Events和LNFG同时输入LNFG实例化模块,输出用邻接链表保存的实例化的LNFG,包括:

初始化一个实例池,即构造A(m,n)个(atomic,event)映射,其中A(m,n)=m!/(m-n)!,m=|Events|,n=|Atomic_set|,atomic∈Atomic_set,event∈Events;实例化池生成一个迭代装载器iteration_tracker,iteration_tracker存储n个三元组(mapfrom,switchvar,mapto),其中第i个三元组的mapfrom为原子命题集Atomic_set中第i个原子命题,mapto指向事件集Events中的第j个事件且0≤j≤m-1,witchvar(i)为第i个原子命题的mapto映射为下一事件的步长,且witchvar(i)=mn-1-i,0≤i≤n-1;由于原子命题集中的原子命题各不相同,故原子命题的mapto不能指向同一事件;初始化实例池后,每次实例化选取其中一对(atomic,event)映射,遍历LNFG中的每个边结点,并将权值域中PPTL语法树的原子命题atomic替换为对应的event。

进一步,步骤五中,所述将trace和实例化的LNFG同时输入LNFG检测模块,输出表示PPTL是否满足此条trace的布尔变量,包括:

所述LNFG检测模块通过类似广度优先遍历的方式实现trace和实例化的LNFG的检测,并返回表示PPTL是否满足此条trace的布尔变量。

所述LNFG检测模块由算法1:Check_Base_on_LNFG_BFS、算法2:State_Transition和算法3:State_Formula_Check_LNFG实现,用于检测trace是否满足G,其中trace是Trace生成模块输出的trace文件,G是采用邻接链表存储的实例化后的LNFG。

算法1:Check_Base_on_LNFG_BFS是PPTLMiner+检测算法的入口算法,通过输入一个实例化的LNFG(图G)和一条trace,输出一个表示当前trace是否满足LNFG的布尔变量b∈B={true,false};算法1先判断trace中是否还有当前事件,若没有当前事件时,即trace中仅含一个分隔符时,则判断当前状态集中是否含有终止状态ε;若含有ε则返回true,表示trace满足LNFG,反之则返回false;若trace中含有当前事件时,则通过调用算法2探测当前状态集的下一可达状态集,若没有下一可达状态集时,则返回false,反之则删去当前事件再次调用算法1。

算法2:State_Transition,用于输入当前状态集中的一个状态和一条trace,并通过算法3探测下一状态集中满足trace的下一可达状态集并返回算法1;若LNFG边结点中的PPTL状态公式或迁移条件满足当前事件,则将下一状态加入下一可达状态集中。

算法3:State_Formula_Check_LNFG,用于检测迁移条件是否与当前事件一致,由于状态公式只包含“∧、∨、p、true、false”操作符,故按照逻辑语义判断即可,其中p为原子命题;算法3根据当前输入的状态公式的根节点的类型进行判断,若根节点为“∧”,则先对左节点递归调用算法3,若返回值为true时,则对右节点递归调用算法3,反之则返回false;若根节点为“∨”时,则先对左节点递归调用算法3,若返回值为false时,则对右节点递归调用算法3,反之则返回true;若根节点为“p”,则判断原子命题是不是标记,若是则返回true,反之则与当前事件进行比较,若相同则表示下一状态为下一可达状态;若根节点为则对其子节点递归调用算法3并对其结果取反;若根节点为“true、false”时,则直接返回“true、false”即可。

进一步,步骤六中,所述计算每个实例化的PPTL实例满足trace文件的置信度并返回,包括:

所述挖掘结果返回模块根据表示检测trace是否满足G的布尔变量计算一个实例化后的LNFG满足trace文件的置信度confidence,若布尔变量为true,则support=support+1,且confidence=support/support_potential,其中support=|{trace|trace∈Traces,}|,support_potential=|Traces|;若布尔变量为false,则support=support;基于LNFG的PPTL规范挖掘方法将返回A(m,n)个实例化的PPTL公式及其置信度。

本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:

用PPTL公式形式化待挖掘的性质,将PPTL公式转为对应的LNFG形式,用类似广度优先遍历的方式对trace和LNFG进行检测,从而挖掘出满足trace的PPTL实例。

本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的PPTL规范挖掘系统。

结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的PPTL规范挖掘系统,用完全正则的PPTL形式化待挖掘的性质,将PPTL一次性转为LNFG从而减少时间的浪费,再用类似广度优先遍历的方式将trace中的事件与LNFG边上的PPTL状态公式进行对比,从而挖掘出满足程序执行trace的规范,且减少出现内存崩溃的情况。

本发明提供的基于LNFG的PPTL规范挖掘系统及方法,很好地解决了现有技术挖掘规范时由于重复将相同或类似的PPTL转为NF而导致挖掘时间多长的问题;很好地解决了现有技术挖掘规范时递归过深而造成内存崩溃的问题。本发明可以挖掘任意的用C/C++、Java、C#、Eiffel、Perl和Visual Basic等语言编写的可执行程序的规范,可以挖掘任意的用PPTL公式表示的规范。本发明将PPTL公式一次性转为LNFG来进行后续检测,而现有技术中会出现重复将相同或类似的PPTL转为NF的情况,这里的“相同”指同一个实例化的PPTL公式在与不同trace进行检测时,会重复转为NF,还指同一个实例化的PPTL公式与同一条trace进行检测时,中间过程会出现相同的PPTL公式转为NF,这里的“类似”指相同的PPTL公式经过实例化后与trace集检测时,会出现类似的转为NF的过程,只不过NF中原子命题对应的事件不同而已,这也是造成现有技术挖掘时间过长的一个重要原因。本发明用类似广度优先遍历的方式进行检测,而现有技术用的是类似深度优先遍历的方式进行检测,这也是现有技术更容易出现内存崩溃的问题的重要原因。与现有技术相比,本发明还具有以下优势:

(1)用完全正则的形式语言PPTL编写模式作为待挖掘的规范;

(2)对LNFG的结点进行匿名化,节省存储空间;

(3)用邻接链表存储LNFG,内存利用率大大提高;

(4)将PPTL公式一次性转化为LNFG形式,减少出现检测时间过长的情况;

(5)用类似广度优先遍历的方式将trace中的事件与LNFG边上的PPTL状态公式进行对比,减少出现由于递归过深而出现内存崩溃的情况。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的PPTL规范挖掘方法流程图。

图2是本发明实施例提供的PPTL规范挖掘系统的整体框架图。

图3是本发明实施例提供的蜂群算法的可执行程序输入Trace生成模块后输出的trace文件示例图。

图4是本发明实施例提供的用邻接链表存储PPTL对应LNFG形式的示意图。

图5是本发明实施例提供的系统的实例化模块初始化时生成的iteration_tracker示意图。

图6是本发明实施例提供的系统的LNFG检测模块实现检测的思想示意图。

图7是本发明实施例提供的根据基于LNFG的PPTL规范挖掘系统输出结果得到的引领蜂、观察蜂和侦察蜂三种蜂工作顺序的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

针对现有技术存在的问题,本发明提供了一种PPTL规范挖掘系统和方法,下面结合附图对本发明作详细的描述。

本实施例旨在解决以下问题:挖掘蜂群算法中引领蜂、观察蜂和侦察蜂的工作顺序、出现频率等规范,将待挖掘的规范用PPTL公式进行形式化描述,并与蜂群算法的可执行程序同时输入本发明提供的PPTL规范挖掘系统中,通过系统输出的PPTL实例及其置信度进一步得出三种蜂之间的工作顺序、出现频率等性质,即规范;本实施例具体挖掘三种蜂工作的先后顺序。

如图1所示,本发明实施例提供的PPTL规范挖掘方法包括以下步骤:

S101,将待挖掘的可执行程序输入Trace生成模块,输出一个仅包含程序中方法调用的函数序列,即trace文件;

S102,将trace文件输入Trace解析模块,输出一个包含trace中所有出现的事件的集合Events,并将方法调用抽象为事件;

S103,将用户选择的待挖掘的一个PPTL公式P输入PPTL_LNFG转换模块,输出P对应的LNFG形式,并用邻接链表进行存储;

S104,将S102输出的事件集Events和S103输出的LNFG同时输入LNFG实例化模块,输出用邻接链表保存的实例化的LNFG;

S105,将S101输出的trace和S104输出的实例化的LNFG同时输入LNFG检测模块,输出表示PPTL是否满足此条trace的布尔变量;

S106,重复执行S105直至所有实例化的LNFG均完成与trace文件的检测,计算每个实例化的PPTL实例满足trace文件的置信度并返回。

下面结合具体实施例对本发明的技术方案作进一步描述。

通过输入“/usr/bin/time-v-o nf-order-1-res.txt./pptlminer-g-f'<>p->([]!p;s)'--print-stats--conf-threshold X--log fq.txt--trace-separator'END'>lnfg-order-1.txt”命令来启动工具PPTLMiner+,其中“/usr/bin/time-v-o nf-order-1-res.txt”表示将使用“/usr/bin/time”命令测量命令执行时间并将结果保存到lnfg-order-1-res.txt文件中;“./pptlminer”表示启动基于LNFG的PPTL规范挖掘系统;“-g”表示我们选择基于LNFG的PPTL规范挖掘方法;“-f'<>p->([]!p;s)'”表示挖掘的PPTL公式是“<>p->([]!p;s)”;“--print-stats”表示将结果打印出来;“--conf-threshold X”表示打印结果时将置信度大于等于“X”的结果输出,其中0≤X≤1;“--log fq.txt”表示trace文件是fq.txt;“--trace-separator'END'”表示trace集中每条trace用分隔符“END”分割,分隔符支持用户自定义;“>lnfg-order-1.txt”表示将打印结果写到lnfg-order-1.txt文件中。

如图2所示,本发明实施例提供的基于LNFG的PPTL规范挖掘系统包括:Trace生成模块,Trace解析模块,PPTL_LNFG转换模块,LNFG实例化模块,LNFG检测模块和挖掘结果返回模块。

本发明实施例输入基于LNFG的PPTL规范挖掘系统后经历以下步骤:

步骤一:将用C++语言编写实现蜂群算法的可执行程序输入Trace生成模块,通过多次执行程序共获取60条trace,平均每条trace包含54个事件,trace之间用“END”分隔,一条trace示例如图3所示。

步骤二:将trace输入Trace解析模块,解析出通过解析trace生成事件集Events={sendEmployedBees(),sendOnlookerBees(),main(),initilize(),EmployedBees_update(),EmployedBees_choose(),CalculateProbabilities(),OnlookerBees_update(),sendScoutBees(),OnlookerBees_choose(),ScoutBees_limit()},其中每个事件代表的含义如表1所示,共含11个事件。

表1事件对应含义

步骤三:选择PPTL公式P输入PPTL_LNFG转换器,P:<>p->([]!p;s),表示事件s发生在事件p之前。PPTL转成LNFG后得到信息如表2所示。存储LNFG前首先对LNFG的结点进行匿名化处理,即对结点进行编号从而节省存储空间,匿名化后对应LNFG信息如表3所示,使用邻接链表存储图G,存储结果如图4所示。

步骤四:LNFG实例化器首先通过生成实例化池构成A(11,2)=110对(atomic,event)映射对集,实例化池初始化时生成的迭代装载器如图5所示。选任意一组映射(s,..initilize()(p,..sendEmployedBees())遍历图G中每个头结点对应的边结点链,遍历的同时将边结点权值域的语法树中p用..sendEmployedBees()代替,s用..initilize()代替,最终完成LNFG的实例化。

表2 LNFG的CL(P)、V0、EL(P)、L信息(P=<>p->([]!p;s))

表3匿名化后LNFG的CL(P)、V0、EL(P)、L信息(P=<>p->([]!p;s))

步骤五:根据图6的检测思想,选择图3中的trace与LNFG进行检测,检测中间过程如表4所示。若当前事件与下一状态集中的迁移条件一致时,则当前状态集可经过当前事件到达下一可达状态集,如步骤4中,当前状态集中状态“3”可经过迁移条件:“true”到达状态“3”、“4”,状态“4”可经过迁移条件“!SE”到达状态“4”、“5”,且当前事件“EU”与迁移条件“true”和“!SE”一致,则下一可达状态集为{3,4,5}。由于步骤19中SL是最后一个当前事件且下一可达状态集中含ε,故此次检测返回结果为true,即表示实例化的<>SE->([]!SE;init)满足trace,即init在SE之前发生。

表4检测时中间过程

PPTLMiner+最终输出A(11,2)=110个实例化的PPTL公式及对应置信度。截取部分结果如表5所示,根据结果可得出图7中蜂群算法的引领蜂、观察蜂和侦察蜂三种蜂工作顺序。

表5挖掘部分结果

分别将蜂群算法的可执行程序和不同的PPTL公式输入基于LNFG的PPTL规范挖掘系统和现有技术的系统中,得到两个系统在时间和内存的表现如表6所示,其中时间是通过命令行中的“/usr/bin/time”得出,内存是通过Linux系统的系统监测器的结果实时得出,本次实施例所用设备为:Ubuntu 18.04.5LTS,内存:7.7GB,处理器:CoreTM i7-9750H [email protected]

表6 PPTLMiner和PPTLMiner+结果对比

注:“X”表示内存崩溃而无法得出结果。

由表6可知,现有技术的系统更容易出现内存崩溃的情况,在不出现内存崩溃的情况下,基于LNFG的PPTL规范挖掘系统的运行时间明显比现有技术的系统要少。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于TFS确认投产需求的方法及相关装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!