`
sw1982
  • 浏览: 514263 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

类模板语言的变量替换~简易java实现

阅读更多

场景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主从结构, 写需要做成异步。

分享到:
评论
2 楼 sw1982 2011-04-07  
beneo 写道
说来说去是简化版本的REST么?

不懂rest。。。当时做分布式日志收集和处理系统,考虑过nosql和其他方案,结果发现还是DB的查询比较满足需求。
1 楼 beneo 2011-04-06  
说来说去是简化版本的REST么?

相关推荐

    EQQ代码简易版.zip适合javaSE 基于多线程面向对象思想,接口集合等基础技术

    2. **面向对象编程**:Java语言是纯面向对象的,EQQ代码简易版通过类的设计,展示了如何利用封装、继承和多态三大特性进行软件设计。封装隐藏了对象的内部实现细节,通过public、private等访问修饰符控制成员变量和...

    tapestry4.0简易教程

    **4.3 可替换模板变量** - **概念理解:** 模板变量允许在组件中使用动态内容。 - **具体实践:** 使用`<t:variable>`标签来定义模板变量。 **4.4 组件使用指定包** - **概念理解:** 指定组件所在的包路径。 - **...

    c#制作记事本

    - "复制"、"剪切"、"粘贴":利用`DataObject`类和`Clipboard`类实现。 - "撤销"、"重做":需要维护一个操作历史栈,通过栈操作实现。 - "查找"、"替换":遍历TextBox中的文本,进行查找和替换。 - **格式化选项...

    javaScript简明教程

    JavaScript作为一门广泛应用于Web开发的语言,常常因其简易的学习曲线而被低估。然而,在其表面的简单背后隐藏着复杂且强大的特性。随着2005年以来JavaScript应用程序的爆发式增长,深入理解这门语言变得愈发重要。 ...

    操作系统(内存管理)

    文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...

Global site tag (gtag.js) - Google Analytics