CN110515605B - 属性信息的同步方法及装置、存储介质和处理器 - Google Patents
属性信息的同步方法及装置、存储介质和处理器 Download PDFInfo
- Publication number
- CN110515605B CN110515605B CN201910768944.6A CN201910768944A CN110515605B CN 110515605 B CN110515605 B CN 110515605B CN 201910768944 A CN201910768944 A CN 201910768944A CN 110515605 B CN110515605 B CN 110515605B
- Authority
- CN
- China
- Prior art keywords
- attribute
- data
- synchronization
- monitor
- variable
- 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
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/6009—Methods for processing data by generating or executing the game program for importing or creating game content, e.g. authoring tools during game development, adapting content to different platforms, use of a scripting language to create content
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种属性信息的同步方法及装置、存储介质和处理器。该方法包括:将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言;针对可变数据类型中的每个可变数据类型添加属性监听器;基于属性监听器监听可变数据类型的数据信息变化过程;以及调用回调函数对监听到的数据信息变化过程进行属性同步。通过本申请,解决了相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题。
Description
技术领域
本申请涉及信息同步技术领域,具体而言,涉及一种属性信息的同步方法及装置、存储介质和处理器。
背景技术
游戏开发中需要将服务器中玩家属性数据同步给客户端,用于客户端显示玩家当前状态和信息,这些属性根据游戏类型而不同,包含但不限于玩家的造型、位置、朝向、等级、经验、名字、金钱等,不同类型游戏中属性修改的频率不同,对于即时战略游戏,属性修改频繁且对属性同步实时性要求也较高,对于卡牌或者回合制游戏,属性一回合修改一次,频率较低,且实时性要求不高。属性同步的目标类型也各不相同,有些属性只需要同步给当前客户端(例如玩家所拥有的金钱),有些属性需要同步给其他客户端(例如玩家的造型、位置等)。
目前常用的属性同步方案有两种:第一种,实时同步。每次修改属性时,主动调用同步数据接口通知客户端属性变化。例如,修改玩家等级为10级,则需要执行下面两条指令:
user.level=10 //修改等级
sync_attr_to_client(user,“level”,10) //同步属性变化给客户端
第二种,定时同步。每次修改属性时先不同步数据到客户端,而是对当前属性设置一个脏标记,记为脏数据,然后定期扫描玩家数据,将有标记的脏数据合并同步给客户端。
上述两种方案虽然可以满足属性同步需求,但都存在一定缺陷:
实时同步方案,每次数据发生改变都需要手动调用同步接口,现实游戏中属性很多,修改属性的地方也很多,如果每次属性修改都要主动同步一次数据,会很麻烦,一不小心就容易漏掉,给开发者带来一定复杂度且维护性和可扩展性较差。
定时同步牺牲了实时性,采用定时轮训查询脏数据并合批同步给客户端,降低了同步数据的频率,但修改数据时还是需要手动设置脏标记,本质上和第一种方案区别不大,且定时的轮训查询脏数据也会带来一定额外CPU开销,当在线玩家数量巨大时,这个开销还是不容忽略的。
针对相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种属性信息的同步方法及装置、存储介质和处理器,以解决相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题。
为了实现上述目的,根据本申请的一个方面,提供了一种属性信息的同步方法。该方法包括:将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;针对所述可变数据类型中的每个可变数据类型添加属性监听器;基于所述属性监听器监听所述可变数据类型的数据信息变化过程;以及调用回调函数对监听到的所述数据信息变化过程进行属性同步。
进一步地,在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:若所述可变数据类型中存在内嵌数据,则对所述内嵌数据添加属性子监听器。
进一步地,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若所述可变数据类型中存在内嵌数据,则基于所述回调函数对所述属性子监听器进行数据回调;若所述可变数据类型中不存在内嵌数据,则调用所述回调函数进行属性同步。
进一步地,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若监听到同一帧数据中存在多个被修改过的属性数据,则将所述多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
进一步地,基于所述属性监听器监听所述可变数据类型的数据信息变化过程包括:若监听到所述属性信息中的名称发生变化,则调用所述属性监听器中的第一函数,从所述属性信息中的获取原生数据,如果获取到的所述原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的所述原生数据是可变类型的数据,对所述原生数据添加一个属性监听器。
进一步地,在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:基于所述属性监听器中的第二函数对所述属性信息中的名称进行设置;调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:对设置后的属性信息中的名称采用所述回调函数进行属性同步。
进一步地,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:基于所述回调函数获取内存空间中目标属性的值;根据所述目标属性的属性类型确定需要同步的客户端;将监听到的数据信息变化过程通过远程过程调用协议发送至所述需要同步的客户端。
为了实现上述目的,根据本申请的另一方面,提供了一种属性信息的同步装置。该装置包括:划分单元,用于将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;第一添加单元,用于针对所述可变数据类型中的每个可变数据类型添加属性监听器;监听单元,用于根据所述属性监听器监听所述可变数据类型的数据信息变化过程;以及调用单元,用于调用回调函数对监听到的所述数据信息变化过程进行属性同步。
进一步地,所述装置还包括:第二添加单元,用于在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,在所述可变数据类型中存在内嵌数据的情况下,则对所述内嵌数据添加属性子监听器。
进一步地,所述调用单元包括:第一回调模块,用于在所述可变数据类型中存在内嵌数据的情况下,则基于所述回调函数对所述属性子监听器进行数据回调;第二回调模块,用于在所述可变数据类型中不存在内嵌数据的情况下,则调用所述回调函数进行属性同步。
为了实现上述目的,根据本申请的另一方面,提供了一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的属性信息的同步方法。
为了实现上述目的,根据本申请的另一方面,提供了一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的属性信息的同步方法。
通过本申请,采用以下步骤:将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言;针对可变数据类型中的每个可变数据类型添加属性监听器;基于属性监听器监听可变数据类型的数据信息变化过程;以及调用回调函数对监听到的数据信息变化过程进行属性同步,解决了相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题,通过对可变数据类型添加属性监听器,监听可变数据类型的数据信息变化过程,然后调用回调函数对监听到的数据信息变化过程进行属性同步,并不需要首先显示调用同步接口,然后再进行属性同步的操作,从而避免了需要显示调用同步接口带来的维护性和扩展性较差的问题,通过本申请实现了在进行属性修改的情况下,高效灵活的进行属性同步。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的属性信息的同步方法的流程图;以及
图2是根据本申请实施例提供的属性信息的同步装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
python:一种解释型、面向对象、动态数据类型的高级程序设计语言。
mutable数据:可变数据类型,包括list、dict、set等。
immutable数据:不可变数据类型,包括int、string、tuple等。
脏数据:内存中进行修改,但还没有更新到数据库中的数据。
RPC:Remote Procedure Call,远程过程调用。
根据本申请的实施例,提供了一种属性信息的同步方法。
图1是根据本申请实施例的属性信息的同步方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言。
本申请实施例提供的属性信息的同步方法可以应用于服务器中玩家属性绑定方案,上述的预设编程语言可以为python,也即该方案基于python描述符实现,python描述符是一个绑定行为的对象属性,在描述符协议中,可以通过重写属性的访问方法实现对需要同步的属性的监控,这些方法包括__get__,__set__,__getitem__,__setitem__,__delitem__,__getattr__等。
本申请实施例提供的属性信息的同步方法中,首先把python数据类型分为可变数据类型和不可变数据类型两类。
步骤S102,针对可变数据类型中的每个可变数据类型添加属性监听器。
例如,定义一个Monitor属性监控类(对应上述的属性监听器),并将list,dict,set中会改变数据的方法列出。
步骤S103,基于属性监听器监听可变数据类型的数据信息变化过程。
例如,可变数据类型为dict,具体为手机通讯录,若手机通讯录中A的手机号码发生了修改,则属性监听器可以监听到该变化。
步骤S104,调用回调函数对监听到的数据信息变化过程进行属性同步。
例如,监听到手机通讯录中A的手机号码发生了修改,则调用回调函数可以对A修改后的手机号码同步至需要同步的客户端或服务器。
本申请实施例提供的属性信息的同步方法,通过将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言;针对可变数据类型中的每个可变数据类型添加属性监听器;基于属性监听器监听可变数据类型的数据信息变化过程;以及调用回调函数对监听到的数据信息变化过程进行属性同步,解决了相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题,通过对可变数据类型添加属性监听器,监听可变数据类型的数据信息变化过程,然后调用回调函数对监听到的数据信息变化过程进行属性同步,并不需要首先显示调用同步接口,然后再进行属性同步的操作,从而避免了需要显示调用同步接口带来的维护性和扩展性较差的问题,通过本申请实现了在进行属性修改的情况下,灵活的进行属性同步。
可选地,在本申请实施例提供的属性信息的同步方法中,在针对可变数据类型中的每个可变数据类型添加属性监听器之后,该方法还包括:若可变数据类型中存在内嵌数据,则对内嵌数据添加属性子监听器。
需要说明的是,当Monitor拥有者owner通过owner.attr_name[key]方式获取dict内容时,会调用Monitor类的__getitem__函数,先获取原生数据,如果是不可变数据则直接返回,否则生成新的Monitor对象返回,并设置父子关系,设置父子关系目的是子Monitor属性改变时能一层层通过父Monitor通知到owner。
当Monitor对象拥有者owner通过owner.attr_name[key]=xxx或者通过delowner.attr_name[key]方式修改和删除数据时,会分别调用Monitor的__setitem__和__delitem__函数,修改后会调用属性修改的回调函数进行属性同步。
对于可变数据类型(list,dict,set)的Monitor对象,Monitor类重载了__getattr__方法,会修改数据内容的函数调用,在调用后都会通知回调函数进行属性同步。
可选地,在本申请实施例提供的属性信息的同步方法中,调用回调函数对监听到的数据信息变化过程进行属性同步包括:若可变数据类型中存在内嵌数据,则基于回调函数对属性子监听器进行数据回调;若可变数据类型中不存在内嵌数据,则调用回调函数进行属性同步。
需要说明的是,对于init函数里会对属性做一些初始化,包括实际值、Monitor属性对象在拥有者owner上的属性名、值发生修改时的回调函数,如果是内嵌数据(list,dict的值)则记录父Monitor对象、Monitor属性对象的拥有者。
可选地,在本申请实施例提供的属性信息的同步方法中,调用回调函数对监听到的数据信息变化过程进行属性同步包括:若监听到同一帧数据中存在多个被修改过的属性数据,则将多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
例如,同时对100个属性做了修改,如果每个修改都发一条类似{"attr1":val1}的同步指令,不仅增加了RPC调用次数,也增加了下行协议的频率和客户端负载,在上述方案中,采取了延时合批同步方案,将同一帧里的多个属性修改,合批成一条{"attr1":val1,"attr2":val2..."attr100":val100}的同步指令发送给需要同步的客户端,只需要一条RPC即可完成多条脏数据的同步,大幅降低了开销。
可选地,在本申请实施例提供的属性信息的同步方法中,基于属性监听器监听可变数据类型的数据信息变化过程包括:若监听到属性信息中的名称发生变化,则调用属性监听器中的第一函数,从属性信息中的获取原生数据,如果获取到的原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的原生数据是可变类型的数据,对原生数据添加一个属性监听器。
例如,当Monitor对象拥有者owner通过owner.attr_name方式获取属性时,会调用Monitor类的get函数(对应上述的第一函数),先从owner.__dict__里获取原生数据,如果是不可变数据,则直接返回,否则创建一个Monitor属性监控对象返回。
可选地,在本申请实施例提供的属性信息的同步方法中,在针对可变数据类型中的每个可变数据类型添加属性监听器之后,该方法还包括:基于属性监听器中的第二函数对属性信息中的名称进行设置;调用回调函数对监听到的数据信息变化过程进行属性同步包括:对设置后的属性信息中的名称采用回调函数进行属性同步。
例如,上述的第二函数为set函数,当Monitor拥有者owner通过owner.attr_name=xxx方式设置属性时,会调用Monitor类的__set__函数,先设置owner.__dict__,然后调用属性修改的回调函数进行属性同步。
可选地,在本申请实施例提供的属性信息的同步方法中,调用回调函数对监听到的数据信息变化过程进行属性同步包括:基于回调函数获取内存空间中目标属性的值;根据目标属性的属性类型确定需要同步的客户端;将监听到的数据信息变化过程通过远程过程调用协议发送至需要同步的客户端。
例如,回调函数_value_changed_cb的具体实现就是获取self._owner(玩家)内存空间里变量名为self._attr_name属性的值,然后根据属性类型找出需要同步的客户端,再通过rpc协议发送给对应的客户端完成属性同步。
有了这套属性监控类,我们就可以监控属性的修改,并将修改后的脏数据实时同步给客户端。
需要说明的是,对于现有的游戏,如何在保证现有代码改动最小的基础上快速移植接入本申请提供的属性信息的同步的方案呢?只需要在程序运行时给玩家的类(假设类名为PlayerClass)调用PlayerClass.bind_sync_attr()绑定需要同步的属性变量即可,其余获取、使用、修改属性的代码,都不需做任何改动。
也即,通过本申请实施例的属性信息的同步方法带来的以下有益效果:支持真正的实时属性同步,一旦服务器玩家属性数据有修改,对于实时性要求比较高的属性可以立刻同步给客户端,没有延时。同时也支持属性延迟合并同步,对于修改频繁的属性且实时性要求不高,可以延时合批同步,减少同步次数,降低带宽开销。也支持不同属性同步给不同目标玩家,灵活高自由度的解决方案支持可定制的同步目标。该同步方法具有更低的cpu开销,没有cpu定时轮询查询脏数据,可以采用订阅发布者模式,数据有修改时主动发起同步操作。高通用性和良好的可移植性,和游戏逻辑无耦合,可非常便捷的接入python开发的游戏产品。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种属性信息的同步装置,需要说明的是,本申请实施例的属性信息的同步装置可以用于执行本申请实施例所提供的用于属性信息的同步方法。以下对本申请实施例提供的属性信息的同步装置进行介绍。
图2是根据本申请实施例的属性信息的同步装置的示意图。如图2所示,该装置包括:划分单元201,第一添加单元202,监听单元203,调用单元204。
具体地,划分单元201,用于将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言;
第一添加单元202,用于针对可变数据类型中的每个可变数据类型添加属性监听器;
监听单元203,用于根据属性监听器监听可变数据类型的数据信息变化过程;以及
调用单元204,用于调用回调函数对监听到的数据信息变化过程进行属性同步。
本申请实施例提供的属性信息的同步装置,通过划分单元201将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,预设编程语言至少包括:面向对象的解释型脚本语言;第一添加单元202针对可变数据类型中的每个可变数据类型添加属性监听器;监听单元203根据属性监听器监听可变数据类型的数据信息变化过程;以及调用单元204调用回调函数对监听到的数据信息变化过程进行属性同步,解决了相关技术中在进行属性修改时需要显示调用同步接口带来的维护性和扩展性较差问题,通过对可变数据类型添加属性监听器,监听可变数据类型的数据信息变化过程,然后调用回调函数对监听到的数据信息变化过程进行属性同步,并不需要首先显示调用同步接口,然后再进行属性同步的操作,从而避免了需要显示调用同步接口带来的维护性和扩展性较差的问题,通过本申请实现了在进行属性修改的情况下,高效灵活的进行属性同步。
可选地,在本申请实施例提供的属性信息的同步装置中,该装置还包括:第二添加单元,用于在针对可变数据类型中的每个可变数据类型添加属性监听器之后,在可变数据类型中存在内嵌数据的情况下,则对内嵌数据添加属性子监听器。
可选地,在本申请实施例提供的属性信息的同步装置中,调用单元204包括:第一回调模块,用于在可变数据类型中存在内嵌数据的情况下,则基于回调函数对属性子监听器进行数据回调;第二回调模块,用于在可变数据类型中不存在内嵌数据的情况下,则调用回调函数进行属性同步。
可选地,在本申请实施例提供的属性信息的同步装置中,调用单元204包括:同步模块,用于在监听到同一帧数据中存在多个被修改过的属性数据的情况下,则将多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
可选地,在本申请实施例提供的属性信息的同步装置中,监听单元203还用于在监听到属性信息中的名称发生变化的情况下,则调用属性监听器中的第一函数,从属性信息中的获取原生数据,如果获取到的原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的原生数据是可变类型的数据,对原生数据添加一个属性监听器。
可选地,在本申请实施例提供的属性信息的同步装置中,该装置还包括:设置单元,用于在针对可变数据类型中的每个可变数据类型添加属性监听器之后,基于属性监听器中的第二函数对属性信息中的名称进行设置;调用单元还用于对设置后的属性信息中的名称采用回调函数进行属性同步。
可选地,在本申请实施例提供的属性信息的同步装置中,调用单元204包括:获取模块,用于根据回调函数获取内存空间中目标属性的值;确定模块,用于根据目标属性的属性类型确定需要同步的客户端;发送模块,用于将监听到的数据信息变化过程通过远程过程调用协议发送至需要同步的客户端。
所述属性信息的同步装置包括处理器和存储器,上述划分单元201、第一添加单元202、监听单元203和调用单元204等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来同步属性信息的。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述属性信息的同步方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述属性信息的同步方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;针对所述可变数据类型中的每个可变数据类型添加属性监听器;基于所述属性监听器监听所述可变数据类型的数据信息变化过程;以及调用回调函数对监听到的所述数据信息变化过程进行属性同步。
处理器执行程序时还实现以下步骤:在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:若所述可变数据类型中存在内嵌数据,则对所述内嵌数据添加属性子监听器。
处理器执行程序时还实现以下步骤:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若所述可变数据类型中存在内嵌数据,则基于所述回调函数对所述属性子监听器进行数据回调;若所述可变数据类型中不存在内嵌数据,则调用所述回调函数进行属性同步。
处理器执行程序时还实现以下步骤:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若监听到同一帧数据中存在多个被修改过的属性数据,则将所述多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
处理器执行程序时还实现以下步骤:基于所述属性监听器监听所述可变数据类型的数据信息变化过程包括:若监听到所述属性信息中的名称发生变化,则调用所述属性监听器中的第一函数,从所述属性信息中的获取原生数据,如果获取到的所述原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的所述原生数据是可变类型的数据,对所述原生数据添加一个属性监听器。
处理器执行程序时还实现以下步骤:在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:基于所述属性监听器中的第二函数对所述属性信息中的名称进行设置;调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:对设置后的属性信息中的名称采用所述回调函数进行属性同步。
处理器执行程序时还实现以下步骤:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:基于所述回调函数获取内存空间中目标属性的值;根据所述目标属性的属性类型确定需要同步的客户端;将监听到的数据信息变化过程通过远程过程调用协议发送至所述需要同步的客户端。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;针对所述可变数据类型中的每个可变数据类型添加属性监听器;基于所述属性监听器监听所述可变数据类型的数据信息变化过程;以及调用回调函数对监听到的所述数据信息变化过程进行属性同步。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:若所述可变数据类型中存在内嵌数据,则对所述内嵌数据添加属性子监听器。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若所述可变数据类型中存在内嵌数据,则基于所述回调函数对所述属性子监听器进行数据回调;若所述可变数据类型中不存在内嵌数据,则调用所述回调函数进行属性同步。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:若监听到同一帧数据中存在多个被修改过的属性数据,则将所述多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:基于所述属性监听器监听所述可变数据类型的数据信息变化过程包括:若监听到所述属性信息中的名称发生变化,则调用所述属性监听器中的第一函数,从所述属性信息中的获取原生数据,如果获取到的所述原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的所述原生数据是可变类型的数据,对所述原生数据添加一个属性监听器。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:基于所述属性监听器中的第二函数对所述属性信息中的名称进行设置;调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:对设置后的属性信息中的名称采用所述回调函数进行属性同步。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:基于所述回调函数获取内存空间中目标属性的值;根据所述目标属性的属性类型确定需要同步的客户端;将监听到的数据信息变化过程通过远程过程调用协议发送至所述需要同步的客户端。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种属性信息的同步方法,其特征在于,包括:
将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;
针对所述可变数据类型中的每个可变数据类型添加属性监听器;
基于所述属性监听器监听所述可变数据类型的数据信息变化过程;以及
调用回调函数对监听到的所述数据信息变化过程进行属性同步;
其中,基于所述属性监听器监听所述可变数据类型的数据信息变化过程,包括:若监听到所述属性信息中的名称发生变化,则调用所述属性监听器中的第一函数,从所述属性信息中的获取原生数据,且对所述原生数据进行判断。
2.根据权利要求1所述的方法,其特征在于,在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:
若所述可变数据类型中存在内嵌数据,则对所述内嵌数据添加属性子监听器。
3.根据权利要求2所述的方法,其特征在于,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:
若所述可变数据类型中存在内嵌数据,则基于所述回调函数对所述属性子监听器进行数据回调;
若所述可变数据类型中不存在内嵌数据,则调用所述回调函数进行属性同步。
4.根据权利要求1所述的方法,其特征在于,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:
若监听到同一帧数据中存在多个被修改过的属性数据,则将所述多个被修改过的属性数据合并成一条同步指令发送给需要同步的客户端,以实现属性同步。
5.根据权利要求1所述的方法,其特征在于,对所述原生数据进行判断包括:
如果获取到的所述原生数据是不可变类型的数据,则返回修改后的原生数据,如果获取到的所述原生数据是可变类型的数据,对所述原生数据添加一个属性监听器。
6.根据权利要求1所述的方法,其特征在于,
在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,所述方法还包括:基于所述属性监听器中的第二函数对所述属性信息中的名称进行设置;
调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:对设置后的属性信息中的名称采用所述回调函数进行属性同步。
7.根据权利要求1所述的方法,其特征在于,调用回调函数对监听到的所述数据信息变化过程进行属性同步包括:
基于所述回调函数获取内存空间中目标属性的值;
根据所述目标属性的属性类型确定需要同步的客户端;
将监听到的数据信息变化过程通过远程过程调用协议发送至所述需要同步的客户端。
8.一种属性信息的同步装置,其特征在于,包括:
划分单元,用于将属性信息中的数据类型划分为与预设编程语言相适配的可变数据类型和不可变数据类型,其中,所述预设编程语言至少包括:面向对象的解释型脚本语言;
第一添加单元,用于针对所述可变数据类型中的每个可变数据类型添加属性监听器;
监听单元,用于根据所述属性监听器监听所述可变数据类型的数据信息变化过程;以及
调用单元,用于调用回调函数对监听到的所述数据信息变化过程进行属性同步;
其中,所述监听单元通过以下步骤根据所述属性监听器监听所述可变数据类型的数据信息变化过程:若监听到所述属性信息中的名称发生变化,则调用所述属性监听器中的第一函数,从所述属性信息中的获取原生数据,且对所述原生数据进行判断。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二添加单元,用于在针对所述可变数据类型中的每个可变数据类型添加属性监听器之后,在所述可变数据类型中存在内嵌数据的情况下,则对所述内嵌数据添加属性子监听器。
10.根据权利要求9所述的装置,其特征在于,所述调用单元包括:
第一回调模块,用于在所述可变数据类型中存在内嵌数据的情况下,则基于所述回调函数对所述属性子监听器进行数据回调;
第二回调模块,用于在所述可变数据类型中不存在内嵌数据的情况下,则调用所述回调函数进行属性同步。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1至7中任意一项所述的属性信息的同步方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的属性信息的同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910768944.6A CN110515605B (zh) | 2019-08-20 | 2019-08-20 | 属性信息的同步方法及装置、存储介质和处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910768944.6A CN110515605B (zh) | 2019-08-20 | 2019-08-20 | 属性信息的同步方法及装置、存储介质和处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515605A CN110515605A (zh) | 2019-11-29 |
CN110515605B true CN110515605B (zh) | 2023-08-22 |
Family
ID=68625881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910768944.6A Active CN110515605B (zh) | 2019-08-20 | 2019-08-20 | 属性信息的同步方法及装置、存储介质和处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515605B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111744198A (zh) * | 2020-07-03 | 2020-10-09 | 珠海西山居移动游戏科技有限公司 | 一种数据同步方法及装置 |
CN111949252B (zh) * | 2020-07-23 | 2023-09-08 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和电子设备 |
CN112206533B (zh) * | 2020-10-19 | 2023-01-10 | 珠海金山数字网络科技有限公司 | 数据处理方法、装置及系统 |
CN112380192B (zh) * | 2020-12-03 | 2024-02-09 | 广州海量数据库技术有限公司 | 数据库中面向对象框架的实现方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084750A1 (en) * | 2010-09-30 | 2012-04-05 | Oracle International Corporation | Method for Efficiently Managing Property Types and Constraints In a Prototype Based Dynamic Programming Language |
CN104216708A (zh) * | 2014-08-20 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据监控的方法和装置 |
CN108845856A (zh) * | 2018-06-11 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 数据绑定方法、装置、存储介质及设备 |
CN109857579A (zh) * | 2019-02-15 | 2019-06-07 | 深圳市迅雷网文化有限公司 | 一种数据处理方法及相关装置 |
-
2019
- 2019-08-20 CN CN201910768944.6A patent/CN110515605B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084750A1 (en) * | 2010-09-30 | 2012-04-05 | Oracle International Corporation | Method for Efficiently Managing Property Types and Constraints In a Prototype Based Dynamic Programming Language |
CN104216708A (zh) * | 2014-08-20 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种数据监控的方法和装置 |
CN108845856A (zh) * | 2018-06-11 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 数据绑定方法、装置、存储介质及设备 |
CN109857579A (zh) * | 2019-02-15 | 2019-06-07 | 深圳市迅雷网文化有限公司 | 一种数据处理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110515605A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515605B (zh) | 属性信息的同步方法及装置、存储介质和处理器 | |
CN104572278B (zh) | 轻应用调用本地端能力的方法、装置及设备 | |
CN103577207A (zh) | 一种自定义界面系统中界面组件的加载方法和装置 | |
CN107635022A (zh) | 跨内外网服务访问方法和装置 | |
CN111897623B (zh) | 一种集群管理方法、装置、设备及存储介质 | |
CN110474820B (zh) | 流量回放方法、装置、电子设备 | |
CN112579118B (zh) | 微服务的配置信息更新方法、装置、系统、介质和设备 | |
CN110196843B (zh) | 一种基于容器集群的文件分发方法及容器集群 | |
CN114040020A (zh) | 跨集群服务调用的方法及系统 | |
JP7366664B2 (ja) | オフラインブリーフケース同期 | |
CN115134373A (zh) | 数据同步方法、装置、存储介质及电子设备 | |
CN110267077B (zh) | 离线缓存方法、装置、终端及可读存储介质 | |
CN105208095A (zh) | 过滤服务的部署推荐装置和方法 | |
CN116805946A (zh) | 一种消息请求处理方法、装置、电子设备及存储介质 | |
WO2022134830A1 (zh) | 区块节点数据的处理方法、装置、计算机设备和存储介质 | |
CN107395663B (zh) | 数据获取方法及装置 | |
CN112579877B (zh) | 信源系统的控制方法、装置、存储介质和设备 | |
CN112491943B (zh) | 数据请求方法、装置、存储介质和电子设备 | |
CN114640657A (zh) | 多注册中心的融合方法、装置 | |
CN112527792A (zh) | 一种数据存储方法、装置、设备和存储介质 | |
CN108090152B (zh) | 一种数据同步方法及系统 | |
US9088463B1 (en) | Container contract for data dependencies | |
US10089322B2 (en) | Portable electronic device, method for sharing file between multiple operating systems, recording medium and computer program product | |
CN113949739A (zh) | 跨设备播放方法、装置、电子设备及存储介质 | |
CN108228145A (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 |