CN111522673A - 内存数据访问方法、装置、计算机设备和存储介质 - Google Patents

内存数据访问方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN111522673A
CN111522673A CN202010338158.5A CN202010338158A CN111522673A CN 111522673 A CN111522673 A CN 111522673A CN 202010338158 A CN202010338158 A CN 202010338158A CN 111522673 A CN111522673 A CN 111522673A
Authority
CN
China
Prior art keywords
data
memory
target
determining
address
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
Application number
CN202010338158.5A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010338158.5A priority Critical patent/CN111522673A/zh
Publication of CN111522673A publication Critical patent/CN111522673A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种内存数据访问方法、装置、计算机设备和存储介质。方法包括:响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象,根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息,根据目标内存信息,访问第一进程运行所需的内存数据,采用本方法,能够提高内存数据访问效率。

Description

内存数据访问方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种内存数据访问方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了多进程交互的数据处理方式。以游戏中的帮派玩法为例,帮派玩法由众多复杂的玩法构成,包括但不限于:成员管理、任务、战争、联赛、副本、种植、建筑等。帮派玩法数量越大,帮派对象中的数据也越多,内存数据的管理越复杂,同时其他进程如场景进程、战斗进程等的执行过程中,都需要使用帮派进程的数据。为实现不同进程间的数据方法,通常将帮派各个玩法的数据,集中在帮派对象中进行管理。
传统技术中,对于不同进程间的数据访问,一般是需要数据的进程向能提供数据的进程发送内存数据获取请求,并且在收到提供数据的进程反馈的数据后,再处理后续逻辑,但请求内存数据和回复内存数据的处理方式,数据获取效率较低。
发明内容
调用此,有必要针对上述技术问题,提供一种能够提高数据获取效率的内存数据访问方法、装置、计算机设备和存储介质。
一种内存数据访问方法,方法包括:
响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象;
根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程;
调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息;
根据目标内存信息,访问第一进程运行所需的内存数据。
一种内存数据访问装置,装置包括:
操作响应模块,用于响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象;
第二进程确定模块,用于根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程;
内存信息查找模块,用于调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息;
内存数据访问模块,用于根据目标内存信息,访问第一进程运行所需的内存数据。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象;
根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程;
调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息;
根据目标内存信息,访问第一进程运行所需的内存数据。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象;
根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程;
调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息;
根据目标内存信息,访问第一进程运行所需的内存数据。
上述内存数据访问方法、装置、计算机设备和存储介质,通过响应终端操作,确定操作对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象,利用数据标识所属的数据类型与进程的关联关系,确定第一进程运行时所需内存数据涉及的第二进程,并调用第二进程,从存储有数据标识对应内存信息的对象容器中,查找得到待操作数据对象对应的目标内存信息,进而调用目标内存信息,访问得到第一进程运行所需的内存数据,通过内存信息实现不同进程间的内存数据的共享,利用内存信息的内存数据共享,取代内存数据在不同进程间的传递,避免了内存数据传输时需要进行的序列化与反序列化处理的复杂操作,提高数据访问效率。
附图说明
图1为一个实施例中内存数据访问方法的应用环境图;
图2为一个实施例中内存数据访问方法的流程示意图;
图3为另一个实施例中内存数据访问方法的流程示意图;
图4为再一个实施例中内存数据访问方法的流程示意图;
图5为还一个实施例中内存数据访问方法的流程示意图;
图6为又一个实施例中内存数据访问方法的流程示意图;
图7为另一个实施例中内存数据访问方法的流程示意图;
图8为再一个实施例中内存数据访问方法的流程示意图;
图9为还一个实施例中内存数据访问方法的流程示意图;
图10为一个应用实例中内存数据访问方法中的对象容器与内存空间的关联示意图;
图11为一个应用实例中的内存数据访问方法的时序图;
图12为一个实施例中内存数据访问装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的内存数据访问方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。服务器响应数据处理请求,确定数据处理请求对应的第一进程以及待操作数据对象,根据数据类型与进程的关联关系、以及运行第一进程时所需内存数据的目标数据类型,确定与目标数据类型关联的第二进程,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息,根据目标内存信息,访问第一进程运行所需的内存数据。其中,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群或者分布式系统来实现,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种内存数据访问方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤202至步骤208。
步骤202,响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象。
数据处理请求是指在检测到客户端操作或当前数据符合预设的条件时,所触发的数据处理请求,待操作对象是指数据处理请求所涉及的数据对象。数据处理请求可以是客户端调用对用户操作的响应生成并发送至服务器,也可以是服务器在接收到客户端的操作数据或自动检测当前数据条件后,调用操作数据或检测结果生成的请求。
在同一服务器或同一服务器集群中,存在多个用于处理不同任务的数据处理进程,不同的数据处理请求通过不同的进程来实现,例如,游戏中的战斗由战斗进程进行处理,副本由副本进程进行处理等。可以理解,文中的第一进程与第二进程仅用于区别不同的进程,不在于限制本申请,在其他实施例中,第一进程与第二进程可以互换。
在进程运行过程中,需要通过获取内存数据作为进程运行的支撑数据,进程在处理不同的数据处理请求时,所需要内存数据不同。例如,某副本数据处理请求对应副本进程需要的内存数据包括副本1,则需要获取的是副本1对应的内存数据,副本1则为该进程运行时所需内存数据的目标数据标识。
待操作对象是指参与数据处理请求的数据对象。以游戏中的帮派玩法中的帮战为例,帮战开始请求的生成可以是调用用户主动触发操作在客户端生成的,也可以是客户端将用户触发信息发送至服务器,由服务器生成的,还可以通过设置定时任务,通过检测时间信息满足定时条件时,系统(服务器或客户端)自动生成的。在服务器获取到帮战开始请求时,需要确定参与帮战的帮派对象,该场景中,参与帮战的帮派对象即为待操作数据对象。帮战对应的战斗进程即为数据处理请求对应的第一进程。
步骤204,根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程。
数据类型与进程的关联关系可以是预先基于每一个进程的处理任务构建的关系。数据标识用于区分同一数据类型中的不同数据,例如,副本数据属于数据类型,副本1、副本2……副本M属于副本数据类型中的不同数据标识。
数据类型是指相同种类的数据的统称。以游戏为例,不同数据类型可以对应不同的玩法,例如成员管理、任务、战争、联赛、副本、种植、建筑等,其中,每一玩法可以包括多项数据,每一项数据对应一个数据标识,例如,任务可以包括活动1、活动2……活动N(N为自然数),副本可以包括副本1、副本2……副本M(M为自然数)等,这里的N项活动对应为N个不同的数据标识。
多个进程之间可以是存在相互依赖关系的,例如A进程的运行依赖于B进程对应的数据,在运行之前,A进程需要从B进程中获取到相应的数据,例如帮派战斗(简称帮战)对应的帮战进程需要获取帮战双方参与成员的对象信息,而成员信息由帮派进程进行管理,所以帮战进程需要向帮派进程获取帮派对象信息。
根据预先构建的数据类型与进程的关联关系,以及目标数据标识所属的目标数据类型,可以确定第一进程获取内存数据所需要依赖的进程。具体来说,数据类型与进程间存在对应关系,需要说明的是,在游戏场景中,玩法和进程对应不是指一一对应,一个进程可以负责多个数据类型,即多个游戏玩法,例如成员管理、建筑由帮派进程管理,联赛、战争、副本等和战斗相关的,由战斗进程管理。每一个数据类型均有一个与之对应的进程,根据目标数据标识所属的数据类型、以及数据类型与进程的对应关系,即可确定该目标数据标识所属的数据类型所对应的第二进程。
步骤206,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息。
在进程的运行过程中,调用进程间数据的依赖关系,在确定了依赖的进程之后,还需要依赖该进程中获取对应的内存数据。传统技术一般是通过数据请求的方式,将请求的内存数据通过序列化处理反馈至请求数据的进程,然后通过反序列化处理,得到请求的数据。其中,序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成字节流,用于数据存储或网络传输。反序列化是序列化的逆过程,将字节流转化为数据结构或对象状态,用于将存储或传输的字节流恢复成数据结构或对象。
为解决内存数据直接传输造成的处理过程复杂和逻辑异步的问题,为每一个数据对象配置有对应的对象容器,在对象容器中,存储有该数据对象的各个数据类型中各数据标识,以及各数据标识在内存空间中的内存信息。不同的进程对具有对不同数据的管理权限,第一进程所需的内存数据与第二进程相对应,因此需要调用第二进程获取第一进程所需的内存数据的内存信息。
同一服务器或服务器集群中,多个进程间可以进行数据通信。在实施例中,第一进程向第二进程发送数据获取请求,建立第一进程与第二进程间的通信,第二进程在接收到数据获取请求之后,通过解析提取数据获取请求中携带的目标数据标识和待操作数据对象,然后根据其内存数据管理权限,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息,并反馈目标内存信息至第一进程。第一进程调用反馈的目标内存信息,从共享内存空间中访问运行目标内存信息对应的内存数据,访问的数据即为第一进程运行所需的内存数据。通过第一进程与第二进程的交互,明确各个进程的处理内容,实现内存信息的交互,便于进行内存数据的共享。由于数据处理请求中仅涉及部分数据对象,因此,在确定待操作数据对象之后,还需要从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息。
步骤208,根据目标内存信息,访问第一进程运行所需的内存数据。
具体来说,目标内存信息可以是第二进程反馈给第一进程的,第一进程根据第二进程反馈的目标内存信息,在存储有内存数据的共享内存空间中访问运行所需的内存数据。在进程间传输的内容由内存数据简化为内存信息,并通过共享内存实现内存数据的访问。
上述内存数据访问方法,通过响应终端操作,确定操作对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象,利用数据标识所属的数据类型与进程的关联关系,确定第一进程运行时所需内存数据涉及的第二进程,并调用第二进程,从存储有数据标识对应内存信息的对象容器中,查找得到待操作数据对象对应的目标内存信息,进而调用目标内存信息,访问得到第一进程运行所需的内存数据,通过内存信息实现不同进程间的内存数据的共享,利用内存信息的内存数据共享,取代内存数据在不同进程间的传递,不同帮派可以直接获取帮派数据,无需通过异步通信请求数据,开发人员的编程方式由异步编程转为同步编程,提高开发效率,同时减少异步通信序列化和反序列化的CPU计算开销,共享内存的使用也可以减少内存的使用,无需在多个进程中分别分配帮派对象,多进程可以共享帮派对象的对象容器。
在一个实施例中,如图3所示,目标内存信息包括目标地址偏移数据。
调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息包括步骤302。
步骤302,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标地址偏移数据。
根据目标内存信息,访问第一进程运行所需的内存数据包括步骤304至步骤308。
步骤304,获取待操作数据对象的内存块首地址。
步骤306,根据内存块首地址和目标地址偏移数据,确定目标数据标识对应内存数据的目标存储地址。
步骤308,访问目标存储地址,得到第一进程运行所需的内存数据。
地址偏移数据是指内存数据的存储地址相对于内存块首地址的地址偏移量,在每个进程中,预先存储有每一个数据对象的内存块首地址,在数据对象的对象容器中,只需要存储每一个数据标识对应的地址偏移数据,根据内存块首地址和地址偏移数据,确定目标数据标识对应内存数据的目标存储地址,从而通过访问目标存储地址,得到第一进程运行所需的内存数据。通过将数据对象的内存块首地址与偏移地址分开存储的数据处理方式,能够简化对象容器中的存储数据,节省对象容器的内存占用。
在一个实施例中,如图4所示,在调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息之前,还包括步骤402至步骤404。
步骤402,启动第二进程,根据第二进程对应内存数据在内存空间中的存储位置,确定内存数据的内存信息。
步骤404,将内存信息写入数据对象的对象容器。
进程在每一次启动过程中,都会根据其对内存数据的管理权限,重新对数据对象对应的对象容器中的数据进行数据写入,并在进程结束时,释放对象容器中的数据,具体的处理过程为获取每一个数据对象的内存数据的内存信息,并写入至数据对象对应的对象容器。具体来说,根据内存数据在内存空间中的存储地址,确定内存数据的内存信息,内存信息用于表征内存数据的存储地址信息,具体可以是相对于某地址的地址偏移量等。
在第一进程向第二进程发送数据获取请求后,需要先检测第二进程的启动状态,启动状态包括已启动和未启动。若第二进程的启动状态为已启动,则可以直接通过第二进程,从待操作数据对象的对象容器中查找得到目标数据标识对应的目标内存信息。如果第二进程的启动状态为未启动,则需要先对第二进程进行启动,具体可以通过服务器向第二进程下发进程启动指令,第二进程启动,进行内存信息的更新,然后从待操作数据对象的对象容器中查找得到目标数据标识对应的目标内存信息。
在其他实施例中,还可以保存内存容器中的内存信息,并检测内存空间中内存信息的更新情况,当存在内存信息更新时,例如新增了一个玩法,会导致内存空间中的存储地址占用有更新,将更新的内存信息更新至对应的内存容器中。
通过第二进程的启动状态的判断,在进程启动时写入内存数据,能够确保每次进程启动时获取的都是最新的内存数据,通过在进程结束后释放对象容器中该进程对应的内存信息,减小内存的占用。在进程启动时重新计算的方式与保存内存信息进行更新的方式相比较,无需进行更新检测,在进程未启动时,对应内存信息无需占用内存,且进程启动时的内存信息的计算处理耗时很小,实际环境下,不到1秒即可启动完成。
在一个实施例中,如图5所示,将内存信息写入数据对象的对象容器包括步骤502至步骤504。
步骤502,根据内存信息,确定内存数据对应的数据标识。
步骤504,将内存信息与对应的数据标识,以数据组合的形式写入数据对象的对象容器。
在对每一个对象容器中的信息进行更新时,需要保证数据标识与数据内存具有对应的关系,以减小数据误差。在内存空间中,为每一个特定的内存地址预先配置有对应的存储内容,调用内存信息,即可确定对应的数据标识,然后将数据标识和内存信息成对存储至对应的对象容器。
通过在进程启动时在对象容器中的写入内存信息与数据标识,可以有效针对内存信息的增加或内存布局更新等应用场景,进行内存信息与数据标识的更新,避免内存信息的错误和遗漏。例如,在某一时段,新开放了活动N,某进程写入了活动Z对应的数据至内存空间,但当前的对象容器中由于在此之前不包含活动Z内存数据,因此没有活动Z对应的内存信息,通过在进程启动时进行信息更新,实现对象容器中信息的完善。需要说明的是,内存数据的读写可以通过加锁处理保证数据的读写安全,确保数据的读写安全,一般来说,只有对应进程能够实现数据的写,其余进程可以根据该进程分享的内存信息实现内存数据的读。
在一个实施例中,内存信息包括地址偏移数据。如图6所示,启动第二进程,根据第二进程对应内存数据在内存空间中的存储位置,确定内存数据的内存信息包括步骤602至步骤606。
步骤602,启动第二进程,获取第二进程对应内存数据在内存空间中的存储位置。
步骤604,根据存储位置,获取内存数据对应的存储地址。
步骤606,获取内存数据对应的数据对象的内存块首地址,根据数据对象的内存块首地址以及内存数据的存储地址,确定内存数据的地址偏移数据。
将内存标识更新至数据对象的对象容器包括步骤608至步骤610。
步骤608,根据地址偏移数据,确定内存数据对应的数据标识。
步骤610,将地址偏移数据与对应的数据标识,以数据组合的形式写入数据对象的对象容器。
调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息包括步骤612。
步骤612,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标地址偏移数据。
根据目标内存信息,访问第一进程运行所需的内存数据包括步骤614。
步骤614,根据目标地址偏移数据,访问第一进程运行所需的内存数据。
在其中一个实施例中,内存信息以内存编号的形式展示,在确定内存数据的地址偏移数据之后,还包括将地址偏移数据标记为内存数据的内存编号。
内存编号是指内存数据的存储地址相对于某个固定地址的地址偏移,该固定地址可以是每个数据对象对应的内存块的首地址。对于数据对象的每一项内存数据,通过计算每一项内存数据的存储地址相对于内存块的首地址的地址偏移,得到该内存数据的内存编号。
内存数据的存储地址,可以调用数据对象对应内存块的首地址以及内存布局中各个数据标识对应的存储位置来确定。
在一个实施例中,如图7所示,在启动第二进程,根据第二进程对应内存数据在内存空间中的存储位置,确定内存数据的内存信息之前,还包括步骤702至步骤708。
步骤702,获取数据对象的数据属性信息和数据存储排布方式。
步骤704,根据数据属性信息,确定每一数据对象所需的内存大小。
步骤706,根据每一数据对象所需的内存大小,为各数据对象划分对应的内存块,并确定各内存块的首地址。
步骤708,根据内存块的首地址和数据存储排布方式,将数据对象的各项数据存储至内存块中对应的存储位置。
各项数据在内存空间中的存储根据数据对象的数据属性信息和数据存储排布方式来确定。通过每一数据对象的数据属性信息,例如数据对象包含的各数据类型、同一数据类型中的数据标识数量、以及数据标识对应的数据的内存大小,确定每一数据对象所需要的内存空间。对于每一数据类型,均都会预留内存大小,比如数据对象的数据属性信息中,任务这一数据类型的数据标识数量上限1000个,实际程序中配置的任务就不能超过1000个。在实施例中,不同数据对象的分配的内存空间可以相同。
根据每一数据对象所需的内存大小,为各数据对象划分对应的内存块,并确定各内存块的首地址,调用内存块的首地址和数据存储排布方式,将数据对象的各项数据存储至内存块中对应的存储位置。在各进程中均存储有各个数据对象对应的内存块的首地址信息,便于在进程启动时根据该首地址信息,计算该数据对象各项内存数据的内存编号。
在一个实施例中,数据属性信息包括数据对象包含的各数据类型,同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小。数据存储排布方式包括数据类型排序方式以及同一数据类型中各数据标识的排布方式。如图8所示,根据内存块的首地址和数据存储排布方式,将数据对象的各项数据存储至内存块中对应的存储位置包括步骤802至步骤806。
步骤802,根据数据类型排序方式以及同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小,确定每一数据类型所需的内存大小。
步骤804,根据内存块的首地址和每一数据类型所需的内存大小,确定每一数据类型的内存首地址。
步骤806,根据每一数据类型的内存首地址和数据类型中各数据标识的排布方式,确定各数据标识对应数据的存储地址。
在游戏中,将整块内存根据玩法类型、玩法数据大小、数据数量划分为不同的内存块,假设某数据对象的内存首地址为start,该数据对象的数据类型包括活动、任务、副本,在内存中按顺序排列,具体来说,包括n个任务数据,任务数据标识为任务1、任务2、……任务n(任务1至n按顺序排列),每个任务数据大小为N字节;m个活动,活动数据标识为活动1、活动2、……活动m,每个活动数据大小为M字节;s个副本,副本数据标识为副本1、副本2、……副本s,每个副本数据大小为S字节,例如,活动2的存储地址为start+n*N+M,活动2的内存编号调用存储地址与内存首地址的偏移计算得出,活动2的内存编号为start+n*N+M-start=n*N+M。同理,可计算得到各数据标识对应数据的存储地址。
在一个实施例中,如图9所示,提供了一种内存数据访问方法,具体包括以下步骤902至步骤934。
步骤902,获取数据对象的数据属性信息和数据存储排布方式。
步骤904,根据数据属性信息,确定每一数据对象所需的内存大小。
步骤906,根据每一数据对象所需的内存大小,为各数据对象划分对应的内存块,并确定各内存块的首地址。
步骤908,根据数据类型排序方式以及同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小,确定每一数据类型所需的内存大小。
步骤910,根据内存块的首地址和每一数据类型所需的内存大小,确定每一数据类型的内存首地址。
步骤912,根据每一数据类型的内存首地址和该数据类型中各数据标识的排布方式,确定各数据标识对应数据的存储地址。
步骤914,启动第二进程,获取第二进程对应内存数据在内存块中的存储位置。
步骤916,根据存储位置,计算内存数据对应的存储地址。
步骤918,获取内存数据对应的数据对象的内存块首地址,根据数据对象的内存块首地址以及内存数据的存储地址,确定内存数据的地址偏移数据。
步骤920,将地址偏移数据标记为内存数据的内存编号。
步骤922,根据内存编号,确定内存数据对应的数据标识。
步骤924,将内存编号与对应的数据标识,以数据组合的形式写入数据对象的对象容器。
步骤926,响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象。
步骤928,根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程。
步骤930,调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存编号。
步骤932,获取待操作数据对象的内存块首地址,根据内存块首地址和目标内存编号,确定目标数据标识对应内存数据的目标存储地址。
步骤934,访问目标存储地址,得到第一进程运行所需的内存数据。
本申请还提供一种应用场景,具体来说,涉及复杂的内存数据管理,都可以应用上述方法进行内存访问与管理,大型专业处理软件比如photo shop,视频编辑软件Adobeafter effects,还有集成开发软件如visual studio可以使用本方法优化内存管理。在游戏场景下,mmo体量最大很适合使用本方法,其余如大型回合制网游,射击类型网游也可使用。
以该方法在大型多人在线角色扮演游戏的应用为例,该应用场景应用上述的内存数据访问方法。具体地,该内存数据访问方法在该应用场景的应用如下:
大型多人在线角色扮演游戏(MassiveMultiplayer Online Role-PlayingGame,简称MMORPG)是网络游戏的一种,是电子角色扮演游戏按电子游戏人数分类分别出来的一种网络游戏。在所有MMORPG中,玩家都可扮演一个或多个虚拟角色,并控制该角色的在游戏中虚拟世界的活动与行为。
在现如今MMORPG游戏背景下,帮派玩法作为一个热门的系统,由众多复杂的玩法构成,包括但不限于:成员管理、任务、战争、联赛、副本、种植、建筑等。帮派玩法数量越大,帮派对象中的数据也越多,内存数据的管理越复杂;同时其他进程:如场景进程、战斗进程等,都需要使用帮派进程的数据,因此服务器中各个进程间的数据通信也是重要的开发内容。
现有技术中,通常将帮派各个玩法的数据对象,集中在帮派对象中进行管理。这种管理方式开发简单,在数据类型较少时,比较简单实用。但随着玩法数量增多,缺点也很明显:单个帮派对象内存占用严重,为帮派对象分配内存时,需要一同将各个玩法数据对象分配好,而实际游戏中,不同时期的帮派,只需开启不同的玩法,不需要全部玩法数据,内存占用也不大,因此此种方案存在无法合理的使用内存的缺点。
现有技术中另一种方案是使用指针(32位操作系统中指针占4字节内存,64位系统中指针占8字节内存),然后指针再指向另一块额外分配的堆空间,用于存储实际玩法数据。这种方案可以减少帮派对象的内存占用,也可解决不同时期的帮派分配不同玩法数据的需求,但是指针的使用,对开发者内存管理的能力要求较高,同时随着玩法数量增多,逻辑越来越复杂,数据的存储地址是逐步随机分配的,指针的使用容易因为开发者的疏忽导致出现进程宕机的危险。
此外,上述两种处理方式,进程间通信导致的异步逻辑,开发难度较大,存在代码逻辑割裂的问题。比如战斗进程需要开启一场帮战,需要先向帮派进程请求帮派的数据,收到帮派进程回复的帮派数据后,再处理后续战斗逻辑。这样的异步过程对开发者很不友好,开发者需要保存发起请求前的逻辑上下文,才能在接收到帮派进程回复后处理后续逻辑。同时请求数据和回复数据,需要进行数据的序列化和反序列化,消耗较多CPU计算资源。尤其在MMORPG游戏中,存在大量频繁的数据通信需要序列化和反序列化,计算资源消耗特别大。
本方法在大型多人在线角色扮演游戏的应用场景中,调用对象容器与内存编号的内存访问与管理方案,可以同时解决现有技术中帮派对象内存占用大问题和指针操作带来的内存管理问题。调用共享内存,保证多个进程间可以共享帮派数据,解决异步逻辑割裂问题。
具体来说,在帮派对象中分配一个对象容器CONTAINER,对象容器保存所有该帮派对象的各项玩法数据的内存编号SHM_ID,内存编号用64比特的整数表示,通过不同的内存编号可以定位到不同玩法数据。如图10所示,对象容器只存放各种玩法数据的标识与内存编号,内存编号的计算过程如下:
首先,为每一种玩法数据注册一个数据类型,类型由开发人员定义,不与其他类型冲突,例如:为任务玩法数据注册类型1,为活动玩法数据注册类型2,其中每一个任务或活动玩法具有不同的标识,如标识为活动1、活动2。
整块内存根据玩法类型、数据标识数量、玩法数据大小划分为不同的内存块,假设内存首地址为start,假设n个任务数据,每个任务数据大小为N字节;m个活动,每个活动数据大小为M字节;s个副本,每个副本数据大小为S字节,并在内存空间中按顺序排列,活动2的内存编号通过与内存首地址的偏移计算得出start+n*N+M-start=n*N+M。
在计算得到内存编号后,将数据标识与内存编号保存在对象容器中。在以后的开发过程中,只需要通过数据标识,便可从对象容器中获取到内存编号,通过内存编号就能获取到实际的玩法数据,通过内存编号替代指针的使用,提高代码的容错性。
此外,本方法将上述整个帮派对象分配在共享内存中,通过共享内存,供不同进程访问,而不是某个进程独有的,因此不同进程如战斗进程和帮派进程,可以直接调用内存编号获取帮派数据,无需通过异步通信请求内存数据,开发人员的编程方式由异步编程转为同步编程,提高开发效率;同时减少异步通信序列化和反序列化的CPU计算开销;共享内存的使用也可以减少内存的使用,无需在多个进程中分配帮派对象,多进程可以共享帮派对象。帮派进程启动时,将帮派进程对应内存数据的内存编号都计算好,并写入对应的对象容器,在战斗进程需要获取内存编号时,如图11所示,帮派进程将从对象容器中查找到的内存编号发送给战斗进程,战斗进程获取到编号后,便能直接访问共享内存。
应该理解的是,虽然图2-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-9中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图12所示,提供了一种内存数据访问装置1200,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:操作响应模块1202、第二进程确定模块1204、内存信息查找模块1206和内存数据访问模块1208,其中:
操作响应模块1202,用于响应数据处理请求,确定数据处理请求对应的第一进程、运行第一进程时所需内存数据的目标数据标识以及待操作数据对象。
第二进程确定模块1204,用于根据数据类型与进程的关联关系、以及目标数据标识所属的目标数据类型,确定与目标数据类型关联的第二进程。
内存信息查找模块1206,用于调用第二进程,从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息。
内存数据访问模块1208,用于根据目标内存信息,访问第一进程运行所需的内存数据。
在其中一个实施例中,内存信息查找模块还用于第一进程向第二进程发送数据获取请求;第二进程提取数据获取请求中携带的目标数据标识和待操作数据对象,并从待操作数据对象的对象容器中查找目标数据标识对应的目标内存信息;反馈目标内存信息至第一进程。
在一个实施例中,内存数据访问模块,还用于获取待操作数据对象的内存块首地址;根据内存块首地址和目标地址偏移数据,确定目标数据标识对应内存数据的目标存储地址;访问目标存储地址,得到第一进程运行所需的内存数据。
在一个实施例中,内存数据访问装置还包括内存信息写入模块,用于根据内存信息,确定内存数据对应的数据标识;将内存信息与对应的数据标识,以数据组合的形式写入数据对象的对象容器。
在一个实施例中,内存信息包括地址偏移数据;内存信息写入模块,用于在第二进程启动时,获取第二进程对应内存数据在内存块中的存储位置;根据存储位置,获取内存数据对应的存储地址;获取内存数据对应的数据对象的内存块首地址,根据数据对象的内存块首地址以及内存数据的存储地址,确定内存数据的地址偏移数据。
在一个实施例中,内存数据访问装置还包括数据存储模块,用于获取数据对象的数据属性信息和数据存储排布方式;根据数据属性信息,确定每一数据对象所需的内存大小;根据每一数据对象所需的内存大小,为各数据对象划分对应的内存块,并确定各内存块的首地址;根据内存块的首地址和数据存储排布方式,将数据对象的各项数据存储至内存块中对应的存储位置。
在一个实施例中,数据属性信息包括数据对象包含的各数据类型、同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小;数据存储排布方式包括数据类型排序方式以及同一数据类型中各数据标识的排布方式;数据存储模块,还用于根据数据类型排序方式以及同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小,确定每一数据类型所需的内存大小;根据内存块的首地址和每一数据类型所需的内存大小,确定每一数据类型的内存首地址;根据每一数据类型的内存首地址和数据类型中各数据标识的排布方式,确定各数据标识对应数据的存储地址。
关于内存数据访问装置的具体限定可以参见上文中对于内存数据访问方法的限定,在此不再赘述。上述内存数据访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储内存数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种内存数据访问方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种内存数据访问方法,其特征在于,所述方法包括:
响应数据处理请求,确定所述数据处理请求对应的第一进程、运行所述第一进程时所需内存数据的目标数据标识以及待操作数据对象;
根据数据类型与进程的关联关系、以及所述目标数据标识所属的目标数据类型,确定与所述目标数据类型关联的第二进程;
调用所述第二进程,从所述待操作数据对象的对象容器中查找所述目标数据标识对应的目标内存信息;
根据所述目标内存信息,访问所述第一进程运行所需的内存数据。
2.根据权利要求1所述的方法,其特征在于,所述目标内存信息包括目标地址偏移数据;
所述根据所述目标内存信息,访问所述第一进程运行所需的内存数据包括:
获取待操作数据对象的内存块首地址;
根据所述内存块首地址和所述目标地址偏移数据,确定所述目标数据标识对应内存数据的目标存储地址;
访问所述目标存储地址,得到所述第一进程运行所需的内存数据。
3.根据权利要求1所述的方法,其特征在于,在所述调用所述第二进程,从所述待操作数据对象的对象容器中查找所述目标数据标识对应的目标内存信息之前,还包括:
启动所述第二进程,根据所述第二进程对应内存数据在内存空间中的存储位置,确定所述内存数据的内存信息;
将所述内存信息写入所述数据对象的对象容器。
4.根据权利要求3所述的方法,其特征在于,所述将所述内存信息写入所述数据对象的对象容器包括:
根据所述内存信息,确定所述内存数据对应的数据标识;
将所述内存信息与对应的所述数据标识,以数据组合的形式写入所述数据对象的对象容器。
5.根据权利要求3所述的方法,其特征在于,所述内存信息包括地址偏移数据;
所述启动所述第二进程,根据所述第二进程对应内存数据在内存空间中的存储位置,确定所述内存数据的内存信息包括:
启动所述第二进程,获取所述第二进程对应内存数据在内存空间中的存储位置;
根据所述存储位置,获取所述内存数据对应的存储地址;
获取所述内存数据对应的数据对象的内存块首地址,根据所述数据对象的内存块首地址以及所述内存数据的存储地址,确定所述内存数据的地址偏移数据。
6.根据权利要求3所述的方法,其特征在于,在所述启动所述第二进程,根据所述第二进程对应内存数据在内存空间中的存储位置,确定所述内存数据的内存信息之前,还包括:
获取数据对象的数据属性信息和数据存储排布方式;
根据所述数据属性信息,确定每一数据对象所需的内存大小;
根据所述每一数据对象所需的内存大小,为各数据对象划分对应的内存块,并确定各内存块的首地址;
根据所述内存块的首地址和所述数据存储排布方式,将所述数据对象的各项数据存储至内存块中对应的存储位置。
7.根据权利要求6所述方法,其特征在于,所述数据属性信息包括数据对象包含的各数据类型、同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小;所述数据存储排布方式包括数据类型排序方式以及同一数据类型中各数据标识的排布方式;
所述根据所述内存块的首地址和所述数据存储排布方式,将所述数据对象的各项数据存储至内存块中对应的存储位置包括:
根据所述数据类型排序方式以及同一数据类型中的数据标识数量以及数据标识对应的数据的内存大小,确定每一数据类型所需的内存大小;
根据所述内存块的首地址和所述每一数据类型所需的内存大小,确定每一数据类型的内存首地址;
根据每一数据类型的内存首地址和所述数据类型中各数据标识的排布方式,确定各数据标识对应数据的存储地址。
8.一种内存数据访问装置,其特征在于,所述装置包括:
操作响应模块,用于响应数据处理请求,确定所述数据处理请求对应的第一进程、运行所述第一进程时所需内存数据的目标数据标识以及待操作数据对象;
第二进程确定模块,用于根据数据类型与进程的关联关系、以及所述目标数据标识所属的目标数据类型,确定与所述目标数据类型关联的第二进程;
内存信息查找模块,用于调用所述第二进程,从所述待操作数据对象的对象容器中查找所述目标数据标识对应的目标内存信息;
内存数据访问模块,用于根据所述目标内存信息,访问所述第一进程运行所需的内存数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202010338158.5A 2020-04-26 2020-04-26 内存数据访问方法、装置、计算机设备和存储介质 Pending CN111522673A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010338158.5A CN111522673A (zh) 2020-04-26 2020-04-26 内存数据访问方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010338158.5A CN111522673A (zh) 2020-04-26 2020-04-26 内存数据访问方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN111522673A true CN111522673A (zh) 2020-08-11

