CN102880550B - 基于约束校验的内存格式化方法 - Google Patents

基于约束校验的内存格式化方法 Download PDF

Info

Publication number
CN102880550B
CN102880550B CN201110195005.0A CN201110195005A CN102880550B CN 102880550 B CN102880550 B CN 102880550B CN 201110195005 A CN201110195005 A CN 201110195005A CN 102880550 B CN102880550 B CN 102880550B
Authority
CN
China
Prior art keywords
configuration
item
configuration file
verification
trifle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110195005.0A
Other languages
English (en)
Other versions
CN102880550A (zh
Inventor
任宇
谭辅州
邹强
朱律玮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI DONGFANGTONG SOFTWARE TECHNOLOGY CO., LTD.
Beijing Tongtech Co Ltd
Original Assignee
SHANGHAI DONGFANGTONG SOFTWARE TECHNOLOGY Co Ltd
Beijing Tongtech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHANGHAI DONGFANGTONG SOFTWARE TECHNOLOGY Co Ltd, Beijing Tongtech Co Ltd filed Critical SHANGHAI DONGFANGTONG SOFTWARE TECHNOLOGY Co Ltd
Priority to CN201110195005.0A priority Critical patent/CN102880550B/zh
Publication of CN102880550A publication Critical patent/CN102880550A/zh
Application granted granted Critical
Publication of CN102880550B publication Critical patent/CN102880550B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于约束校验的内存格式化方法,涉及计算机文件处理技术领域,包括以下步骤:S1:根据配置文件的配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称分配内存结构;S2:根据配置文件对应的配置校验脚本校验所述配置文件;S3:将校验通过的配置文件中的配置项值赋值给所述内存结构。本发明自动化地批量实现对配置文件的约束校验及对配置文件中的结构体对应的内存结构进行格式化。

Description

基于约束校验的内存格式化方法
技术领域
本发明涉及计算机文件处理技术领域,特别涉及一种基于约束校验的内存格式化方法。
背景技术
通过配置文件读取需要经常变化的参数信息是计算机系统使用的常用方法。被广泛的使用在各种需要人机交互的软件系统当中。软件的使用者将所需的参数信息,按照一定的格式编写在文本文件中,计算机软件在启动或者使用这些参数之前,通过读取文件将信息读入内存当中,并进行相应的解析和处理。
单纯的将参数信息保存进配置文件,虽然简单直接,但是并不利于使用者记忆和识别,所以逐渐发展成名值对形式的配置文件,例如“NAME=XYZ”等等。随着软件系统越来越复杂,提供的功能越来越多,简单的配置描述方法无法满足复杂的业务需求,所以逐渐发展出具有一定格式化要求的配置文件,用以进行具有一定关联关系的复杂参数表示方法。同时由于软件系统的发展要求,配置的内容总是在不断变化的,这就需要对配置文件的格式能灵活的变化;同时随着配置信息内容越来越复杂,信息之间的关联关系变得越来越复杂,配置内容出错的概率变得非常高,一旦配置出错,就影响整个软件系统的运行。
在实现本发明的过程当中,发明人发现现在通行的INI和XML文件虽然部分解决了以上的问题,但是依然存在着自己的局限性。INI文件通过“[]”来描述配置小节,将参数信息进行简单的分类处理,但是无法表示具有复杂依赖关系和多层次小节关系的参数。而XML文件虽然非常的灵活,可以适应各种配置需要,但是它的语法表达过于复杂,不利于使用者快速的学习记忆;并且对XML的支持主要集中在java语言,对C语言的相关支持比较少,无法适应跨平台的需要。最重要的是以上的两种配置方法,都没有对配置校验提供完整的解决方案,所有的工作都要人工编码完成。随着业务需求的不断提出和不断更新变化,产品配置文件的配置内容也随之不断增加,配置文件的复杂度也不断增加。为了实现对配置文件内容的一系列合法校验,比如对配置文件中各类名称的唯一性校验、配置小节和配置记录之间层级从属关系的约束校验,不同配置单元上下文依赖关系的约束校验等,均须相应增加大量的校验流程。实现这些新增校验流程的过程,耗费了大量的工作量,且极容易出现纰漏,增加了产品出现bug的概率,并使开发的效率大大降低。
在实现本发明的过程当中,发明人还发现对于配置文件的使用,往往是和内存资源对象的创建和赋值相关联的。从配置中读取的参数信息,用于创建相关的内存对象,或对特定的内存对象赋值。而这些工作目前没有通用抽象的方法可供使用,往往需要人工编程来实现。另外随着业务需求的不断提出和不断更新变化,产品核心内存结构也经常需要合理化调整,实现这个调整过程,极易出现各种遗漏,比如尺寸计算和格式序列化不一致,显示内容和实际结构不一致,结构体个数与预期不一致等,使得内存指针位置发生错乱,从而导致产品出现重大缺陷。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何自动化地批量实现对配置文件的约束校验及对配置文件中的结构体对应的内存结构进行格式化。
(二)技术方案
为解决上述技术问题,本发明提供了一种基于约束校验的内存格式化方法,包括以下步骤:
S1:根据配置文件的配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称分配内存结构;
S2:根据配置文件对应的配置校验脚本校验所述配置文件;
S3:将校验通过的配置文件中的配置项值赋值给所述内存结构。
其中,所述步骤S1具体包括:
S1.1:根据配置文件读取所述配置文件对应的内存格式脚本,所述内存格式脚本中设置了配置文件中配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称;
S1.2:解析所述内存格式脚本,根据内存格式脚本的内容为所述配置文件分配内存结构。
其中,所述步骤S1.2具体包括:
根据内存格式脚本内容中的各个结构体变量和数量计算内存尺寸;
将按所述尺寸申请成功的内存空间逐项分配给格式化脚本内容中的指针变量;
逐项显示各个已经分配好内存空间的指针变量地址。
其中,在计算内存尺寸和进行内存地址偏移时,均以8bytes为格式化最小尺寸单元,构体单个尺寸乘以结构体个数,结果若不是8的整数倍,则加上余数,使之占据的内存空间大小为8bytes的整数倍。
其中,所述步骤S2具体包括:
S2.1:读取所述配置文件对应的配置校验脚本,所述配置校验脚本设置了配置文件中配置小节、配置记录和配置项各自的约束校验规则;
S2.2:根据所述约束校验规则校验所述配置文件。
其中,所述步骤S2.2具体包括:
S2.2.1:解析配置校验脚本中有效行的前导符,注释行的前导符;
S2.2.2:解析与所述配置文件的配置小节对应的约束校验规则行的前导符;
S2.2.3:解析与所述配置小节的配置记录对应的约束校验规则行的前导符;
S2.2.4:解析与所述配置记录的配置项对应的约束校验规则行的前导符;
S2.2.5:根据不同的前导符解析出配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值;
S2.2.6:根据所述配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值校验配置文件中的配置小节、配置记录和配置项。
其中,校验配置文件时,还包括手工添加校验项对配置文件进行校验。
(三)有益效果
本发明通过配置校验脚本生成校验代码对配置文件校验,通过内存格式脚本分配内存结构,并以校验通过的配置文件中的配置小节、配置记录和配置项来格式化内存结构,从而自动化地批量实现对配置文件的约束校验及对配置文件中的结构体对应的内存结构进行格式化。同时避免了因为业务需求的变化而调整配置文件格式和内存格式序列时必须进行的大量流程调整,且避免了因为手工修改遗漏所导致的问题。
附图说明
图1是本发明实施例的一种基于约束校验的内存格式化方法流程图;
图2是本发明实施例的配置文件的格式内容;
图3是本发明实施例的内容格式脚本的格式内容;
图4是本发明实施例的配置校验脚本的格式内容。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,本实施例的基于约束校验的内存格式化方法包括:
步骤S101,根据配置文件的配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称分配内存结构。如图2所示,为本实施例中的一种配置文件,图中示出了一部分内容,包括三部分内容:配置小节(如:ClusterQue)、配置记录(如:ClusterQueRecord和ClusterQueDestination)、配置项(如:ClusterDestination和Weight),其关系为:每一个“配置小节”可以包括多种“配置记录”,每一种“配置记录”可以为多条,每一条“配置记录”包含多个“配置项”。配置小节和配置记录表明了配置项值的路径。该步骤具体包括:
读取所述配置文件对应的内存格式脚本,所述内存格式脚本中设置了配置文件中配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称。如图3所示,为内存格式脚本的内容,包括:内存结构体名称(如:SEND_QUE)、内存结构体数量(如:宏定义名SNDQMAXNUM)、内存结构体变量名称(如:gSndQ)。
解析所述内存格式脚本,根据内存格式脚本的内容为所述配置文件分配内存结构。具体包括:
根据内存格式脚本内容中的各个结构体变量和数量计算内存尺寸。结构体变量类型确定后,其尺寸也就确定了,根据其数量便可计算出所需内存的总尺寸。
将按所述尺寸申请成功的内存空间逐项分配给格式化脚本内容中的指针变量;
逐项显示各个已经分配好内存空间的指针变量地址,指针变量地址表示了内存地址偏移。
本实施例中,解释内存格式脚本后,会生成一个内存格式化文件,该文件包括计算内存尺寸和偏移的函数。这样就可以保证一次修改配置,即可同步修改内存尺寸和内存地址偏移,确保内存格式变化之后的准确性,简化了操作步骤,提高了产品质量。
在计算内存尺寸和进行内存地址偏移时,均以8bytes为格式化最小尺寸单元,即:某结构体单个尺寸乘以结构体个数,结果如果不是8的整数倍,则加上余数,使之占据的内存空间大小为8bytes的整数倍。
步骤S102:根据配置文件对应的配置校验脚本生成用于校验所述配置文件的校验代码。如图4所示,为本实施例中的与图2中配置文件对应的配置校验脚本内容。其中约定了图2中配置文件的配置小节以及配置记录之间的从属和约束校验关系。具体包括:配置小节名称的定义,配置小节描述体的定义,配置小节必输性的约束定义,配置小节前置校验的约束定义,配置小节后置校验的约束定义,配置记录名称的定义,配置记录对应结构体的定义,配置记录对应的变量名称定义;还约定了配置记录中各配置项键值的约束校验方式,具体包括:配置项键值名称的约束校验定义,配置项数据类型和长度的约束校验定义,配置项键值唯一性的约束校验定义,配置项必输性的约束校验定义,配置项字段名称的定义,配置项默认数值的约束定义,配置项动态修改的约束定义,配置项描述体的定义,配置项取值范围的约束校验定义。
生成校验代码的具体步骤包括:
读取所述配置文件对应的配置校验脚本,所述配置校验脚本设置了配置文件中配置小节、配置记录和配置项各自的约束校验规则。
根据所述约束校验规则校验所述配置文件。该步骤具体包括:
解析配置校验脚本中有效行的前导符,注释行的前导符;
解析与所述配置文件的配置小节对应的约束校验规则行的前导符,如图4中:前导符“SEC-NAME=ClusterQue”,其后为配置小节的校验规则的脚本内容。
解析与所述配置小节的配置记录对应的约束校验规则行的前导符,如图4中:前导符“RCD-NAME=ClusterQueDestination”,其后为配置记录的校验规则的脚本内容。
解析与所述配置记录的配置项对应的约束校验规则行的前导符,如图4中:前导符为“#KeyName”,其后为配置项的校验规则的脚本内容。
根据不同的前导符解析出配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值。
根据所述配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值校验配置文件中的配置小节、配置记录和配置项,即配置文件中的配置小节、配置记录和配置项是否符合配置校验脚本中定义的约束校验规则。
本实施例中,解释配置校验脚本后,会生成一个校验文件,主要包括:配置小节校验子模块、配置记录校验子模块、配置项校验子模块的功能函数。
该文件还包括以下内容:
配置小节、配置记录、配置项各自对应的结构体变量定义;
配置小节、配置记录、配置项各自对应的结构体的个数定义;
每条配置记录对应的序号变量定义;
各配置项取值范围数组定义;
配置小节、配置记录、配置项各自对应的约束校验关系数组。
该“约束校验关系数组”,其数组成员中,除了对配置内容进行唯一性、从属关系、数据类型、取值范围、上下文依赖关系等计算机可自动识别的关键属性进行自动校验之外,另包括一个自定义校验函数指针。该自定义校验函数,缺省是一个空函数,该函数在业务系统其他位置进行定义。如需要对指定的配置内容进行特殊的校验扩展,可通过手工,在此处的校验功能体中进行具体定义。此项特点极大地提高了该自动装置的可扩展性,使得对配置文件的约束校验覆盖面达到一个无盲点的程度。
步骤S103:将校验通过的配置文件中的配置项值赋值给所述内存结构,完成内存的格式化。
本发明实施例通过简单的定义脚本文件的步骤,即可自动生成对配置文件格式和内容进行校验的源码文件,以及自动生成内存格式化的源码文件。避免了因为业务需求的变化而调整配置文件格式和内存格式序列时必须进行的大量流程调整,提高了生产效率,且降低和避免了因为手工遗漏所导致的产品缺陷,进一步提高了产品质量。本发明实施例中涉及自动生成配置校验和内存格式化代码的方法,具备使用简单,可扩展性强,和业务系统耦合度低,可移植性和可复用性强等特点。本发明实施例中,使用者只需要手工编辑一个简单的脚本文件,即可自动生成一系列包含了复杂流程的源码文件,而不必担心出现人工遗漏和未同步修改所有内容的现象出现,大大提高了开发工作效率,提高了产品质量,降低了产品代码的维护成本,减少的产品出现bug的概率。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (5)

1.一种基于约束校验的内存格式化方法,其特征在于,包括以下步骤:
S1:根据配置文件的配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称分配内存结构;
S2:根据配置文件对应的配置校验脚本校验所述配置文件;
S3:将校验通过的配置文件中的配置项值赋值给所述内存结构;
所述步骤S2具体包括:
S2.1:读取所述配置文件对应的配置校验脚本,所述配置校验脚本设置了配置文件中配置小节、配置记录和配置项各自的约束校验规则;
S2.2:根据所述约束校验规则校验所述配置文件;
所述步骤S2.2具体包括:
S2.2.1:解析配置校验脚本中有效行的前导符,注释行的前导符;
S2.2.2:解析与所述配置文件的配置小节对应的约束校验规则行的前导符;
S2.2.3:解析与所述配置小节的配置记录对应的约束校验规则行的前导符;
S2.2.4:解析与所述配置记录的配置项对应的约束校验规则行的前导符;
S2.2.5:根据不同的前导符解析出配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值;
S2.2.6:根据所述配置小节、配置记录和配置项各自的约束校验规则对应的保留字,及配置项对应的值校验配置文件中的配置小节、配置记录和配置项。
2.如权利要求1所述的基于约束校验的内存格式化方法,其特征在于,所述步骤S1具体包括:
S1.1:根据配置文件读取所述配置文件对应的内存格式脚本,所述内存格式脚本中设置了配置文件中配置小节、配置记录和配置项各自的内存结构体名称、数量及结构体变量名称;
S1.2:解析所述内存格式脚本,根据内存格式脚本的内容为所述配置文件分配内存结构。
3.如权利要求2所述的基于约束校验的内存格式化方法,其特征在于,所述步骤S1.2具体包括:
根据内存格式脚本内容中的各个结构体变量和数量计算内存尺寸;
将按所述尺寸申请成功的内存空间逐项分配给格式化脚本内容中的指针变量;
逐项显示各个已经分配好内存空间的指针变量地址,指针变量地址表示内存地址偏移。
4.如权利要求3所述的基于约束校验的内存格式化方法,其特征在于,在计算内存尺寸和进行内存地址偏移时,均以8bytes为格式化最小尺寸单元,结构体单个尺寸乘以结构体个数,结果若不是8的整数倍,则加上余数,使之占据的内存空间大小为8bytes的整数倍。
5.如权利要求1所述的基于约束校验的内存格式化方法,其特征在于,校验配置文件时,还包括手工添加校验项对配置文件进行校验。
CN201110195005.0A 2011-07-12 2011-07-12 基于约束校验的内存格式化方法 Active CN102880550B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110195005.0A CN102880550B (zh) 2011-07-12 2011-07-12 基于约束校验的内存格式化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110195005.0A CN102880550B (zh) 2011-07-12 2011-07-12 基于约束校验的内存格式化方法

Publications (2)

Publication Number Publication Date
CN102880550A CN102880550A (zh) 2013-01-16
CN102880550B true CN102880550B (zh) 2014-12-17

Family

ID=47481884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110195005.0A Active CN102880550B (zh) 2011-07-12 2011-07-12 基于约束校验的内存格式化方法

Country Status (1)

Country Link
CN (1) CN102880550B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729443A (zh) * 2013-12-30 2014-04-16 北京首钢自动化信息技术有限公司 一种可配置式内存管理方法
CN107220072A (zh) * 2016-03-21 2017-09-29 阿里巴巴集团控股有限公司 基于序列化格式的配置文件校验方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581800A (zh) * 2003-08-13 2005-02-16 华为技术有限公司 智能网平台中业务管理代理点动态支持多语种的方法
CN101706801A (zh) * 2009-11-17 2010-05-12 广州从兴电子开发有限公司 一种内存数据库数据的管理方法及系统
CN101937398A (zh) * 2010-09-14 2011-01-05 中兴通讯股份有限公司 嵌入式系统内存池配置方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581800A (zh) * 2003-08-13 2005-02-16 华为技术有限公司 智能网平台中业务管理代理点动态支持多语种的方法
CN101706801A (zh) * 2009-11-17 2010-05-12 广州从兴电子开发有限公司 一种内存数据库数据的管理方法及系统
CN101937398A (zh) * 2010-09-14 2011-01-05 中兴通讯股份有限公司 嵌入式系统内存池配置方法及装置

Also Published As

Publication number Publication date
CN102880550A (zh) 2013-01-16

Similar Documents

Publication Publication Date Title
US7657832B1 (en) Correcting validation errors in structured documents
Belhajjame et al. Prov-dm: The prov data model
US8176003B2 (en) Automatic designation of XBRL taxonomy tags
US7610548B1 (en) Method and apparatus for applying locale behaviors to regions of a form
US9471282B2 (en) System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component
US10095672B2 (en) Method and apparatus for synchronizing financial reporting data
US20110138283A1 (en) Composite copy and paste for composite user interfaces
US8601367B1 (en) Systems and methods for generating filing documents in a visual presentation context with XBRL barcode authentication
CN102810057A (zh) 一种记录日志的方法
CN101763255A (zh) 一种专用界面工具的格式转换方法及装置
CN102023869A (zh) 一种控件输入值校验方法及系统
CN106598922A (zh) 一种字符串转换方法及系统
CN103440198A (zh) 表单校验方法
CN105005543A (zh) 一种接口生成装置及方法
CN103593406A (zh) 一种静态资源标识处理方法及装置
CN102707958A (zh) 一种基于开放平台的接口生成校验方法及设备
CN104391731A (zh) 一种基于c#的与数据类型无关的编辑方法
CN102880550B (zh) 基于约束校验的内存格式化方法
CN103761095A (zh) 一种生成通用的升级文件头部数据信息的方法
CN102902732A (zh) 一种在xml配置文件中添加校验的方法
CN114091383A (zh) 测试序列生成方法、装置、系统及相关设备
CN106484488A (zh) 一体化云编译方法和系统
CN105630839A (zh) 网页信息的获取方法和装置
CN116204391A (zh) 基于自定义配置的预警方法及装置
US10606569B2 (en) Declarative configuration elements

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SHANGHAI DONGFANG TONGTAI SOFTWARE TECHNOLOGY CO.,

Effective date: 20131029

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20131029

Address after: Beijing City 100080 square Haidian District Road No. 10 Building 3 layer 1+1

Applicant after: Beijing Tongtech Co.,Ltd.

Applicant after: SHANGHAI DONGFANGTONG SOFTWARE TECHNOLOGY CO., LTD.

Address before: Beijing City 100080 square Haidian District Road No. 10 Building 3 layer 1+1

Applicant before: Beijing Tongtech Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant