CN111338688A - 数据长效缓存方法、装置、计算机系统及可读存储介质 - Google Patents

数据长效缓存方法、装置、计算机系统及可读存储介质 Download PDF

Info

Publication number
CN111338688A
CN111338688A CN202010127203.2A CN202010127203A CN111338688A CN 111338688 A CN111338688 A CN 111338688A CN 202010127203 A CN202010127203 A CN 202010127203A CN 111338688 A CN111338688 A CN 111338688A
Authority
CN
China
Prior art keywords
module
file
main code
new
code file
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.)
Granted
Application number
CN202010127203.2A
Other languages
English (en)
Other versions
CN111338688B (zh
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.)
Shenzhen Ping An Medical Health Technology Service Co Ltd
Original Assignee
Ping An Medical and Healthcare Management 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 Ping An Medical and Healthcare Management Co Ltd filed Critical Ping An Medical and Healthcare Management Co Ltd
Priority to CN202010127203.2A priority Critical patent/CN111338688B/zh
Publication of CN111338688A publication Critical patent/CN111338688A/zh
Application granted granted Critical
Publication of CN111338688B publication Critical patent/CN111338688B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

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

Abstract

本发明公开了提供的数据长效缓存方法、装置、计算机系统及可读存储介质,基于区块链技术,包括:提取源代码文件并分离源代码文件中的运行时模块获得主代码文件,分别打包主代码文件和运行时模块获得主代码数据包和运行时数据包;提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算生成模块ID;汇总各模块ID形成总模块ID,对总模块ID进行哈希运算生成文件ID;判断主代码文件中是否具有新增代码;若具有新增代码,则打包主代码文件获得新的主代码数据包,获取新增代码在新的主代码数据包中的文件路径,对文件路径进行哈希运算生成新增模块ID。本发明避免了缓存的数据因ID的改变而失效的情况,达到了缓存长时间有效的目的。

Description