Family

ID=71903460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010338158.5A Pending CN111522673A (zh) 2020-04-26 2020-04-26 内存数据访问方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN111522673A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099979A (zh) * 2020-11-18 2020-12-18 数字广东网络建设有限公司 一种访问控制方法、装置、计算机设备和存储介质
CN112800123A (zh) * 2021-02-08 2021-05-14 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN114579198A (zh) * 2022-01-20 2022-06-03 飞腾信息技术有限公司 内存芯片的启动方法、装置、计算机设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510530B1 (en) * 2010-12-09 2013-08-13 Google Inc. Memory management for programs operating asynchronously
CN103577469A (zh) * 2012-08-03 2014-02-12 深圳市腾讯计算机系统有限公司 数据库连接复用方法和装置
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端
WO2018157836A1 (zh) * 2017-03-02 2018-09-07 腾讯科技(深圳)有限公司 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
US20190102341A1 (en) * 2016-07-07 2019-04-04 Tencent Technology (Shenzhen) Company Limited Object information processing method and apparatus, and storage medium
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510530B1 (en) * 2010-12-09 2013-08-13 Google Inc. Memory management for programs operating asynchronously
CN103577469A (zh) * 2012-08-03 2014-02-12 深圳市腾讯计算机系统有限公司 数据库连接复用方法和装置
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端
US20190102341A1 (en) * 2016-07-07 2019-04-04 Tencent Technology (Shenzhen) Company Limited Object information processing method and apparatus, and storage medium
WO2018157836A1 (zh) * 2017-03-02 2018-09-07 腾讯科技(深圳)有限公司 一种可编程硬件的资源管理方法、可编程硬件设备及存储介质
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099979A (zh) * 2020-11-18 2020-12-18 数字广东网络建设有限公司 一种访问控制方法、装置、计算机设备和存储介质
CN112800123A (zh) * 2021-02-08 2021-05-14 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN112800123B (zh) * 2021-02-08 2024-02-06 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
CN114579198A (zh) * 2022-01-20 2022-06-03 飞腾信息技术有限公司 内存芯片的启动方法、装置、计算机设备及存储介质
CN114579198B (zh) * 2022-01-20 2024-02-20 飞腾信息技术有限公司 内存芯片的启动方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN111522673A (zh) 内存数据访问方法、装置、计算机设备和存储介质
CN112076464B (zh) 一种数据请求处理方法、装置、计算机设备及存储介质
CN110898428B (zh) 多虚拟对象交互的方法、装置、服务器及存储介质
EP1723761B1 (en) System architecute for load balancing in distributed multi-user application
CN111737012B (zh) 数据包的同步方法、装置、设备及存储介质
US8126994B2 (en) Simulation techniques in a distributed computer system
US20050266926A1 (en) Method and apparatus for executing event driven simulations
CN111659126B (zh) 匹配进程的分配方法、装置、服务器、终端及存储介质
US20100056275A1 (en) Massively Multiplayer Online Game Technologies
WO2014194695A1 (en) Method and server for pvp team matching in computer games
WO2021139386A1 (zh) 资源配置方法、装置、设备和存储介质
CN112023402B (zh) 游戏数据处理方法、装置、设备以及介质
CN111625353B (zh) 虚拟资源分发处理方法、装置、服务器及存储介质
CN112619146A (zh) 虚拟资源的分配方法及装置、存储介质、电子装置
US9149725B2 (en) Method and server for PVP team matching in computer games
CN116208623A (zh) 信息同步方法、装置、引擎服务器及存储介质
CN112354189B (zh) 一种游戏数据对象匹配方法、装置、设备及存储介质
US9805067B1 (en) System and method for multiplayer network gaming
CN112156475B (zh) 一种业务数据处理方法、装置、电子设备及存储介质
CN111589118A (zh) 用户界面的显示方法、装置、设备及存储介质
CN114489408B (zh) 动画处理系统、方法、设备及存储介质
CN112698956B (zh) 一种数据对象处理方法、装置、设备及存储介质
CN113209635B (zh) 基于缓存队列的数据处理方法、装置及存储介质
CN112221161B (zh) 对局参与方的匹配方法、装置、设备及可读存储介质
US11909601B1 (en) Implementing a scalable 3D simulation using a distributed 3D keyspace

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