本公开涉及数据处理,尤其涉及一种电子设备及基于二进制文件的用户数据记忆升级方法。
背景技术:
1、对于电视而言,由于使用数据库保存用户数据,在交直流开机和用户修改保存数据时,耗时较长,造成用户使用体验不好。因此,使用二进制文件保存用户数据,用于替代数据库,可以提高数据读取和保存的速度,但是由于二进制文件中数据是基于数据结构顺序保存的,部分数据结构是按照功能定义,所以在修改指定成员变量时,影响的数据在二进制文件中是不连续的,在这种情况下,从原用户二进制文件中读取数据是很费时的。
2、相关技术中,电视在ota(over-the-air,空中下载技术)升级时,会删除用户二进制文件,重新从数据库中读取数据,而用户在使用时,或多或少都会修改图像、声音、hdmi(high definition multimedia interface,高清多媒体接口)等界面选项,在ota升级修改的值被还原为默认值,导致用户体验不友好。所以,如何实现在电视ota升级场景下的用户数据记忆功能是当前亟需解决的问题。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种电子设备和基于二进制文件的用户数据记忆升级方法,可以实现在电视ota升级场景下的用户数据记忆功能。
2、第一方面,本公开提供了一种电子设备,包括:
3、控制器,被配置为:
4、启动中间件,生成所述中间件的当前版本号对应的第一数据头信息;所述第一数据头信息包括:至少一个子模块的数据库版本以及至少一个索引信息;
5、判断内存中是否存在二进制文件;
6、当存在所述二进制文件,且所述二进制文件有效时,读取所述二进制文件的第二数据头信息;
7、比较所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本是否一致;
8、存储器,被配置为:
9、若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件。
10、作为本公开实施例一种可选的实施方式,所述存储器,还被配置为:
11、所述判断内存中是否存在二进制文件,还包括:
12、当不存在所述二进制文件时,则从所述数据库中读取默认数据写入内存;
13、根据所述第一数据头信息,生成目标二进制文件;所述目标二进制文件包括所述默认数据和第一数据头信息的至少一个索引信息。
14、作为本公开实施例一种可选的实施方式,所述存储器,还被配置为:
15、所述判断内存中是否存在二进制文件,还包括:
16、当存在所述二进制文件时,对所述二进制文件进行校验;
17、当所述二进制文件校验失败时,则删除所述二进制文件,从所述数据库中读取默认数据写入内存;
18、根据所述第一数据头信息,生成目标二进制文件;所述目标二进制文件包括所述默认数据和第一数据头信息的至少一个索引信息。
19、作为本公开实施例一种可选的实施方式,所述控制器,还被配置为:
20、所述根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存之后,还包括:
21、判断目标数据库中是否存在预设默认值修改表;所述目标数据库为升级后的数据库;所述预设默认值修改表用于存储各个子模块的不同数据库版本对应的目标参数的修改信息;
22、若所述目标数据库中存在所述预设默认值修改表,则判断所述预设默认值修改表中是否存储有所述二进制文件中各子模块的数据库版本对应的目标参数的修改信息;
23、若所述预设默认值修改表中存储有所述二进制文件中各子模块的数据库版本对应的目标参数的修改信息,则根据所述目标参数的修改信息对所述目标参数进行修改。
24、作为本公开实施例一种可选的实施方式,所述存储器,还具体被配置为:
25、所述比较所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本是否一致,还包括:
26、若所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本均一致,则根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存。
27、作为本公开实施例一种可选的实施方式,所述存储器,具体被配置为:
28、所述若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,包括:
29、若所述第一数据头信息中目标子模块的数据库版本大于所述第二数据头信息中所述目标子模块的数据库版本,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,以完成数据库升级。
30、作为本公开实施例一种可选的实施方式,所述索引信息包括:每个数据表存储的起始位置、每个数据表存储的数据个数以及每个数据表存储的数据长度;
31、所述存储器,还被具体配置为:
32、所述若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,还包括:
33、若所述第一数据头信息中目标子模块的数据库版本小于所述第二数据头信息中所述目标子模块的数据库版本,则根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,并根据所述第一数据头信息的索引信息包含的数据个数和数据长度,将所述默认数据和所述用户数据写入所述二进制文件,以完成数据库降级。
34、第二方面,提供一种基于二进制文件的用户数据记忆升级方法,所述方法包括:
35、启动中间件,生成所述中间件的当前版本号对应的第一数据头信息;所述第一数据头信息包括:至少一个子模块的数据库版本以及至少一个索引信息;
36、判断内存中是否存在二进制文件;
37、当存在所述二进制文件,且所述二进制文件有效时,读取所述二进制文件的第二数据头信息;
38、比较所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本是否一致;
39、若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件。
40、作为本公开实施例一种可选的实施方式,所述判断内存中是否存在二进制文件,还包括:
41、当不存在所述二进制文件时,则从所述数据库中读取默认数据写入内存;
42、根据所述第一数据头信息,生成目标二进制文件;所述目标二进制文件包括所述默认数据和第一数据头信息的至少一个索引信息。
43、作为本公开实施例一种可选的实施方式,所述判断内存中是否存在二进制文件,还包括:
44、当存在所述二进制文件时,对所述二进制文件进行校验;
45、当所述二进制文件校验失败时,则删除所述二进制文件,从所述数据库中读取默认数据写入内存;
46、根据所述第一数据头信息,生成目标二进制文件;所述目标二进制文件包括所述默认数据和第一数据头信息的至少一个索引信息。
47、作为本公开实施例一种可选的实施方式,所述根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存之后,还包括:
48、判断目标数据库中是否存在预设默认值修改表;所述目标数据库为升级后的数据库;所述预设默认值修改表用于存储各个子模块的不同数据库版本对应的目标参数的修改信息;
49、若所述目标数据库中存在所述预设默认值修改表,则判断所述预设默认值修改表中是否存储有所述二进制文件中各子模块的数据库版本对应的目标参数的修改信息;
50、若所述预设默认值修改表中存储有所述二进制文件中各子模块的数据库版本对应的目标参数的修改信息,则根据所述目标参数的修改信息对所述目标参数进行修改。
51、作为本公开实施例一种可选的实施方式,所述比较所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本是否一致,还包括:
52、若所述第一数据头信息和所述第二数据头信息中各子模块的数据库版本均一致,则根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存。
53、作为本公开实施例一种可选的实施方式,所述若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,包括:
54、若所述第一数据头信息中目标子模块的数据库版本大于所述第二数据头信息中所述目标子模块的数据库版本,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,以完成数据库升级。
55、作为本公开实施例一种可选的实施方式,所述索引信息包括:每个数据表存储的起始位置、每个数据表存储的数据个数以及每个数据表存储的数据长度;
56、所述存储器,还被具体配置为:
57、所述若存在至少一个子模块的数据库版本不一致,则从数据库中读取默认数据写入内存,并根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,再将所述默认数据和所述用户数据写入所述二进制文件,还包括:
58、若所述第一数据头信息中目标子模块的数据库版本小于所述第二数据头信息中所述目标子模块的数据库版本,则根据所述第二数据头信息中的至少一个索引信息,从所述二进制文件中读取用户数据写入内存,并根据所述第一数据头信息的索引信息包含的数据个数和数据长度,将所述默认数据和所述用户数据写入所述二进制文件,以完成数据库降级。
59、第三方面,提供一种计算机可读存储介质,包括:计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第一方面所示的基于二进制文件的用户数据记忆升级方法。
60、本公开实施例提供的技术方案与现有技术相比具有如下优点:
61、启动中间件,生成中间件的当前版本号对应的第一数据头信息,第一数据头信息包括:至少一个子模块的数据库版本以及至少一个索引信息;判断内存中是否存在二进制文件,当存在二进制文件,且二进制文件有效时,读取二进制文件的第二数据头信息,比较第一数据头信息和第二数据头信息中各子模块的数据库版本是否一致,若存在至少一个子模块的数据库版本不一致,则从数据库读取默认数据写入内存,并根据第二数据头信息中的至少一个索引信息,从二进制文件中读取用户数据写入内存,再将默认数据和用户数据写入二进制文件。通过重构二进制文件中存储的数据结构,比较运行代码生成的第一数据头信息与二进制文件中存储的第二数据头信息中各子模块的数据库版本,在数据库升级或降级时,从数据库中读取默认数据写入内存,根据第二数据头信息中的至少一个索引信息,从二进制文件中读取用户数据写入内存,再将默认数据和用户数据写回二进制文件,这样既保留了用户之前设置的原始数据,也在数据库升级时增加了新的默认数据项,从而实现在电视ota升级场景下的用户数据记忆功能。
1.一种电子设备,其特征在于,包括:
2.根据权利要求1所述的电子设备,其特征在于,所述存储器,还被配置为:
3.根据权利要求2所述的电子设备,其特征在于,所述存储器,还被配置为:
4.根据权利要求1所述的电子设备,其特征在于,所述控制器,还被配置为:
5.根据权利要求1所述的电子设备,其特征在于,所述存储器,还具体被配置为:
6.根据权利要求1所述的电子设备,其特征在于,所述存储器,具体被配置为:
7.根据权利要求1所述的电子设备,其特征在于,所述索引信息包括:每个数据表存储的起始位置、每个数据表存储的数据个数以及每个数据表存储的数据长度;
8.一种基于二进制文件的用户数据记忆升级方法,其特征在于,所述方法包括:
9.根据权利要求8所述的方法,其特征在于,所述判断内存中是否存在二进制文件,还包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求8-9任一项所述的基于二进制文件的用户数据记忆升级方法。
