CN102999319A - 一种基于aop技术缓存函数执行结果的方法及系统 - Google Patents

一种基于aop技术缓存函数执行结果的方法及系统 Download PDF

Info

Publication number
CN102999319A
CN102999319A CN2011102667783A CN201110266778A CN102999319A CN 102999319 A CN102999319 A CN 102999319A CN 2011102667783 A CN2011102667783 A CN 2011102667783A CN 201110266778 A CN201110266778 A CN 201110266778A CN 102999319 A CN102999319 A CN 102999319A
Authority
CN
China
Prior art keywords
function
execution result
data
buffer memory
business logic
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
Application number
CN2011102667783A
Other languages
English (en)
Other versions
CN102999319B (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.)
New Founder Holdings Development Co ltd
Peking University
Founder International Beijing Co Ltd
Original Assignee
Peking University
Founder International Beijing Co Ltd
Peking University Founder Group 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 Peking University, Founder International Beijing Co Ltd, Peking University Founder Group Co Ltd filed Critical Peking University
Priority to CN201110266778.3A priority Critical patent/CN102999319B/zh
Publication of CN102999319A publication Critical patent/CN102999319A/zh
Application granted granted Critical
Publication of CN102999319B publication Critical patent/CN102999319B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于AOP技术缓存函数执行结果的方法及系统,该方法及系统利用Spring开发框架提供的AOP功能实现,在需要缓存执行结果的业务逻辑处理函数前后执行Spring AOP的缓存处理通知,拦截被执行的业务逻辑处理函数,将业务逻辑处理函数的执行结果存入数据缓存装置。另外,该方法在业务逻辑处理函数更新目标数据(如追加、修改、删除数据)之后执行Spring AOP的缓存清除通知,清空数据缓存装置的数据。使用该方法将缓存功能模块和业务逻辑功能模块彻底解耦,实现可插拔的缓存机制,灵活地通过配置文件给业务逻辑处理函数增加或去除缓存功能。

Description

