<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tudingdang的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tudingdang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tudingdang]]></copyright><item><title><![CDATA[Beetl 性能揭秘 1 ：如何输出一个整型变量]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84616767</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84616767</guid><author>tudingdang</author><pubDate>Mon, 21 Jul 2014 09:42:40 +0800</pubDate><description><![CDATA[
常规来说，IO流提供了输出字符串（字符数组）的功能，所以，通常的整型输出应该是这样的代码：String str = String.valueOf(12);out.write(str);对于模板引擎来说，输出整形变量很常见，事实上，这个地方有非常大的性能提高空间。我们只要分析这俩句话的源码，就能看出，如何提高io输出int性能。对于第一句 String.valueOf 实际上调用了Integer...]]></description><category></category></item><item><title><![CDATA[beetl 性能揭秘 2 ：语言如何存取变量]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84616765</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84616765</guid><author>tudingdang</author><pubDate>Mon, 21 Jul 2014 09:39:03 +0800</pubDate><description><![CDATA[
对于一个程序语言来说，访问变量是一个基本的操作，也是最频繁使用的操作。提高Beetl访问变量的效率，将整体上提高Beetl的性能，本文介绍了Beetl是如何访问变量的。首先看一个简单的例子:var a = &quot;hi&quot;;print(a);第一行定义a变量，第二行引用a变量打印输出，通常设计下，可以在变量定义的时候将变量保存到map里，需要用的时候根据变量名取出。因此上诉代码可以翻译为java的类似...]]></description><category></category></item><item><title><![CDATA[beetl 的maven地址]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84614847</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84614847</guid><author>tudingdang</author><pubDate>Tue, 15 Jul 2014 16:17:13 +0800</pubDate><description><![CDATA[

&amp;lt;dependency&amp;gt;


    &amp;lt;groupId&amp;gt;org.beetl&amp;lt;/groupId&amp;gt;


    &amp;lt;artifactId&amp;gt;beetl-core&amp;lt;/artifactId&amp;gt;


    &amp;lt;version&amp;gt;2.0.10&amp;lt;/version&amp;gt;


&amp;lt;/dependency&amp;gt;
]]></description><category></category></item><item><title><![CDATA[转:Beetl-Spring扩展文档]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84611934</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84611934</guid><author>tudingdang</author><pubDate>Fri, 04 Jul 2014 23:57:05 +0800</pubDate><description><![CDATA[
本文是Beetl模板引擎的Spring整合扩展的使用文档
beetl-spring源码和使用示例的发布在这里 https://git.oschina.net/shishuifox/beetl-spring
beetl的官网在这里 http://ibeetl.com
一、GroupTemplateFactoryBean
        GroupTemplateFactoryBean实现了...]]></description><category></category></item><item><title><![CDATA[现代模板引擎应具有的7大特征]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84359805</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84359805</guid><author>tudingdang</author><pubDate>Thu, 22 Nov 2012 23:10:14 +0800</pubDate><description><![CDATA[  Java模板引擎已经发展了10余年，使用模板引擎者和模板引擎开发者都不思进取，得过且过,变化一直不大。毕竟，有技术含量值得屌丝追求的还是在后台。譬如早期的EJB，后来的WebService,SSH,还有现在的云计算，NOSQL等。但是，模板引擎没有变化并不代表已经非常成熟，它跟其他技术一样，也需要更新换代。程序员越来越认识到，模板开发在工作中占了较大工时，模板在渲染时占了CPU较大份额。现在国...]]></description><category></category></item><item><title><![CDATA[ Beetl 性能不如 Freemarker]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84290505</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84290505</guid><author>tudingdang</author><pubDate>Sun, 16 Sep 2012 22:54:07 +0800</pubDate><description><![CDATA[  6月10号的一次调试，把输出buffer由原来的1024*8 改成了 10字节但忘记改回，也就是说，模板输出每满10个字节就会IO输出，导致性能比Freemarker差一些。我是最近在做性能再次优化的时候发现此严重问题的

我查看了下载记录，大概有260个下载受到影响。我现在已经修复此问题，请大家更新到最新版本，http://beetl.sourceforge.net/
更新后，能保证性...]]></description><category></category></item><item><title><![CDATA[Beetl 1.2M1 最新增强功能]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84286592</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84286592</guid><author>tudingdang</author><pubDate>Sun, 09 Sep 2012 22:56:57 +0800</pubDate><description><![CDATA[1 支持了类似Freemarker的 General Get，即如果模型有一个public Object get(String key);可以在模板中当着属性引用

如：

${user.name},或者采用[]方式 如${user['name']}



2 通过Config类来创建GroupTemplate。Config
默认会先装载 /org/bee/tl/core/bee...]]></description><category></category></item><item><title><![CDATA[beetl 开始翻译成英文文档了，有自愿者么？]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84272738</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84272738</guid><author>tudingdang</author><pubDate>Mon, 13 Aug 2012 15:52:22 +0800</pubDate><description><![CDATA[ 
这是最近几个月beetl
使用者完成的俩个电商网站截图：


最近在做中文翻译成英文以走出国门，没有翻译完，还有30多页了，虽然翻译的蹩脚，但看着已经有点像模像样了,等着慢慢优化，如果有自愿者能帮助，那就更好了

 
Beetl Guid 


---Joel Li 
2012-6-29


1.
     

What is Beetl
...........]]></description><category></category></item><item><title><![CDATA[Resin3 JSP预编译实现]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84253740</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84253740</guid><author>tudingdang</author><pubDate>Fri, 20 Jul 2012 10:44:21 +0800</pubDate><description><![CDATA[ 

Resin3 JSP预编译实现


 
 
一、
预编译需求

通过预先编译JSP
，而不是在线上编译，节省了线上编译时间，降低系统上线初期超高的
CPU
使用率，以及用户请求等待事件


默认方式，Resin3
提供了俩种预编译（
http://www.caucho.com/resin-3.0/jsp/compile.xtp
），但在实际使用的时候，无...]]></description><category></category></item><item><title><![CDATA[Spring-Dumpling,一个另外的开源小软件详细说明]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84253734</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84253734</guid><author>tudingdang</author><pubDate>Fri, 20 Jul 2012 10:41:34 +0800</pubDate><description><![CDATA[ 


除了分身做beetl（http://beetl.sourceforge.net/）
外，实际上还做了一个Spring相关的，技术含量不高，但还是很有用。所以推荐给大家

 

一、
概述

Spring-Dumpling(简称
SD) 
是在基于
Spring
框架下的提供协作服务，正如
Spring
自带的 
@Service,SD
提供
@Coo...]]></description><category></category></item><item><title><![CDATA[一个新的小开源项目，spring-dumpling]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84250429</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84250429</guid><author>tudingdang</author><pubDate>Mon, 16 Jul 2012 10:14:09 +0800</pubDate><description><![CDATA[介绍除了beetl外，在维护的另外一个小开源项目，spring-dumpling,提供一组注解来增强spring service的协作

一：协作服务1 @CooperationService,类似于Spring的@Service所有标记@CooperationService的类都将检查类方法里是否有如下annotation @Publish / @Subscribe@ClusterSync ...]]></description><category></category></item><item><title><![CDATA[Struts2 漏洞彻底解决办法]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84249574</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84249574</guid><author>tudingdang</author><pubDate>Fri, 13 Jul 2012 18:32:19 +0800</pubDate><description><![CDATA[
Beetl最近也没有更新，正好有时间贡献点其他方面的文章。Struts2官方已经发布了多次漏洞补丁，但根源在于OGNL能调用静态办法，所以彻底解决漏洞的办法是底层禁止OGNL调用一些特定的java类，如System，Runtime类
我们底层入手，调用OGNLRuntime静态方法，设置我们自己的MethodAccessor类，能禁止OGNL在表达式中调用Runtime,System等类。这...]]></description><category></category></item><item><title><![CDATA[内存分析OQL的几个例子]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84249572</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84249572</guid><author>tudingdang</author><pubDate>Fri, 13 Jul 2012 18:24:03 +0800</pubDate><description><![CDATA[
老发表beetl的更新日志，我也烦了，近期不忙，正好贡献点其他经验出来吧：解决内存泄露的一个方法是分许heap dump文件，可以参考 http://visualvm.java.net/oqlhelp.html
我自己总结了一下以后可能用到的一些OQL，如下：
查找所有包含指定类的list
heap.objects(heap.findClass(&quot;java.util.ArrayList&quot;...]]></description><category></category></item><item><title><![CDATA[beetl功能与Freemarker功能比较]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84242411</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84242411</guid><author>tudingdang</author><pubDate>Sun, 01 Jul 2012 19:37:48 +0800</pubDate><description><![CDATA[东西好不好，先比一下功能，拿目前最流行的Freemarker来做比较


完全参考了
Freemarker
官方文档（
2.3.19
）
 第一列是freemarker官方文档目录，第二列是表示
beetl
中是否具有同样的功能



  通过下列表格，可以看出绝大部分功能，
beetl
都是支持的





     
  





功能...]]></description><category></category></item><item><title><![CDATA[Beetl1.2M1将模板的文本先以Byte方式输出，性能又大幅提高(更新）]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84232002</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84232002</guid><author>tudingdang</author><pubDate>Sun, 10 Jun 2012 23:44:55 +0800</pubDate><description><![CDATA[beetl是一个语法类似javascript的模板语言，可以用于代码生成和Web开发，易用性和性能非常好，功能也很全
，如下是在性能上最新优化成功
Beetl1.2M1字节优化成果
 





还是以以前的模板为准（大小6K），循环渲染50000次，需要时间（毫秒为单位）如下
 
Beetl1.2M1 解释执行方式（普通模式），运行三次，分别 1356,1365,1348...]]></description><category></category></item><item><title><![CDATA[性能(调优)三种吹毛求疵的行为]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84229438</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84229438</guid><author>tudingdang</author><pubDate>Wed, 06 Jun 2012 10:42:41 +0800</pubDate><description><![CDATA[做个性能调优，也看过别人的性恩调优，我认为有三种吹毛求疵的性能调优行为，害人害己，有必要拿出来说一下。
 
第一个是片面虚拟机调优： 调优行为是个系统行为，能起到立竿见影的效果的有数据库调优，机器升级，或者架构上的调整，如引入缓存，去掉同步锁，采用异步和并发等。虚拟机调优在我看来，是调优的最后一步，也就是说，其他办法你都用了但你老板还要你做的更好，那就只好采用虚拟机调优。但虚拟机调优真的有用么...]]></description><category></category></item><item><title><![CDATA[Beetl1.2M1 优化了普通文本输出，已经超过了Freemarker]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84227796</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84227796</guid><author>tudingdang</author><pubDate>Sun, 03 Jun 2012 12:42:00 +0800</pubDate><description><![CDATA[1.2M1的一个重要内容之一是将普通文本合并，以优化输出。譬如以前的版本对于如下文本
aaaaaaaaa
bbbbbbbbb
将会先解析为
&amp;lt;&amp;lt;__V0&amp;gt;&amp;gt;&amp;lt;&amp;lt;__VCR&amp;gt;&amp;gt;
&amp;lt;&amp;lt;_V1&amp;gt;&amp;gt;&amp;lt;&amp;lt;__VCR&amp;gt;&amp;gt;
新的合并后，将变成
&amp;lt;&amp;lt;_V0&am]]></description><category></category></item><item><title><![CDATA[Beetl bug修复和功能增强]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84220803</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84220803</guid><author>tudingdang</author><pubDate>Sun, 20 May 2012 23:19:23 +0800</pubDate><description><![CDATA[ 
修复和增强了如下功能：
1 文本处理函数 报错，行数定位不精确的问题
2 默认情况下，优化模式不再保留生成的java源代码
3 Web容器由于不一定能提供web的绝对地址，所以给出警告，最好为优化模式下，设置class目录绝对路径
4 提供了注册functionPage的方法，如下
group.registerFunctionPackage(&quot;string&quot;, new Object...]]></description><category></category></item><item><title><![CDATA[最新 Beetl提供web-sample例子]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84214029</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84214029</guid><author>tudingdang</author><pubDate>Sun, 06 May 2012 17:59:17 +0800</pubDate><description><![CDATA[从主网站上https://sourceforge.net/projects/beetl/files/ 
下载，sample-web.war,部署在任意支持web的容器里，然后可以通过http://${your ip}:${your port}/${your context path}/index 来访问，如下样子

 
首先，通过 BeetlInitListener 初始化配置GroupT...]]></description><category></category></item><item><title><![CDATA[beetl1.1 提供的安全输出总结]]></title><link>https://blog.youkuaiyun.com/tudingdang/article/details/84180242</link><guid>https://blog.youkuaiyun.com/tudingdang/article/details/84180242</guid><author>tudingdang</author><pubDate>Tue, 03 Apr 2012 23:49:48 +0800</pubDate><description><![CDATA[

模板引擎往往在渲染模板的时候，变量往往不是预期值，如变量为null，引擎的空指针异常从而导致页面输出异常。beetl提供了一些安全输出。如下：

[b]占位符异常，用于占位符[/b]

       ${!(user.name)} ,在占位符号使用!() ,括号里面出现异常，则不作任何输出 


[b]Missing Value，用于占位符[/b]
       ${use...]]></description><category></category></item></channel></rss>