广告sem是什么意思,wordpress 优化方案,wordpress子域名设置,微信营销案例ppt举个简单了例子#xff0c;在一个需要用于注册登录的b/s模式的应用中#xff0c;在浏览器验证用户注册表单的合法性是必须的#xff0c;但你为了防止hacker#xff0c;在服务器再验证一次肯定也是必须的。题目#xff1a;在服务器端验证邮箱是否合法#xff1a;通常你可能…举个简单了例子在一个需要用于注册登录的b/s模式的应用中在浏览器验证用户注册表单的合法性是必须的但你为了防止hacker在服务器再验证一次肯定也是必须的。题目在服务器端验证邮箱是否合法通常你可能会这样写public boolean checkEmailLegal(String temp){//temp ddenfj#fe_dw.comw;return temp.matches(^([\\.a-zA-Z0-9_-])([a-zA-Z0-9_-])((\\.[a-zA-Z0-9_-]{2,3}){1,2})$);}当然这样写可以满足你的需求但是今天要和大家分享我使用Pattern提高效率的使用心得首先先看一下我对小面代码进行的简单的测试import java.util.regex.Pattern;public class SimpleTest {public static void main(String[] args){String temp ddenfj#fe_dw.comw;int count 1;long a System.currentTimeMillis();for(int i0;i{temp.matches(^([\\.a-zA-Z0-9_-])([a-zA-Z0-9_-])((\\.[a-zA-Z0-9_-]{2,3}){1,2})$);}long b System.currentTimeMillis();System.out.println(b-a);a System.currentTimeMillis();Pattern emailPattern Pattern.compile(^([\\.a-zA-Z0-9_-])([a-zA-Z0-9_-])((\\.[a-zA-Z0-9_-]{2,3}){1,2})$);for(int i0;i{emailPattern.matcher(temp).matches();}b System.currentTimeMillis();System.out.println(b-a);}}运行次数为 1 时运行结果40运行次数为 100 时运行结果161运行次数为1000时运行结果1118运行次数为10000时运行结果34311运行次数为100000时运行结果84165运行次数为一千万时运行结果820594我们知道匹配正则表达式首先创建有穷自动机我的结论从测试记过可以看出String.matches()方法的时间并不是想想中的线性增长的可以得出的结论是jvm一定对String.matches()方法进行了缓存的处理也就是说调用这个方法产生的一切中间对象并未被jvm清理如果运用到你的应用上可能效率体现得会很明显----------------------------------------------------------------------------------------------------------写完以上内容还在我洋洋自得的时候我想看一下String.matches()的源代码public boolean matches(String regex) {return Pattern.matches(regex, this);}public static boolean matches(String regex, CharSequence input) {Pattern p Pattern.compile(regex);Matcher m p.matcher(input);return m.matches();}看来我对jvm的上方理解是错误的不过从他们的源码我们可以看出来如果把Pattern写成一个静态(static)属性并用spring管理对象那效率还是会提高很多的望共勉