CN107171763A - 一种基于时间偏移的时间处理方法、装置及移动终端 - Google Patents

一种基于时间偏移的时间处理方法、装置及移动终端 Download PDF

Info

Publication number
CN107171763A
CN107171763A CN201710543517.9A CN201710543517A CN107171763A CN 107171763 A CN107171763 A CN 107171763A CN 201710543517 A CN201710543517 A CN 201710543517A CN 107171763 A CN107171763 A CN 107171763A
Authority
CN
China
Prior art keywords
time
network
offset
migration
time migration
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
CN201710543517.9A
Other languages
English (en)
Other versions
CN107171763B (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.)
Beijing Ruixiang Technology Co ltd
Original Assignee
Beijing Oneapm Communication 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 Beijing Oneapm Communication Technology Co Ltd filed Critical Beijing Oneapm Communication Technology Co Ltd
Priority to CN201710543517.9A priority Critical patent/CN107171763B/zh
Publication of CN107171763A publication Critical patent/CN107171763A/zh
Application granted granted Critical
Publication of CN107171763B publication Critical patent/CN107171763B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种基于时间偏移的时间处理方法、装置、移动终端及时间处理系统,该方法适于在移动终端中执行,该移动终端与网络服务器通信连接,该方法包括:在第一时间段内向网络服务器发送第一数量个网络请求,接收网络服务器返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移;对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列;获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移;根据基准时间偏移,计算时间偏移序列的时间偏移方差;根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。

Description

一种基于时间偏移的时间处理方法、装置及移动终端
技术领域
本发明涉及互联网技术领域,特别涉及一种基于时间偏移的时间处理方法、装置、移动终端及时间处理系统。
背景技术
随着互联网技术和硬件技术的不断发展,越来越多的人开始使用如智能手机、平板电脑等移动终端设备。同时,移动互联网的广泛普及促使移动应用的发展更加迅猛,用户通过使用移动终端上安装的各类移动应用,进行阅读、聊天、购物等各项活动。为了进一步提升用户体验,提供更好的移动应用,需要了解用户对移动应用的使用情况以便改进应用性能。
在分布式环境,如移动网络环境下,各个移动终端,如手机中都运行着不同的移动应用。在这些移动应用内部通常会植入一些第三方SDK(Software Development Kit,软件开发工具包),例如数据采集SDK,这些SDK需要把采集到的一些数据指标加上时间信息上传到后端的网络服务器。但是,在数据收集到数据被传送到网络服务器是存在一个时间差的,如果使用手机端的时间,会不准确,如果使用了服务器端接收数据的时间,这个时间不是手机端中数据收集当时的时间点。另外,各个手机的时间设置可能有所不同,会有用户设置的时间不对或者不标准的情况。此时,就需要对采集的时间和服务器的时间进行一次校准操作。
现有的技术方案是每次在移动终端的移动应用内部采集到性能数据(例如网络请求的发出时间)时,都会使用发出网络请求的当时的时间戳来标记。考虑到每一个移动终端或者不同地区的移动终端用户设置的时间会有误差或者设置不对,这样搜集到的性能数据在服务器接收和处理的时候,就会存在误差,而且在后台Web页面展示这些采集自移动终端的移动应用内部的性能数据的时候,也不能很好展示这些性能数据。
发明内容
为此,本发明提供一种基于时间偏移的时间处理的技术方案,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种基于时间偏移的时间处理方法,适于在移动终端中执行,移动终端与网络服务器通信连接,该方法包括如下步骤:在第一时间段内向网络服务器发送第一数量个网络请求,接收网络服务器返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移;对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列;获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移;根据基准时间偏移,计算时间偏移序列的时间偏移方差;根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理方法中,网络请求包括发送网络请求时的发送请求时间,响应数据包括网络服务器接收网络请求时的接收请求时间,以及响应网络请求时的响应请求时间,获取第一数量个网络时间偏移的步骤包括:对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间;将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值;将第一差值与第二差值的均值作为该网络请求对应的网络时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理方法中,根据基准时间偏移,计算时间偏移序列的时间偏移方差的步骤包括:计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方和;将该平方和与第一数量的商作为时间偏移序列的时间偏移方差。
可选地,在根据本发明的基于时间偏移的时间处理方法中,根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移的步骤包括:根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,第二数量不大于第一数量;计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理方法中,根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合的步骤包括:计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数;选出不大于时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合;统计时间偏移集合中网络时间偏移的数量作为第二数量。
可选地,在根据本发明的基于时间偏移的时间处理方法中,移动终端中驻留有多个应用,当采集应用的数据以上报网络服务器时,方法还包括:获取移动终端的当前时间;将当前时间与最终时间偏移之和作为应用的数据采集时间,以实现移动终端与网络服务器的时间同步。
根据本发明的又一个方面,提供一种基于时间偏移的时间处理装置,适于驻留在移动终端中,该移动终端与网络服务器通信连接,该装置包括第一获取模块、生成模块、第二获取模块、第一计算模块和第二计算模块。其中,第一获取模块适于在第一时间段内向网络服务器发送第一数量个网络请求,接收网络服务器返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移;生成模块适于对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列;第二获取模块适于获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移;第一计算模块适于根据基准时间偏移,计算时间偏移序列的时间偏移方差;第二计算模块适于根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理装置中,网络请求包括发送网络请求时的发送请求时间,响应数据包括网络服务器接收网络请求时的接收请求时间,以及响应网络请求时的响应请求时间,第一获取模块进一步适于:对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间;将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值;将第一差值与第二差值的均值作为该网络请求对应的网络时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理装置中,第一计算模块进一步适于:计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方和;将该平方和与第一数量的商作为时间偏移序列的时间偏移方差。
可选地,在根据本发明的基于时间偏移的时间处理装置中,第二计算模块进一步适于:根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,第二数量不大于第一数量;计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移。
可选地,在根据本发明的基于时间偏移的时间处理装置中,第二计算模块进一步适于:计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数;选出不大于时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合;统计时间偏移集合中网络时间偏移的数量作为第二数量。
可选地,在根据本发明的基于时间偏移的时间处理装置中,移动终端中驻留有多个应用,该装置还包括同步模块,同步模块适于:当采集应用的数据以上报网络服务器时,获取移动终端的当前时间;将当前时间与最终时间偏移之和作为应用的数据采集时间,以实现移动终端与网络服务器的时间同步。
根据本发明的又一个方面,提供一种移动终端,包括根据本发明的基于时间偏移的时间处理装置。
根据本发明的又一个方面,提供一种时间处理系统,包括多个根据本发明的基于时间偏移的时间处理装置以及网络服务器。
根据本发明的又一个方面,提供一种移动终端,包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的基于时间偏移的时间处理方法的指令。
根据本发明的又一个方面,还提供一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令当由移动终端执行时,使得移动终端执行根据本发明的基于时间偏移的时间处理方法。
根据本发明的基于时间偏移的时间处理的技术方案,首先在第一时间段内向网络服务器发送第一数量个网络请求,以获取对应的第一数量个网络时间偏移,对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列,获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移,根据基准时间偏移,计算时间偏移序列的时间偏移方差,最后根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。在上述技术方案中,网络时间偏移是基于发送网络请求时的发送请求时间、网络服务器接收网络请求时的接受请求时间、响应网络请求时的响应请求时间以及接收网络请求对应的响应数据时的接收数据时间计算得出的,在一定程度上屏蔽了网络延时误差。在具体计算最终时间偏移时,根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移,进一步提升时间偏移的精确度和准确性。当采集移动终端中应用的数据以上报网络服务器时,直接将移动终端的当前时间与最终时间偏移之和作为该应用的数据采集时间即可,基于此实现了移动终端与网络服务器的时间同步,避免了两者时间偏差带来的误差问题,更好地在后台Web页面展示所采集自移动终端的移动应用内部的性能数据。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个实施例的时间处理系统100的示意图;
图2示出了根据本发明一个实施例的移动终端200的结构框图;
图3示出了根据本发明又一个实施例的基于时间偏移的时间处理方法300的流程图;
图4示出了根据本发明一个实施例的基于时间偏移的时间处理装置400的示意图;以及
图5示出了根据本发明又一个实施例的基于时间偏移的时间处理装置500的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的时间处理系统100的示意图。应当指出,图1中的时间处理系统100仅是示例性的,在具体的实践情况中,待时间处理系统100中可以有不同数量的移动终端以及网络服务器,本发明对时间处理系统中所包括的移动终端以及网络服务器的数量不做限制。如图1所示,时间处理系统100中包括移动终端200、移动终端600、移动终端700和网络服务器800。其中,网络服务器800分别与移动终端200、600和700通信连接,移动终端200、600和700可以是智能手机、平板电脑等,但不限于此。移动终端200、600和700中运行有各自相应的应用,在这些应用内部通常植入有第三方SDK,如数据采集SDK,数据采集SDK会定时对应用的数据进行采集以上报至通信连接的网络服务器800,以便网络服务器800对数据进行分析处理。以移动终端200为例,在上报给网络服务器800进行处理的应用数据中,包括数据采集SDK采集应用数据的时间,而该时间需要基于移动终端200与网络服务器800之间的时间偏移进行同步处理后获取,因此需要先通过时间处理系统100获取移动终端200和网络服务器800之间的最终时间偏移。在时间处理系统100中,移动终端200首先在第一时间段内向网络服务器800发送第一数量个网络请求,接收网络服务器800返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移,对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列,获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移,根据基准时间偏移,计算时间偏移序列的时间偏移方差,最后根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。此时,当采集移动终端200中应用的数据以上报网络服务器800时,直接将移动终端200的当前时间与最终时间偏移之和作为该应用的数据采集时间即可。
图2示出了根据本发明一个实施例的移动终端200的结构框图。移动终端200可以包括存储器接口202、一个或多个数据处理器、图像处理器和/或中央处理单元204,以及外围接口206。
存储器接口202、一个或多个处理器204和/或外围接口206既可以是分立元件,也可以集成在一个或多个集成电路中。在移动终端200中,各种元件可以通过一条或多条通信总线或信号线来耦合。传感器、设备和子系统可以耦合到外围接口206,以便帮助实现多种功能。
例如,运动传感器210、光线传感器212和距离传感器214可以耦合到外围接口206,以方便定向、照明和测距等功能。其他传感器216同样可以与外围接口206相连,例如定位系统(例如GPS接收机)、温度传感器、生物测定传感器或其他感测设备,由此可以帮助实施相关的功能。
相机子系统220和光学传感器222可以用于方便诸如记录照片和视频剪辑的相机功能的实现,其中所述相机子系统和光学传感器例如可以是电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。可以通过一个或多个无线通信子系统224来帮助实现通信功能,其中无线通信子系统可以包括射频接收机和发射机和/或光(例如红外)接收机和发射机。无线通信子系统224的特定设计和实施方式可以取决于移动终端200所支持的一个或多个通信网络。例如,移动终端200可以包括被设计成支持LTE、3G、GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BlueboothTM网络的通信子系统224。
音频子系统226可以与扬声器228以及麦克风230相耦合,以便帮助实施启用语音的功能,例如语音识别、语音复制、数字记录和电话功能。I/O子系统240可以包括触摸屏控制器242和/或一个或多个其他输入控制器244。触摸屏控制器242可以耦合到触摸屏246。举例来说,该触摸屏246和触摸屏控制器242可以使用多种触摸感测技术中的任何一种来检测与之进行的接触和移动或是暂停,其中感测技术包括但不局限于电容性、电阻性、红外和表面声波技术。一个或多个其他输入控制器244可以耦合到其他输入/控制设备248,例如一个或多个按钮、摇杆开关、拇指旋轮、红外端口、USB端口、和/或指示笔之类的指点设备。所述一个或多个按钮(未显示)可以包括用于控制扬声器228和/或麦克风230音量的向上/向下按钮。
存储器接口202可以与存储器250相耦合。该存储器250可以包括高速随机存取存储器和/或非易失性存储器,例如一个或多个磁盘存储设备,一个或多个光学存储设备,和/或闪存存储器(例如NAND,NOR)。存储器250可以存储操作系统272,例如Android、iOS或是Windows Phone之类的操作系统。该操作系统272可以包括用于处理基本系统服务以及执行依赖于硬件的任务的指令。存储器250还可以存储应用274。在移动设备运行时,会从存储器250中加载操作系统272,并且由处理器204执行。应用274在运行时,也会从存储器250中加载,并由处理器204执行。应用274运行在操作系统之上,利用操作系统以及底层硬件提供的接口实现各种用户期望的功能,如即时通信、网页浏览、图片管理等。应用274可以是独立于操作系统提供的,也可以是操作系统自带的。另外,应用274被安装到移动终端200中时,也可以向操作系统添加驱动模块。在上述各种应用274中,其中的一种应用为根据本发明的基于时间偏移的时间处理装置400。
图3示出了根据本发明一个实施例的基于时间偏移的时间处理方法300的流程图。基于时间偏移的时间处理方法300适于在移动终端(例如图2所示的移动终端200)中执行。
如图3所示,方法300始于步骤S310。在步骤S310中,在第一时间段内向网络服务器800发送第一数量个网络请求,接收网络服务器800返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移。根据本发明的一个实施例,网络请求包括发送网络请求时的发送请求时间,响应数据包括网络服务器接收网络请求时的接收请求时间,以及响应网络请求时的响应请求时间,可通过以下方式获取第一数量个网络时间偏移。首先,对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间,然后将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值,再将第一差值与第二差值的均值作为该网络请求对应的网络时间偏移。其中,第一时间段优选为1s,第一数量优选为5。
在该实施方式中,移动终端200在1s内向网络服务器800发送5个网络请求,依次为网络请求R1、R2、R3、R4和R5,发送网络请求R1~R5时的发送请求时间依次为Ta1、Ta2、Ta3、Ta4和Ta5,网络服务器800接收网络请求R1~R5时的接收请求时间依次为Tb1、Tb2、Tb3、Tb4和Tb5。随后,网络服务器800根据网络请求R1~R5进行数据响应,并相应生成与各网络请求对应的响应数据,网络请求R1、R2、R3、R4和R5对应的响应数据依次为S1、S2、S3、S4和S5,而响应网络请求A1~A5的响应请求时间依次为Tc1、Tc2、Tc3、Tc4和Tc5。关于响应请求时间,由于网络服务器800一旦响应了网络请求会即刻生成响应数据并发送回移动终端200,因此这里的响应请求时间即视为开始响应网络请求、完成响应数据生成并返回响应数据三者合一的时间。网络服务器800响应网络请求R1~R5时,会将各网络请求对应的响应数据S1~S5发送至移动终端200,响应数据中包括当前所响应的网络请求对应的接收请求时间和响应请求时间。网络服务器800返回响应数据时代码封装逻辑表示如下:
对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间,则接收网络请求R1~R5对应的响应数据S1~S5时的接收数据时间依次为Td1、Td2、Td3、Td4和Td5。表1示出了根据本发明一个实施例的与网络请求相关的各时间关系示例,具体如下所示:
网络请求 发送请求时间 接收请求时间 响应请求时间 接收数据时间
R1 Ta1 Tb1 Tc1 Td1
R2 Ta2 Tb2 Tc2 Td2
R3 Ta3 Tb3 Tc3 Td3
R4 Ta4 Tb4 Tc4 Td4
R5 Ta5 Tb5 Tc5 Td5
表1
获取各网络请求对应的发送请求时间、接收请求时间、响应请求时间和接收数据时间的具体数值,并均以时间戳(精确到毫秒)的形式表示,结果如表2所示:
表2
在计算各网络请求对应的网络偏移时,以网络请求R1为例,先将该网络请求对应的接收请求时间Tb1与发送请求时间Ta1之差作为第一差值,响应请求时间Tc1与接收数据时间Td1之差作为第二差值,可得第一差值为1417792627-1417792526=101,第二差值为1417792637-1417792728=-91,再将第一差值与第二差值的均值作为该网络请求对应的网络时间偏移,可得网络请求R1的网络时间偏移为[101+(-91)]/2=5。根据上述计算过程,得出网络请求R2~R5的网络时间偏移依次为-250.5、-66.5、16.5和-449。表3示出了根据本发明一个实施例的网络请求与网络时间偏移的对应关系,具体如下所示:
网络请求 网络时间偏移
R1 5
R2 -250.5
R3 -66.5
R4 16.5
R5 -449
表3
随后,进入步骤S320,对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列。根据本发明的一个实施例,对步骤S310得到的5个网络时间偏移按从小到大的顺序进行排序,生成的时间偏移序列为-499、-250.5、-66.5、5和16.5。
接下来,在步骤S330中,获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移。根据本发明的一个实施例,网络时间偏移-66.5在上述时间偏移序列里是中间大小,因此基准时间偏移为-66.5。需要说明的是,当第一数量为偶数时,时间偏移序列里中间大小的网络时间偏移会有2个,此时可选择位置靠后的一个作为基准时间偏移,比如若第一数量为6,则将时间偏移序列中第4个网络时间偏移作为基准时间偏移,当然也可以选择位置靠前的一个作为基准时间偏移,或者从这2个网络时间偏移中任选一个作为基准时间偏移均可。
在选定基准时间偏移后,执行步骤S340,根据基准时间偏移,计算时间偏移序列的时间偏移方差。根据本发明的一个实施例,可通过以下方式来计算时间偏移方差。首先,计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方和,可得该平方和为[-449-(-66.5)]2+[-250.5-(-66.5)]2+[-66.5-(-66.5)]2+[5-(-66.5)]2+[16.5-(-66.5)]2=192163.5,再将该平方和与第一数量的商作为时间偏移序列的时间偏移方差,可得时间偏移方差为192163.5/5=38432.7。
最后,进入步骤S350,根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。根据本发明的一个实施例,在计算最终时间偏移时,首先根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,其中第二数量不大于第一数量。在该实施方式中,具体可通过下列步骤形成时间偏移集合,即先计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数,从步骤S330可得基准时间偏移为-66.5,则5个偏移差值平方数依次为[-449-(-66.5)]2=146306.25、[-250.5-(-66.5)]2=33856、[-66.5-(-66.5)]2=0、[5-(-66.5)]2=5112.25和[16.5-(-66.5)]2=6889。表4示出了根据本发明一个实施例的网络请求与偏移差值平方数及网络时间偏移的对应关系,具体如下所示:
网络请求 偏移差值平方数 网络时间偏移
R1 5112.25 5
R2 33856 -250.5
R3 0 -66.5
R4 6889 16.5
R5 146306.25 -449
表4
接下来,选出不大于时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合。由于偏移差值平方数33856、0、5112.25和6889均满足不大于时间偏移方差,即不大于38432.7的条件,由表4可知这4个偏移差值平方数分别对应网络请求R2、R3、R1和R4。此时,获取偏移差值平方数33856、0、5112.25和6889对应的网络时间偏移-250.5、-66.5、5和16.5,以形成时间偏移集合,并统计时间偏移集合中网络时间偏移的数量作为第二数量,可得第二数量为4。在得到时间偏移集合后,计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移,则最终时间偏移为[-250.5+(-66.5)+5+16.5]/4=-73.875。关于获取最终时间偏移的关键性代码如下所示:
根据本发明的又一个实施例,移动终端200中驻留有多个应用,当采集应用的数据以上报网络服务器800时,先获取移动终端200的当前时间,再将当前时间与最终时间偏移之和作为该应用的数据采集时间,以实现移动终端200与网络服务器800的时间同步。在该实施方式中,移动终端200的当前时间为1417794097,最终时间偏移为-73.875,则数据采集时间为1417794097+(-73.875)=1417794023.125。以后每次需要向网络服务器800上报移动终端200中某一应用的数据时,均可直接将该应用的数据的采集时间设置为移动终端200的当前时间与最终时间偏移之和,以此作为时间信息对应用数据进行标记,通过这一修正方法来实现时间同步,避免移动终端和网络服务器之间的时间误差。
图4示出了根据本发明一个实施例的基于时间偏移的时间处理装置400的示意图。如图4所示,基于时间偏移的时间处理装置400包括第一获取模块410、生成模块420、第二获取模块430、第一计算模块440和第二计算模块450。
第一获取模块410适于在第一时间段内向网络服务器800发送第一数量个网络请求,接收网络服务器800返回的与网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移。网络请求包括发送网络请求时的发送请求时间,响应数据包括网络服务器接收网络请求时的接收请求时间,以及响应网络请求时的响应请求时间,第一获取模块410进一步适于对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间;将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值;将第一差值与第二差值的均值作为该网络请求对应的网络时间偏移。第一获取模块410执行上述操作的具体细节可参见方法300中的步骤S310,此处不予以赘述。
生成模块420与第一获取模块410相连,适于对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列。生成模块420执行上述操作的具体细节可参见方法300中的步骤S320,此处不予以赘述。
第二获取模块430与生成模块420相连,适于获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移。第二获取模块430执行上述操作的具体细节可参见方法300中的步骤S330,此处不予以赘述。
第一计算模块440分别与生成模块420和第二获取模块430相连,适于根据基准时间偏移,计算时间偏移序列的时间偏移方差。第一计算模块440进一步适于计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方和;将该平方和与第一数量的商作为时间偏移序列的时间偏移方差。第一计算模块440执行上述操作的具体细节可参见方法300中的步骤S340,此处不予以赘述。
第二计算模块450分别与生成模块420、第二获取模块430和第一计算模块440相连,适于根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。第二计算模块450进一步适于根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,第二数量不大于第一数量;计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移。第二计算模块450进一步适于计算时间偏移序列中各网络时间偏移与基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数;选出不大于时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合;统计时间偏移集合中网络时间偏移的数量作为第二数量。第二计算模块450执行上述操作的具体细节可参见方法300中的步骤S350,此处不予以赘述。
图5示出了本发明又一个实施例的基于时间偏移的时间处理装置500的示意图。如图5所示,基于时间偏移的时间处理装置500的第一获取模块510、生成模块520、第二获取模块530、第一计算模块540和第二计算模块550,分别与图4中基于时间偏移的时间处理装置400的第一获取模块410、生成模块430、第二获取模块430、第一计算模块440和第二计算模块450一一对应,是一致的,并新增了同步模块560。
由于移动终端200中驻留有多个应用,而同步模块560与第二计算模块550相连,则同步模块560适于当采集应用的数据以上报网络服务器800时,获取移动终端200的当前时间;将当前时间与最终时间偏移之和作为应用的数据采集时间,以实现移动终端200与网络服务器800的时间同步同步模块560执行上述操作的具体细节可参见方法300中执行步骤S350之后,在采集移动终端200中应用的数据以上报网络服务器800时修正数据采集时间的处理过程,此处不予以赘述。
关于基于时间偏移的时间处理的具体步骤以及实施例,在基于图3的描述中已经详细公开,此处不再赘述。
现有的时间同步处理方案是每次在移动终端的移动应用内部采集到性能数据(例如网络请求的发出时间)时,使用发出网络请求的当时的时间戳来标记。然而,一旦移动终端上设置的时间有误,则所搜集到的性能数据在服务器接收和处理的时候,就会存在误差,并不利于后台进行数据展示。根据本发明实施例的基于时间偏移的时间处理的技术方案,首先在第一时间段内向网络服务器发送第一数量个网络请求,以获取对应的第一数量个网络时间偏移,对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列,获取时间偏移序列里中间大小的网络时间偏移作为基准时间偏移,根据基准时间偏移,计算时间偏移序列的时间偏移方差,最后根据时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。在上述技术方案中,网络时间偏移是基于发送网络请求时的发送请求时间、网络服务器接收网络请求时的接受请求时间、响应网络请求时的响应请求时间以及接收网络请求对应的响应数据时的接收数据时间计算得出的,在一定程度上屏蔽了网络延时误差。在具体计算最终时间偏移时,根据基准时间偏移和时间偏移方差,从时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,计算时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移,进一步提升时间偏移的精确度和准确性。当采集移动终端中应用的数据以上报网络服务器时,直接将移动终端的当前时间与最终时间偏移之和作为该应用的数据采集时间即可,基于此实现了移动终端与网络服务器的时间同步,避免了两者时间偏差带来的误差问题,更好地在后台Web页面展示所采集自移动终端的移动应用内部的性能数据。
A6.如A1-5中任一项所述的方法,所述移动终端中驻留有多个应用,当采集所述应用的数据以上报所述网络服务器时,所述方法还包括:
获取所述移动终端的当前时间;
将所述当前时间与所述最终时间偏移之和作为所述应用的数据采集时间,以实现所述移动终端与所述网络服务器的时间同步。
B8.如B7所述的装置,所述网络请求包括发送所述网络请求时的发送请求时间,所述响应数据包括所述网络服务器接收所述网络请求时的接收请求时间,以及响应所述网络请求时的响应请求时间,所述第一获取模块进一步适于:
对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间;
将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值;
将所述第一差值与所述第二差值的均值作为该网络请求对应的网络时间偏移。
B9.如B7或8所述的装置,所述第一计算模块进一步适于:
计算所述时间偏移序列中各网络时间偏移与所述基准时间偏移的差值的平方和;
将该平方和与第一数量的商作为所述时间偏移序列的时间偏移方差。
B10.如B7-9中任一项所述的装置,所述第二计算模块进一步适于:
根据所述基准时间偏移和时间偏移方差,从所述时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,所述第二数量不大于所述第一数量;
计算所述时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移。
B11.如B10所述的装置,所述第二计算模块进一步适于:
计算所述时间偏移序列中各网络时间偏移与所述基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数;
选出不大于所述时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合;
统计所述时间偏移集合中网络时间偏移的数量作为第二数量。
B12.如B7-11中任一项所述的装置,所述移动终端中驻留有多个应用,所述装置还包括同步模块,所述同步模块适于:
当采集所述应用的数据以上报所述网络服务器时,获取所述移动终端的当前时间;
将所述当前时间与所述最终时间偏移之和作为所述应用的数据采集时间,以实现所述移动终端与所述网络服务器的时间同步。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的基于时间偏移的时间处理方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种基于时间偏移的时间处理方法,适于在移动终端中执行,所述移动终端与网络服务器通信连接,所述方法包括:
在第一时间段内向所述网络服务器发送第一数量个网络请求,接收所述网络服务器返回的与所述网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移;
对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列;
获取所述时间偏移序列里中间大小的网络时间偏移作为基准时间偏移;
根据所述基准时间偏移,计算所述时间偏移序列的时间偏移方差;
根据所述时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。
2.如权利要求1所述的方法,所述网络请求包括发送所述网络请求时的发送请求时间,所述响应数据包括所述网络服务器接收所述网络请求时的接收请求时间,以及响应所述网络请求时的响应请求时间,所述获取第一数量个网络时间偏移的步骤包括:
对每一个网络请求,获取接收与该网络请求对应的响应数据时的接收数据时间;
将该网络请求对应的接收请求时间与发送请求时间之差作为第一差值,响应请求时间与接收数据时间之差作为第二差值;
将所述第一差值与所述第二差值的均值作为该网络请求对应的网络时间偏移。
3.如权利要求1或2所述的方法,所述根据所述基准时间偏移,计算所述时间偏移序列的时间偏移方差的步骤包括:
计算所述时间偏移序列中各网络时间偏移与所述基准时间偏移的差值的平方和;
将该平方和与第一数量的商作为所述时间偏移序列的时间偏移方差。
4.如权利要求1-3中任一项所述的方法,所述根据所述时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移的步骤包括:
根据所述基准时间偏移和时间偏移方差,从所述时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合,所述第二数量不大于所述第一数量;
计算所述时间偏移集合中的各网络偏移时间之和与第二数量的商作为最终时间偏移。
5.如权利要求4所述的方法,所述根据所述基准时间偏移和时间偏移方差,从所述时间偏移序列中选出第二数量个网络偏移时间以形成时间偏移集合的步骤包括:
计算所述时间偏移序列中各网络时间偏移与所述基准时间偏移的差值的平方,以获取第一数量个偏移差值平方数;
选出不大于所述时间偏移方差的偏移差值平方数对应的网络时间偏移,以形成时间偏移集合;
统计所述时间偏移集合中网络时间偏移的数量作为第二数量。
6.一种基于时间偏移的时间处理装置,驻留在移动终端中,所述移动终端与网络服务器通信连接,所述装置包括:
第一获取模块,适于在第一时间段内向所述网络服务器发送第一数量个网络请求,接收所述网络服务器返回的与所述网络请求对应的第一数量个响应数据,以获取对应的第一数量个网络时间偏移;
生成模块,适于对第一数量个网络时间偏移按从小到大的顺序进行排序,以生成时间偏移序列;
第二获取模块,适于获取所述时间偏移序列里中间大小的网络时间偏移作为基准时间偏移;
第一计算模块,适于根据所述基准时间偏移,计算所述时间偏移序列的时间偏移方差;
第二计算模块,适于根据所述时间偏移序列、基准时间偏移和时间偏移方差,计算最终时间偏移。
7.一种移动终端,包括如权利要求6所述的基于时间偏移的时间处理装置。
8.一种时间处理系统,包括:
多个如权利要求7所述的移动终端;以及
如权利要求6所述的网络服务器。
9.一种移动终端,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1至5所述的方法中的任一方法的指令。
10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由移动终端执行时,使得所述移动终端执行根据权利要求1至5所述的方法中的任一方法。
CN201710543517.9A 2017-07-05 2017-07-05 一种基于时间偏移的时间处理方法、装置及移动终端 Active CN107171763B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710543517.9A CN107171763B (zh) 2017-07-05 2017-07-05 一种基于时间偏移的时间处理方法、装置及移动终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710543517.9A CN107171763B (zh) 2017-07-05 2017-07-05 一种基于时间偏移的时间处理方法、装置及移动终端

Publications (2)

Publication Number Publication Date
CN107171763A true CN107171763A (zh) 2017-09-15
CN107171763B CN107171763B (zh) 2018-10-23

Family

ID=59822823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710543517.9A Active CN107171763B (zh) 2017-07-05 2017-07-05 一种基于时间偏移的时间处理方法、装置及移动终端

Country Status (1)

Country Link
CN (1) CN107171763B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145896A (zh) * 2007-09-17 2008-03-19 浙江中控技术有限公司 实现控制站之间时钟同步的控制系统和方法
CN101860952A (zh) * 2009-04-09 2010-10-13 中兴通讯股份有限公司 一种基于ip网络的无线基站时钟校正方法及系统
US20150124844A1 (en) * 2012-06-19 2015-05-07 Nec Corporation Clock synchronization system, clock synchronization method, and storage medium whereupon clock synchronization program is stored
CN104683181A (zh) * 2015-02-12 2015-06-03 北京蓝海讯通科技有限公司 一种性能监控方法、设备和系统
WO2016069841A1 (en) * 2014-10-29 2016-05-06 Meggitt Training Systems, Inc. (Mtsi) Systems and methods for syncing a host computer with a variety of external devices
CN105629278A (zh) * 2014-11-21 2016-06-01 桂林电子科技大学 一种高精度gnss伪距单点定位的互差中值加权定位方法
CN105915308A (zh) * 2016-07-08 2016-08-31 腾讯科技(深圳)有限公司 一种时间同步方法、装置及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145896A (zh) * 2007-09-17 2008-03-19 浙江中控技术有限公司 实现控制站之间时钟同步的控制系统和方法
CN101860952A (zh) * 2009-04-09 2010-10-13 中兴通讯股份有限公司 一种基于ip网络的无线基站时钟校正方法及系统
US20150124844A1 (en) * 2012-06-19 2015-05-07 Nec Corporation Clock synchronization system, clock synchronization method, and storage medium whereupon clock synchronization program is stored
WO2016069841A1 (en) * 2014-10-29 2016-05-06 Meggitt Training Systems, Inc. (Mtsi) Systems and methods for syncing a host computer with a variety of external devices
CN105629278A (zh) * 2014-11-21 2016-06-01 桂林电子科技大学 一种高精度gnss伪距单点定位的互差中值加权定位方法
CN104683181A (zh) * 2015-02-12 2015-06-03 北京蓝海讯通科技有限公司 一种性能监控方法、设备和系统
CN105915308A (zh) * 2016-07-08 2016-08-31 腾讯科技(深圳)有限公司 一种时间同步方法、装置及系统

Also Published As

Publication number Publication date
CN107171763B (zh) 2018-10-23

Similar Documents

Publication Publication Date Title
CN106161628B (zh) 拍摄文件上传方法及装置
CN106934376B (zh) 一种图像识别方法、装置及移动终端
RU2667027C2 (ru) Способ и устройство категоризации видео
KR20140009074A (ko) 동기화 애플리케이션들에 대한 스마트 스케줄링 동기화 방법 및 모바일 디바이스
CN106027191B (zh) 时间的更新方法、装置和终端设备
CN105447820B (zh) 一种图片处理方法、装置和移动终端
CN104881408A (zh) 页面点击次数统计及结果展示方法、装置和系统
CN106357480B (zh) 监测应用的网络性能的方法、装置及移动终端
CN107025421B (zh) 指纹识别方法和装置
CN105677314B (zh) 滚动事件的处理方法、装置和设备
CN107871000B (zh) 音频播放方法、装置、存储介质及电子设备
CN107656866A (zh) 一种测试应用流畅度的方法、移动终端和计算设备
CN107314777A (zh) 一种动态设定计步阈值的方法和移动终端
CN108415734A (zh) 一种应用恢复装置、方法和移动终端
CN105095081A (zh) 应用程序的功能测试方法及装置
CN105241594A (zh) 一种确定消耗的能量值的方法和装置
CN107153546A (zh) 一种视频播放方法及移动设备
CN110516187A (zh) 一种页面处理方法、移动终端、可读存储介质
AU2017394292A1 (en) Step Counting Method And Apparatus For Treadmill
CN112783779A (zh) 测试用例的生成方法、装置、电子设备和存储介质
CN108989383B (zh) 数据处理方法和客户端
CN107682691B (zh) 一种相机对焦校准的方法、终端及计算机可读存储介质
CN106372003B (zh) 缓存数据清理方法、装置及终端
CN107171763B (zh) 一种基于时间偏移的时间处理方法、装置及移动终端
CN110275639B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220719

Address after: 100193 room 101-216, 2nd floor, building 4, East District, yard 10, northwest Wangdong Road, Haidian District, Beijing

Patentee after: Beijing Ruixiang Technology Co.,Ltd.

Address before: 100189 3rd and 4th floors, building a-5, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee before: BEIJING ONEAPM Co.,Ltd.

TR01 Transfer of patent right