CN102446167B - 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 - Google Patents
一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 Download PDFInfo
- Publication number
- CN102446167B CN102446167B CN201110254900.5A CN201110254900A CN102446167B CN 102446167 B CN102446167 B CN 102446167B CN 201110254900 A CN201110254900 A CN 201110254900A CN 102446167 B CN102446167 B CN 102446167B
- Authority
- CN
- China
- Prior art keywords
- logic
- string
- complex characters
- logical
- characters string
- 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
Abstract
本发明公开了一种基于逻辑模板对复杂字符串逻辑处理的方法和装置,根据选择的内存表的实现形式编制各种基本逻辑模板,采用基本逻辑模板及其组合对复杂字符串的逻辑处理配置逻辑运算表达式和处理结果类型,将复杂字符串格式化得到的数据保存到内存表中,根据字符串类型从逻辑配置表中取得相应的逻辑运算表达式序列,依次在内存表上进行运算并输出结果,其装置包括基本逻辑模板编制模块、复杂字符串运算分析判断逻辑配置模块、复杂字符串格式化处理模块和字符串逻辑分析处理模块。本发明解决的技术问题是复杂字符串的逻辑分析和处理,通过本发明公开的方法和装置使复杂字符串逻辑分析处理变得简单易用,大幅提高系统开发效率,提高系统部署及维护灵活方便。
Description
技术领域
本发明涉及一种复杂字符串逻辑处理方法和装置,特别是一种基于逻辑模板对复杂字符串逻辑处理的方法和装置。
背景技术
自计算机问世以来,数据处理与分析便是其主要的工作与存在目的,如何提高数据处理的效率是计算机领域的科研人员探求的方向,同样也是计算机的发展与进步的方向。计算机已经被广泛应用在各种行业,在大量的计算机应用系统中,普遍涉及到对复杂的字符串的逻辑分析处理(包括搜索、计算、判断等),并且分析判断逻辑随着应用场合也经常会发生变化。
传统的逻辑判断分析处理办法一般采用通过编写分析脚本(如AWK、GREP、PERL等)或者写一段程序(C、JAVA等),采用这样的方式实现的应用系统存在很多的局限,系统的实施部署需要编写大量的逻辑分析的脚本或者程序代码,系统后期的维护中,如果分析判断逻辑稍有变化,就必须重新修改逻辑分析脚本和代码,给系统使用人员带来诸多不便,对系统维护人员技术水平要求也很高,同时缺少通用性和灵活性等。
通过对大量应用中的复杂字符串的调查研究,发现很多的复杂字符串存在其特定的格式,比如一般有回车换行符、TAB和空格字符等。
总之,需要本领域技术人员迫切解决的一个技术问题是:如何通过一种简单的配置的方式实现对复杂字符串进行各种分析判断逻辑。
发明内容
为解决上述问题,本发明公开了一种基于逻辑模板对复杂字符串逻辑处理的方法和装置,通过预先配置的功能性基本逻辑模板进行组合,实现对复杂字符串的逻辑分析和判断处理,使复杂字符串逻辑分析处理变得简单易用,大幅提高系统开发效率,提高系统部署及维护灵活方便。
本发明公开了一种基于逻辑模板对复杂字符串逻辑处理的方法,基于逻辑模板对复杂字符串逻辑处理的方法包括如下步骤:
a、对复杂长字符串进行格式化预处理,按照给定的行、列分隔符将复杂字符串格式化为m行和n列数据格式,保存到内存表中;
b、根据选择的内存表的实现方式,定制基本逻辑模板,配置逻辑运算表达式和处理结果类型,实现对字符串基础的逻辑运算配置操作;
c、服务端启动主线程和逻辑服务工作线程,主线程和逻辑服务工作线程并行运行,主线程在服务端启动时,完成初始化工作;
d、逻辑服务工作线程得到客户端请求连接后,实施复杂字符串的逻辑运算分析服务,然后将分析结果返回客户端。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法,通过预先配置的功能性基本逻辑模板进行组合,实现对复杂字符串的逻辑分析和判断处理,使复杂字符串逻辑分析处理变得简单易用,大幅提高系统开发效率,提高系统部署及维护灵活方便,同时降低了对用户操作水平的要求,降低了用户的使用难度,提高用户的数据处理效率,另外本方法在软件开发和维护过程中都简单易用,极大的提高软件开发速度,提高生产效率,节约修改代码成本、降低出错概率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的一种改进,步骤a中的内存表采用开源内存数据库或者大型数据库。本改进通过采用开源内存数据库来作为内存表,节约系统资源,降低了系统生成与开发成本,提高了系统的稳定性和开发效率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,开源内存数据库为基本逻辑模板提供内置函数,同时以自定义函数完成数据库内置函数无法实现的部分,将内置函数和自定义函数组装成基本逻辑模板。本改进通过使用开源数据库的内置函数作为基本逻辑模板的函数组成,有效地降低了系统开发成本,提高了系统开发效率,同时还能有效地提高系统的兼容性和运行速度,降低系统的资源损耗。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,基本逻辑模板按功能分类成包括字符操作、数值计算、时间操作、关系操作和转义操作等功能逻辑运算,并保存到存储介质中,存储介质为数据库或者文件。本改进通过对基本逻辑模板进行功能性的分类,提高了系统对模板的调用效率,降低了系统对复杂字符串的处理的难度,提高对复杂字符串进行逻辑分析处理的效率,同时以内存数据库或者文件为逻辑运算表达式配置表的存储介质,提高了系统运行中对模板的调用效率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤b中的逻辑运算表达式和处理结果类型的配置过程中,需要配置一系列的子逻辑操作集,对每个子操作生成操作逻辑的文字说明,所有逻辑子操作配置结束,最后自动生成所需功能的复杂逻辑运算表达式。本改进将逻辑运算表达式和处理结果类型的配置过程划分为一系列的子逻辑操作集,并形成相应的生成操作逻辑的文字说明,提高了系统整体开发与更新效率,降低了更新的难度,同时还便于进行错误检查,降低编程开发的出错率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤b中的逻辑运算表达式和处理结果类型的配置过程中,基本逻辑模板中的参数元字符串分为静态参数和动态参数,静态参数根据配置的实际数据被实例化,动态参数根据运行时上下文中数据被实例化;步骤b中的逻辑运算表达式和处理结果类型的配置过程中,对同一个字符串或文本配置多个逻辑运算表达式,配置好的逻辑运算表达式在保存之前必须调用字符串逻辑分析服务接口进行验证,返回得到期望的结果方可保存。本改进使得逻辑运算表达式的配置更具有适应性,符合特定的复杂字符串的特定的处理与分析要求,提高了系统的对复杂字符串的适应性,提高了系统实用性,同时还降低了系统的运算表达式修改的困难程度,同时通过在逻辑运算表达式和处理结果类型的配置过程中对逻辑运算表达式进行验证,有效地降低了系统的运行的出错率,提高了系统生成与运行实施的效率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤c中的初始化工作包括如下步骤,首先,创建逻辑服务工作线程池,逻辑服务工作线程池的大小取决于服务器硬件参数和客户端负荷的大小;然后创建客户端服务连接请求队列,设置客户端连接参数;最后创建服务监听接口,监听客户端服务请求连接;逻辑服务工作线程池采用先进先出队列,队列为所有线程共享,队列压入与弹出操作采用互斥机制,并使用条件变量实现同步。本改进在系统的初始阶段,以服务器和客户端的参数为依据,来决定工作线程池的大小,决定工作参数,有效地提高系统的兼容性,同时通过对系统的线程池队列进行约定,有效地提高了系统处理分析字符串的效率。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,复杂字符串的逻辑运算分析服务包括以下步骤,首先,对服务接口调用参数XML解析,得到待分析字符串、字符串格式化规则、逻辑分析结果类型;其次,在待分析字符串被格式化为若干行和列后,在内存数据库中按照格式化后的行数和列数创建内存表,再将格式化好的数据依次插入到内存表中;再次,在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放;最后,将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果;字符串格式化规则为首先去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符进行分行,给每一行进行编号;然后再按照格式化规则给定的列分隔特征字符将每一行分隔为n列,记录下最大列数值N;最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数N;内存表的第一列为行编号,自第二列开始至第N+1列的列名取名为F1、F2…FN。本改进通过对复杂字符串的逻辑运算分析服务进行限定,以开源数据库内存表的形式进行运算处理,为复杂字符串的处理提供了简单有效的处理方式,另外通过对复杂字符串进行统一格式化,保证了字符串每一行都具有稳定的结构,提高了系统处理的稳定性,同时,通过对复杂字符串格式化后得到的特点格式的字符串进行编号处理,使得复杂字符串格式化后的每一节均被赋予了特定的名称,有效提高了字符串读取与处理的难度,从而有效地降低了复杂字符串的逻辑处理难度。
本发明公开的一种基于逻辑模板对复杂字符串逻辑处理的装置,包括服务端、接口参数解析模块、分析结果处理模块、基本逻辑模板编制模块、复杂字符串运算分析判断逻辑配置模块、复杂字符串格式化处理模块和字符串逻辑分析处理模块,基本逻辑模板编制模块和复杂字符串运算分析判断逻辑配置模块位于客户端,
基本逻辑模板编制模块,根据内存表实现方式,编制字符操作的通用的逻辑模板,包括字符操作、数值操作、时间操作和关系操作等;
复杂字符串运算分析判断逻辑配置模块,针对某个固定格式的复杂字符串或者文本,利用基本逻辑模板通过组合并实例化成为复杂的逻辑运算表达式,或者直接编写逻辑运算表达式;
复杂字符串格式化处理模块,对各种格式的复杂字符串或文本,按照行和列分隔符参数,格式化为统一数量的行和列,再保存到内存表中;
字符串逻辑分析处理模块,首先由接口参数获得包括字符串格式类型、字符串、逻辑运算表达式序列和返回结果类型的参数,再调用复杂字符串格式化处理模块对复杂字符串或者文本进行格式化处理,然后在内存表上依次进行逻辑运算分析,最后将结果通过接口返回到客户端。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的装置,实现了对复杂字符串的逻辑分析和判断处理,使复杂字符串逻辑分析处理变得简单易用,大幅提高系统处理复杂字符串的效率,提高系统部署及维护灵活方便。
本发明公开的一种基于逻辑模板对复杂字符串逻辑处理的装置的一种改进,基于逻辑模板对复杂字符串逻辑处理的装置还包括内存表操作模块,内存表操作模块用于内存表的创建、删除和数据插入、删除。本改进通过对处理装置添加内存表操作模块,使得处理装置能够被直接方便地进行修改更新,提高了系统装置的可操作性和实用性,降低了修改的难度。
本发明公开的一种基于逻辑模板对复杂字符串逻辑处理的方法和装置,实现对复杂字符串的逻辑分析和判断处理,使复杂字符串逻辑分析处理变得简单易用,大幅提高系统开发效率,提高系统部署及维护灵活方便。
附图说明
图1、本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的流程图;
图2、本发明公开的基于逻辑模板对复杂字符串逻辑处理的装置的模块结构图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
如图1所示,本发明公开了一种基于逻辑模板对复杂字符串逻辑处理的方法,基于逻辑模板对复杂字符串逻辑处理的方法包括如下步骤:
a、对复杂长字符串进行格式化预处理,按照给定的行、列分隔符将复杂字符串格式化为m行和n列数据格式,保存到内存表中;
b、根据选择的内存表的实现方式,定制基本逻辑模板,配置逻辑运算表达式和处理结果类型,实现对字符串基础的逻辑运算配置操作;
c、服务端启动主线程和逻辑服务工作线程,主线程和逻辑服务工作线程并行运行,主线程在服务端启动时,完成初始化工作;
d、逻辑服务工作线程得到客户端请求连接后,实施复杂字符串的逻辑运算分析服务,然后将分析结果返回客户端。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的一种改进,步骤a中的内存表采用开源内存数据库。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,开源内存数据库为基本逻辑模板提供内置函数,同时在数据库内置函数无法实现的情况下,以自定义函数完成所需功能,将内置函数和自定义函数组装成基本逻辑模板。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,基本逻辑模板按功能分类成包括字符操作、数值计算、时间操作、关系操作和转义操作等功能逻辑运算,并保存到存储介质中。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,存储介质为数据库或者文件。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤b中的逻辑运算表达式和处理结果类型的配置过程中,需要配置一系列的子逻辑操作集,对每个子操作生成操作逻辑的文字说明,所有逻辑子操作配置结束,最后自动生成所需功能的复杂逻辑运算表达式。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤b中的逻辑运算表达式和处理结果类型的配置过程中,基本逻辑模板中的参数元字符串分为静态参数和动态参数,静态参数根据配置的实际数据被实例化,动态参数根据运行时上下文中数据被实例化。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤b中的逻辑运算表达式和处理结果类型的配置过程中,对同一个字符串配置多个逻辑运算表达式,配置好的逻辑运算表达式在保存之前必须调用字符串逻辑分析服务接口进行验证,返回得到期望的结果方可保存。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,步骤c中的初始化工作包括如下步骤,首先,创建逻辑服务工作线程池,逻辑服务工作线程池的大小取决于服务器硬件参数和客户端负荷的大小;然后创建客户端服务连接请求队列,设置客户端连接参数;最后创建服务监听接口,监听客户端服务请求连接。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,逻辑服务工作线程池采用先进先出队列,队列为所有线程共享,队列压入与弹出操作采用互斥机制,并使用条件变量实现同步。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,复杂字符串的逻辑运算分析服务包括以下步骤,首先,对服务接口调用参数XML解析,得到待分析字符串、字符串格式化规则、逻辑分析结果类型;其次,在待分析字符串被格式化为若干行和列后,在内存数据库中按照格式化后的行数和列数创建内存表,再将格式化好的数据依次插入到内存表中;再次,在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放;最后,将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,字符串格式化规则为首先去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符进行分行,给每一行进行编号;然后再按照格式化规则给定的列分隔特征字符将每一行分隔为n列,记录下最大列数值N;最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数N。
本发明公开的基于逻辑模板对复杂字符串逻辑处理的方法的又一种改进,内存表的第一列为行编号,自第二列开始至第N+1列的列名取名为F1、F2…FN。
如图2所示,本发明公开的一种基于逻辑模板对复杂字符串逻辑处理的装置,包括服务端、接口参数解析模块、分析结果处理模块、基本逻辑模板编制模块、复杂字符串运算分析判断逻辑配置模块、复杂字符串格式化处理模块和字符串逻辑分析处理模块,基本逻辑模板编制模块和复杂字符串运算分析判断逻辑配置模块位于客户端,
基本逻辑模板编制模块,根据实现内存表采用的内存数据库,使用内存数据库提供的SQL语言、内置的函数以及自定义函数,编制字符操作的通用的逻辑模板,包括字符操作、数值操作、时间操作和关系操作等;
复杂字符串运算分析判断逻辑配置模块,针对某个固定格式的复杂字符串或者文本,利用基本逻辑模板通过组合并实例化成为复杂的逻辑运算表达式,或者直接编写逻辑运算表达式;
复杂字符串格式化处理模块,对各种格式的复杂字符串或文本,按照行和列分隔符参数,格式化为统一数量的行和列,再保存到内存表中;
字符串逻辑分析处理模块,首先由接口参数获得包括字符串格式类型、字符串、逻辑运算表达式序列和返回结果类型的参数,再调用复杂字符串格式化处理模块对复杂字符串进行格式化处理,然后在内存表上依次进行逻辑运算分析,最后将结果通过接口返回到客户端。
本发明公开的一种基于逻辑模板对复杂字符串逻辑处理的装置的一种改进,基于逻辑模板对复杂字符串逻辑处理的装置还包括内存表操作模块,内存表操作模块用于内存表的创建、删除和数据插入、删除。
本发明公开了一种通过分布式计算(RPC)的方式提供对复杂字符串和文本的分析判断的逻辑服务。具体包括:
服务接口定义,接口采用XML格式,使得接口具有很好的可读性、可扩展性。输入参数主要有:逻辑操作类型、待分析字符串、字符串格式化正则表达式、逻辑表达式、返回结果类型等;输出参数有:逻辑操作类型、错误类型、分析结果等。
客户端使用服务接口发起逻辑分析请求之后,服务端为该服务端单独启动一个服务线程,该线程通过以下步骤实现客户端服务请求:
获得接口输入参数,解析XML参数;
使用字符串格式化正则表达式,将待分析字符串格式化为行和列,在内存中创建一个内存表,将格式化后的字符串数据存放于内存表中,并为每一行进行编号;
采用输入参数中的逻辑表达式在该内存表上进行逻辑运算,运算结果按照返回结果类型,生成XML格式返回数据。
优选的,本发明包括编制各种基本逻辑分析模板,包括字符操作、类型转换操作、时间操作、关系操作等,逻辑模板中参数采用特定的元字符串,参数分为静态参数和动态参数。
优选的,本发明还包括复杂字符串的逻辑分析配置模块,该模块采用样本字符串,使用若干基本逻辑分析模板组合后,自动生成复杂的逻辑分析判断逻辑。组合过程中必须对基本模板参数进行实例化,最终生成可以执行的逻辑分析表达式。对生成的逻辑分析表达式使用前面实现的逻辑分析服务接口进行测试,测试结果达到预期的结果则逻辑配置完成。
如图1,示出了本发明一种基于逻辑模板对复杂字符串逻辑处理的方法在分布式环境中的实施例,具体可以包括以下步骤:
步骤101、根据内存表的实现方式,编制基本逻辑模板。内存表的实现有很多选择,可以使用大型数据库(如:ORACLE、DB2、SYBASE、SQLSERVER、MYSQL等),也可以使用小的内存数据库(如:SQLITE、FASTDB、TimesTen等),也可以自行开发小型内存数据库。综合比较,大型数据库大多是商业性的,占用系统资源大,目前有很多开源的内存数据库,具有其所占资源很小、性能稳定、速度快等优点,而自行研发的内存数据库,开发周期长,各方面性能和稳定性不完善,综合比较,优选选用开源的内存数据库(比如:SQLITE)。
编制基本逻辑模板可以采用内存数据库中内置的处理函数,在数据库内置函数无法实现的情况下,通过自定义函数来完成所需功能。再通过这些函数组装成基本的基本逻辑模板,模板中参数的定义采用特定的元字符串(如$1$、$2$等),必须注意:选用的元字符串不能为内存数据库中的关键字。
将编制好的基本逻辑模板按功能进行分类,如字符操作、数值计算、时间操作、关系操作、转义操作等,最后保存到存储介质中(文件或数据库等)。
步骤102、根据提供的复杂字符串或文本样本数据,使用步骤101配制好的基本逻辑模板,配置所需逻辑处理功能的逻辑运算表达式和处理结果类型,处理结果类型包括:布尔类型、数值类型、数据集类型。
在配置过程中,需要配置一系列的子逻辑操作集,对每个子操作生成操作逻辑的文字说明,以便于后期逻辑的阅读,所有逻辑子操作配置结束,最后自动生成所需功能的复杂逻辑运算表达式,这过程中模板中的参数元字符串根据配置的实际数据被实例化。
对同一个字符串或文本可以配置多个逻辑运算表达式,配置好的表达式在保存之前必须调用字符串逻辑分析服务接口进行验证,返回得到期望的结果方可保存。验证过程中可以对样本数据进行修改,以便得到多种结果,确保配置逻辑的准确性。
该步骤中,对于熟悉内存数据库SQL语言的人员,也可以直接编写逻辑运算表达式。
步骤103、采用分布式计算实现对复杂字符串或文本逻辑分析处理服务功能,通过简单易用的服务接口对外提供服务。服务端采用主线程和逻辑服务工作线程的实现方式。具体步骤如下:
步骤104、主线程在服务启动时,要完成以下初始化步骤,首先,创建逻辑服务工作线程池,线程池的大小处决于服务器硬件参数、客户端负荷的大小即并发服务数量的大小,然后创建客户端服务连接请求队列,设置客户端连接的一些参数,如:服务时间限制,用于防止客户端为某恶意客户提供超长时间的服务,而影响到系统的性能或者其他客户得不到正常的服务,以及数据包发送和接收超时设置等,最后,主线程创建服务监听接口,监听客户端服务请求连接。
线程池调度采用先进先出队列(FIFOQUEUE),由于队列为所有线程所共享,所以队列压入和弹出操作必须采用互斥的机制,并且使用条件变量用于实现同步。当主线程监听到客户端服务请求连接时,将连接请求压入队列,如果此时队列已满,主线程将在此循环等待,再有其他客户请求服务将被阻塞,如果服务请求连接压入队列成功,则将条件变量置为有信号。服务工作线程循环检测条件变量,如果测试到有信号,则从队列中按照FIFO弹出该服务请求,接受该服务请求。
服务接口参数采用XML实现,具有较好的可读性、可扩展性等。调用参数为一个string类型的XML结构的command,用来描述命令参数等信息,格式如下:
<?xmlversion="1.0"encoding="GBK"?>
<SERVICE>
<TYPE>1</TYPE>
<ROW_RULE>回车换行</ROW_RULE>
<COL_RULE>空格或TAB</COL_RULE>
<ANALYSTR>Value</ANALYSTR>
<LOGICEXP_LISTCOUNT=3>
<LOGICEXPNO=1RETYPE=1>…</LOGICEXP>
<LOGICEXPNO=2RETYPE=2>…</LOGICEXP>
…
</LOGICEXP_LIST>
</SERVICE>
返回参数为一XML结构的String。其XML格式如下示例所示:
<?xmlversion="1.0"encoding="GBK"?>
<SERVICE>
<TYPE>1</TYPE>
<LOGICEXPNO=1RETYPE=1RESULT="succ"VALUE="Value1"/>
<LOGICEXPNO=1RETYPE=2RESULT="succ"VALUE="Value2"/>
<LOGICEXPNO=1RETYPE=2RESULT="succ"ROWCOUNT="2">
<RESULTSETNAME="select"ROWCOUNT="2">
<FIELDS>
<FIELDNAME="f1"/>
<FIELDNAME="f2"/>
<FIELDNAME="f3"/>
</FIELDS>
<ROWDATA>
<ROWf1="1"f2="test"f3="3"/>
<ROWf1="2"f2="test"f3="4"/>
</ROWDATA>
</RESULTSET>
</LOGICEXP>
</SERVICE>
步骤105、逻辑服务工作线程得到客户端请求连接后,按以下步骤完成复杂字符串的逻辑运算分析服务,并按照返回XML格式将分析结果返回给客户端:
步骤106、对服务接口调用参数XML解析,得到待分析字符串、字符串格式化规则、逻辑分析结果类型。
步骤107、对待分析字符串实施格式化,首先去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符(如:换行符、局号或者正则表达式)进行分行,给每一行进行编号,然后再按照格式化规则给定的列分隔特征字符(如:空格、TAB、逗号或者正则表达式)将每一行分隔为若干列,每行分隔后可能列数不一样,这时必须记录下最大列数值N。最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数。
步骤108、在待分析字符串被格式化为若干行和列后,在内存数据库中按照格式化后的行数和列数创建内存表,表的第一列为行编号,自第二列至第N+1列列名取名为F1、F2…FN。再将格式化好的数据依次插入到内存表中。
步骤109、在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放。
步骤110中,将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果。至此,一个客户端发起的字符串逻辑分析请求服务流程结束。
如图2,示出了基于逻辑模板对复杂字符串逻辑处理的装置的模块结构示意图,客户端301包括基本逻辑模板编制模块302和复杂字符串运算分析判断逻辑配置模块303,服务端201包括主线程模块202和逻辑服务工作线程模块203,主线程模块202包括接口子模2021块和创建并调度逻辑服务线程池模块2022,逻辑服务工作线程模块203包括接口参数解析模块2031、复杂字符串格式化处理模块2032、字符串逻辑分析处理模块2033和分析结果处理模块2034。基本逻辑模板编制模块302根据选择的内存表的实现形式,定制基本逻辑模板。复杂字符串运算分析判断逻辑配置模块303配置逻辑运算表达式和处理结果类型,实现对字符串基础的逻辑运算操作。服务端201启动主线程模块202和逻辑服务工作线程模块203,主线程和逻辑服务工作线程并行运行,主线程在服务端启动时,完成初始化工作,主线程模块202对客户端监听子模块2021调用参数XML解析,接口参数解析模块2031解析得到待分析字符串、字符串格式化规则、逻辑分析结果类型。创建并调度逻辑服务线程池模块2022创建逻辑服务工作线程池,逻辑服务工作线程池的大小取决于服务器硬件参数和客户端负荷的大小。复杂字符串格式化处理模块2032去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符进行分行,给每一行进行编号;然后再按照格式化规则给定的列分隔特征字符将每一行分隔为若干列,记录下最大列数值N;最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数。在待分析字符串被格式化为若干行和列后,在内存数据库中按照格式化后的行数和列数创建内存表,内存表的第一列为行编号,自第二列开始至第N+1列的列名取名为F1、F2…FN,再将格式化好的数据依次插入到内存表中,字符串逻辑分析处理模块2033在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放;分析结果处理模块2034将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果。
优选的,为了便于对内存表实施修改和操作,基于逻辑模板对复杂字符串逻辑处理的装置还包括内存表操作模块用于内存表的创建、删除和数据插入、删除。以提高系统的开发与编程效率,以及利于系统的后期更新与维护。
本发明方案所公开的技术手段不仅限于上述技术手段所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。
Claims (9)
1.一种基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的基于逻辑模板对复杂字符串逻辑处理的方法包括如下步骤:
a、对复杂长字符串进行格式化预处理,按照给定的行、列分隔符将复杂字符串格式化为m行和n列数据格式,保存到内存表中;
b、根据选择的内存表的实现方式,定制基本逻辑模板,配置逻辑运算表达式和处理结果类型,实现对字符串基础的逻辑运算配置操作;
c、服务端启动主线程和逻辑服务工作线程,所述的主线程和逻辑服务工作线程并行运行,所述的主线程在服务端启动时,完成初始化工作;
d、逻辑服务工作线程得到客户端请求连接后,实施复杂字符串的逻辑运算分析服务,所述的复杂字符串的逻辑运算分析服务包括以下步骤,首先,对服务接口调用参数XML解析,得到待分析字符串、字符串格式化规则、逻辑分析结果类型;其次,在待分析字符串被格式化为若干行和列后,在内存中按照格式化后的行数和列数创建内存表,再将格式化好的数据依次插入到内存表中;再次,在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放;最后,将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果;
所述的字符串格式化规则为首先去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符进行分行,给每一行进行编号;然后再按照格式化规则给定的列分隔特征字符将每一行分隔为n列,记录下最大列数值N;最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数N;
所述的内存表的第一列为行编号,自第二列开始至第N+1列的列名取名为F1、F2…FN;然后将分析结果返回客户端。
2.根据权利要求1所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的步骤a中的内存表采用开源内存数据库或者大型数据库。
3.根据权利要求2所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的开源内存数据库为基本逻辑模板提供内置函数,同时以自定义函数完成数据库内置函数无法实现的部分,将内置函数和自定义函数组装成基本逻辑模板。
4.根据权利要求3所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的基本逻辑模板按功能分类成包括字符操作、数值计算、时间操作、关系操作和转义操作功能的逻辑运算,并保存到存储介质中,所述的存储介质为数据库或者文件。
5.根据权利要求1所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的步骤b中的逻辑运算表达式和处理结果类型的配置过程中,需要配置一系列的子逻辑操作集,对每个子操作生成操作逻辑的文字说明,所有逻辑子操作配置结束,最后自动生成所需功能的复杂逻辑运算表达式。
6.根据权利要求1所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的步骤b中的逻辑运算表达式和处理结果类型的配置过程中,基本逻辑模板中的参数元字符串分为静态参数和动态参数,静态参数根据配置的实际数据被实例化,动态参数根据运行时上下文中数据被实例化;
所述的步骤b中的逻辑运算表达式和处理结果类型的配置过程中,对同一个字符串或文本配置多个逻辑运算表达式,配置好的逻辑运算表达式在保存之前必须调用字符串逻辑分析服务接口进行验证,返回得到期望的结果方可保存。
7.根据权利要求1所述的基于逻辑模板对复杂字符串逻辑处理的方法,其特征在于:所述的步骤c中的初始化工作包括如下步骤,首先,创建逻辑服务工作线程池,所述的逻辑服务工作线程池的大小取决于服务器硬件参数和客户端负荷的大小;然后创建客户端服务连接请求队列,设置客户端连接参数;最后创建服务监听接口,监听客户端服务请求连接;
所述的逻辑服务工作线程池采用先进先出队列,所述的队列为所有线程共享,队列压入与弹出操作采用互斥机制,并使用条件变量实现同步。
8.一种基于逻辑模板对复杂字符串逻辑处理的装置,包括客户端和服务端,其特征在于:所述的服务端内设有接口参数解析模块和分析结果处理模块、复杂字符串格式化处理模块和字符串逻辑分析处理模块;在客户端内设有基本逻辑模板编制模块、复杂字符串运算分析判断逻辑配置模块;
所述的基本逻辑模板编制模块,根据内存表实现方式,编制字符操作的通用的逻辑模板,包括字符操作、数值操作、时间操作和关系操作;
所述的复杂字符串运算分析判断逻辑配置模块,针对某个固定格式的复杂字符串,利用基本逻辑模板通过组合并实例化成为复杂的逻辑运算表达式,或者直接编写逻辑运算表达式;
所述的复杂字符串格式化处理模块,对各种格式的复杂字符串或文本,按照行和列分隔符参数,格式化为统一数量的行和列,再保存到内存表中;
所述的字符串逻辑分析处理模块,首先由接口参数获得包括字符串格式类型、字符串、逻辑运算表达式序列和返回结果类型的参数,再调用复杂字符串格式化处理模块对复杂字符串或者文本进行格式化处理,然后在内存表上依次进行逻辑运算分析,逻辑运算分析包括以下步骤,首先,对服务接口调用参数XML解析,得到待分析字符串、字符串格式化规则、逻辑分析结果类型;其次,在待分析字符串被格式化为若干行和列后,在内存中按照格式化后的行数和列数创建内存表,再将格式化好的数据依次插入到内存表中;再次,在待分析字符串格式化并加载到内存表后,依次取得接口服务调用参数解析出的逻辑运算分析表达式,在该内存表上进行逻辑运算,全部计算结束后,将内存表从内存中释放;最后,将分析的结果按照服务接口中给定的返回数据XML格式生成返回结果;
所述的字符串格式化规则为首先去掉字符串头尾处空字符,按照格式化规则给定的行分隔特征字符进行分行,给每一行进行编号;然后再按照格式化规则给定的列分隔特征字符将每一行分隔为n列,记录下最大列数值N;最后对行中列数不够最大列数值的列值设置为空,使得每一行按最大列数值格式化为相同的列数N;
所述的内存表的第一列为行编号,自第二列开始至第N+1列的列名取名为F1、F2…FN;最后将结果通过接口返回到客户端。
9.根据权利要求8所述的基于逻辑模板对复杂字符串逻辑处理的装置,其特征在于:所述的基于逻辑模板对复杂字符串逻辑处理的装置还包括内存表操作模块,所述的内存表操作模块用于内存表的创建、删除和数据插入、删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110254900.5A CN102446167B (zh) | 2011-08-31 | 2011-08-31 | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110254900.5A CN102446167B (zh) | 2011-08-31 | 2011-08-31 | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102446167A CN102446167A (zh) | 2012-05-09 |
CN102446167B true CN102446167B (zh) | 2016-03-30 |
Family
ID=46008671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110254900.5A Active CN102446167B (zh) | 2011-08-31 | 2011-08-31 | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102446167B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607942B (zh) * | 2015-12-23 | 2019-01-08 | 北京京东尚科信息技术有限公司 | 一种投票判定的方法和装置 |
CN108287737B (zh) * | 2017-07-13 | 2021-08-17 | 阿里巴巴(中国)有限公司 | Service Worker启动方法、装置及电子设备 |
CN108430045B (zh) * | 2018-03-14 | 2020-11-24 | 北京思特奇信息技术股份有限公司 | 一种字符串修剪方法及装置 |
CN109189380B (zh) * | 2018-09-12 | 2021-11-26 | 湖南创智艾泰克科技有限公司 | 算法集成框架系统及方法 |
CN110110164A (zh) * | 2019-03-21 | 2019-08-09 | 平安普惠企业管理有限公司 | 字符串的解析方法、装置、计算机设备和存储介质 |
CN110543371B (zh) * | 2019-08-29 | 2023-11-17 | 张浩天 | 一种远程调用接口的方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1477559A (zh) * | 2002-08-23 | 2004-02-25 | 华为技术有限公司 | 一种实现长字符串前缀匹配的方法 |
CN101957748A (zh) * | 2009-07-17 | 2011-01-26 | 中国移动通信集团黑龙江有限公司 | 一种数据逻辑分析方法、装置及系统 |
-
2011
- 2011-08-31 CN CN201110254900.5A patent/CN102446167B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1477559A (zh) * | 2002-08-23 | 2004-02-25 | 华为技术有限公司 | 一种实现长字符串前缀匹配的方法 |
CN101957748A (zh) * | 2009-07-17 | 2011-01-26 | 中国移动通信集团黑龙江有限公司 | 一种数据逻辑分析方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
一种实用的字符串解析技术;杜立智;《计算机时代》;20031231(第6期);33-34 * |
Also Published As
Publication number | Publication date |
---|---|
CN102446167A (zh) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102446167B (zh) | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 | |
US10235376B2 (en) | Merging metadata for database storage regions based on overlapping range values | |
US7610263B2 (en) | Reusing intermediate workflow results in successive workflow runs | |
CN103345484B (zh) | 基于动态域的报表处理系统及方法 | |
US7739662B2 (en) | Methods and apparatus to analyze processor systems | |
Guo | Software tools to facilitate research programming | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
US20100175049A1 (en) | Scope: a structured computations optimized for parallel execution script language | |
KR101255060B1 (ko) | 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법 | |
CN101772760B (zh) | 计算机执行方法以及计算机执行装置 | |
CN103077192B (zh) | 一种数据处理方法及其系统 | |
Sinthong et al. | Aframe: Extending dataframes for large-scale modern data analysis | |
CN107479866A (zh) | 基于重构技术实现开放终端应用数据与功能的方法 | |
US8839208B2 (en) | Rating interestingness of profiling data subsets | |
WO2020038376A1 (zh) | 统一地执行特征抽取的方法及系统 | |
CN104866425A (zh) | 一种数据库压力测试的方法 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN105760281A (zh) | 一种对Linux系统服务器的性能数据进行监控分析的方法 | |
Sinthong et al. | AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version) | |
Wang et al. | Federated MapReduce to transparently run applications on multicluster environment | |
KR20200103133A (ko) | 하둡 기반의 빅데이터 시스템에서 etl 절차를 수행하는 방법 및 장치 | |
CN115510361A (zh) | 一种基于可视化配置的数据图表页面生成方法及相关设备 | |
CN109033196A (zh) | 一种分布式数据调度系统及方法 | |
CN114090583A (zh) | 一种跨业务系统订单数据分析方法和装置 | |
US8745510B2 (en) | Complex operation execution tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |