CN111008020A - 将逻辑表达式解析为通用查询语句的方法 - Google Patents
将逻辑表达式解析为通用查询语句的方法 Download PDFInfo
- Publication number
- CN111008020A CN111008020A CN201911344983.XA CN201911344983A CN111008020A CN 111008020 A CN111008020 A CN 111008020A CN 201911344983 A CN201911344983 A CN 201911344983A CN 111008020 A CN111008020 A CN 111008020A
- Authority
- CN
- China
- Prior art keywords
- storage unit
- structure storage
- list
- stack structure
- operators
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Abstract
本发明涉及将逻辑表达式解析为通用查询语句的方法,包括:A.提取逻辑表达式中的元素,形成元素队列;B.将元素队列中的变量放入列表中、运算符和分隔符分别放入栈中,并根据放入栈中运算符的优先级,将该分隔符和相关的运算符从栈弹出并放入列表中;C.遍历完元素队列后将栈中的所有元素弹出放入列表形成可解析列表;D.配置运算符的映射表;将可解析列表中的元素放入栈,当前为运算符时,将运算符映射为数据源运算符并与已放入的相关变量组装为变量语句放入栈中;E.遍历完可解析列表后输出栈中查询语句。本发明能够适配不同的数据源的逻辑表达式,自动生成不同数据源的查询语句,极大的减少了开发人员代码的开发、维护工作。
Description
技术领域
本发明涉及对逻辑表达式的解析方法,具体讲是将逻辑表达式解析为通用查询语句的方法。
背景技术
在软件的开发的过程中经常会遇到不同的数据库、系统、数据源之间的接口相互对接的问题,如页面与应用后台的接口对接、App与服务器间接口对接,不同系统内间接口的对接。通常在不同系统的接口对接过程中,开发人员会进行条件的约定,以适配不同的业务需求,如:(条件A>0&&条件B>1)||(条件C=0)等。通常情况下,后端接口会根据业务条件进行定制化的开发,但是面对复杂的业务场景,开发人员是不可能在接口里穷举所有的条件分支,这样就会造成每次业务的修改都要进行相应的定制化开发。例如,在开发的工程中引入Google的Aviator Java工具包文件(一种高性能、轻量级的java语言实现的表达式求值引擎,可以进行各种表达式的动态解析求值),然后需要在业务代码里动态组装具体的表达式,如:(2>1&&1>0)||(-1>-2),通过调用Aviator Java工具包提供的表达式API来进行解析。
现有解析方法的弊端在于:
(1)依赖于第三方工具包,在被动升级时会带来大量的维护工作;
(2)业务场景单一,只支持内存中计算;
(3)不能对现有的各种数据源进行动态的配置;
(4)不能适配多种数据源,如Hbase(一种分布式的、面向列的开源数据库)、Solr(一种采用Java开发的全文搜索引擎)等。
发明内容
本发明提供了一种将逻辑表达式解析为通用查询语句的方法,以适配不同的数据源的逻辑表达式,自动生成不同数据源的查询语句,从而适配复杂业务场景下的所有条件可能性。
本发明将逻辑表达式解析为通用查询语句的方法,包括:
A.将逻辑表达式中的元素分为变量、运算符和分隔符三类,在解析装置的内存中建立队列结构存储单元,将逻辑表达式中的所有元素从左到右逐一提取出来放入所述的队列结构存储单元中,形成元素队列;元素队列中每个元素分别存放在队列结构存储单元的不同内存地址;通常,将逻辑表达式中的数字、字母、数据库字段等元素认为是变量,具有运算或判断属性的符号为运算符,如“>”、“&&”、“||”等,成对的括号“()”为分隔符。
B.在所述内存中建立列表结构存储单元和栈结构存储单元;遍历所述的元素队列,将元素队列中的变量依次放入所述列表结构存储单元中、运算符和分隔符分别依次放入栈结构存储单元中,并根据放入栈结构存储单元中的运算优先级属性的分隔符,将该分隔符和相关的运算符依次从栈结构存储单元弹出并放入列表结构存储单元中(弹出的元素不再保存于栈结构存储单元中);
C.遍历完元素队列后,将栈结构存储单元中剩余的所有元素按后进先出的顺序弹出栈结构存储单元(弹出的元素不再保存于栈结构存储单元中),并依次放入列表结构存储单元中,形成可解析列表;
D.解析逻辑表达式:配置逻辑表达式中的运算符和数据源运算符的映射表;遍历所述可解析列表,将可解析列表中的元素依次放入栈结构存储单元,如果当前放入的元素为运算符,则根据所述映射表将该运算符映射为数据源运算符,将栈结构存储单元中与当前运算符相关的变量分别从栈结构存储单元中弹出并与所述映射的数据源运算符组装为变量语句,再将所述变量语句放入栈结构存储单元中(弹出的变量不再保存于栈结构存储单元中);
E.遍历完可解析列表后,栈结构存储单元中保存的数据为解析后的查询语句。
本发明的核心在于,对逻辑表达式按运算的规律进行解析后,通过配置逻辑表达式中的运算符和数据源运算符的映射表,通过运算符的映射使不同数据源之间的查询语句能够相互适配,尤其是在复杂业务场景下通常调用的是数据源(如:Hbase、ES等数据源)的API接口,本发明能够提供统一的可配置的接口,极大减少了开发人员代码的开发、维护工作。
进一步的,步骤B中在对栈结构存储单元放入元素时,如果当前放入栈结构存储单元中的元素为结束运算优先级属性的分隔符(例如右括号“)”),则将栈结构存储单元中所述结束运算优先级属性的分隔符和与该分隔符对应的开始运算优先级属性的分隔符(例如左括号“(”)之间的所有运算符、以及所述的开始运算优先级属性的分隔符和结束运算优先级属性的分隔符,按后进先出的顺序弹出栈结构存储单元,并依次放入列表结构存储单元中。
具体的,步骤D中所述的与当前运算符相关的变量,是在栈结构存储单元中在当前运算符前2个变量。
进一步的,步骤A中,如果逻辑表达式中的不同运算符之间有优先级区别,则将优先级高的运算符与其前一个变量和后一个变量合并视为一个组合变量提取到队列结构存储单元中,作为元素队列中的一个变量性质的元素;步骤C中,将栈结构存储单元中剩余的所有元素按后进先出的顺序弹出栈结构存储单元,并依次放入列表结构存储单元中后,再对所述组合变量进行解析。例如,逻辑表达式为:a>b&&c<d,因为运算符“>”和“<”的优先级高于“&&”,因此在步骤A的提取时,先进行“>”和“<”的计算,将“a>b”和“c<d”视为一个整体,作为一个变量性质的组合变量来提取。
进一步的,在对组合变量进行解析时,先将组合变量中的变量依次放入栈结构存储单元的该组合变量的对应位置,再将组合变量中的运算符放入所述变量之后的该组合变量的对应位置。例如组合变量为“a>b”,解析后在栈结构存储单元中的存储为:(’a’,’b’,’>’)
可选的,如果逻辑表达式中的变量均为数字变量,步骤B中根据放入栈结构存储单元中的运算优先级属性的分隔符,将该分隔符和相关的运算符依次从栈结构存储单元弹出后,只将所述相关的运算符放入列表结构存储单元中。当变量均为数字类型时,可以只将运算符放入列表结构存储单元中来简化运算,不影响最终的结果。
本发明将逻辑表达式解析为通用查询语句的方法,能够适配不同的数据源的逻辑表达式,自动生成不同数据源的查询语句,从而能够广泛的适配复杂业务场景下的所有条件可能性,极大的减少了开发人员代码的开发、维护工作,同时还丰富了业务场景,有效增强了系统的扩展性。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明将逻辑表达式解析为通用查询语句的方法的流程图。
具体实施方式
名词解释:
栈结构存储单元(Stack):一种数据存储结构,按照后进先出的原则存储数据。
列表(List):一种数据存储结构,双向的循环链表,与数组类似。
Hbase:一种分布式的、面向列的开源数据库。
Solr:一种采用Java语言开发的高性能全文搜索引擎。
如图1所示本发明将逻辑表达式解析为通用查询语句的方法,包括:
A.将逻辑表达式中的元素分为变量、运算符和分隔符三类,在解析装置的内存中建立队列结构存储单元,将逻辑表达式中的所有元素从左到右逐一提取出来放入所述的队列结构存储单元中,形成元素队列;元素队列中每个元素分别存放在队列结构存储单元的不同内存地址;通常,将逻辑表达式中的数字、字母、数据库字段等元素认为是变量,具有运算或判断属性的符号为运算符,如“>”、“&&”、“||”等,成对的括号“()”为分隔符。如果逻辑表达式中的不同运算符之间有优先级区别,则将优先级高的运算符与其前一个变量和后一个变量合并视为一个组合变量提取到队列结构存储单元中,作为元素队列中的一个变量性质的元素;
B.在所述内存中建立列表结构存储单元和栈结构存储单元;遍历所述的元素队列,将元素队列中的变量依次放入所述列表结构存储单元中、运算符和分隔符分别依次放入栈结构存储单元中,如果当前放入栈结构存储单元中的元素为结束运算优先级属性的分隔符(例如右括号“)”),则将栈结构存储单元中所述结束运算优先级属性的分隔符和与该分隔符对应的开始运算优先级属性的分隔符(例如左括号“(”)之间的所有运算符、以及所述的开始运算优先级属性的分隔符和结束运算优先级属性的分隔符,按后进先出的顺序弹出栈结构存储单元(弹出的元素不再保存于栈结构存储单元中),并依次放入列表结构存储单元中。如果逻辑表达式中的变量均为数字变量,将运算优先级属性的分隔符和相关的运算符依次从栈结构存储单元弹出后,只将所述相关的运算符放入列表结构存储单元中,简化运算的同时,也不会影响最终的结果。
C.遍历完元素队列后,将栈结构存储单元中剩余的所有元素按后进先出的顺序弹出栈结构存储单元(弹出的元素不再保存于栈结构存储单元中),并依次放入列表结构存储单元中。如果在列表结构存储单元中包含有步骤A所述的组合变量,则再对所述组合变量进行解析,先将组合变量中的变量依次放入栈结构存储单元的该组合变量的对应位置,再将组合变量中的运算符放入所述变量之后的该组合变量的对应位置。最后形成可解析列表;
D.解析逻辑表达式:配置逻辑表达式中的运算符和数据源运算符的映射表;遍历所述可解析列表,将可解析列表中的元素依次放入栈结构存储单元,如果当前放入的元素为运算符,则根据所述映射表将该运算符映射为数据源运算符,将栈结构存储单元中在当前运算符前2个变量分别从栈结构存储单元中弹出,并与所述映射的数据源运算符组装为变量语句,再将所述变量语句放入栈结构存储单元中(弹出的变量不再保存于栈结构存储单元中);
E.遍历完可解析列表后,栈结构存储单元中保存的数据为解析后的查询语句。
实施例1:
以纯数字类型的逻辑表达式:3+(3-0)*2为例,该逻辑表达式分为三个部分,变量(3、0、2)、运算符(+、-、*)、分隔符(括号())。
生成逻辑表达式的可解析的列表:
1、声明逻辑表达式:3+(3-0)*2;
2、遍历声明的逻辑表达式,在队列结构存储单元中生成基础列表:("3","+","(","3","-","0",")","*","2");
3、声明一个列表结构存储单元(list)和一个栈结构存储单元(stack);
4、遍历列表基础列表,将变量放入list,运算符压入stack;
5、遇到变量"3",放入list('3');
6、遇到运算符"+",压入stack('+');
7、遇到分隔符"(",压入stack('+','(');
8、遇到变量"3",放入list('3','3');
9、遇到运算符"-",压入stack('+','(','-');
10、遇到变量"0",放入list('3','3','0');
11、遇到分隔符")",依次弹出stack中的运算符并放入list,直到遇到"("为止。因为声明的逻辑表达式中的变量为纯数字,因此只将相关的运算符放入list中,本次操作弹出运算符'-'放入list('3','3','0','-');
12、遇到运算符"*",压入stack('+','*');
13、遇到变量"2",放入list('3','3','0','-','2');
14、依次压出stack中的运算符,放入到list('3','3','0','-','2','*','+'),当前列表list就是最终的可解析的列表。
然后解析逻辑表达式:
1、获取生成好的可解析列表("3","3","0","-","2","*","+");
2、遍历可解析列表,将其中的元素压入栈结构存储单元(stack);
3、可解析列表的前三个元素均为变量,当前栈结构存储单元为:stack('3','3','0');
4、遍历到运算符"-",stack('3','3','0')弹出"-"之前的2个变量"3","0",stack中还剩下数据stack('3'),弹出的变量根据运算符"-"计算得出结果3-0=3,将结果"3"压入栈结构存储单元:statck('3','3');
5、遍历到变量"2",将该变量压入栈结构存储单元:stack('3','3','2');
6、遍历到运算符"*",stack('3','3','2')弹出"*"之前的2个变量"3","2",stack中还剩下数据stack('3'),弹出的变量根据运算符"*"计算得出结果3*2=6,将结果"6"压入栈结构存储单元:statck('3','6');
7、遍历到运算符"+",stack('3','6')弹出变量"3","6",当前stack中无任何数据,弹出的变量与运算符"+"计算得出结果3+6=9,最后返回结果9。
实施例2:
以Hbase(一种分布式的、面向列的开源数据库)和Solr(一种采用Java开发的全文搜索引擎)为例,需要将Hbase和Solr两个不同的数据接口对接。其中以Solr为数据源。
业务模块如表1:
表1:
模块名 | 数据源 | 表名 |
业务1查询模块 | Hbase | hbase_1 |
业务2查询模块 | Solr | solr_1 |
业务字段映射如表2:
表2:
模块名 | 查询字段名 | 表中真实字段名 | 字段数据类型 |
业务2查询模块 | a | solr_col_1 | string |
业务2查询模块 | b | solr_col_2 | int |
业务2查询模块 | c | solr_col_3 | string |
配置运算符的映射表,如表3:
表3:
模块名 | 数据源 | 查询运算符 | 数据源运算符 |
业务1查询模块 | solr | && | and |
业务1查询模块 | solr | || | or |
业务1查询模块 | solr | > | :[?TO*] |
业务1查询模块 | solr | < | :[*TO?] |
业务1查询模块 | solr | == | : |
假设此对接的接口所属"业务2查询模块",匹配已经生成好查询逻辑表达式,逻辑表达式示例为:"a>3||(b<3&&c==0)"。
1、因为在该逻辑表达式中的各运算符有优先级差异,"||"和"&&"比">"、"<"、"=="的优先级低,因此将"a>3"、"b<3"和"c==0"分别作为一个组合变量,运算符是"&&"和"||",分隔符是"("和")"。按照步骤A至步骤C,以及实施例1的方式生成可解析的列表:
list中的元素为list('a>3','b<3','c==0'),stack中的元素为stack('||','(','&&',')');到压入分隔符")"后,弹出"("、"&&"、")",放入list。list变为list('a>3','b<3','c==0','(','&&',')'),最后将stack里剩下的所有元素(此时只剩下"||")弹出,放入list:list('a>3','b<3','c==0','(','&&',')','||')。
然后再对各组合变量按照步骤A至步骤C解析,3个组合变量解析后得到最终的可解析列表:("a","3",">","b","3","<","c","0","==","(","&&",")","||")。
2、然后解析逻辑表达式:获取生成好的可解析列表("a","3",">","b","3","<","c","0","==","(","&&",")","||"),遍历可解析列表,将变量压入栈stack;
3、可解析列表的前两个元素均为变量,当前栈为stack('a','3');
4、遍历到运算符">",stack('a','3')弹出变量"a","3",根据变量"a"从表2中获取真实字段名"solr_col_1",从表3中获取运算符">"映射的数据源运算符":[?TO*]",组装出查询语句"solr_col_1:[3TO*]",将该查询语句压入栈:stack('solr_col_1:[3TO*]');
5、遍历到变量"b","3"将变量压入栈:stack('solr_col_1:[3TO*]','b','3');
6、遍历到运算符"<",stack('solr_col_1:[3TO*]','b','3')弹出变量"b","3",根据变量"b"从表2中获取真实字段名"solr_col_2",从表3中获取运算符"<"映射的数据源运算符":[*TO?]",组装出查询语句"solr_col_2:[*TO 3]",将该查询语句压入栈:stack('solr_col_1:[3TO*]','solr_col_2:[*TO 3]');
7、遍历到变量"c"、"0",将变量压入栈:stack('solr_col_1:[3TO*]','solr_col_2:[*TO 3]','c','0');
8、遍历到运算符"==",stack('solr_col_1:[3TO*]','solr_col_2:[*TO 3]','c','0')弹出变量"c"和"0",根据变量"c"从表2中获取真实字段名"solr_col_3",从表3中获取运算符"=="映射的数据源运算符":",组装出查询语句"solr_col_3:0",将该查询语句压入栈:stack('solr_col_1:[3TO*]','solr_col_2:[*TO 3]','solr_col_3:0');
9、遍历到分隔符"(",继续往后遍历,直到遍历到")"为止,两个分隔符之间只有一个运算符"&&",stack('solr_col_1:[3TO*]','solr_col_2:[*TO 3]','solr_col_3:0')弹出变量"solr_col_2:[*TO 3]"和"solr_col_3:0",从表3中获取运算符"&&"映射的数据源运算符"and",组装出查询语句"solr_col_2:[*TO 3]and solr_col_3:0",再拼接两个分隔符后为"(solr_col_2:[*TO 3]and solr_col_3:0)",将其压入栈:stack('solr_col_1:[3TO*]','(solr_col_2:[*TO 3]and solr_col_3:0)');
10、遍历到运算符"||",stack('solr_col_1:[3TO*]','(solr_col_2:[*TO 3]andsolr_col_3:0)')弹出变量"solr_col_1:[3TO*]"和"(solr_col_2:[*TO 3]and solr_col_3:0)",从表3中获取运算符"||"映射的数据源运算符"or",组装出查询语句"solr_col_1:[3TO*]or(solr_col_2:[*TO 3]and solr_col_3:0)",返回该查询语句;
11、调用Solr提供的查询接口执行查询语句返回结果。
如果是在复杂业务场景下通常调用的是数据源(如:Hbase、ES等数据源)的API接口时,例如在ES数据源有方法:BoolQueryBuilder builder=QueryBuilders.boolQuery();如果运算符是"==",在方法中包含的API接口:
builder.must(QueryBuilders.termQuery(variable.getVariableName(),variableValue.getValue())),通过本发明提供统一的可配置的接口和解析方法,在不需要关心API中具体的查询语句是如何封装的前提下即可实现不同数据源之间的接口对接和相互适配,极大减少了开发人员代码的开发、维护工作。
Claims (6)
1.将逻辑表达式解析为通用查询语句的方法,其特征包括:
A.将逻辑表达式中的元素分为变量、运算符和分隔符三类,在解析装置的内存中建立队列结构存储单元,将逻辑表达式中的所有元素从左到右逐一提取出来放入所述的队列结构存储单元中,形成元素队列;
B.在所述内存中建立列表结构存储单元和栈结构存储单元;遍历所述的元素队列,将元素队列中的变量依次放入所述列表结构存储单元中、运算符和分隔符分别依次放入栈结构存储单元中,并根据放入栈结构存储单元中的运算优先级属性的分隔符,将该分隔符和相关的运算符依次从栈结构存储单元弹出并放入列表结构存储单元中;
C.遍历完元素队列后,将栈结构存储单元中剩余的所有元素按后进先出的顺序弹出栈结构存储单元,并依次放入列表结构存储单元中,形成可解析列表;
D.解析逻辑表达式:配置逻辑表达式中的运算符和数据源运算符的映射表;遍历所述可解析列表,将可解析列表中的元素依次放入栈结构存储单元,如果当前放入的元素为运算符,则根据所述映射表将该运算符映射为数据源运算符,将栈结构存储单元中与当前运算符相关的变量分别从栈结构存储单元中弹出并与所述映射的数据源运算符组装为变量语句,再将所述变量语句放入栈结构存储单元中;
E.遍历完可解析列表后,栈结构存储单元中保存的数据为解析后的查询语句。
2.如权利要求1所述的将逻辑表达式解析为通用查询语句的方法,其特征为:步骤B中在对栈结构存储单元放入元素时,如果当前放入栈结构存储单元中的元素为结束运算优先级属性的分隔符,则将栈结构存储单元中所述结束运算优先级属性的分隔符和与该分隔符对应的开始运算优先级属性的分隔符之间的所有运算符、以及所述的开始运算优先级属性的分隔符和结束运算优先级属性的分隔符,按后进先出的顺序弹出栈结构存储单元,并依次放入列表结构存储单元中。
3.如权利要求1所述的将逻辑表达式解析为通用查询语句的方法,其特征为:步骤D中所述的与当前运算符相关的变量,是在栈结构存储单元中在当前运算符前2个变量。
4.如权利要求1所述的将逻辑表达式解析为通用查询语句的方法,其特征为:步骤A中,如果逻辑表达式中的不同运算符之间有优先级区别,则将优先级高的运算符与其前一个变量和后一个变量合并视为一个组合变量提取到队列结构存储单元中,作为元素队列中的一个变量性质的元素;步骤C中,将栈结构存储单元中剩余的所有元素按后进先出的顺序弹出栈结构存储单元,并依次放入列表结构存储单元中后,再对所述组合变量进行解析。
5.如权利要求4所述的将逻辑表达式解析为通用查询语句的方法,其特征为:在对组合变量进行解析时,先将组合变量中的变量依次放入栈结构存储单元的该组合变量的对应位置,再将组合变量中的运算符放入所述变量之后的该组合变量的对应位置。
6.如权利要求1至5之一所述的将逻辑表达式解析为通用查询语句的方法,其特征为:如果逻辑表达式中的变量均为数字变量,步骤B中根据放入栈结构存储单元中的运算优先级属性的分隔符,将该分隔符和相关的运算符依次从栈结构存储单元弹出后,只将所述相关的运算符放入列表结构存储单元中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911344983.XA CN111008020B (zh) | 2019-12-24 | 2019-12-24 | 将逻辑表达式解析为通用查询语句的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911344983.XA CN111008020B (zh) | 2019-12-24 | 2019-12-24 | 将逻辑表达式解析为通用查询语句的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008020A true CN111008020A (zh) | 2020-04-14 |
CN111008020B CN111008020B (zh) | 2023-04-07 |
Family
ID=70116034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911344983.XA Active CN111008020B (zh) | 2019-12-24 | 2019-12-24 | 将逻辑表达式解析为通用查询语句的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008020B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111784148A (zh) * | 2020-06-28 | 2020-10-16 | 京东数字科技控股有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111813443A (zh) * | 2020-07-28 | 2020-10-23 | 南京大学 | 一种用JavaFX进行代码样例自动填充的方法和工具 |
CN112702264A (zh) * | 2020-11-27 | 2021-04-23 | 四川新网银行股份有限公司 | 一种分布式网络特征计算方法 |
CN112835926A (zh) * | 2021-02-09 | 2021-05-25 | 深圳市极致科技股份有限公司 | 公式引擎开发方法、装置、电子设备和存储介质 |
CN113268495A (zh) * | 2021-05-25 | 2021-08-17 | 深圳壹账通智能科技有限公司 | 数据搜索方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794240A (zh) * | 2015-05-08 | 2015-07-22 | 国家测绘地理信息局四川测绘产品质量监督检验站 | 面向地理空间数据库属性值约束检查的表达式解析方法 |
US20160098387A1 (en) * | 2014-10-06 | 2016-04-07 | International Business Machines Corporation | Natural Language Processing Utilizing Propagation of Knowledge through Logical Parse Tree Structures |
CN108491207A (zh) * | 2018-03-02 | 2018-09-04 | 平安科技(深圳)有限公司 | 表达式处理方法、装置、设备及计算机可读存储介质 |
CN109492383A (zh) * | 2018-11-09 | 2019-03-19 | 四川长虹电器股份有限公司 | 一种数据权限的解析方法 |
CN109614597A (zh) * | 2018-12-14 | 2019-04-12 | 中通服公众信息产业股份有限公司 | 一种逻辑表达式转换拆分组装方法 |
CN110175119A (zh) * | 2019-05-17 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 一种接口的测试方法、装置、计算设备和存储介质 |
-
2019
- 2019-12-24 CN CN201911344983.XA patent/CN111008020B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160098387A1 (en) * | 2014-10-06 | 2016-04-07 | International Business Machines Corporation | Natural Language Processing Utilizing Propagation of Knowledge through Logical Parse Tree Structures |
CN104794240A (zh) * | 2015-05-08 | 2015-07-22 | 国家测绘地理信息局四川测绘产品质量监督检验站 | 面向地理空间数据库属性值约束检查的表达式解析方法 |
CN108491207A (zh) * | 2018-03-02 | 2018-09-04 | 平安科技(深圳)有限公司 | 表达式处理方法、装置、设备及计算机可读存储介质 |
CN109492383A (zh) * | 2018-11-09 | 2019-03-19 | 四川长虹电器股份有限公司 | 一种数据权限的解析方法 |
CN109614597A (zh) * | 2018-12-14 | 2019-04-12 | 中通服公众信息产业股份有限公司 | 一种逻辑表达式转换拆分组装方法 |
CN110175119A (zh) * | 2019-05-17 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 一种接口的测试方法、装置、计算设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
任献彬等: "ATS故障树法故障诊断功能的实现", 《测控技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111784148A (zh) * | 2020-06-28 | 2020-10-16 | 京东数字科技控股有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111813443A (zh) * | 2020-07-28 | 2020-10-23 | 南京大学 | 一种用JavaFX进行代码样例自动填充的方法和工具 |
CN112702264A (zh) * | 2020-11-27 | 2021-04-23 | 四川新网银行股份有限公司 | 一种分布式网络特征计算方法 |
CN112835926A (zh) * | 2021-02-09 | 2021-05-25 | 深圳市极致科技股份有限公司 | 公式引擎开发方法、装置、电子设备和存储介质 |
CN113268495A (zh) * | 2021-05-25 | 2021-08-17 | 深圳壹账通智能科技有限公司 | 数据搜索方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111008020B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008020B (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
US11068439B2 (en) | Unsupervised method for enriching RDF data sources from denormalized data | |
CN110704479A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN106611044B (zh) | 一种sql优化方法及设备 | |
US11308031B2 (en) | Resolving in-memory foreign keys in transmitted data packets from single-parent hierarchies | |
US20120173226A1 (en) | Table merging with row data reduction | |
CN107103007B (zh) | 一种sql代码转换方法及装置 | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
CN113987337A (zh) | 基于组件化动态编排的搜索方法、系统、设备及存储介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN113760961A (zh) | 数据查询方法和装置 | |
CN111221888A (zh) | 大数据分析系统及方法 | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
CN111221841A (zh) | 基于大数据的实时处理方法及装置 | |
CN115495440A (zh) | 异构数据库的数据迁移方法、装置、设备及存储介质 | |
US9172595B2 (en) | Systems and methods of packet object database management | |
CN113515285A (zh) | 生成实时计算逻辑数据的方法和装置 | |
CN110879710A (zh) | 一种rpg程序自动转成java程序的方法 | |
CN112988778A (zh) | 一种处理数据库查询脚本的方法和装置 | |
CN115563183B (zh) | 查询方法、装置及程序产品 | |
CN111221846B (zh) | 一种sql语句的自动翻译方法及装置 | |
KR102614060B1 (ko) | 일반 애플리케이션을 서비스형 소프트웨어 애플리케이션으로 변환하기 위한 자동 분석 방법 | |
CN114153867A (zh) | 数据分组方法、装置、电子设备和存储介质 | |
CN116804988A (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 |