CN106293714A - 一种基于数据层的改进ajax性能的方法 - Google Patents

一种基于数据层的改进ajax性能的方法 Download PDF

Info

Publication number
CN106293714A
CN106293714A CN201610619234.3A CN201610619234A CN106293714A CN 106293714 A CN106293714 A CN 106293714A CN 201610619234 A CN201610619234 A CN 201610619234A CN 106293714 A CN106293714 A CN 106293714A
Authority
CN
China
Prior art keywords
task
data layer
ajax
time
state
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
CN201610619234.3A
Other languages
English (en)
Other versions
CN106293714B (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.)
Sichuan Tianyi Comheart Telecom Co Ltd
Original Assignee
Sichuan Tianyi Comheart Telecom 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 Sichuan Tianyi Comheart Telecom Co Ltd filed Critical Sichuan Tianyi Comheart Telecom Co Ltd
Priority to CN201610619234.3A priority Critical patent/CN106293714B/zh
Publication of CN106293714A publication Critical patent/CN106293714A/zh
Application granted granted Critical
Publication of CN106293714B publication Critical patent/CN106293714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于数据层的改进ajax性能的方法,它包括初始化步骤、任务迁徙步骤、动画效果步骤、参数收集,数据层为每个任务建立一张json数组表,维护每个任务的状态,控制任务迁移;客户调用send函数时,将actionprompt标志设置为true,数据层显示等待动画,和提示文字;在IE中使用jquery方法,将XML字符串转换为jquery对象。本发明提升了ajax对浏览器的兼容性,同时在等待服务器响应的时候通过动画和文字信息来提示用户,告知用户当前任务的状态,并且用户可以任意组合参数,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。

Description

