字符串处理方法和装置制造方法

文档序号:6638175阅读:235来源:国知局
字符串处理方法和装置制造方法
【专利摘要】本发明公开了一种字符串处理方法和装置。其中,字符串处理方法包括:获取用于记录多个维度信息的字符串;对字符串进行解析,得到与字符串对应的对象;生成与字符串对应的对象的唯一标识;查找第一字典中是否存在唯一标识,其中,第一字典为缓存有预设标识的缓存单元,其中,预设标识为已经存储的日志信息中的字符串对应的对象的标识;如果第一字典中不存在唯一标识,则存储唯一标识对应的对象;以及如果第一字典中存在唯一标识,则不存储唯一标识对应的对象。通过本发明,解决了现有技术中字符串数据存储浪费存储空间的问题,达到了减少存储的数据量的效果。
【专利说明】字符串处理方法和装置

【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种字符串处理方法和装置。

【背景技术】
[0002]随着互联网的快速发展,在互联网上产生的数据量越来越大,处理压力也越来越大,如何快速有效地处理和分析这些数据成为互联网公司亟待解决的问题。
[0003]互联网数据通常以字符串的形式展现,以广告日志信息为例,监控得到的广告日志信息包含多个维度,如ReferrerUrl、Cookie、IP、UserAgent等。其中ReferrerUrl字符串可以解析出广告来源域名、来源路径和来源参数等信息,UserAgent字符串可以解析出操作系统信息、浏览器信息、设备信息和是否移动端等信息。在获取到这些字符串数据之后,通常先进行存储,以便于做进一步的数据分析。
[0004]然而,现有的字符串存储过程中,通常会存储所有的字符串,无论是相同的字符串还是字符串中存在无需解析的信息,均统一存储,这势必会浪费存储空间。例如,以下两条信息:
[0005]如下两条UserAgent字符串,对于广告维度分析而言,提供的维度信息是完全相同的,但是因为设备型号不同属于不同的UserAgent。
[0006]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.2(KHTML, like Gecko)Mobile/llD167
[0007]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.1(KHTML, like Gecko)Mobile/llB651
[0008]由于UserAgent字符串包含的信息多种多样,而广告维度分析需要的只是其中的操作系统、浏览器、设备信息和是否移动端等基本信息,对于UserAgent字符串中其他的信息(如浏览器版本、.net版本、设备型号等)无需解析。
[0009]通过以上描述的过程可以看出,当前的广告展现、跳转监控日志由于维度存在无需解析的信息,这使得维度信息的直接保存既不利于广告维度分析,也会造成存储空间的浪费。
[0010]针对现有技术中字符串数据存储浪费存储空间的问题,目前尚未提出有效的解决方案。


【发明内容】

