字体文件的压缩方法、装置、存储介质及处理器与流程

文档序号:28705099发布日期:2022-01-29 13:32阅读:361来源:国知局
字体文件的压缩方法、装置、存储介质及处理器与流程

1.本发明涉及计算机数据处理领域,具体而言,涉及一种字体文件的压缩方法、装置、存储介质及处理器。


背景技术:

2.ui(user interface,用户界面)设计图中通常包含各自各样的字体包,并且字体包中通常不仅包括数字和字母,还包括常规汉字,由于汉字相较于数字、字母、符号的结构会更加复杂,因此,汉字在字体包中所占据的体积能达到95%以上,也称此类字体包为中文字体包。
3.一个普通的中文字体包体积通常在3~10mb,但一个中型的前端网站体积也就在1~3m左右,若ui设计图中所包含的中文字体包越多,最终让前端网站的源码体积越来越大,导致访问速度较低的问题。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种字体文件的压缩方法、装置、存储介质及处理器,以至少解决存在网站的前端源码体积过大,导致访问速度较低的技术问题。
6.根据本发明实施例的第一方面,提供了一种字体文件的压缩方法,包括:获取源代码文件和源代码文件对应的初始字体文件;对源代码文件进行扫描,得到源代码文件对应的源代码数据;提取出源代码数据中包含的目标语言种类的字符,得到字符集合;基于字符集合对初始字体文件进行压缩处理,得到目标字体文件。
7.可选地,提取出源代码数据中包含的目标语言种类的字符,得到字符集合包括:利用抽象语法树转译器解析源代码数据,生成目标语法树;遍历目标语法树,得到目标语言种类的文本;对目标语言种类的文本进行处理,得到字符集合。
8.可选地,遍历目标语法树,得到目标语言种类的文本包括:基于目标文件的文件类型,确定目标节点类型;遍历目标语法树,确定目标节点类型对应的目标节点;读取目标节点的节点内容,得到目标语言种类的文本。
9.可选地,对目标语言种类的文本进行处理,得到字符集合包括:对目标语言种类的文本进行分割处理,得到多个字符;删除多个字符中的重复字符,得到字符集合。
10.可选地,多个字符存储在字符数组中,删除多个字符中的重复字符,得到字符集合包括:将字符数组中相邻两个位置上存储的两个字符进行比较;在两个字符相同的情况下,删除目标位置上存储的字符,得到字符集合,其中,目标位置为相邻两个位置中的任意一个位置。
11.可选地,基于字符集合对初始字体文件进行压缩处理,得到目标字体文件包括:确定字符集合和初始字体文件中的相同字符;删除目标字体文件中除相同字符之外的其他字符,得到目标字体文件。
12.可选地,确定字符集合和初始字体文件中的相同字符包括:生成初始字体文件对应的目标数组;获取字符集合与目标数组的交集,得到相同字符。
13.可选地,源代码文件的类型包括如下至少之一:超文本标记语言类型、层叠样式表类型和脚本语言类型。
14.可选地,源代码文件为对源代码数据进行打包后得到的文件。
15.根据本发明实施例的第二方面,还提供了一种字体文件的压缩装置,包括:获取模块,用于获取源代码文件和源代码文件对应的初始字体文件;扫描模块,用于对源代码文件进行扫描,得到源代码文件对应的源代码数据;提取模块,用于提取出源代码数据中包含的目标语言种类的字符,得到字符集合;压缩模块,用于基于字符集合对初始字体文件进行压缩处理,得到目标字体文件。
16.根据本发明实施例的第三方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述实施例中的任意字体文件的压缩方法。
17.根据本发明实施例的第四方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述实施例中任意一项的字体文件的压缩方法。
18.在本发明实施例中,在获取源代码文件和该源代码文件中所对应的初始字体文件后,对源代码文件进行扫描,得到该源代码文件对应的源代码数据后,提取出源代码数据中包含的目标语言种类的字符,得到字符合集,最后基于自己集合对初始字体文件进行压缩处理,减小字体文件的体积,得到减小体积后的目标字体文件,进而解决了存在网站的前端源码体积过大,导致访问速度较低的技术问题。
附图说明
19.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
20.图1是根据本发明实施例的一种可选的字体文件压缩方法的流程图;
21.图2是根据本发明优选实施例的一种可选的第一示意图;
22.图3是根据本发明优选实施例的一种可选的第二示意图;
23.图4是根据本发明优选实施例的一种可选的第三示意图;
24.图5是根据本发明优选实施例的一种可选的第四示意图;
25.图6是根据本发明优选实施例的一种可选的第五示意图;
26.图7是根据本发明优选实施例的一种可选的第六示意图;
27.图8是根据本发明实施例的一种可选的字体文件压缩装置的结构图。
具体实施方式
28.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
29.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
30.为解决上述问题,现有技术提供了一种通常利用字蛛(font-spider)来减少字体文件的体积的解决方案,需要通过开发者人工逐个页面找出需要显示的静态文案,即字体文件,并将这些静态资源复制到新建的html(hyper text markup language,超文本标记语言)文件中,启动字蛛的脚本程序,删除部分字体文件,从而达到减少字体文件体质,提高访问速度。
31.但上述解决方案只能采用人工逐个页面提取的方式得到需要显示的子文件,不但费时费力,还存在遗漏的风险,且字蛛只能在低版本的node.js中运行,并且只能处理前端页面代码,无法处理后端服务应用代码,即使在前端领域,也只能用于单一开发模式,无法与主流前端框架或构建脚手架接合使用。综上所述,现有技术所提供的解决方案中依赖于人工处理,效率低下,且适用场景少并不利于使用。其中,上述node.js是一个基于chrome javascript运行时建立的一个平台。
32.根据本发明实施例,提供了一种字体压缩文件的压缩方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
33.图1是根据本发明实施例的字体文件压缩方法的流程图,如图1所示,该方法包括如下步骤:
34.步骤s102,获取源代码文件和源代码文件对应的初始字体文件。
35.具体地,源代码文件可以是项目源代码输出文件中包含中文本文的文件,初始字体文件可以是存储有该项目所使用的字体的文件。此处的项目可以是前端项目,如网站网页,也可以是后端项目,如应用服务。
36.可选地,以前端项目为例,上述的源代码文件的类型可以包括如下至少之一:超文本标记语言类型、层叠样式表类型和脚本语言类型。即,源代码文件包括但不限于html文件(包含html,htm(hyper text markup,超文本标记))等属于模板类型的文件)、css(cascading style sheets,层叠样式表)文件(包含css,scss(sassy cascading style sheets),less(leaner style sheets),style等样式类型的文件)和js(javascript)文件(js,ts(transport stream,传输流),jsx,tsx,vue等脚本类型的文件)。
37.步骤s104,对源代码文件进行扫描,得到源代码文件对应的源代码数据。
38.具体地,可以使用node.js的fs模块的readdir函数扫描源代码文件,得到该源代码文件对应的源代码数据,无需开发人员逐个筛选。需要说明的是在扫描源代码文件,获取源代码文件对应的源代码数据的过程中,无需作去重判断或覆盖判断。
39.可选地,源代码文件为对源代码数据进行打包后得到的文件。
40.具体地,整个处理过程在项目构建打包后,对打包后的源码进行处理,因此植入过程不会污染项目构建打包的过程,也不存在因为植入本发明技术方案而导致构建打包增长。
41.步骤s106,提取出源代码数据中包含的目标语言种类的字符,得到字符集合。
42.具体地,目标语言种类可以是会影响字体文件大小的语言种类,例如,可以是中文、日文等,在本发明实施例中以中文为例进行说明。字符集合包含了源代码数据使用的所有目标语言种类的字符。
43.在一种可选的实施例中,可以利用抽象语法树转译器(如posthtml、postcss、babel)将该源代码数据转换ast(abstract syntax tree,目标语法树),然后通过遍历ast中的所有节点,可以读取到目标语言种类的字符,在读取过程中遇到相同字符无需进行去重判断或覆盖判断,减少数据读取时间。在ast遍历结束,读取出所有目标语言种类的字符之后,可以对度去除的所有字符作去重处理,得到字符集合,此时字符集合中的每个字符的值是单独且唯一的。
44.步骤s108,基于字符集合对初始字体文件进行压缩处理,得到目标字体文件。
45.在一种可选的实施例中,为了对初始字体文件进行压缩处理,可以将字符集合与初始字体文件集合进行比较,确定字符集合中每个字符对应的字体,上述字体需要保留,其他字体可以删除,从而减少初始字体文件中包含的字体的数量,达到压缩的目的,进而得到压缩后的目标字体文件。
46.需要说明的是,本技术所获取的初始字体文件是静态资源,不具备任何动态化的优化趋势,因此,对静态资源采用压缩的处理能够极大的减少字体文件集体,优化前端性能。
47.通过上述实施例,在获取源代码文件和该源代码文件中所对应的初始字体文件后,对源代码文件进行扫描,得到该源代码文件对应的源代码数据后,提取出源代码数据中包含的目标语言种类的字符,得到字符集合,最后基于字符集合对初始字体文件进行压缩处理,减小字体文件的体积,得到减小体积后的目标字体文件,得到目标字体文件。容易注意到的是,由于字符集合中的字符是从源代码数据中提取出的目标语言种类的字符,也即,字符集合中包含有源代码数据使用的所有目标语言种类的字符,从而基于字符集合删除初始字体文件中不同字符的字体,达到压缩字体文件的目的,达到了减少字体文件体积,提高访问速度的技术效果,进而解决了网站的前端源码体积过大,导致访问速度较低的技术问题。
48.可选地,提取出源代码数据中包含的目标语言种类的字符,得到字符集合包括:利用抽象语法树转译器解析源代码数据,生成目标语法树;遍历目标语法树,得到目标语言种类的文本;对目标语言种类的文本进行处理,得到字符集合。
49.具体地,利用ast转译器解析源代码数据,将其转换成ast,该目标语法树为树状结构,包含多个节点,每个节点都包含多个标记以及对应到源码的内容,然后通过遍历ast文件中的节点,获取指定内容,即目标语言种类的文本。由于直接从源代码文件中获取正则表达式的内容需要根据获取的内容,要求该正则表达式可以处理所有可能出现的内容,对正则表达式的编写要求较高,但本技术中将源代码数据转化为ast后,对ast进行遍历获取目标语言种类的文本无需根据各种可能的情况修改,即ast可以解决一些通过常规方式处理
很繁琐的问题,降低了开发过程中的难度。在获取到目标语言种类的文本,可以进行包括但不限于分割处理和去重处理后,得到字符集合。
50.需要说明的是,抽象语法树,简称ast,是源代码语法结构的一种抽象表示,以树状的形式表示编程语言的语法结构。ast转译器在本技术中并不作限制,可以根据实际开发过程的需求选择,例如posthtml、postcss、babel等。目标种类可以包括但不限于css类型文件和js类型文件,其中css类型文件包括但不限于css,scss,sass,less,style等样式类型的文件,js类型文件包括但不限于js,ts,jsx,tsx,vue等脚本类型的文件。
51.为了将上述方法扩展至后端,对于服务端代码,可以依据开发语言定制提取规则的正则表达式,整体思路是将开发代码的文件内容当做全文本处理,通过预设的正则表达式提取出所有静态文案。
52.可选地,遍历目标语法树,得到目标语言种类的文本包括:基于目标文件的文件类型,确定目标节点类型;遍历目标语法树,确定目标节点类型对应的目标节点;读取目标节点的节点内容,得到目标语言种类的文本。
53.具体地,目标节点类型可以是符合静态文本特点的类型,静态文本通常都是运营或策划提供的具体文字,这些问题会以固定的形式并以特定的方式展示。对于不同类型的目标文件,目标节点类型不同。
54.需要说明的是,目标语法树中的每个节点都表示源代码中的一种结构,因此若目标文件的文件类型不同,则对应的目标节点类型可能不同。例如,对于html类型文件,目标节点类型可以是text;对于css类型文件,目标节点类型可以是cssstyledeclaration;对于js类型文件,目标节点类型可以是literal。
55.在一种可选的实施例中,可以针对不同类型的目标文件,对ast中的不同类型的节点进行遍历,并读取节点的value值,得到目标语言种类的文本。根据文件类型,对文件类型所对应的ast文件进行处理,包括:
56.在处理之前,新建一个空字符串a,该字符串a用于遍历ast文件时存储字体文件。
57.对于html类型文件所对应生成的ast文件,通过遍历得该html类型文件所对应生成的ast文件得到其中所有的text节点,再读取该text节点的value的值,并将该value的值存储到字符串a中。若遍历该html类型文件所对应生成的ast文件,首次得到的value的值是“登录”,则将登录追加到字符串a中,字符串a中包含“登录”,再次遍历后获得的value的值是“注册”,则将“注册”追加到字符串a中,字符串a中包含“登录”和“注册”。
58.对于css类型文件所对应生成的ast文件,通过遍历该css类型文件所对应生成的ast文件得到其中所有的cssstyledeclaration节点,再读取该cssstyledeclaration节点中的content的值,并将其追加到字符串a中,需要说明的是,该content的值可能不存在,在该content的值不存在的情况下,则无需进行追加。若content的值是“修改头像”,则将“修改头像”追加到字符串a中。
59.对于js类型文件所对应生成的ast文件,通过遍历该js类型文件所对应生成的ast文件得到其中所有的literal节点,再读取该节点的value的值,并将该value的值追加到字符串a中。若value的值是“修改昵称”,则将“修改昵称”追加到字符串a中。
60.需要说明的是,在读取字体文件时无需做去重判断或覆盖判断,直接将字体文件追加到字符串a中即可。
61.可选地,对目标语言种类的文本进行处理,得到字符集合包括:对目标语言种类的文本进行分割处理,得到多个字符;删除多个字符中的重复字符,得到字符集合。
62.具体地,对目标语言种类的文本可以以单个字符作为分割点对目标语言种类的文本进行分割处理,得到多个字符,然后将多个字符进行比较,在两个字符相同的情况下,删除任一位置上存储的字符,即删除上述多个字符中的重复字符,得到一个成员唯一的字符集合。
63.在一种可选的实施例中,可以将字符集合中每个字符与其他字符进行比较,如果相同,则删除该字符,重复执行上述步骤,直至所有字符均处理完毕。
64.在另一种可选的实施例中,可以将字符集合中相邻两个字符进行比较,如果相同,则删除后一个字符,重复执行上述步骤,直至所有字符均处理完毕。
65.可选地,多个字符存储在字符数组中,删除多个字符中的重复字符,得到字符集合包括:将字符数组中相邻两个位置上存储的两个字符进行比较;在两个字符相同的情况下,删除目标位置上存储的字符,得到字符集合,其中,目标位置为相邻两个位置中的任意一个位置。
66.具体地,可以将多个字符存储在字符数组b中,并通过遍历字符数组,将相邻两个位置的字符进行比对,在两个位置的字符相同的情况下,删除其中一个位置的字符,被删除字符所在的位置称为目标位置,遍历整个字符数组后,得到字符集合。
67.在遍历操作时,设置i等于0用于从第一个字符开始遍历,每遍历一次就设置就设置j=i+1,此时将数组的当前位置(其实就是i的位置对应的值)与下一位置(其实就是j的位置对应的值)的值进行比较,若两值相等则将j位置的值删除并将b的长度减一,直至遍历数组完毕,此时得到的b里的每个成员的值都会但单独且唯一的。
68.可选地,基于字符集合对初始字体文件进行压缩处理,得到目标字体文件包括:确定字符集合和初始字体文件中的相同字符;删除目标字体文件中除相同字符之外的其他字符,得到目标字体文件。
69.具体地,将字符集合和初始字体文件进行比对,确认字符集合和初始字体文件中相同字符,即得到字符集合和初始字体文件的交集后,删除目标字体文件中的其他字符,即删除初始字体包中与字符集合中不同的字符,得到目标字体文件。
70.可选地,确定字符集合和初始字体文件中的相同字符包括:生成初始字体文件对应的目标数组;获取字符集合与目标数组的交集,得到相同字符。
71.具体地,在压缩字体前使用目标数组模拟字体包,将该目标数组与字符集合进行比对,得到目标数组和字符集合的交集,该交集里的字符为需要保留的字符,即相同字符。上述操作全程在进程内存里处理,不涉及到文件的操作,整体性能比在文件里进行对比去重等操作会更高更快,因此将字符对比去重的操作剥离处理使用数组模拟会更具备优势,到最后压缩字体的工具只需根据结果删除指定的未使用字体即可。
72.需要说明的是,可以使用现有处理工具执行上述步骤,例如fontmin,fontmin可以根据指定的字符删除指定字体包里非指定的字符。
73.下面对本发明一种优选的实施例进行详细说明。
74.在一个优选的实施例中,得到源代码文件和源代码文件中所包含的html、css、js等相关类型的字体文件,即源代码文件和初始字体文件,可以使用node.js的fs模块的
readdir函数扫描源代码文件中的全部html、css、js等相关类型文件,得到全部html、css、js等相关类型文件后,使用ast转译器解析上述html、css、js等相关类型文件的文件内容,生成对应的ast文件,再根据文件类型,对文件类型所对应的ast文件进行处理,包括:
75.在处理之前,新建一个空字符串a,该字符串a用于遍历ast文件时存储字体文件。
76.对于html类型文件所对应生成的ast文件,通过遍历得该html类型文件所对应生成的ast文件得到其中所有的text节点,再读取该text节点的value的值,并将该value的值存储到字符串a中。如图2所示,若遍历该html类型文件所对应生成的ast文件,首次得到的value的值是“登录”,则将登录追加到字符串a中,如图3所示,字符串a中包含“登录”,再次遍历后获得的value的值是“注册”,则将“注册”追加到字符串a中,字符串a中包含“登录”和“注册”。
77.对于css类型文件所对应生成的ast文件,通过遍历该css类型文件所对应生成的ast文件得到其中所有的cssstyledeclaration节点,再读取该cssstyledeclaration节点中的content的值,并将其追加到字符串a中,需要说明的是,该content的值可能不存在,在该content的值不存在的情况下,则无需进行追加。如图4所示,若content的值是“修改头像”,则将“修改头像”追加到字符串a中。
78.对于js类型文件所对应生成的ast文件,通过遍历该js类型文件所对应生成的ast文件得到其中所有的literal节点,再读取该节点的value的值,并将该value的值追加到字符串a中。如图5所示,若value的值是“修改昵称”,则将“修改昵称”追加到字符串a中。
79.需要数码的是,在读取字体文件时无需做去重判断或覆盖判断,直接将字体文件追加到字符串a中即可。
80.在遍历完上述html、css、js等相关类型文件所对应的ast文件后,将a以单个字符的形式切割,得到数组b,再对b进行去重处理,如图6所示,包括:设置i等于0用于从数字a的第一位开始遍历,每遍历一次就设置j=i+1,此时将数字a的当前位置(其实就是i的位置对应的值)与下一位置(其实就是j的位置对应的值)的值进行比较,若两值相等则将j位置的值删除并将a的长度减1,直至遍历完毕,得到数组c。例如,如图7所示,若字符串a=["登录","注册","修改头像","修改昵称"],则数组b=["登","录","注","册","修","改","头","像","修","改","昵","称"],数组c=["登","录","注","册","修","改","头","像"]。
[0081]
在得到数组c后,将初始字体文件与数组c作对比,取数组c和初始字体文件进行比对,取数组c和初始字体文件都包含的中文字符作为交集,将初始字体文件中不属于的交集的字符删除,得到目标字体文件,该目标子文件包含了需要使用的所有中文字符。需要说明的是,上述得到初始字体文件和数组c的交集后,基于该交集得到目标字体文件的过程可以采用处理工具fontmin完成,fontmin可以根据指定的字符删除字体包里面飞指定的字符。
[0082]
图8是根据本发明实施例的一种可选的字体文件压缩装置的结构图,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。如图8所示,该装置包括:
[0083]
获取模块80,用于获取源代码文件和所述源代码文件对应的初始字体文件。
[0084]
扫描模块82,用于对所述源代码文件进行扫描,得到所述源代码文件对应的源代码数据。
[0085]
提取模块84,用于提取出所述源代码数据中包含的目标语言种类的字符,得到字符集合。
[0086]
压缩模块86,用于基于所述字符集合对所述初始字体文件进行压缩处理,得到目标字体文件。
[0087]
需要说明的是,上述各个单元、模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述单元、模块均位于同一处理器中;或者,上述各个单元、模块以任意组合的形式分别位于不同的处理器中。
[0088]
通过上述实施例,在获取源代码文件和该源代码文件中所对应的初始字体文件后,对源代码文件进行扫描,得到该源代码文件对应的源代码数据后,提取出源代码数据中包含的目标语言种类的字符,得到字符集合,最后基于字符集合对初始字体文件进行压缩处理,减小字体文件的体积,得到减小体积后的目标字体文件,得到目标字体文件。容易注意到的是,由于字符集合中的字符是从源代码数据中提取出的目标语言种类的字符,也即,字符集合中包含有源代码数据使用的所有目标语言种类的字符,从而基于字符集合删除初始字体文件中不同字符的字体,达到压缩字体文件的目的,达到了减少字体文件体积,提高访问速度的技术效果,进而解决了网站的前端源码体积过大,导致访问速度较低的技术问题。
[0089]
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任意一项方法实施例中的步骤。
[0090]
本发明的实施例还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述实施例中任意一项字体文件的压缩方法。
[0091]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0092]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0093]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0094]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0095]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上
或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0096]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1