一种基于AOP技术缓存函数执行结果的方法及系统
技术领域
本发明涉及计算机信息处理、软件开发领域,具体涉及一种基于AOP(AspectOriented Programming,面向方面编程)技术缓存函数执行结果的方法及系统。
背景技术
在软件开发过程中,函数是程序的最小单元,大的软件系统都是由许多函数依据一定的业务逻辑组装而成,函数的执行速度决定了整个软件系统的运行效率。通常情况下,函数被调用时依据程序逻辑从函数开头执行整个函数体,从而得到整个函数的计算结果,这在数据变化快的场合是完全必要的。但是在一些应用场合,如企业业务系统中的系统数据像组织机构、人员及权限数据等,这些数据通常保存在关系数据库系统中,一般情况下这些数据很长时间不会被改变。只要数据不改变多次查询相关信息得到的结果往往是相同的,一些操作比较消耗计算机资源,重复相同的操作对性能影响很大,使用系统的人越多、应用系统运行越慢。在软件设计中缓存技术广泛采用,但是目前的缓存技术适用于粗粒度数据的缓存,如上述组织机构信息,通常都是在系统启动时将所有数据一次性读入缓存;但是对于一些细粒度数据像权限数据,每个用户、每个角色、针对不同的操作对象权限都不一样,一些权限需要进行复杂的运算才能得到,类似这样的数据难以做到一次性将所有数据加载到缓存中。另外,目前的缓存都是硬编码在业务逻辑功能模块的程序代码中,为了追加缓存功能,需要对应用程序代码进行修改,这样缓存功能模块和业务逻辑功能模块紧密耦合,如果要追加缓存功能或去掉缓存功能均要修改程序,重新编译和调试,费时费力,非常不方便。
发明内容
为了解决现有缓存技术存在的难以对细粒度数据进行缓存以及缓存处理功能模块和业务逻辑功能模块紧密耦合的问题,本发明的目的在于提供一种基于AOP技术缓存函数执行结果的方法及系统,从而实现企业应用系统数据细粒度的缓存,大幅度的提高系统运行性能,使得业务系统使用的人越多,被缓存的数据就越多,系统运行地越快。
为实现上述目的,本发明采用的技术方案如下:
一种基于AOP技术缓存函数执行结果的方法,包括以下步骤:
步骤1、调用业务逻辑处理函数,并由特征码生成装置生成该业务逻辑处理函数唯一的实例特征码;
步骤2、根据业务逻辑处理函数的实例特征码,在数据缓存装置中检索是否存在该函数的函数执行结果,若是则进入步骤3,若否则进入步骤4;
步骤3、从数据缓存装置中得到缓存的函数执行结果,进入步骤5;
步骤4、执行所述业务逻辑处理函数,并将得到的函数执行结果缓存到数据缓存装置;
步骤5、将函数执行结果返回给业务逻辑处理函数的调用方。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,如果步骤1中所调用的业务逻辑处理函数为更新目标数据的函数,会将数据缓存装置中该函数所在类对应的缓存数据进行清除。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,清除函数所在类对应的缓存数据的具体步骤为:
1)调用修改目标数据的业务逻辑处理函数;
2)执行所调用的更新目标数据的业务逻辑处理函数,并获取被执行函数所在类名;
3)获取数据缓存装置的函数实例特征码列表,将实例特征码列表中的每个函数实例特征码与步骤2)被执行函数所在类名进行对比,并删除数据缓存装置中以被执行函数所在类名开头的实例特征码所对应的缓存数据。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,步骤1中,所述业务逻辑处理函数为面向对象开发语言Java语言的对象成员函数。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,步骤1中,实例特征码是根据函数实例的类名、函数名和参数信息生成的,以类名开头的唯一的函数实例特征码。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,所述参数是Java语言的基本数据类型、数组或对象类型,参数的个数为一个、多个或者没有。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,在数据缓存装置中检索函数执行结果是以函数的实例特征码为依据进行的,在缓存时是以实例特征码为主键将函数执行结果存入到数据缓存装置的。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,步骤4中,当业务逻辑处理函数的处理结果为有效数据类型的返回值时,才对函数执行结果进行缓存;所述有效数据类型是指Java语言中的除void和Void类型之外的数据类型。
再进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,所述更新目标数据的函数包括追加函数、修改函数或删除函数。
更进一步,如上所述的一种基于AOP技术缓存函数执行结果的方法,在对业务逻辑处理函数的函数执行结果进行缓存或者对更新目标数据的函数清除缓存数据时,需要在Spring配置文件中将此函数的函数名设置为切入点,并在切入点进行函数执行结果的缓存或者缓存数据的清除。
一种基于AOP技术缓存函数执行结果的系统,包括:
特征码生成装置:用于生成所调用的业务逻辑处理函数的唯一的函数实例特征码;
数据缓存装置:用于保存函数执行结果;
缓存处理通知装置:用于在数据缓存装置中检索是否存在实例特征码所对应的函数执行结果;若是则从数据缓存装置获得该实例特征码对应的执行结果并返回给调用方;若否则执行业务逻辑处理函数,将函数执行结果保存到数据缓存装置中,并将函数执行结果返回给调用方;
缓存清除通知装置:用于在业务逻辑处理函数为更新目标数据的函数时,清除数据缓存装置中该函数所在类对应的缓存数据。
进一步,如上所述的一种基于AOP技术缓存函数执行结果的系统,所述函数实例特征码是根据所调用的业务逻辑处理函数的函数实例的类名、函数名及参数信息生成的,以类名开头的唯一的函数实例特征码。
再进一步,如上所述的一种基于AOP技术缓存函数执行结果的系统,对缓存处理通知装置或缓存清除通知装置,需要在Spring配置文件中将要调用的业务逻辑处理函数的函数名设置为切入点,并在此切入点执行数据的缓存或清除。
更进一步,如上所述的一种基于AOP技术缓存函数执行结果的系统,在缓存处理通知装置进行数据的检索是以实例特征码为依据进行的,在缓存时是以实例特征码为主键将函数执行结果保存到数据缓存装置中的。
本发明的效果在于:
1.模块解耦:采用本发明,缓存处理功能模块和业务逻辑功能模块完全独立,通过Spring配置文件的修改即可将缓存处理功能模块应用到业务逻辑功能模块中,也可以在Spring配置文件中设置对哪些对象、对象的哪些成员函数的执行结果进行缓存。
2.实现细粒度数据的缓存:以函数名和函数参数值为基础进行缓存,做到了细粒度数据的缓存,避免了现有技术只能对粗粒度数据进行缓存的弊端。
3.随需缓存:不同于现有缓存技术一次性将所有系统数据加载到缓存中占用计算机内存资源的落后方法,本发明提供随需缓存技术,函数在未被执行时不会缓存任何数据,在被执行时才将满足参数要求的执行结果缓存在计算机内存中。
附图说明
图1为本发明一种基于AOP技术缓存函数执行结果的系统的结构框图;
图2为本发明一种基于AOP技术缓存函数执行结果的方法的流程图;
图3为具体实施方式中缓存处理通知装置的工作流程图;
图4为具体实施方式中缓存清除通知装置的工作流程图。
具体实施方式
本发明提供了一种基于AOP技术缓存函数执行结果的方法及系统,通过该方法及系统能够实现企业应用系统数据细粒度的缓存、通过该技术的应用,可以大幅度的提高系统运行性能,使得业务系统使用的人越多,被缓存的数据就越多,系统运行地越快。
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
图1示出了本发明具体实施方式中提供的一种基于AOP技术缓存函数执行结果的系统的结构框图,由图中可以看出该系统主要包括数据缓存装置12、缓存处理通知装置13、缓存清除通知装置14和特征码生成装置11;其中:
特征码生成装置11:用于生成所调用的业务逻辑处理函数的唯一的函数实例特征码;
数据缓存装置12:用于保存函数执行结果;缓存处理通知装置13和缓存清除通知14共用相同的数据缓存装置12;
缓存处理通知装置13:用于在数据缓存装置12中检索是否存在实例特征码所对应的函数执行结果;若是,则在数据缓存装置获得该实例特征码对应的执行结果并返回给调用方;若否,则执行业务逻辑处理函数,将函数执行结果保存到数据缓存装置中,并将函数执行结果返回给调用方;缓存处理通知装置13的具体工作流程如图3所示;
其中,缓存处理通知装置13进行数据的检索是以实例特征码为依据进行的,在缓存时是以实例特征码为主键将函数执行结果保存到数据缓存装置12中的。
缓存清除通知装置14:用于在业务逻辑处理函数为更新目标数据的函数时,清除数据缓存装置中该函数所在类对应的缓存数据。
由于本发明中的业务逻辑处理函数是面向对象开发语言Java语言的对象成员函数,对缓存处理通知装置和缓存清除通知装置,需要在Spring配置文件中将要调用的业务逻辑处理函数的函数名设置为切入点,并在此切入点执行数据的缓存或清除。在AOP编程中,需要在配置文件中为程序设置切入点(Pointcut),程序执行到切入点后,会调用在这个切入点上设置的通知,通知是外部的程序代码,如本发明的缓存处理通知和缓存清除通知。
图2示出了基于图1中一种基于AOP技术实现函数执行结果缓存的系统的基于AOP技术实现函数执行结果缓存的方法的流程图,由图中可以看出,该方法主要包括以下步骤:
步骤S21、调用业务逻辑处理函数,生成实例特征码;
调用业务逻辑处理函数,并由特征码生成装置11生成该业务逻辑处理函数的唯一的实例特征码。
函数调用实际上就是函数原型实例化的过程,将一次函数调用称为函数实例化,函数实例以类名、函数名及传入的参数列表区分其唯一性。特征码生成装置11根据函数实例的类名、函数名及参数列表信息生成一个唯一的函数实例特征码。由于函数的实例特征码都是唯一的,所以在数据缓存装置12中检索函数执行结果是以函数的实例特征码为依据进行的,在缓存时是以实例特征码为主键将函数执行结果存入到数据缓存装置的。在操作过程中,就可以通过该特征码查询其对应的函数执行结果。
其中,本发明的业务逻辑处理函数为面向对象开发语言Java语言的对象成员函数。参数列表中的参数是Java语言的基本数据类型、数组或对象类型。在实际的操作过程中,函数可以不带参数,或者带一个或者多个参数。
步骤S22、根据实例特征码检索函数执行结果;
根据业务逻辑处理函数的实例特征码,在数据缓存装置12中检索是否存在该函数的函数执行结果,若是则进入步骤S23,若否则进入步骤S24。由步骤S21中可知,每一个业务逻辑处理函数都有其唯一的实例特征码,根据该实例特征码,用户可以在数据缓存装置中查找是否存在该实例特征码所对应的函数的执行结果。
步骤S23、获取函数执行结果;
如果在此次调用执行步骤S21中的业务逻辑处理函数之前,已经执行过相同的函数实例,此次调用则不需要再执行相应的业务逻辑处理函数,在步骤S22中就可以通过在数据缓存装置12中检索得到实例特征码所对应的函数的执行结果,进入步骤S25。
步骤S24、执行业务逻辑处理函数,获取并保存函数执行结果;
如果在此次调用执行步骤S21中的业务逻辑处理函数之前,没有执行过相同的函数实例,就需要执行所述业务逻辑处理函数,并将得到的函数执行结果缓存到数据缓存装置12中,在下次执行该函数实例时,就可以根据唯一的实例特征码直接在数据缓存装置12中检索得到其函数执行结果。
其中,在对业务逻辑处理函数的函数执行结果进行缓存时,需要在Spring配置文件中将函数的函数名设置为切入点,并在此切入点进行函数执行结果的缓存。此外,业务逻辑函数的处理结果必须为有效数据类型(除void类型和Void之外的数据类型,例如java语言基本类型int型、float型等,或者对象类型String类型等)的返回值时,才对函数执行结果进行缓存。
步骤S25、将函数执行结果返回给业务逻辑处理函数的调用方。
将步骤S23或者步骤S24中得到的函数执行结果返回给调用方。
对于本发明的上述方法,如果步骤S21中业务系统调用了更新目标数据的业务逻辑处理函数时,如追加、修改或删除等函数时,将导致缓存的目标数据出现变化,数据缓存装置12中的数据将失效,此时,缓存清除通知装置就会清空数据缓存中相应类对应的缓存数据,其中清除缓存数据的具体步骤如图4所示:
1)调用修改目标数据的业务逻辑处理函数;
2)执行所调用的更新目标数据的业务逻辑处理函数,并获取被执行函数所在类名;
3)获取数据缓存装置的函数实例特征码列表,将实例特征码列表中的每个函数实例特征码与步骤2)被执行函数所在类名进行对比,并删除数据缓存装置中以被执行函数所在类名开头的实例特征码所对应的缓存数据。
同样的,在对更新目标数据的函数清除数据时,需要在Spring配置文件中将此函数的函数名设置为切入点,并在此切入点执行数据的清除。
下面结合具体的实施例对本发明进行进一步详细的说明。
本实施例采用Java语言提供的HashMap作为数据缓存装置,在Spring配置文件中定义HashMap的配置如下:
<bean id=″cacheMap″class=″java.util.HashMap″/>
本发明实施例提供的缓存处理通知装置(Advice)为Spring AOP的Interception Around通知,实现该通知需要做以下操作:
1.实现Spring的MethodInterceptor接口,本实施例将缓存处理通知装置命名为CacheInterceptor。
2.在Spring配置文件中定义缓存处理通知装置的配置如下:
Figure BDA0000090229940000081
上面的配置缓存处理通知装置cacheInterceptor引用了前面定义的cacheMap数据缓存装置,将会把数据缓存在cacheMap中。
3.在Spring配置文件中通过RegexpMethodPointcutAdvisor将缓存处理通知装置配置进切入点:
Figure BDA0000090229940000082
Figure BDA0000090229940000091
上面配置的cacheAdviser表示cacheInterceptor将拦截对象成员函数名中含“find”和“get”的函数。
本发明实施例提供的缓存清除通知装置(Advice)为Spring AOP的AfterReturning通知,实现该通知需要做以下操作:
1.实现Spring的AfterReturningAdvice接口,本实施例将缓存清除通知装置命名为CacheClearAdvice。
2.在Spring配置文件中定义缓存清除通知装置的配置如下:
上面配置的缓存清除通知装置cacheClearAdvice引用了前面定义的cacheMap数据缓存装置,将会把cacheMap中相应类缓存的数据清除。
3.在Spring配置文件中通过RegexpMethodPointcutAdvisor将缓存清除通知装置配置进切入点:
Figure BDA0000090229940000093
Figure BDA0000090229940000101
上面配置的clearAdviser表示cacheClearAdvice将拦截对象成员函数名中含“add”、“update”和“delete”的函数。
下面通过Spring配置文件对业务逻辑模块StudentDao的函数实现缓存功能,StudentDao有下面三个成员函数:
public List getStudentList();
public Student getStudent(String name);
public void deleteStudent(String name);
在Spring配置文件中追加StudentDao的配置,如下:
<bean id=″studentDao″class=″StudentDao″/>
在Spring配置文件中通过自动代理,将缓存处理cacheAdviser和缓存清除clearAdviser应用到上面的studentDao对象,配置如下:
Figure BDA0000090229940000111
在进行上述配置后,在执行StudentDao的getStudentList()函数时会先通过缓存处理通知装置从数据缓存装置查询执行结果,如果存在则直接将结果返回给函数调用方,无需实际执行getStudentList()函数;如果不存在则执行getStudentList()函数,并将执行结果缓存在数据缓存装置中,在调用deleteStudent()删除一个学生后,学生列表出现变化,缓存失效,缓存清除装置将会清除数据缓存装置中StudentDao类对应的数据。
实施例1
第一次调用StudentDao的getStudentList()成员函数的执行过程:
步骤1、StudentDao类的getStudentList()成员函数被调用;
步骤2、缓存处理通知装置拦截被调用的业务逻辑处理函数getStudentList(),并获取该函数所在类名“StudentDao”、函数名“getStudentList”,本实施例不带参数,函数实例特征码生成装置将函数名“getStudentList”作为函数实例字符串,通过散列函数得到所述函数实例字符串的散列码“1713854531”,将类名“StudentDao”和散列码“1713854531”组合得到函数实例特征码“StudentDao1713854531”;
步骤3、根据所述函数实例特征码“StudentDao1713854531”在数据缓存装置cacheMap中查询函数执行结果,由于函数第一次被执行,因此无法检索到执行结果;
步骤4、执行业务逻辑函数getStudentList()函数,从数据库读取数据;
步骤5、以所述函数实例特征码“StudentDao1713854531”为主键将函数执行结果存入数据缓存装置cacheMap;
步骤6、将执行结果返回给函数调用方。
第二次及第二次以上调用函数执行过程:
步骤1、StudentDao类的getStudentList()成员函数被调用;
步骤2、缓存处理通知装置拦截被调用的业务逻辑处理函数getStudentList(),并获取所在类名“StudentDao”、函数名“getStudentList”,本实施例不带参数,函数实例特征码生成装置将函数名“getStudentList”作为函数实例字符串,通过散列函数得到所述函数实例字符串的散列码“1713854531”,将类名“StudentDao”和散列码“1713854531”组合得到函数实例特征码“StudentDao1713854531”;
步骤3、根据所述函数实例特征码“StudentDao1713854531”在数据缓存装置cacheMap中查询函数执行结果,由于函数已经被执行一次,因此可以在缓存中检索到第一次执行结果;
步骤4、从数据缓存装置中获取缓存的函数执行结果;
步骤5、将步骤4得到的函数执行结果返回给函数调用方。
采用上述的一种基于AOP技术缓存函数执行结果的方法,在完成第一次函数执行后,进行第二次及第二次以上的函数调用就不会实际执行getStudentList函数去数据库读取数据而是直接从数据缓存装置获取数据,由于从内存读取比数据库磁盘读取性能更高,通过缓存机制显著提高了函数执行效率。
实施例2
本发明实施例提供了带一个参数的函数的缓存机制。
第一次调用函数执行过程:
步骤1、StudentDao类的getStudent(“tom”)成员函数被调用;
步骤2、缓存处理通知装置拦截被调用的业务逻辑处理函数getStudent(),并获取所在类名“StudentDao”、函数名“getStudent”以及参数“Tom”,函数实例特征码生成装置将函数名“getStudent”和参数“Tom”组合得到函数实例字符串“getStudentTom”,通过散列函数得到所述函数实例字符串的散列码“-1330179827”,将类名“StudentDao”和散列码“-1330179827”组合得到函数实例特征码“StudentDao-1330179827”;
步骤3、根据所述函数实例特征码“StudentDao-1330179827”在数据缓存装置cacheMap中查询函数执行结果,由于函数第一次被执行,因此无法检索到执行结果;
步骤4、执行getStudent(“tom”)函数,从数据库读取“Tom”的相关信息,返回Student对象;
步骤5、以所述函数实例特征码“StudentDao-1330179827”为主键将函数执行结果存入数据缓存装置cacheMap;
步骤6、将执行结果返回给函数调用方。
第二次及第二次以上调用函数执行过程:
步骤1、StudentDao类的getStudent(“tom”)成员函数被调用;
步骤2、缓存处理通知装置拦截被调用的业务逻辑处理函数getStudent(),并获取所在类名“StudentDao”、函数名“getStudent”以及参数“Tom”,函数实例特征码生成装置将函数名“getStudent”和参数“Tom”组合得到函数实例字符串“getStudentTom”,通过散列函数得到所述函数实例字符串的散列码“-1330179827”,将类名“StudentDao”和散列码“-1330179827”组合得到函数实例特征码“StudentDao-1330179827”;
步骤3、根据所述函数实例特征码“StudentDao-1330179827”在数据缓存装置cacheMap中查询函数执行结果,由于函数已经被执行一次,因此可以在缓存中检索到第一次执行结果;
步骤4、从数据缓存装置中获取缓存的函数执行结果;
步骤5、将步骤4得到的函数执行结果返回给函数调用方。
实施例3
本发明实施例提供了业务逻辑删除方法使缓存数据失效的机制。
步骤1、业务逻辑删除方法deleteStudent(“Tom”)被调用,由于“Tom”被删除,这导致getStudentList()和getStudent(“Tom”)函数的执行结果出现变化,缓存中的数据将失效;
步骤2、Spring AOP执行完删除目标数据的方法后,将执行缓存清除通知装置,缓存清除通知装置获取被执行函数所在类名“StudentDao”;
步骤3、缓存清除通知装置清除数据缓存装置cacheMap键名以“StudentDao”开头的数据。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (14)

