类模板语言的变量替换~简易java实现
  FnoZzUtsKOmH 2023年11月02日 43 0


场景1:数据库存有 xx,yy,zz,aa,bb 等字段, 但是前台根据不同场景需要选择性的展示部分字段,并且需求频繁调整。

            这里的需求调整可以有前台展示的调整,也会有后台DB字段的调整

 

场景2:自定语法的模版语言实现

 

举例: xx=11&yy=22&zz=33&aa=55&bb=4

${/xx}在${yy}时刻,修改${zz}”

模板11在22时刻,修改33

 

核心实现:

 

 

template = mapping.getInfo(); //${/xx}在${yy}时刻,修改${zz}
//用参数替换模板中的${}变量
Matcher m = Pattern.compile("\\$\\{\\w+\\}").matcher(template);

StringBuffer sb = new StringBuffer();

while (m.find()) {
	String param = m.group(); //${xx}
	Object value = paramMap.get( param.substring(2, param.length() - 1));

       m.appendReplacement(sb, value==null?"":value.toString());
}

m.appendTail(sb);

 

源自早期实现的一个日志统计分析报表实现。鉴于项目被打入冷宫,扣出这一段觉得还有点价值的代码留存备份

 

其他:

1. 鉴于上述 xx=11&yy=22的格式,需要对value值进行=和&的转义,输出时反转义。

 

2. 直接在DB里面varchar(1000),用于存储n个未知变量xx=11&yy=22的方式,也是很靠谱的。但是,一些关键需要索引的变量,还是单独字段来存储。

 

3. 读写分离,用这种方式做日志的聚合和过滤查询非常happy,但是需要做MS主从结构, 写需要做成异步。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  D04qQxYJZ4A6   2023年11月19日   22   0   0 mysqljava读写分离
  G5UoiZ5izCEW   2023年11月13日   32   0   0 字段
  4Txe79BjyroE   2023年11月13日   17   0   0 转义正则
  eHipUjOuzYYH   2023年11月13日   24   0   0 cssico字段
  L83A5jZvvg3Q   2023年11月22日   17   0   0 HTTP重定向字段
  L83A5jZvvg3Q   2023年11月22日   27   0   0 客户端HTTP字段