一种基于数据层的改进ajax性能的方法
技术领域
本发明涉及一种基于数据层的改进ajax性能的方法。
背景技术
客户端和服务端的通信有下面几种方法:
Form表单的GET方法,只能在<form>元素中使用,参数编码到url地址中,长度有限
Form表单的POST方法,只能在<form>元素中使用,参数在http header中发给服务器,数据量可以很大
Cookie,浏览器只是提供有限的接口,用于session会话场合。其它领域并不适合
Cgi方式,数据嵌入在页面中一起返回给浏览器,完全不适合插件开发。
以及Ajax方式,其特点在于,html页面可以在任何地方使用javascript向服务端发送ajax请求,同时注册一个回调函数。Ajax是异步的,发送完ajax请求后页面工作就结束,不用同步等待服务端的数据。当浏览器收到服务器返回的数据后,浏览器就会自动调用刚才注册的回调函数。在回调函数中,程序员可以做任何事情,比如将数据显示在html之中。
如果插件需要和服务端通信,Ajax是最好的选择。因为从设计的角度讲,它将html和数据完全分开了,调试方便,功能强大,你可以在回调函数中做任何事情。
如果只是发送少数几个数据请求,直接调用ajax的POST,或GET请求就可以了。但是如果要发送上百个请求,在复杂的插件中,这是完全可能的,直接调用就出现一些问题,我们需要一个数据层,封装ajax,提供更强的通信功能。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于数据层的改进ajax性能的方法。
本发明的目的是通过以下技术方案来实现的:一种基于数据层的改进ajax性能的方法,包括初始化步骤、任务迁徙步骤、动画效果步骤,参数收集包括以下步骤:
所述的初始化步骤包括以下子步骤:
S11.创建数据层DataLayer,采用命名空间实现,所述的命名空间采用json语法实现;
S12.数据层将每个ajax视为一个任务,并为其赋予一个任务编号;其中,对于每一个任务,数据层建立一张表格,维护每个任务的状态;
S13.数据层DataLayer提供一个函数接口send,参数为json对象;
所述的任务迁徙步骤包括以下子步骤:
S21:数据层收到客户端向服务端发送的请求后,为任务分配一个id号,将任务状态设置为新建created;
S22:收集参数,当参数收集完毕,向服务端发送ajax请求,将任务状态设置为waiting,同时超时计数器开始计数;
S23:当超时计数器计数结束之前,收到服务端返回的结果后,将任务状态设置为finished;当超时计数器计数结束服务端仍然没有返回结果,任务将被终止,从waiting状态直接进入aborted状态;
所述的嵌入动画效果步骤为:
S31.使用absoulte布局,在Z轴最顶端加入div元素,div的visibility属性设置为true,嵌入一个等待动画图片;
S32.客户调用send函数时,数据层将actionprompt设置为true,数据层将显示等待动画,如果actionprompt为false,将div的visibility属性设置为false。
所述的json对象的结构包括:
Actionid:由数据层datalayer自动生成,表示任务编号;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
Actionname:表示任务的名称;
Actionprompt:表示是否出现文字和动画提示请求在处理中;
Maximumwaitingtime:表示一个任务最长的等待时间,超出这个等待时间而服务端没有回应,数据层将终止任务运行;
Callbacksuccess,表示用来注册成功时候的回调函数;
Callbackfail,表示用来注册任务失败时的回调函数;
Waitingtip,当等待服务端回应的时候,给予用户的提示;
Url,指向服务端的地址,以所述的Actionname加上json后缀表示;
Atype,表示请求类型
Multi,表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送。
所述的表格结构包括
Actionid:表示任务编号;
Actionname:表示任务的名称;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
ajaxobj:ajax引用实例;
multi:表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送:
injectedStatus:尾部是否置入特殊动作。
它还包括一个浏览器版本判断步骤:在每次任务状态切换之后打印任务信息之前,判断浏览器版本是否为console.log()函数所支持的版本,如果支持则调用console.log()函数进行打印,否则不调用。
在所述的浏览器版本判断步骤之后,还包括一个解析错误状态的转换步骤:ie浏览器解析服务端返回的xml字符串出错的情况下,在ajax error属性中注册回调函数,在这个函数中略过http头,定位到xml数据体,将其转换为jquery对象,将返回至客户端。
所述的参数收集包括以下步骤:
S1.在数据层这个json对象中加入属性currentActionID,指向任务表中正在处理的任务id;
S2.任务表中增加一列injectedStatus,表示是否已经向任务处理动作的末尾植入了一个特殊的动作;
S3.然后将任务状态设置为waiting即可;当服务器返回数据时候,在回调函数中,数据层将调用用户注册的回调函数,然后将任务状态设置为finished或者error;
S4.当用户调用send函数接口发送时候,数据层判断currentActionID状态,如果是finished,或error,aborted,waiting表明没有新建的任务,
S5.数据层创建一个新任务,状态设置为created,将injectedStatus列置为true,然后执行参数收集最核心的一个动作,调用时间处理函数,
S6.将时间处理函数添加到事件队列末尾,同时将超时时间设置为0秒;
S7.这样一系列的send函数调用一结束时,这个时间处理函数将被调用,请求将被发送出去。
本发明的有益效果是:一种基于数据层的改进ajax性能的方法,提升了ajax对IE浏览器的兼容性,弥补了IE浏览器对XML数据解析的不正确的缺点,同时在等待服务器响应的时候提供一个动画提示用户,告知用户当前任务的状态,并且用户可以任意组合参数,数据层自动判断参数是否填写完毕,然后发出请求,使编程接口更加友好,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。
附图说明
图1为状态迁移图;
具体实施方式
下面结合附图进一步详细描述本发明的技术方案:一种基于数据层的改进ajax性能的方法,包括初始化步骤、任务迁徙步骤、动画效果步骤包括以下步骤:
所述的初始化步骤包括以下子步骤:
S11.创建数据层DataLayer,采用命名空间实现,所述的命名空间采用json语法实现;
S12.数据层将每个ajax视为一个任务,并为其赋予一个任务编号;其中,对于每一个任务,数据层建立一张表格,维护每个任务的状态;
S13.数据层DataLayer提供一个函数接口send,参数为json对象;
如图1所示,所述的任务迁徙步骤包括以下子步骤:
S21:数据层收到客户端向服务端发送的请求后,为任务分配一个id号,将任务状态设置为新建created;
S22:收集参数,当参数收集完毕,向服务端发送ajax请求,将任务状态设置为waiting,同时超时计数器开始计数;
S23:当超时计数器计数结束之前,收到服务端返回的结果后,将任务状态设置为finished;当超时计数器计数结束服务端仍然没有返回结果,任务将被终止,从waiting状态直接进
入aborted状态;
所述的嵌入动画效果步骤为:
S31.使用absoulte布局,在Z轴最顶端加入div元素,div的visibility属性设置为true,嵌入一个等待动画图片;
S32.客户调用send函数时,数据层将actionprompt设置为true,数据层将显示等待动画,如果actionprompt为false,将div的visibility属性设置为false。
通过上传自定义的字符串来决定显示的文字信息;
同时在等待服务器响应的时候提供一个动画和文字信息来提示用户,告知用户当前任务的状态,
所述的json对象的结构包括:
Actionid:由数据层datalayer自动生成,表示任务编号;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
Actionname:表示任务的名称;
Actionprompt:表示是否出现文字和动画提示请求在处理中;
Maximumwaitingtime:表示一个任务最长的等待时间,超出这个等待时间而服务端没有回应,数据层将终止任务运行;
Callbacksuccess,表示用来注册成功时候的回调函数;
Callbackfail,表示用来注册任务失败时的回调函数;
Waitingtip,当等待服务端回应的时候,给予用户的提示;
Url,指向服务端的地址,以所述的Actionname加上json后缀表示;
Atype,表示请求类型
Multi,表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送。
表1
如表1所示,所述的表格结构包括:
Actionid:表示任务编号;
Actionname:表示任务的名称;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
ajaxobj:ajax引用实例;
multi:表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送:
injectedStatus:尾部是否置入特殊动作。
它还包括一个浏览器版本判断步骤:在每次任务状态切换之后打印任务信息之前,判断浏览器版本是否为console.log()函数所支持的版本,如果支持则调用console.log()函数进行打印,否则不调用。
在所述的浏览器版本判断步骤之后,还包括一个解析错误状态的转换步骤:ie浏览器解析服务端返回的xml字符串出错的情况下,在ajax error属性中注册回调函数,在这个函数中略过http头,定位到xml数据体,将其转换为jquery对象,将返回至客户端,
所述的浏览器版本判断步骤提升了ajax对IE浏览器的兼容性和解析错误状态的转换步骤弥补了IE浏览器对XML数据解析的不正确的缺点。
所述的参数收集包括以下步骤:
S1.在数据层这个json对象中加入属性currentActionID,指向任务表中正在处理的任务id;
S2.任务表中增加一列injectedStatus,表示是否已经向任务处理动作的末尾植入了一个特殊的动作;
S3.然后将任务状态设置为waiting即可;当服务器返回数据时候,在回调函数中,数据层将调用用户注册的回调函数,然后将任务状态设置为finished或者error;
S4.当用户调用send函数接口发送时候,数据层判断currentActionID状态,如果是finished,或error,aborted,waiting表明没有新建的任务,
S5.数据层创建一个新任务,状态设置为created,将injectedStatus列置为true,然后执行参数收集最核心的一个动作,调用时间处理函数,
S6.将时间处理函数添加到事件队列末尾,同时将超时时间设置为0秒;
S7.这样一系列的send函数调用一结束时,这个时间处理函数将被调用,请求将被发送出去。
因为当下一个send被调用时,因injectedStatus为true,特殊动作不会再植入到末尾使得用户可以任意组合参数,数据层自动判断参数是否填写完毕,然后发出请求,使编程接口更加友好,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。

