Tiny

TinyTemplate模板引擎火热出炉,正式开源了~~~

非 Y 不嫁゛ 提交于 2019-12-03 04:17:18
涉水模板引擎领域,纯属不小心。 在此对以下人员表示强烈感谢与致敬: @sub jetbrick作者 @sept @webit webit作者 @罗格林 rythm作者 @闲.大赋 beetl作者 以及许许多多虽然没有列出来,但是在我写tinytemplate时帮助过我的人。 序言 本来是没有自己写一个模板引擎的计划的,因为按我的理解,一直认为这种“语言”级的引擎,难度是非常大的。总感觉自己的水平不够,因此不敢有这个念头。直到大量使用Velocty的时候,碰到velocty诸多不尽如人意的地方,但是又无能为力,退回到JSP吧,又心不有甘。于是就期望着寻找一种语法结构接近velocty,但是又没有Velocity这些不方便之处的模板语言。于是进到一个模板语言群,一群大佬们个个至少是一个模板语言的作者,于是作者在里面表达了自己的期望,大佬们都介绍了自己的模板引擎,于是作者一个接一个的看源码,看文档。说实际,看文档,感觉都非常不错,都有自己的特色,看语法也都不错,除了一部分自己特别关注的点没有之外,其他部分都非常不错了。但是距离自己的诉求还是有差距,怎么办呢?于是就准备找一个最接近的模板引擎来进行一定的扩展,挑来挑去就挑中了jetbrick这个模板语言。 之所以挑中这个是因为以下几个原因: Antlr词法及语法文件编写非常清晰,对于我这种Antlr盲来说,也可以看得懂

Tiny模板引擎(Velocity Plus)应用示例

こ雲淡風輕ζ 提交于 2019-12-01 19:49:48
把TinyTemplate当成是Velocity的升级版其实也是可以的,毕竟它的语法是基到Veloccity扩展而来的,兼容度在80%以上。 至于TinyTemplate的实例是怎样的,且看下面: 宏的可变参数 在Java中的可变参数使用起来非常方便,Tiny模板也对可变参有一定支持。 #macro hello() ParameterList: ${helloParameterList.size()} #for(para:helloParameterList) hello:${para} #end #end #call("hello","aa",1,true,false) 运行结果: ParameterList: 4 hello:aa hello:1 hello:true hello:false 说明:在宏的包体中,有一个默认的变量,名称就是宏的名字+ParameterList,当前例子中,宏的名字是hello,所以变量的名字就是:helloParameterList。 此变量的类似是一个List,因此可以调用List的方法。 Set示例 运行结果: 宏定义及其调用示例 1:1 2:2 3:1 4:2 5:2 解释: 首先设置abc=1,然后显示它的值,结果是1,这个是理所当然的。 然后定义一个宏,在宏里设置变量abc的值为2,然后显示这个值。 在调用setAbc宏的时候

扒掉红薯的内裤-深入剖析J2Cache

纵然是瞬间 提交于 2019-11-30 07:19:10
最近看到红薯的J2Cache强大到不行,居然长期占据开源中国开源项目排行榜,偶就气不打一处来。 话说你是开源中国第一帅,这个咱们大家有共识,确实实力在那里,我们都认了。 话说你口才比@永和 好,这个只要永和没有意见,我们也同意。 但是,做个J2Cache居然还悬赏好多次,貌似要打造成开源中国第一开源项目,这就有点过分了。不对,不是过分,是相当过分。 所以今天,偶就狠狠的扒掉@红薯 的内裤,对J2Cache进行一下深入剖析。 前面写过一篇文章,标题是 吐槽一下J2Cache ,吐槽过后发现J2Cache的热度居然火速上升,貌似有成为开源中国第一开源项目的意思,偶这小心脏就有点受不了了,于是决定再写一篇文章,直接狠一点把 @红薯 的内裤扒掉,对J2Cache进行一下深入剖析。 Cache接口 /** * Implementors define a caching algorithm. All implementors * <b>must</b> be threadsafe. * @author liudong */ public interface Cache { /** * Get an item from the cache, nontransactionally * @param key cache key * @return the cached object or null