System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理的领域,尤其是涉及一种基于预扫描的字符串替换方法、装置及存储介质。
技术介绍
1、在以互联网为主的新媒体,包括手机app、在线网站或在线显示屏上,产生了数亿计的广告展示机会。这些广告展示机会也被称为广告流量,随着广告流量交易技术的逐渐发展,广告流量被汇集到一个称为“互联网广告流量交易平台”的在线系统中,互联网广告流量交易平台又称流量交易平台,这种在线系统一方面汇集了各方媒体资源的广告流量,一方面对接了大量上游需求方或广告主。互联网广告流量交易平台的作用类似一个流量的在线集中交易市场,将数以亿万计的流量通过在线系统高效地售卖给流量需求方。
2、在流量交易平台的架构下,根据供量方、平台方与需求方三方的对接协议要求,流经流量交易平台的流量被封装为json数据格式的请求数据和响应数据。其中,响应数据中会包含相关的宏,宏用于标记对应的数据或者反馈数据被执行的操作,而在需要流量交易平台将这些宏替换为实际的真实值。针对每一条内容为字符串的响应数据,流量交易平台都要针对这些宏进行字符串替换操作,流量交易平台中每秒有10万笔以上的请求或响应,因此这是一个非常高频的处理模块,宏替换的性能对系统整体性能的影响极大。
3、现有的字符串替换方法,是对每一个响应数据进行多个宏的字符替换,每个宏的字符替换则需要分配一块新的内存,分配次数=宏个数*宏在字符串中出现的次数。因此完成一个响应数据的替换操作则需要分配多次内存,在流通数以亿万计的流量的流量交易平台中,多频次少量的内存分配的代价是非常大的。
1、为了降低流量交易平台实现宏替换而进行的内存分配的次数,本申请提供一种基于预扫描的字符串替换方法、装置及存储介质。
2、第一方面,本申请提供的一种基于预扫描的字符串替换方法,采用如下的技术方案:
3、一种基于预扫描的字符串替换方法,包括如下步骤:
4、获取待替换字符集、宏与替换字符;
5、扫描待替换字符集,识别出所述待替换字符集中的宏;
6、标记所述宏的位置;
7、获取待替换步数;
8、根据所述待替换步数将所述待替换字符集分成替换区域,所述替换区域的数量与所述待替换步数的值反相关设置;
9、根据所述替换区域的数量申请对应数量的内存;
10、遍历所有的所述替换区域,根据所述替换区域中被标记的宏与对应的所述替换字符在对应的内存中拼接出目标字符串,其中,所述目标字符串中的内容为所述待替换字符串中所述宏被替换成所述替换字符而得到的内容;
11、根据所述替换区域的数量按照拼接的顺序将所述目标字符串拼接成最终字符串。
12、通过采用上述技术方案,无需对每个宏的替换过程均分配新的内存,而是通过扫描得到所有宏的位置,然后根据替换步骤计算得到替换区域,在替换区域的替换过程分配新的内存,替换区域中能够替换多个或多种的宏;减少了内存分配次数,减少了对宏的全字符串查找次数,降低了内存释放的次数。
13、可选地,所述扫描待替换字符集,识别出所述待替换字符集中的宏的步骤中,还包括如下子步骤:
14、输入待替换字符集到字符数组;
15、获取一个所述宏,在所述字符数组中扫描所述宏的位置,记录所述宏的数量和所述宏的位置;
16、遍历计算所有的所述宏。
17、通过采用上述技术方案,实现了通过扫描得到所有宏的位置,利于减少对宏的全字符串查找次数。
18、可选地,方法还包括如下步骤:
19、根据所述宏的数量与所述宏的位置计算所需的内存大小,所述所需的内存大小=所述字符数组的长度-所有出现的所述宏的长度+所需的所述替换字符的长度;
20、分配一块长度为所需的内存大小的所述内存;
21、获取一个扫描出来的所述宏,根据对应的所述宏的位置,将对应位置的所述宏替换为所述替换字符,并将替换后的结果放入所述内存;
22、遍历计算所有扫描出来的所述宏。
23、通过采用上述技术方案,实现了在替换区域中能够替换多个或多种的宏,利于减少内存分配次数,利于降低内存释放的次数。
24、可选地,所述待替换步数为1。
25、通过采用上述技术方案,无论有多少个待替换的宏,只分配一次内存,也只有一次内存释放,只需一次预扫描标记所有待替换的宏的位置。
26、可选地,所述待替换步数大于1。
27、通过采用上述技术方案,能够降低分配的内存的大小要求,在内存余量不足时,能够少批量地进行处理。
28、可选地,方法还包括如下步骤:
29、获取平台在最近的设定时间段内的流量值,根据所述耗时值反相关调节所述待替换步数的值;
30、和/或,获取上一次遍历所有的所述替换区域的耗时值,根据所述耗时值反相关调节所述待替换步数的值;
31、和/或,获取平台在最近的设定时间段内的剩余算力值,根据所述剩余算力值正相关调节所述待替换步数的值。
32、通过采用上述技术方案,根据平台的运行状态实时调节待替换步数的值,从而让处理过程具有自适应性。
33、可选地,方法还包括如下步骤:
34、获取平台在最近的设定时间段内的流量值a;
35、获取上一次遍历所有的所述替换区域的耗时值b;
36、获取根据平台在最近的设定时间段内的剩余算力值c;
37、计算所述待替换步数的值d=c/(a*b)。
38、通过采用上述技术方案,根据平台的多个状态运行状态实时调节待替换步数的值,从而让处理过程具有更好的自适应性。
39、可选地,方法还包括如下步骤:
40、获取平台在最近的设定时间段内的流量值a与流量增长值a;
41、获取上一次遍历所有的所述替换区域的耗时值b与耗时增长值b;
42、获取根据平台在最近的设定时间段内的剩余算力值c与算力增长值c;
43、计算所述待替换步数的值d=(c/(a*b))c-a-b。
44、通过采用上述技术方案,根据平台的多个状态运行状态以及多个运行状态趋势实时调节待替换步数的值,从而让处理过程具有更好的自适应性。
45、第二方面,本申请提供的一种基于预扫描的字符串替换装置,采用如下的技术方案:
46、一种基于预扫描的字符串替换装置,处理器,所述处理器中运行有上述中任意一项所述的基于预扫描的字符串替换方法的程序。
47、第三方面,本申请提供的一种存储介质,采用如下的技术方案:
48、一种存储介质,存储有上述中任意一项所述的基于预扫描的字符串替换方法的程序。
49、综上所述,本申请包括以下至少一种有益技术效果:
50、无需对每个宏的替换过程均分配新的内存,而是通过扫描得到所有宏的位置,然后根据替换步骤计算得到替换区域,在本文档来自技高网...
【技术保护点】
1.一种基于预扫描的字符串替换方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述扫描待替换字符集,识别出所述待替换字符集中的宏的步骤中,还包括如下子步骤:
3.根据权利要求2所述的基于预扫描的字符串替换方法,其特征在于,方法还包括如下步骤:
4.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述待替换步数为1。
5.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述待替换步数大于1。
6.根据权利要求5所述的基于预扫描的字符串替换方法,其特征在于,方法还包括如下步骤:
7.根据权利要求5所述的基于预扫描的字符串替换方法,其特征在于,方法还包括如下步骤:
8.根据权利要求5所述的基于预扫描的字符串替换方法,其特征在于,方法还包括如下步骤:
9.一种基于预扫描的字符串替换装置,其特征在于,包括处理器,所述处理器中运行有如权利要求1-8中任意一项所述的基于预扫描的字符串替换方法的程序。
10.一种存储
...【技术特征摘要】
1.一种基于预扫描的字符串替换方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述扫描待替换字符集,识别出所述待替换字符集中的宏的步骤中,还包括如下子步骤:
3.根据权利要求2所述的基于预扫描的字符串替换方法,其特征在于,方法还包括如下步骤:
4.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述待替换步数为1。
5.根据权利要求1所述的基于预扫描的字符串替换方法,其特征在于,所述待替换步数大于1。
6.根据权利要...
【专利技术属性】
技术研发人员:张富,方友松,
申请(专利权)人:百寻信息科技上海有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。