The embodiment of the invention relates to the technical field of application program development, and discloses a method for persistent function program, an electronic device and a storage medium. The method comprises the following steps: when executing the target program, judging whether the function of the target program needs to be saved, and if it needs to be saved, saving the context and running code of the function that needs to be saved; where the saved function is a persistent compiler function with the closure recovery process; and judging whether it needs to be saved. To restore the saved functions, when the saved functions need to be restored, the context and running code of the saved functions are read, and the saved functions are compiled on-the-spot to get the runnable persistent compiler functions; and the runnable persistent compiler functions are executed. The invention achieves the goal of functional program persistence by automatically storing functions and their closure variables and restoring functions and their closure variables, thereby greatly improving the development efficiency of Internet applications and reducing the error rate.
【技术实现步骤摘要】
函数程序持久化的方法、电子设备及存储介质
本专利技术实施例涉及应用程序开发
,特别涉及一种函数程序持久化的方法、电子设备及存储介质。
技术介绍
程序运行状态持久化是互联网应用开发的关键问题。一般而言互联网应用都具有复杂的业务,具有多步交互,且一项业务可能会持续很长时间。这需要互联网应用能够做到程序的持久化:如电商应用中,下单步骤会生成一个“订单”作为持久化的对象。持久化是将程序数据在持久状态和瞬时状态间转换的机制。在目前所有程序设计语言所定义的程序中,变量均属于瞬时状态,程序中断运行后该变量数据就会丢失,因而部分关键数据需要经过持久化才能维持业务的正常运转。目前相关技术还都需要开发人员自行决定哪些数据需要持久化。当前一些程序设计语言中已具备较为成熟的持久化方案,如Java的Hibernate组件,Python中的Pickle等;这些持久化方案通过显式地对该组件进行调用来将变量写入磁盘或数据库中。虽然这些方案能够解决持久化问题,然而这些持久化方案会使得程序代码多出来一些专门用于持久化的冗余代码,此外这些方案并不能帮助开发者判断何时应将变量持久化,何时读出变量。因此这些方案虽然提供了持久化方案,但对于初级程序员而言极容易误用,对于高级程序员而言又制约他们的开发效率。目前也有一些工具能够对程序代码自动产生持久化类。如JavaBeans、GreenDao等工具,能够根据数据库表自动创建类并交给程序员使用。这一工具解决了持久化组件的需要手工操作编写的困难。这类工具在客户端上的应用较为流行。此外,在程序设计时时常需要对复杂的数据结构进行持久化。如多级嵌套、甚至包 ...
【技术保护点】
1.一种函数程序持久化的方法,其特征在于,包括:执行目标程序时,判断所述目标程序的函数是否需要被保存,若需要被保存,则保存所述需要被保存的函数的上下文环境及运行代码;其中,所述被保存的函数为具备闭包恢复过程的持久化编译函数;判断是否需要恢复所述被保存的函数,在需要恢复所述被保存的函数时,读取所述被保存的函数的上下文环境及运行代码,并对所述被保存的函数进行现场编译,得到可运行的持久化编译函数;执行所述可运行的持久化编译函数。
【技术特征摘要】
1.一种函数程序持久化的方法,其特征在于,包括:执行目标程序时,判断所述目标程序的函数是否需要被保存,若需要被保存,则保存所述需要被保存的函数的上下文环境及运行代码;其中,所述被保存的函数为具备闭包恢复过程的持久化编译函数;判断是否需要恢复所述被保存的函数,在需要恢复所述被保存的函数时,读取所述被保存的函数的上下文环境及运行代码,并对所述被保存的函数进行现场编译,得到可运行的持久化编译函数;执行所述可运行的持久化编译函数。2.根据权利要求1所述的函数程序持久化的方法,其特征在于,对所述被保存的函数进行现场编译,得到可运行的持久化编译函数,具体包括:对需要被恢复的函数的运行代码进行编译得到用于生成函数对象的函数类;将保存的上下文环境中的所述需要被恢复的函数的实例传递给所述函数类,并运行所述函数类,以生成一个函数对象;递归地执行上述一个函数对象的生成步骤,直到所述需要被恢复的函数的上下文环境中的所有函数对象均被重新生成。3.根据权利要求1所述的函数程序持久化的方法,其特征在于,所述具备闭包恢复过程的持久化编译函数通过以下方式实现:从待持久化的原程序中提取出所有函数以及各函数的闭包;确定并记录所述各函数的上下文环境;在各所述函数中写入用于恢复所述闭包的运行代码以生成所述持久化编译函数。4.根据权利要求1所述的函数程...
【专利技术属性】
技术研发人员:刘诗聪,武红华,
申请(专利权)人:上海赞控网络科技有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。