数据长效缓存方法、装置、计算机系统及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据长效缓存方法、装置、计算机系统及可读存储介质。
背景技术
代码打包用于将源代码制成便于用户操作或安装的数据包,服务器打包源代码时还会按照源代码中各模块之间的依赖关系,生成用于标记所述模块的模块ID;当服务器在已有的源代码新增模块形成新代码,并对新代码打包生成新数据包时,需要按照新代码中各模块之间的依赖关系生成新模块ID。
数据包具有相互关联的静态数据和动态数据,所述静态数据和动态数据通过模块ID相互关联;用户端会获取服务器中数据包的静态数据(如:静态页面)并将其保存在缓存器中以便于用户端再次调用;用户端通过静态数据中的模块ID以从服务器的数据包中获取动态数据(如:动态页面数据)。
然而,由于模块ID是按照数据包中各模块之间依赖关系所获得的,因此一旦服务器在源代码中新增模块并打包时,新增的模块很容易造成源代码中各模块之间依赖关系的变化,进而导致服务器中各模块的ID随之发生变化。
因服务器中数据包的模块ID的频繁变化,将使用户端的缓存器中静态数据的模块ID与数据包中动态数据的模块ID无法对应,导致用户端无法通过静态数据的模块ID命中与其对应的动态数据,进而造成用户端缓存的静态数据失效。
发明内容
本发明的目的是提供一种数据长效缓存方法、装置、计算机系统及可读存储介质,用于解决现有技术存在的因服务器中数据包的模块ID的频繁变化,将使缓存器中静态数据的模块ID与数据包中动态数据的模块ID无法对应,导致用户端无法通过静态数据的模块ID命中与其对应的动态数据,进而造成用户端缓存的静态数据失效问题。
为实现上述目的,本发明提供一种数据长效缓存方法,包括:
提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
上述方案中,所述提取源代码并分离源代码文件中的运行时模块获得主代码文件包括:
从数据库中提取源代码文件,所述数据库是位于服务器中用于保存代码文件的模块;
提取所述源代码文件中的运行时模块使其脱离于所述源代码文件,将消除运行时模块的源代码文件设为主代码文件。
上述方案中,所述分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID包括:
设置第一哈希算法的第一输出长度;
通过所述第一哈希算法对模块的文件路径进行哈希运算获得第一摘要值,并按照所述第一输出长度提取所述第一摘要值中的数据获得试验ID;
将所有试验ID进行两两比对;若所有试验ID均互不相同,则将试验ID设为模块ID;若至少有两个试验ID相同,则消除所有试验ID并增加所述第一输出长度,以再次生成新的试验ID,直至所有试验ID均互不相同为止。
上述方案中,所述汇总所述各模块的模块ID形成总模块ID包括:
提取所述源代码文件中各模块的模块ID;
按照升序或降序首尾拼接所有模块ID获得总模块ID。
上述方案中,所述对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID包括:
设置第二哈希算法的第二输出长度;
通过所述第二哈希算法对所述总模块ID进行哈希运算,获得长度为所述第二输出长度的总试验ID;
将所述总试验ID与所有模块ID进行比对;若总试验ID与所有模块ID均不一致,则将所述总试验ID设为文件ID;若总试验ID与某一模块ID一致,则消除总试验ID并增加所述第二输出长度,以再次生成新的总试验ID,直至所述总试验ID与所有模块ID均不一致为止。
上述方案中,所述定期判断所述主代码文件中是否具有新增代码包括:
按照预设的周期值循环获取主代码文件并生成识别触发信号;
根据所述识别触发信号,对比本次循环获取的主代码文件与上一循环获取的主代码文件获得差别信息;
若所述差别信息为非空,则判定所述主代码文件具有新增代码,其中,所述差别信息的内容为所述新增代码;若所述差别信息为空,则判定所述主代码文件不具有新增代码。
上述方案中,所述对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID包括:
设置第三哈希算法的第三输出长度;
通过所述第三哈希算法对新增代码的文件路径进行哈希运算获得第三摘要值,并按照所述第三输出长度提取所述第三摘要值中的数据获得新增试验ID;
将所述新增试验ID依次与文件ID和模块ID进行比对;若所述新增试验ID与所述文件ID及所有模块ID均不一致,则将所述新增试验ID设为新增模块ID;若所述新增试验ID与文件ID或某一模块ID一致,则消除新增试验ID并增加所述第三输出长度,以再次生成新的新增试验ID,直至所述新增试验ID与所述文件ID及所有模块ID均不一致为止。
为实现上述目的,本发明还提供一种数据长效缓存装置,包括:
分离打包模块,用于提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
ID生成模块,用于提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
新增管理模块,用于定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
为实现上述目的,本发明还提供一种计算机系统,其包括多个计算机设备,各计算机设备包括存储器.处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述多个计算机设备的处理器执行所述计算机程序时共同实现上述数据长效缓存方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其包括多个存储介质,各存储介质上存储有计算机程序,所述多个存储介质存储的所述计算机程序被处理器执行时共同实现上述数据长效缓存方法的步骤。
本发明提供的数据长效缓存方法、装置、计算机系统及可读存储介质,通过使运行时模块脱离源代码文件,获得运行时模块和主代码文件,避免了因运行时模块中描述模块依赖关系的代码的变化,造成导致文件ID发生变化的情况发生;通过哈希算法获得模块ID和文件ID,使模块ID和文件ID不会因源代码文件中的主代码文件添加新增模块而发生改变,避免了现有技术中因服务器中模块ID和文件ID的改变,导致用户端的缓存器中缓存的数据失效或无法命中的情况发生,达到了服务器缓存器的数据长效缓存的目的,提高了服务器的运行效率和运行稳定性;通过哈希算法在保持模块ID和文件ID不变的前提下获得新增模块ID,以满足在源代码文件中添加新增代码来丰富其功能的技术效果,实现了在模块ID和文件ID所对应的缓存数据长效缓存的前提下的可扩展性,而扩展的新增代码仍会获得稳定不变的新增模块ID,以保证其所对应的缓存数据稳定有效;由于用户端的缓存器中缓存的数据长期有效,因此无需频繁通过网络访问服务器重新获取数据包及其模块(如:网络页面),进而减少了网络带宽消耗,降低了服务器压力,减少了网络延迟,加快了页面打开速度或模块调用速度。
附图说明
图1为本发明数据长效缓存方法实施例一的流程图;
图2为本发明数据长效缓存方法实施例一中数据长效缓存装置运行环境图;
图3为本发明数据长效缓存方法实施例一的S1中获得主代码文件的流程图;
图4为本发明数据长效缓存方法实施例一的S2中生成模块ID的流程图;
图5为本发明数据长效缓存方法实施例一的S2中形成总模块ID的流程图;
图6为本发明数据长效缓存方法实施例一的S2中生成文件ID的流程图;
图7为本发明数据长效缓存方法实施例一的S3中判断主代码文件中是否具有新增代码的流程图;
图8为本发明数据长效缓存方法实施例一的S3中生成新增模块ID的流程图;
图9为本发明数据长效缓存装置实施例二的程序模块示意图;
图10为本发明计算机系统实施例三中计算机设备的硬件结构示意图。
附图标记:
1、数据长效缓存装置 2、服务器 3、网络 4、用户端
5、计算机设备 11、分离打包模块 12、ID生成模块
13、新增管理模块 51、存储器 52、处理器
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的一种数据长效缓存方法、装置、计算机系统及可读存储介质,适用于计算机领域,为提供一种基于分离打包模块、ID生成模块、新增管理模块的数据长效缓存方法。本发明通过提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块获得主代码数据包和运行时数据包;提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
实施例一
请参阅图1,本实施例的一种数据长效缓存方法,包括:
S1:提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
S2:提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
S3:定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
请参阅图2,本实施例的数据长效缓存方法运行在服务器2中,同时所述区块链及其网络节点运行在服务器2中,服务器2通过网络3与多个用户端4连接。
服务器2通过提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;通过使运行时模块脱离源代码文件,获得运行时模块和主代码文件,由于运行时模块已与主代码文件分离,因此避免了因运行时模块中描述模块依赖关系的代码的变化,造成导致文件ID发生变化的情况发生;并且,通过将主代码数据包和运行时数据包相互关联,使得主代码数据包中的模块能够正常调用运行时数据包中的依赖关系,保证了主代码数据包能够正常运行;其中,可通过在主代码数据包写入运行时数据包的地址,实现主代码数据宝与运行时数据包的关联,使主代码数据包中各模块通过该地址调用运行时数据包。
服务器2提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算生成用于对所述主代码文件中各模块进行标识的模块ID;由于模块ID是基于其文件路径通过哈希运算所生成的,因此,无论主代码文件是否会新增或减少代码,或模块的文件路径是否发生变化,该模块ID将永远指向与其对应的模块;因此,当主代码文件打包成主代码数据包时,用户端4可通过缓存的模块ID,准确的获取该主代码数据包中与模块ID对应的模块。
服务器2汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于标识主代码数据包的文件ID;由于文件ID是基于模块ID所生成的,又由于模块ID是不变的,故文件ID也不会发生变化;因此,无论主代码文件如何修改其ID是唯一的,因此用户端4可通过缓存的文件ID准确的获取由所述主代码文件打包形成的主代码数据包。
当服务器2判断出主代码文件具有新增代码时,对具有新增代码的主代码文件进行打包并获得新的主代码数据包,并根据新增代码在新的主代码数据包的文件路径,获得新增模块ID;由于主代码文件的文件ID以及主代码文件中各模块的模块ID是不变的,因此用户端4可通过缓存的文件ID以及模块ID,准确的获取由具有新增代码的主代码文件打包形成的主代码数据包,以及该主代码数据包中与模块ID对应的模块;同时,用户端4还可通过缓存的新增模块ID从主代码数据包中,准确的获取相应的新增代码。
综上,本申请通过使模块ID和文件ID不会因源代码文件中的主代码文件添加新增模块而发生改变,避免了现有技术中因服务器中模块ID和文件ID的改变,导致用户端的缓存器中缓存的数据失效或无法命中的情况发生,达到了服务器缓存器的数据长效缓存的目的,提高了服务器的运行效率和运行稳定性;通过哈希算法在保持模块ID和文件ID不变的前提下获得新增模块ID,以满足在源代码文件中添加新增代码来丰富其功能的技术效果,实现了在模块ID和文件ID所对应的缓存数据长效缓存的前提下的可扩展性,而扩展的新增代码仍会获得稳定不变的新增ID,以保证其所对应的缓存数据稳定有效;由于用户端的缓存器中缓存的数据长期有效,因此无需频繁通过网络访问服务器重新获取数据包及其模块(如:网络页面),进而减少了网络带宽消耗,降低了服务器压力,减少了网络延迟,加快了页面打开速度或模块调用速度。
服务器2可以通过一个或多个网络3提供服务,网络3可以包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或等等。网络3可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络3可以包括无线链路,例如蜂窝链路,卫星链路,Wi-Fi链路和/或类似物。用户端4可以包括各种用户端设备,例如,手机、台式计算机、笔记本计算机和/或等等。
服务器2可以由单个或多个计算机设备(如,服务器)组成。该单个或多个计算设备可以包括虚拟化计算实例。虚拟化计算实例可以包括虚拟机,诸如计算机系统的仿真,操作系统,服务器等。计算设备可以基于定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的虚拟映像和/或其他数据来加载虚拟机。随着对不同类型的处理服务的需求改变,可以在一个或多个计算设备上加载和/或终止不同的虚拟机。可以实现管理程序以管理同一计算设备上的不同虚拟机的使用。
需要说明的是,本申请中采用的哈希算法是一种将任意长度的二进制值映射为较短的固定长度的二进制值的计算机算法,其中,这个小的二进制值称为哈希值。本领域技术人员可通过哈希算法将任何数计算成固定长度的二进制值,而本申请所解决的技术问题是,如何利用哈希算法计算结果唯一的特性,获得固定不变的模块ID、文件ID和新增模块ID,并使其保证用户端的缓存长期有效的技术问题。因此哈希算法的原理在本申请中不做赘述。
在一个优选的实施例中,所述S1中提取源代码并分离源代码文件中的运行时模块获得主代码文件包括:
S101:从数据库中提取源代码文件,所述数据库是位于服务器中用于保存代码文件的模块。
本步骤中,数据库设置在服务器中,用于储存由用户端发送的源代码文件。
S102:提取所述源代码文件中的运行时模块使其脱离于所述源代码文件,将消除运行时模块的源代码文件设为主代码文件。
本步骤中,运行时模块是用于保存源代码文件中各模块之间依赖关系信息的代码程序,主代码文件是源代码文件除运行时模块外其他模块的代码程序集合;当源代码文件中具有新增模块时,运行时模块很容易会因为各模块之间依赖关系发生变化而发生改变,因此,通过分离运行时模块和主代码文件,以避免主代码文件所对应的文件ID因运行时模块的改变而发生变化。
在示例性的实施例中,对主代码文件和运行时模块打包,是将主代码文件和运行时模块制成便于用户操作或安装的主代码数据包和运行时数据包。
因此,主代码文件中各模块无需按照运行时模块中描述的各模块之间依赖关系,生成各模块的模块ID,进而避免了因新增模块的加入导致各模块之间依赖关系的变化,导致各模块的模块ID发生变化的情况发生。
在一个优选的实施例中,所述S2中分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID包括:
S201:设置第一哈希算法的第一输出长度。
本步骤中,所述第一输出长度是第一哈希算法计算文件路径获得的哈希值的长度;所述哈希算法是将任意长度的二进制值映射为固定长度的较小二进制值,其中,所述二进制值为哈希值。
需要说明的是,哈希算法是通过将单向数学函数应用到任意数量的数据所得到的固定大小的结果。因此,如果输入数据中有变化,则哈希也会发生变化。
S202:通过所述第一哈希算法对模块的文件路径进行哈希运算获得第一摘要值,并按照所述第一输出长度提取所述第一摘要值中的数据获得试验ID。
本步骤中,第一哈希算法对各模块的文件路径进行哈希运算获得各模块的第一摘要值,按照第一输出长度提取各模块第一摘要值中的数据获得各模块的试验ID。
具体地,所述试验ID为位于第一摘要值前端且长度为第一输出长度的数据,或位于第一摘要值中端且长度为第一输出长度的数据,或位于第一摘要值后端且长度为第一输出长度的数据。
例如:第一输出长度为4,第一摘要值为12345678;因此,若将位于第一摘要值前端且长度为第一输出长度的数据作为试验ID,则该试验ID为1234;若将位于第一摘要值中端且长度为第一输出长度的数据作为试验ID,则该试验ID为3456;若将位于第一摘要值后端且长度为第一输出长度的数据作为试验ID,则该试验ID为5678。
需要说明的是,哈希算法是通过将单向数学函数应用到任意数量的数据所得到的固定大小的结果。因此,如果输入数据中有变化,则哈希也会发生变化,进而只要模块的文件路径不变,所述第一摘要值的结果将是唯一的。
S203:将所有试验ID进行两两比对;若所有试验ID均互不相同,则将试验ID设为模块ID;若至少有两个试验ID相同,则消除所有试验ID并增加所述第一输出长度,并按照S202所述的步骤再次生成新的试验ID,直至所有试验ID均互不相同为止。
因此,这种方式不仅避免了模块ID之间产生哈希冲突,进而保证了模块ID的可用性,还在避免哈希冲突的前提下极大的降低了模块ID的长度,有助于降低缓冲器的储存负担。
在一个优选的实施例中,所述S2中汇总所述各模块的模块ID形成总模块ID包括:
S211:提取所述源代码文件中各模块的模块ID。
S212:按照升序或降序首尾拼接所有模块ID获得总模块ID。
其中,所述升序和降序分别是按照模块ID的大小进行排列的,所述模块ID的大小是按照预设的判断规则进行判断的,例如:模块ID中的数字小于字母,模块ID中的字母小判断规则为数字小于字母,字母小于符号。
在一个优选的实施例中,所述S2中对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID包括:
S221:设置第二哈希算法的第二输出长度。
本步骤中,所述第二输出长度是第二哈希算法计算文件路径获得的哈希值的长度;所述哈希算法是将任意长度的二进制值映射为固定长度的较小二进制值,其中,所述二进制值为哈希值。
S222:通过所述第二哈希算法对所述总模块ID进行哈希运算,获得长度为所述第二输出长度的总试验ID。
本步骤中,第二哈希算法对总模块ID进行哈希运算获得第二摘要值,按照第二输出长度提取各模块第二摘要值中的数据获得各模块的总试验ID。
具体地,所述总试验ID为位于第二摘要值前端且长度为第二输出长度的数据,或位于第二摘要值中端且长度为第二输出长度的数据,或位于第二摘要值后端且长度为第二输出长度的数据。
例如:第二输出长度为4,第二摘要值为12345678;因此,若将位于第二摘要值前端且长度为第二输出长度的数据作为总试验ID,则该总试验ID为1234;若将位于第二摘要值中端且长度为第二输出长度的数据作为总试验ID,则该总试验ID为3456;若将位于第二摘要值后端且长度为第二输出长度的数据作为总试验ID,则该总试验ID为5678。
需要说明的是,哈希算法是通过将单向数学函数应用到任意数量的数据所得到的固定大小的结果。因此,如果输入数据中有变化,则哈希也会发生变化,因此,只要总模块ID不变,所述第二输出长度的结果将是唯一的。
S223:将所述总试验ID与所有模块ID进行比对;若总试验ID与所有模块ID均不一致,则将所述总试验ID设为文件ID;若总试验ID与某一模块ID一致,则消除总试验ID并增加所述第二输出长度,按照S222所述的步骤再次生成新的总试验ID,直至所述总试验ID与所有模块ID均不一致为止。
因此,这种方式不仅避免了文件ID与模块ID之间产生哈希冲突,保证了文件ID的可用性,还在避免哈希冲突的前提下极大的降低了文件ID的长度,有助于降低缓冲器的储存负担。
在一个优选的实施例中,所述S3中定期判断所述主代码文件中是否具有新增代码包括:
S301:按照预设的周期值循环获取主代码文件并生成识别触发信号。
本步骤中,所述周期值是获取主代码文件的时间间隔,其可根据使用者需要设置;因此按照周期值循环提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件。
S302:根据所述识别触发信号,对比本次循环获取的主代码文件与上一循环获取的主代码文件获得差别信息。
本步骤中,当接收到识别触发信号时,将生成该识别触发信号时所获取的主代码文件设为本次循环获取的主代码文件,并将其与上一循环获得的主代码文件进行对比,获得记载有两个循环主代码文件之间差异内容的差别信息。
S303:若所述差别信息为非空,则判定所述主代码文件具有新增代码,其中,所述差别信息的内容为所述新增代码;若所述差别信息为空,则判定所述主代码文件不具有新增代码。
通过判断所述主代码文件中是否具有新增代码的方式,实现定期识别主代码文件中新增代码,保证主代码文件的模块代码不会出现遗漏,并且为生成用于管理该新增代码的新增模块ID提供了前提。
在一个优选的实施例中,所述S3中对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID包括:
S311:设置第三哈希算法的第三输出长度。
本步骤中,所述第三输出长度是第三哈希算法计算文件路径获得的哈希值的长度;所述哈希算法是将任意长度的二进制值映射为固定长度的较小二进制值,其中,所述二进制值为哈希值。
S312:通过所述第三哈希算法对新增代码的文件路径进行哈希运算获得第三摘要值,并按照所述第三输出长度提取所述第三摘要值中的数据获得新增试验ID。
本步骤中,第三哈希算法对新增代码在新增代码数据包中的文件路径进行哈希运算,获得各模块的第三摘要值,按照第三输出长度提取各模块第三摘要值中的数据获得新增试验ID。
具体地,所述新增试验ID为位于第三摘要值前端且长度为第三输出长度的数据,或位于第三摘要值中端且长度为第三输出长度的数据,或位于第三摘要值后端且长度为第三输出长度的数据。
需要说明的是,哈希算法是通过将单向数学函数应用到任意数量的数据所得到的固定大小的结果。因此,如果输入数据中有变化,则哈希也会发生变化,进而只要新增代码的文件路径不变,所述第三摘要值的结果将是唯一的。
S313:将所述新增试验ID依次与文件ID和模块ID进行比对;若所述新增试验ID与所述文件ID及所有模块ID均不一致,则将所述新增试验ID设为新增模块ID;若所述新增试验ID与文件ID或某一模块ID一致,则消除新增试验ID并增加所述第三输出长度,并按照所述S312所述的步骤再次生成新的新增试验ID,直至所述新增试验ID与所述文件ID及所有模块ID均不一致为止。
因此,这种方式不仅避免了新增模块ID与文件ID和模块ID之间产生哈希冲突,保证了新增模块ID的可用性,还在避免哈希冲突的前提下极大的降低了新增模块ID的长度,有助于降低缓冲器的储存负担。
实施例二
请参阅图3,本实施例的一种数据长效缓存装置1,包括:
分离打包模块11,用于提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
ID生成模块12,用于提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
新增管理模块13,用于定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
本技术方案基于区块链中安全机制领域的交易验证技术,利用该技术中的哈希算法计算结果唯一的特性,获得固定不变的模块ID、文件ID和新增模块ID,以解决如何避免用户端的缓存失效的技术问题。
实施例三:
为实现上述目的,本发明还提供一种计算机系统,该计算机系统包括多个计算机设备5,实施例二的数据长效缓存装置1的组成部分可分散于不同的计算机设备中,计算机设备可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图4所示。需要指出的是,图4仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例一的数据长效缓存装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行数据长效缓存装置,以实现实施例一的数据长效缓存方法。
实施例四:
为实现上述目的,本发明还提供一种计算机可读存储系统,其包括多个存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器52执行时实现相应功能。本实施例的计算机可读存储介质用于存储数据长效缓存装置,被处理器52执行时实现实施例一的数据长效缓存方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种数据长效缓存方法,其特征在于,包括:
提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
2.根据权利要求1所述的数据长效缓存方法,其特征在于,所述提取源代码并分离源代码文件中的运行时模块获得主代码文件包括:
从数据库中提取源代码文件,所述数据库是位于服务器中用于保存代码文件的模块;
提取所述源代码文件中的运行时模块使其脱离于所述源代码文件,将消除运行时模块的源代码文件设为主代码文件。
3.根据权利要求1所述的数据长效缓存方法,其特征在于,所述分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID包括:
设置第一哈希算法的第一输出长度;
通过所述第一哈希算法对模块的文件路径进行哈希运算获得第一摘要值,并按照所述第一输出长度提取所述第一摘要值中的数据获得试验ID;
将所有试验ID进行两两比对;若所有试验ID均互不相同,则将试验ID设为模块ID;若至少有两个试验ID相同,则消除所有试验ID并增加所述第一输出长度,以再次生成新的试验ID,直至所有试验ID均互不相同为止。
4.根据权利要求1所述的数据长效缓存方法,其特征在于,所述汇总所述各模块的模块ID形成总模块ID包括:
提取所述源代码文件中各模块的模块ID;
按照升序或降序首尾拼接所有模块ID获得总模块ID。
5.根据权利要求1所述的数据长效缓存方法,其特征在于,所述对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID包括:
设置第二哈希算法的第二输出长度;
通过所述第二哈希算法对所述总模块ID进行哈希运算,获得长度为所述第二输出长度的总试验ID;
将所述总试验ID与所有模块ID进行比对;若总试验ID与所有模块ID均不一致,则将所述总试验ID设为文件ID;若总试验ID与某一模块ID一致,则消除总试验ID并增加所述第二输出长度,以再次生成新的总试验ID,直至所述总试验ID与所有模块ID均不一致为止。
6.根据权利要求1所述的数据长效缓存方法,其特征在于,所述定期判断所述主代码文件中是否具有新增代码包括:
按照预设的周期值循环获取主代码文件并生成识别触发信号;
根据所述识别触发信号,对比本次循环获取的主代码文件与上一循环获取的主代码文件获得差别信息;
若所述差别信息为非空,则判定所述主代码文件具有新增代码,其中,所述差别信息的内容为所述新增代码;若所述差别信息为空,则判定所述主代码文件不具有新增代码。
7.根据权利要求1所述的数据长效缓存方法,其特征在于,所述对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID包括:
设置第三哈希算法的第三输出长度;
通过所述第三哈希算法对新增代码的文件路径进行哈希运算获得第三摘要值,并按照所述第三输出长度提取所述第三摘要值中的数据获得新增试验ID;
将所述新增试验ID依次与文件ID和模块ID进行比对;若所述新增试验ID与所述文件ID及所有模块ID均不一致,则将所述新增试验ID设为新增模块ID;若所述新增试验ID与文件ID或某一模块ID一致,则消除新增试验ID并增加所述第三输出长度,以再次生成新的新增试验ID,直至所述新增试验ID与所述文件ID及所有模块ID均不一致为止。
8.一种数据长效缓存装置,其特征在于,包括:
分离打包模块,用于提取源代码文件并分离所述源代码文件中的运行时模块获得主代码文件,分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;
ID生成模块,用于提取主代码数据包中各模块的文件路径,分别对各模块的文件路径进行哈希运算,生成用于对所述主代码文件中各模块进行标识的模块ID;汇总所述各模块的模块ID形成总模块ID,对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID;
新增管理模块,用于定期判断所述主代码文件中是否具有新增代码;若具有新增代码,则打包所述主代码文件获得新的主代码数据包,获取所述新增代码在所述新的主代码数据包中的文件路径,对所述文件路径进行哈希运算生成用于对主代码文件中新增代码进行标识的新增模块ID。
9.一种计算机系统,其包括多个计算机设备,各计算机设备包括存储器.处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述多个计算机设备的处理器执行所述计算机程序时共同实现权利要求1至7任一项所述数据长效缓存方法的步骤。
10.一种计算机可读存储介质,其包括多个存储介质,各存储介质上存储有计算机程序,其特征在于,所述多个存储介质存储的所述计算机程序被处理器执行时共同实现权利要求1至7任一项所述数据长效缓存方法的步骤。
CN202010127203.2A 2020-02-28 2020-02-28 数据长效缓存方法、装置、计算机系统及可读存储介质 Active CN111338688B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010127203.2A CN111338688B (zh) 2020-02-28 2020-02-28 数据长效缓存方法、装置、计算机系统及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010127203.2A CN111338688B (zh) 2020-02-28 2020-02-28 数据长效缓存方法、装置、计算机系统及可读存储介质