1.一种基于AOP技术缓存函数执行结果的方法,包括以下步骤:
步骤1、调用业务逻辑处理函数,并由特征码生成装置生成该业务逻辑处理函数唯一的实例特征码;
步骤2、根据业务逻辑处理函数的实例特征码,在数据缓存装置中检索是否存在该函数的函数执行结果,若是则进入步骤3,若否则进入步骤4;
步骤3、从数据缓存装置中得到缓存的函数执行结果,进入步骤5;
步骤4、执行所述业务逻辑处理函数,并将得到的函数执行结果缓存到数据缓存装置;
步骤5、将函数执行结果返回给业务逻辑处理函数的调用方。
2.如权利要求1所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:如果步骤1中所调用的业务逻辑处理函数为更新目标数据的函数,会将数据缓存装置中该函数所在类对应的缓存数据进行清除。
3.如权利要求2所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:清除函数所在类对应的数据的具体步骤为:
1)调用修改目标数据的业务逻辑处理函数;
2)执行所调用的更新目标数据的业务逻辑处理函数,并获取被执行函数所在类名;
3)获取数据缓存装置的函数实例特征码列表,将实例特征码列表中的每个函数实例特征码与步骤2)被执行函数所在类名进行对比,并删除数据缓存装置中以被执行函数所在类名开头的实例特征码所对应的缓存数据。
4.如权利要求1或2或3所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:步骤1中,所述业务逻辑处理函数为面向对象开发语言Java语言的对象成员函数。
5.如权利要求1或2或3所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:步骤1中,所述的实例特征码是根据函数实例的类名、函数名和参数信息生成的,以类名开头的唯一的函数实例特征码。
6.如权利要求5所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:所述参数是Java语言的基本数据类型、数组或对象类型,参数的个数为一个、多个或者没有。
7.如权利要求1或2或3所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:在数据缓存装置中检索函数执行结果是以函数的实例特征码为依据进行的,在缓存时是以实例特征码为主键将函数执行结果存入到数据缓存装置的。
8.如权利要求1所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:步骤4中,当业务逻辑处理函数的处理结果为有效数据类型的返回值时,才对函数执行结果进行缓存。
9.如权利要求2所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:所述更新目标数据的函数包括追加函数、修改函数或删除函数。
10.如权利要求1或2或3所述的一种基于AOP技术缓存函数执行结果的方法,其特征在于:如果要对业务逻辑处理函数的函数执行结果进行缓存或者对更新目标数据的函数进行数据清除,需要在Spring配置文件中将此函数的函数名设置为切入点,并在切入点进行函数执行结果的缓存或者缓存数据的清除。
11.一种基于AOP技术缓存函数执行结果的系统,包括:
特征码生成装置:用于生成所调用的业务逻辑处理函数的唯一的实例特征码;
数据缓存装置:用于保存函数执行结果;
缓存处理通知装置:用于在数据缓存装置中检索是否存在实例特征码所对应的函数执行结果;若是则从数据缓存装置获得该实例特征码对应的执行结果并返回给调用方;若否则执行业务逻辑处理函数,将函数执行结果保存到数据缓存装置中,并将函数执行结果返回给调用方;
缓存清除通知装置:用于在业务逻辑处理函数为更新目标数据的函数时,清除数据缓存装置中该函数所在类对应的缓存数据。
12.如权利要求11所述的一种基于AOP技术缓存函数执行结果的系统,其特征在于:所述函数实例特征码是根据所调用的业务逻辑处理函数的函数实例的类名、函数名及参数信息生成的,以类名开头的唯一的函数实例特征码。
13.如权利要求11或12所述的一种基于AOP技术缓存函数执行结果的系统,其特征在于:对缓存处理通知装置和缓存清除通知装置,需要在Spring配置文件中将要调用的业务逻辑处理函数的函数名设置为切入点,并在此切入点执行数据的缓存或清除。
14.如权利要求11或12或13所述的一种基于AOP技术缓存函数执行结果的系统,其特征在于:缓存处理通知装置进行数据的检索是以实例特征码为依据进行的,在缓存函数执行结果时是以实例特征码为主键将函数执行结果保存到数据缓存装置中的。
CN201110266778.3A 2011-09-09 2011-09-09 一种基于aop技术缓存函数执行结果的方法及系统 Active CN102999319B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110266778.3A CN102999319B (zh) 2011-09-09 2011-09-09 一种基于aop技术缓存函数执行结果的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110266778.3A CN102999319B (zh) 2011-09-09 2011-09-09 一种基于aop技术缓存函数执行结果的方法及系统

