CN113296854B - 一种数据加载方法、系统、电子设备及存储介质 - Google Patents
一种数据加载方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113296854B CN113296854B CN202110695742.0A CN202110695742A CN113296854B CN 113296854 B CN113296854 B CN 113296854B CN 202110695742 A CN202110695742 A CN 202110695742A CN 113296854 B CN113296854 B CN 113296854B
- Authority
- CN
- China
- Prior art keywords
- cache
- instruction
- data loading
- annotation
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据加载方法、系统、电子设备及存储介质,该方法包括:当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解。基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值在缓存中进行对应的操作。在需要增加缓存数据库类型或修改缓存数据库类型或缓存数据库发生异常时,通过在缓存层中进行缓存配置参数的修改,利用缓存控制层协调,业务层可根据缓存配置参数自由切换不同缓存数据库类型配置项,无需重新编写缓存层代码,即可满足多种缓存数据库类型灵活切换的需求,有效提高缓存效率。
Description
技术领域
本发明涉及数据缓存的技术领域,尤其涉及一种数据加载方法、系统、电子设备及存储介质。
背景技术
现有技术中,通常采用硬编码的缓存方式,针对不同缓存对象调用不同的缓存组件,实现多种缓存并存的需求。
然而,当缓存对象对应的缓存组件发生异常,无法调用时,需关闭系统并对缓存代码进行重新编写,以调用其他缓存组件或新增缓存组件满足缓存对象的缓存需求。代码开发完成后,用户需重启应用服务才可实现正常访问,费时费力,影响用户使用体验。
因此,如何实现多种缓存灵活切换,以解决上述缓存组件异常情况,是目前需要解决的一大难题。
发明内容
本发明的目的是提供一种数据加载方法、系统、电子设备及存储介质,用于解决现有技术存在的问题。
为实现上述目的,本发明提供一种数据加载方法,所述方法包括:
当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型;
基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数;
对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值在缓存中进行对应的操作。
优选地,所述当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解,还包括:
监测是否存在有从业务层发送的数据加载请求;
当存在数据加载请求时,则通过AOP拦截器对所述数据加载请求进行拦截;
基于所述数据加载请求,确定所述缓存加载请求中对应的业务方法及业务方法的类型;
基于所述业务方法及业务方法的类型,提取对应的第一缓存注解和第二缓存注解。
优选地,在所述基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数之前,还包括:
将缓存层的JAR包引入业务层;
当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集;其中,所述配置变更文件包括业务方法、与业务方法对应的缓存指令、与业务方法的类型对应的缓存配置参数,所述代理对象数据集包括类名称以及类名称对应的索引值,所述类名称用于表征所述业务方法的类型的名称,所述索引值用于表征所述类名称的编号,且所述索引值用于调用与所述类名称对应的缓存配置参数;
根据所述类名称在对应的业务方法的类型上配置第一缓存注解,且根据所述缓存指令在对应的业务方法上配置第二缓存注解;
当所述业务方法被调用时,根据所述第一缓存注解及所述第二缓存注解,查询对应的缓存指令及预设的缓存配置参数。
优选地,所述当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集,还包括:
当收到缓存层发送的配置变更请求时,获取对应的配置变更文件的字符串;
根据所述字符串构建相应的抽象语法树,使用语法解析器对所述抽象语法树进行广度遍历,基于所述抽象语法树的节点创建数据模型文件;
将数据模型文件编译为初始字节码文件;
通过类加载器将所述初始字节码文件加载进预设的虚拟机中,得到多个类名称,按照多个所述类名称设置对应的索引值,并按照所述类名称以及对应的索引值的对应关系生成代理对象数据集,存入缓存。
优选地,所述将数据模型文件编译为初始字节码文件,还包括:
将所述数据模型文件设置为源码文件,并调用预设的编译器将所述源码文件编译为所述初始字节码文件。
优选地,在所述对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存之前,还包括:
获取预设的缓存条件,所述缓存条件用于表征满足生成缓存key值的条件;
当所述数据加载请求不符合所述缓存条件时,生成异常状态,对所述异常状态进行缓存;或,当所述数据加载请求不符合所述缓存条件时,不进行缓存。
优选地,所述缓存指令包括添加缓存指令和删除缓存指令;
所述对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存,还包括:
当所述缓存指令为添加缓存指令时,将所述缓存key值添加至缓存中;
当所述缓存指令为删除缓存指令时,将所述缓存key值从缓存中删除。
为实现上述目的,本发明还提供一种数据加载系统,包括:
提取单元,用于当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型;
获取单元,用于基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数;
缓存单元,用于对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存。
为实现上述目的,本发明还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现上述任意一项所述的数据加载方法。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述任意一项所述的数据加载方法。
上述技术方案的有益效果:
本发明提供的数据保存查询方法、系统、计算机系统及可读存储介质,通过将缓存层的JAR包引入业务层,以便在业务层与缓存层之间分离出一个缓存控制层。在需要增加缓存数据库类型或修改缓存数据库类型或缓存数据库发生异常时,通过在缓存层中进行缓存配置参数的修改,利用缓存控制层协调,业务层可根据缓存配置参数自由切换不同缓存数据库类型配置项,无需重新编写缓存层代码,即可满足多种缓存数据库类型灵活切换的需求,有效提高缓存效率。
附图说明
图1为本发明数据加载方法实施例一的流程示意图a;
图2为本发明数据加载方法实施例一的流程示意图b;
图3为本发明数据加载方法实施例一的流程示意图c
图4为本发明数据加载方法实施例二的数据加载系统的功能单元图;
图5为本发明数据加载方法实施例三的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在说本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
实施例一
请参阅图1,其为本发明数据加载方法实施例一的流程示意图a,从图中可以看出,包括S100、S200、S300步骤,具体如下:
S100:当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型。
在示例性的实施例中,使用第二缓存注解标注在数据加载请求中的业务方法上,用于表征数据加载请求中不同的业务方法。例如:使用@PutCache的缓存注解标记在数据加载请求中业务方法上,以作为第二缓存注解,用于表征数据加载请求中不同的业务方法。如:加购方法、收藏方法等。或者,还可使用@EvictCache的缓存注解标记在数据加载请求中的业务方法上,以作为第二缓存注解,用于表征数据加载请求中不同的业务方法。如:删除加购方法、删除收藏方法等。
使用第一缓存注解标注在数据加载请求中的业务方法的类型上,用于表征数据加载请求中的业务方法的不同类型。例如:使用@CacheSwitch的缓存注解标记在数据加载请求中业务方法的类型上,以作为第一缓存注解,用于表征数据加载请求中的业务方法的不同类型。如:货币基金业务类型的加购方法或收藏方法、定期理财业务类型的加购方法或收藏方法、电商购物业务类型的加购方法或收藏方法等。另外,业务方法的不同类型,也可以理解为业务方法的不同类型用户,如:A用户的加购方法或收藏方法、B用户的加购方法或收藏方法、C用户的加购方法或收藏方法等。
具体的,监测是否存在有从业务层发送的数据加载请求,当存在数据加载请求时,则通过AOP(面向切面的编程)拦截器对所述数据加载请求进行拦截,基于所述数据加载请求,确定所述缓存加载请求中对应的业务方法及业务方法的类型,基于所述业务方法及业务方法的类型,提取对应的第一缓存注解和第二缓存注解。本发明使用AOP拦截器,面向对象的特点是继承、多态和封装,让不同的类设计不同的方法,便于代码分散至一个个的类中,降低各类代码之间的耦合度,提高类的可重用性。
S200:基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数。
其中,所述缓存指令包括删除缓存指令和添加缓存指令,所述缓存配置参数包括缓存数据库类型配置项(Redis缓存数据库、Memcached缓存数据库、Hippo缓存数据库等)、缓存时间配置项(过期时间)、缓存序列化方式配置项(Jdk、Json)等。
在示例性的实施例中,根据不同的业务方法,匹配不同的缓存指令。例如:删除加购方法或删除收藏方法,匹配删除缓存指令;加购方法或收藏方法,匹配添加缓存指令。根据业务方法的不同类型,匹配不同的缓存配置参数。例如:针对货币基金业务类型、定期理财业务类型、电商购物业务类型,可分别匹配Redis缓存数据库、Memcached缓存数据库、Hippo缓存数据库;或针对A用户、B用户、C用户,可分别匹配Redis缓存数据库、Memcached缓存数据库、Hippo缓存数据库(本实施仅针对缓存配置参数中缓存数据库类型配置项举例说明,其他配置项原理相同)。其中,业务人员可根据具体的业务需求预先对缓存配置参数进行自定义配置。
请参阅图2,其为本发明数据加载方法实施例一的流程示意图b,从图中可以看出,S200步骤包括S201、S202、S203、S204步骤,具体如下:
S201:将缓存层的JAR包引入业务层。
JAR包(JAVA归档,英语:JAVA Archive)是一种软件包文件格式,通常用于聚合大量的JAVA类文件、相关的元数据和资源(文本、图片等)文件到一个文件,是一种归档文件。
将缓存层的JAR包引入业务层,以便在业务层与缓存层之间分离出一个缓存控制层。可以理解为,通过在缓存层中进行缓存配置参数或缓存指令的修改,利用缓存控制层协调,业务层可根据缓存配置参数自由切换不同缓存数据库类型配置项,进而实现无需重新编写缓存层代码即可满足多种缓存数据库类型灵活切换的需求。
S202:当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集;其中,所述配置变更文件包括业务方法、与业务方法对应的缓存指令、与业务方法的类型对应的缓存配置参数,所述代理对象数据集包括类名称以及类名称对应的索引值,所述类名称用于表征所述业务方法的类型的名称,所述索引值用于表征所述类名称的编号,且所述索引值用于调用与所述类名称对应的缓存配置参数。
JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,JAVA反射机制具有动态获取信息以及动态调用对象方法的功能。可以理解为,当业务方法的类型为电商购物业务类型时,通过JAVA反射机制可得到电商购物业务类型下的加购方法、收藏方法、删除加购方法、删除收藏方法;或者,当业务方法为加购方法或收藏方法或删除加购方法或删除收藏方法时,通过JAVA反射机制可得到上述业务方法的类型为电商购物业务类型。
请参阅图3,其为本发明数据加载方法实施例一的流程示意图c,从图中可以看出,S202步骤包括S2021、S2022、S2023、S2024步骤,具体如下:
S2021:当收到缓存层发送的配置变更请求时,获取对应的配置变更文件的字符串。
其中,配置变更文件为JSON格式,所述配置变更文件的字符串的内容包括有各个业务方法、针对各个业务方法所配置的对应的缓存指令、针对各个业务方法的类型所配置的对应的缓存配置参数。
S2022:根据所述字符串构建相应的抽象语法树,使用语法解析器对所述抽象语法树进行广度遍历,基于所述抽象语法树的节点创建数据模型文件。
在示例性的实施例中,使用JSON语法解析器对JSON格式的配置变更文件的字符串进行节点(Token)分解,参与至抽象语法树的节点构建,所述抽象语法树包括枝干节点和叶子节点。然后使用JSON语法解析器对所述抽象语法树进行广度遍历,以收集抽象语法树在同一高度节点上的所有节点,创建一批数据模型,并基于抽象语法树生成对应的数据模型文件。其中,所述数据模型文件为.JAVA文件。
可以理解为,对各个业务方法内容中的字符串进行节点分解,获得各个业务方法的类型,根据业务方法的不同类型对各个业务方法进行分类建树。例如:枝干节点为:电商购物业务类型,对应的叶子节点可以有:电商购物业务类型中的加购方法或收藏方法。通过收集枝干节点(电商购物业务类型)上的所有节点,创建一个对应电商购物业务类型的数据模型,同理构建币基金业务类型的数据模型、定期理财业务类型的数据模型,以生成数据模型文件。
S2023:将数据模型文件编译为初始字节码文件。
将所述数据模型文件设置为源码文件,并调用预设的编译器将所述源码文件编译为所述初始字节码文件。其中,预设的编译器为JAVAC编译工具,初始字节码文件为.class文件。
所述初始字节码文件用于表征从配置变更文件的字符串原数据结构中抽象创建的文件,包括多个具有获取功能及设置数据功能的数据模型。例如:获取业务方法的类型,就是通过字节码动态创建一个具有相似功能的对象,并对该对象拓展了更多的功能。可以理解为,获取多个业务方法,对多个业务方法进行分类后,对分类后的业务方法定义一个新的类型,对不同类型的业务方法进行进行编码,根据编码自动识别该业务方法的类型。
S2024:通过类加载器将所述初始字节码文件加载进预设的虚拟机中,得到多个类名称,按照多个所述类名称设置对应的索引值,并按照所述类名称以及对应的索引值的对应关系生成代理对象数据集,存入缓存。
在示例性的实施例中,所述虚拟机为JAVA虚拟机,所述类加载器包括引导(Bootstrap)类加载器、扩展(Extension)类加载器、系统(System)类加载器(也称应用类加载器)和自定义(Custom)类加载器,此处不作限定。
其中,所述类名称用于表征所述业务方法的类型的名称,所述索引值用于表征所述业务方法的类型的名称的编号。通过所述索引值调用与所述业务方法的类型的名称对应的缓存配置参数。
S203:根据所述类名称在对应的业务方法的类型上配置第一缓存注解,且根据所述缓存指令在对应的业务方法上配置第二缓存注解;
S204:当所述业务方法被调用时,根据所述第一缓存注解及所述第二缓存注解,查询对应的缓存指令及预设的缓存配置参数。
S300:对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进在缓存中进行对应的操作。
在示例性的实施例中,将业务方法对应的用户ID(或业务类型ID)设为缓存key值,value为具体的缓存数据,采用key-value的方式将所述业务方法的数据进行缓存。可以理解为,A用户在业务层发送了数据加载请求,根据数据加载请求中的业务方法的类型匹配对应的缓存配置参数,根据业务方法匹配对应的缓存指令,最后基于A用户的用户ID生成key值,将A用户的缓存数据以key-value方式在对应缓存数据库中进行缓存。
其中,当所述缓存指令为添加缓存指令时,将所述缓存key值添加至缓存中;当所述缓存指令为删除缓存指令时,将所述缓存key值从缓存中删除。例如:针对添加缓存指令进行举例说明,A用户在电商购物平台上加购了一件商品,业务方法的类型为电商购物业务,对应的缓存数据库是Redis缓存数据库,业务方法为加购商品,对应的缓存方法是添加缓存指令,即使用A用户的用户ID作为缓存key值,将A用户在电商购物平台上加购了一件商品的缓存数据添加至对应的Redis缓存数据库中。
同时,当所述数据加载请求不符合所述缓存条件时,生成异常状态,对所述异常状态进行缓存,或当所述数据加载请求不符合所述缓存条件时,不进行缓存。
在示例性的实施例中,所述缓存条件用于表征满足生成缓存key值的条件。当缓存key值为业务方法对应的用户ID时,对应的所述缓存条件为用户ID不为空,具体的所述缓存条件可基于缓存key值的适配设置。例如:当所述缓存条件为用户ID不为空时,若A用户未在电商购物平台注册账号,无用户ID,即不满足缓存条件,对应生成异常状态,对所述异常状态进行缓存,或不进行缓存。
实施例二
如图4所示,其为本发明数据加载方法实施例二的数据加载系统的功能单元图,从图中可以看出:
所述系统包括提取单元31、获取单元32及缓存单元33。本发明所称的单元是指一种能够被处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各单元的功能将在后续的实施例中详述。
提取单元31用于当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型。
在示例性的实施例中,监测是否存在有从业务层发送的数据加载请求,当存在数据加载请求时,则通过AOP拦截器对所述数据加载请求进行拦截,基于所述数据加载请求,确定所述缓存加载请求中对应的业务方法及业务方法的类型,基于所述业务方法及业务方法的类型,提取对应的第一缓存注解和第二缓存注解。
获取单元32用于基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数。
所述缓存指令包括删除缓存指令和添加缓存指令,所述缓存配置参数包括缓存数据库类型配置项(Redis缓存数据库、Memcached缓存数据库、Hippo缓存数据库等)、缓存时间配置项(过期时间)、缓存序列化方式配置项(Jdk、Json)等。
缓存单元33用于对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存。
在示例性的实施例中,所述缓存指令包括添加缓存指令和删除缓存指令。当所述缓存指令为添加缓存指令时,将所述缓存key值进行添加至缓存;当所述缓存指令为删除缓存指令时,从缓存中将所述缓存key值进行删除。
实施例三
如图5所示,为本发明数据加载方法实施例三的电子设备的结构示意图。
在示例性的实施例中,所述电子设备4包括,但不限于,存储器41、处理器42,以及存储在所述存储器41中并可在所述处理器上运行的计算机程序,例如数据加载程序。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。
所述存储器41至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器41可以是电子设备的内部存储模块,例如该电子设备的硬盘或内存。在另一些实施例中,存储器41也可以是电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器41还可以既包括电子设备的内部存储模块也包括其外部存储设备。本实施例中,存储器41通常用于存储安装于电子设备的操作系统和各类应用软件。此外,存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42可以是中央处理模块(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器42是所述电子设备的运算核心和控制中心,利用各种接口和线路连接整个电子设备的各个部分,及执行所述电子设备的操作系统以及安装的各类应用程序、程序代码等。
所述处理器42执行所述电子设备的操作系统以及安装的各类应用程序。所述处理器42执行所述应用程序以实现上述各个数据加载方法实施例中的步骤,例如图1所示的步骤S100、S200、S300。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储实现所述数据加载方法的计算机程序,被处理器42执行时实现实施例一或二或三的数据加载方法。
Claims (8)
1.一种数据加载方法,其特征在于,所述方法包括:
当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型;
基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数;
其中,在所述基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数之前,还包括:将缓存层的JAR包引入业务层;当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集;
其中,所述当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集,包括:当收到缓存层发送的配置变更请求时,获取对应的配置变更文件的字符串;根据所述字符串构建相应的抽象语法树,使用语法解析器对所述抽象语法树进行广度遍历,基于所述抽象语法树的节点创建数据模型文件;将数据模型文件编译为初始字节码文件;通过类加载器将所述初始字节码文件加载进预设的虚拟机中,得到多个类名称,按照多个所述类名称设置对应的索引值,并按照所述类名称以及对应的索引值的对应关系生成代理对象数据集,存入缓存;
其中,所述配置变更文件包括业务方法、与业务方法对应的缓存指令、与业务方法的类型对应的缓存配置参数,所述代理对象数据集包括类名称以及类名称对应的索引值,所述类名称用于表征所述业务方法的类型的名称,所述索引值用于表征所述类名称的编号,且所述索引值用于调用与所述类名称对应的缓存配置参数;所述缓存指令在对应的业务方法上配置第二缓存注解;当所述业务方法被调用时,根据所述第一缓存注解及所述第二缓存注解,查询对应的缓存指令及预设的缓存配置参数;
对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值在缓存中进行对应的操作。
2.根据权利要求1所述的数据加载方法,其特征在于,所述当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解,还包括:
监测是否存在有从业务层发送的数据加载请求;
当存在数据加载请求时,则通过AOP拦截器对所述数据加载请求进行拦截;
基于所述数据加载请求,确定所述数据加载请求中对应的业务方法及业务方法的类型;
基于所述业务方法及业务方法的类型,提取对应的第一缓存注解和第二缓存注解。
3.根据权利要求1所述的数据加载方法,其特征在于,所述将数据模型文件编译为初始字节码文件,还包括:
将所述数据模型文件设置为源码文件,并调用预设的编译器将所述源码文件编译为所述初始字节码文件。
4.根据权利要求1所述的数据加载方法,其特征在于,在所述对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存之前,还包括:
获取预设的缓存条件,所述缓存条件用于表征满足生成缓存key值的条件;
当所述数据加载请求不符合所述缓存条件时,生成异常状态,对所述异常状态进行缓存;或,当所述数据加载请求不符合所述缓存条件时,不进行缓存。
5.根据权利要求1所述的数据加载方法,其特征在于,所述缓存指令包括添加缓存指令和删除缓存指令;
所述对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存,还包括:
当所述缓存指令为添加缓存指令时,将所述缓存key值添加至缓存中;
当所述缓存指令为删除缓存指令时,将所述缓存key值从缓存中删除。
6.一种数据加载系统,其特征在于,包括:
提取单元,用于当收到业务层发送的数据加载请求时,提取所述数据加载请求中第一缓存注解和第二缓存注解;其中,所述第二缓存注解用于表征所述数据加载请求中的业务方法,所述第一缓存注解用于表征所述数据加载请求中的业务方法的类型;
获取单元,用于基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数;
其中,在所述基于所述业务方法及所述业务方法的类型,获取所述业务方法对应的缓存指令及预设的缓存配置参数之前,还包括:将缓存层的JAR包引入业务层;当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集;
其中,所述当收到缓存层发送的配置变更请求时,获取对应的配置变更文件,采用JAVA反射机制生成代理对象数据集,包括:当收到缓存层发送的配置变更请求时,获取对应的配置变更文件的字符串;根据所述字符串构建相应的抽象语法树,使用语法解析器对所述抽象语法树进行广度遍历,基于所述抽象语法树的节点创建数据模型文件;将数据模型文件编译为初始字节码文件;通过类加载器将所述初始字节码文件加载进预设的虚拟机中,得到多个类名称,按照多个所述类名称设置对应的索引值,并按照所述类名称以及对应的索引值的对应关系生成代理对象数据集,存入缓存;
其中,所述配置变更文件包括业务方法、与业务方法对应的缓存指令、与业务方法的类型对应的缓存配置参数,所述代理对象数据集包括类名称以及类名称对应的索引值,所述类名称用于表征所述业务方法的类型的名称,所述索引值用于表征所述类名称的编号,且所述索引值用于调用与所述类名称对应的缓存配置参数;所述缓存指令在对应的业务方法上配置第二缓存注解;当所述业务方法被调用时,根据所述第一缓存注解及所述第二缓存注解,查询对应的缓存指令及预设的缓存配置参数;
缓存单元,用于对所述数据加载请求进行解析,生成对应的缓存key值,根据所述缓存指令及缓存配置参数对所述缓存key值进行缓存。
7.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现如权利要求1至5中任意一项所述的数据加载方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现如权利要求1至5任意一项所述的数据加载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110695742.0A CN113296854B (zh) | 2021-06-23 | 2021-06-23 | 一种数据加载方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110695742.0A CN113296854B (zh) | 2021-06-23 | 2021-06-23 | 一种数据加载方法、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296854A CN113296854A (zh) | 2021-08-24 |
CN113296854B true CN113296854B (zh) | 2023-02-07 |
Family
ID=77329250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110695742.0A Active CN113296854B (zh) | 2021-06-23 | 2021-06-23 | 一种数据加载方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296854B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641414A (zh) * | 2021-08-30 | 2021-11-12 | 平安国际融资租赁有限公司 | 物联网设备接入方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372266A (zh) * | 2016-11-21 | 2017-02-01 | 郑州云海信息技术有限公司 | 一种基于切面和配置文件的云操作系统缓存及访问方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9965515B2 (en) * | 2016-02-26 | 2018-05-08 | Sap Se | Method and device for cache management |
CN108628891A (zh) * | 2017-03-21 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 实现数据缓存层的方法、装置、电子设备和可读存储介质 |
CN107463378A (zh) * | 2017-07-28 | 2017-12-12 | 深圳市丰巢科技有限公司 | 一种基于注解的本地缓存实现方法、存储设备及电子设备 |
CN108153812A (zh) * | 2017-11-24 | 2018-06-12 | 广州高清视信数码科技股份有限公司 | 数据通信的方法、装置、计算机设备及存储介质 |
US11176139B2 (en) * | 2019-11-19 | 2021-11-16 | Microstrategy Incorporated | Systems and methods for accelerated contextual delivery of data |
CN112019619A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 分布式缓存处理方法、装置、设备及存储介质 |
-
2021
- 2021-06-23 CN CN202110695742.0A patent/CN113296854B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372266A (zh) * | 2016-11-21 | 2017-02-01 | 郑州云海信息技术有限公司 | 一种基于切面和配置文件的云操作系统缓存及访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113296854A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107644323B (zh) | 一种面向业务流的智能审核系统 | |
CN1641583B (zh) | 自描述软件映象更新组件 | |
US20150169319A1 (en) | Verification of backward compatibility of software components | |
US7448028B2 (en) | System and method for selective local object retrieval | |
US20050038816A1 (en) | Methods, systems and computer program prodcuts for validation of XML instance documents using JAVA classloaders | |
CN110597814A (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN114218315A (zh) | 接口生成方法、装置、计算机设备及存储介质 | |
CN115185550A (zh) | 服务部署方法、装置、计算机设备及存储介质 | |
CN113157315A (zh) | 一种软件不同版本的差异信息识别方法、装置、设备及介质 | |
CN111078276B (zh) | 应用程序的冗余资源处理方法、装置、设备及存储介质 | |
CN113296854B (zh) | 一种数据加载方法、系统、电子设备及存储介质 | |
US8516448B2 (en) | Identifying interpreted programs through class loading sequences | |
CN114995859A (zh) | 页面热更新方法、装置、设备及存储介质 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN101145164B (zh) | 一种序时簿的查询方法及一种序时簿的查询装置 | |
CN115328458B (zh) | 一种业务应用开发方法及装置 | |
CN111324645B (zh) | 区块链的数据处理方法及装置 | |
CN111752547A (zh) | 一种修改Java序列化对象序列号的方法及其应用 | |
CN111045746A (zh) | 代码扩展方法和框架 | |
CN112181407B (zh) | 业务实现处理方法及装置、系统、电子设备和存储介质 | |
CN111399842A (zh) | 一种代码编译方法及装置 | |
CN115964075B (zh) | 应用导出导入方法、装置、计算机设备及存储介质 | |
CN110413644B (zh) | 一种数据缓存方法、电子装置及计算机可读存储介质 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 | |
CN113722538B (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 |