CN111381830A - 程序中的数据请求处理方法、装置和计算机设备 - Google Patents
程序中的数据请求处理方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN111381830A CN111381830A CN202010161406.3A CN202010161406A CN111381830A CN 111381830 A CN111381830 A CN 111381830A CN 202010161406 A CN202010161406 A CN 202010161406A CN 111381830 A CN111381830 A CN 111381830A
- Authority
- CN
- China
- Prior art keywords
- script
- tcc
- script file
- target
- data processing
- 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.)
- Pending
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种程序中的数据请求处理方法、装置、计算机设备和存储介质。方法包括:响应数据处理请求,提取数据处理请求中携带的场景标识,根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识,查找与目标脚本标识对应的目标TCC脚本文件,调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理结果。利用TCC脚本文件与TCC编译器的配合,实现了脚本函数的高效执行,从而快速得到数据处理请求对应的数据处理结果,提高了执行效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种程序中的数据请求处理方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,数据处理方式也越来越多样化,对于具有前端应用程序的***中,通常需要通过后台管理***对前端应用程序进行管理,例如功能扩展、bug修复、补丁处理等。而这些管理需要通过代码修改并最终应用到应用程序中才能实现。
传统技术中,对于频繁修改代码的情况,对于每一次修改,都需要重新对修改后的所有代码进行编译运行,处理流程复杂且多为重复处理。为此,提出了使用脚本语言进行更新处理的方法,脚本语言可以嵌入应用程序中,可以为应用程序提供灵活的扩展和定制功能。
但基于现有的脚本语言的处理方式,在应用程序的执行过程中会存在执行效率低的问题。
发明内容
基于此,有必要针对现有的程序中脚本语言处理方式存在执行效率低的技术问题,提供一种能够提高执行效率的程序中的数据请求处理方法、装置、计算机设备和存储介质。
一种程序中的数据请求处理方法,方法包括:
响应数据处理请求,提取数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
从预加载TCC(Tiny C Compiler,轻量级高速的C语言编译器)脚本文件库中查找与脚本标识对应的目标TCC脚本文件;
调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
一种程序中的数据请求处理装置,装置包括:
场景标识提取模块,用于响应数据处理请求,提取数据处理请求中携带的场景标识;
脚本标识获取模块,用于根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
脚本文件查找模块,用于查找与目标脚本标识对应的目标TCC脚本文件;
脚本执行模块,用于调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
响应数据处理请求,提取数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
查找与目标脚本标识对应的目标TCC脚本文件;
调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应数据处理请求,提取数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
查找与目标脚本标识对应的目标TCC脚本文件;
调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
上述程序中的数据请求处理方法、装置、计算机设备和存储介质,通过提取数据处理请求中携带的场景标识,确定对应的脚本标识,一方面,获取的脚本文件为TCC脚本文件,适用于TCC编译环境,另一方面,利用TCC编译器的不编译直接运行的特性,执行调用目标TCC脚本文件中的函数,利用TCC脚本文件与TCC编译器的配合,实现了脚本函数的高效执行,从而快速得到数据处理请求对应的数据处理结果,提高了执行效率。
附图说明
图1为一个实施例中程序中的数据请求处理方法的应用环境图;
图2为一个实施例中程序中的数据请求处理方法的流程示意图;
图3为另一个实施例中程序中的数据请求处理方法的流程示意图;
图4为再一个实施例中程序中的数据请求处理方法的流程示意图;
图5为还一个实施例中程序中的数据请求处理方法的流程示意图;
图6为其中一个实施例中程序中的数据请求处理方法的流程示意图;
图7(a)为一个实施例中程序中的数据请求处理方法的中TCC脚本生成器的GUI图;
图7(b)为一个实施例中程序中的数据请求处理方法的中TCC脚本检查器的GUI图;
图7(c)为一个实施例中程序中的数据请求处理方法的应用场景流程图;
图8为另一个实施例中程序中的数据请求处理方法的流程示意图;
图9为一个实施例中程序中的数据请求处理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的程序中的数据请求处理方法,可以应用于如图1所示的应用程序管理***。应用程序管理***包括终端102与服务器104,服务器104中包括应用程序管理模块和后台脚本管理模块。其中,终端102上安装有应用程序,终端102上的应用程序与服务器104中的应用程序管理模块通过网络连接,服务器104中的应用程序管理模块与后台脚本管理模块连接。在终端启动目标程序,应用程序管理模块响应目标程序启动后生成的数据处理请求,提取数据处理请求中携带的场景标识,根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识,然后查找与目标脚本标识对应的目标TCC脚本文件,调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果,最后将数据处理结果展示至终端102的应用程序的对应界面中。其中,预加载TCC脚本文件库中的TCC脚本文件从后台脚本管理模块中预加载得到。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备中安装的应用程序,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种程序中的数据请求处理方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤210至步骤240。
步骤210,响应数据处理请求,提取数据处理请求中携带的场景标识。
数据处理请求是指客户端对应目标程序的进程启动之后,在目标程序进程的执行过程中主动或被动触发时,生成需要进行数据处理的请求,客户端在生成数据处理请求之后,将数据处理请求反馈至服务器中的应用程序管理模块。由服务器中的应用程序管理模块对数据处理请求进行处理。数据处理请求与目标程序进程对应的场景有关。场景的触发分为主动触发和被动触发,主动触发是指目标程序进程在执行过程中,接收到外部输入数据时被触发的场景,需要以外部输入数据作为参数进行相关处理计算。被动触发是指以其他函数作为参数时,该其他函数变化时,根据目标程序的进程执行,需要进行的处理计算。以目标程序为游戏进程为例,在游行进程的主循环过程中,有部分需要游戏玩家进行操作的场景,也有根据游戏操作的操作结果产生的连锁反应对应的场景,其中,由游戏玩家操作生成的数据处理请求为主动请求,由游戏玩家操作的后续连锁反应产生的数据处理请求为被动请求。
不同的数据处理请求是在不同的场景下生成的,在生成数据处理请求时,携带有该场景的场景标识,服务器中的应用程序管理模块在获取到数据处理请求时,通过请求解析处理,提取数据处理请求中携带的场景标识。举例来说,在游戏进程中,例如,场景可以是技能操作,对应的数据处理请求可以是判断技能是否命中,再例如,场景可以是技能命中,对应的数据处理请求可以是技能伤害计算等。
步骤220,根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识。
脚本标识是用来区分不同脚本文件的标识号,脚本文件是根据不同的场景,通过场景对应的数据处理逻辑生成的,生成的脚本与该场景的场景标识具有关联关系,脚本标识具体可以是脚本ID(Identity document,身份标识号)。具体来说,在生成脚本文件时,脚本文件携带有脚本标识,并将场景标识与脚本标识的关联添加至关联关系表,得到预设的场景标识与脚本标识的关联关系表。通过查找预设的场景标识与脚本标识的关联关系表,确定与场景标识关联的目标脚本标识。
脚本文件是通过特定的脚本语言编写生成的,脚本语言包括LUA脚本语言、TCC脚本语言等,LUA脚本语言是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,可以嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。TCC是一种轻量级高速的C语言编译器,具有编译/链接速度非常快的特点,与LUA的区别是,TCC可以自己编译自己。在对脚本的调用和执行过程中,利用TCC编译器可以直接运行C程序的工作特性,相较于LUA脚本的处理方式,一方面TCC编码遵循传统高效的过程语言C,另一方面由于编译器无需进过编译处理过程的工作原理差异,TCC的执行效率可达LUA的149倍,接近C++可执行文件速度,能解决LUA的密集调用的情况下存在的执行效率低的问题,降低服务器承载。
步骤230,查找与目标脚本标识对应的目标TCC脚本文件。
预加载TCC脚本文件库是指在目标程序进程启动后、主程序开始执行之前,通过预加载的方式,将TCC脚本文件加载到目标程序的进程中,得到的TCC脚本文件库。预加载简单来说就是将所有所需的资源即所有TCC脚本文件提前请求加载到本地,这样后面在需要用到时就直接从缓存取资源。根据与场景标识关联的目标脚本标识,从预加载TCC脚本文件库即从本地缓存中查找与目标脚本标识对应的目标TCC脚本文件。
步骤240,调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
在查找到目标TCC脚本文件之后,需要根据目标TCC脚本文件中的逻辑函数进行计算处理。由于脚本文件是由程序员按照对应场景的主逻辑和涉及的参数类型等编写的代码,将代码的执行一般分为编译和运行两个步骤。TCC编译器可以利用其不编译C程序,而是把它直接运行的工作特性,可以快速高效地执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
上述程序中的数据请求处理方法,通过提取数据处理请求中携带的场景标识,确定对应的脚本标识,一方面,获取的脚本文件为TCC脚本文件,适用于TCC编译环境,另一方面,利用TCC编译器的不编译直接运行的特性,执行调用目标TCC脚本文件中的函数,利用TCC脚本文件与TCC编译器的配合,实现了脚本函数的高效执行,从而快速得到数据处理请求对应的数据处理结果,提高了执行效率。
在一个实施例中,如图3所示,在响应目标程序对应的数据处理请求之前,还包括步骤310至步骤330。
步骤310,响应目标程序启动指令,启动对目标程序对应的TCC脚本运行环境的初始化进程。
步骤320,在初始化的TCC脚本运行环境中,预加载TCC脚本文件。
步骤330,根据预加载的TCC脚本文件,构建预加载TCC脚本文件库。
查找与所目标脚本标识对应的目标TCC脚本文件包括:
步骤340,从预加载TCC脚本文件库中查找与目标脚本标识对应的目标TCC脚本文件。
目标程序启动指令是指安装于客户端的目标程序被触发启动时生成的控制指令。客户端在响应触发启动操作时,生成并发送目标程序启动指令给服务器的应用程序管理模块,服务器的应用程序管理模块在接收到客户端的目标程序启动指令时,对TCC脚本运行环境进行初始化处理。
初始化处理是指对TCC脚本运行环境中的实例进行初始化处理的过程,具体来说,在上一次进行编译处理或是在构建TCC脚本运行环境时,需要使用实例来进行逻辑分析,从而引入与当前环境无关的具体参数实例。为避免残留参数实例对数据运行结果产生干扰,在目标程序启动时,对TCC脚本运行环境进行初始化处理。
在经过初始化处理后的TCC脚本运行环境中,通过预先将后台脚本管理模块的TCC脚本文件加载到应用程序管理模块可直接访问的本地,从而构建得到由预加载的TCC脚本文件组成的预加载TCC脚本文件库。
通过从预加载TCC脚本文件,从预加载TCC脚本文件库查找与脚本标识对应的目标TCC脚本文件,无需对脚本文件进行实时加载,从目标TCC脚本文件的获取过程中提高了数据处理效率。通过构建TCC脚本文件库,可以快速定位目标脚本标识对应目标TCC脚本文件的查找位置。具体来说,当目标程序进程结束之后,可以清空预加载TCC脚本文件库,释放预加载的TCC脚本文件,便于在下一次目标程序进程启动时,从后台管理模块中重新加载最新的TCC脚本文件,对于需要频繁修改更新的脚本,只需要修改更新对应的TCC脚本文件,执行调用即可。
在一个实施例中,如图4所示,在响应目标程序启动指令,启动对目标程序对应的TCC脚本运行环境的初始化进程之前,还包括步骤410至步骤430。
步骤410,封装目标程序对应的TCC接口。
步骤420,生成包括封装后的TCC接口的脚本框架库;
步骤430,基于脚本框架库,构建TCC脚本运行环境。
目标程序对应的TCC接口与目标程序的数据库关联,通过TCC接口,可以访问目标程序的数据库。通过接口封装,实现对数据库的访问管理。基于封装的TCC接口、TCC脚本语言的逻辑和目标程序固定的逻辑,生成脚本框架库。脚本框架库是指用于规范TCC脚本的执行流程的框架,还可以用于检测TCC脚本的逻辑错误,通过脚本框架库,构建TCC脚本运行环境,确保TCC脚本的稳定执行。
在一个实施例中,如图5所示,在初始化的TCC脚本运行环境中,预加载TCC脚本文件之前,还包括步骤510至步骤540。
步骤510,获取与场景标识关联的主逻辑和参数类型。
步骤520,根据主逻辑和参数类型,生成初始TCC脚本文件。
步骤530,根据脚本框架库对应的脚本执行逻辑,对初始TCC脚本文件进行逻辑检测。
步骤540,根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件。
在不同的场景中,具有不同的执行逻辑,主逻辑是指固定的处理逻辑,参数是会发生变化的参数,不同的场景对应不同的主逻辑,其参数也可能具有不同的类型。
在实施例中,根据TCC脚本要使用的场景,定义脚本标识、脚本文件名称、并定义TCC脚本要使用的参数类型和脚本主逻辑。在其中一个实施例中,可以TCC脚本所需数据的数据类别,配置携带有数据类别定义的表格文件,在需要生成脚本文件时,只需要在文件表格中写入对应类别的数据,简化脚本文件的编写。
然后根据TCC脚本生成器,读取表格文件,根据表格文件定义的脚本参数类型和主逻辑,自动生成符合TCC脚本语言描述方式的初始TCC脚本文件。
在初始TCC脚本文件生成之后,由于初始TCC脚本文件是基于配置的表格文件内容自动生成的,为确保初始TCC脚本文件的逻辑正确性,通过TCC脚本检查器,对符合TCC脚本语言描述方式的初始TCC脚本文件进行逻辑检测,以识别出初始脚本文件是否存在逻辑错误,若无逻辑错误,则该初始TCC脚本文件可以被加载调用。若存在逻辑错误,则需要通过对配置的表格文件中定义的数据进行修改,直至无逻辑错误。
通过配置的表格文件,利用TCC脚本生成器,可以自动生成脚本文件,降低错误率,提高脚本文件编写效率,通过对生成的脚本文件进行逻辑检测,避免因配置的表格文件中的内容填写错误导致的逻辑错误问题,快速准确地实现了与场景对应的待进行预加载处理的TCC脚本文件的生成。
在一个实施例中,如图6所示,在根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件之后,还包括步骤610。
步骤610,根据待进行预加载处理的TCC脚本文件,构建待加载脚本文件集合。
在初始化的TCC脚本运行环境中,预加载TCC脚本文件,得到预加载的TCC脚本文件库之前,还包括步骤620至步骤630。
步骤620,响应脚本更新操作,生成与脚本更新操作对应的更新TCC脚本文件。
步骤630,根据更新TCC脚本文件,更新待加载脚本文件集合。
在初始化的TCC脚本运行环境中,预加载TCC脚本文件包括步骤640。
步骤640,在初始化的TCC脚本运行环境中,预加载待加载脚本文件集合中的TCC脚本文件。
脚本更新操作是指程序员根据场景需要,在后台对场景对应的脚本文件进行修改的操作。具体来说,脚本更新操作可以是对配置的表格文件中的主逻辑或是参数类型等内容的修改,通过对配置的表格文件进行更新,生成新的TCC脚本文件,在逻辑检测无误之后,得到更新TCC脚本文件。
具体来说,脚本更新操作包括脚本修改操作、脚本增加操作、脚本删减操作,对于脚本修改操作的情况,将更新的TCC脚本文件添加至待加载脚本文件集合中,并舍弃待加载脚本文件集合中脚本标识相同的TCC脚本文件。对于脚本增加操作的情况,将更新的TCC脚本文件添加至待加载脚本文件集合中。对于脚本删减操作的情况,舍弃待加载脚本文件集合中脚本标识对应的TCC脚本文件。
TCC脚本文件内容实质上就是C语言的代码,通常这部分内容都是经常改变,所以写在脚本文件里使用TCC来动态加载调用,这样就算是频繁修改也不需要重复编译。TCC有编译速度快的优点,实时编译加载执行比使用LUA要快很多。本方案通过预编译加载脚本文件,更可以达到可执行文件的速度,极大的改善了服务器性能。
在一个实施例中,方法还包括:当查找结果为不存在与脚本标识对应的目标TCC脚本文件时,获取与场景标识对应的预设结果,得到数据处理请求对应的数据处理结果。
在脚本文件生成过程中,脚本文件的配置表格文件中,是根据场景来设置对应的脚本标识,定义主函数和参数类型等数据的,但在脚本文件的逻辑检测过程中,有可能存在逻辑错误的脚本文件,导致预加载脚本文件库中可能不存在与脚本标识对应的目标TCC脚本文件。
在目标程序的主逻辑中,为了避免出现因脚本调用失败的情况出现无限循环或进程中断的情况出现,对于每一个场景都配置有默认的预设结果,与确保在脚本调用失败时的目标程序正常运行。
在一个实施例中,数据处理请求包括游戏场景中的游戏数据计算请求,数据处理结果包括游戏数据值。
在得到数据处理请求对应的数据处理结果之后,还包括:将游戏数据值反馈至游戏数据计算请求的发送端,以使发送端在游戏场景中展示游戏数据值。
目标程序可以是游戏程序,对于游戏程序进程执行中的游戏场景,数据处理请求可以是游戏数据计算请求,对应的脚本执行逻辑是与该游戏场景相关的参数计算,例如,在“技能伤害”这一游戏场景中,当技能命中时,生成游戏数据计算请求,通过使用TCC调用与该游戏场景对应的脚本文件,执行脚本文件计算技能伤害值,然后将计算得到的技能伤害值同步显示到游戏画面中,通过高效的计算处理,快速得到技能伤害的计算结果,通过计算结果的同步显示,提供了快速响应的游戏交互体验。
本申请还提供一种应用场景,该应用场景应用上述的程序中的数据请求处理方法。具体地,该程序中的数据请求处理方法在该应用场景的应用如下:
在基于TCC的脚本***中,脚本***包括TCC脚本生成器TccScriptBuild(TSB)、TCC脚本检查器TccScriptCheck(TSC)等工具程序,以及后台脚本框架库lib_tcc。
在一个实施例中,提供了TCC脚本生成器以及TCC脚本检查器对应的GUI(Graphical User Interface,图形用户接口)图。参见图7(a),在TCC脚本生成器的GUI图中,包括配置文件选择窗口、脚本列表窗口、执行记录窗口以及清空记录与生成脚本的控制按钮。配置文件选择窗口用于显示选择的配置的表格文件的文件路径,脚本列表窗口中显示配置的表格文件中的各个配置的脚本文件名称,并在各脚本文件名称对应位置设置有文件选择按钮,以通过控制该选择按钮的选定状态或非选定状态,确定是否需要选择该脚本文件来生成对应的脚本文件。在根据脚本文件名称选定要生成的脚本文件后,响应用户触发“生成脚本”控制按钮的操作,从配置文件中读取对应的配置数据,并在执行记录窗口中记录脚本文件的生成过程,具体包括,脚本文件生成的执行开始时间,脚本文件生成结果(成功或失败)执行结束时间等。在脚本文件生成结束之后,还可以响应用户触发“清空记录”控制按钮的操作,清空执行记录窗口中的脚本文件生成记录数据。参见图7(b),在TCC脚本检查器的GUI图中,包括脚本文件选择窗口、脚本列表显示窗口、执行记录窗口以及清空记录与重新检查的控制按钮。具体来说,在脚本文件选择窗口选择待检查的脚本文件,显示选择的脚本文件目录,在脚本列表显示窗口中,显示选择的脚本文件目录中的各脚本文件名称,响应用户的触发“重新检查”控制按钮的操作,按脚本文件选择窗口的脚本文件目录中的各个脚本文件进行逻辑检查,并在执行记录窗口显示脚本文件的检查结果。在脚本文件检查结束之后,还可以响应用户触发“清空记录”控制按钮的操作,清空执行记录窗口中的脚本文件逻辑检查记录数据。
在实施例中,以游戏程序为例,首先根据区分游戏进程中的固定逻辑和非固定逻辑,把固定逻辑放在游戏的主程序中,将非固定逻辑放在TCC脚本中,然后将各非固定逻辑按游戏景进行划分,将每一游戏场景的主逻辑和参数类型,定义至配置的表格文件中,然后根据配置的表格文件,使用脚本生成器生成TCC脚本文件,再使用TCC脚本检查器检查生成的脚本文件是否有错误,得到可以在游戏进程中被调用执行的TCC脚本文件。
以“技能伤害”为例,说明程序中的数据请求处理方法的应用过程。
首先,通过封装TCC接口,生成lib_tcc脚本框架库,构建TCC脚本运行环境。如图7(c)所示,游戏进程启动时,响应游戏玩家的游戏进程启动操作,对TCC脚本运行环境进行初始化处理,并预加载TCC脚本文件,执行游戏主循环。
当技能命中时,根据应用场景配置的脚本标识,从预加载TCC脚本文件中查找到对应的脚本文件,若存在对应的脚本文件,则执行脚本函数,计算得到相应的处理结果。若是不存在对应的脚本文件,则获取该场景的预设技能默认伤害值,直接得到结果,最后,将计算得到的结果或是直接获取的结果同步显示到游戏界面,显示技能命中的伤害值。
上述基于TCC的脚本***,实现了一套包括TCC脚本生成器TccScriptBuild(TSB)、TCC脚本检查器TccScriptCheck(TSC)等工具程序,以及后台脚本框架库lib_tcc。此框架对脚本生成、环境初始化、调用执行进行抽象,对性能进行优化,对脚本生成流程进行自动化管理,实现了可用于游戏后台生产环境的高性能的脚本***。此外,由于,TCC脚本文件内容都是经常改变,所以写在脚本文件里使用TCC来动态加载调用,这样就算是频繁修改也不需要重复编译。TCC有编译速度快的优点,实时编译加载执行比使用LUA要快很多。本方案通过预编译加载脚本文件,更可以达到可执行文件的速度,极大的改善了服务器性能。通过上述处理,使得脚本执行性能大幅提高,游戏大规模调用脚本的应用场景不再是后台性能的瓶颈。
在一个实施例中,提供了一种程序中的数据请求处理方法,具体执行过程如图8所示,包括步骤802至步骤838。
步骤802,封装目标程序对应的TCC接口。
步骤804,生成包括封装后的TCC接口的脚本框架库。
步骤806,基于脚本框架库,构建TCC脚本运行环境。
步骤808,响应目标程序启动指令,启动对目标程序对应的TCC脚本运行环境的初始化进程。
步骤810,获取与场景标识关联的主逻辑和参数类型。
步骤812,根据主逻辑和参数类型,生成初始TCC脚本文件。
步骤814,根据脚本框架库对应的脚本执行逻辑,对初始TCC脚本文件进行逻辑检测。
步骤816,根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件。
步骤818,根据待进行预加载处理的TCC脚本文件,构建待加载脚本文件集合。
步骤820,响应脚本更新操作,生成与脚本更新操作对应的更新TCC脚本文件。
步骤822,根据更新TCC脚本文件,更新待加载脚本文件集合。
步骤824,在初始化的TCC脚本运行环境中,预加载待加载脚本文件集合中的TCC脚本文件。
步骤826,根据预加载的TCC脚本文件,构建预加载TCC脚本文件库。
步骤828,响应目标程序执行过程中的数据处理请求,提取数据处理请求中携带的场景标识。
步骤830,根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识。
步骤832,从预加载TCC脚本文件库中查找与目标脚本标识对应的目标TCC脚本文件。
步骤834,调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
步骤836,当查找结果为不存在与脚本标识对应的目标TCC脚本文件时,获取与场景标识对应的预设结果,得到数据处理请求对应的数据处理结果。
步骤838,将数据处理结果反馈至数据处理请求的发送端,以使发送端在对应场景中展示数据处理结果。
应该理解的是,虽然图2-6、图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6、图8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种程序中的数据请求处理装置900,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:场景标识提取模块910、脚本标识获取模块920、脚本文件查找模块930和脚本执行模块940,其中:
场景标识提取模块910,用于响应数据处理请求,提取数据处理请求中携带的场景标识。
脚本标识获取模块920,用于根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识。
脚本文件查找模块930,用于查找与目标脚本标识对应的目标TCC脚本文件。
脚本执行模块940,用于调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
在一个实施例中,程序中的数据请求处理装置还包括脚本文件库构建模块。脚本文件库构建模块用于响应目标程序启动指令,启动对目标程序对应的TCC脚本运行环境的初始化进程;在初始化的TCC脚本运行环境中,预加载TCC脚本文件;根据预加载的TCC脚本文件,构建预加载TCC脚本文件库。脚本文件查找模块还用于从预加载TCC脚本文件库中查找与目标脚本标识对应的目标TCC脚本文件
在一个实施例中,程序中的数据请求处理装置还包括脚本运行环境构建模块。脚本运行环境构建模块用于封装目标程序对应的TCC接口;生成包括封装后的TCC接口的脚本框架库;基于脚本框架库,构建TCC脚本运行环境。
在一个实施例中,程序中的数据请求处理装置还包括TCC脚本文件生成模块。TCC脚本文件生成模块用于获取与场景标识关联的主逻辑和参数类型;根据主逻辑和参数类型,生成初始TCC脚本文件;根据脚本框架库对应的脚本执行逻辑,对初始TCC脚本文件进行逻辑检测;根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件。
在一个实施例中,程序中的数据请求处理装置还包括TCC脚本文件更新模块。TCC脚本文件更新模块用于根据待进行预加载处理的TCC脚本文件,构建待加载脚本文件集合;响应脚本更新操作,生成与脚本更新操作对应的更新TCC脚本文件;根据更新TCC脚本文件,更新待加载脚本文件集合;脚本文件库构建模块还用于在初始化的TCC脚本运行环境中,预加载待加载脚本文件集合中的TCC脚本文件。
在一个实施例中,程序中的数据请求处理装置还包括预设结果获取模块。预设结果获取模块用于当查找结果为不存在与脚本标识对应的目标TCC脚本文件时,获取与场景标识对应的预设结果,得到数据处理请求对应的数据处理结果。
在一个实施例中,数据处理请求包括游戏场景中的游戏数据计算请求,数据处理结果包括游戏数据值;程序中的数据请求处理装置还包括结果展示模块。结果展示模块用于将游戏数据值反馈至游戏数据计算请求的发送端,以使发送端在游戏场景中展示游戏数据值。
上述程序中的数据请求处理装置,通过提取数据处理请求中携带的场景标识,确定对应的脚本标识,一方面,获取的脚本文件为TCC脚本文件,适用于TCC编译环境,另一方面,利用TCC编译器的不编译直接运行的特性,执行调用目标TCC脚本文件中的函数,利用TCC脚本文件与TCC编译器的配合,实现了脚本函数的高效执行,从而快速得到数据处理请求对应的数据处理结果,提高了执行效率。
关于程序中的数据请求处理装置的具体限定可以参见上文中对于程序中的数据请求处理方法的限定,在此不再赘述。上述程序中的数据请求处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储程序中的数据请求处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种程序中的数据请求处理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行以下步骤:
响应数据处理请求,提取数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
查找与目标脚本标识对应的目标TCC脚本文件;
调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应数据处理请求,提取数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与场景标识关联的目标脚本标识;
查找与目标脚本标识对应的目标TCC脚本文件;
调用目标TCC脚本文件,通过TCC编译器执行目标TCC脚本文件中的函数,得到数据处理请求对应的数据处理结果。
一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时还可以实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种程序中的数据请求处理方法,所述方法包括:
响应数据处理请求,提取所述数据处理请求中携带的场景标识;
根据预设的场景标识与脚本标识的关联关系,确定与所述场景标识关联的目标脚本标识;
查找与所述目标脚本标识对应的目标TCC脚本文件;
调用所述目标TCC脚本文件,通过TCC编译器执行所述目标TCC脚本文件中的函数,得到所述数据处理请求对应的数据处理结果。
2.根据权利要求1所述的方法,其特征在于,所述数据处理请求为目标程序执行过程中的数据处理请求;
在所述响应数据处理请求之前,还包括:
响应目标程序启动指令,启动对所述目标程序对应的TCC脚本运行环境的初始化进程;
在初始化的TCC脚本运行环境中,预加载TCC脚本文件;
根据预加载的TCC脚本文件,构建预加载TCC脚本文件库;
所述查找与所述目标脚本标识对应的目标TCC脚本文件包括:
从预加载TCC脚本文件库中查找与所述目标脚本标识对应的目标TCC脚本文件。
3.根据权利要求2所述的方法,其特征在于,在所述响应目标程序启动指令,启动对所述目标程序对应的TCC脚本运行环境的初始化进程之前,还包括:
封装所述目标程序对应的TCC接口;
生成包括封装后的TCC接口的脚本框架库;
基于所述脚本框架库,构建所述TCC脚本运行环境。
4.根据权利要求3所述的方法,其特征在于,在所述在初始化的TCC脚本运行环境中,预加载TCC脚本文件之前,还包括:
获取与场景标识关联的主逻辑和参数类型;
根据所述主逻辑和所述参数类型,生成初始TCC脚本文件;
根据所述脚本框架库对应的脚本执行逻辑,对所述初始TCC脚本文件进行逻辑检测;
根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件。
5.根据权利要求4所述的方法,其特征在于,在根据检测结果为无逻辑错误的初始TCC脚本文件,确定待进行预加载处理的TCC脚本文件之后,还包括:
根据所述待进行预加载处理的TCC脚本文件,构建待加载脚本文件集合;
在所述在初始化的TCC脚本运行环境中,预加载TCC脚本文件之前,还包括:
响应脚本更新操作,生成与所述脚本更新操作对应的更新TCC脚本文件;
根据所述更新TCC脚本文件,更新所述待加载脚本文件集合;
所述在初始化的TCC脚本运行环境中,预加载TCC脚本文件包括:
在初始化的TCC脚本运行环境中,预加载所述待加载脚本文件集合中的TCC脚本文件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当查找结果为不存在与所述脚本标识对应的目标TCC脚本文件时,获取与所述场景标识对应的预设结果,得到所述数据处理请求对应的数据处理结果。
7.根据权利要求1-6中的任一项所述的方法,其特征在于,所述数据处理请求包括游戏场景中的游戏数据计算请求;
所述数据处理结果包括游戏数据值;
在所述得到所述数据处理请求对应的数据处理结果之后,还包括:
将所述游戏数据值反馈至所述游戏数据计算请求的发送端,以使所述发送端在所述游戏场景中展示所述游戏数据值。
8.一种程序中的数据请求处理装置,其特征在于,所述装置包括:
场景标识提取模块,用于响应数据处理请求,提取所述数据处理请求中携带的场景标识;
脚本标识获取模块,用于根据预设的场景标识与脚本标识的关联关系,确定与所述场景标识关联的目标脚本标识;
脚本文件查找模块,用于查找与所述目标脚本标识对应的目标TCC脚本文件;
脚本执行模块,用于调用所述目标TCC脚本文件,通过TCC编译器执行所述目标TCC脚本文件中的函数,得到所述数据处理请求对应的数据处理结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161406.3A CN111381830A (zh) | 2020-03-10 | 2020-03-10 | 程序中的数据请求处理方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161406.3A CN111381830A (zh) | 2020-03-10 | 2020-03-10 | 程序中的数据请求处理方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111381830A true CN111381830A (zh) | 2020-07-07 |
Family
ID=71215315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010161406.3A Pending CN111381830A (zh) | 2020-03-10 | 2020-03-10 | 程序中的数据请求处理方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381830A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641421A (zh) * | 2021-08-18 | 2021-11-12 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN114115016A (zh) * | 2021-11-22 | 2022-03-01 | 北京光启元数字科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN115756483A (zh) * | 2022-11-16 | 2023-03-07 | 中电金信软件有限公司 | 编译方法、装置、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130339841A1 (en) * | 2012-06-14 | 2013-12-19 | Open Text S.A. | Systems and methods of a script generation engine |
CN103500102A (zh) * | 2013-10-16 | 2014-01-08 | 迈普通信技术股份有限公司 | 一种服务调用方法和提供服务调用的装置 |
CN103870260A (zh) * | 2012-12-14 | 2014-06-18 | 腾讯科技(深圳)有限公司 | 业务接口开发的方法及*** |
CN104423948A (zh) * | 2013-09-02 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 自动化脚本运行方法及装置 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN108667919A (zh) * | 2018-04-25 | 2018-10-16 | 金蝶软件(中国)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109766124A (zh) * | 2018-12-26 | 2019-05-17 | 深圳左邻永佳科技有限公司 | 业务开发方法、装置、计算机设备和存储介质 |
CN110347399A (zh) * | 2019-05-31 | 2019-10-18 | 深圳绿米联创科技有限公司 | 数据处理方法、实时计算***以及信息*** |
-
2020
- 2020-03-10 CN CN202010161406.3A patent/CN111381830A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130339841A1 (en) * | 2012-06-14 | 2013-12-19 | Open Text S.A. | Systems and methods of a script generation engine |
CN103870260A (zh) * | 2012-12-14 | 2014-06-18 | 腾讯科技(深圳)有限公司 | 业务接口开发的方法及*** |
CN104423948A (zh) * | 2013-09-02 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 自动化脚本运行方法及装置 |
CN103500102A (zh) * | 2013-10-16 | 2014-01-08 | 迈普通信技术股份有限公司 | 一种服务调用方法和提供服务调用的装置 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN108667919A (zh) * | 2018-04-25 | 2018-10-16 | 金蝶软件(中国)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN109766124A (zh) * | 2018-12-26 | 2019-05-17 | 深圳左邻永佳科技有限公司 | 业务开发方法、装置、计算机设备和存储介质 |
CN110347399A (zh) * | 2019-05-31 | 2019-10-18 | 深圳绿米联创科技有限公司 | 数据处理方法、实时计算***以及信息*** |
Non-Patent Citations (7)
Title |
---|
AVDBG: "avdbg/libtcc_example", 《HTTPS://GITHUB.COM/AVDBG/LIBTCC_EXAMPLE》 * |
JOSTUDIO: "TCC研究(2)把C语言当左脚本,解释执行,并嵌入各类程序", 《HTTPS://BLOG.CSDN.NET/C80486/ARTICLE/DETAILS/43370603》 * |
LANGELDEP: "TCC(Tiny C Compiler)用C语言当脚本例子", 《HTTPS://BLOG.CSDN.NET/LANGELDEP/ARTICLE/DET AILS/9255901》 * |
MATLAB2000: "基于Tiny C compliler的c脚本混合编程方法", 《HTTPS://BLOG.CSDN.NET/MATLAB2000/ARTICLE/DETAILS/1370366》 * |
QUASICEO: "TCC(Tiny C Compiler)用C语言当脚本例子", 《HTTP://WWW.360DOC.COM/CONTENT/14/0115/16/9200790_345485652.SHTML》 * |
吕林霞: "《数据库原理及应用》", 30 September 2011, 西安电子科技大学出版社 * |
郑瀚ANDREW.HANN: "Tiny C Compiler(Tcc)", 《HTTPS://WWW.CNBLOGS.COM/LITTLEHANN/P/4431974.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641421A (zh) * | 2021-08-18 | 2021-11-12 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN114115016A (zh) * | 2021-11-22 | 2022-03-01 | 北京光启元数字科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN115756483A (zh) * | 2022-11-16 | 2023-03-07 | 中电金信软件有限公司 | 编译方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3377968B1 (en) | Dynamic update of an application in compilation and deployment | |
CN111881401B (zh) | 基于WebAssembly的浏览器深度学习方法及*** | |
CN111381830A (zh) | 程序中的数据请求处理方法、装置和计算机设备 | |
US8561045B2 (en) | Constructing runtime state for inlined code | |
CN110866198B (zh) | 静态资源缓存方法、***、装置、计算机设备和存储介质 | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN109766124A (zh) | 业务开发方法、装置、计算机设备和存储介质 | |
WO2015143865A1 (zh) | 应用场景的识别方法、功耗管理方法、装置及终端设备 | |
US20230117105A1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
CN112090079B (zh) | 游戏任务运行方法、装置、计算机设备和存储介质 | |
CN102667730A (zh) | 设计时调试 | |
CN111389014A (zh) | 游戏资源数据监控方法、装置、计算机设备和存储介质 | |
CN106293870A (zh) | 计算机***及其策略导向压缩方法 | |
CN107526623B (zh) | 一种数据处理方法及装置 | |
CN113296786A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US8407678B2 (en) | Method of array interception using data-flow analysis | |
CN113608742A (zh) | 检测方法、代码包处理方法、运行控制方法及计算设备 | |
US20200356384A1 (en) | Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics | |
US9703578B2 (en) | Providing class loading for JAVA™ applications | |
CN115080114B (zh) | 应用程序的移植处理方法、装置和介质 | |
CN114610516B (zh) | 应用程序的修复方法、装置、计算机设备以及存储介质 | |
US20220413815A1 (en) | Reload ordering for executable code modules | |
CN113656044B (zh) | 安卓安装包压缩方法、装置、计算机设备及存储介质 | |
US11281477B2 (en) | Assigning computing resources to execution of evaluators for image animation | |
CN114489698A (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 |