Publications (2)

Publication Number Publication Date
CN111338688A true CN111338688A (zh) 2020-06-26
CN111338688B CN111338688B (zh) 2023-12-08

Family

ID=71183898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010127203.2A Active CN111338688B (zh) 2020-02-28 2020-02-28 数据长效缓存方法、装置、计算机系统及可读存储介质

Country Status (1)

Country Link
CN (1) CN111338688B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556270A (zh) * 2021-07-20 2021-10-26 苏州苏试试验集团股份有限公司 Can网络
CN113568620A (zh) * 2021-06-16 2021-10-29 杭州华橙软件技术有限公司 一种代码文件处理方法、装置、设备及介质
CN117170889A (zh) * 2023-11-01 2023-12-05 沐曦集成电路(上海)有限公司 异构非阻塞数据包同步处理系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254746A1 (en) * 2012-03-26 2013-09-26 Software Ag Systems and/or methods for executing appropriate tests based on code modifications using live, distributed, real-time cache and feedback loop
CN106487937A (zh) * 2016-12-30 2017-03-08 郑州云海信息技术有限公司 一种云存储系统文件去重方法及系统
CN107832062A (zh) * 2017-09-08 2018-03-23 上海壹账通金融科技有限公司 一种程序更新方法及终端设备
CN107992557A (zh) * 2017-11-28 2018-05-04 平安养老保险股份有限公司 静态资源更新方法、装置、存储介质和计算机设备
US20190129639A1 (en) * 2017-10-31 2019-05-02 EMC IP Holding Company LLC Optimizing inline deduplication during copies
CN110059277A (zh) * 2019-03-12 2019-07-26 平安普惠企业管理有限公司 首页加载优化方法、服务器及计算机可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130254746A1 (en) * 2012-03-26 2013-09-26 Software Ag Systems and/or methods for executing appropriate tests based on code modifications using live, distributed, real-time cache and feedback loop
CN106487937A (zh) * 2016-12-30 2017-03-08 郑州云海信息技术有限公司 一种云存储系统文件去重方法及系统
CN107832062A (zh) * 2017-09-08 2018-03-23 上海壹账通金融科技有限公司 一种程序更新方法及终端设备
US20190129639A1 (en) * 2017-10-31 2019-05-02 EMC IP Holding Company LLC Optimizing inline deduplication during copies
CN107992557A (zh) * 2017-11-28 2018-05-04 平安养老保险股份有限公司 静态资源更新方法、装置、存储介质和计算机设备
CN110059277A (zh) * 2019-03-12 2019-07-26 平安普惠企业管理有限公司 首页加载优化方法、服务器及计算机可读存储介质

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
前端大全: "浅谈Webpack 持久化缓存实践", 《HTTPS://WWW.JB51.NET/ARTICLE/136937.HTM》 *
前端大全: "浅谈Webpack 持久化缓存实践", 《HTTPS://WWW.JB51.NET/ARTICLE/136937.HTM》, 22 March 2018 (2018-03-22), pages 1 - 10 *
加班不秃顶: "分布式缓存中的一致性哈希算法,这篇文章给讲透了!", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/mifffy_java/article/details/92760535> *
孙佳丽: "Web应用中的客户端缓存技术研究", 《中国优秀硕士学位论文全文数据库》 *
孙佳丽: "Web应用中的客户端缓存技术研究", 《中国优秀硕士学位论文全文数据库》, no. 2017, 15 January 2017 (2017-01-15), pages 139 - 52 *
曾建强: "基于持久性内存的高性能用户态文件系统研究与实现", 《中国优秀硕士学位论文全文数据库》, no. 2020, pages 137 - 130 *
梅高永: "Web缓存技术的研究", 《中国优秀硕士学位论文全文数据库》, no. 2012, pages 137 - 62 *
程序员小圈圈: "Hash算法及常见碰撞解决方法", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/79164141》 *
程序员小圈圈: "Hash算法及常见碰撞解决方法", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/79164141》, 22 August 2019 (2019-08-22), pages 1 - 5 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568620A (zh) * 2021-06-16 2021-10-29 杭州华橙软件技术有限公司 一种代码文件处理方法、装置、设备及介质
CN113568620B (zh) * 2021-06-16 2023-08-22 杭州华橙软件技术有限公司 一种代码文件处理方法、装置、设备及介质
CN113556270A (zh) * 2021-07-20 2021-10-26 苏州苏试试验集团股份有限公司 Can网络
CN117170889A (zh) * 2023-11-01 2023-12-05 沐曦集成电路(上海)有限公司 异构非阻塞数据包同步处理系统
CN117170889B (zh) * 2023-11-01 2024-01-23 沐曦集成电路(上海)有限公司 异构非阻塞数据包同步处理系统

Also Published As

Publication number Publication date
CN111338688B (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
CN111338688B (zh) 数据长效缓存方法、装置、计算机系统及可读存储介质
US10073916B2 (en) Method and system for facilitating terminal identifiers
CN108462760B (zh) 电子装置、集群访问域名自动生成方法及存储介质
EP3057272B1 (en) Technologies for concurrency of cuckoo hashing flow lookup
EP3029912A1 (en) Remote accessing method for device, thin client, and virtual machine
WO2016115831A1 (zh) 一种虚拟机容错的方法、装置及系统
CN108667840B (zh) 注入漏洞检测方法及装置
CN114327803A (zh) 区块链访问机器学习模型的方法、装置、设备和介质
CN113312032B (zh) 前端项目资源更新方法、装置、电子设备及存储介质
CN113411404A (zh) 一种文件下载方法、装置、服务器及存储介质
CN112702228A (zh) 服务限流响应方法、装置、电子设备及可读存储介质
CN116743619B (zh) 网络服务的测试方法、装置、设备及存储介质
WO2021174882A1 (zh) 数据分片校验方法、装置、计算机设备及可读存储介质
CN108241616B (zh) 消息推送方法和装置
CN112148387A (zh) 预加载反馈信息的方法、装置、计算机设备及存储介质
CN112883369A (zh) 一种可信虚拟化系统
CN111277626A (zh) 服务器升级方法、装置、电子设备及介质
CN112350856B (zh) 分布式服务签退方法及设备
CN113132241B (zh) Acl模板动态配置方法及装置
CN115080147A (zh) 基于人工智能的h5页面加载方法、装置、设备及介质
CN114840238A (zh) 软件升级方法、装置、电子设备及计算机可读存储介质
CN113420050A (zh) 数据查询管理方法、装置、计算机设备及可读存储介质
CN111984202A (zh) 一种数据处理方法、装置、电子设备和存储介质
US10798464B1 (en) Streaming delivery of client-executable code
CN108509478B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220531

Address after: 518000 China Aviation Center 2901, No. 1018, Huafu Road, Huahang community, Huaqiang North Street, Futian District, Shenzhen, Guangdong Province

Applicant after: Shenzhen Ping An medical and Health Technology Service Co.,Ltd.

Address before: Room 12G, Area H, 666 Beijing East Road, Huangpu District, Shanghai 200001

Applicant before: PING AN MEDICAL AND HEALTHCARE MANAGEMENT Co.,Ltd.

GR01 Patent grant
GR01 Patent grant