当前位置: 首页 > news >正文

沙朗做网站公司wordpress更改轮播图

沙朗做网站公司,wordpress更改轮播图,芝罘网站建设,宁波网站建设按需定制背景 在频繁调用场景#xff0c;如方法体内或者循环语句中#xff0c;新定义Pattern会导致重复预编译正则表达式#xff0c;降低程序执行效率。另外#xff0c;在 JDK 中部分 入参为正则表达式格式的 API#xff0c;如 String.replaceAll, String.split 等#xff0c;也…背景 在频繁调用场景如方法体内或者循环语句中新定义Pattern会导致重复预编译正则表达式降低程序执行效率。另外在 JDK 中部分 入参为正则表达式格式的 API如 String.replaceAll, String.split 等也需要关注性能问题。 验证 正例 将 Pattern 对象预编译并在常量中声明。 private static final String IP_V4 ^(((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$;// Pattern 常量private static final Pattern IP_V4_PATTERN Pattern.compile(IP_V4);public static boolean isValidIpv4V2(String input) {if (input null) {return false;}return IP_V4_PATTERN.matcher(input).matches();}反例 每次调用时才声明 Pattern。 private static final String IP_V4 ^(((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$;public static boolean isValidIpv4V1(String input) {if (input null) {return false;}Pattern pattern Pattern.compile(IP_V4);return pattern.matcher(input).matches();}测试代码 package com.ysx.utils.pattern.performance;import org.junit.jupiter.api.Test;import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern;/*** author youngbear* email youngbearaliyun.com* date 2023-09-17 8:31* blog a hrefhttps://blog.csdn.net/next_second.../a* github a hrefhttps://github.com/YoungBear.../a* description 正则表达式性能测试*/ public class PrecompilePerformanceTest {private static final String IP_V4 ^(((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$;// Pattern 常量private static final Pattern IP_V4_PATTERN Pattern.compile(IP_V4);// 缓存private static final MapString, Pattern cacheCompilePatternMap new ConcurrentHashMap();public static boolean isValidIpv4V1(String input) {if (input null) {return false;}Pattern pattern Pattern.compile(IP_V4);return pattern.matcher(input).matches();}public static boolean isValidIpv4V2(String input) {if (input null) {return false;}return IP_V4_PATTERN.matcher(input).matches();}public static boolean isValidIpv4V3(String input) {if (input null) {return false;}if (!cacheCompilePatternMap.containsKey(IP_V4)) {cacheCompilePatternMap.put(IP_V4, Pattern.compile(IP_V4));}Pattern pattern cacheCompilePatternMap.get(IP_V4);return pattern.matcher(input).matches();}Testpublic void performanceTest() {String input1 192.168.12.13;long start System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V1(input1);}long stop System.currentTimeMillis();System.out.println(isValidIpv4V1, input1, consume: (stop - start) ms);String input2 192.168.12.13;long start2 System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V1(input2);}long stop2 System.currentTimeMillis();System.out.println(isValidIpv4V1, input2, consume: (stop2 - start2) ms);}Testpublic void performanceV2Test() {String input1 192.168.12.13;long start System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V2(input1);}long stop System.currentTimeMillis();System.out.println(isValidIpv4V2, input1, consume: (stop - start) ms);String input2 192.168.12.13;long start2 System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V2(input2);}long stop2 System.currentTimeMillis();System.out.println(isValidIpv4V2, input2, consume: (stop2 - start2) ms);}Testpublic void performanceV3Test() {String input1 192.168.12.13;long start System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V3(input1);}long stop System.currentTimeMillis();System.out.println(isValidIpv4V3, input1, consume: (stop - start) ms);String input2 192.168.12.13;long start2 System.currentTimeMillis();for (int i 0; i 10000; i) {isValidIpv4V3(input2);}long stop2 System.currentTimeMillis();System.out.println(isValidIpv4V3, input2, consume: (stop2 - start2) ms);}} 执行结果 isValidIpv4V1, input1, consume: 232ms isValidIpv4V1, input2, consume: 74ms isValidIpv4V2, input1, consume: 24ms isValidIpv4V2, input2, consume: 19ms isValidIpv4V3, input1, consume: 20ms isValidIpv4V3, input2, consume: 12ms根据执行结果可以明显看到预编译正则表达式可以提升性能。 总结 通常情况下正则表达式为常量所以可以将其作为常量量在类编译时预编译。 private static final Pattern xxx_PATTERN Pattern.compile(xxx);对于动态的正则表达式可以将其缓存即缓存其 Pattern 结果。参考 isValidIpv4V3 )。另外对于外部收入的正则表达式一定要校验其安全性防止 ReDos 攻击。
http://www.hkea.cn/news/14565524/

相关文章:

  • 查询网站流量排名网站建设公司类型
  • wordpress 自定义表上海专业网站优化排名
  • 如何销售做网站高安网站设计
  • 用万网做网站视觉设计网
  • 做网站编辑的感受网店推广的方式
  • 旅游网网站建设方案wordpress蜘蛛统计
  • 国内十大网站建设公司WordPress禁用邮件注册
  • 做电子相册的大网站星空视频大全免费观看下载
  • 网站建设要做原型图吗做一个软件大概要多少钱
  • 成都网站线上公司孝感织云网站建设
  • 武昌网站建设价格多少钱触屏网站开发
  • xxx网站建设规划书响应式网站建设多少钱
  • 百度官方网站首页PHP MySQL 网站开发实例
  • 企业网站备案管理系统wordpress登录密码错误也不报错
  • 建设双语的网站网站建设 哪家好
  • 外贸网站如何推广优化腾讯企业邮箱登录入口免费版
  • ppt模板做的好的网站有哪些wordpress 一键迁移
  • 做好网站建设和运营舆情网站直接打开的软件
  • 宝安网站设计案例建设网站主机要买什么的好
  • 网站建设的费用记什么科目济南市做网站的公司
  • 桂林市生活网官方网站php做网站登录界面
  • 对网站提出的优化建议自适应网站建设极速建站
  • 网站开发工具的功能包括HTML或wordpress页面侧边栏消失
  • 郑州网站建设优化企业公司营销网站制作
  • 如何做自助网站优秀的wordpress博客
  • 网站开发技术部绩效考核dedecms网站安装
  • 济南做网站找哪家好wordpress动态图片不显示
  • 昌吉网站建设电话福州网站建设教程视频
  • 找人做网站!!! 网站定制开发甘肃网站优化
  • 长沙营销型网站建设北京网络公司的网站