CN110716936B - 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 - Google Patents

一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 Download PDF

Info

Publication number
CN110716936B
CN110716936B CN201910966851.4A CN201910966851A CN110716936B CN 110716936 B CN110716936 B CN 110716936B CN 201910966851 A CN201910966851 A CN 201910966851A CN 110716936 B CN110716936 B CN 110716936B
Authority
CN
China
Prior art keywords
lock
database
corresponding process
data
version number
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
Application number
CN201910966851.4A
Other languages
English (en)
Other versions
CN110716936A (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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN201910966851.4A priority Critical patent/CN110716936B/zh
Publication of CN110716936A publication Critical patent/CN110716936A/zh
Application granted granted Critical
Publication of CN110716936B publication Critical patent/CN110716936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统,属于数据库领域,本发明要解决的技术问题为如何利用乐观锁避免并发情况下向数据库中定时插入数据过程中造成数据重复,采用的技术方案为:该方法步骤如下:S1、创建lock_table表:在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;S2、操作加锁:将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;具体如下:S201、获取锁:查询lock_table表获取锁的信息,确保对应的进程获取该锁;S202、执行事务:对应进程进行继续执行,完成对数据库的事务操作;S203、释放锁:事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。该系统包括lock_table表创建模块和加锁操作模块。

Description

一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统
技术领域
本发明涉及数据库领域,具体地说是一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统。
背景技术
SpringBoot是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
并发是指多个执行单元同时、并行被执行,而并发的执行单位对于共享资源(硬件资源和软件上的全局变量、静态变量等)的访问很容易导致竞态(race conditions)。并发执行操作会造成数据库中数据重复等问题,解决办法是加锁。乐观锁(OptimisticLocking)相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本(Version)记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个“version”字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
故如何利用乐观锁避免并发情况下向数据库中定时插入数据过程中造成数据重复是目前现有技术存在的技术问题。
专利号为CN108710541A的专利文献公开了一种定时任务的执行方法及装置,包括,当定时任务到达执行时间时,根据所述定时任务的编号查询所述定时任务的注册信息,判断所述定时任务的注册信息是否处于锁定状态,若否,则更新并锁定所述注册信息,以使其对其他节点处于不可编辑状态,并执行所述定时任务。所述定时任务的执行方法及装置,在定时任务达到执行时间时,节点首先查询所述定时任务的注册信息是否被锁定,在锁定时说明其他节点已经开始执行所述定时任务,不再重复执行所述定时任务;在没有锁定时则锁定所述注册信息并执行所述定时任务,使得其他节点不能够更新注册信息并重复执行所述定时任务,在避免定时任务重复执行的同时,保证了定时任务执行的高可用性。该技术方案的检索结果是对更新注册信息的定时任务的执行处理,但是不能避免并发情况下向数据库中定时插入数据过程中造成数据重复。
专利号为CN109446214A的专利文献公开了一种大数据背景下基于乐观锁机制实现主数据版本管理的系统,包括乐观锁初始化模块;版本比对执行模块根据乐观锁机制在执行主数据更新操作时对主数据版本进行比对;冲突处理策略池用于将比对结果匹配相应的冲突处理策略;冲突处理模块用于将处理策略针对产生的主数据版本冲突按照匹配策略进行处理。该技术方案解决了大数据背景下主数据在多节点部署或者多线程执行等高并发环境下更新冲突的问题,从而减轻了主数据版本维护的工作量,实现了主数据版本精细化管理,提高了主数据更新的并发性,为企业及政府部门主数据实施及应用奠定了良好的基础。但是不能避免并发情况下向数据库中定时插入数据过程中造成数据重复。
发明内容
本发明的技术任务是提供一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统,来解决如何利用乐观锁避免并发情况下向数据库中定时插入数据过程中造成数据重复的问题。
本发明的技术任务是按以下方式实现的,一种基于SpringBoot+JPA的数据库乐观锁实现方法,该方法步骤如下:
S1、创建lock_table表:在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
S2、操作加锁:将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;具体如下:
S201、获取锁:查询lock_table表获取锁的信息,确保对应的进程获取该锁;
S202、执行事务:对应进程进行继续执行,完成对数据库的事务操作;
S203、释放锁:事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
作为优选,所述步骤S1中锁的数据信息包括锁名(lock_name)、版本号(version)及状态(lock_state)。
作为优选,所述步骤S201中获取锁的步骤如下:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤(2);
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行。
更优地,所述步骤(2)中update语句增加@Transactional、@Modifying注解。
一种基于SpringBoot+JPA的数据库乐观锁系统,该系统包括,
lock_table表创建模块,用于在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
加锁操作模块,用于将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;
其中,加锁操作模块包括,
锁获取模块,用于查询lock_table表获取锁的信息,确保对应的进程获取该锁;
事务执行模块,用于对应进程进行继续执行,完成对数据库的事务操作;
锁释放模块,用于在事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
作为优选,所述锁的数据信息包括锁名(lock_name)、版本号(version)及状态(lock_state)。
作为优选,所述锁获取模块的工作过程:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤S302;
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
①、若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行。
更优地,所述update语句增加@Transactional、@Modifying注解。
本发明的基于SpringBoot+JPA的数据库乐观锁实现方法及系统具有以下优点:
(一)、本发明实现了对并发事务的乐观锁处理,避免了数据重复等问题,通过数据库乐观锁解决并发问题;
(二)、本发明是数据库乐观锁的一种实现方式,将加锁放在执行并发操作的前一步,避免了数据重复,降低了数据库报错的可能性;
(三)、本发明能够满足对各种并发事务的处理,使用范围广,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于SpringBoot+JPA的数据库乐观锁实现方法的流程框图;
附图2为基于SpringBoot+JPA的数据库乐观锁系统的结构框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统作以下详细地说明。
实施例1:
如附图1所示,本发明的基于SpringBoot+JPA的数据库乐观锁实现方法,该方法步骤如下:
S1、创建lock_table表:在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;锁的数据信息包括锁名(lock_name)、版本号(version)及状态(lock_state)。lock_table表结构设计如下:
lock_name version lock_state
锁名 版本号 状态
S2、操作加锁:将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;具体如下:
S201、获取锁:查询lock_table表获取锁的信息,确保对应的进程获取该锁;步骤如下:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤(2);
(2)、执行update语句更新该锁的状态为锁定,update语句增加@Transactional、@Modifying注解,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行。
S202、执行事务:对应进程进行继续执行,完成对数据库的事务操作;
S203、释放锁:事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
实施例2:
如附图2所示,本发明的基于SpringBoot+JPA的数据库乐观锁系统,该系统包括,
lock_table表创建模块,用于在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;锁的数据信息包括锁名(lock_name)、版本号(version)及状态(lock_state)。
加锁操作模块,用于将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;
其中,加锁操作模块包括,
锁获取模块,用于查询lock_table表获取锁的信息,确保对应的进程获取该锁;
事务执行模块,用于对应进程进行继续执行,完成对数据库的事务操作;
锁释放模块,用于在事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
其中,锁获取模块的工作过程:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤S302;
(2)、执行update语句更新该锁的状态为锁定,update语句增加@Transactional、@Modifying注解,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
①、若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行。
实施例3:
以将并发事务操作加锁A为例:
在数据库的lock_table表中增加锁A的数据。并发事务加锁执行步骤如下:
1)、获取锁:查询lock_table中锁A的信息,若锁A的版本号小于当前日期且状态为为“未锁定”,则执行update语句更新锁A的状态为“锁定”,update语句增加@Transactional、@Modifying注解,执行成功后返回值为更新的数据条数。若进程A更新的数据条数大于0,则说明进程A获取了锁。进程A继续执行下一步,其他未获取到锁的进程终止执行。
2)、执行事务:进程A继续执行,完成对数据库的事务操作。
3)、释放锁:事务执行结束后,进程A更新锁A的版本号为当前日期,状态更新为“未锁定”,操作结束。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (6)

