- 浏览: 169402 次
- 性别:
- 来自: 北京
最新评论
-
javamonkey:
https://my.oschina.net/xiandafu ...
beetl功能与Freemarker功能比较 -
laj76333:
支持标签嵌套吗?<%{}%><%{}%> ...
beetl功能与Freemarker功能比较 -
javamonkey:
支持,去ibeetl.com 上了解吧
beetl功能与Freemarker功能比较 -
laj76333:
支持标签吗?<%{}%><%{}%>& ...
beetl功能与Freemarker功能比较 -
酷沃哦:
beetl支持集群吗?
beetl功能与Freemarker功能比较
文章列表
常规来说,IO流提供了输出字符串(字符数组)的功能,所以,通常的整型输出应该是这样的代码:String str = String.valueOf(12);out.write(str);对于模板引擎来说,输出整形变量很常见,事实上,这个地方有非常大的性能提高空间。我们只要分析这俩句话的源码,就能看出,如何提高io输出int性能。
对于一个程序语言来说,访问变量是一个基本的操作,也是最频繁使用的操作。提高Beetl访问变量的效率,将整体上提高Beetl的性能,本文介绍了Beetl是如何访问变量的。首先看一个简单的例子:var a = "hi";print(a);第一行定义a变量,第二行引用a变量打印输出,通常设计下,可以在变量定义的时候将变量保存到map里,需要用的时候根据变量名取出。因此上诉代码可以翻译为java的类似如下代码
本文是Beetl模板引擎的Spring整合扩展的使用文档
beetl-spring源码和使用示例的发布在这里 https://git.oschina.net/shishuifox/beetl-spring
beetl的官网在这里 http://ibeetl.com
一、GroupTemplateFactoryBean
GroupTemplateFactoryBean实现了FactoryBean<GroupTemplate>接口,是Beetl核心类Grou
Java模板引擎已经发展了10余年,使用模板引擎者和模板引擎开发者都不思进取,得过且过,变化一直不大。毕竟,有技术含量值得屌丝追求的还是在后台。譬如早期的EJB,后来的WebService,SSH,还有现在的云计算,NOSQL等。但是,模 ...
6月10号的一次调试,把输出buffer由原来的1024*8 改成了 10字节但忘记改回,也就是说,模板输出每满10个字节就会IO输出,导致性能比Freemarker差一些。我是最近在做性能再次优化的时候发现此严重问题的
我查看了下载记录,大概有260个下载受到影响。我现在已经修复此问题,请大家更新到最新版本,http://beetl.sourceforge.net/
更新后,能保证性能在优化模式下3-4倍于Freemarker
下图是左边是6月10号的错误代码,右边是更改后的现在的
1 支持了类似Freemarker的 General Get,即如果模型有一个public Object get(String key);可以在模板中当着属性引用
如:
${user.name},或者采用[]方式 如${user['name']}
2 通过Config类来创建GroupTemplate。Config
默认会先装载 /org/bee/tl/core/beetl-default.properties,
然后如果classpath
下存在beetl.properties,
再装载或者覆盖其属性。beetl-default.properties
内容 ...
这是最近几个月beetl
使用者完成的俩个电商网站截图:
最近在做中文翻译成英文以走出国门,没有翻译完,还有30多页了,虽然翻译的蹩脚,但看着已经有点像模像样了,等着慢慢优化,如果有自愿者能帮助,那就更好了
Beetl Guid
---Joel Li
2012-6-29
1.
What is Beetl
.........................
Resin3 JSP预编译实现
一、
预编译需求
通过预先编译JSP
,而不是在线上编译,节省了线上编译时间,降低系统上线初期超高的
CPU
使用率,以及用户请求等待事件
默认方式,Resin3
提供了俩种预编译(
http://www.caucho.com/resin-3.0/jsp/compile.xtp
),但在实际使用的时候,无论哪种方法,都只能编译部分
JSP
,导致优化很不明显,据运维的说,还发生了
log4j
日志无法输出的情况(这个我也很莫名其妙,至今不知道原因)
二、
预编译改善原理
除了分身做beetl(http://beetl.sourceforge.net/)
外,实际上还做了一个Spring相关的,技术含量不高,但还是很有用。所以推荐给大家
一、
概述
Spring-Dumpling(简称
SD)
是在基于
Spring
框架下的提供协作服务,正如
Spring
自带的
@Service,SD
提供
@CooperationService
以及如下注解:
@Publish / @Subscribe
@ClusterSync
@RemotePublish / @ ...
介绍除了beetl外,在维护的另外一个小开源项目,spring-dumpling,提供一组注解来增强spring service的协作
一:协作服务1 @CooperationService,类似于Spring的@Service所有标记@CooperationService的类都将检查类方法里是否有如下annotation @Publish / @Subscribe@ClusterSync @RemotePublish / @RemoteSubscriber @RemoteNotify / @RemoteWait@Process / @Task
2 @Publish,有如下属性path: ...
Beetl最近也没有更新,正好有时间贡献点其他方面的文章。Struts2官方已经发布了多次漏洞补丁,但根源在于OGNL能调用静态办法,所以彻底解决漏洞的办法是底层禁止OGNL调用一些特定的java类,如System,Runtime类
我们底层入手,调用OGNLRuntime静态方法,设置我们自己的MethodAccessor类,能禁止OGNL在表达式中调用Runtime,System等类。这已经验证通过。
如下图从左到右,是action的参数赋值过程,为了堵住漏洞,通常是在ParameterInteceptor做过滤,但几年来,都有漏洞,如果我们在OGNLRuntime那做过滤,因 ...
老发表beetl的更新日志,我也烦了,近期不忙,正好贡献点其他经验出来吧:解决内存泄露的一个方法是分许heap dump文件,可以参考 http://visualvm.java.net/oqlhelp.html
我自己总结了一下以后可能用到的一些OQL,如下:
查找所有包含指定类的list
heap.objects(heap.findClass("java.util.ArrayList"),true, function(it){if(it.size<=0){return false ;}var i=0;var data = it.elementData[0]; ...
东西好不好,先比一下功能,拿目前最流行的Freemarker来做比较
完全参考了
Freemarker
官方文档(
2.3.19
)
第一列是freemarker官方文档目录,第二列是表示
beetl
中是否具有同样的功能
通过下列表格,可以看出绝大部分功能,
beetl
都是支持的
功能
是否支持
备注
1.1 ...
beetl是一个语法类似javascript的模板语言,可以用于代码生成和Web开发,易用性和性能非常好,功能也很全
,如下是在性能上最新优化成功
Beetl1.2M1字节优化成果
还是以以前的模板为准(大小6K),循环渲染50000次,需要时间(毫秒为单位)如下
Beetl1.2M1 解释执行方式(普通模式),运行三次,分别 1356,1365,1348
Beetl1.2M1 编译执行方式(普通模式),运行三次,分别 913,922,905Freemarker 分别是 1155,1130,1122
Beetl1.2M1 允许字节流优化 ...