Claims (6)

1.一种基于数据层的改进ajax性能的方法,其特征在于:包括初始化步骤、任务迁徙步骤和动画效果步骤包括以下步骤:
所述的初始化步骤包括以下子步骤:
S11.创建数据层,采用命名空间实现,所述的命名空间采用json语法实现;
S12. 数据层将每个ajax视为一个任务,并为其赋予一个任务编号;其中,对于每一个任务,数据层建立一张表格,维护每个任务的状态;
S13.数据层提供一个函数接口send, 参数为json对象;
所述的任务迁徙步骤包括以下子步骤:
S21:数据层收到客户端向服务端发送的请求后,为任务分配一个id号,将任务状态设置为新建created;
S22:参数收集,当参数收集完毕,向服务端发送ajax请求,将任务状态设置为waiting,同时超时计数器开始计数;
S23:当超时计数器计数结束之前,收到服务端返回的结果后,将任务状态设置为finished;当超时计数器计数结束服务端仍然没有返回结果,任务将被终止,从waiting状态直接进入aborted状态;
所述的嵌入动画效果步骤为:
S31.使用absoulte布局,在Z轴最顶端加入div元素,div的visibility属性设置为true,嵌入一个等待动画图片;
S32. 客户调用send函数时,数据层将actionprompt设置为true,数据层将显示等待动画,如果actionprompt为false,将div的visibility属性设置为false。
2.根据权利要求1所述的一种基于数据层的改进ajax性能的方法,其特征在于:所述的json对象的结构包括:
Actionid:由数据层datalayer自动生成,表示任务编号;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
Actionname:表示任务的名称;
Actionprompt:表示是否出现文字和动画提示请求在处理中;
Maximumwaitingtime:表示一个任务最长的等待时间,超出这个等待时间而服务端没有回应,数据层将终止任务运行;
Callbacksuccess,表示用来注册成功时候的回调函数;
Callbackfail,表示用来注册任务失败时的回调函数;
Waitingtip,当等待服务端回应的时候,给予用户的提示;
Url,指向服务端的地址,以所述的Actionname加上json后缀表示;
Atype,表示请求类型
Multi,表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送。
3.根据权利要求1所述的一种基于数据层的改进ajax性能的方法,其特征在于:所述的表格结构包括
Actionid:表示任务编号;
Actionname:表示任务的名称;
Actionstatus:表示任务的状态,包括创建、等待、终止、错误;
ajaxobj:ajax引用实例;
multi:表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送
injectedStatus:尾部是否置入特殊动作。
4.根据权利要求1所述的一种基于数据层的改进ajax性能的方法,其特征在于:它还包括一个浏览器版本判断步骤:在每次任务状态切换之后打印任务信息之前,判断浏览器版本是否为console.log()函数所支持的版本,如果支持则调用console.log()函数进行打印,否则不调用。
5.根据权利要求1或4所述的一种基于数据层的改进ajax性能的方法,其特征在于:
在所述的浏览器版本判断步骤之后,还包括一个解析错误状态的转换步骤:ie浏览器解析服务端返回的xml字符串出错的情况下,在ajax error属性中注册回调函数,在这个函数中略过http头,定位到xml数据体,然后获取xml字符串内容, 将其转换为jquery对象,将返回至客户端。
6.根据权利要求1所述的一种基于数据层的改进ajax性能的方法,其特征在于:所述的参数收集包括以下步骤:
S1.在数据层这个json对象中加入属性currentActionID, 指向任务表中正在处理的任务id;
S2.任务表中增加一列injectedStatus, 表示是否已经向任务处理动作的末尾植入了一个特殊的动作;
S3.然后将任务状态设置为waiting即可;当服务器返回数据时候,在回调函数中,数据层将调用用户注册的回调函数,然后将任务状态设置为finished或者error;
S4.当用户调用send函数接口发送时候,数据层判断currentActionID状态,如果是finished,或error,aborted,waiting表明没有新建的任务,
S5.数据层创建一个新任务,状态设置为created, 将injectedStatus列置为true,然后执行参数收集最核心的一个动作,调用时间处理函数,
S6. 将时间处理函数添加到事件队列末尾,同时将超时时间设置为0秒;
S7.这样一系列的send函数调用一结束时,这个时间处理函数将被调用,请求将被发送出去。
CN201610619234.3A 2016-07-29 2016-07-29 一种基于数据层的改进ajax性能的方法 Active CN106293714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610619234.3A CN106293714B (zh) 2016-07-29 2016-07-29 一种基于数据层的改进ajax性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610619234.3A CN106293714B (zh) 2016-07-29 2016-07-29 一种基于数据层的改进ajax性能的方法