1.一种基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,该方法步骤如下:
S1、创建lock_table表:在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
S2、操作加锁:将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;具体如下:
S201、获取锁:查询lock_table表获取锁的信息,确保对应的进程获取该锁;步骤如下:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤(2);
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行;
S202、执行事务:对应进程进行继续执行,完成对数据库的事务操作;
S203、释放锁:事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
2.根据权利要求1所述的基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,所述步骤S1中锁的数据信息包括锁名、版本号及状态。
3.根据权利要求1所述的基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,所述步骤(2)中update语句增加@Transactional、@Modifying注解。
4.一种基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,该系统包括,
lock_table表创建模块,用于在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
加锁操作模块,用于将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;
其中,加锁操作模块包括,
锁获取模块,用于查询lock_table表获取锁的信息,确保对应的进程获取该锁;锁获取模块的工作过程:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤S302;
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
①、若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行;
事务执行模块,用于对应进程进行继续执行,完成对数据库的事务操作;
锁释放模块,用于在事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
5.根据权利要求4所述的基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,所述锁的数据信息包括锁名、版本号及状态。
6.根据权利要求4所述的基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,所述update语句增加@Transactional、@Modifying注解。
CN201910966851.4A 2019-10-12 2019-10-12 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统 Active CN110716936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910966851.4A CN110716936B (zh) 2019-10-12 2019-10-12 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910966851.4A CN110716936B (zh) 2019-10-12 2019-10-12 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统

