CN117389958B - 一种mo文件的查找和处理方法 - Google Patents
一种mo文件的查找和处理方法 Download PDFInfo
- Publication number
- CN117389958B CN117389958B CN202311674460.8A CN202311674460A CN117389958B CN 117389958 B CN117389958 B CN 117389958B CN 202311674460 A CN202311674460 A CN 202311674460A CN 117389958 B CN117389958 B CN 117389958B
- Authority
- CN
- China
- Prior art keywords
- file
- model library
- searching
- loader
- cache
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 239000007787 solid Substances 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000003860 storage Methods 0.000 claims description 30
- 238000004458 analytical method Methods 0.000 claims description 16
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 3
- 238000004088 simulation Methods 0.000 abstract description 3
- 238000005094 computer simulation Methods 0.000 abstract description 2
- 230000006399 behavior Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007711 solidification Methods 0.000 description 2
- 230000008023 solidification Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及计算机仿真领域,公开了一种mo文件的查找和处理方法。查找mo文件时,先在模型库类加载器的内存缓存中进行查找,按照模型库类加载器层级高低关系从高到低的顺序,在各模型库类加载器内存缓存中查找,如果查找未果,则从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存。若查找到的mo文件为SRC数据结构对象格式,则不进行处理;若非SRC数据结构对象格式,则进行处理,存入相应的缓存中。这种查找和处理方法,查找速度快,且不会重复查找,在编译mo的过程中快速查找并转换成所需要的SRC数据结构对象,用于后续的编译仿真工作,加快整体编译速度。
Description
技术领域
本发明涉及计算机仿真领域,尤其涉及一种mo文件的查找和处理方法。
背景技术
Modelica是一种用于建模和仿真复杂系统的开放标准建模语言。它提供了一种描述物理系统的方式,包括机械、电气、热力、控制和其他领域的系统。Modelica还是一种基于对象的语言,允许用户描述系统的物理结构、组件之间的连接和它们之间的行为。
Modelica模型描述的是系统的物理行为,而不仅仅是数学方程。这使得Modelica成为一种强大的工具,可以用于建模和仿真各种复杂系统,从汽车和飞机到能源系统和工业过程。
使用Modelica语言,可以创建模型,这些模型由各种组件(如电机、传感器、阀门等)组成,这些组件相互交互以描述系统的行为。Modelica提供了丰富的内置库,涵盖了各种领域的建模需求,例如电气、机械、控制等。
运行Modelica模型需要加载多种模块或组件,模块或组件存储于mo文件中,如用户创建的Modelica内置库中的各种组件对应的mo文件,对于mo文件的查找及加载是一项非常复杂且耗时的工作,影响程序的编译、运行效率。
因此,针对Modelica语言模型亟需一种能够快速查找、准确加载mo文件的方法。
发明内容
为了解决上述技术问题,本发明提供了一种基于Modelica语言模型的mo文件的查找和处理方法,实现了快速编译Modelica语言生成可执行求解器的目的,提高了编译Modelica语言模型的正确性及编译速度。
本发明提供的一种mo文件的查找方法,具体包括如下步骤:
步骤S1:根据mo文件的编译请求,确定查找对象,将所述查找对象输入类加载器中进行查找;
所述类加载器包括多个模型库类加载器,所述多个模型库类加载器具有不同层级,每个所述模型库类加载器中包含多级缓存;
步骤S2:基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在所述模型库类加载器中进行查找;
步骤S3:判断查找结果:
若查找到所述mo文件,则结束查找;
若未查找到所述mo文件,返回未查找到的异常信息。
具体地,所述模型库类加载器包括基础类型加载器、标准库类型加载器、商业库类型加载器、用户库类型加载器;
所述模型库类加载器的层级高低关系,按照从高到低的顺序为:用户库类型加载器>商业库类型加载器>标准库类型加载器>基础类型加载器。
进一步地,所述缓存包括内存缓存、固态缓存和硬盘存储,所述内存缓存、固态缓存和硬盘存储缓存级别从高到低的顺序为:内存缓存>固态缓存>硬盘存储。
进一步地,步骤S2中,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在所述模型库类加载器中进行查找,具体包括:
步骤S21:按照所述模型库类加载器层级从高到低的顺序,在各模型库类加载器内存缓存中查找;
若在所述模型库类加载器的内存缓存中查找到所述mo文件,执行步骤S3;
若在所述模型库类加载器的内存缓存中未查找到所述mo文件,执行步骤S22;
步骤S22:从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找;
若在所述模型库类加载器的固态缓存中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的内存缓存;
若在所述模型库类加载器的硬盘存储中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的固态缓存和内存缓存。
具体地,所述内存缓存中存储所述mo文件的数据结构对象格式,所述固态缓存中存储所述mo文件的数据结构对象序列化后的二进制流文件格式,所述硬盘存储中存储所述mo文件的原始格式。
本发明还提供一种mo文件的处理方法,由上述任一项所述的一种mo文件的查找方法得到mo文件,或者根据mo文件的编译请求给定mo文件,针对所述mo文件进行处理,具体如下:
判断所述mo文件的格式;
若所述mo文件为所述数据结构对象格式,则不进行处理;
若所述mo文件为所述二进制流文件格式,则进行反序列化处理,得到数据结构对象格式的mo文件;
若所述mo文件为所述原始格式,处理步骤包括:
校验原始格式mo文件的合法性,取得合法mo文件;
将所述合法mo文件传入语法解析工具,对所述合法mo文件进行语法和词法分析,生成由所述合法mo文件的内容信息组成的语法树;
转换所述语法树,获得数据结构对象格式的mo文件。
具体地,所述校验所述mo文件合法性,具体包括:
文件是否存在且文件的后缀是否为.mo;
若文件存在且后缀为.mo,则确定所述mo文件合法,得到所述合法mo文件;
若所述mo文件不存在或所述mo文件的后缀不为.mo,则确定所述mo文件为非法文件,直接跳出不再执行后续步骤。
进一步地,对所述合法mo文件进行语法和词法分析,具体包括:根据Modelica语法的g4文件中描述的语法规则,对所述合法mo文件的内容进行词法分析及语法解析:
如果所述合法mo文件的内容不符合所述g4文件中描述的语法规则,则返回错误信息;
如果所述合法mo文件的内容符合所述g4文件中描述的语法规则,则生成所述语法树。
进一步地,所述数据结构对象为SRC数据结构对象。
进一步地,所述语法解析工具为Antlr。
本发明实施例具有以下技术效果:
1.本发明中进行mo文件查找时,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在模型库类加载器中进行查找。当在模型库类加载器的内存缓存中进行查找,按照模型库类加载器层级高低关系从高到低的顺序,在各模型库类加载器内存缓存中查找,如果内存缓存中没有查找,则从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找,查找到后直接返回结果。这种基于模型库类加载器层级高低关系和缓存级别关系的查找方式,查找速度快,不会出现查找到多个的问题,提高软件的编译速度。
2.在查找mo文件过程中,若mo文件在模型库类加载器的内存缓存中查找到,则结束查找操作;若mo文件在模型库类加载器的固态缓存中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存中;若mo文件在模型库类加载器的硬盘存储中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存和固态缓存中。基于上述查找方法和存储方法,下次查找mo文件时,能够快速在模型库类加载器的内存缓存中完成查找,有力提升查找速度。
3.本发明中,若查找到的mo文件为SRC数据结构对象格式,则不进行处理;若查找到的mo文件为二进制流文件格式,则进行反序列化处理,得到SRC数据结构对象格式的mo文件;若查找到的mo文件为原始格式,则进行合法性校验、语法解析、转化等处理,最终获得SRC数据结构对象格式的mo文件。上述的SRC数据结构对象为软件所需的数据结构对象,使用该结构能够快速、准确完成mo文件的加载,用于后续的编译仿真工作,加快了整体编译速度。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种mo文件的查找方法的流程图;
图2是本发明实施例中基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别查找mo文件的流程示意图;
图3是一种mo文件的处理方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
为了解决上述技术问题,本发明提供了一种基于Modelica语言模型的mo文件的查找和处理方法,实现了快速编译Modelica语言生成可执行求解器的目的,提高了编译Modelica语言模型的正确性及编译速度。
图1是本发明实施例提供的一种mo文件的查找方法的流程图,参见图1可知,本发明的提供的一种mo文件的查找方法,具体包括如下步骤:
步骤S1:根据mo文件的编译请求,确定查找对象,将查找对象输入类加载器中进行查找。
即接收到mo文件的编译请求,向类加载器输入要查找模型或组件的名称,作为查找对象,将查找对象输入类加载器中进行查找。
类加载器包括多个模型库类加载器,多个模型库类加载器具有不同层级,每个模型库类加载器中包含多级缓存。
具体地,本发明提供了四个类加载器,分别为基础类型加载器、标准库类型加载器、商业库类型加载器、用户库类型加载器。这四个类加载器相互独立,分别用于加载不同模型库的mo文件。模型库类加载器具有不同层级,层级高低关系按照从高到低的顺序为:用户库类型加载器>商业库类型加载器>标准库类型加载器>基础类型加载器。
其中,用户库类型加载器为商业库类型加载器的子级;商业库类型加载器作为用户库类型加载器的父级的同时,也是标准库类型加载器的子级;标准库类型加载器作为商业库类型加载器的父级的同时,也是基础类型加载器的子级;基础类型加载器为标准库类型加载器的父级。
进一步地,模型库类加载器包含多级缓存,缓存包括内存缓存、固态缓存和硬盘存储,内存缓存、固态缓存和硬盘存储按照缓存级别从高到低的顺序为:内存缓存>固态缓存>硬盘存储。
其中,基础类型加载器、标准库类型加载器、商业库类型加载器均包含3级缓存:内存缓存、固态缓存和硬盘存储,用户库类型加载器包含2级缓存:内存缓存和硬盘存储。
本发明提供的多级缓存机制,用于提高查找mo文件的速度。一级缓存为固化缓存,用于存储从软件安装以来的全部加载过的基础类型加载器、标准库类型加载器、商业库类型加载器中的mo文件。二级缓存为内存缓存,用于存储从软件本次运行以来加载过的全部mo文件。
具体地,内存缓存中存储mo文件的数据结构对象格式,固态缓存中存储mo文件的数据结构对象序列化的二进制流文件格式,硬盘存储中存储mo文件的原始格式。
步骤S2:基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在模型库类加载器中进行查找。
按照该查找顺序,在模型库类加载器中查找到相应的mo文件,找到后会直接返回结果,以确保不会出现查找到多个的问题。
图2是本发明实施例中基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别查找mo文件的流程示意图,参见图2,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在模型库类加载器中进行查找,具体包括:
步骤S21:按照模型库类加载器层级从高到低的顺序,在各模型库类加载器内存缓存中查找。
接收到mo文件编译请求,将请求中模型或组件的名称作为查找对象,将查找对象输入模型库类加载器的内存缓存中进行查找,查找时按照模型库类加载器层级高低关系从高到低的顺序。
具体地,查找顺序为:用户库类型加载器的内存缓存>商业库类型加载器的内存缓存>标准库类型加载器的内存缓存>基础类型加载器的内存缓存。然后判断是否在模型库类加载器的内存缓存中查找到mo文件:
若在模型库类加载器的内存缓存中查找到mo文件,执行步骤S3,判断查找结果。
若在模型库类加载器的内存缓存中未查找到mo文件,执行步骤S22,此时的查找位置停留在基础类型加载器的内存缓存。
步骤S22:从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找。
本发明中进行mo文件查找时,基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在模型库类加载器中进行查找。当在模型库类加载器的内存缓存中进行查找,按照模型库类加载器层级高低关系从高到低的顺序,在各模型库类加载器内存缓存中查找,如果内存缓存中没有查找,则从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找,查找到后直接返回结果。这种基于模型库类加载器层级高低关系和缓存级别关系的查找方式,查找速度快,不会出现查找到多个的问题,提高软件的编译速度。
具体地查找顺序为:基础类型加载器的固态缓存>基础类型加载器的硬盘存储>标准库类型加载器的固态缓存>标准库类型加载器的硬盘存储>商业库类型加载器的固态缓存>商业库类型加载器的硬盘存储>用户库类型加载器的硬盘存储。
判断是否在模型库类加载器的固态缓存中查找到mo文件:
如果在模型库类加载器的固态缓存中查找到mo文件,则将mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的内存缓存,然后执行步骤S3。
如果在模型库类加载器的固态缓存中没有查找到mo文件,继续在当前模型库类加载器的硬盘存储中查找。
判断是否在模型库类加载器的硬盘存储中查找到mo文件:
如果在模型库类加载器的硬盘存储中查找到mo文件,则将mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的固态缓存和内存缓存,然后执行步骤S3。
如果在模型库类加载器的硬盘存储中没有查找到mo文件,执行步骤S3,判断查找结果。
在查找mo文件过程中,若mo文件在模型库类加载器的内存缓存中查找到,则结束查找操作;若mo文件在模型库类加载器的固态缓存中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存中;若mo文件在模型库类加载器的硬盘存储中查找到,则将查找到的mo文件进行数据格式处理,存至当前模型库类加载器的内存缓存和固态缓存中。基于上述查找方法和存储方法,下次查找mo文件时,能够快速在模型库类加载器的内存缓存中完成查找,有力提升查找速度。
步骤S3:判断查找结果:
若查找到mo文件,则结束查找。
若未查找到mo文件,返回未查找到的异常信息。
本发明还提供了一种mo文件的处理方法,由上述任一项的一种mo文件的查找方法得到mo文件,或者根据mo文件的编译请求给定mo文件,针对mo文件进行处理。
图3是一种mo文件的处理方法的流程示意图,由图3可知,mo文件的处理方法具体如下:
判断mo文件的格式。
若mo文件为数据结构对象格式,具体为SRC数据结构对象,则不需要进行处理,直接执行步骤S3,判断查找结果。
若mo文件为二进制流文件格式,则进行反序列化处理,得到数据结构对象格式的mo文件,具体为SRC数据结构对象格式的mo文件;
若mo文件为原始格式,处理步骤包括:
校验原始格式mo文件的合法性,取得合法mo文件;
具体地,校验mo文件合法性,校验内容包括:
文件是否存在且文件的后缀是否为.mo。
若文件真实存在且文件的后缀为.mo,则确定mo文件合法,得到合法mo文件。
若mo文件不存在或mo文件的后缀不为.mo,则确定mo文件为非法文件,直接跳出不再执行后续步骤。
将合法mo文件传入语法解析工具,对合法mo文件进行语法和词法分析,生成由合法mo文件的内容信息组成的语法树。
示例性的,可以使用Antlr作为语法解析工具。该工具会根据Modelica语法的g4文件中描述的语法规则,对合法mo文件的内容进行词法分析及语法解析:
如果合法mo文件的内容不符合g4文件中描述的语法规则,则返回相应的错误信息。
如果合法mo文件的内容符合g4文件中描述的语法规则,则返回一棵由合法mo文件内容信息组成的语法树。
转换语法树,获得SRC数据结构对象格式的mo文件。
本发明自定义了一套用于存储Modelica语言相关信息的数据结构对象,该对象称为SRC数据结构。SRC数据结构为树形结构,每个独立的模型或组件都会生成一棵SRC数据结构树,使用该结构可以更快速便捷的获取Modelica模型或组件的相应信息。
本发明中,若查找到的mo文件为SRC数据结构对象格式,则不进行处理;若查找到的mo文件为二进制流文件格式,则进行反序列化处理,得到SRC数据结构对象格式的mo文件;若查找到的mo文件为原始格式,则进行合法性校验、语法解析、转化等处理,最终获得SRC数据结构对象格式的mo文件。上述的SRC数据结构对象为软件所需的数据结构对象,使用该结构能够快速、准确地完成mo文件的加载,用于后续的编译仿真工作,加快了整体编译速度。
实施例一
步骤A1:接收到mo文件编译请求,将请求中模型或组件的名称作为查找对象,将查找对象输入模型库类加载器的内存缓存中进行查找。
步骤A2:在模型库类加载器的内存缓存中进行查找,按照模型库类加载器层级高低关系从高到低的顺序,在各模型库类加载器内存缓存中查找。
先在用户库类型加载器的内存缓存中进行查找。如果查找到执行步骤A12,如果未查找到,执行步骤A3。
步骤A3:提交至商业库类型加载器的内存缓存中进行查找,如果查找到执行步骤A12,如果未查找到,继续在标准库类型加载器的内存缓存中进行查找。以此类推,遍历所有模型库类加载器的内存缓存如果找到执行步骤A12,如果未找到,记录当前查找位置为基础类型加载器的内存缓存,执行步骤A4。
步骤A4:从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级高低关系从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找。
具体地查找顺序为:基础类型加载器的固态缓存>基础类型加载器的硬盘存储>标准库类型加载器的固态缓存>标准库类型加载器的硬盘存储>商业库类型加载器的固态缓存>商业库类型加载器的硬盘存储>用户库类型加载器的硬盘存储。
固态缓存中存储数据结构对象序列化的二进制流文件格式的mo文件,如果在模型库类加载器的固态缓存中查到到mo文件,执行步骤A5,如果没有在模型库类加载器的固态缓存中查到到mo文件,执行步骤A7。
步骤A5:读取查找到的二进制流文件格式的mo文件的内容,并进行反序列化处理,得到SRC数据结构对象的mo文件。
步骤A6:将得到SRC数据结构对象的mo文件存入当前所在模型库类加载器的内存缓存中,执行步骤A12。
步骤A7:在当前模型库类加载器的硬盘存储中查找mo文件。如果找到执行步骤A8,如果未找到执行步骤A13。
步骤A8:校验mo文件的合法性,并利用Antlr工具解析mo文件内容,生成一棵由合法mo文件内容信息组成的语法树。
步骤A9:转换生成语法树,获得SRC数据结构对象格式的mo文件。
步骤A10:将获得SRC数据结构对象格式的mo文件序列化为二进制字节流格式,并存入当前所在模型库类加载器的固化缓存中。
步骤A11:将生成的SRC数据结构对象格式的mo文件存入当前所在模型库类加载器的内存缓存中。
步骤A12:返回加载到的SRC数据结构对象格式的mo文件,供实例化、检查等后续编译续操作使用,最终编译生成可执行求解器文件供用户仿真使用。
步骤A13:如果以上步骤均为查找到mo文件,返回未找到的异常信息。
需要说明的是,本发明所用术语仅为了描述特定实施例,而非限制本申请范围。如本发明说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
还需说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案。
Claims (7)
1.一种mo文件的查找方法,其特征在于,具体包括如下步骤:
步骤S1:根据mo文件的编译请求,确定查找对象,将所述查找对象输入类加载器中进行查找;
所述类加载器包括多个模型库类加载器,所述多个模型库类加载器具有不同层级,每个所述模型库类加载器中包含多级缓存;
所述模型库类加载器包括基础类型加载器、标准库类型加载器、商业库类型加载器、用户库类型加载器;
所述模型库类加载器的层级高低关系,按照从高到低的顺序为:用户库类型加载器>商业库类型加载器>标准库类型加载器>基础类型加载器;
所述缓存包括内存缓存、固态缓存和硬盘存储,所述内存缓存、固态缓存和硬盘存储缓存级别从高到低的顺序为:内存缓存>固态缓存>硬盘存储;
基础类型加载器、标准库类型加载器、商业库类型加载器均包含3级缓存:内存缓存、固态缓存和硬盘存储,用户库类型加载器包含2级缓存:内存缓存和硬盘存储;
步骤S2:基于多个模型库类加载器的层级高低关系和每个模型库类加载器的缓存级别,在所述模型库类加载器中进行查找,具体包括:
步骤S21:按照所述模型库类加载器层级从高到低的顺序,在各模型库类加载器内存缓存中查找;
若在所述模型库类加载器的内存缓存中查找到所述mo文件,执行步骤S3;
若在所述模型库类加载器的内存缓存中未查找到所述mo文件,执行步骤S22;
步骤S22:从基础类型加载器的固态缓存开始,按照缓存级别从高到低、模型库类加载器层级从低级到高级的顺序,遍历剩余模型库类加载器的各级缓存,进行查找;
若在所述模型库类加载器的固态缓存中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的内存缓存;
若在所述模型库类加载器的硬盘存储中查找到所述mo文件,则将所述mo文件进行处理,将处理后的mo文件存至当前模型库类加载器的固态缓存和内存缓存;
步骤S3:判断查找结果:
若查找到所述mo文件,则结束查找;
若未查找到所述mo文件,返回未查找到的异常信息。
2.根据权利要求1所述的一种mo文件的查找方法,其特征在于:所述内存缓存中存储所述mo文件的数据结构对象格式,所述固态缓存中存储所述mo文件的数据结构对象序列化后的二进制流文件格式,所述硬盘存储中存储所述mo文件的原始格式。
3.一种mo文件的处理方法,其特征在于:由权利要求1-2任一项所述的一种mo文件的查找方法得到mo文件,或者根据mo文件的编译请求给定mo文件,针对所述mo文件进行处理,具体如下:
判断所述mo文件的格式;
若所述mo文件为数据结构对象格式,则不进行处理;
若所述mo文件为二进制流文件格式,则进行反序列化处理,得到数据结构对象格式的mo文件;
若所述mo文件为原始格式,处理步骤包括:
校验原始格式mo文件的合法性,取得合法mo文件;
将所述合法mo文件传入语法解析工具,对所述合法mo文件进行语法和词法分析,生成由所述合法mo文件的内容信息组成的语法树;
转换所述语法树,获得数据结构对象格式的mo文件。
4.根据权利要求3所述的一种mo文件的处理方法,其特征在于:所述校验所述mo文件合法性,具体包括:
文件是否存在且文件的后缀是否为.mo;
若文件存在且后缀为.mo,则确定所述mo文件合法;
若所述mo文件不存在或所述mo文件的后缀不为.mo,则确定所述mo文件为非法文件,直接跳出不再执行后续步骤。
5.根据权利要求3所述的一种mo文件的处理方法,其特征在于:对所述合法mo文件进行语法和词法分析,具体包括:根据Modelica语法的g4文件中描述的语法规则,对所述合法mo文件的内容进行词法分析及语法解析:
如果所述合法mo文件的内容不符合所述g4文件中描述的语法规则,则返回错误信息;
如果所述合法mo文件的内容符合所述g4文件中描述的语法规则,则生成所述语法树。
6.根据权利要求3所述的一种mo文件的处理方法,其特征在于:所述数据结构对象为SRC数据结构对象。
7.根据权利要求3所述的一种mo文件的处理方法,其特征在于:所述语法解析工具为Antlr。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311674460.8A CN117389958B (zh) | 2023-12-08 | 2023-12-08 | 一种mo文件的查找和处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311674460.8A CN117389958B (zh) | 2023-12-08 | 2023-12-08 | 一种mo文件的查找和处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117389958A CN117389958A (zh) | 2024-01-12 |
CN117389958B true CN117389958B (zh) | 2024-04-09 |
Family
ID=89435883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311674460.8A Active CN117389958B (zh) | 2023-12-08 | 2023-12-08 | 一种mo文件的查找和处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117389958B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929597A (zh) * | 2012-09-24 | 2013-02-13 | 摩卡软件(天津)有限公司 | 一种基于Java平台的Web业务支持方法和装置 |
CN105573669A (zh) * | 2015-12-11 | 2016-05-11 | 上海爱数信息技术股份有限公司 | 一种存储系统的io读加速缓存方法和系统 |
CN112068903A (zh) * | 2020-09-21 | 2020-12-11 | 深圳市欢太科技有限公司 | 应用程序的加载方法、应用程序的加载装置、介质与设备 |
CN112631685A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 一种类加载方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7606836B2 (en) * | 2006-08-21 | 2009-10-20 | Tibco Software Inc. | Methods for efficient data version verification |
-
2023
- 2023-12-08 CN CN202311674460.8A patent/CN117389958B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929597A (zh) * | 2012-09-24 | 2013-02-13 | 摩卡软件(天津)有限公司 | 一种基于Java平台的Web业务支持方法和装置 |
CN105573669A (zh) * | 2015-12-11 | 2016-05-11 | 上海爱数信息技术股份有限公司 | 一种存储系统的io读加速缓存方法和系统 |
CN112068903A (zh) * | 2020-09-21 | 2020-12-11 | 深圳市欢太科技有限公司 | 应用程序的加载方法、应用程序的加载装置、介质与设备 |
CN112631685A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 一种类加载方法及装置 |
Non-Patent Citations (2)
Title |
---|
Java动态类加载机制分析及其应用;崔行臣;赵佟;;计算机系统应用;20130715(第07期);187-191 * |
多领域建模语言Modelica类型解析研究与实现;吴民峰;吴义忠;周凡利;陈立平;;计算机工程与应用;20060901(第25期);80-83 * |
Also Published As
Publication number | Publication date |
---|---|
CN117389958A (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227668B (zh) | 数据处理方法和装置 | |
US10394694B2 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
CN111209005B (zh) | 程序文件的编译方法、装置和计算机可读存储介质 | |
EP2510433B1 (en) | Canonicalized versions of reuse candidates in graphical state diagrams | |
CN111722839A (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
CN113626324B (zh) | 一种面向Move语言虚拟机的模糊测试方法 | |
US20050188323A1 (en) | Template creation apparatus and creation method | |
CN113255258B (zh) | 逻辑综合方法、装置、电子设备及存储介质 | |
US10534592B2 (en) | Template expressions for constraint-based systems | |
CN111221842A (zh) | 大数据处理系统及方法 | |
CN111309751A (zh) | 大数据处理方法及装置 | |
US10474435B2 (en) | Configuration model parsing for constraint-based systems | |
CN115509514B (zh) | 一种前端数据模拟方法、装置、设备及介质 | |
CN114091383A (zh) | 测试序列生成方法、装置、系统及相关设备 | |
CN110659063A (zh) | 软件项目重构方法、装置、计算机装置及存储介质 | |
CN117389958B (zh) | 一种mo文件的查找和处理方法 | |
CN114153447B (zh) | 一种自动化生成ai训练代码的方法 | |
CN115222221A (zh) | 智能化集成平台的构建方法、装置、设备及存储介质 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
Ipate et al. | Model learning and test generation using cover automata | |
CN114781294B (zh) | 一种risc-v cpu验证中的签名比较方法及装置 | |
Garcia-Dominguez et al. | Models from Code or Code as a Model? | |
CN117609103A (zh) | 基于viatra的大规模低代码系统模型验证的自动映射方法 | |
CN117992062A (zh) | Ifc格式的三维模型数据转换方法、设备及存储介质 | |
CN117909152A (zh) | 一种接口向下兼容检测方法、系统、计算机及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |