关于freemarker创建模板的问题.熟悉的朋友帮忙看看,谢谢

问题描述

之前没接触过freemark.应项目要求使用freemark.结果发现使用freemark与不使用性能差距很大.如下是我的代码:Configuration cfg = new Configuration(); StringTemplateLoader templateLoader = new StringTemplateLoader(); templateLoader.putTemplate( "tempTemplate", "${fm.encode("${fm.encodeStr}&init=${fm.init}")}"); cfg.setTemplateLoader(templateLoader); cfg.setEncoding(Locale.CHINA, "UTF-8"); EncoderExample fm = new EncoderExample("test.test2"); Map<String, Object> map = new HashMap<String, Object>(); map.put("fm", fm); CharArrayWriter writer = new CharArrayWriter(1000); try { Template template = cfg.getTemplate("tempTemplate"); template.process(map, writer); } catch (Exception e) { System.out.println("Proccess ERROR." + e.getMessage()); } finally { writer.flush(); writer.close(); }执行后发现Configuration这个类实例化的时候花费时间很长.大概200ms左右.相当于实例化普通类60000个.请问下是否有其他创建模板的办法?或者有其他方式可以实现同样的功能?麻烦知道的朋友帮忙下 谢谢啊~~ 问题补充:fmjsjx 写道

解决方案

引用多谢你的回答.不过看了他的构造方法.貌似也不是单例的啊.Java代码 收藏代码 public Configuration() { cache = new TemplateCache(); cache.setConfiguration(this); cache.setDelay(5000); loadBuiltInSharedVariables(); } 但是循环创建一个对象跟创建100个对象花费的时间却差不多.不解啊~~~ 晕啊……都有构造了当然就不是单例了,我这里说的所谓“单例”,指的是要你自己在程序里维护一个全局唯一的Configuration对象,而不是说他自己是单例的……至于这个创建时间的问题,这个不就是java本身的特性么?第一次加载需要从jar包里加载到内存,涉及到IO,所以当然慢了,之后都是内存内操作,消耗就少得多……
解决方案二:
Configuration这个类原则上是应当是单例的,也就是全局唯一的,所以耗时长点没啥呀?使用时用不同的template就行了。

时间: 2024-08-10 11:00:58

关于freemarker创建模板的问题.熟悉的朋友帮忙看看,谢谢的相关文章

使用 ASP.NET 语法创建模板

asp.net|创建|模板|语法 使用 ASP.NET 语法创建 Web 服务器控件模板 在 .aspx 文件中,将元素插入到控件中标识正在创建的模板: <asp:DataList id="DataList1" runat="server"> <ItemTemplate> </ItemTemplate></asp:DataList> 在模板元素中,添加 HTML 文本和其他控件作为模板的内容.包括使用常规语法的嵌入式控

Dreamweaver8.0创建模板

查看全套"dreamweaver8.0教程" 在我们制作网站的过程中,为了统一风格,很多页面会用到相同的布局.图片和文字元素.为了避免大量的重复劳动,可以使用Dreamweaver8提供的模板功能,将具有相同版面结构的页面制作为模板,将相同的元素(如导航栏)制作为库项目,并存放在库中可以随时调用. 一.创建模板 模板的创建有三种方式. 1.直接创建模板 选择"窗口/资源"命令,打开"资源"面板,切换到模板子面板,如下图所示. 单击模板面板上的&q

springMVC+freemarker中模板和自定义标签不加载

问题描述 最近刚开始学习springMVC+freemarker,模板和自定义标签不加载.不多少,上代码.jxycms-servlet-admin.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSche

freemarker-&amp;amp;lt;!-- 配置freeMarker的模板路径 --&amp;amp;gt;

问题描述 <!-- 配置freeMarker的模板路径 --> 因项目需求 不允许吧本身项目代码以外的各文件放到项目中.所以像模板,静态化之后的文件都要另外存放. 这是原先的配置文件 <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="t

虚拟机-求对nmap和端口扫描工具较熟悉的朋友进来看看

问题描述 求对nmap和端口扫描工具较熟悉的朋友进来看看 我在虚拟机中,使用nmap -sn 192.168.1.0/24,同时用wireshark抓包,-sn应该是ping吧,然而wireshark里是arp广播. 然后使用了nmap -PS 192.168.1.0/24,我看资料这里应该是用tcp syn进行扫描,但在wireshark里,先进行了arp广播,然后再进行了tcp扫描(这里的扫描并非广播,而是目的地址是arp广播的结果) 于是,我有如下的问题: 1.扫描存活主机,为什么都会先使

mysql创建触发器报错,请高手帮忙看下

问题描述 mysql创建触发器报错,请高手帮忙看下 DROP TABLE if EXISTS tb; CREATE TABLE tb(BH CHAR(16),content VARCHAR(20),date DATETIME,val INT); CREATE TRIGGER tri_NewBH BEFORE INSERT ON tb FOR EACH ROW BEGIN DECLARE dt CHAR(8) DECLARE bh_id CHAR(16) DECLARE number INT(1)

创建模板以便可以重复使用 Investment Analysis 设置

IBM Rational Focal Point V6.5.2 包含针对 Investment Analysis 组件的多处改进.它提供了更多 细节,但必须针对 Focal Point 中的每个新元素进行重新设置.在 V6.5.2 中,可以创建一种模板来重复使 用所有这些详细的设置. 例如,可以使用 Rational Focal Point 中的模块来表示项目.在使用 Investment Analysis 时,每个项目的财务模型有可能与其他项目类似.模板包含项目模块中所有项目通用的 设置,而且

利用IBM Rational Focal Point中的Investment Analysis组件创建模板

IBM® Rational® Focal Point V6.5.2 包含针对 Investment Analysis 组件的多处改进.它提供了更多细节,但必须针对 Focal Point 中的每个新元素进行重新设置.在 V6.5.2 中,可以创建一种模板来重复使用所有这些详细的设置. 例如,可以使用 Rational Focal Point 中的模块来表示项目.在使用 Investment Analysis 时,每个项目的财务模型有可能与其他项目类似.模板包含项目模块中所有项目通用的设置,而且模

MS CRM 2011 插件(plugin)的快速开发 -- 创建模板

如果你开发过很多MS CRM的插件的话,相信你一定会发现,如果每一次开发插件都从头做起的话,你会做很多重复性的工作.如果你发现你每天做着重复性的工作,你就要考虑怎样才能将重复降到最低,理想的情况就是只做一次. 开发CRM的插件(当然要使用Visual Studio)你需要做很多"准备性的工作",比如添加引用,给插件签名.这些"准备性的工作"也就是重复性的工作,非常浪费时间.一个好的解决办法,就是创建一个你自己的插件模板.在这篇文章中,我为大家介绍两个方面的经验:一是