Publications (2)

Publication Number Publication Date
CN110716936A CN110716936A (zh) 2020-01-21
CN110716936B true CN110716936B (zh) 2022-04-05

Family

ID=69212534

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910966851.4A Active CN110716936B (zh) 2019-10-12 2019-10-12 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统

Country Status (1)

Country Link
CN (1) CN110716936B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400330B (zh) * 2020-03-13 2024-04-09 深圳前海微众银行股份有限公司 任务处理方法、装置、设备及计算机可读存储介质
CN113448584B (zh) * 2020-03-25 2023-07-21 浙江满趣科技有限公司 一种app版本管理方法、装置、介质及计算机设备
CN111813509A (zh) * 2020-06-09 2020-10-23 四川虹美智能科技有限公司 分布式集群管理方法、装置、存储介质和计算可读介质
CN111797107B (zh) * 2020-07-08 2024-02-09 贵州易鲸捷信息技术有限公司 混合乐观锁和悲观锁的数据库事务并发控制方法
CN111949673B (zh) * 2020-08-04 2024-02-20 贵州易鲸捷信息技术有限公司 基于Hbase存储的分布式悲观锁及其实现方法
CN116389579A (zh) * 2023-03-22 2023-07-04 安芯网盾(北京)科技有限公司 一种基于微服务的报表生成方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327556A (en) * 1991-02-15 1994-07-05 International Business Machines Corporation Fast intersystem page transfer in a data sharing environment with record locking
US6850938B1 (en) * 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
CN106293946A (zh) * 2016-08-16 2017-01-04 东软集团股份有限公司 资源获取的方法及服务器
CN109446214A (zh) * 2018-10-22 2019-03-08 普元信息技术股份有限公司 大数据背景下基于乐观锁机制实现主数据版本管理的系统及方法
CN109800062A (zh) * 2018-12-25 2019-05-24 星环信息科技(上海)有限公司 一种分布式数据库事务处理系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327556A (en) * 1991-02-15 1994-07-05 International Business Machines Corporation Fast intersystem page transfer in a data sharing environment with record locking
US6850938B1 (en) * 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
CN106293946A (zh) * 2016-08-16 2017-01-04 东软集团股份有限公司 资源获取的方法及服务器
CN109446214A (zh) * 2018-10-22 2019-03-08 普元信息技术股份有限公司 大数据背景下基于乐观锁机制实现主数据版本管理的系统及方法
CN109800062A (zh) * 2018-12-25 2019-05-24 星环信息科技(上海)有限公司 一种分布式数据库事务处理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分布式锁的几种实现方式;Hollis;《https://www.hollischuang.com/archives/1716》;20161107;全文 *

Also Published As

Publication number Publication date
CN110716936A (zh) 2020-01-21

Similar Documents

Publication Publication Date Title
CN110716936B (zh) 一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统
US11314716B2 (en) Atomic processing of compound database transactions that modify a metadata entity
EP3401804B1 (en) Adaptive query routing in a replicated database environment
US8407195B2 (en) Efficient multi-version locking for main memory databases
US11321299B2 (en) Scalable conflict detection in transaction management
EP3111325B1 (en) Automatically retrying transactions with split procedure execution
US8266122B1 (en) System and method for versioning data in a distributed data store
US8589346B2 (en) Techniques for combining statement level, procedural, and row level replication
US8615503B2 (en) Method for attaching partition online to range partitioned table
US10824968B2 (en) Transformation of logical data object instances and updates to same between hierarchical node schemas
US11436212B2 (en) Concurrent transaction processing in a database system
CN109947742B (zh) 面向二阶段锁的多版本数据库并发控制方法和系统
US20180276234A1 (en) Distributed transaction conflict resolution
US11809916B2 (en) Deadlock detection in distributed databases
US11468032B2 (en) Concurrent transaction processing in a database system
US8285755B2 (en) Partial updating in a database proxy driver
CN111984662B (zh) 批量更新数据库的方法及装置
CN114328591A (zh) 事务执行方法、装置、设备和存储介质
US7502792B2 (en) Managing database snapshot storage
US10459810B2 (en) Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery
CN114416201B (zh) 一种基于分布式数据库的快照隔离实现方法
US11709808B1 (en) Schema evolution for the serialization of non-primary key columnar data into row-organized byte sequences
US11921708B1 (en) Distributed execution of transactional queries
US11704305B1 (en) Optimizations for long-lived statements in a database system
US20230205785A1 (en) A distributed database that uses hybrid table secondary indexes

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

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Tidal Cloud Information Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant