CN111338688B - 数据长效缓存方法、装置、计算机系统及可读存储介质 - Google Patents
数据长效缓存方法、装置、计算机系统及可读存储介质 Download PDFInfo
- Publication number
- CN111338688B CN111338688B CN202010127203.2A CN202010127203A CN111338688B CN 111338688 B CN111338688 B CN 111338688B CN 202010127203 A CN202010127203 A CN 202010127203A CN 111338688 B CN111338688 B CN 111338688B
- Authority
- CN
- China
- Prior art keywords
- module
- file
- test
- main code
- new
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004806 packaging method and process Methods 0.000 claims abstract description 17
- 238000012360 testing method Methods 0.000 claims description 110
- 238000004422 calculation algorithm Methods 0.000 claims description 47
- 238000004590 computer program Methods 0.000 claims description 9
- 238000000926 separation method Methods 0.000 claims description 5
- 230000001174 ascending effect Effects 0.000 claims description 4
- 230000007774 longterm Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 abstract description 21
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000003068 static effect Effects 0.000 description 14
- 239000000284 extract Substances 0.000 description 4
- 238000007620 mathematical function Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version 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 (6)
1.一种数据长效缓存方法,其特征在于,包括:
从数据库中提取源代码文件,所述数据库是位于服务器中用于保存代码文件的模块;提取所述源代码文件中的运行时模块使其脱离于所述源代码文件,将消除运行时模块的源代码文件设为主代码文件;分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;其中,运行时模块是用于保存源代码文件中各模块之间依赖关系信息的代码程序,主代码文件是源代码文件除运行时模块外其他模块的代码程序集合;
提取主代码数据包中各模块的文件路径,设置第一哈希算法的第一输出长度;通过所述第一哈希算法对模块的文件路径进行哈希运算获得第一摘要值,并按照所述第一输出长度提取所述第一摘要值中的数据获得试验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均不一致为止。
2.根据权利要求1所述的数据长效缓存方法,其特征在于,所述汇总所述各模块的模块ID形成总模块ID包括:
提取所述源代码文件中各模块的模块ID;
按照升序或降序首尾拼接所有模块ID获得总模块ID。
3.根据权利要求1所述的数据长效缓存方法,其特征在于,所述对所述总模块ID进行哈希运算生成用于对主代码文件进行标识的文件ID包括:
设置第二哈希算法的第二输出长度;
通过所述第二哈希算法对所述总模块ID进行哈希运算,获得长度为所述第二输出长度的总试验ID;
将所述总试验ID与所有模块ID进行比对;若总试验ID与所有模块ID均不一致,则将所述总试验ID设为文件ID;若总试验ID与某一模块ID一致,则消除总试验ID并增加所述第二输出长度,以再次生成新的总试验ID,直至所述总试验ID与所有模块ID均不一致为止。
4.一种数据长效缓存装置,其特征在于,包括:
分离打包模块,用于从数据库中提取源代码文件,所述数据库是位于服务器中用于保存代码文件的模块;提取所述源代码文件中的运行时模块使其脱离于所述源代码文件,将消除运行时模块的源代码文件设为主代码文件;分别打包所述主代码文件和运行时模块,获得相互关联的主代码数据包和运行时数据包;其中,运行时模块是用于保存源代码文件中各模块之间依赖关系信息的代码程序,主代码文件是源代码文件除运行时模块外其他模块的代码程序集合;
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均不一致为止。
5.一种计算机系统,其包括多个计算机设备,各计算机设备包括存储器.处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述多个计算机设备的处理器执行所述计算机程序时共同实现权利要求1至3任一项所述数据长效缓存方法的步骤。
6.一种计算机可读存储介质,其包括多个存储介质,各存储介质上存储有计算机程序,其特征在于,所述多个存储介质存储的所述计算机程序被处理器执行时共同实现权利要求1至3任一项所述数据长效缓存方法的步骤。
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 CN111338688A (zh) | 2020-06-26 |
CN111338688B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568620B (zh) * | 2021-06-16 | 2023-08-22 | 杭州华橙软件技术有限公司 | 一种代码文件处理方法、装置、设备及介质 |
CN113556270B (zh) * | 2021-07-20 | 2023-03-14 | 苏州苏试试验集团股份有限公司 | Can网络 |
CN117170889B (zh) * | 2023-11-01 | 2024-01-23 | 沐曦集成电路(上海)有限公司 | 异构非阻塞数据包同步处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106487937A (zh) * | 2016-12-30 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种云存储系统文件去重方法及系统 |
CN107832062A (zh) * | 2017-09-08 | 2018-03-23 | 上海壹账通金融科技有限公司 | 一种程序更新方法及终端设备 |
CN107992557A (zh) * | 2017-11-28 | 2018-05-04 | 平安养老保险股份有限公司 | 静态资源更新方法、装置、存储介质和计算机设备 |
CN110059277A (zh) * | 2019-03-12 | 2019-07-26 | 平安普惠企业管理有限公司 | 首页加载优化方法、服务器及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032369B2 (en) * | 2012-03-26 | 2015-05-12 | Software Ag | Systems and/or methods for executing appropriate tests based on code modifications using live, distributed, real-time cache and feedback loop |
US10824359B2 (en) * | 2017-10-31 | 2020-11-03 | EMC IP Holding Company LLC | Optimizing inline deduplication during copies |
-
2020
- 2020-02-28 CN CN202010127203.2A patent/CN111338688B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106487937A (zh) * | 2016-12-30 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种云存储系统文件去重方法及系统 |
CN107832062A (zh) * | 2017-09-08 | 2018-03-23 | 上海壹账通金融科技有限公司 | 一种程序更新方法及终端设备 |
CN107992557A (zh) * | 2017-11-28 | 2018-05-04 | 平安养老保险股份有限公司 | 静态资源更新方法、装置、存储介质和计算机设备 |
CN110059277A (zh) * | 2019-03-12 | 2019-07-26 | 平安普惠企业管理有限公司 | 首页加载优化方法、服务器及计算机可读存储介质 |
Non-Patent Citations (6)
Title |
---|
Hash算法及常见碰撞解决方法;程序员小圈圈;《https://zhuanlan.zhihu.com/p/79164141》;20190822;1-5 * |
Web应用中的客户端缓存技术研究;孙佳丽;《中国优秀硕士学位论文全文数据库》;20170115(第2017年01期);I139-52 * |
Web缓存技术的研究;梅高永;《中国优秀硕士学位论文全文数据库》(第2012年06期);I137-62 * |
前端大全.浅谈Webpack 持久化缓存实践.《https://www.jb51.net/article/136937.htm》.2018, * |
基于持久性内存的高性能用户态文件系统研究与实现;曾建强;《中国优秀硕士学位论文全文数据库》(第2020年02期);I137-130 * |
浅谈Webpack 持久化缓存实践;前端大全;《https://www.jb51.net/article/136937.htm》;20180322;1-10 * |
Also Published As
Publication number | Publication date |
---|---|
CN111338688A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338688B (zh) | 数据长效缓存方法、装置、计算机系统及可读存储介质 | |
US11093148B1 (en) | Accelerated volumes | |
CN112328435B (zh) | 目标数据备份和恢复的方法、装置、设备及存储介质 | |
EP3057272B1 (en) | Technologies for concurrency of cuckoo hashing flow lookup | |
CN111124277B (zh) | 一种深度学习数据集缓存方法、系统、终端及存储介质 | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
CN110995776B (zh) | 区块链的区块分发方法、装置、计算机设备和存储介质 | |
CN103942292A (zh) | 虚拟机镜像文件处理方法、装置及系统 | |
US20170153909A1 (en) | Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine | |
CN113411404A (zh) | 一种文件下载方法、装置、服务器及存储介质 | |
CN112148387A (zh) | 预加载反馈信息的方法、装置、计算机设备及存储介质 | |
CN113536168B (zh) | 组件处理方法及设备 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN116743619B (zh) | 网络服务的测试方法、装置、设备及存储介质 | |
CN116304458B (zh) | 一种web页面实时通知更新方法、装置、设备及介质 | |
CN114282968A (zh) | 一种流水号的获取方法、装置、服务器和存储介质 | |
US10798464B1 (en) | Streaming delivery of client-executable code | |
US10915646B2 (en) | Method and apparatus for network secure storage | |
CN107291628B (zh) | 访问数据存储设备的方法和装置 | |
CN113010103A (zh) | 数据存储方法、装置、相关设备及存储介质 | |
CN113806249B (zh) | 一种对象存储有序列举方法、装置、终端及存储介质 | |
CN108280048B (zh) | 信息处理方法和装置 | |
CN116743589B (zh) | 云主机迁移方法、装置及电子设备 | |
CN109933573B (zh) | 数据库业务更新方法、装置及系统 | |
CN116881911A (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 |