CN108243207A - 一种网络云盘的数据存储方法 - Google Patents
一种网络云盘的数据存储方法 Download PDFInfo
- Publication number
- CN108243207A CN108243207A CN201611209515.8A CN201611209515A CN108243207A CN 108243207 A CN108243207 A CN 108243207A CN 201611209515 A CN201611209515 A CN 201611209515A CN 108243207 A CN108243207 A CN 108243207A
- Authority
- CN
- China
- Prior art keywords
- cloud disk
- service device
- data
- data file
- client
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种网络云盘的数据存储方法,该方法包括:客户端登录网络云盘,并从本地获取需要存储的数据文件,上传其哈希值,云盘服务器根据哈希值判断该数据文件是否已存储,如果已存储,则通知该客户端不用上传,方法结束;如果未存储,则通知该客户端上传该数据文件至所述云盘服务器;云盘服务器按照预定的算法对该数据文件划分数据块并存储。
Description
【技术领域】
本发明属于计算机和互联网领域,具体的,涉及一种网络云盘的数据存储方法。
【背景技术】
近年来,随着互联网的发展,网络云盘(简称网盘、云盘)成为了一种互联网上常见的数据存储服务,该服务由一个互联网服务商提供大容量的数据存储空间,用户可以随时随地使用客户端连接该互联网服务器提供的服务器,上传和下载自己的数据文件。
现有技术中,客户端在向网络云盘上传文件前,首先计算其Hash值,然后上传Hash值,由服务器根据该Hash判断是否已经存储了该文件,如果已经存储了,就无需重复上传了。这种方法可以发现重复上传的文件,从而用户可以发现某些文件几乎是瞬间上传完成,提高了文件上传的效率。
但是,即使一个文件已经存储在服务器上了,如果用户对该文件稍加改动,整个文件的Hash值就不再相同,从而整个文件就必须全部存储,虽然文件的绝大部分内容都没有变化。在这种情况下,现有技术中的方法就不再适用,其实际上浪费了大量的数据存储能力。
【发明内容】
为了解决现有技术中的上述问题,本发明提出了一种网络云盘的数据存储方法,其技术方案如下:
一种网络云盘的数据存储方法,该方法包括以下步骤:
步骤100:客户端登录网络云盘,并从本地获取需要存储的数据文件;所述客户端计算该数据文件的哈希值,并发送给云盘服务器;所述云盘服务器根据该哈希值判断该数据文件是否存储。如果已存储,则通知该客户端不用上传,方法结束;如果未存储,则通知该客户端上传该数据文件至所述云盘服务器;
步骤200:在该数据文件的长度未超过预定长度时,所述云盘服务器直接将该数据文件发送给相应存储服务器存储,方法结束;否则,所述云盘服务器将该数据文件按照M种方式划分数据块,由相应存储服务器检查不同划分方式的数据重复量;
步骤300:所述云盘服务器从M种方式选择数据重复量最大的n种方式作为最终的数据存储方式。
进一步地,M=5,n=2;或者M=3,n=2;或者M=5,n=3。
进一步地,所述云盘服务器提供网络云盘的Web页面,并管理整个云盘的文件存储。
本发明的技术效果是:可以发现相似文件中的相同内容,从而提高了网络云盘的数据存储效率,节省了网络流量。
【附图说明】
此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
图1是本发明方法所应用的系统结构图。
【具体实施方式】
下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的不当限定。
参见附图1,其示出了本发明方法所应用的系统结构,该系统包括客户端、云盘服务器和多个存储服务器,所述云盘服务器提供网络云盘的Web页面,并管理整个云盘的文件存储,用户使用所述客户端访问该云盘服务器,获取该Web页面,通过该Web页面上传和下载数据文件,所述存储服务器是用于存储数据的后台服务器。为了存储海量的数据,本发明的优选方案是使用256个存储服务器,当然这是对于大型数据存储系统而言的,如果云盘服务提供商是小型企业,为了减少成本,也可以考虑将其中的多个服务器合并成一个,从而减少存储服务器数量。
在上述系统结构的基础上,本发明方法的基本步骤如下:
步骤100:客户端登录网络云盘,并从本地获取需要存储的数据文件;所述客户端计算该数据文件的哈希值,并发送给云盘服务器;所述云盘服务器根据该哈希值判断该数据文件是否存储。如果已存储,则通知该客户端不用上传,方法结束;如果未存储,则通知该客户端上传该数据文件至所述云盘服务器;
步骤200:在该数据文件的长度未超过预定长度时,所述云盘服务器直接将该数据文件发送给相应存储服务器存储,方法结束;否则,所述云盘服务器将该数据文件按照M种方式划分数据块,由相应存储服务器检查不同划分方式的数据重复量;
步骤300:所述云盘服务器从M种方式选择数据重复量最大的n种方式作为最终的数据存储方式。
在上述基本步骤的基础上,本发明方法的具体步骤如下:
(1)客户端登录云盘服务器,并从本地获取需要存储到网络云盘的数据文件。所述客户端计算该数据文件的哈希值,并将该哈希值发送到云盘服务器,所述云盘服务器根据该哈希值检测该数据文件是否已经存储,如果已经存储,则只记录该数据文件的相关信息,同时通知该客户端不用上传该数据文件,方法结束;如果未存储,则通知该客户端,由该客户端将该数据文件上传到云盘服务器。
客户端是用户操作的接口,用户通过客户端指定需要上传到网络云盘的数据文件,并负责采用后续的步骤将该数据文件存储到网络云盘中。每个用户使用其各自的客户端,因而客户端可以有多个。另外,本发明的云盘服务器也可以是多个,本发明不对其数量做出限制。
(2)所述云盘服务器检查所述数据文件的长度L,如果L小于预定义的最小数据块长度MinBlockLength,则提取该数据文件的最后一个字节B,转到步骤3。如果L≥MinBlockLength,则转到步骤5。
上述长度都是以字节为单位,由于一个字节为8位,则必然有0≤B≤255。所述最小数据块长度是本发明对文件分块时的最小长度,其具体值可以由管理员根据具体情况设定。一种优选的情况下,该MinBlockLength=1024字节。
(3)预先给系统中的256个存储服务器编号,分别命名为Server(i),其中0≤i≤255,所述云盘服务器将该数据文件发送到Server(B),同时保存该数据文件的相关信息。
本发明根据数据块结尾的字节,对数据块进行分类,由于一个字节一共有256个取值,因此将数据块分成256类,并且对应的分配到256个存储服务器,每个存储服务器的编号与其负责的数据块的分类(即结尾字节的值)相同。
256个存储服务器是本发明的优选方案,其实现成本较高,适用于大型的数据存储系统,如果需要缩减成本,存储服务器之间可以进行复用,即多个数据块类别共享一个存储服务器,该存储服务器也就具有了多个编号,这样不影响本发明方法的具体实施过程。
所述数据文件的相关信息包括数据文件的名字、大小、哈希值、存储服务器的编号等等,由此云盘服务器可以查询到该数据文件。
(4)所述Server(B)计算该数据文件的哈希值,根据该哈希值判断该数据文件是否已存储在服务器中,如果已存储,则该数据文件是重复数据,仅为该数据文件保留一个指针,指向已存储的数据即可;如果并未存储,则Server(B)存储该数据文件和其哈希值,方法结束。
由于存储服务器保存了每个存储的数据文件或数据块的哈希值,因此将该数据文件的哈希值与已有哈希值进行比较,就可以判断该数据文件是否是重复数据,如果是重复数据,就不用再次存储整个数据文件。
(5)所述云盘服务器准备对该数据文件进行数据分块,首先设置初始的分块向量V=0.
(6)所述云盘服务器从该数据文件的第MinBlockLength个字节开始向后扫描,当扫描某个字节等于分块向量时,记录该字节的位置P1,然后再从P1+MinBlockLength的位置开始扫描,寻找并记录下一个等于分块向量的字节位置,如此循环,直到数据文件的末尾。换言之,每一次扫描的开始位置与上一次记录位置的距离都是MinBlockLength,直到达到数据文件的末尾。
(7)根据步骤6的所记录的位置,将每个位置作为一个数据块的结尾,云盘服务器对数据文件进行分块,由此可以得到一个或多个数据块,设得到了KV个数据块。
步骤7得到的数据块可能有两类,第一类是以分块向量V结尾的数据块,第二类是数据文件的最后一个数据块,即以B结尾的数据块。其中第二类的数据块的数量只能是1或者0,第一类数据块的数据量也可能为0,这取决于数据文件的具体内容。
(8)分块向量V增加1,如果V≤255,则返回步骤6,否则继续步骤9。
上述步骤6-8是一个循环,基于0到255的每个分块向量值进行文件扫描,从而获得了多种数据块分割形式,数量从K0到K255。但是,本发明写成循环的形式只是为了叙述方便,实际应用中,本领域技术人员可以了解,可以只对数据文件进行一遍扫描就完成上述256个循环,从而提高执行效率。
(9)云盘服务器对K0到K255按照从大到小进行排序(如果有相等的KV,则下标大的在前),获取排在最前的(即最大的)5个值,假设为KV1,KV2,KV3,KV4,KV5。
(10)按照V1到V5五个分块向量对该数据文件的分块结果,云盘服务器将各个数据块按照其结尾字节发送到相应的存储服务器进行重复性检测。
如前所述,如果一个数据块的结尾字节是X,则将该数据块发送到Server(X)。
(11)每个存储服务器对接收到的每个数据块,计算其哈希值,根据该哈希值判断该数据块是否是重复数据(即该数据块与已存储的数据块相同),将判断结果发送给云盘服务器。
(12)所述云盘服务器根据步骤11接收到的判断结果,从五种分块方式中选择重复数据量最多的两种(如果重复数据量相同,则随机选择)。根据这两种分块方式,通知相应的存储服务器进行存储。云盘服务器自身保存该数据文件的相关信息,包括其两种分块方式和相应的存储服务器。
存储服务器的存储方式与步骤4相同,如果是重复的数据块,则只保留指针和相应的哈希值,如果是不重复的数据块,则保存该数据块和相应的哈希值。
保留的两种分块方式是为了冗余备份的考虑,即在一种分块方式的存储服务器出故障后,另外一种分块方式仍然可以组合成原数据文件。
另外,上述步骤中,在五种分块方式中选择两种仅仅是本发明的一种优选的实施方式,本领域技术人员可以根据具体情况选择另外的数值,例如从3种中选择2种,或者5种中选择3种。
以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。
Claims (5)
1.一种网络云盘的数据存储方法,其特征在于,该方法包括以下步骤:
步骤100:客户端登录网络云盘,并从本地获取需要存储的数据文件;所述客户端计算该数据文件的哈希值,并发送给云盘服务器;所述云盘服务器根据该哈希值判断该数据文件是否存储。如果已存储,则通知该客户端不用上传,方法结束;如果未存储,则通知该客户端上传该数据文件至所述云盘服务器;
步骤200:在该数据文件的长度未超过预定长度时,所述云盘服务器直接将该数据文件发送给相应存储服务器存储,方法结束;否则,所述云盘服务器将该数据文件按照M种方式划分数据块,由相应存储服务器检查不同划分方式的数据重复量;
步骤300:所述云盘服务器从M种方式选择数据重复量最大的n种方式作为最终的数据存储方式。
2.根据权利要求1所述的网络云盘的数据存储方法,其特征在于,M=5,n=2。
3.根据权利要求1所述的网络云盘的数据存储方法,其特征在于,M=3,n=2。
4.根据权利要求1所述的网络云盘的数据存储方法,其特征在于,M=5,n=3。
5.根据权利要求1-4所述的网络云盘的数据存储方法,其特征在于,所述云盘服务器提供网络云盘的Web页面,并管理整个云盘的文件存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611209515.8A CN108243207B (zh) | 2016-12-23 | 2016-12-23 | 一种网络云盘的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611209515.8A CN108243207B (zh) | 2016-12-23 | 2016-12-23 | 一种网络云盘的数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108243207A true CN108243207A (zh) | 2018-07-03 |
CN108243207B CN108243207B (zh) | 2019-03-15 |
Family
ID=62704438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611209515.8A Active CN108243207B (zh) | 2016-12-23 | 2016-12-23 | 一种网络云盘的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108243207B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515548A (zh) * | 2019-08-15 | 2019-11-29 | 浙江万朋教育科技股份有限公司 | 一种避免浪费第三方云存储空间的方法 |
CN112202910A (zh) * | 2020-10-10 | 2021-01-08 | 上海威固信息技术股份有限公司 | 一种计算机分布式存储系统 |
CN112306958A (zh) * | 2020-10-26 | 2021-02-02 | 深圳市大富网络技术有限公司 | 一种信息储存方法、系统、装置及可读储存介质 |
CN117851351A (zh) * | 2023-11-21 | 2024-04-09 | 北京青矩互联科技有限公司 | 文件存储方法、装置、设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699822A (zh) * | 2009-08-06 | 2010-04-28 | 腾讯科技(深圳)有限公司 | 一种文件上传方法、装置和海量存储系统 |
CN102508902A (zh) * | 2011-11-08 | 2012-06-20 | 西安电子科技大学 | 云存储系统中可变分块大小的块数据分块方法 |
CN103412929A (zh) * | 2013-08-16 | 2013-11-27 | 蓝盾信息安全技术股份有限公司 | 一种海量数据的存储方法 |
CN103593384A (zh) * | 2012-08-14 | 2014-02-19 | 国际商业机器公司 | 以目的地分析和数据去重实现数据传输优化的方法和系统 |
CN103714123A (zh) * | 2013-12-06 | 2014-04-09 | 西安工程大学 | 企业云存储分块对象重复数据删除和重组版本控制方法 |
CN103997525A (zh) * | 2014-05-21 | 2014-08-20 | 北京紫光天禾软件系统技术有限公司 | 一种分布式数据同步方法及系统 |
CN104932841A (zh) * | 2015-06-17 | 2015-09-23 | 南京邮电大学 | 一种云存储系统中节约型重复数据删除方法 |
CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
CN105912268A (zh) * | 2016-04-12 | 2016-08-31 | 韶关学院 | 一种基于自匹配特征的分布式重复数据删除方法及其装置 |
CN108111598A (zh) * | 2017-12-19 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 云盘数据的下发方法、装置及存储介质 |
-
2016
- 2016-12-23 CN CN201611209515.8A patent/CN108243207B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699822A (zh) * | 2009-08-06 | 2010-04-28 | 腾讯科技(深圳)有限公司 | 一种文件上传方法、装置和海量存储系统 |
CN102508902A (zh) * | 2011-11-08 | 2012-06-20 | 西安电子科技大学 | 云存储系统中可变分块大小的块数据分块方法 |
CN103593384A (zh) * | 2012-08-14 | 2014-02-19 | 国际商业机器公司 | 以目的地分析和数据去重实现数据传输优化的方法和系统 |
CN103412929A (zh) * | 2013-08-16 | 2013-11-27 | 蓝盾信息安全技术股份有限公司 | 一种海量数据的存储方法 |
CN103714123A (zh) * | 2013-12-06 | 2014-04-09 | 西安工程大学 | 企业云存储分块对象重复数据删除和重组版本控制方法 |
CN103997525A (zh) * | 2014-05-21 | 2014-08-20 | 北京紫光天禾软件系统技术有限公司 | 一种分布式数据同步方法及系统 |
CN104932841A (zh) * | 2015-06-17 | 2015-09-23 | 南京邮电大学 | 一种云存储系统中节约型重复数据删除方法 |
CN105824574A (zh) * | 2015-12-07 | 2016-08-03 | 国家电网公司 | 一种内存数据存储方法 |
CN105912268A (zh) * | 2016-04-12 | 2016-08-31 | 韶关学院 | 一种基于自匹配特征的分布式重复数据删除方法及其装置 |
CN108111598A (zh) * | 2017-12-19 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 云盘数据的下发方法、装置及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515548A (zh) * | 2019-08-15 | 2019-11-29 | 浙江万朋教育科技股份有限公司 | 一种避免浪费第三方云存储空间的方法 |
CN112202910A (zh) * | 2020-10-10 | 2021-01-08 | 上海威固信息技术股份有限公司 | 一种计算机分布式存储系统 |
CN112306958A (zh) * | 2020-10-26 | 2021-02-02 | 深圳市大富网络技术有限公司 | 一种信息储存方法、系统、装置及可读储存介质 |
CN117851351A (zh) * | 2023-11-21 | 2024-04-09 | 北京青矩互联科技有限公司 | 文件存储方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108243207B (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
CN103119550B (zh) | 存储具有时变特性的电子内容 | |
CN107528872B (zh) | 一种数据恢复方法、装置及云存储系统 | |
CN108243207B (zh) | 一种网络云盘的数据存储方法 | |
US7664829B2 (en) | Document managing system, document managing apparatus and document managing method | |
CN108932236A (zh) | 一种文件管理方法、过期文件删除方法及装置 | |
CN103888547B (zh) | 一种账单处理方法和服务器 | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN105824932A (zh) | 一种基于阿里云对象存储oss的档案系统 | |
CN103119551A (zh) | 优化的恢复 | |
CN104158889A (zh) | 名片信息查询方法和云服务器 | |
CN109271449A (zh) | 一种基于文件的分布式存储查询系统及查询方法 | |
CN106547911A (zh) | 一种海量小文件的存取方法和系统 | |
CN106817388A (zh) | 虚拟机、宿主机获取数据的方法、装置及访问数据的系统 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储系统及存储介质 | |
CN103503388B (zh) | 一种分布式队列消息读取方法及设备、系统 | |
CN108205482A (zh) | 文件挂载恢复方法 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN108241639B (zh) | 一种数据去重方法 | |
CN107819748A (zh) | 一种抗破解的验证码实现方法及装置 | |
CN106980618B (zh) | 基于MongoDB分布式集群架构的文件存储方法和系统 | |
CN105677579A (zh) | 缓存系统中的数据访问方法和系统 | |
CN111310088B (zh) | 一种页面渲染方法及装置 | |
CN109697281A (zh) | 在线合并文档的方法、装置及电子设备 | |
US9626378B2 (en) | Method for handling requests in a storage system and a storage node for a storage system |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 101399 No. 2 East Airport Road, Shunyi Airport Economic Core Area, Beijing (1st, 5th and 7th floors of Industrial Park 1A-4) Applicant after: Zhongke Star Map Co., Ltd. Address before: 101399 Building 1A-4, National Geographic Information Technology Industrial Park, Guomen Business District, Shunyi District, Beijing Applicant before: Space Star Technology (Beijing) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |