本发明涉及计算机技术领域,具体而言,涉及一种链接生成方法和装置。
背景技术:
短链接,通俗来说就是将长的URL网址,通过程序计算等方式转换为简短的网址字符串。自微博盛行以来,在微博字数有限的特色下,短链接也盛行于微博网站,以节省字数。
目前,短链接在使用方面存在的最大问题是,由于短链接的长度较短,容易出现短链接重复使用的情况:例如,为不同的页面生成的两个短链接相同,这就造成了短链接冲突的情况发生,此时用户点击短链接难以进入正确的页面。
技术实现要素:
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的链接生成方法和装置。
依据本发明的一个方面,提供了一种链接生成方法,包括:获取第一链接;所述第一链接用于在被点击时跳转到指定位置;从所述数据库中获取自增值;对所述自增值加锁;加锁的所述自增值禁止被再次获取;基于预设规则对所述自增值进行计算,得到第二链接;所述第二链接用于在被点击时跳转到所述指定位置。
依据本发明的另一方面,提供了一种链接生成装置,包括:第一链接获取模块,用于获取第一链接;所述第一链接用于在被点击时跳转到指定位置;自增值获取模块,用于从所述数据库中获取自增值;加锁模块,用于对所述自增值加锁;加锁的所述自增值禁止被再次获取;第二链接生成模块,用于基于预设规则对所述自增值进行计算,得到第二链接;所述第二链接用于在被点击时跳转到所述指定位置。
根据以上技术方案,本发明的链接生成方法和装置至少具有以下优点:
在本发明的技术方案中,在为第一链接从数据库中获取自增值时,由于可能存在其他链接需要从数据库中获取自增值以生成新链接,会导致同样的自增值多次使用生成相同链接的情况;为了避免同一自增值被多次使用,根据本发明的技术方案,在自增值被成功获取后对其进行加锁,以保证其无法再被获取,使得每个自增值只能被获取一次,进而只能为第一链接生成相应的第二链接,防止出现链接冲突的情况。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明的一个实施例的链接生成方法的流程图;
图2示出了根据本发明的一个实施例的链接生成方法的流程图;
图3示出了根据本发明的一个实施例的链接生成方法的流程图;
图4示出了根据本发明的一个实施例的链接生成装置的框图;
图5示出了根据本发明的一个实施例的链接生成装置的框图;
图6示出了根据本发明的一个实施例的链接生成装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明的一个实施例中提供了一种链接生成方法,包括:
步骤110,获取第一链接;第一链接用于在被点击时跳转到指定位置。在本实施例中,对第一链接不进行限制,一般地第一链接的长度较长,其可以是某网页、某图片在网络中的原始链接。
步骤120,从数据库中获取自增值。在本实施例中,数据库提供自增ID(自增值),每次从数据库中取值时取得的值都在增大,以免和之前的取值重复;由于不同的取值用于生成不同的链接,所以利用自增ID可以有效避免出现链接冲突的情况。
步骤130,对自增值加锁;加锁的自增值禁止被再次获取。在本实施例中,加锁是实现数据库并发控制的一个非常重要的技术;由于从数据库取值有先后顺序,所以只要成功获取该自增值,对该自增值进行加锁,则该自增值之后无法继续被获取,这导致每个自增值只能被成功获取一次。
步骤140,基于预设规则对自增值进行计算,得到第二链接;第二链接用于在被点击时跳转到指定位置。在本实施例中,对第二链接不进行限制,一般地第二链接长度较短,即短链接;在本实施例中,对于预设规则不进行限制,例如,其可以是将自增值由10进制转换为36进制的规则,也可以是将自增值由10进制转换为62进制的规则等。根据本实施例的技术方案,由于每个自增值只能被获取一次,所以根据获取的自增值生成第二链接不会与其他链接存在冲突。
如图2所示,本发明的一个实施例中提供了一种链接生成方法,包括:
步骤210,获取第一链接;第一链接用于在被点击时跳转到指定位置。
步骤220,从数据库中获取自增值。
步骤230,对自增值加锁;加锁的自增值禁止被再次获取。
步骤240,基于预设规则对自增值进行计算,得到第二链接;第二链接用于在被点击时跳转到指定位置。
步骤250,在禁止通过第二链接跳转到指定位置时,对数据库中的自增值进行解锁。在本实施例的技术方案中,禁止通过第二链接跳转到指定位置时,说明第二链接已经失效,彼此需要对自增值解锁,以使得自增值可以继续被获取以生成新的链接。
步骤260,监测获取自增值后的时间,在获取自增值后到达预定的第二时间阈值时,对数据库中的自增值进行解锁。在本实施例中,第二链接在使用一段时间后就不再被使用,所以可以预估从第二链接生成直至其不再被使用的这段时间的长度,设置第二时间阈值,以保证在第二链接不再被使用时,可以及时解锁自增值。
如图3所示,本发明的一个实施例中提供了一种链接生成方法,包括:
步骤310,获取第一链接;第一链接用于在被点击时跳转到指定位置。
步骤320,从数据库中获取自增值。
步骤330,对自增值加锁;加锁的自增值禁止被再次获取。
步骤340,建立第一链接和第二链接的映射关系,映射关系用于在第二链接被点击时映射到第一链接上以实现跳转。
步骤350,监测生成第二链接后的时间,在生成第二链接后到达预设的第一时间阈值时,取消第一链接和第二链接的映射关系,以禁止通过第二链接跳转到指定位置,以及对数据库中的自增值进行解锁。在本实施例中,第二链接具有一定的有效期,所以可以将该有效期设置为第一时间阈值,保证第二链接失效时,及时解锁自增值。
步骤360,统计在指定时间段内对数据库的访问次数,根据指定时间段的长度和访问次数计算第二时间阈值。在本实施例的技术方案中,在第二链接频繁被点击时,数据库接收的访问频率较高,在第二链接较少被点击时,数据库接收的访问频率较低;则统计在指定时间段内对数据库的访问次数,可以预估第二链接不再被使用的时间,来设置第二时间阈值。
步骤370,监测获取自增值后的时间,在获取自增值后到达预定的第二时间阈值时,对数据库中的自增值进行解锁。
如图4所示,本发明的一个实施例中提供了一种链接生成装置,包括:
第一链接获取模块410,获取第一链接;第一链接用于在被点击时跳转到指定位置。在本实施例中,对第一链接不进行限制,一般地第一链接的长度较长,其可以是某网页、某图片在网络中的原始链接。
自增值获取模块420,从数据库中获取自增值。在本实施例中,数据库提供自增ID(自增值),每次从数据库中取值时取得的值都在增大,以免和之前的取值重复;由于不同的取值用于生成不同的链接,所以利用自增ID可以有效避免出现链接冲突的情况。
加锁模块430,对自增值加锁;加锁的自增值禁止被再次获取。在本实施例中,加锁是实现数据库并发控制的一个非常重要的技术;由于从数据库取值有先后顺序,所以只要成功获取该自增值,对该自增值进行加锁,则该自增值之后无法继续被获取,这导致每个自增值只能被成功获取一次。
第二链接生成模块440,基于预设规则对自增值进行计算,得到第二链接;第二链接用于在被点击时跳转到指定位置。在本实施例中,对第二链接不进行限制,一般地第二链接长度较短,即短链接;在本实施例中,对于预设规则不进行限制,例如,其可以是将自增值由10进制转换为36进制的规则,也可以是将自增值由10进制转换为62进制的规则等。根据本实施例的技术方案,由于每个自增值只能被获取一次,所以根据获取的自增值生成第二链接不会与其他链接存在冲突。
如图5所示,本发明的一个实施例中提供了一种链接生成装置,包括:
第一链接获取模块510,获取第一链接;第一链接用于在被点击时跳转到指定位置。
自增值获取模块520,从数据库中获取自增值。
加锁模块530,对自增值加锁;加锁的自增值禁止被再次获取。
第二链接生成模块540,基于预设规则对自增值进行计算,得到第二链接;第二链接用于在被点击时跳转到指定位置。
第一解锁模块550,在禁止通过第二链接跳转到指定位置时,对数据库中的自增值进行解锁。在本实施例的技术方案中,禁止通过第二链接跳转到指定位置时,说明第二链接已经失效,彼此需要对自增值解锁,以使得自增值可以继续被获取以生成新的链接。
第二解锁模块560,监测获取自增值后的时间,在获取自增值后到达预定的第二时间阈值时,对数据库中的自增值进行解锁。在本实施例中,第二链接在使用一段时间后就不再被使用,所以可以预估从第二链接生成直至其不再被使用的这段时间的长度,设置第二时间阈值,以保证在第二链接不再被使用时,可以及时解锁自增值。
如图6所示,本发明的一个实施例中提供了一种链接生成装置,包括:
第一链接获取模块610,获取第一链接;第一链接用于在被点击时跳转到指定位置。
自增值获取模块620,从数据库中获取自增值。
加锁模块630,对自增值加锁;加锁的自增值禁止被再次获取。
第二链接生成模块640,建立第一链接和第二链接的映射关系,映射关系用于在第二链接被点击时映射到第一链接上以实现跳转。
第一解锁模块650和映射关系取消模块660,第一解锁模块650监测生成第二链接后的时间,在生成第二链接后到达预设的第一时间阈值时,映射关系取消模块660,取消第一链接和第二链接的映射关系,以禁止通过第二链接跳转到指定位置,以及对数据库中的自增值进行解锁。在本实施例中,第二链接具有一定的有效期,所以可以将该有效期设置为第一时间阈值,保证第二链接失效时,及时解锁自增值。
时间阈值设置模块670,统计在指定时间段内对数据库的访问次数,根据指定时间段的长度和访问次数计算第二时间阈值。在本实施例的技术方案中,在第二链接频繁被点击时,数据库接收的访问频率较高,在第二链接较少被点击时,数据库接收的访问频率较低;则统计在指定时间段内对数据库的访问次数,可以预估第二链接不再被使用的时间,来设置第二时间阈值。
第二解锁模块680,监测获取自增值后的时间,在获取自增值后到达预定的第二时间阈值时,对数据库中的自增值进行解锁。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的链接生成装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
A1、一种链接生成方法,包括:
获取第一链接;所述第一链接用于在被点击时跳转到指定位置;
从所述数据库中获取自增值;
对所述自增值加锁;加锁的所述自增值禁止被再次获取;
基于预设规则对所述自增值进行计算,得到第二链接;所述第二链接用于在被点击时跳转到所述指定位置。
A2、根据A1所述的链接生成方法,还包括:
在禁止通过所述第二链接跳转到所述指定位置时,对所述数据库中的所述自增值进行解锁。
A3、根据A2所述的链接生成方法,在禁止通过所述第二链接跳转到所述指定位置时,对所述数据库中的自增值进行解锁,具体包括:
监测生成所述第二链接后的时间,在生成所述第二链接后到达预设的第一时间阈值时,禁止通过所述第二链接跳转到所述指定位置,以及对所述数据库中的所述自增值进行解锁。
A4、根据A2所述的链接生成方法,基于预设规则对所述自增值进行计算,得到第二链接,具体包括:
建立所述第一链接和所述第二链接的映射关系,所述映射关系用于在所述第二链接被点击时映射到所述第一链接上以实现跳转;所述方法还包括:
取消所述第一链接和所述第二链接的映射关系,以禁止通过所述第二链接跳转到所述指定位置。
A5、根据A1所述的链接生成方法,还包括:
监测获取所述自增值后的时间,在获取所述自增值后到达预定的第二时间阈值时,对所述数据库中的所述自增值进行解锁。
A6、根据A5所述的链接生成方法,在监测获取所述自增值后的时间之前,还包括:
统计在指定时间段内对所述数据库的访问次数,根据所述指定时间段的长度和所述访问次数计算所述第二时间阈值。
A7、一种链接生成装置,包括:
第一链接获取模块,用于获取第一链接;所述第一链接用于在被点击时跳转到指定位置;
自增值获取模块,用于从所述数据库中获取自增值;
加锁模块,用于对所述自增值加锁;加锁的所述自增值禁止被再次获取;
第二链接生成模块,用于基于预设规则对所述自增值进行计算,得到第二链接;所述第二链接用于在被点击时跳转到所述指定位置。
A8、根据A7所述的链接生成装置,还包括:
第一解锁模块,用于在禁止通过所述第二链接跳转到所述指定位置时,对所述数据库中的所述自增值进行解锁。
A9、根据A8所述的链接生成装置,
所述第一解锁模块监测生成所述第二链接后的时间,在生成所述第二链接后到达预设的第一时间阈值时,禁止通过所述第二链接跳转到所述指定位置,以及对所述数据库中的所述自增值进行解锁。
A10、根据A8所述的链接生成装置,
所述第二链接生成模块建立所述第一链接和所述第二链接的映射关系,所述映射关系用于在所述第二链接被点击时映射到所述第一链接上以实现跳转;所述装置还包括:
映射关系取消模块,用于取消所述第一链接和所述第二链接的映射关系,以禁止通过所述第二链接跳转到所述指定位置。
A11、根据A7所述的链接生成装置,还包括:
第二解锁模块,用于监测获取所述自增值后的时间,在获取所述自增值后到达预定的第二时间阈值时,对所述数据库中的所述自增值进行解锁。
A12、根据A11所述的链接生成装置,还包括:
时间阈值设置模块,用于统计在指定时间段内对所述数据库的访问次数,根据所述指定时间段的长度和所述访问次数计算所述第二时间阈值。