手机版

隐藏在正则表达式中的陷阱(推荐)

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

前几天,线路上一个项目的监测信息突然报出异常。检查机器上相关资源的使用情况后,发现CPU利用率接近100%。通过Java自带的线程Dump工具,我们导出问题的堆栈信息。

我们可以看到所有堆栈都指向一个名为validateUrl的方法,堆栈中有100多条错误消息。通过检查代码,我们知道这个方法的主要功能是检查网址是否合法。

很奇怪一个正则表达式怎么会导致高CPU利用率。为了找出递归问题,我们提取了关键代码并进行简单的单元测试。

public static void main(string[]args){ string bad regex='^([hh][tt]{2}[pp]://|[hh][tt]{2}[pp][ss]://)(([a-za-z0-9-~])。)([A-Za-z0-9-~ \ \ \ \/])$ ';string BugURl=' http://www . fapiao.com/dddp-web/pdf/download?请求=6e7JG

版权声明:隐藏在正则表达式中的陷阱(推荐)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。