Publications (2)

Publication Number Publication Date
CN106293714A true CN106293714A (zh) 2017-01-04
CN106293714B CN106293714B (zh) 2020-01-14

Family

ID=57663748

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610619234.3A Active CN106293714B (zh) 2016-07-29 2016-07-29 一种基于数据层的改进ajax性能的方法

Country Status (1)

Country Link
CN (1) CN106293714B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933792A (zh) * 2017-03-17 2017-07-07 郑州云海信息技术有限公司 一种提高服务器端数据填充客户端表单效率的方法
CN107861825A (zh) * 2017-10-16 2018-03-30 北京京东尚科信息技术有限公司 请求处理/状态码查询方法及装置、下/上游节点、介质
CN110231964A (zh) * 2019-06-12 2019-09-13 四川长虹电器股份有限公司 一种动态加载js资源时防止重复请求的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101442515A (zh) * 2007-11-22 2009-05-27 深圳市科陆电子科技股份有限公司 一种基于浏览器的远程控制方法
CN102279862A (zh) * 2011-05-10 2011-12-14 中兴通讯股份有限公司 基于Ajax的数据处理装置及方法
US20120272131A1 (en) * 2011-04-21 2012-10-25 International Business Machines Corporation Handling unexpected responses to script executing in client-side application
CN103577599A (zh) * 2013-11-15 2014-02-12 北京邮电大学 一种移动终端的本地数据存储方法及装置
CN103631879A (zh) * 2013-11-13 2014-03-12 王锦忠 Ajax中异步通讯事件的操作
CN104079653A (zh) * 2014-07-03 2014-10-01 上海积谕信息科技有限公司 基于b/s架构的智能家居控制方法及系统
CN104376056A (zh) * 2014-11-04 2015-02-25 广州华多网络科技有限公司 一种数据处理的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101442515A (zh) * 2007-11-22 2009-05-27 深圳市科陆电子科技股份有限公司 一种基于浏览器的远程控制方法
US20120272131A1 (en) * 2011-04-21 2012-10-25 International Business Machines Corporation Handling unexpected responses to script executing in client-side application
CN102279862A (zh) * 2011-05-10 2011-12-14 中兴通讯股份有限公司 基于Ajax的数据处理装置及方法
CN103631879A (zh) * 2013-11-13 2014-03-12 王锦忠 Ajax中异步通讯事件的操作
CN103577599A (zh) * 2013-11-15 2014-02-12 北京邮电大学 一种移动终端的本地数据存储方法及装置
CN104079653A (zh) * 2014-07-03 2014-10-01 上海积谕信息科技有限公司 基于b/s架构的智能家居控制方法及系统
CN104376056A (zh) * 2014-11-04 2015-02-25 广州华多网络科技有限公司 一种数据处理的方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933792A (zh) * 2017-03-17 2017-07-07 郑州云海信息技术有限公司 一种提高服务器端数据填充客户端表单效率的方法
CN107861825A (zh) * 2017-10-16 2018-03-30 北京京东尚科信息技术有限公司 请求处理/状态码查询方法及装置、下/上游节点、介质
CN110231964A (zh) * 2019-06-12 2019-09-13 四川长虹电器股份有限公司 一种动态加载js资源时防止重复请求的方法
CN110231964B (zh) * 2019-06-12 2021-06-22 四川长虹电器股份有限公司 一种动态加载js资源时防止重复请求的方法

Also Published As

Publication number Publication date
CN106293714B (zh) 2020-01-14

Similar Documents

Publication Publication Date Title
CN108449418B (zh) 一种混合云平台管理系统及方法
CN106657370B (zh) 数据传输方法及装置
CN101159714B (zh) 一种即时通讯方法和装置
RU2390958C2 (ru) Способ и сервер для обеспечения мультимодального диалога
US20040117804A1 (en) Multi modal interface
US20080313545A1 (en) Systems and methods for providing desktop or application remoting to a web browser
CN104253788B (zh) 一种数据处理方法、客户端、页面引擎及系统
CN105745620B (zh) 软件架构的实现方法和实现平台
CN103997452A (zh) 多平台之间的信息分享方法及装置
CN108153768A (zh) 页面跳转方法、数据处理方法、装置及页面跳转控制系统
CN104135536A (zh) 一种基于json数据协议的Web管理系统数据交互方法
CN102685196A (zh) 在虚拟应用环境下改善用户体验的方法及虚拟应用系统
CN105302564B (zh) 网络办公软件服务控件及实现方法
CN101154157A (zh) 为JavaScript应用提供全球化功能的系统和方法
CN103365840A (zh) 一种基于web的截图方法和装置
KR102136474B1 (ko) 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화
CN101707627B (zh) 一种呈现页面信息的方法及其装置
CN106293714A (zh) 一种基于数据层的改进ajax性能的方法
EP2851813A1 (en) Methods for servicing web service requests using parallel agile web services and devices thereof
CN102549967A (zh) 通过第三远程用户界面客户端控制远程用户界面客户端的方法和装置
CN107852422A (zh) 与具有不同api的服务器接口连接来获取广告数据
CN104410702A (zh) 远程服务请求方法、响应方法、请求装置与响应装置
CN108540521A (zh) 一种同步信息的方法、终端设备及服务器
CN101853264B (zh) 提供主动式网页用户界面的方法
CN107315784A (zh) 一种数据访问方法和浏览器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant