CN104978182B - 一种将JAR文件解析成java的方法及系统 - Google Patents
一种将JAR文件解析成java的方法及系统 Download PDFInfo
- Publication number
- CN104978182B CN104978182B CN201410543003.XA CN201410543003A CN104978182B CN 104978182 B CN104978182 B CN 104978182B CN 201410543003 A CN201410543003 A CN 201410543003A CN 104978182 B CN104978182 B CN 104978182B
- Authority
- CN
- China
- Prior art keywords
- array
- module
- instruction
- handler
- exception
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种将JAR文件解析成java的方法及系统,首先,基于class文件的结构规范,解析获得二进制字节码形成数组A,并获取exception_table异常表,提取异常表中的每条内容形成新的结构,对于各结构之间指令与起始位置的偏移值相同的结构进行合并形成数组C;遍历数组A,在存在跳转或者被跳转相关的指令处进行分割,形成最小分割模块,基于JVM指令的逻辑关系按照执行顺序重新排列各分割模块形成数组E;基于所述数组C对数组E进行完善后,递归输出数组E。本发明给出的方法和系统,完成了将JAR文件解析成java文件,并克服了传统方法含有goto‑label的情况,而且计算机可读性更强。
Description
技术领域
本发明涉及网络安全技术领域,尤其涉及一种将JAR文件解析成java的方法及系统。
背景技术
就像MP3格式的文件记录着声音信息,avi格式的文件记录着视频信息,与此相同,Jar文件是class的集合,按照class文件规范,保存着一系列二进制的数据,纪录着信息。Jar文件中二进制数据的可读性不高,用java语言复述出这段二进制数据的含义可以方便分析者读懂Jar文件的内容。这里用Java语言复述Jar文件的过程叫做Jar转Java。
class文件是JVM(java虚拟机)可执行文件,其中二进制代码中包含内容信息有顺序结构,选择结构和循环结构。JVM按照JVM规范可以从上到下执行class的二进制文件。由于计算机不懂JVM规范,class文件想表达的顺序结构,选择结构和循环结构在计算机看来则是杂乱无章的。
传统方式解析出的java文件含有goto标签,这样比较繁琐并且导致java可读性不高。
发明内容
针对上述技术问题,本发明提供了一种将JAR文件解析成java的方法及系统,该方法将计算机无法识别而JVM可以识别的跳转、选择和判断等指令转化为计算机可以识别的顺序执行的指令,并且利用本发明所述的技术方案最终得到的java文件是不带goto标签的,从而达到简易解析JAR文件,并提高了可读性。
本发明采用如下方法来实现:一种将JAR文件解析成java的方法,包括:
基于class文件的结构规范,解析获得二进制字节码并存入数组A;
基于class文件的结构规范,获取exception_table异常表;所述exception_table异常表内包含一些数值,是try_catch的索引;
提取exception_table异常表中的每条内容并保存在预定义结构中,所述结构为:
struct
{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;将得到的各结构存入数组B;
将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C;
遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D;
基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;其目的在于消除计算机不能够识别的需要跳转的指令,例如条件判断指令、跳转指令和选择分支指令等,重新排序成不懂JVM规范的计算机能识别的顺序;
将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若输出过,则不输出该模块内容,否则输出该模块内容。
进一步地,所述基于JVM指令规范识别与跳转或者被跳转相关的指令前,还包括:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
进一步地,所述将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成的新结构为:
struct
{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
进一步地,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。所述branch是类似链表的指针。
本发明采用如下系统来实现:一种将JAR文件解析成java的系统,包括:
数组A生成模块,基于class文件的结构规范,解析获得二进制字节码并存入数组A;
异常表获取模块,基于class文件的结构规范,获取exception_table异常表;所述exception_table异常表内包含一些数值,是try_catch的索引;
数组B生成模块,用于提取exception_table异常表中的每条内容并保存在预定义结构中,所述结构为:
struct
{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;
将得到的各结构存入数组B;
数组C生成模块,用于将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C中;
数组D生成模块,用于遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D中;
数组E生成模块,基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;其目的在于消除计算机不能够识别的需要跳转的指令,例如条件判断指令、跳转指令和选择分支指令等,重新排序成不懂JVM规范的计算机能识别的顺序;
数组E完善模块,用于将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
递归输出模块,用于递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若输出过,则不输入该模块内容,否则输出该模块内容。
进一步地,还包括指令分类模块:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
进一步地,数组C生成模块中所述的新结构为:
struct
{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
进一步地,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。
综上所述,本发明提供了一种将JAR文件解析成java的方法及系统,本发明所提供的技术方案基于class文件本身的结构规范,首先获取字节码和exception_table异常表;并基于异常表中的每条内容生成新的结构形式,该结构中包括起始指令或结束指令与起始位置的偏移值,还有预设的异常处理方式。同时,从头到尾遍历字节码,在遇到涉及到跳转或者被跳转的指令处进行分割,形成所述字节码的最小分割模块,并基于JVM指令的逻辑关系,将上述分割模块按照执行顺序进行重新排列,并经过一定的完善后递归输出,从而消除了传统解析结果中包含的goto-label,并形成了可读性较高的java文件。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种将JAR文件解析成java的方法实施例流程图;
图2为本发明提供的一种将JAR文件解析成java的系统实施例结构图。
具体实施方式
本发明给出了一种将JAR文件解析成java的方法及系统,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种将JAR文件解析成java的方法实施例,如图1所示,包括:
S101基于class文件的结构规范,解析获得二进制字节码并存入数组A;
S102基于class文件的结构规范,获取exception_table异常表;
其中,class文件存储的信息可以通过常量池和code属性获取,exception_table异常表属于code属性的一部分,可以根据class文件的结构规范获取;
例如:exception_table:
上述exception_table的意思是指令0到9既抛出15的异常,也会抛出21的异常;
S103提取exception_table异常表中的每条内容并保存在预定义结构中,将得到的各结构存入数组B;
所述结构为:
struct
{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;
S104将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C;
S105遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D;
其中,所述分割模块可以但不限于下述结构:
public class CodeBlock
{public int offset=-1;//起始位置
Public ArrayList<Integer>values=new ArrayList<Integer>();//跳转位置
Public int tag=-1;//第几个模块
Public ArrayList<OpInstruction>instructions=new ArrayList<OpInstruction>();//模块中包含的指令
Public int flag=-1;//当前offset指令的分类
Public ArrayList<Integer>cases=new ArrayList<Integer>();//如果是switch
Public ArrayList<Integer>trycatchoffset=new ArrayList<Integer>();//如果是try_catch
}
S106基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;
其中,所述按照执行顺序进行重新排列,是指按照计算机能够读懂的顺序重新排列;去除掉JVM虚拟机能够识别的条件判断指令、跳转指令和选择分支指令等于需要跳转相关的指令;
其中,需要进行如下判断操作:
(1)判断while和do while和while(true)逻辑和找到while和do while和while(true)的退出点;
(2)判断if和if-else逻辑和找到while和do while和while(true)的退出点;
(3)判断continue和break逻辑;
(4)判断switch逻辑和找到switch的退出点;
S107将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
S108递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若是,则执行S109,否则执行S110;
S109不输出该模块内容;
S110输出该模块内容。
上述方法实施例中各步骤之间的先后顺序并不唯一,S101、S105和S106按先后顺序执行,S102、S103和S104按先后顺序执行,但是这两条分支之间可以并行进行,并不限于上述实施例的执行顺序。
优选地,所述基于JVM指令规范识别与跳转或者被跳转相关的指令前,还包括:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
其中,所述16类包括:
define flag_default=0;define flag_one=1;
define flag_condition=2;define flag_constant=3;
define flag_goto=4;define flag_ref=5;
define flag_switch=6;define flag_load=7;
define flag_store=8;define flag_math=9;
define flag_transfor=10;define flag_iins=11;
define flag_return=12;define flag_stack=13;
define StoreAndLodins=14;define flag_athrow=15;
优选地,所述将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成的新结构为:
struct
{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
优选地,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。
本发明还提供了一种将JAR文件解析成java的系统实施例,如图2所示,包括:
数组A生成模块201,基于class文件的结构规范,解析获得二进制字节码并存入数组A;
异常表获取模块202,基于class文件的结构规范,获取exception_table异常表;
数组B生成模块203,用于提取exception_table异常表中的每条内容并保存在预定义结构中,所述结构为:
struct
{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;
将得到的各结构存入数组B;
数组C生成模块204,用于将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C中;
数组D生成模块205,用于遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D中;
数组E生成模块206,基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;
数组E完善模块207,用于将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
递归输出模块208,用于递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若输出过,则不输入该模块内容,否则输出该模块内容。
优选地,还包括指令分类模块:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
优选地,数组C生成模块中所述的新结构为:
struct
{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
优选地,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。
如上所述,本发明给出了一种将JAR文件解析成java的方法及系统,对于传统方法来说,解析出的java文件通常都含有goto标签,可读性不高。而上述所提供的实施例,通过利用class文件的结构规范解析得到二进制字节码和异常表;并遍历字节码遇到JVM规范中与跳转和被跳转相关的指令则进行标记,基于标记处进行分割形成多个分割模块,并基于JVM指令的逻辑关系各个分割模块重新排序成为计算机可读顺序执行的模式;同时,对异常表中的信息进行结构化处理,进行一定的优化之后用于完善上述重新排序的分割模块;然后,递归输出各分割模块本身的内容,再读取branch和trycatchbranch信息,从而达到消除传统方式伴有goto label的缺点,提高了解析得到的java文件的可读性。
以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。
Claims (8)
1.一种将JAR文件解析成java的方法,其特征在于,包括:
基于class文件的结构规范,解析获得二进制字节码并存入数组A;
基于class文件的结构规范,获取exception_table异常表;
提取exception_table异常表中的每条内容并保存在预定义结构中,所述结构为:
struct{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;将得到的各结构存入数组B;
将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C;
遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D;
基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;
将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若输出过,则不输出该模块内容,否则输出该模块内容。
2.如权利要求1所述的方法,其特征在于,所述基于JVM指令规范识别与跳转或者被跳转相关的指令前,还包括:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
3.如权利要求1所述的方法,其特征在于,所述将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成的新结构为:
struct{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
4.如权利要求1所述的方法,其特征在于,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。
5.一种将JAR文件解析成java的系统,其特征在于,包括:
数组A生成模块,基于class文件的结构规范,解析获得二进制字节码并存入数组A;
异常表获取模块,基于class文件的结构规范,获取exception_table异常表;
数组B生成模块,用于提取exception_table异常表中的每条内容并保存在预定义结构中,所述结构为:
struct{int start_pc;int end_pc;int handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式;
将得到的各结构存入数组B;
数组C生成模块,用于将数组B中的各结构中具备相同start_pc和end_pc的handler进行合并后形成新结构,并将各新结构存入数组C中;
数组D生成模块,用于遍历数组A,基于JVM指令规范识别与跳转或者被跳转相关的指令并进行分割标记,基于分割标记形成分割模块,并将所述分割模块添加至数组D中;
数组E生成模块,基于JVM指令的逻辑关系,将所述分割模块按照执行顺序进行重新排列,并存入数组E;
数组E完善模块,用于将数组C中的各结构的start_pc和end_pc,与E中的各分割模块的offset进行比较,如果start_pc和end_pc在E的相邻两个分割模块的offset之间,则将C中的该结构的handler内容保存在E的trycatchbranch中;所述offset为指令与起始位置的偏移值;
递归输出模块,用于递归输出每个分割模块自身的内容,然后读取branch信息和trycatchbranch信息,并判断所述branch信息和trycatchbranch信息所指向的模块是否输出过,若输出过,则不输入该模块内容,否则输出该模块内容。
6.如权利要求5所述的系统,其特征在于,还包括指令分类模块:基于JVM指令规范将指令按照功能分为16类,包括但不限于:条件判断类、跳转类和选择分支类。
7.如权利要求5所述的系统,其特征在于,数组C生成模块中所述的新结构为:
struct{int start_pc;int end_pc;int[]handler;};
所述start_pc为起始指令与起始位置的偏移值,所述end_pc为结束指令与起始位置的偏移值,所述handler为预设的异常处理方式。
8.如权利要求5所述的系统,其特征在于,所述branch信息中保存的是逻辑索引信息;所述trycatchbranch信息中保存的是exception_table的索引信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410543003.XA CN104978182B (zh) | 2014-10-15 | 2014-10-15 | 一种将JAR文件解析成java的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410543003.XA CN104978182B (zh) | 2014-10-15 | 2014-10-15 | 一种将JAR文件解析成java的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104978182A CN104978182A (zh) | 2015-10-14 |
CN104978182B true CN104978182B (zh) | 2018-05-22 |
Family
ID=54274721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410543003.XA Active CN104978182B (zh) | 2014-10-15 | 2014-10-15 | 一种将JAR文件解析成java的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104978182B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427856B (zh) * | 2020-03-11 | 2023-06-02 | 北京明略软件系统有限公司 | 一种Java数据的处理方法和装置 |
CN118519637A (zh) * | 2023-02-17 | 2024-08-20 | 华为技术有限公司 | 一种编译方法、解析方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN102736980A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种面向Java程序的随机测试用例生成方法 |
CN103235733A (zh) * | 2013-04-22 | 2013-08-07 | 四三九九网络股份有限公司 | 一种批量解析flash小游戏为byte code的方法和装置 |
-
2014
- 2014-10-15 CN CN201410543003.XA patent/CN104978182B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101980213A (zh) * | 2010-11-23 | 2011-02-23 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
CN102736980A (zh) * | 2012-06-29 | 2012-10-17 | 南京大学 | 一种面向Java程序的随机测试用例生成方法 |
CN103235733A (zh) * | 2013-04-22 | 2013-08-07 | 四三九九网络股份有限公司 | 一种批量解析flash小游戏为byte code的方法和装置 |
Non-Patent Citations (1)
Title |
---|
JavaClass文件的结构分析及其解析执行;张洪娜 等;《计算机应用与软件》;20110731;第28卷(第7期);第180-182页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104978182A (zh) | 2015-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bille et al. | String matching with variable length gaps | |
US11934938B2 (en) | Neural network for chemical compounds | |
CN103020176B (zh) | Xml解析中数据块划分方法和xml解析方法 | |
CN107622230A (zh) | 一种基于区域识别与分割的pdf表格数据解析方法 | |
CN103365992B (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN105117387B (zh) | 一种智能机器人交互系统 | |
CN102279738A (zh) | 标识强连通分量的入口和出口的技术 | |
CN105335481B (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
US20210358570A1 (en) | Method and system for claim scope labeling, retrieval and information labeling of gene sequence | |
CN106503008B (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CA2997061A1 (en) | Method and system for parallelization of ingestion of large data sets | |
CN104077385A (zh) | 一种文件的分类及检索方法 | |
CN109791492A (zh) | 流水线相关树查询优化器和调度器 | |
CN104978182B (zh) | 一种将JAR文件解析成java的方法及系统 | |
CN110442826B (zh) | 基于页面标识的跨层级页面跳转方法、装置和系统 | |
CN110263021B (zh) | 一种基于个性化标签体系的主题库生成方法 | |
CN107025212A (zh) | 编码方法、编码装置、解码方法和解码装置 | |
CN110245137A (zh) | 一种索引的处理方法、装置及设备 | |
US11422998B2 (en) | Data management system, data management device, data management method, and storage medium | |
Di et al. | A RFID anti-collision algorithm based on multithread regressive-style binary system | |
CN105574124A (zh) | 一种基于产品信息的数据存储系统 | |
CN105224642B (zh) | 实体标签的抽取方法和装置 | |
CN104008136A (zh) | 一种文本查找的方法和装置 | |
CN105224697B (zh) | 带过滤条件的排序方法和用于执行所述方法的装置 | |
CN109992630B (zh) | 数据模型匹配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 430000 Hubei city Wuhan East Lake New Technology Development Zone 8 Huacheng Road 8 Wuhan software new town industry three phase C20 building Applicant after: Wuhan Antian Information Technology Co., Ltd. Address before: 430000 Hubei Development Zone, East Lake, Optics Valley Venture Street, building 6, building 2, building Applicant before: Wuhan Antian Information Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |