1、问题描述:
1.1我这边需要对资讯内容进行打标更新,针对关键字需要转换Html的标签格式化进行替换掉展示高亮显示,然后进行前端展示,可是老代码是432个高亮词,100左右个标签,然后高亮显示,浏览器居然超时了,目前我们的架构规则是超时时间是30秒;
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CN0gjM3MTZ1gDOjFzNzMDOyYzXyEDO0MTM3EzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
针对如此需要好好地进行代码逻辑上对这个打标进行优化。
1、逻辑上对原来的for循环进行重构,
2、对于数据库的查询改造成本地内存。
2、重点是对于1000+字符串的替换这个需要好好地优化一下:
public static void main(String[] args) {
String hight= "<d class='info-highlight-color'>%s</d>";
String content="这是测试的内容";
content=String.format(hight,"测试");
System.out.println(content);
}
}
测试类如上进行正则的匹配效果展示:
输出结果如下:
正则匹配成功!
<d class='info-highlight-color'>测试</d>
Process finished with exit code 0
针对如此,前面还有半角转全角--标签含有高亮词--各种类别的需要高亮词,各种交叉包含,字符串需要各种的排序,大字符先排序,然后先替换高亮,小段的字符串后续进行替换,然后替换时候使用正则 然后在匹配上断开然后在用StingBuilder进行拼接上。总体逻辑太繁琐,单独一个接口进行调用!
直接的逻辑处理进行拆分,在入库的时候进行全角替换;
打标处理之前进行图片替换,然后进行判断;
简化的处理逻辑如下,1000字的处理
String hight = "<d class='info-highlight-color'>%s</d>";
String content = "这是测试的内容";
String onePaterm = String.format(hight, "测试");
content = content.replace("测试", onePaterm);
System.out.println(content);
正则匹配成功!
这是<d class='info-highlight-color'>测试</d>的内容