System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及配置加载,特别涉及一种配置数据获取方法、装置、电子设备、存储介质。
技术介绍
1、游戏软件中,特别是大型游戏中通常会使用到大量的游戏配置表。在相关技术中,以基于lua开发的游戏为例,需要预加载所有lua功能模块中使用到的游戏配置表,并将整个游戏配置表以lua table的形式常驻在内存中,确保功能模块能够随时从内存调用相关的配置数据。但是lua table通常会占据较多的内存,若在一些内存配置较低的终端常驻整个游戏配置表,很容易因为内存不足导致游戏无法正常运行,影响用户体验。
技术实现思路
1、本专利技术旨在至少解决现有技术中存在的技术问题之一。为此,本专利技术提出一种配置数据获取方法、装置、电子设备、存储介质,能够减少游戏运行时配置表对内存的占用,提高用户体验。
2、第一方面,本专利技术实施例提供了一种配置数据获取方法,包括:
3、加载配置文件生成第一配置表,将所述第一配置表加载到内存,其中,所述第一配置表包括多个第一信息单元,所述第一信息单元记载有可用键和可用配置数据;
4、基于所述第一配置表,将各个所述可用配置数据序列化写入临时文件缓存,确定所述可用配置数据的数据索引,其中,所述数据索引用于指示所述可用配置数据在所述临时文件缓存的存储位置;
5、生成第二配置表后加载到所述内存,在所述内存中回收所述第一配置表,其中,所述第二配置表包括多个第二信息单元,所述第二信息单元记载有所述可用键和对应的所述可用索引;
7、根据本专利技术的一些实施例,所述将各个所述可用配置数据序列化写入临时文件缓存,确定所述可用配置数据的数据索引,包括:
8、在所述内存中分配信息缓冲区;
9、遍历所述第一配置表的各个所述第一信息单元,将各个所述可用配置数据序列化写入所述信息缓冲区并生成可用数据块,基于所述可用数据块在所述信息缓冲区的存储区域生成所述可用索引,关联所述可用键和所述可用索引得到所述第二信息单元;
10、若当前遍历到的所述第一信息单元所对应的所述可用配置数据为空值,基于全部的所述第二信息单元组成所述第二配置表,将所述信息缓冲区所记载的全部所述可用数据块写入所述临时文件缓存;
11、基于mmap将所述临时文件缓存映射至所述内存。
12、根据本专利技术的一些实施例,所述将各个所述可用配置数据序列化写入所述信息缓冲区并生成可用数据块,基于所述可用数据块在所述信息缓冲区的存储区域生成所述可用索引,包括:
13、若当前遍历到的所述第一信息单元所对应的所述可用配置数据不为空值,基于所述信息缓冲区当前的可写地址确定起始缓冲区偏移量;
14、将所述可用配置数据写入所述信息缓冲区,完成后记录结束缓冲区偏移量;
15、基于所述起始缓冲区偏移量和所述结束缓冲区偏移量确定写入偏移信息,将所述写入偏移信息所对应的数据块确定为所述可用数据块;
16、基于构建所述可用键和所述写入偏移信息的映射关系得到所述可用索引;
17、以所述结束缓冲区偏移量为新的起始缓冲区偏移量,继续遍历下一个所述第一信息单元。
18、根据本专利技术的一些实施例,所述将所述可用配置数据写入所述信息缓冲区,包括:
19、当所述可用配置数据的数据类型为table类型,将所述可用配置数据所对应的table类型的类型值写入所述信息缓冲区;
20、或者,当所述可用配置数据的数据类型为数值,基于所述可用配置数据进行变长字节编码后写入所述信息缓冲区;
21、或者,当所述可用配置数据的数据类型为字符串,将所述可用配置数据的类型值、字符串长度和所述可用配置数据写入所述信息缓冲区;
22、或者,当所述可用配置数据的数据类型为布尔值,将所述可用配置数据所对应的布尔真值或者布尔假值写入所述信息缓冲区。
23、根据本专利技术的一些实施例,所述基于所述可用配置数据进行变长字节编码后写入所述信息缓冲区,包括:
24、当所述可用配置数据的原始数值满足预设正数范围且为整数,基于所述原始数值的大小确定目标字节数,基于所述目标字节数的数量写入所述原始数值;
25、或者,当所述原始数值不满足所述预设正数范围和/或不为整数,在首字节写入双精度数值类类型后,通过8个字节写入所述原始数值;
26、其中,所述基于所述目标字节数的数量写入所述原始数值,包括:
27、当所述目标字节数为1,通过1个字节写入所述原始数值和所述原始数值的值类型枚举;
28、当所述目标字节数大于等于2且小于等于4,将前n-1个字节的最高位置1后,通过剩余的位置写入所述原始数值,其中,n为所述目标字节数;
29、当所述目标字节数等于5,在首字节写入整数值类型,在剩余的4个字节写入所述原始数值。
30、根据本专利技术的一些实施例,在所述根据所述目标配置数据响应所述第一数据请求之后,所述方法还包括:
31、将所述目标配置数据确定为所述第一目标键的返回值,将所述第一目标键确定为可用热键并添加至热键集合;
32、当获取到携带有第二目标键的第二数据请求,基于所述第二目标键从所述热键集合中确定目标热键,基于所述目标热键的所述返回值响应所述第二数据请求;
33、在预设时长后,回收冷键集合的内容,将所述可用热键确定为可用冷键并转移至所述冷键集合。
34、根据本专利技术的一些实施例,当获取到携带有第二目标键的第二数据请求,且未能基于所述第二目标键从所述热键集合中确定目标热键,所述方法还包括:
35、当基于所述第二目标键从所述冷键集合确定目标冷键,基于所述目标冷键从所述第二配置表确定冷键索引,基于所述冷键索引从所述临时文件缓存定位并反序列化出冷键配置数据;
36、根据所述冷键配置数据响应所述第二数据请求;
37、将所述目标冷键确定为新的可用热键并重新保存至所述热键集合,将所述冷键配置数据确定为所述新的可用热键的返回值。
38、第二方面,本专利技术实施例提供了一种配置数据获取装置,包括少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如上述第一方面所述的配置数据获取方法。
39、第三方面,本专利技术实施例提供了一种电子设备,包括有如上述第二方面所述的配置数据获取装置。
40、第四方面,本专利技术实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如上述第一方面所述的配置数据获取方法。
本文档来自技高网...【技术保护点】
1.一种配置数据获取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述将各个所述可用配置数据序列化写入临时文件缓存,确定所述可用配置数据的数据索引,包括:
3.根据权利要求2所述的方法,其特征在于,所述将各个所述可用配置数据序列化写入所述信息缓冲区并生成可用数据块,基于所述可用数据块在所述信息缓冲区的存储区域生成所述可用索引,包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述可用配置数据写入所述信息缓冲区,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述可用配置数据进行变长字节编码后写入所述信息缓冲区,包括:
6.根据权利要求1所述的方法,其特征在于,在所述根据所述目标配置数据响应所述第一数据请求之后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,当获取到携带有第二目标键的第二数据请求,且未能基于所述第二目标键从所述热键集合中确定目标热键,所述方法还包括:
8.一种配置数据获取装置,其特征在于,包括至少一个控制处理器和用于与所述至少一个控
9.一种电子设备,其特征在于,包括如权利要求8所述的配置数据获取装置。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至7任一项所述的配置数据获取方法。
...【技术特征摘要】
1.一种配置数据获取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述将各个所述可用配置数据序列化写入临时文件缓存,确定所述可用配置数据的数据索引,包括:
3.根据权利要求2所述的方法,其特征在于,所述将各个所述可用配置数据序列化写入所述信息缓冲区并生成可用数据块,基于所述可用数据块在所述信息缓冲区的存储区域生成所述可用索引,包括:
4.根据权利要求3所述的方法,其特征在于,所述将所述可用配置数据写入所述信息缓冲区,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述可用配置数据进行变长字节编码后写入所述信息缓冲区,包括:
6.根据权利要求1所述的方法,其特征在于,在所述根据所述目标配置数据响应所述第一数据请求之后,所述方法还包括...
【专利技术属性】
技术研发人员:罗宝航,王屹,赵默君,
申请(专利权)人:珠海剑心互动娱乐有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。