重复数据检测方法及装置与流程

文档序号:24811609发布日期:2021-04-27 12:53阅读:95来源:国知局
1.本申请涉及计算机
技术领域
:,具体而言,涉及重复数据检测方法及装置。
背景技术
::2.现有技术中,往往会采用布隆过滤器来满足海量数据快速判定重复的应用场景,例如:通过布隆过滤器实现网络爬虫对url(uniformresourcelocators,统一资源定位符)去重、反垃圾邮件等需求。3.标准的布隆过滤器能够以极高的时间效率检索一个元素是否存在于一个集合中,同时兼具极高的空间使用率。但是,对于标准布隆过滤器而言,数据一经记录就无法删除,如果网络爬虫采用标准布隆过滤器判断重复url,即意味着同一个网页无法被重复爬取,这将导致无法发现页面内容的更新,进而影响检测结果的准确性。4.因此,对于本领域技术人员而言,研究一种更加合理的重复数据检测方法或装置具有重要意义。技术实现要素:5.本申请实施例通过提供一种重复数据检测方法及装置,以解决现有技术中的上述问题。6.为了实现上述目的,本申请较佳实施例采用的技术方案如下:7.第一方面,本申请实施例提供一种重复数据检测方法,应用于电子设备,所述电子设备配置有布隆过滤器及持久化存储单元,所述布隆过滤器至少用于存储数据,所述持久化存储单元至少用于存储所述数据对应的特征信息,所述方法包括:8.获取待检测的目标数据;9.查询所述布隆过滤器中是否包含所述目标数据;10.若所述布隆过滤器中包含所述目标数据,判定所述目标数据为重复数据;11.若所述布隆过滤器中不包含所述目标数据,则将所述目标数据记录到所述布隆过滤器,并将所述目标数据对应的特征信息记录到所述持久化存储单元。12.可选地,在本申请的一种实施例中,所述布隆过滤器中还存储有数据的特征值,所述查询所述布隆过滤器中是否包含所述目标数据的步骤,包括:13.通过散列算法对所述目标数据进行散列处理,得到所述目标数据对应的特征值;14.判断所述目标数据对应的特征值是否已全部被所述布隆过滤器记录;15.若所述特征值未全部被所述布隆过滤器记录,则判定所述布隆过滤器中不包含所述目标数据。16.可选地,在本申请的一种实施例中,所述将所述目标数据对应的特征信息记录到所述持久化存储单元的步骤,包括:17.所述目标数据对应的特征信息,所述特征信息包括所述目标数据对应的过期时间及特征值;18.将所述目标数据对应的过期时间及特征值记录到所述持久化存储单元;其中,所述特征值的存储方式包括按avro格式进行记录,并根据所述特征值对应的过期时间分区存储。19.可选地,在本申请的一种实施例中,所述根据所述特征值对应的过期时间分区存储的步骤,包括:20.将过期时间相同的目标数据所对应的特征值存储到所述持久化存储单元中的同一分区。21.进一步地,在本申请的一种实施例中,所述方法还包括:22.基于所述过期时间在所述持久化存储单元的相应分区中查找对应的目标文件;23.根据所述目标文件中存储的特征值对所述布隆过滤器中记录的,与所述特征值对应的数据进行删除。24.第二方面,本申请实施例提供一种重复数据检测装置,该装置应用于电子设备,所述电子设备配置有布隆过滤器及持久化存储单元,所述布隆过滤器至少用于存储数据,所述持久化存储单元至少用于存储所述数据对应的特征信息,所述装置包括:25.获取模块,用于获取待检测的目标数据;26.查询模块,用于查询所述布隆过滤器中是否包含所述目标数据;27.判定模块,用于在所述布隆过滤器中包含所述目标数据时,判定所述目标数据为重复数据;28.记录模块,用于在所述布隆过滤器中不包含所述目标数据时,将所述目标数据记录到所述布隆过滤器,并将所述目标数据对应的特征信息记录到所述持久化存储单元。29.可选地,在本申请的一种实施例中,所述布隆过滤器中还存储有数据的特征值,所述查询模块具体用于:30.通过散列算法对所述目标数据进行散列处理,得到所述目标数据对应的特征值;31.判断所述目标数据对应的特征值是否已全部被所述布隆过滤器记录;32.在所述特征值未全部被所述布隆过滤器记录时,判定所述布隆过滤器中不包含所述目标数据。33.可选地,在本申请的一种实施例中,所述记录模块在将所述目标数据对应的特征信息记录到所述持久化存储单元时具体用于:34.所述目标数据对应的特征信息,所述特征信息包括所述目标数据对应的过期时间及特征值;35.将所述目标数据对应的过期时间及特征值记录到所述持久化存储单元;其中,所述特征值的存储方式包括按avro格式进行记录,并根据所述特征值对应的过期时间分区存储。36.可选地,在本申请的一种实施例中,所述记录模块在根据所述特征值对应的过期时间分区存储时还具体用于:37.将过期时间相同的目标数据所对应的特征值存储到所述持久化存储单元中的同一分区。38.进一步地,在本申请的一种实施例中,所述装置还包括删除模块,所述删除模块用于:39.基于所述过期时间在所述持久化存储单元的相应分区中查找对应的目标文件;40.根据所述目标文件中存储的特征值对所述布隆过滤器中记录的,与所述特征值对应的数据进行删除。41.第三方面,本申请实施例提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现如上任一项所述的方法。42.第四方面,本申请实施例还提供一种电子设备,所述电子设备包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如上任一项所述的方法。43.相对于现有技术而言,本申请实施例中提供的重复数据检测方法,至少具有如下技术效果或优点:44.本申请实施例提供的重复数据检测方法,通过在判定待检测的目标数据为非重复数据时,将该目标数据记录到布隆过滤器,并将该目标数据对应的特征信息记录到持久化存储单元,不仅可以在后续过程中通过该布隆过滤器检测出与该目标数据相同的重复数据,同时还可以在该第一数据过期时基于该持久化存储单元中记录的特征信息将其从布隆过滤器中删除,从而实现支持过期时间的海量数据重复检测,提高设备在有过期时间要求的应用场景下进行重复数据检测的准确性。附图说明45.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。46.图1为本申请实施例提供的电子设备的结构示意图;47.图2为本申请实施例提供的重复数据检测方法的步骤流程示意图;48.图3为图2中步骤s20的子步骤流程示意图;49.图4-图7为本申请实施例提供的重复数据检测方法中布隆过滤器的状态示意图;50.图8为本申请实施例提供的重复数据检测装置的模块示意图。51.图标:20-电子设备;201-处理器;202-存储器;203-总线;70-重复数据检测装置;701-获取模块;702-查询模块;703-判定模块;704-记录模块;705-删除模块。具体实施方式52.为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。在不冲突的情况下,下述实施例及实施例中的特征可以相互组合。53.需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。54.参照图1,为本申请实施例提供的电子设备20的结构示意图,该电子设备20包括至少一个处理器201、以及与处理器201连接的至少一个存储器202、总线203;其中,处理器201、存储器202通过总线203完成相互间的通信;处理器201用于调用存储器202中的程序指令,以执行如下所述的重复数据检测方法。55.需要说明的是,本文中的电子设备20可以是,但不限于服务器、pc(personalcomputer,个人计算机)、pad(portableandroiddevice,平板电脑)、手机等。56.参照图2,为本申请实施例提供的重复数据检测方法的步骤流程示意图,该方法可以应用于图1所示的电子设备20,从而为该电子设备20提供如下所述的支持过期时间的海量数据重复检测功能。57.下面结合图2-图3对本申请实施例提供的重复数据检测方法进行详细说明。58.参照图2,在本申请实施例中,该电子设备20配置有支持删除的布隆过滤器及持久化存储单元,其中,所述布隆过滤器至少用于存储数据,所述持久化存储单元至少用于存储所述数据对应的特征信息,该方法包括:59.步骤s10,获取待检测的目标数据。60.步骤s20,查询所述布隆过滤器中是否包含所述目标数据。61.步骤s30,在所述布隆过滤器中包含所述目标数据时,判定所述目标数据为重复数据。62.步骤s31,在所述布隆过滤器中不包含所述目标数据时,将所述目标数据记录到所述布隆过滤器,并将所述目标数据对应的特征信息记录到所述持久化存储单元。63.本领域技术人员应当理解,布隆过滤器(bloomfilter)本质上是一种概率型数据结构,其特点是可以实现高效地插入和查询数据,以极高的时间效率检索一个元素是否存在于一个集合中。64.但是,由于布隆过滤器中同一位上可能记录着不同数据对应的特征值(即散列值或哈希值),因此布隆过滤器在检测重复数据的过程中存在一定的误识别率(在布隆过滤器bit位长度一定的情况下,插入元素越多,误识别率越高),并且存在删除困难的问题。65.对于标准布隆过滤器而言,通常数据一经记录就无法删除,如果网络爬虫采用标准布隆过滤器判断重复url,即意味着同一个网页无法被重复爬取,这将导致无法发现页面内容的更新,进而影响重复数据检测结果的准确性。66.随着技术的发展,目前已研究出支持删除的布隆过滤器,例如计量型布隆过滤器(countingbloomfilter)及其相关的一系列变种(包括bloomfilterwithvariable-lengthsignatures,d-leftcountingbloomfilter等),其工作原理为:在插入元素时对插入数据对应的k(即该插入数据对应k个特征值)个counter位的值分别加1,删除元素时对删除数据对应的m(即该删除数据对应m个特征值)个counter位的值分别减1,从而通过占用更多的存储空间来给布隆过滤器增加删除操作。67.本申请实施例中,为了实现在数据过期时自动对布隆过滤器中已记录的对应数据进行删除,避免布隆过滤器中记录的过期数据对重复检测结果造成影响,从而提高检测结果的准确性,申请人采用将上述的支持删除的布隆过滤器与持久化存储单元相结合的方式,在判定待检测的目标数据为非重复数据时,将该目标数据记录到布隆过滤器,同时将该目标数据对应的过期时间和特征值记录到持久化存储单元,从而在对布隆过滤器中记录的数据进行删除时提供数据删除依据。68.参照图3,在本申请实施例中,所述布隆过滤器中还存储有数据的特征值,上述步骤s20可以包括以下子步骤:69.子步骤s201,通过散列算法对所述目标数据进行散列处理,得到所述目标数据对应的特征值。70.子步骤s202,判断所述目标数据对应的特征值是否已全部被所述布隆过滤器记录。71.子步骤s203,在所述特征值全部被所述布隆过滤器记录时,判定所述布隆过滤器中包含所述目标数据。72.子步骤s204,在所述特征值未全部被所述布隆过滤器记录时,判定所述布隆过滤器中不包含所述目标数据。73.举例而言,当待检测的目标数据为“baidu”时,通过散列算法对其进行处理可以得到其对应的特征值为1、4、7(即“baidu”对应的哈希值所指向的第1、4、7个bit位置1),此时,若布隆过滤器中第1、4、7个bit位均为非0状态(如图4所示),则表示“baidu”所对应的特征值已全部被该布隆过滤器记录,也就是说该布隆过滤器中可能包含“baidu”这一元素。相反地,若该布隆过滤器中第1、4、7个bit位中存在至少一个置0的bit位(如图5所示),则表示该布隆过滤器中不包含“baidu”这一元素。74.应当理解,在本申请实施例中,该目标数据可以是上述的“baidu”,也可以是其他任意的数据,例如url、邮件信息等。75.进一步地,请参照图2,在本申请实施例中,若通过上述步骤s20查询到布隆过滤器中已存在该目标数据,则执行步骤s30,判定该目标数据为重复数据。相反地,若通过上述步骤s20未查询到布隆过滤器中包含该目标数据,则执行步骤s31,将该目标数据记录到布隆过滤器,以便于后续过程中查找出与该目标数据相同的重复数据。此外,本实施例中,在将该目标数据记录到布隆过滤器的同时,还将该目标数据对应的特征信息记录到持久化存储单元,从而通过该持久化存储单元中记录的特征信息在对布隆过滤器中记录的,与所述特征值对应的数据进行删除的过程中提供数据删除依据。76.需要说明的是,在本申请实施例中,该布隆过滤器可以基于内存运行,从而确保该布隆过滤器的运行速度。而对于该持久化存储单元而言,由于对其读写性能没有太高的要求,因此,在本申请实施例中,该持久化存储单元可以选用磁盘、云存储器202等存储装置。77.具体地,在本申请实施例中,将该目标数据“baidu”记录到布隆过滤器的过程可以参照图5和图6。若将该目标数据“baidu”记录到布隆过滤器之前布隆过滤器的状态如图5所示,则将该目标数据“baidu”记录到布隆过滤器之后该布隆过滤器的状态如图6所示。具体而言,即在“baidu”所对应的第1、4、7个bit位上分别加1。78.进一步地,在本申请的一种实施例中,该目标数据对应的特征信息可以包括该目标数据对应的过期时间以及该目标数据对应的特征值。其中,该目标数据对应的过期时间可以通过读取预设信息的方式得到。并且,在本申请实施例中,当读取到某一个待检测的目标数据为永久有效时,由于后续过程中不需要对其进行删除操作,因此此时可以仅将其记录到布隆过滤器,不用同时记录到持久化存储单元,从而在一定程度上节省该持久化存储单元的存储空间。79.具体地,在本申请的一种实施例中,为了保证该持久化存储单元中记录的数据可追加且紧凑,可以采用avro格式存储数值类型的特征值。本领域技术人员应当知道,avro格式是一种快速可压缩的二进制数据形式,可作为存储持久数据的文件容器,并且,avro和动态语言结合后,读写数据文件和使用rpc(remoteprocedurecall,远程过程调用)协议都不需要生成代码,因此,本申请实施例中采用avro格式对该目标数据对应的特征值进行存储,不仅可以使得存储数据可追加和紧凑,还可以简化数据读写的处理过程和语言的构造过程。80.对于该目标数据对应的过期时间,在本申请的一种实施例中,可以采用按过期时间分区存储的方式进行记录。例如,在爬虫的应用场景下,可以支持以天为粒度的过期时间有效性,为每一天创建一个文件用以记录该天到期的数据所对应的特征值,换言之,即每一个过期时间与对应的特征值之间均配置有一映射关系,然后将过期时间相同的所有数据所对应的特征值存储到一起构成同一个文件。81.进一步地,在需要对过期数据进行删除时,只需根据该过期时间在持久化存储单元的相应分区中查找对应的目标文件,然后从该目标文件中读取出所存储的特征值,即可根据该特征值对布隆过滤器中记录的过期数据进行删除。82.具体地,在本申请实施例中,对布隆过滤器中记录的数据进行删除的过程可以参照图6和图7,若删除上述数据“baidu”前布隆过滤器的状态如图6所示,则删除该数据“baodu”后布隆过滤器的状态如图7所示。具体而言,即在“baidu”所对应的第1、4、7个bit位上分别减1。83.应当理解,在本申请实施例所提供的重复数据检测方法中,通过布隆过滤器即可完成数据是否重复的查询,无需访问持久化存储单元,因此可以确保重复数据的检测效率。而该持久化存储单元只需在该布隆过滤器插入新数据时进行一次写操作,在该布隆过滤器中的数据到期删除时进行一次读操作,因此,本实施例中对于该持久化存储单元的读写性能没有较高要求,可以采用成本较低的磁盘等常规存储装置。84.综上所述,本申请实施例中提供的重复数据检测方法相对于现有技术而言,具有如下技术效果或优点:85.本申请实施例提供的重复数据检测方法,通过在判定待检测的目标数据为非重复数据时,将该目标数据记录到布隆过滤器,并将该目标数据对应的特征信息记录到持久化存储单元,不仅可以在后续过程中通过该布隆过滤器检测出与该目标数据相同的重复数据,同时还可以在该目标数据过期时基于该持久化存储单元中记录的特征信息将其从布隆过滤器中删除,从而实现支持过期时间的海量数据重复检测,提高设备在有过期时间要求的应用场景下进行重复数据检测的准确性。86.参照图8,为本申请实施例提供的重复数据检测装置70的模块示意图。该装置可以应用于图1所示的电子设备20,从而为该电子设备20提供如上所述的支持过期时间的海量数据重复检测功能。87.在本申请实施例中,该电子设备20配置有布隆过滤器及持久化存储单元,所述布隆过滤器至少用于存储数据,所述持久化存储单元至少用于存储所述数据对应的特征信息。该装置包括获取模块701、查询模块702、判定模块703及记录模块704。88.其中,获取模块701用于获取待检测的目标数据;查询模块702用于查询所述布隆过滤器中是否包含所述目标数据;判定模块703用于在所述布隆过滤器中包含所述目标数据时,判定所述目标数据为重复数据;记录模块704用于在所述布隆过滤器中不包含所述目标数据时,将所述目标数据记录到所述布隆过滤器,并将所述目标数据对应的特征信息记录到所述持久化存储单元。89.进一步地,在本申请的一种实施例中,所述布隆过滤器中还存储有数据的特征值,所述查询模块702具体用于:90.通过散列算法对所述目标数据进行散列处理,得到所述目标数据对应的特征值;然后,判断所述目标数据对应的特征值是否已全部被所述布隆过滤器记录;在所述特征值未全部被所述布隆过滤器记录时,判定所述布隆过滤器中不包含所述目标数据。91.进一步地,在本申请的一种实施例中,所述记录模块704在将所述目标数据对应的特征信息记录到所述持久化存储单元时具体用于:92.获取所述目标数据对应的特征信息,所述特征信息包括所述目标数据对应的过期时间及特征值;93.将所述目标数据对应的过期时间及特征值记录到所述持久化存储单元,其中,所述特征值的存储方式包括按avro格式进行记录,并根据所述特征值对应的过期时间分区存储。94.具体地,在本申请的一种实施例中,所述记录模块704在根据所述特征值对应的过期时间分区存储时还具体用于:95.将过期时间相同的目标数据所对应的特征值存储到所述持久化存储单元中的同一分区。96.进一步地,在本申请的一种实施例中,该装置还包括删除模块705,该删除模块705用于:97.基于所述过期时间在所述持久化存储单元的相应分区中查找对应的目标文件;然后,根据所述目标文件中存储的特征值对所述布隆过滤器中记录的,与所述特征值对应的数据进行删除。98.由于本实施例所介绍的重复数据检测装置70为实施本申请实施例中重复数据检测方法所采用的装置,故而基于本申请实施例中所介绍的重复数据检测方法,本领域所属技术人员能够了解本实施例的重复数据检测装置70的具体实施方式以及其各种变化形式,所以在此对于该重复数据检测装置70如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中重复数据检测方法所采用的重复数据检测装置70,都属于本申请所欲保护的范围。99.应当理解,在本申请实施例中,上述重复数据检测装置70还可以包括处理器和存储器,上述获取模块701、查询模块702、判定模块703、记录模块704和删除模块705均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。100.该处理器中包含内核,由内核去存储器中调取相应的程序单元。并且,在本申请实施例中,该内核可以设置一个或多个,通过调整内核参数来实现本申请实施例所提供的支持过期时间的海量数据重复检测功能。101.本申请实施例还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的重复数据检测方法。102.本申请实施例还提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现如上所述的重复数据检测方法。103.此外,本申请还提供一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:104.获取待检测的目标数据;105.查询所述布隆过滤器中是否包含所述目标数据;106.在所述布隆过滤器中包含所述目标数据时,判定所述目标数据为重复数据;107.在所述布隆过滤器中不包含所述目标数据时,则将所述目标数据记录到所述布隆过滤器,并将所述目标数据对应的特征信息记录到所述持久化存储单元。108.具体地,所述查询所述布隆过滤器中是否包含所述目标数据的步骤,包括:109.通过散列算法对所述目标数据进行散列处理,得到所述目标数据对应的特征值;110.判断所述目标数据对应的特征值是否已全部被所述布隆过滤器记录;111.若所述特征值未全部被所述布隆过滤器记录,则判定所述布隆过滤器中不包含所述目标数据。112.所述将所述目标数据对应的特征信息记录到所述持久化存储单元的步骤,包括:113.获取所述目标数据对应的特征信息,所述特征信息包括所述目标数据对应的过期时间及特征值;114.将所述目标数据对应的过期时间及特征值记录到所述持久化存储单元,其中,所述特征值的存储方式包括按avro格式进行记录,并根据所述特征值对应的过期时间分区存储。115.具体地,所述根据所述特征值对应的过期时间分区存储的步骤,包括:将过期时间相同的目标数据所对应的特征值存储到所述持久化存储单元中的同一分区。116.进一步地,该方法还包括:117.基于所述过期时间在所述持久化存储单元的相应分区中查找对应的目标文件;118.根据所述目标文件中存储的特征值对所述布隆过滤器中记录的,与所述特征值对应的数据进行删除。119.本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。120.在一个典型的配置中,该电子设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。121.该存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。应当理解,以上存储器为计算机可读介质的示例。122.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。该信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。123.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。124.本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。125.以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1