深度解读Adblock plus经历与底层算法实现

本文讲述了作者在项目中实现URL过滤时,参考Adblock plus算法的过程。通过对Adblock plus源代码的阅读,了解到其主要包括3类规则:1) 后缀匹配,2) 用户自定义规则,3) 通配符匹配。通配符匹配部分,作者详细解释了处理过程,并提及Adblock plus还涉及Rabin-Karp算法,但因语言效率问题未深入研究。最后,作者分享了自己的代码并邀请读者交流讨论。
摘要由CSDN通过智能技术生成

最近由于在学校和老师做项目,需要做一个快速过滤url的小的项目,说白了就是存一些规则,到时候用url匹配,要求代码量足够少,效率足够高。说实话其实我一开始我挺迷茫的,因为在我们学校(东北大学)特别是计算机的本科生是比较注重基础的,所以实际的项目经历和平常的代码量都比较少,可能我们学校出来的本科生基础比较好,但是项目经历就要少很多,这个在公司面试过程中是很吃亏,但是一进公司真的是不差,因为现在来我们学校招聘的公司有好多的架构师都是东大本科生就出去了(哈哈,在这里打一个广告,不要介意啊)。言归正传,java这个过滤检索效率的提高就是我这个没有什么经验的人也知道这个项目八成要用哈希表,所以我一开始我设计了一个根据哈希表来检索的,但是由于底层的实现可能比较笨拙,老师看了不是很满意(其实我自己认为已经很接近Adblock plus算法了,哈哈),他就建议我可以参考一下Adblock plus的算法,因为火狐用户基本都用Adblock plus插件,而且效率还行,没办法,老师吩咐,只能照做。

  网上有一篇关于Adblock plus原理的博客,但他是翻译版,说实话,翻译的一般般吧,后来我们找到英文版的又读了一遍,写的真是太泛泛了,读完之后就知道一个shotcut ,推荐用8个字符长度,用来做哈希表的键,剩下的就什么都没有了,没办法,看源码吧。。。

  说实话,之前我真的是没用过Firefox,没办法,下了一个Firefox,又装上了Adblock plus插件,又进了Adblock plus社区去找源代码,这中间的坎坷就不说了,没接触过的东西开荒真的是会遇到各种莫名其妙的错误啊,有一些甚至老师都非常诧异。不过最后还是找到了Adblock plus的源代码:完整版本源代码链接:https://hg.adblockplus.org/  github镜像:https://github.com/adblockplus

  说到读代码这可真是一门学问啊,由于我们目前做的这个是java的项目,看到有Android的源代码,所以就选择看Android的,结果是各种蒙啊,不知道是不是手机的原因,我的手机对Adblock plus不怎么感冒,但是也是硬着头皮把他这个Android的版本的大致的构造弄清楚了,不知道是不是作者懒啊,这个Android版本的源代码,最上层自然而然的用了java源代码,读了半天发现只是做了一个架子,没有什么具体的实现,java的下一层是C++代码,然后又花了半天读c++代码,最后苦逼的发现竟然还有下一层!js!!&

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值