Publications (2)

Publication Number Publication Date
CN102999319A true CN102999319A (zh) 2013-03-27
CN102999319B CN102999319B (zh) 2016-08-10

Family

ID=47927929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110266778.3A Active CN102999319B (zh) 2011-09-09 2011-09-09 一种基于aop技术缓存函数执行结果的方法及系统

Country Status (1)

Country Link
CN (1) CN102999319B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425532A (zh) * 2013-08-27 2013-12-04 北京京东尚科信息技术有限公司 一种java无状态对象的管理方法和装置
CN106681760A (zh) * 2016-12-12 2017-05-17 国网北京市电力公司 基于客户工程项目管理系统的事务处理方法和装置
CN107094271A (zh) * 2017-06-14 2017-08-25 深圳市飞鸿光电子有限公司 一种实现光网络单元与光线路终端对接的方法及系统
CN108228439A (zh) * 2018-01-04 2018-06-29 广东睿江云计算股份有限公司 一种程序与日志解耦的方法
CN110221829A (zh) * 2019-05-10 2019-09-10 杭州米雅信息科技有限公司 信息处理方法及其系统、计算机系统及计算机可读介质
CN110515962A (zh) * 2019-08-30 2019-11-29 北京三快在线科技有限公司 缓存数据的方法、装置、电子设备及存储介质
CN113282621A (zh) * 2021-04-23 2021-08-20 北京皮尔布莱尼软件有限公司 一种缓存数据的处理方法及计算设备
CN114938666A (zh) * 2019-12-23 2022-08-23 美光科技公司 有效避免行高速缓存器未命中

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
庄少炖: "基于Spring的轻量级Web框架研究与实现", 《万方学位论文》 *
陈垚: "基于AOP的轻量级解耦框架的设计与实现", 《中国优秀硕士学位论文全文数据库》 *
陈昊: "一种基于JAVA语言的缓存系统的设计和实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103425532A (zh) * 2013-08-27 2013-12-04 北京京东尚科信息技术有限公司 一种java无状态对象的管理方法和装置
CN106681760A (zh) * 2016-12-12 2017-05-17 国网北京市电力公司 基于客户工程项目管理系统的事务处理方法和装置
CN107094271A (zh) * 2017-06-14 2017-08-25 深圳市飞鸿光电子有限公司 一种实现光网络单元与光线路终端对接的方法及系统
CN108228439A (zh) * 2018-01-04 2018-06-29 广东睿江云计算股份有限公司 一种程序与日志解耦的方法
CN108228439B (zh) * 2018-01-04 2021-05-11 广东睿江云计算股份有限公司 一种程序与日志解耦的方法
CN110221829A (zh) * 2019-05-10 2019-09-10 杭州米雅信息科技有限公司 信息处理方法及其系统、计算机系统及计算机可读介质
CN110515962A (zh) * 2019-08-30 2019-11-29 北京三快在线科技有限公司 缓存数据的方法、装置、电子设备及存储介质
CN114938666A (zh) * 2019-12-23 2022-08-23 美光科技公司 有效避免行高速缓存器未命中
CN113282621A (zh) * 2021-04-23 2021-08-20 北京皮尔布莱尼软件有限公司 一种缓存数据的处理方法及计算设备