[0011]本发明的主要目的在于提供一种字符串处理方法和装置,以解决现有技术中字符串数据存储浪费存储空间的问题。
[0012]为了实现上述目的,根据本发明实施例的一个方面,提供了一种字符串处理方法。根据本发明的字符串处理方法包括:获取用于记录多个维度信息的字符串;对所述字符串进行解析,得到与所述字符串对应的对象;生成与所述字符串对应的对象的唯一标识;查找第一字典中是否存在所述唯一标识,其中,所述第一字典为缓存有预设标识的缓存单元,其中,所述预设标识为已经存储的日志信息中的字符串对应的对象的标识;如果所述第一字典中不存在所述唯一标识,则存储所述唯一标识对应的对象;以及如果所述第一字典中存在所述唯一标识,则不存储所述唯一标识对应的对象。
[0013]进一步地,在获取用于记录多个维度信息的字符串之后,以及对所述字符串进行解析,得到与所述字符串对应的对象之前,所述字符串处理方法还包括:查找第二字典中是否存在所述字符串;如果所述第二字典中存在所述字符串,则过滤掉所述字符串;如果所述第二字典中不存在所述字符串,则将所述字符串缓存到所述第二字典中,对所述字符串进行解析,得到与所述字符串对应的对象包括:对确定在所述第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
[0014]进一步地,如果所述第一字典中不存在所述唯一标识,存储所述唯一标识对应的对象包括:如果所述第一字典中不存在所述唯一标识,则将所述唯一标识对应的对象的状态标记为新增状态;判断标记为所述新增状态的对象个数是否达到预设阈值;以及如果判断出标记为所述新增状态的对象个数达到所述预设阈值,则通过将标记为所述新增状态的对象插入数据库来存储标记为所述新增状态的对象。
[0015]进一步地,在查找第一字典中是否存在所述唯一标识之前,所述字符串处理方法还包括:将所述数据库中的对象的标识缓存到所述第一字典中,其中,在查找第一字典中是否存在所述唯一标识之后,如果所述第一字典中不存在所述唯一标识,则将所述唯一标识缓存到所述第一字典中。
[0016]进一步地,生成与所述字符串对应的对象的唯一标识包括:计算所述字符串中多个维度信息的散列值;由所述多个维度信息的散列值得到所述唯一标识。
[0017]为了实现上述目的,根据本发明实施例的另一方面,提供了一种字符串处理装置。根据本发明的字符串处理装置包括:获取单元,用于获取用于记录多个维度信息的字符串;解析单元,用于对所述字符串进行解析,得到与所述字符串对应的对象;生成单元,用于生成与所述字符串对应的对象的唯一标识;第一查找单元,用于查找第一字典中是否存在所述唯一标识,其中,所述第一字典为缓存有预设标识的缓存单元,其中,所述预设标识为已经存储的日志信息中的字符串对应的对象的标识;存储单元,用于如果所述第一字典中不存在所述唯一标识,则存储所述唯一标识对应的对象;如果所述第一字典中存在所述唯一标识,则不存储所述唯一标识对应的对象。
[0018]进一步地,所述字符串处理装置还包括:第二查找单元,用于在获取用于记录多个维度信息的字符串之后,以及对所述字符串进行解析,得到与所述字符串对应的对象之前,查找第二字典中是否存在所述字符串;过滤单元,用于如果所述第二字典中存在所述字符串,则过滤掉所述字符串;第一缓存单元,用于如果所述第二字典中不存在所述字符串,则将所述字符串缓存到所述第二字典中,所述解析单元包括:解析模块,用于对确定在所述第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
[0019]进一步地,所述存储单元包括:标记模块,用于如果所述第一字典中不存在所述唯一标识,则将所述唯一标识对应的对象的状态标记为新增状态;判断模块,用于判断标记为所述新增状态的对象个数是否达到预设阈值;以及存储模块,用于如果判断出标记为所述新增状态的对象个数达到所述预设阈值,则通过将标记为所述新增状态的对象插入数据库来存储标记为所述新增状态的对象。
[0020]进一步地,所述字符串处理装置还包括:第二缓存单元,用于在查找第一字典中是否存在所述唯一标识之前,将所述数据库中的对象的标识缓存到所述第一字典中,所述第二缓存单元还用于在查找第一字典中是否存在所述唯一标识之后,如果所述第一字典中不存在所述唯一标识,则将所述唯一标识缓存到所述第一字典中。
[0021]进一步地,所述生成单元包括:计算模块,用于计算所述字符串中多个维度信息的散列值;确定模块,用于由所述多个维度信息的散列值得到所述唯一标识。
[0022]根据本发明实施例,通过获取用于记录多个维度信息的字符串,对字符串进行解析,得到与字符串对应的对象,生成与字符串对应的对象的唯一标识,查找第一字典中是否存在唯一标识,如果第一字典中不存在唯一标识,则存储唯一标识对应的对象,如果第一字典中存在唯一标识,则不存储唯一标识对应的对象,这样,对于重复的字符串或者区别仅在于无需进行解析的部分的字符串,解析出来的对象均为相同对象,而相同的对象只存储一次,解决了现有技术中字符串数据存储浪费存储空间的问题,达到了减少存储的数据量的效果。

【专利附图】

【附图说明】
[0023]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0024]图1是根据本发明实施例的字符串处理方法的流程图;
[0025]图2是根据本发明实施例优选的字符串处理方法的流程图;以及
[0026]图3是根据本发明实施例的字符串处理装置的示意图。

【具体实施方式】
[0027]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0028]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0029]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0030]本发明实施例提供了一种字符串处理方法。
[0031]图1是根据本发明实施例的字符串处理方法的流程图。如图1所示,该字符串处理方法包括步骤如下:
[0032]步骤S102,获取用于记录多个维度信息的字符串。
[0033]该字符串可以是日志信息中提取的字符串,日志信息可以是检测的广告日志。该字符串上记录有体现多个维度指标的信息即多个维度信息,例如,广告日志信息中的UserAgent字符串,该字符串中包括反映操作系统信息、浏览器信息、设备信息和是否移动端等多个维度信息的字符。
[0034]步骤S104,对字符串进行解析,得到与字符串对应的对象。
[0035]与字符串对应的对象为表示字符串中需要解析的维度信息属性的类,其中,如果两个字符串的区别仅在于无需进行解析的字符信息,那么其解析出来的对象则为相同的对象。同样以UserAgent字符串为例,由于广告分析中需要解析其中的操作系统、浏览器、设备信息和是否移动端等基本信息,那么,与该UserAgent字符串对应的对象可以是表示UserAgent字符串通过解析后包含操作系统信息、浏览器信息、设备信息和是否移动端信息等属性的一个类。具体地,例如以下两条UserAgent字符串,其解析出来的对象为相同的对象:
[0036]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.2(KHTML, like Gecko)Mobile/llD167
[0037]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.1(KHTML, like Gecko)Mobile/llB651
[0038]步骤S106,生成与字符串对应的对象的唯一标识。
[0039]对象的唯一标识为该对象唯一的身份标识,可以是按照预设算法计算得到的该对象的哈希值或者散列值等。
[0040]优选地,生成与字符串对应的对象的唯一标识包括:计算字符串中多个维度信息的散列值;由多个维度信息的散列值得到唯一标识。其中,字符串中多个维度信息为字符串中需要解析的维度信息,计算这些维度信息的散列值,将散列值作为对象的唯一标识。
[0041]步骤S108,查找第一字典中是否存在唯一标识。其中,第一字典为缓存有预设标识的缓存单元,其中,预设标识为已经存储的日志信息中的字符串对应的对象的标识。
[0042]在第一字典中缓存有数据库中存储的对象的标识,其中,数据库中按照对象与其标识的对应关系存储对象,在从第一字典开始查找唯一标识前,第一字典从数据库中读取对象的标识,并缓存到第一字典本地,这样,通过在第一字典中查找是否存在与上述唯一标识相同的标识,即可确定数据库中是否已经存有上述字符串对应的对象。
[0043]需要说明的是,本发明实施例中,上述生成对象的唯一标识的方式与缓存在第一字典的标识或者存储在数据库中的标识的生成方式相同。
[0044]步骤S110,如果第一字典中不存在唯一标识,则存储唯一标识对应的对象。
[0045]步骤S112,如果第一字典中存在唯一标识,则不存储唯一标识对应的对象。
[0046]在生成字符串对应的对象的唯一标识后,从第一字典中查找该唯一标识,如果第一字典中存在上述唯一标识,则不存储该唯一标识对应的对象;反之,则存储该唯一标识对应的对象,并将该唯一标识缓存到第一字典中,以便于对后续字符串进行处理。
[0047]根据本发明实施例,通过获取用于记录多个维度信息的字符串,对字符串进行解析,得到与字符串对应的对象,生成与字符串对应的对象的唯一标识,查找第一字典中是否存在唯一标识,如果第一字典中不存在唯一标识,则存储唯一标识对应的对象,如果第一字典中存在唯一标识,则不存储唯一标识对应的对象,这样,对于重复的字符串或者区别仅在于无需进行解析的部分的字符串,解析出来的对象均为相同对象,而相同的对象只存储一次,解决了现有技术中字符串数据存储浪费存储空间的问题,达到了减少存储的数据量的效果。
[0048]本发明实施例中,仅对有价值的维度信息(如UserAgent的浏览器、操作系统、设备信息和是否移动端)进行解析,在解析后查找匹配缓存中是否存在相同维度信息等方式来实现维度信息的快速去重。
[0049]优选地,在获取用于记录多个维度信息的字符串之后,以及对字符串进行解析,得到与字符串对应的对象之前,字符串处理方法还包括:查找第二字典中是否存在字符串;如果第二字典中存在字符串,则过滤掉字符串;如果第二字典中不存在字符串,则将字符串缓存到第二字典中,对字符串进行解析,得到与字符串对应的对象包括:对确定在第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
[0050]第二字典为缓存有已经匹配过的字符串的缓存单元。由于字符串的解析过程比较慢,本实施例在对字符串进行解析之前,通过第二字典来对字符串进行匹配查找,查找第二字典中是否存在获取到的字符串,如果存在,则过滤掉该字符串,也即是与该字符串相同的字符串已经处理过,该字符串无需再进行解析和存储;如果不存在,则将该字符串缓存到第二字典中,并对该字符串进行解析。
[0051]根据本发明实施例,在字符串的数据量非常大且存在重复的字符串时,采用第二字典对字符串进行预处理,将重复的字符串直接去除,也即是通过缓存维度信息字符串来减少进入维度解析流程的字符串,从而达到外层的快速过滤简单去重;通过维度解析后的有价值维度信息的对象匹配来达到真正的维度去重,从而减少字符串解析的数据量,提高了数据处理效率。
[0052]优选地,如果第一字典中不存在唯一标识,存储唯一标识对应的对象包括:如果第一字典中不存在唯一标识,则将唯一标识对应的对象的状态标记为新增状态;判断标记为新增状态的对象个数是否达到预设阈值;以及如果判断出标记为新增状态的对象个数达到预设阈值,则通过将标记为新增状态的对象插入数据库来存储标记为新增状态的对象。
[0053]当确定第一字典中不存在唯一标识时,也即是该唯一标识对应的对象没有存储在数据库中,则将该对象标记为新增状态,并判断标记为新增状态的对象的个数是否达到预设阈值,如果是,则将标记为新增状态的对象批量插入到数据库中,从而实现批量存储,避免逐个存储对象导致数据库访问频繁的问题。
[0054]优选地,在查找第一字典中是否存在唯一标识之前,字符串处理方法还包括:将数据库中的对象的标识缓存到第一字典中,其中,在查找第一字典中是否存在唯一标识之后,如果第一字典中不存在唯一标识,则将唯一标识缓存到第一字典中。
[0055]本发明实施例中,在查找第一字典中是否存在唯一标识之前,先将数据库中的所有标识缓存到第一字典中,由于第一字典为缓存单元,在第一字典中查找唯一标识相对于在数据库中查找,其查找的效率得到大大提升。
[0056]当确定第一字典中不存在上述唯一标识时,在将该标识缓存到第一字典中,以便于将该唯一标识作为第一字典中的标识进行后续的匹配查找。
[0057]下面以UserAgent字符串为例,结合图2对本发明实施例的字符串处理方法进行描述。
[0058]如图2所述,该方法包括以下步骤:
[0059]步骤S202,初始化第二字典。该第二字典用于缓存UserAgent字符串,还可以用于缓存UserAgent字符串和UserAgent字符串解析后的UserAgent对象信息的对应关系,第一次进入第二字典前,第二字典为空。
[0060]步骤S204,初始化第一字典。第一字典用于缓存UserAgent对象的唯一标识,或者UserAgent对象的唯一标识和UserAgent对象对应关系。第一次进入第一字典之前,第一字典中可能缓存有从数据库中读取到的UserAgent字符串对应的对象的标识。
[0061 ] 步骤S206,获取UserAgent字符串。
[0062]步骤S208,第二字典是否存在该字符串。如果存在,则结束流程;反之,则执行步骤 S210。
[0063]步骤S210,解析UserAgent字符串。对UserAgent字符串进行解析,得到UserAgent字符串对应的UserAgent对象,具体地,将UserAgent字符串解析成包含操作系统信息、浏览器信息、设备信息、是否移动端等属性的UserAgent对象。
[0064]步骤S212,生成UserAgent对象的唯一标识。其中UserAgent对象唯一标识通过操作系统信息、浏览器信息、设备信息和是否移动端四个属性的散列值唯一确定。
[0065]步骤S214,第一字典中是否存在唯一标识。如果是,则结束流程,删除该唯一标识对应的对象;反之,则执行步骤S216。
[0066]步骤S216,将UserAgent对象的状态设置为新增,然后将UserAgent对象的唯一标识添加到第一字典中。
[0067]步骤S218,判断第一字典中UserAgent对象状态为新增的对象个数是否达到插入数据库的批量,如未达到,则直接返回;如果达到批量,则执行步骤S220。
[0068]步骤S220,将第一字典中UserAgent对象状态为新增的对象全部插入数据库。并将相应UserAgent对象状态改为已存在。
[0069]本实施例中,第二字典的作用是由于UserAgent解析相对比较慢,通过缓存UserAgent字符串可以使相同UserAgent字符串仅解析一次,即通过减少UserAgent解析过程达到维度信息的第一层去重。第一字典的查找匹配是第二层去重,也是真正的UserAgent去重,这样,实现字符串的快速去重存储。
[0070]本发明实施例还提供了一种字符串处理装置。该装置可以通过计算机设备实现其功能。需要说明的是,本发明实施例的字符串处理装置可以用于执行本发明实施例所提供的字符串处理方法,本发明实施例的字符串处理方法也可以通过本发明实施例所提供的字符串处理装置来执行。
[0071]图3是根据本发明实施例的字符串处理装置的示意图。如图3所示,该字符串处理装置包括:获取单元10、解析单元20、生成单元30、第一查找单元40和存储单元50。
[0072]获取单元10用于获取用于记录多个维度信息的字符串。
[0073]该字符串可以是日志信息中提取的字符串,日志信息可以是检测的广告日志。该字符串上记录有体现多个维度指标的信息即多个维度信息,例如,广告日志信息中的UserAgent字符串,该字符串中包括反映操作系统信息、浏览器信息、设备信息和是否移动端等多个维度信息的字符。
[0074]解析单元20用于对字符串进行解析,得到与字符串对应的对象。
[0075]与字符串对应的对象为表示字符串中需要解析的维度信息属性的类,其中,如果两个字符串的区别仅在于无需进行解析的字符信息,那么其解析出来的对象则为相同的对象。同样以UserAgent字符串为例,由于广告分析中需要解析其中的操作系统、浏览器、设备信息和是否移动端等基本信息,那么,与该UserAgent字符串对应的对象可以是表示UserAgent字符串通过解析后包含操作系统信息、浏览器信息、设备信息和是否移动端信息等属性的一个类。具体地,例如以下两条UserAgent字符串,其解析出来的对象为相同的对象:
[0076]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.2(KHTML, like Gecko)Mobile/llD167
[0077]Moz i I la/5.0 (iPhone ;CPU iPhone OS 7_1 like Mac OS X)AppleffebKit/537.51.1(KHTML, like Gecko)Mobile/llB651
[0078]生成单元30用于生成与字符串对应的对象的唯一标识。
[0079]对象的唯一标识为该对象唯一的身份标识,可以是按照预设算法计算得到的该对象的哈希值或者散列值等。
[0080]优选地,生成单元30包括:计算模块,用于计算字符串中多个维度信息的散列值;确定模块,用于由多个维度信息的散列值得到唯一标识。其中,字符串中多个维度信息为字符串中需要解析的维度信息,计算这些维度信息的散列值,将散列值作为对象的唯一标识。
[0081]第一查找单元40用于查找第一字典中是否存在唯一标识,其中,第一字典为缓存有预设标识的缓存单元,其中,预设标识为已经存储的日志信息中的字符串对应的对象的标识。
[0082]在第一字典中缓存有数据库中存储的对象的标识,其中,数据库中按照对象与其标识的对应关系存储对象,在从第一字典开始查找唯一标识前,第一字典从数据库中读取对象的标识,并缓存到第一字典本地,这样,通过在第一字典中查找是否存在与上述唯一标识相同的标识,即可确定数据库中是否已经存有上述字符串对应的对象。
[0083]需要说明的是,本发明实施例中,上述生成对象的唯一标识的方式与缓存在第一字典的标识或者存储在数据库中的标识的生成方式相同。
[0084]存储单元50用于如果第一字典中不存在唯一标识,则存储唯一标识对应的对象;如果第一字典中存在唯一标识,则不存储唯一标识对应的对象。
[0085]在生成字符串对应的对象的唯一标识后,从第一字典中查找该唯一标识,如果第一字典中存在上述唯一标识,则不存储该唯一标识对应的对象;反之,则存储该唯一标识对应的对象,并将该唯一标识缓存到第一字典中,以便于对后续字符串进行处理。
[0086]根据本发明实施例,通过获取用于记录多个维度信息的字符串,对字符串进行解析,得到与字符串对应的对象,生成与字符串对应的对象的唯一标识,查找第一字典中是否存在唯一标识,如果第一字典中不存在唯一标识,则存储唯一标识对应的对象,如果第一字典中存在唯一标识,则不存储唯一标识对应的对象,这样,对于重复的字符串或者区别仅在于无需进行解析的部分的字符串,解析出来的对象均为相同对象,而相同的对象只存储一次,解决了现有技术中字符串数据存储浪费存储空间的问题,达到了减少存储的数据量的效果。
[0087]优选地,字符串处理装置还包括:第二查找单元,用于在获取用于记录多个维度信息的字符串之后,以及对字符串进行解析,得到与字符串对应的对象之前,查找第二字典中是否存在字符串;过滤单元,用于如果第二字典中存在字符串,则过滤掉字符串;第一缓存单元,用于如果第二字典中不存在字符串,则将字符串缓存到第二字典中,解析单元包括:解析模块,用于对确定在第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
[0088]第二字典为缓存有已经匹配过的字符串的缓存单元。由于字符串的解析过程比较慢,本实施例在对字符串进行解析之前,通过第二字典来对字符串进行匹配查找,查找第二字典中是否存在获取到的字符串,如果存在,则过滤掉该字符串,也即是与该字符串相同的字符串已经处理过,该字符串无需再进行解析和存储;如果不存在,则将该字符串缓存到第二字典中,并对该字符串进行解析。
[0089]根据本发明实施例,在字符串的数据量非常大且存在重复的字符串时,采用第二字典对字符串进行预处理,将重复的字符串直接去除,也即是通过缓存维度信息字符串来减少进入维度解析流程的字符串,从而达到外层的快速过滤简单去重;通过维度解析后的有价值维度信息的对象匹配来达到真正的维度去重,从而减少字符串解析的数据量,提高了数据处理效率。
[0090]优选地,存储单元包括:标记模块,用于如果第一字典中不存在唯一标识,则将唯一标识对应的对象的状态标记为新增状态;判断模块,用于判断标记为新增状态的对象个数是否达到预设阈值;以及存储模块,用于如果判断出标记为新增状态的对象个数达到预设阈值,则通过将标记为新增状态的对象插入数据库来存储标记为新增状态的对象。
[0091]当确定第一字典中不存在唯一标识时,也即是该唯一标识对应的对象没有存储在数据库中,则将该对象标记为新增状态,并判断标记为新增状态的对象的个数是否达到预设阈值,如果是,则将标记为新增状态的对象批量插入到数据库中,从而实现批量存储,避免逐个存储对象导致数据库访问频繁的问题。
[0092]优选地,字符串处理装置还包括:第二缓存单元,用于在查找第一字典中是否存在唯一标识之前,将数据库中的对象的标识缓存到第一字典中,第二缓存单元还用于在查找第一字典中是否存在唯一标识之后,如果第一字典中不存在唯一标识,则将唯一标识缓存到第一字典中。
[0093]本发明实施例中,在查找第一字典中是否存在唯一标识之前,先将数据库中的所有标识缓存到第一字典中,由于第一字典为缓存单元,在第一字典中查找唯一标识相对于在数据库中查找,其查找的效率得到大大提升。
[0094]当确定第一字典中不存在上述唯一标识时,在将该标识缓存到第一字典中,以便于将该唯一标识作为第一字典中的标识进行后续的匹配查找。
[0095]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0096]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0097]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0098]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0099]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0100]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0101]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种字符串处理方法,其特征在于,包括: 获取用于记录多个维度信息的字符串; 对所述字符串进行解析,得到与所述字符串对应的对象; 生成与所述字符串对应的对象的唯一标识; 查找第一字典中是否存在所述唯一标识,其中,所述第一字典为缓存有预设标识的缓存单元,其中,所述预设标识为已经存储的日志信息中的字符串对应的对象的标识; 如果所述第一字典中不存在所述唯一标识,则存储所述唯一标识对应的对象;以及 如果所述第一字典中存在所述唯一标识,则不存储所述唯一标识对应的对象。
2.根据权利要求1所述的字符串处理方法,其特征在于, 在获取用于记录多个维度信息的字符串之后,以及对所述字符串进行解析,得到与所述字符串对应的对象之前,所述字符串处理方法还包括:查找第二字典中是否存在所述字符串;如果所述第二字典中存在所述字符串,则过滤掉所述字符串;如果所述第二字典中不存在所述字符串,则将所述字符串缓存到所述第二字典中, 对所述字符串进行解析,得到与所述字符串对应的对象包括:对确定在所述第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
3.根据权利要求1所述的字符串处理方法,其特征在于,如果所述第一字典中不存在所述唯一标识,存储所述唯一标识对应的对象包括: 如果所述第一字典中不存在所述唯一标识,则将所述唯一标识对应的对象的状态标记为新增状态; 判断标记为所述新增状态的对象个数是否达到预设阈值;以及如果判断出标记为所述新增状态的对象个数达到所述预设阈值,则通过将标记为所述新增状态的对象插入数据库来存储标记为所述新增状态的对象。
4.根据权利要求3所述的字符串处理方法,其特征在于, 在查找第一字典中是否存在所述唯一标识之前,所述字符串处理方法还包括:将所述数据库中的对象的标识缓存到所述第一字典中, 其中,在查找第一字典中是否存在所述唯一标识之后,如果所述第一字典中不存在所述唯一标识,则将所述唯一标识缓存到所述第一字典中。
5.根据权利要求1至4中任一项所述的字符串处理方法,其特征在于,生成与所述字符串对应的对象的唯一标识包括: 计算所述字符串中多个维度信息的散列值; 由所述多个维度信息的散列值得到所述唯一标识。
6.一种字符串处理装置,其特征在于,包括: 获取单元,用于获取用于记录多个维度信息的字符串; 解析单元,用于对所述字符串进行解析,得到与所述字符串对应的对象; 生成单元,用于生成与所述字符串对应的对象的唯一标识; 第一查找单元,用于查找第一字典中是否存在所述唯一标识,其中,所述第一字典为缓存有预设标识的缓存单元,其中,所述预设标识为已经存储的日志信息中的字符串对应的对象的标识; 存储单元,用于如果所述第一字典中不存在所述唯一标识,则存储所述唯一标识对应的对象;如果所述第一字典中存在所述唯一标识,则不存储所述唯一标识对应的对象。
7.根据权利要求6所述的字符串处理装置,其特征在于, 所述字符串处理装置还包括:第二查找单元,用于在获取用于记录多个维度信息的字符串之后,以及对所述字符串进行解析,得到与所述字符串对应的对象之前,查找第二字典中是否存在所述字符串;过滤单元,用于如果所述第二字典中存在所述字符串,则过滤掉所述字符串;第一缓存单元,用于如果所述第二字典中不存在所述字符串,则将所述字符串缓存到所述第二字典中, 所述解析单元包括:解析模块,用于对确定在所述第二字典中不存在的字符串进行解析,得到与确定的字符串对应的对象。
8.根据权利要求6所述的字符串处理装置,其特征在于,所述存储单元包括: 标记模块,用于如果所述第一字典中不存在所述唯一标识,则将所述唯一标识对应的对象的状态标记为新增状态;判断模块,用于判断标记为所述新增状态的对象个数是否达到预设阈值;以及 存储模块,用于如果判断出标记为所述新增状态的对象个数达到所述预设阈值,则通过将标记为所述新增状态的对象插入数据库来存储标记为所述新增状态的对象。
9.根据权利要求8所述的字符串处理装置,其特征在于, 所述字符串处理装置还包括:第二缓存单元,用于在查找第一字典中是否存在所述唯一标识之前,将所述数据库中的对象的标识缓存到所述第一字典中, 所述第二缓存单元还用于在查找第一字典中是否存在所述唯一标识之后,如果所述第一字典中不存在所述唯一标识,则将所述唯一标识缓存到所述第一字典中。
10.根据权利要求6至9中任一项所述的字符串处理装置,其特征在于,所述生成单元包括: 计算模块,用于计算所述字符串中多个维度信息的散列值; 确定模块,用于由所述多个维度信息的散列值得到所述唯一标识。
【文档编号】G06F17/30GK104462396SQ201410758617
【公开日】2015年3月25日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】赵立贺 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1