Also Published As

Publication number Publication date
CN102999319B (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
CN102999319A (zh) 一种基于aop技术缓存函数执行结果的方法及系统
CN107463635B (zh) 一种图片数据查询的方法和分布式NewSQL数据库系统
US10394694B2 (en) Unexplored branch search in hybrid fuzz testing of software binaries
CN107038222B (zh) 数据库缓存实现方法及其系统
Byna et al. ExaHDF5: Delivering efficient parallel I/O on exascale computing systems
CN102385628B (zh) 一种基于jdbc的数据分布式处理方法
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
CN111488143A (zh) 一种基于Springboot2代码自动生成装置和方法
WO2020248510A1 (zh) 一种终端应用行为反射的处理方法
WO2020248511A1 (zh) 一种基于运行时模型实现对终端应用控制的方法
CN104035938A (zh) 一种性能持续集成数据处理的方法及装置
WO2013153027A1 (en) Method and system for streaming processing in a map and reduce distributed computing platform
US20230315755A1 (en) Cross-organization &amp; cross-cloud automated data pipelines
CN102810184A (zh) 一种动态执行工作流的方法、装置及企业系统
US8407713B2 (en) Infrastructure of data summarization including light programs and helper steps
CN106156047A (zh) 一种快照信息处理方法及装置
US11429629B1 (en) Data driven indexing in a spreadsheet based data store
CN114138776A (zh) 图结构和图属性分离设计的方法、系统、装置和介质
CN104537012B (zh) 数据处理方法和装置
Interlandi et al. Optimizing interactive development of data-intensive applications
US11775527B2 (en) Storing derived summaries on persistent memory of a storage device
Kolovos et al. The epsilon pattern language
US11514236B1 (en) Indexing in a spreadsheet based data store using hybrid datatypes
WO2020248512A1 (zh) 一种构造终端应用行为的运行时模型的方法
CN102087613A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230615

Address after: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee after: Peking University

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: Founder International Co.,Ltd. (Beijing)

Address before: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee before: Peking University

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: Founder International Co.,Ltd. (Beijing)

TR01 Transfer of patent right