<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>夜半难眠</title>
	<atom:link href="http://www.havenliu.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.havenliu.com</link>
	<description>blogger被和谐，重新搬家</description>
	<lastBuildDate>Sun, 11 Jul 2010 05:29:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>西湖的荷花</title>
		<link>http://www.havenliu.com/mylife/465.html</link>
		<comments>http://www.havenliu.com/mylife/465.html#comments</comments>
		<pubDate>Sun, 11 Jul 2010 05:27:51 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[生活杂记]]></category>
		<category><![CDATA[摄影]]></category>
		<category><![CDATA[西湖]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=465</guid>
		<description><![CDATA[大概是有单反的缘故，今年对西湖的荷花特别期盼。早些时间已经去看过一次，遗憾的时当时去的太早，荷花都还没开。好不容易熬到天热了，昨天又兴冲冲的提着相机去看了一次。这次总算没失望：荷花已经开了。虽然还不是大面积的的盛放，但也很漂亮。
用很劣拙的技术随便拍了几张，放上来现一下：
这让我想起来教科书的那首诗：小荷才露尖尖角，早有蜻蜓立上头。
在亭子里休息的时候，一阵风吹过，莲叶翻起的时候，一朵荷花露出头来。
原来不只是尖角上才有蜻蜓：
这里也还有。。。。
相关文章2010年06月17日 -- D80初试机]]></description>
			<content:encoded><![CDATA[<p>大概是有单反的缘故，今年对西湖的荷花特别期盼。早些时间已经去看过一次，遗憾的时当时去的太早，荷花都还没开。好不容易熬到天热了，昨天又兴冲冲的提着相机去看了一次。这次总算没失望：荷花已经开了。虽然还不是大面积的的盛放，但也很漂亮。</p>
<p>用很劣拙的技术随便拍了几张，放上来现一下：</p>

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0222-blog.jpg" title="" class="shutterset_singlepic74" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/74__640x480_dsc_0222-blog.jpg" alt="dsc_0222-blog" title="dsc_0222-blog" />
</a>

<p><span id="more-465"></span>这让我想起来教科书的那首诗：小荷才露尖尖角，早有蜻蜓立上头。<br />

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0205-blog.jpg" title="" class="shutterset_singlepic73" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/73__640x480_dsc_0205-blog.jpg" alt="dsc_0205-blog" title="dsc_0205-blog" />
</a>
</p>
<p>在亭子里休息的时候，一阵风吹过，莲叶翻起的时候，一朵荷花露出头来。<br />

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0137-blog.jpg" title="" class="shutterset_singlepic72" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/72__640x480_dsc_0137-blog.jpg" alt="dsc_0137-blog" title="dsc_0137-blog" />
</a>
</p>

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0100-blog.jpg" title="" class="shutterset_singlepic71" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/71__640x480_dsc_0100-blog.jpg" alt="dsc_0100-blog" title="dsc_0100-blog" />
</a>


<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0097-blog.jpg" title="" class="shutterset_singlepic70" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/70__640x480_dsc_0097-blog.jpg" alt="dsc_0097-blog" title="dsc_0097-blog" />
</a>


<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0094-blog.jpg" title="" class="shutterset_singlepic69" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/69__640x480_dsc_0094-blog.jpg" alt="dsc_0094-blog" title="dsc_0094-blog" />
</a>

<p>原来不只是尖角上才有蜻蜓：<br />

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0089-blog.jpg" title="" class="shutterset_singlepic68" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/68__640x480_dsc_0089-blog.jpg" alt="dsc_0089-blog" title="dsc_0089-blog" />
</a>
</p>
<p>这里也还有。。。。<br />

<a href="http://www.havenliu.com/wp-content/gallery/hehua/dsc_0070-blog.jpg" title="" class="shutterset_singlepic67" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/67__640x480_dsc_0070-blog.jpg" alt="dsc_0070-blog" title="dsc_0070-blog" />
</a>
</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年06月17日 -- <a href="http://www.havenliu.com/mylife/457.html" title="D80初试机">D80初试机</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/mylife/465.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【转】十年前你绝对没有看懂的《大话西游》，十年后你终于懂了……</title>
		<link>http://www.havenliu.com/goodarticle/462.html</link>
		<comments>http://www.havenliu.com/goodarticle/462.html#comments</comments>
		<pubDate>Wed, 30 Jun 2010 03:16:32 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[网络文摘]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=462</guid>
		<description><![CDATA[这个世界上还有一个故事，叫做《大话西游》。
世界是巨大的枷锁，你不得不重复自己或是别人的生活。
记得长辈说过：年轻是一种罪过。他们说我们不成熟。
真切地为自己的不俗喝彩，在深切的郁闷中，突然就看懂了《大话西游》的开头： 一位才华横溢又无法无天的青年（孙悟空），根本不喜欢世人摊派给他的大事业（西天取经）。他尤其受不了师父（唐僧）的唠唠叨叨，可世俗条规（观音）又不放过他。为让他悔悟，心甘情愿地去取经，唐僧和观音达成妥协：让他五百年后重新做人。 这真是一个宿命的开始。
九七一师兄曰：“大学的孩子都是玻璃罐里养蛤蟆，前途光明出路不大。”再贴切不过。大闹天宫无非是大学四年的黄金时光罢了，找到工作走上社会任你盖世的才华浑身的个性也自有翻不出的五指山来压。只有戴上紧箍咒取经去，九九八十一难，做一个奇奇怪怪的佛。你别无选择。
五百年后的悟空叫至尊宝，在五岳山从事一份很有前途的职业—— 山贼。命运却要他扮演孙悟空，至尊宝只是个过渡罢了。蜘蛛精来了，白骨精来了，菩提老祖来了，牛魔王也来了……都是棋子，安静地立在命棋盘的中央。
他的路线是早定好的：（1）一个人给他三颗痣（2）戴上紧箍咒（3）打败牛魔王（4）西天取经。可怜的至尊宝什么都不知道，认认真真做山贼，还爱上了白骨精，想和她结为百年之好。
所有的事都瞒着他接二连三地发生。
给至尊宝三颗痣的人是紫霞仙子。谁说的：总有一个女孩出现，让男孩最终成为男人。而男人永远都不可能得到她，那简直是一定的。
非常喜欢紫霞的开场白：“现在我郑重宣布，这座山上所有的东西都是我的，包括你。”那样的气贯云霄，像一个童话故事。
而现实是：这个世界没有什么属于你，包括你自己。也许我们就是为了创造属于自己的东西才来到这个世上，因为年轻，所以押注于爱情。
至尊宝拒绝了紫霞，他以为自己还爱晶晶。见到晶晶，他又发现紫霞才是真爱。命运一直在同他开玩笑：至尊宝忽然成了孙悟空，千辛万苦找晶晶又爱上了紫霞。而抉择是那样残酷：要打败牛魔王救紫霞，就必须戴上紧箍咒做回神通广大的孙悟空；而戴上紧箍咒就不能有半点情欲，只有取经去。
为至尊宝不平：不明白在这样的故事里为何爱情总要成为牺牲品，干嘛不让周星弛携紫霞纤纤小手——走先！我曾无数次在网上反映过类似意见，搞得很累。爱情是那样美丽而脆弱，无法直面生活的琐碎和坚韧。哪段感情又没有绚烂的瞬间和艰难的长久，在一起就会幸福吗，未必。
至尊宝挖开自己的心，看到了紫霞留在那里的一滴眼泪，毕竟曾经沧海过。 五百年又五百年，兜了一个大圈子又回到了原地。人没能战胜命运，而人的尊严却在抗争中得到了肯定，人的情感也必将不朽。 “生亦何欢，死亦何苦。”大彻大悟。
紧箍咒，圈住昔日的梦想，圈住棱角分明的个性。
成熟是一个很痛的词，它不一定会得到，却一定会失去。
永别了，激情四溢的花样年华！永别了，神采飞扬的青春岁月！永别了，同学！永别了，爱人同志！至此后漫漫长路我独行。
望着荧幕上扛着金箍棒的悟空，忽地明白了本班男生什么自称光棍。向光棍行者们敬礼！
全片最后一句台词是：“你看那个人，好奇怪哟，象一条狗。”
罗曼蒂克、海誓山盟、生死相许……面对爱情这些都是琐碎，不值一提。
爱情就是爱情，不是别的什么东西。
能与爱情同在的只有生命，其他都滚一边儿去。
你爱了，难道还不够吗？
悟空爱了，不论晶晶还是紫霞，他都要将爱情进行到底。
晶晶爱了，那个弃她而去的悟空，“不能和喜欢的人在一起，做人又怎会开心。”
紫霞爱了，“谁拔出我的紫青宝剑，谁就是我的如意郎君。”
爱一个人需要理由吗？
孙悟空会爱白骨精，八戒爱上了蜘蛛精。紫霞爱他至深，因为他拔出了一把剑。
故事里的人找爱人的理由永远千奇百怪：王子要用水晶鞋才能找到灰姑娘，薛宝钗要那有玉的人来配……可生活永远现实得多，芸芸众生，谁又能许谁一个未来，自欺欺人罢了。
有理由也好，没理由也罢，可还是要爱。让我去，过程就是结果，无悔。
爱无须掩饰无须矫做无须患得患失，只要像紫霞一样说：“让我们立刻开始这段感情吧！先亲我一下。”
爱是身不由己。
晶晶口中道：“我再也不会为这个男人心痛了。”可还是要为他拔剑与人拼命。
至尊宝梦中也要叫紫霞的名字七百四十一次，不知道的人觉得紫霞一定欠了他很多钱。
紫霞说：“就象飞蛾，明知会受伤也要扑到火上。” “我无力抗拒，向你狂奔去。”无可救药的痴迷。
爱是奋不顾身。
至尊宝对晶晶说：“你杀了我吧，我不希望你看我的时候心里却想着别的人。”
晶晶以为：“都是骗我的。”跳下崖去。
紫霞把身体挡在至尊宝面前，刺进牛魔王的铁叉里。
一时间，以后的人生如何，大家都无所谓了。连那样宝贵的性命，也打算随时给爱情作了祭品。一个个一头扎进这情爱苦海，宁愿永生永世不得超生。
爱深刻莫测。
三十娘流着泪说：“想我春三十娘貌美如花，却跟这么丑的人有了。” 这是多少美丽自负的女子的宿命：心中的他是能文能武翩翩少年，枕边人却鼾声如雷大腹便便。谁敢说多年后眼望自己的丈夫不会有如此感觉，真不知幸福还是心酸。不过还是要为他挺身而去无限牺牲，像春三十娘为八戒放下断龙石与牛魔王同归于尽。
晶晶爱悟空，至尊宝爱晶晶，紫霞爱至尊宝，“他爱你你爱我我爱他”，千古无解的方程。《白马啸西风》里说：“如果你深深爱着的人，却又深深爱上了别人，能有什么法子？”
所以紫霞说：“爱一个人原来是那么痛苦。” 晶晶找不到那个抛弃她的悟空（象不象殷离），告诉至尊宝：“你经过五百年回来要找的不是我。”当年被他推开的紫霞已经悄无声息地抵达他灵魂的最深处，而他却不自知。可紫霞死了：“我的意中人是个盖世英雄，有一天他会踩着七色的云彩来娶我，我猜中了前头，可是我猜不着这结局……”
没有人猜得中结局，一切随风而去。
恋爱的时候我们都不懂爱情，懂得爱情后却失去了可以相爱的时光。
最绝望不是他不爱你或他离你而去，最绝望是你忘记了怎么去爱一个人，你已丧失了爱的能力。
请记住下面的台词：“曾经有一份真诚的爱情摆在我的面前，但是我没有珍惜。等到了失去的时候才后悔莫及，尘世间最痛苦的事莫过于此。如果上天可以给我一个机会再来一次的话，我会对你说三个字“我爱你”。如果非要把这份爱加上一个期限，我希望是一万年！” 也顺便记住这段话的原版，在王家卫的《重庆森林》里：“如果记忆是一个罐头，我希望它永远都不会过期，如果一定要加上一个期限的话，我希望是一万年。”
至尊宝第一次说这番话是骗紫霞，第二次说已痛不欲生。 总有一天，你会在灵魂最温柔的一隅为她重复这段话，为了你们即将封存的一万年。 “如果有一天我忍不住问你，你一定要骗我。不管你心里有多么不愿意，你都不要告诉我你从来没有喜欢过我。”
此情可待成追忆
只是当时已惘然
随机文章2010年04月8日 -- 转摘一篇关于目前房价的文章2009年10月10日 -- 国庆骑行绍兴2009年09月3日 -- 【骑单车看世界】骑行徽杭古道（三）2009年12月23日 -- 人类无法抗拒的10种心理2010年05月6日 -- 西塘游记]]></description>
			<content:encoded><![CDATA[<p>这个世界上还有一个故事，叫做《大话西游》。</p>
<p>世界是巨大的枷锁，你不得不重复自己或是别人的生活。</p>
<p>记得长辈说过：年轻是一种罪过。他们说我们不成熟。</p>
<p>真切地为自己的不俗喝彩，在深切的郁闷中，突然就看懂了《大话西游》的开头： 一位才华横溢又无法无天的青年（孙悟空），根本不喜欢世人摊派给他的大事业（西天取经）。他尤其受不了师父（唐僧）的唠唠叨叨，可世俗条规（观音）又不放过他。为让他悔悟，心甘情愿地去取经，唐僧和观音达成妥协：让他五百年后重新做人。 这真是一个宿命的开始。</p>
<p>九七一师兄曰：“大学的孩子都是玻璃罐里养蛤蟆，前途光明出路不大。”再贴切不过。大闹天宫无非是大学四年的黄金时光罢了，找到工作走上社会任你盖世的才华浑身的个性也自有翻不出的五指山来压。只有戴上紧箍咒取经去，九九八十一难，做一个奇奇怪怪的佛。你别无选择。</p>
<p>五百年后的悟空叫至尊宝，在五岳山从事一份很有前途的职业—— 山贼。命运却要他扮演孙悟空，至尊宝只是个过渡罢了。蜘蛛精来了，白骨精来了，菩提老祖来了，牛魔王也来了……都是棋子，安静地立在命棋盘的中央。<br />
他的路线是早定好的：（1）一个人给他三颗痣（2）戴上紧箍咒（3）打败牛魔王（4）西天取经。可怜的至尊宝什么都不知道，认认真真做山贼，还爱上了白骨精，想和她结为百年之好。</p>
<p>所有的事都瞒着他接二连三地发生。</p>
<p>给至尊宝三颗痣的人是紫霞仙子。谁说的：总有一个女孩出现，让男孩最终成为男人。而男人永远都不可能得到她，那简直是一定的。</p>
<p>非常喜欢紫霞的开场白：“现在我郑重宣布，这座山上所有的东西都是我的，包括你。”那样的气贯云霄，像一个童话故事。<br />
而现实是：这个世界没有什么属于你，包括你自己。也许我们就是为了创造属于自己的东西才来到这个世上，因为年轻，所以押注于爱情。<br />
至尊宝拒绝了紫霞，他以为自己还爱晶晶。见到晶晶，他又发现紫霞才是真爱。命运一直在同他开玩笑：至尊宝忽然成了孙悟空，千辛万苦找晶晶又爱上了紫霞。而抉择是那样残酷：要打败牛魔王救紫霞，就必须戴上紧箍咒做回神通广大的孙悟空；而戴上紧箍咒就不能有半点情欲，只有取经去。<br />
为至尊宝不平：不明白在这样的故事里为何爱情总要成为牺牲品，干嘛不让周星弛携紫霞纤纤小手——走先！我曾无数次在网上反映过类似意见，搞得很累。爱情是那样美丽而脆弱，无法直面生活的琐碎和坚韧。哪段感情又没有绚烂的瞬间和艰难的长久，在一起就会幸福吗，未必。</p>
<p>至尊宝挖开自己的心，看到了紫霞留在那里的一滴眼泪，毕竟曾经沧海过。 五百年又五百年，兜了一个大圈子又回到了原地。人没能战胜命运，而人的尊严却在抗争中得到了肯定，人的情感也必将不朽。 “生亦何欢，死亦何苦。”大彻大悟。</p>
<p>紧箍咒，圈住昔日的梦想，圈住棱角分明的个性。</p>
<p>成熟是一个很痛的词，它不一定会得到，却一定会失去。</p>
<p>永别了，激情四溢的花样年华！永别了，神采飞扬的青春岁月！永别了，同学！永别了，爱人同志！至此后漫漫长路我独行。</p>
<p>望着荧幕上扛着金箍棒的悟空，忽地明白了本班男生什么自称光棍。向光棍行者们敬礼！</p>
<p>全片最后一句台词是：“你看那个人，好奇怪哟，象一条狗。”<br />
罗曼蒂克、海誓山盟、生死相许……面对爱情这些都是琐碎，不值一提。<br />
爱情就是爱情，不是别的什么东西。<br />
能与爱情同在的只有生命，其他都滚一边儿去。<br />
你爱了，难道还不够吗？<br />
悟空爱了，不论晶晶还是紫霞，他都要将爱情进行到底。<br />
晶晶爱了，那个弃她而去的悟空，“不能和喜欢的人在一起，做人又怎会开心。”<br />
紫霞爱了，“谁拔出我的紫青宝剑，谁就是我的如意郎君。”<br />
爱一个人需要理由吗？<br />
孙悟空会爱白骨精，八戒爱上了蜘蛛精。紫霞爱他至深，因为他拔出了一把剑。</p>
<p>故事里的人找爱人的理由永远千奇百怪：王子要用水晶鞋才能找到灰姑娘，薛宝钗要那有玉的人来配……可生活永远现实得多，芸芸众生，谁又能许谁一个未来，自欺欺人罢了。</p>
<p>有理由也好，没理由也罢，可还是要爱。让我去，过程就是结果，无悔。</p>
<p>爱无须掩饰无须矫做无须患得患失，只要像紫霞一样说：“让我们立刻开始这段感情吧！先亲我一下。”<br />
爱是身不由己。<br />
晶晶口中道：“我再也不会为这个男人心痛了。”可还是要为他拔剑与人拼命。<br />
至尊宝梦中也要叫紫霞的名字七百四十一次，不知道的人觉得紫霞一定欠了他很多钱。</p>
<p>紫霞说：“就象飞蛾，明知会受伤也要扑到火上。” “我无力抗拒，向你狂奔去。”无可救药的痴迷。<br />
爱是奋不顾身。</p>
<p>至尊宝对晶晶说：“你杀了我吧，我不希望你看我的时候心里却想着别的人。”<br />
晶晶以为：“都是骗我的。”跳下崖去。<br />
紫霞把身体挡在至尊宝面前，刺进牛魔王的铁叉里。<br />
一时间，以后的人生如何，大家都无所谓了。连那样宝贵的性命，也打算随时给爱情作了祭品。一个个一头扎进这情爱苦海，宁愿永生永世不得超生。<br />
爱深刻莫测。</p>
<p>三十娘流着泪说：“想我春三十娘貌美如花，却跟这么丑的人有了。” 这是多少美丽自负的女子的宿命：心中的他是能文能武翩翩少年，枕边人却鼾声如雷大腹便便。谁敢说多年后眼望自己的丈夫不会有如此感觉，真不知幸福还是心酸。不过还是要为他挺身而去无限牺牲，像春三十娘为八戒放下断龙石与牛魔王同归于尽。</p>
<p>晶晶爱悟空，至尊宝爱晶晶，紫霞爱至尊宝，“他爱你你爱我我爱他”，千古无解的方程。《白马啸西风》里说：“如果你深深爱着的人，却又深深爱上了别人，能有什么法子？”</p>
<p>所以紫霞说：“爱一个人原来是那么痛苦。” 晶晶找不到那个抛弃她的悟空（象不象殷离），告诉至尊宝：“你经过五百年回来要找的不是我。”当年被他推开的紫霞已经悄无声息地抵达他灵魂的最深处，而他却不自知。可紫霞死了：“我的意中人是个盖世英雄，有一天他会踩着七色的云彩来娶我，我猜中了前头，可是我猜不着这结局……”<br />
没有人猜得中结局，一切随风而去。</p>
<p>恋爱的时候我们都不懂爱情，懂得爱情后却失去了可以相爱的时光。</p>
<p>最绝望不是他不爱你或他离你而去，最绝望是你忘记了怎么去爱一个人，你已丧失了爱的能力。<br />
请记住下面的台词：“曾经有一份真诚的爱情摆在我的面前，但是我没有珍惜。等到了失去的时候才后悔莫及，尘世间最痛苦的事莫过于此。如果上天可以给我一个机会再来一次的话，我会对你说三个字“我爱你”。如果非要把这份爱加上一个期限，我希望是一万年！” 也顺便记住这段话的原版，在王家卫的《重庆森林》里：“如果记忆是一个罐头，我希望它永远都不会过期，如果一定要加上一个期限的话，我希望是一万年。”</p>
<p>至尊宝第一次说这番话是骗紫霞，第二次说已痛不欲生。 总有一天，你会在灵魂最温柔的一隅为她重复这段话，为了你们即将封存的一万年。 “如果有一天我忍不住问你，你一定要骗我。不管你心里有多么不愿意，你都不要告诉我你从来没有喜欢过我。”</p>
<p>此情可待成追忆</p>
<p>只是当时已惘然</p>
<h3  class="related_post_title">随机文章</h3><ul class="related_post"><li>2009年07月8日 -- <a href="http://www.havenliu.com/bike/133.html" title="2009年第96届环法自行车赛第五站视频">2009年第96届环法自行车赛第五站视频</a></li><li>2009年07月5日 -- <a href="http://www.havenliu.com/bike/113.html" title="2009年第96届环法自行车赛第一赛段个人计时赛视频">2009年第96届环法自行车赛第一赛段个人计时赛视频</a></li><li>2009年07月2日 -- <a href="http://www.havenliu.com/java/92.html" title="Java生成XML文档的基本操作">Java生成XML文档的基本操作</a></li><li>2009年07月2日 -- <a href="http://www.havenliu.com/other/59.html" title="网络上收集的搞笑签名">网络上收集的搞笑签名</a></li><li>2009年08月3日 -- <a href="http://www.havenliu.com/mylife/176.html" title="如何知道你的身體正常了-来自传统中医">如何知道你的身體正常了-来自传统中医</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/goodarticle/462.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>D80初试机</title>
		<link>http://www.havenliu.com/mylife/457.html</link>
		<comments>http://www.havenliu.com/mylife/457.html#comments</comments>
		<pubDate>Thu, 17 Jun 2010 14:29:53 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[生活杂记]]></category>
		<category><![CDATA[摄影]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=457</guid>
		<description><![CDATA[单反到手已经有段时间了，一直没时间出去试机，还好端午公司没安排加班，就欣喜若狂的去西湖边狂按一通快门。摄影是个技术活，不用说像我这样的新手刚出的片子基本都是废的。选几张出来晒一下，满足下自己的虚荣心：
曲院风荷的荷叶。本来是去拍荷花的，但去的太早，荷花都还没开，就只能拍荷叶了：
span id=&#8221;more-457&#8243;>
枫叶，西湖边很多，但不是成片的，比较零散
路边的野花
两只麻雀在栏杆上肆无忌惮OOXX，对旁边熙熙攘攘的人流视若不见
路边不知名的小花
相关文章2010年07月11日 -- 西湖的荷花]]></description>
			<content:encoded><![CDATA[<p>单反到手已经有段时间了，一直没时间出去试机，还好端午公司没安排加班，就欣喜若狂的去西湖边狂按一通快门。摄影是个技术活，不用说像我这样的新手刚出的片子基本都是废的。选几张出来晒一下，满足下自己的虚荣心：<br />
曲院风荷的荷叶。本来是去拍荷花的，但去的太早，荷花都还没开，就只能拍荷叶了：<br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0123_blog.jpg" title="" class="shutterset_singlepic66" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/66__640x480_dsc_0123_blog.jpg" alt="荷叶" title="荷叶" />
</a>
<span id="more-457"></span><br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0116_blog.jpg" title="" class="shutterset_singlepic65" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/65__640x480_dsc_0116_blog.jpg" alt="西湖边的树林" title="西湖边的树林" />
</a>
<br />
枫叶，西湖边很多，但不是成片的，比较零散<br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0096_blog.jpg" title="" class="shutterset_singlepic64" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/64__640x480_dsc_0096_blog.jpg" alt="枫叶" title="枫叶" />
</a>
<br />
路边的野花<br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0077_blog.jpg" title="" class="shutterset_singlepic63" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/63__640x480_dsc_0077_blog.jpg" alt="野花和蝴蝶" title="野花和蝴蝶" />
</a>
<br />
两只麻雀在栏杆上肆无忌惮OOXX，对旁边熙熙攘攘的人流视若不见<br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0018_blog.jpg" title="" class="shutterset_singlepic62" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/62__640x480_dsc_0018_blog.jpg" alt="两只麻雀在OOXX" title="两只麻雀在OOXX" />
</a>
<br />
路边不知名的小花<br />

<a href="http://www.havenliu.com/wp-content/gallery/photography/dsc_0006_blog.jpg" title="" class="shutterset_singlepic61" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/61__640x480_dsc_0006_blog.jpg" alt="路边的小花" title="路边的小花" />
</a>
</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2010年07月11日 -- <a href="http://www.havenliu.com/mylife/465.html" title="西湖的荷花">西湖的荷花</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/mylife/457.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用QQ的要注意了</title>
		<link>http://www.havenliu.com/other/448.html</link>
		<comments>http://www.havenliu.com/other/448.html#comments</comments>
		<pubDate>Wed, 02 Jun 2010 05:31:35 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=448</guid>
		<description><![CDATA[前段时间在网上看到QQ扫描私人文件的报道，很是震惊【详情自己Google“QQ 扫描私人文件”】，后来转念一想，在这样的国度什么事都不足为奇，反正电脑里也没什么见不得人的东西。就这样自欺欺人的继续用着QQ。今天同事是用QQ转发了几则网上看来的笑话，帐号马上被封，说什么帐号异常。很明显现在后台监控已经很赤裸裸了，以后用QQ的时候尽量内敛点。能够不用就尽量不用QQ吧，反正IM工具多的是，国内的尽量避开。
用google也要注意，只要你的搜索里有“关键字”马上被墙【不信的可以用Google搜索带“温”的词，比如温暖、温度。。。看看结果是什么，不要以为这是你电脑或网络的问题，这就是伟大的GFW在作怪】，好在google马上要推出加密搜索了。现在测试版的加密搜索已经可以用了，直接访问https://www.google.com就可以了。
为我们那仅存的一点个人隐私和权利祈祷吧！
随机文章2009年07月2日 -- 网络上收集的搞笑签名2009年06月2日 -- 让浏览器显示自己网站的图标2009年07月7日 -- 回家听来的真实故事2009年07月9日 --  2009年第96届环法自行车赛第六站视频2009年07月2日 -- Java生成XML文档的基本操作]]></description>
			<content:encoded><![CDATA[<p>前段时间在网上看到QQ扫描私人文件的报道，很是震惊<span style="color: #ff6600;">【详情自己Google“QQ 扫描私人文件”】</span>，后来转念一想，在这样的国度什么事都不足为奇，反正电脑里也没什么见不得人的东西。就这样自欺欺人的继续用着QQ。今天同事是用QQ转发了几则网上看来的笑话，帐号马上被封，说什么帐号异常。很明显现在后台监控已经很赤裸裸了，以后用QQ的时候尽量内敛点。能够不用就尽量不用QQ吧，反正IM工具多的是，国内的尽量避开。</p>
<p>用google也要注意，只要你的搜索里有“关键字”马上被墙<span style="color: #ff6600;">【不信的可以用Google搜索带“温”的词，比如温暖、温度。。。看看结果是什么，不要以为这是你电脑或网络的问题，这就是伟大的GFW在作怪】</span>，好在google马上要推出加密搜索了。现在测试版的加密搜索已经可以用了，直接访问https://www.google.com就可以了。</p>
<p>为我们那仅存的一点个人隐私和权利祈祷吧！</p>
<h3  class="related_post_title">随机文章</h3><ul class="related_post"><li>2009年07月12日 -- <a href="http://www.havenliu.com/bike/141.html" title="2009年第96届环法自行车赛第七、八站视频">2009年第96届环法自行车赛第七、八站视频</a></li><li>2009年07月7日 -- <a href="http://www.havenliu.com/mylife/119.html" title="回家听来的真实故事">回家听来的真实故事</a></li><li>2009年06月2日 -- <a href="http://www.havenliu.com/web/15.html" title="让浏览器显示自己网站的图标">让浏览器显示自己网站的图标</a></li><li>2009年12月27日 -- <a href="http://www.havenliu.com/goodarticle/292.html" title="伊朗起义了(重新更新了大量图片)">伊朗起义了(重新更新了大量图片)</a></li><li>2009年10月10日 -- <a href="http://www.havenliu.com/bike/255.html" title="国庆骑行绍兴">国庆骑行绍兴</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/other/448.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jquery html(val)使用注意</title>
		<link>http://www.havenliu.com/web/446.html</link>
		<comments>http://www.havenliu.com/web/446.html#comments</comments>
		<pubDate>Thu, 27 May 2010 05:46:16 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=446</guid>
		<description><![CDATA[Jquery的html(val)可以方面的向页面元素内部插入html代码，但要注意插入的html代码中不能包含script代码块，如果包含&#60;script&#62;&#8230;.&#60;/script&#62;这样的代码jquery会在插入的时候自动过滤掉，遇到这样的问题最好的方法还是用document.getElementById(&#8221;div&#8221;).innerHTML=html最保险。
相关文章2009年09月20日 -- JQuery基础入门-输入验证]]></description>
			<content:encoded><![CDATA[<p>Jquery的html(val)可以方面的向页面元素内部插入html代码，但要注意插入的html代码中不能包含script代码块，如果包含&lt;script&gt;&#8230;.&lt;/script&gt;这样的代码jquery会在插入的时候自动过滤掉，遇到这样的问题最好的方法还是用document.getElementById(&#8221;div&#8221;).innerHTML=html最保险。</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2009年09月20日 -- <a href="http://www.havenliu.com/web/238.html" title="JQuery基础入门-输入验证">JQuery基础入门-输入验证</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/web/446.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>【好文推荐】从十万到八千里</title>
		<link>http://www.havenliu.com/goodarticle/439.html</link>
		<comments>http://www.havenliu.com/goodarticle/439.html#comments</comments>
		<pubDate>Wed, 19 May 2010 06:33:19 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[网络文摘]]></category>
		<category><![CDATA[财经夜读]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=439</guid>
		<description><![CDATA[大学时很喜欢听中央人民广播电台经济频道刘静深夜主持的一个节目【财经夜读】，毕业后也坚持听了几年，但由于时间关系后来没在继续了。当时在里面听到了很多好文章，有些我会在网上去找来原文，摘录到电脑里收藏，这篇【从十万到八千里】是最近听的一篇文章【现在只能听录音了】，放这里和大家分享。
孩提时的求学之路，于今日回想起来颇为伤感。
趴在父亲嵌满补丁的后背上，我几次昏睡，几次惊醒。如此往复，再睁眼时，已到学堂门前。父亲左手托着我的屁股，轻柔地将我拍醒，而后舒缓地从粗糙的布衣上卸下来，站在晨雾朦胧的校园门口目送他的女儿悠然离去。
崎岖的山路是美丽短暂的。父亲知道，我爱吃榛子，于是，那些个末夏秋初的清晨，午后，他都会在一片蓊郁的树阴前驻足，高仰着后背将着我举起。我嬉笑着，欢跃着，一手紧抱住他的脖子，一手朝碧绿的细叶中摸去。
在我的记忆中，山路是有着诱人声响的，像父亲爽朗的笑，抑或，是像山林中清风舞树时的哗哗松涛。
我拨弄着父亲蓬乱枯黄的头发，故意在他耳旁将榛子咬得咔咔脆响。他似笑非笑地皱着眉头，把头摇得如拨浪鼓一般，轻声责道：“丫头别乱动！爹的耳朵聋了！”
空荡的山间，我咯咯的笑声刺破了蔽日的云霞。父亲立身低头，一面呼呼地奔跑，一面假作愤怒状地惊吓我：“抱好了啊，摔下来爹可不管！”
紧搂着父亲黝黑的脖颈，时光就像耳旁呼啸的冷风，一丝一缕都不曾落下，全然钻进了我的发肤内里。
当父亲不用背我，不用挺着后背将我高举我也能顺手摘取那些潜藏在路旁密叶中的榛子时，我知道，成长这两个疼痛的字眼，无可避免地触伤了我。
父亲再不会背着我走那长长的山路。而我，也已然进城念了高中。每月月底回来，父亲都站在村口的山路上等候着我，风雨无阻。
晚风徐徐，暮色山谷。这么些年，山内一切都不曾改变，只是，跋山之人变了。他不可能再像从前一般，背着我越过几个山头，让我耳旁生风。一路上，我故意走得很慢很慢，可山路照样是那么地短暂，每次都来不及说出那句话，便到了家门口。
三年后，我成了村里第一只飞出的“金凤凰”。父亲杀猪大摆宴席，在旁人的一片惊叹中频频举杯，喝得烂醉。
临行前夜，父亲万般嘱托，一切要以身体为重，在外处处留心。我耷拉着头，几次欲说那句压抑了多年的话。昏黄的劣质灯泡下，乌黑倾泻的长发掩住了我泪湿的面颊。
浓雾沉沉的清早，父亲照旧起了大早。辞别欢送的乡亲，他独自一人提着两大包行李，将我送上了山路。
山路弯弯。数不清他其间抹了多少次热汗，在路旁停顿了多少次。我哽咽着说：“爹，您歇歇吧，我回去叫大伯过来帮忙。”他一言不发地摆摆手，将口中的烟头吸得通红，迎风干咳了几声，又接着上路了。
我第一次觉得这路是如此漫长。他顶着已现花白的发竭力仰头，吁吁喘出的沉重气息像极微弱之物，迅速混合在清冷的山谷中。
站在洁净的车窗内，我不忍回看，与周旁同行的校友们闲言谈笑。待车子晃动的那一瞬间，赶紧在一片哄然中枕臂低头。那些奔腾的热泪，始终还是像山路一般蜿蜒了我的身躯。
年前归家，下车抵达村口时已是凌晨。趁着月下雪光刚行几步，一点通红的亮便出现在了山路中央。
他默然地打着手电筒，一路照耀我的前方。
漆黑的山谷深处，偶然有一阵阵莫名的声响，我紧抱着父亲的臂膀，眼睛一眨不眨。他顶直了后背，轻拍我的额头说：“傻丫头，有爹在呢，怕什么？”
我知道，父亲总是要离我而去的。从他背着我上山路的那一刻我就知道，生命与那些葱茏的树木一般，总有枯败的时刻。可万万不曾想到，这个悲凄的日子，会来得如此之迅速。
后来，我结了婚，母亲同我们一块居住。山谷中的小屋，由此便成了久远的记忆。偶然，母亲会喃喃提起，可这样无味的琐碎，终是如午后清风一般，无形而来，又无形而去了。
没过几年，我有了孩子，他每日放学后都必吵嚷着要看《西游记》。那些个公式，题目，他大都一知半解，惟独孙悟空的一个筋斗能翻十万八千里他倒是从不曾忘却。
年前，领他回村祭拜父亲。他欢蹦跳跃，在弯曲的山路上东看西瞧，折花踢草，甚是愉悦。可不到半晌，他便泄气了。茫茫的山路，像是没有尽头的波涛。他一路埋怨，一路好气地问：“到了没有？到了没有？”“早知道我不来了，那么远！要是我是孙悟空就好了，一个筋斗十万八千里&#8230;&#8230;”
寒风凛冽的山谷中，我的泪水像滂沱大雨一般吓坏了年幼的孩子。我爱你，这三个极为简要的字，直到父亲生命的最后一刻我都不曾说出。
身旁无边的山野，像人生未知的苦难。不过，直到此刻都丝毫没有惧怕过。因为我坚信，那十万八千里的灾苦，在我还未入世成人时，父亲就已用他的大脚帮我踏平了十万。
只是，那仅剩的八千里路途，又如何让我赶上父亲遥逝的脚步？
随机文章2009年08月20日 -- 站点被和谐了2010年06月30日 -- 【转】十年前你绝对没有看懂的《大话西游》，十年后你终于懂了……2009年07月2日 -- Java生成XML文档的基本操作2009年06月30日 -- 惠普前总裁孙振耀指点职业规划（三）2009年09月3日 -- 【骑单车看世界】骑行徽杭古道（三）]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff9900;">大学时很喜欢听中央人民广播电台经济频道刘静深夜主持的一个节目【财经夜读】，毕业后也坚持听了几年，但由于时间关系后来没在继续了。当时在里面听到了很多好文章，有些我会在网上去找来原文，摘录到电脑里收藏，这篇【从十万到八千里】是最近听的一篇文章【现在只能听录音了】，放这里和大家分享。</span></p>
<p>孩提时的求学之路，于今日回想起来颇为伤感。</p>
<p>趴在父亲嵌满补丁的后背上，我几次昏睡，几次惊醒。如此往复，再睁眼时，已到学堂门前。父亲左手托着我的屁股，轻柔地将我拍醒，而后舒缓地从粗糙的布衣上卸下来，站在晨雾朦胧的校园门口目送他的女儿悠然离去。</p>
<p>崎岖的山路是美丽短暂的。父亲知道，我爱吃榛子，于是，那些个末夏秋初的清晨，午后，他都会在一片蓊郁的树阴前驻足，高仰着后背将着我举起。我嬉笑着，欢跃着，一手紧抱住他的脖子，一手朝碧绿的细叶中摸去。<span id="more-439"></span></p>
<p>在我的记忆中，山路是有着诱人声响的，像父亲爽朗的笑，抑或，是像山林中清风舞树时的哗哗松涛。</p>
<p>我拨弄着父亲蓬乱枯黄的头发，故意在他耳旁将榛子咬得咔咔脆响。他似笑非笑地皱着眉头，把头摇得如拨浪鼓一般，轻声责道：“丫头别乱动！爹的耳朵聋了！”</p>
<p>空荡的山间，我咯咯的笑声刺破了蔽日的云霞。父亲立身低头，一面呼呼地奔跑，一面假作愤怒状地惊吓我：“抱好了啊，摔下来爹可不管！”</p>
<p>紧搂着父亲黝黑的脖颈，时光就像耳旁呼啸的冷风，一丝一缕都不曾落下，全然钻进了我的发肤内里。</p>
<p>当父亲不用背我，不用挺着后背将我高举我也能顺手摘取那些潜藏在路旁密叶中的榛子时，我知道，成长这两个疼痛的字眼，无可避免地触伤了我。</p>
<p>父亲再不会背着我走那长长的山路。而我，也已然进城念了高中。每月月底回来，父亲都站在村口的山路上等候着我，风雨无阻。</p>
<p>晚风徐徐，暮色山谷。这么些年，山内一切都不曾改变，只是，跋山之人变了。他不可能再像从前一般，背着我越过几个山头，让我耳旁生风。一路上，我故意走得很慢很慢，可山路照样是那么地短暂，每次都来不及说出那句话，便到了家门口。</p>
<p>三年后，我成了村里第一只飞出的“金凤凰”。父亲杀猪大摆宴席，在旁人的一片惊叹中频频举杯，喝得烂醉。</p>
<p>临行前夜，父亲万般嘱托，一切要以身体为重，在外处处留心。我耷拉着头，几次欲说那句压抑了多年的话。昏黄的劣质灯泡下，乌黑倾泻的长发掩住了我泪湿的面颊。</p>
<p>浓雾沉沉的清早，父亲照旧起了大早。辞别欢送的乡亲，他独自一人提着两大包行李，将我送上了山路。</p>
<p>山路弯弯。数不清他其间抹了多少次热汗，在路旁停顿了多少次。我哽咽着说：“爹，您歇歇吧，我回去叫大伯过来帮忙。”他一言不发地摆摆手，将口中的烟头吸得通红，迎风干咳了几声，又接着上路了。</p>
<p>我第一次觉得这路是如此漫长。他顶着已现花白的发竭力仰头，吁吁喘出的沉重气息像极微弱之物，迅速混合在清冷的山谷中。</p>
<p>站在洁净的车窗内，我不忍回看，与周旁同行的校友们闲言谈笑。待车子晃动的那一瞬间，赶紧在一片哄然中枕臂低头。那些奔腾的热泪，始终还是像山路一般蜿蜒了我的身躯。</p>
<p>年前归家，下车抵达村口时已是凌晨。趁着月下雪光刚行几步，一点通红的亮便出现在了山路中央。</p>
<p>他默然地打着手电筒，一路照耀我的前方。</p>
<p>漆黑的山谷深处，偶然有一阵阵莫名的声响，我紧抱着父亲的臂膀，眼睛一眨不眨。他顶直了后背，轻拍我的额头说：“傻丫头，有爹在呢，怕什么？”</p>
<p>我知道，父亲总是要离我而去的。从他背着我上山路的那一刻我就知道，生命与那些葱茏的树木一般，总有枯败的时刻。可万万不曾想到，这个悲凄的日子，会来得如此之迅速。</p>
<p>后来，我结了婚，母亲同我们一块居住。山谷中的小屋，由此便成了久远的记忆。偶然，母亲会喃喃提起，可这样无味的琐碎，终是如午后清风一般，无形而来，又无形而去了。</p>
<p>没过几年，我有了孩子，他每日放学后都必吵嚷着要看《西游记》。那些个公式，题目，他大都一知半解，惟独孙悟空的一个筋斗能翻十万八千里他倒是从不曾忘却。</p>
<p>年前，领他回村祭拜父亲。他欢蹦跳跃，在弯曲的山路上东看西瞧，折花踢草，甚是愉悦。可不到半晌，他便泄气了。茫茫的山路，像是没有尽头的波涛。他一路埋怨，一路好气地问：“到了没有？到了没有？”“早知道我不来了，那么远！要是我是孙悟空就好了，一个筋斗十万八千里&#8230;&#8230;”</p>
<p>寒风凛冽的山谷中，我的泪水像滂沱大雨一般吓坏了年幼的孩子。我爱你，这三个极为简要的字，直到父亲生命的最后一刻我都不曾说出。</p>
<p>身旁无边的山野，像人生未知的苦难。不过，直到此刻都丝毫没有惧怕过。因为我坚信，那十万八千里的灾苦，在我还未入世成人时，父亲就已用他的大脚帮我踏平了十万。</p>
<p>只是，那仅剩的八千里路途，又如何让我赶上父亲遥逝的脚步？</p>
<h3  class="related_post_title">随机文章</h3><ul class="related_post"><li>2009年06月2日 -- <a href="http://www.havenliu.com/goodarticle/19.html" title="水煮互联网创业，互联网创业的盲区">水煮互联网创业，互联网创业的盲区</a></li><li>2010年01月5日 -- <a href="http://www.havenliu.com/other/302.html" title="给大家讲一个暴力拆迁未遂的故事">给大家讲一个暴力拆迁未遂的故事</a></li><li>2009年07月5日 -- <a href="http://www.havenliu.com/bike/113.html" title="2009年第96届环法自行车赛第一赛段个人计时赛视频">2009年第96届环法自行车赛第一赛段个人计时赛视频</a></li><li>2009年06月30日 -- <a href="http://www.havenliu.com/goodarticle/74.html" title="惠普前总裁孙振耀指点职业规划（二）">惠普前总裁孙振耀指点职业规划（二）</a></li><li>2010年05月27日 -- <a href="http://www.havenliu.com/web/446.html" title="Jquery html(val)使用注意">Jquery html(val)使用注意</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/goodarticle/439.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>江南古镇之【骑行南浔】</title>
		<link>http://www.havenliu.com/bike/423.html</link>
		<comments>http://www.havenliu.com/bike/423.html#comments</comments>
		<pubDate>Sat, 15 May 2010 02:28:37 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[单车生活]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=423</guid>
		<description><![CDATA[南浔是历史上有名的富饶之镇，史献有记载：“南林一聚落，而耕桑之富，甲于浙右”。明至清代，南浔发达的蚕丝业孕育了相当多的巨富豪绅，最具代表性的就是嘉业堂、小莲庄等。所以，说南浔是古道富豪们的别墅镇也不为过。
今年五 .一和朋友一起从杭州骑行南浔，单程110公里左右，因天气不错，路况也不是特别差，没有爬坡路段，全程还比较轻松，就是距离南浔几分钟路程时发生了悲剧，朋友的车被一根5厘米长的铁钉轧了个两面穿，更悲剧的是这次轧的位置正好也是以前也被轧过两面穿的地方，所以虽然大家很卖力的补了这条胎，它也只坚持到了镇上就再次下岗，还好南浔有Giant的车行，到当地车行的重新买了条新胎，才没有耽搁我们后面的行程【注：我们是带有备胎，但带的都是美嘴的，被轧的是法嘴胎，所以车友没出门一定要注意所带配件的规格】，发张补胎的图片span id=&#8221;more-423&#8243;>
从杭州到南浔有两条国道可走，一条途经湖州，一天途经桐乡。从桐乡走可以顺便到乌镇看看。我们选择的是桐乡这条，轻松骑大概下午3点过就乌镇，我们只是到镇外面看了看，没进景区。乌镇开发比较早，名气也比南浔大，再逢5.1，所以那个人流，让我们推着车行进也困难。早些年我去过乌镇，当时的人也蛮多，但远远不能和现在相比，由此可见这些年人民生活水平有很大的提高啊
在乌镇的道观外面休息。这道观【照片上没拍下来，这种地方一般是允许拍照的，就没拍】据说是江南十大道观之一。以前来乌镇的时候进去进去上过香，还让里面的道士给我说了几句。本来这次也想进去上上香，可我们没有乌镇的门票，不让进，只好作罢。
由于路上补胎折腾了大半小时，到南浔时天色看是变暗，但这时候景区检票的都下班了，我们就肆无忌惮的冲进了景区小逛了一
不抽烟的那个才是我。。。。
这次南浔我们5个人唯一的张合影，
逛完就出去找住宿和车行不提。
第二天早上我们又到景区，花了100块让当地让把我们带进景区溜了一会【南浔门票是100块，有经济能力的就买票吧，支持下当地的旅游事业】，看照片：
看着让人很有食欲的南浔蹄膀，简称浔蹄。不管是名称还是外形都很是让人掉哈喇子。经不住诱惑，很多人都买了，后来很是后悔，那味道。。。。。。。。。。相当难吃
这个叫不出名字的肉到还好，3块钱一块，尝 了下，不难吃。
正好赶上有美女在船上跳舞，就狂按快门，拍了个痛快。。。。
南浔的景色，技术不好，拍的很丑，不过那水确实是那颜色，和我技术没关系
这找照片比较有意义，里面有我们5个人的昵称，不过要费力才能找到：老H（就是我啦），猴子，消费，板凳，秃头。中间那个大大的“骚”字是我写的，哈
来两张比较有型的照片
就这些吧。南浔之行完
相关文章2009年10月10日 -- 国庆骑行绍兴2009年07月28日 -- 2009年第96届环法自行车赛第十九、二十、二十一站视频2009年07月23日 -- 2009年第96届环法自行车赛第十五、十六、十七，十八站视频2009年07月19日 -- 2009年第96届环法自行车赛第十一、十二、十三，十四站视频2009年07月14日 -- 2009年第96届环法自行车赛第九、十站视频]]></description>
			<content:encoded><![CDATA[<p>南浔是历史上有名的富饶之镇，史献有记载：“南林一聚落，而耕桑之富，甲于浙右”。明至清代，南浔发达的蚕丝业孕育了相当多的巨富豪绅，最具代表性的就是嘉业堂、小莲庄等。所以，说南浔是古道富豪们的别墅镇也不为过。</p>
<p>今年五 .一和朋友一起从杭州骑行南浔，单程110公里左右，因天气不错，路况也不是特别差，没有爬坡路段，全程还比较轻松，就是距离南浔几分钟路程时发生了悲剧，朋友的车被一根5厘米长的铁钉轧了个两面穿，更悲剧的是这次轧的位置正好也是以前也被轧过两面穿的地方，所以虽然大家很卖力的补了这条胎，它也只坚持到了镇上就再次下岗，还好南浔有Giant的车行，到当地车行的重新买了条新胎，才没有耽搁我们后面的行程<span style="color: #008000;">【注：我们是带有备胎，但带的都是美嘴的，被轧的是法嘴胎，所以车友没出门一定要注意所带配件的规格】</span>，发张补胎的图片：
<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09823.jpg" title="" class="shutterset_singlepic48" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/48__640x480_dsc09823.jpg" alt="dsc09823" title="dsc09823" />
</a>
<span id="more-423"></span></p>
<p>从杭州到南浔有两条国道可走，一条途经湖州，一天途经桐乡。从桐乡走可以顺便到乌镇看看。我们选择的是桐乡这条，轻松骑大概下午3点过就乌镇，我们只是到镇外面看了看，没进景区。乌镇开发比较早，名气也比南浔大，再逢5.1，所以那个人流，让我们推着车行进也困难。早些年我去过乌镇，当时的人也蛮多，但远远不能和现在相比，由此可见这些年人民生活水平有很大的提高啊。
<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09783.jpg" title="" class="shutterset_singlepic44" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/44__640x480_dsc09783.jpg" alt="dsc09783" title="dsc09783" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09784.jpg" title="" class="shutterset_singlepic45" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/45__640x480_dsc09784.jpg" alt="dsc09784" title="dsc09784" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09786.jpg" title="" class="shutterset_singlepic46" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/46__640x480_dsc09786.jpg" alt="dsc09786" title="dsc09786" />
</a>
<br />
在乌镇的道观外面休息。这道观<span style="color: #008000;">【照片上没拍下来，这种地方一般是允许拍照的，就没拍】</span>据说是江南十大道观之一。以前来乌镇的时候进去进去上过香，还让里面的道士给我说了几句。本来这次也想进去上上香，可我们没有乌镇的门票，不让进，只好作罢。<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09820.jpg" title="" class="shutterset_singlepic47" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/47__640x480_dsc09820.jpg" alt="dsc09820" title="dsc09820" />
</a>
</p>
<p>由于路上补胎折腾了大半小时，到南浔时天色看是变暗，但这时候景区检票的都下班了，我们就肆无忌惮的冲进了景区小逛了一会
<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09830.jpg" title="" class="shutterset_singlepic49" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/49__640x480_dsc09830.jpg" alt="dsc09830" title="dsc09830" />
</a>
<br />
不抽烟的那个才是我。。。。<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09842.jpg" title="" class="shutterset_singlepic50" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/50__640x480_dsc09842.jpg" alt="dsc09842" title="dsc09842" />
</a>
<br />
这次南浔我们5个人唯一的张合影，<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dscf5241.jpg" title="" class="shutterset_singlepic56" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/56__640x480_dscf5241.jpg" alt="dscf5241" title="dscf5241" />
</a>
</p>
<p>逛完就出去找住宿和车行不提。</p>
<p>第二天早上我们又到景区，花了100块让当地让把我们带进景区溜了一会<span style="color: #008000;">【南浔门票是100块，有经济能力的就买票吧，支持下当地的旅游事业】</span>，看照片：<br />
看着让人很有食欲的南浔蹄膀，简称浔蹄。不管是名称还是外形都很是让人掉哈喇子。经不住诱惑，很多人都买了，后来很是后悔，那味道。。。。。。。。。。相当难吃<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09887.jpg" title="" class="shutterset_singlepic51" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/51__640x480_dsc09887.jpg" alt="dsc09887" title="dsc09887" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09888.jpg" title="" class="shutterset_singlepic52" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/52__640x480_dsc09888.jpg" alt="dsc09888" title="dsc09888" />
</a>
<br />
这个叫不出名字的肉到还好，3块钱一块，尝 了下，不难吃。<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09919.jpg" title="" class="shutterset_singlepic53" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/53__640x480_dsc09919.jpg" alt="dsc09919" title="dsc09919" />
</a>
<br />
正好赶上有美女在船上跳舞，就狂按快门，拍了个痛快。。。。<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dscf5269.jpg" title="" class="shutterset_singlepic58" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/58__640x480_dscf5269.jpg" alt="dscf5269" title="dscf5269" />
</a>
<br />
南浔的景色，技术不好，拍的很丑，不过那水确实是那颜色，和我技术没关系<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dscf5252.jpg" title="" class="shutterset_singlepic57" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/57__640x480_dscf5252.jpg" alt="dscf5252" title="dscf5252" />
</a>
<br />
这找照片比较有意义，里面有我们5个人的昵称，不过要费力才能找到：老H（就是我啦），猴子，消费，板凳，秃头。中间那个大大的“骚”字是我写的，哈哈
<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09979.jpg" title="" class="shutterset_singlepic55" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/55__640x480_dsc09979.jpg" alt="dsc09979" title="dsc09979" />
</a>
<br />
来两张比较有型的照片 
<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dsc09958.jpg" title="" class="shutterset_singlepic54" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/54__640x480_dsc09958.jpg" alt="dsc09958" title="dsc09958" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/nanxun/dscf5285.jpg" title="" class="shutterset_singlepic60" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/60__640x480_dscf5285.jpg" alt="dscf5285" title="dscf5285" />
</a>
</p>
<p>就这些吧。南浔之行完</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2009年10月10日 -- <a href="http://www.havenliu.com/bike/255.html" title="国庆骑行绍兴">国庆骑行绍兴</a></li><li>2009年07月28日 -- <a href="http://www.havenliu.com/bike/162.html" title="2009年第96届环法自行车赛第十九、二十、二十一站视频">2009年第96届环法自行车赛第十九、二十、二十一站视频</a></li><li>2009年07月23日 -- <a href="http://www.havenliu.com/bike/159.html" title="2009年第96届环法自行车赛第十五、十六、十七，十八站视频">2009年第96届环法自行车赛第十五、十六、十七，十八站视频</a></li><li>2009年07月19日 -- <a href="http://www.havenliu.com/bike/152.html" title="2009年第96届环法自行车赛第十一、十二、十三，十四站视频">2009年第96届环法自行车赛第十一、十二、十三，十四站视频</a></li><li>2009年07月14日 -- <a href="http://www.havenliu.com/bike/145.html" title="2009年第96届环法自行车赛第九、十站视频">2009年第96届环法自行车赛第九、十站视频</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/bike/423.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>找到一份比较全面的freemarker语法总结</title>
		<link>http://www.havenliu.com/goodarticle/420.html</link>
		<comments>http://www.havenliu.com/goodarticle/420.html#comments</comments>
		<pubDate>Tue, 11 May 2010 04:41:05 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[网络文摘]]></category>
		<category><![CDATA[FreeMarker]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=420</guid>
		<description><![CDATA[网上找到的。这份总结很全面。里面还有很详细的列子，一看就明白

语法
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:
1. 文本:直接输出的部分
2. 注释:&#60;#&#8211; &#8230; &#8211;&#62;格式部分,不会输出
3. 插值:即${&#8230;}或#{&#8230;}格式的部分,将使用数据模型中的部分替代输出
4. FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出
1.    FTL指令规则
在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的.
1.开始标签:&#60;#directivename parameter&#62;
2.结束标签:&#60;/#directivename&#62;
3.空标签:&#60;#directivename parameter/&#62;
实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号.
使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是&#60; , /&#62; 和指令之间不允许有空白字符.
2.    插值规则
FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}
2.1 通用插值
对于通用插值,又可以分为以下4种情况:
1. 插值结果为字符串值:直接输出表达式结果
2. 插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
&#60;#settion number_format=&#8221;currency&#8221;/&#62;
&#60;#assign answer=42/&#62;
${answer}
${answer?string} &#60;#&#8211; the same as ${answer} &#8211;&#62;
${answer?string.number}
${answer?string.currency}
${answer?string.percent}
${answer}
输出结果是:
$42.00
$42.00
42
$42.00
4,200%
3. 插值结果为日期值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
${lastUpdated?string(&#8221;yyyy-MM-dd HH:mm:ss zzzz&#8221;)}
${lastUpdated?string(&#8221;EEE, MMM d, &#8221;yy&#8221;)}
${lastUpdated?string(&#8221;EEEE, MMMM dd, yyyy, hh:mm:ss a &#8216;(&#8217;zzz&#8217;)'&#8221;)}
输出结果是:
2008-04-08 08:08:08 Pacific Daylight Time
Tue, Apr 8, &#8216;03
Tuesday, April 08, 2003, 08:08:08 PM (PDT)
4. 插值结果为布尔值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
&#60;#assign foo=true/&#62;
${foo?string(&#8221;yes&#8221;, &#8220;no&#8221;)}
输出结果是:
yes
2.2 数字格式化插值
数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
如下面的例子:
&#60;#assign [...]]]></description>
			<content:encoded><![CDATA[<p>网上找到的。这份总结很全面。里面还有很详细的列子，一看就明白</p>
<h1></h1>
<h1>语法</h1>
<p>FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:<br />
1. 文本:直接输出的部分<br />
2. 注释:&lt;#&#8211; &#8230; &#8211;&gt;格式部分,不会输出<br />
3. 插值:即${&#8230;}或#{&#8230;}格式的部分,将使用数据模型中的部分替代输出<br />
4. FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出</p>
<h2>1.    <strong>FTL</strong><strong>指令规则</strong></h2>
<p>在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的.<br />
1.开始标签:&lt;#directivename parameter&gt;<br />
2.结束标签:&lt;/#directivename&gt;<br />
3.空标签:&lt;#directivename parameter/&gt;</p>
<p>实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号.<br />
使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是&lt; , /&gt; 和指令之间不允许有空白字符.</p>
<h2>2.    <strong>插值规则</strong></h2>
<p>FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format}</p>
<h3><strong>2.1 </strong><strong>通用插值</strong></h3>
<p>对于通用插值,又可以分为以下4种情况:<br />
1. 插值结果为字符串值:直接输出表达式结果<br />
2. 插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:<br />
&lt;#settion number_format=&#8221;currency&#8221;/&gt;<br />
&lt;#assign answer=42/&gt;<br />
${answer}<br />
${answer?string} &lt;#&#8211; the same as ${answer} &#8211;&gt;<br />
${answer?string.number}<br />
${answer?string.currency}<br />
${answer?string.percent}<br />
${answer}<br />
输出结果是:<br />
$42.00<br />
$42.00<br />
42<br />
$42.00<br />
4,200%<br />
3. 插值结果为日期值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:<br />
${lastUpdated?string(&#8221;yyyy-MM-dd HH:mm:ss zzzz&#8221;)}<br />
${lastUpdated?string(&#8221;EEE, MMM d, &#8221;yy&#8221;)}<br />
${lastUpdated?string(&#8221;EEEE, MMMM dd, yyyy, hh:mm:ss a &#8216;(&#8217;zzz&#8217;)'&#8221;)}<br />
输出结果是:<br />
2008-04-08 08:08:08 Pacific Daylight Time<br />
Tue, Apr 8, &#8216;03<br />
Tuesday, April 08, 2003, 08:08:08 PM (PDT)<br />
4. 插值结果为布尔值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:<br />
&lt;#assign foo=true/&gt;<br />
${foo?string(&#8221;yes&#8221;, &#8220;no&#8221;)}<br />
输出结果是:<br />
yes</p>
<h3><strong>2.2 </strong><strong>数字格式化插值</strong></h3>
<p>数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:<br />
mX:小数部分最小X位<br />
MX:小数部分最大X位<br />
如下面的例子:<br />
&lt;#assign x=2.582/&gt;<br />
&lt;#assign y=4/&gt;<br />
#{x; M2} &lt;#&#8211; 输出2.58 &#8211;&gt;<br />
#{y; M2} &lt;#&#8211; 输出4 &#8211;&gt;<br />
#{x; m2} &lt;#&#8211; 输出2.6 &#8211;&gt;<br />
#{y; m2} &lt;#&#8211; 输出4.0 &#8211;&gt;<br />
#{x; m1M2} &lt;#&#8211; 输出2.58 &#8211;&gt;<br />
#{x; m1M2} &lt;#&#8211; 输出4.0 &#8211;&gt;<span id="more-420"></span></p>
<h2>3.    <strong>表达式</strong></h2>
<p>表达式是FreeMarker模板的核心功能,表达式放置在插值语法${}之中时,表明需要输出表达式的值;表达式语法也可与FreeMarker 标签结合,用于控制输出.实际上FreeMarker的表达式功能非常强大,它不仅支持直接指定值,输出变量值,也支持字符串格式化输出和集合访问等功能.</p>
<h3><strong>3.1 </strong><strong>直接指定值</strong></h3>
<p>使用直接指定值语法让FreeMarker直接输出插值中的值,而不是输出变量值.直接指定值可以是字符串,数值,布尔值,集合和MAP对象.</p>
<p>1. 字符串<br />
直接指定字符串值使用单引号或双引号限定,如果字符串值中包含特殊字符需要转义,看下面的例子:<br />
${&#8221;我的文件保存在C:\\盘&#8221;}<br />
${&#8217;我名字是\&#8221;annlee\&#8221;&#8216;}<br />
输出结果是:<br />
我的文件保存在C:\盘<br />
我名字是&#8221;annlee&#8221;</p>
<p>FreeMarker支持如下转义字符:<br />
\&#8221;;双引号(u0022)<br />
\&#8217;;单引号(u0027)<br />
\\;反斜杠(u005C)<br />
\n;换行(u000A)<br />
\r;回车(u000D)<br />
\t;Tab(u0009)<br />
\b;退格键(u0008)<br />
\f;Form feed(u000C)<br />
\l;&lt;<br />
\g;&gt;<br />
\a;&amp;<br />
\{;{<br />
\xCode;直接通过4位的16进制数来指定Unicode码,输出该unicode码对应的字符.</p>
<p>如果某段文本中包含大量的特殊符号,FreeMarker提供了另一种特殊格式:可以在指定字符串内容的引号前增加r标记,在r标记后的文件将会直接输出.看如下代码:<br />
${r&#8221;${foo}&#8221;}<br />
${r&#8221;C:\foo\bar&#8221;}<br />
输出结果是:<br />
${foo}<br />
C:\foo\bar</p>
<p>2. 数值<br />
表达式中的数值直接输出,不需要引号.小数点使用&#8221;.&#8221;分隔,不能使用分组&#8221;,&#8221;符号.FreeMarker目前还不支持科学计数法,所以&#8221;1E3&#8243;是错误的.在FreeMarker表达式中使用数值需要注意以下几点:<br />
a)数值不能省略小数点前面的0,所以&#8221;.5&#8243;是错误的写法<br />
b)数值8 , +8 , 8.00都是相同的</p>
<p>3. 布尔值<br />
直接使用true和false,不使用引号.</p>
<p>4. 集合<br />
集合以方括号包括,各集合元素之间以英文逗号&#8221;,&#8221;分隔,看如下的例子:<br />
&lt;#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x&gt;<br />
${x}<br />
&lt;/#list&gt;<br />
输出结果是:<br />
星期一<br />
星期二<br />
星期三<br />
星期四<br />
星期五<br />
星期六<br />
星期天</p>
<p>除此之外,集合元素也可以是表达式,例子如下:<br />
[2 + 2, [1, 2, 3, 4], &#8220;whatnot&#8221;]</p>
<p>还可以使用数字范围定义数字集合,如2..5等同于[2, 3, 4, 5],但是更有效率.注意,使用数字范围来定义集合时无需使用方括号,数字范围也支持反递增的数字范围,如5..2</p>
<p>5,Map对象<br />
Map对象使用花括号包括,Map中的key-value对之间以英文冒号&#8221;:&#8221;分隔,多组key-value对之间以英文逗号&#8221;,&#8221;分隔.下面是一个例子:<br />
{&#8221;语文&#8221;:78, &#8220;数学&#8221;:80}<br />
Map对象的key和value都是表达式,但是key必须是字符串</p>
<h3><strong>3.2 </strong><strong>输出变量值</strong></h3>
<p>FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性.下面分别讨论这些情况</p>
<p>1. 顶层变量<br />
所谓顶层变量就是直接放在数据模型中的值,例如有如下数据模型:<br />
Map root = new HashMap();   //创建数据模型<br />
root.put(&#8221;name&#8221;,&#8221;annlee&#8221;);   //name是一个顶层变量</p>
<p>对于顶层变量,直接使用${variableName}来输出变量值,变量名只能是字母,数字,下划线,$,@和#的组合,且不能以数字开头号.为了输出上面的name的值,可以使用如下语法:<br />
${name}</p>
<p>2. 输出集合元素<br />
如果需要输出集合元素,则可以根据集合元素的索引来输出集合元素,集合元素的索引以方括号指定.假设有索引:<br />
["星期一","星期二","星期三","星期四","星期五","星期六","星期天"].该索引名为week,如果需要输出星期三,则可以使用如下语法:<br />
${week[2]}   //输出第三个集合元素</p>
<p>此外,FreeMarker还支持返回集合的子集合,如果需要返回集合的子集合,则可以使用如下语法:<br />
week[3..5]   //返回week集合的子集合,子集合中的元素是week集合中的第4-6个元素</p>
<p>3. 输出Map元素<br />
这里的Map对象可以是直接HashMap的实例,甚至包括JavaBean实例,对于JavaBean实例而言,我们一样可以把其当成属性为key,属性值为value的Map实例.为了输出Map元素的值,可以使用点语法或方括号语法.假如有下面的数据模型:<br />
Map root = new HashMap();<br />
Book book = new Book();<br />
Author author = new Author();<br />
author.setName(&#8221;annlee&#8221;);<br />
author.setAddress(&#8221;gz&#8221;);<br />
book.setName(&#8221;struts2&#8243;);<br />
book.setAuthor(author);<br />
root.put(&#8221;info&#8221;,&#8221;struts&#8221;);<br />
root.put(&#8221;book&#8221;, book);</p>
<p>为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法:<br />
book.author.name    //全部使用点语法<br />
book["author"].name<br />
book.author["name"]    //混合使用点语法和方括号语法<br />
book["author"]["name"]   //全部使用方括号语法</p>
<p>使用点语法时,变量名字有顶层变量一样的限制,但方括号语法没有该限制,因为名字可以是任意表达式的结果.</p>
<h3><strong>3.3</strong><strong>字符串操作</strong></h3>
<p>FreeMarker的表达式对字符串操作非常灵活,可以将字符串常量和变量连接起来,也可以返回字符串的子串等.</p>
<p>字符串连接有两种语法:<br />
1. 使用${..}或#{..}在字符串常量部分插入表达式的值,从而完成字符串连接.<br />
2. 直接使用连接运算符+来连接字符串</p>
<p>例如有如下数据模型:<br />
Map root = new HashMap(); root.put(&#8221;user&#8221;,&#8221;annlee&#8221;);<br />
下面将user变量和常量连接起来:<br />
${&#8221;hello, ${user}!&#8221;}   //使用第一种语法来连接<br />
${&#8221;hello, &#8221; + user + &#8220;!&#8221;} //使用+号来连接<br />
上面的输出字符串都是hello,annlee!,可以看出这两种语法的效果完全一样.</p>
<p>值得注意的是,${..}只能用于文本部分,不能用于表达式,下面的代码是错误的:<br />
&lt;#if ${isBig}&gt;Wow!&lt;/#if&gt;<br />
&lt;#if &#8220;${isBig}&#8221;&gt;Wow!&lt;/#if&gt;<br />
应该写成:&lt;#if isBig&gt;Wow!&lt;/#if&gt;</p>
<p>截取子串可以根据字符串的索引来进行,截取子串时如果只指定了一个索引值,则用于取得字符串中指定索引所对应的字符;如果指定两个索引值,则返回两个索引中间的字符串子串.假如有如下数据模型:<br />
Map root = new HashMap(); root.put(&#8221;book&#8221;,&#8221;struts2,freemarker&#8221;);<br />
可以通过如下语法来截取子串:<br />
${book[0]}${book[4]}   //结果是su<br />
${book[1..4]}     //结果是tru</p>
<h3><strong>3.4 </strong><strong>集合连接运算符</strong></h3>
<p>这里所说的集合运算符是将两个集合连接成一个新的集合,连接集合的运算符是+,看如下的例子:<br />
&lt;#list ["星期一","星期二","星期三"] + ["星期四","星期五","星期六","星期天"] as x&gt;<br />
${x}<br />
&lt;/#list&gt;<br />
输出结果是:星期一 星期二 星期三 星期四 星期五 星期六 星期天</p>
<h3><strong>3.5 Map</strong><strong>连接运算符</strong></h3>
<p>Map对象的连接运算符也是将两个Map对象连接成一个新的Map对象,Map对象的连接运算符是+,如果两个Map对象具有相同的key,则右边的值替代左边的值.看如下的例子:<br />
&lt;#assign scores = {&#8221;语文&#8221;:86,&#8221;数学&#8221;:78} + {&#8221;数学&#8221;:87,&#8221;Java&#8221;:93}&gt;<br />
语文成绩是${scores.语文}<br />
数学成绩是${scores.数学}<br />
Java成绩是${scores.Java}<br />
输出结果是:<br />
语文成绩是86<br />
数学成绩是87<br />
Java成绩是93</p>
<h3><strong>3.6 </strong><strong>算术运算符</strong></h3>
<p>FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, &#8211; , * , / , % 看如下的代码:<br />
&lt;#assign x=5&gt;<br />
${ x * x &#8211; 100 }<br />
${ x /2 }<br />
${ 12 %10 }<br />
输出结果是:<br />
-75   2.5   2</p>
<p>在表达式中使用算术运算符时要注意以下几点:<br />
1,运算符两边的运算数字必须是数字<br />
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + &#8220;5&#8243;},结果是:35</p>
<p>使用内建的int函数可对数值取整,如:<br />
&lt;#assign x=5&gt;<br />
${ (x/2)?int }<br />
${ 1.1?int }<br />
${ 1.999?int }<br />
${ -1.1?int }<br />
${ -1.999?int }<br />
结果是:2 1 1 -1 -1</p>
<h3><strong>3.7 </strong><strong>比较运算符</strong></h3>
<p>表达式中支持的比较运算符有如下几个:<br />
1. =或者==:判断两个值是否相等.<br />
2. !=:判断两个值是否不等.<br />
3. &gt;或者gt:判断左边值是否大于右边值<br />
4. &gt;=或者gte:判断左边值是否大于等于右边值<br />
5. &lt;或者lt:判断左边值是否小于右边值<br />
6. &lt;=或者lte:判断左边值是否小于等于右边值</p>
<p>注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比 较,&#8221;x&#8221;,&#8221;x &#8220;,&#8221;X&#8221;是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:&lt;#if (x&gt;y)&gt;</p>
<h3><strong>3.8 </strong><strong>逻辑运算符</strong></h3>
<p>逻辑运算符有如下几个:<br />
逻辑与:&amp;&amp;<br />
逻辑或:||<br />
逻辑非:!<br />
逻辑运算符只能作用于布尔值,否则将产生错误</p>
<h3><strong>3.9 </strong><strong>内建函数</strong></h3>
<p>FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来轮换输出变量.下面是常用的内建的字符串函数:<br />
html:对字符串进行HTML编码<br />
cap_first:使字符串第一个字母大写<br />
lower_case:将字符串转换成小写<br />
upper_case:将字符串转换成大写<br />
trim:去掉字符串前后的空白字符</p>
<p>下面是集合的常用内建函数<br />
size:获取序列中元素的个数</p>
<p>下面是数字值的常用内建函数<br />
int:取得数字的整数部分,结果带符号</p>
<p>例如:<br />
&lt;#assign test=&#8221;Tom &amp; Jerry&#8221;&gt;<br />
${test?html}<br />
${test?upper_case?html}<br />
结果是:Tom &amp;amp; Jerry   TOM &amp;amp; JERRY</p>
<h3><strong>3.10 </strong><strong>空值处理运算符</strong></h3>
<p>FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值 的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同.</p>
<p>为了处理缺失变量,FreeMarker提供了两个运算符:<br />
!: 指定缺失变量的默认值<br />
??: 判断某个变量是否存在</p>
<p>其中,!运算符的用法有如下两种:<br />
variable!或variable!defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象.</p>
<p>使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值,用法为:variable??,如果该变量存在,返回true,否则返回false</p>
<h3><strong>3.11 </strong><strong>运算符的优先级</strong></h3>
<p>FreeMarker中的运算符优先级如下(由高到低排列):<br />
1. 一元运算符:!<br />
2. 内建函数:?<br />
3. 乘除法:*, / , %<br />
4. 加减法:- , +<br />
5. 比较:&gt; , &lt; , &gt;= , &lt;= (lt , lte , gt , gte)<br />
6. 相等:== , = , !=<br />
7. 逻辑与:&amp;&amp;<br />
8. 逻辑或:||<br />
9. 数字范围:..</p>
<p>实际上,我们在开发过程中应该使用括号来严格区分,这样的可读性好,出错少</p>
<h2>4.    <strong>FreeMarker</strong><strong>的常用指令</strong></h2>
<p>FreeMarker的FTL指令也是模板的重要组成部分,这些指令可实现对数据模型所包含数据的抚今迭代,分支控制.除此之外,还有一些重要的功能,也是通过FTL指令来实现的.</p>
<h3><strong>4.1 if</strong><strong>指令</strong></h3>
<p>这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下:<br />
&lt;#if condition&gt;&#8230;<br />
&lt;#elseif condition&gt;&#8230;<br />
&lt;#elseif condition&gt;&#8230;<br />
&lt;#else&gt; &#8230;<br />
&lt;/#if&gt;</p>
<p>例子如下:<br />
&lt;#assign age=23&gt;<br />
&lt;#if (age&gt;60)&gt;老年人<br />
&lt;#elseif (age&gt;40)&gt;中年人<br />
&lt;#elseif (age&gt;20)&gt;青年人<br />
&lt;#else&gt; 少年人<br />
&lt;/#if&gt;<br />
输出结果是:青年人<br />
上面的代码中的逻辑表达式用括号括起来主要是因为里面有&gt;符号,由于FreeMarker会将&gt;符号当成标签的结束字符,可能导致程序出错,为了避免这种情况,我们应该在凡是出现这些符号的地方都使用括号.</p>
<pre>&lt;#if animals.python.price &lt; animals.elephant.price&gt;</pre>
<pre>  Pythons are cheaper than elephants today.</pre>
<pre>&lt;#else&gt;</pre>
<pre>  Pythons are not cheaper than elephants today.</pre>
<pre>&lt;/#if&gt;</pre>
<h3><strong>4.2 switch , case , default , break</strong><strong>指令</strong></h3>
<p>这些指令显然是分支指令,作用类似于Java的switch语句,switch指令的语法结构如下:<br />
&lt;#switch value&gt;<br />
&lt;#case refValue&gt;&#8230;&lt;#break&gt;<br />
&lt;#case refValue&gt;&#8230;&lt;#break&gt;<br />
&lt;#default&gt;&#8230;<br />
&lt;/#switch&gt;</p>
<h3><strong>4.3 list, break</strong><strong>指令</strong></h3>
<p>list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下:<br />
&lt;#list sequence as item&gt;<br />
&#8230;<br />
&lt;/#list&gt;<br />
上面的语法格式中,sequence就是一个集合对象,也可以是一个表达式,但该表达式将返回一个集合对象,而item是一个任意的名字,就是被迭代输出的集合元素.此外,迭代集合对象时,还包含两个特殊的循环变量:<br />
item_index:当前变量的索引值<br />
item_has_next:是否存在下一个对象<br />
也可以使用&lt;#break&gt;指令跳出迭代</p>
<p>例子如下:<br />
&lt;#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x&gt;<br />
${x_index + 1}.${x}&lt;#if x_has_next&gt;,&lt;/if&gt;<br />
&lt;#if x=&#8221;星期四&#8221;&gt;&lt;#break&gt;&lt;/#if&gt;<br />
&lt;/#list&gt;</p>
<pre>&lt;p&gt;We have these animals:</pre>
<pre>&lt;table border=1&gt;</pre>
<pre>  &lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Price</pre>
<pre>  &lt;#list animals as being&gt;</pre>
<pre>  &lt;tr&gt;&lt;td&gt;${being.name}&lt;td&gt;${being.price} Euros</pre>
<pre>  &lt;/#list&gt;</pre>
<pre>&lt;/table&gt;</pre>
<p>输出为：</p>
<pre>&lt;p&gt;We have these animals:</pre>
<pre>&lt;table border=1&gt;</pre>
<pre>  &lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Price</pre>
<pre>  &lt;tr&gt;&lt;td&gt;mouse&lt;td&gt;50 Euros</pre>
<pre>  &lt;tr&gt;&lt;td&gt;elephant&lt;td&gt;5000 Euros</pre>
<pre>  &lt;tr&gt;&lt;td&gt;python&lt;td&gt;4999 Euros</pre>
<pre>&lt;/table&gt;</pre>
<h3><strong>4.4 include</strong><strong>指令</strong></h3>
<p>include指令的作用类似于JSP的包含指令,用于包含指定页.include指令的语法格式如下:<br />
&lt;#include filename [options]&gt;<br />
在上面的语法格式中,两个参数的解释如下:<br />
filename:该参数指定被包含的模板文件<br />
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true.</p>
<pre>&lt;html&gt;</pre>
<pre>&lt;head&gt;</pre>
<pre>  &lt;title&gt;Test page&lt;/title&gt;</pre>
<pre>&lt;/head&gt;</pre>
<pre>&lt;body&gt;</pre>
<pre>  &lt;h1&gt;Test page&lt;/h1&gt;</pre>
<pre>  &lt;p&gt;Blah blah...</pre>
<pre>&lt;#include "/copyright_footer.html"&gt;</pre>
<pre>&lt;/body&gt;</pre>
<pre>&lt;/html&gt;</pre>
<h3><strong>4.5 import</strong><strong>指令</strong></h3>
<p>该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下:<br />
&lt;#import &#8220;/lib/common.ftl&#8221; as com&gt;<br />
上面的代码将导入/lib/common.ftl模板文件中的所有变量,将这些变量放置在一个名为com的Map对象中.</p>
<p>创建库</p>
<p>Ø         下面是一个创建库的例子（假设保存在lib/my_test.ftl中）：</p>
<pre>&lt;#macro copyright date&gt;</pre>
<pre>  &lt;p&gt;Copyright (C) ${date} Julia Smith. All rights reserved.</pre>
<pre>  &lt;br&gt;Email: ${mail}&lt;/p&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<pre>&lt;#assign mail = "jsmith@acme.com"&gt;</pre>
<p>Ø         使用import指令导入库到模板中，Freemarker会为导入的库创建新的名字空间，并可以通过import指令中指定的散列变量访问库中的变量：</p>
<pre>&lt;#import "/lib/my_test.ftl" as my&gt;</pre>
<pre>&lt;#assign mail="fred@acme.com"&gt;</pre>
<pre>&lt;@my.copyright date="1999-2002"/&gt;</pre>
<pre>${my.mail}</pre>
<pre>${mail}</pre>
<p>输出结果：</p>
<pre>  &lt;p&gt;Copyright (C) 1999-2002 Julia Smith. All rights reserved.</pre>
<pre>  &lt;br&gt;Email: jsmith@acme.com&lt;/p&gt;</pre>
<pre>jsmith@acme.com</pre>
<pre>fred@acme.com</pre>
<p>可以看到例子中使用的两个同名变量并没有冲突，因为它们位于不同的名字空间</p>
<p>l         可以使用assign指令在导入的名字空间中创建或替代变量，下面是一个例子：</p>
<pre>&lt;#import "/lib/my_test.ftl" as my&gt;</pre>
<pre>${my.mail}</pre>
<pre>&lt;#assign mail="jsmith@other.com" in my&gt;</pre>
<pre>${my.mail}</pre>
<p>l         输出结果：</p>
<pre>jsmith@acme.com</pre>
<pre>jsmith@other.com</pre>
<p>l         数据模型中的变量任何地方都可见，也包括不同的名字空间，下面是修改的库：</p>
<pre>&lt;#macro copyright date&gt;</pre>
<pre>  &lt;p&gt;Copyright (C) ${date} ${user}. All rights reserved.&lt;/p&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<pre>&lt;#assign mail = "${user}@acme.com"&gt;</pre>
<p>l         假设数据模型中的user变量的值是Fred，则下面的代码：</p>
<pre>&lt;#import "/lib/my_test.ftl" as my&gt;</pre>
<pre>&lt;@my.copyright date="1999-2002"/&gt;</pre>
<pre>${my.mail}</pre>
<p>l         输出结果：</p>
<pre>  &lt;p&gt;Copyright (C) 1999-2002 Fred. All rights reserved.&lt;/p&gt;</pre>
<p>Fred@acme.com</p>
<h3><strong>4.6 noparse</strong><strong>指令</strong></h3>
<p>noparse指令指定FreeMarker不处理该指定里包含的内容,该指令的语法格式如下:<br />
&lt;#noparse&gt;&#8230;&lt;/#noparse&gt;</p>
<p>看如下的例子:<br />
&lt;#noparse&gt;<br />
&lt;#list books as book&gt;<br />
&lt;tr&gt;&lt;td&gt;${book.name}&lt;td&gt;作者:${book.author}<br />
&lt;/#list&gt;<br />
&lt;/#noparse&gt;<br />
输出如下:<br />
&lt;#list books as book&gt;<br />
&lt;tr&gt;&lt;td&gt;${book.name}&lt;td&gt;作者:${book.author}<br />
&lt;/#list&gt;</p>
<h3><strong>4.7 escape , noescape</strong><strong>指令</strong></h3>
<p>escape指令导致body区的插值都会被自动加上escape表达式,但不会影响字符串内的插值,只会影响到body内出现的插值,使用escape指令的语法格式如下:<br />
&lt;#escape identifier as expression&gt;&#8230;<br />
&lt;#noescape&gt;&#8230;&lt;/#noescape&gt;<br />
&lt;/#escape&gt;</p>
<p>看如下的代码:<br />
&lt;#escape x as x?html&gt;<br />
First name:${firstName}<br />
Last name:${lastName}<br />
Maiden name:${maidenName}<br />
&lt;/#escape&gt;<br />
上面的代码等同于:<br />
First name:${firstName?html}<br />
Last name:${lastName?html}<br />
Maiden name:${maidenName?html}</p>
<p>escape指令在解析模板时起作用而不是在运行时起作用,除此之外,escape指令也嵌套使用,子escape继承父escape的规则,如下例子:<br />
&lt;#escape x as x?html&gt;<br />
Customer Name:${customerName}<br />
Items to ship;<br />
&lt;#escape x as itemCodeToNameMap[x]&gt;<br />
${itemCode1}<br />
${itemCode2}<br />
${itemCode3}<br />
${itemCode4}<br />
&lt;/#escape&gt;<br />
&lt;/#escape&gt;<br />
上面的代码类似于:<br />
Customer Name:${customerName?html}<br />
Items to ship;<br />
${itemCodeToNameMap[itemCode1]?html}<br />
${itemCodeToNameMap[itemCode2]?html}<br />
${itemCodeToNameMap[itemCode3]?html}<br />
${itemCodeToNameMap[itemCode4]?html}</p>
<p>对于放在escape指令中所有的插值而言,这此插值将被自动加上escape表达式,如果需要指定escape指令中某些插值无需添加escape表达式,则应该使用noescape指令,放在noescape指令中的插值将不会添加escape表达式.</p>
<h3><strong>4.8 assign</strong><strong>指令</strong></h3>
<p>assign指令在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量,assign指令的用法有多种,包含创建或替换一个顶层变量, 或者创建或替换多个变量等,它的最简单的语法如下:&lt;#assign [in namespacehash]&gt;,这个用法用于指定一个名为name的变量,该变量的值为value,此外,FreeMarker允许在使用 assign指令里增加in子句,in子句用于将创建的name变量放入namespacehash命名空间中.</p>
<p>assign指令还有如下用法:&lt;#assign name1=value1 name2=value2 &#8230; nameN=valueN [in namespacehash]&gt;,这个语法可以同时创建或替换多个顶层变量,此外,还有一种复杂的用法,如果需要创建或替换的变量值是一个复杂的表 达式,则可以使用如下语法格式:&lt;#assign name [in namespacehash]&gt;capture this&lt;/#assign&gt;,在这个语法中,是指将assign指令的内容赋值给name变量.如下例子:<br />
&lt;#assign x&gt;<br />
&lt;#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n&gt;<br />
${n}<br />
&lt;/#list&gt;<br />
&lt;/#assign&gt;<br />
${x}<br />
上面的代码将产生如下输出:星期一 星期二 星期三 星期四 星期五 星期六 星期天</p>
<p>虽然assign指定了这种复杂变量值的用法,但是我们也不要滥用这种用法,如下例子:&lt;#assign x&gt;Hello ${user}!&lt;/#assign&gt;,以上代码改为如下写法更合适:&lt;#assign x=&#8221;Hello ${user}!&#8221;&gt;</p>
<h3><strong>4.9 setting</strong><strong>指令</strong></h3>
<p>该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:&lt;#setting name=value&gt;,在这个格式中,name的取值范围包含如下几个:<br />
locale:该选项指定该模板所用的国家/语言选项<br />
number_format:指定格式化输出数字的格式<br />
boolean_format:指定两个布尔值的语法格式,默认值是true,false<br />
date_format,time_format,datetime_format:指定格式化输出日期的格式<br />
time_zone:设置格式化输出日期时所使用的时区</p>
<h3><strong>4.10 macro , nested , return</strong><strong>指令</strong></h3>
<p>macro可以用于实现自定义指令,通过使用自定义指令,可以将一段模板片段定义成一个用户指令,使用macro指令的语法格式如下:<br />
&lt;#macro name param1 param2 &#8230; paramN&gt;<br />
&#8230;<br />
&lt;#nested loopvar1, loopvar2, &#8230;, loopvarN&gt;<br />
&#8230;<br />
&lt;#return&gt;<br />
&#8230;<br />
&lt;/#macro&gt;<br />
在上面的格式片段中,包含了如下几个部分:<br />
name:name属性指定的是该自定义指令的名字,使用自定义指令时可以传入多个参数<br />
paramX:该属性就是指定使用自定义指令时报参数,使用该自定义指令时,必须为这些参数传入值<br />
nested指令:nested标签输出使用自定义指令时的中间部分<br />
nested指令中的循环变量:这此循环变量将由macro定义部分指定,传给使用标签的模板<br />
return指令:该指令可用于随时结束该自定义指令.</p>
<p>看如下的例子:<br />
&lt;#macro book&gt;   //定义一个自定义指令<br />
j2ee<br />
&lt;/#macro&gt;<br />
&lt;@book /&gt;    //使用刚才定义的指令<br />
上面的代码输出结果为:j2ee</p>
<p>在上面的代码中,可能很难看出自定义标签的用处,因为我们定义的book指令所包含的内容非常简单,实际上,自定义标签可包含非常多的内容,从而可以实现更好的代码复用.此外,还可以在定义自定义指令时,为自定义指令指定参数,看如下代码:<br />
&lt;#macro book booklist&gt;     //定义一个自定义指令booklist是参数<br />
&lt;#list booklist as book&gt;<br />
${book}<br />
&lt;/#list&gt;<br />
&lt;/#macro&gt;<br />
&lt;@book booklist=["spring","j2ee"] /&gt;   //使用刚刚定义的指令<br />
上面的代码为book指令传入了一个参数值,上面的代码的输出结果为:spring j2ee</p>
<p>不仅如此,还可以在自定义指令时使用nested指令来输出自定义指令的中间部分,看如下例子:<br />
&lt;#macro page title&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;FreeMarker示例页面 &#8211; ${title?html}&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;${title?html}&lt;/h1&gt;<br />
&lt;#nested&gt;      //用于引入用户自定义指令的标签体<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;/#macro&gt;<br />
上面的代码将一个HTML页面模板定义成一个page指令,则可以在其他页面中如此page指令:<br />
&lt;#import &#8220;/common.ftl&#8221; as com&gt;     //假设上面的模板页面名为common.ftl,导入页面<br />
&lt;@com.page title=&#8221;book list&#8221;&gt;<br />
&lt;u1&gt;<br />
&lt;li&gt;spring&lt;/li&gt;<br />
&lt;li&gt;j2ee&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/@com.page&gt;</p>
<p>从上面的例子可以看出,使用macro和nested指令可以非常容易地实现页面装饰效果,此外,还可以在使用nested指令时,指定一个或多个循环变量,看如下代码:<br />
&lt;#macro book&gt;<br />
&lt;#nested 1&gt;      //使用book指令时指定了一个循环变量值<br />
&lt;#nested 2&gt;<br />
&lt;/#macro&gt;<br />
&lt;@book ;x&gt; ${x} .图书&lt;/@book&gt;<br />
当使用nested指令传入变量值时,在使用该自定义指令时,就需要使用一个占位符(如book指令后的;x).上面的代码输出文本如下:<br />
1 .图书    2 .图书</p>
<p>在nested指令中使用循环变量时,可以使用多个循环变量,看如下代码:<br />
&lt;#macro repeat count&gt;<br />
&lt;#list 1..count as x&gt;     //使用nested指令时指定了三个循环变量<br />
&lt;#nested x, x/2, x==count&gt;<br />
&lt;/#list&gt;<br />
&lt;/#macro&gt;<br />
&lt;@repeat count=4 ; c halfc last&gt;<br />
${c}. ${halfc}&lt;#if last&gt; Last! &lt;/#if&gt;<br />
&lt;/@repeat&gt;<br />
上面的输出结果为:<br />
1. 0.5   2. 1   3. 1.5   4. 2 Last;</p>
<p>return指令用于结束macro指令,一旦在macro指令中执行了return指令,则FreeMarker不会继续处理macro指令里的内容,看如下代码:<br />
&lt;#macro book&gt;<br />
spring<br />
&lt;#return&gt;<br />
j2ee<br />
&lt;/#macro&gt;<br />
&lt;@book /&gt;<br />
上面的代码输出:spring,而j2ee位于return指令之后,不会输出.</p>
<p>用户定义指令</p>
<p>l         宏和变换器变量是两种不同类型的用户定义指令，它们之间的区别是宏是在模板中使用macro指令定义，而变换器是在模板外由程序定义，这里只介绍宏</p>
<p>l         基本用法</p>
<p>Ø         宏是和某个变量关联的模板片断，以便在模板中通过用户定义指令使用该变量，下面是一个例子：</p>
<pre>&lt;#macro greet&gt;</pre>
<pre>  &lt;font size="+2"&gt;Hello Joe!&lt;/font&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<p>Ø         作为用户定义指令使用宏变量时，使用@替代FTL标记中的#</p>
<pre>&lt;@greet&gt;&lt;/@greet&gt;</pre>
<p>Ø         如果没有体内容，也可以使用：</p>
<pre>&lt;@greet/&gt;</pre>
<p>l         参数</p>
<p>Ø         在macro指令中可以在宏变量之后定义参数，如：</p>
<pre>&lt;#macro greet person&gt;</pre>
<pre>  &lt;font size="+2"&gt;Hello ${person}!&lt;/font&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<p>Ø         可以这样使用这个宏变量：</p>
<pre>&lt;@greet person="Fred"/&gt; and &lt;@greet person="Batman"/&gt;</pre>
<p>输出结果是：</p>
<pre>  &lt;font size="+2"&gt;Hello Fred!&lt;/font&gt;</pre>
<pre> and   &lt;font size="+2"&gt;Hello Batman!&lt;/font&gt;</pre>
<pre></pre>
<p>Ø         宏的参数是FTL表达式，所以下面的代码具有不同的意思：</p>
<pre>&lt;@greet person=Fred/&gt;</pre>
<p>Ø         这意味着将Fred变量的值传给person参数，该值不仅是字符串，还可以是其它类型，甚至是复杂的表达式</p>
<p>Ø         宏可以有多参数，下面是一个例子：</p>
<pre>&lt;#macro greet person color&gt;</pre>
<pre>  &lt;font size="+2" color="${color}"&gt;Hello ${person}!&lt;/font&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<p>Ø         可以这样使用该宏变量：</p>
<pre>&lt;@greet person="Fred" color="black"/&gt;</pre>
<p>Ø         其中参数的次序是无关的，因此下面是等价的：</p>
<pre>&lt;@greet color="black" person="Fred"/&gt;</pre>
<p>Ø         只能使用在macro指令中定义的参数，并且对所有参数赋值，所以下面的代码是错误的：</p>
<pre>&lt;@greet person="Fred" color="black" background="green"/&gt;</pre>
<pre>&lt;@greet person="Fred"/&gt;</pre>
<p>Ø         可以在定义参数时指定缺省值，如：</p>
<pre>&lt;#macro greet person color="black"&gt;</pre>
<pre>  &lt;font size="+2" color="${color}"&gt;Hello ${person}!&lt;/font&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<p>Ø         这样&lt;@greet person=&#8221;Fred&#8221;/&gt;就正确了</p>
<p>Ø         宏的参数是局部变量，只能在宏定义中有效</p>
<p>l         嵌套内容</p>
<p>Ø         用户定义指令可以有嵌套内容，使用&lt;#nested&gt;指令执行指令开始和结束标记之间的模板片断</p>
<p>Ø         例子：</p>
<pre>&lt;#macro border&gt;</pre>
<pre>  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;</pre>
<pre>    &lt;#nested&gt;</pre>
<pre>  &lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<p>这样使用该宏变量：</p>
<pre>&lt;@border&gt;The bordered text&lt;/@border&gt;</pre>
<p>输出结果：</p>
<pre>  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;</pre>
<pre>    The bordered text</pre>
<pre>  &lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;</pre>
<pre></pre>
<p>Ø         &lt;#nested&gt;指令可以被多次调用，例如：</p>
<pre>&lt;#macro do_thrice&gt;</pre>
<pre>  &lt;#nested&gt;</pre>
<pre>  &lt;#nested&gt;</pre>
<pre>  &lt;#nested&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<pre>&lt;@do_thrice&gt;</pre>
<pre>  Anything.</pre>
<pre>&lt;/@do_thrice&gt;</pre>
<p>输出结果：</p>
<pre>  Anything.</pre>
<pre>  Anything.</pre>
<pre>  Anything.</pre>
<p>Ø         嵌套内容可以是有效的FTL，下面是一个有些复杂的例子：</p>
<pre>&lt;@border&gt;</pre>
<pre>  &lt;ul&gt;</pre>
<pre>  &lt;@do_thrice&gt;</pre>
<pre>    &lt;li&gt;&lt;@greet person="Joe"/&gt;</pre>
<pre>  &lt;/@do_thrice&gt;</pre>
<pre>  &lt;/ul&gt;</pre>
<pre>&lt;/@border&gt;</pre>
<p>输出结果：</p>
<pre>  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;</pre>
<pre>      &lt;ul&gt;</pre>
<pre>    &lt;li&gt;&lt;font size="+2"&gt;Hello Joe!&lt;/font&gt;</pre>
<pre></pre>
<pre>    &lt;li&gt;&lt;font size="+2"&gt;Hello Joe!&lt;/font&gt;</pre>
<pre></pre>
<pre>    &lt;li&gt;&lt;font size="+2"&gt;Hello Joe!&lt;/font&gt;</pre>
<pre></pre>
<pre>  &lt;/ul&gt;</pre>
<pre></pre>
<pre>  &lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;</pre>
<p>Ø         宏定义中的局部变量对嵌套内容是不可见的，例如：</p>
<pre>&lt;#macro repeat count&gt;</pre>
<pre>  &lt;#local y = "test"&gt;</pre>
<pre>  &lt;#list 1..count as x&gt;</pre>
<pre>    ${y} ${count}/${x}: &lt;#nested&gt;</pre>
<pre>  &lt;/#list&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<pre>&lt;@repeat count=3&gt;${y?default("?")} ${x?default("?")} ${count?default("?")}&lt;/@repeat&gt;</pre>
<p>输出结果：</p>
<pre>    test 3/1: ? ? ?</pre>
<pre>    test 3/2: ? ? ?</pre>
<pre>    test 3/3: ? ? ?</pre>
<p>Ø</p>
<p>l         在宏定义中使用循环变量</p>
<p>Ø         用户定义指令可以有循环变量，通常用于重复嵌套内容，基本用法是：作为nested指令的参数传递循环变量的实际值，而在调用用户定义指令时，在&lt;@…&gt;开始标记的参数后面指定循环变量的名字</p>
<p>Ø         例子：</p>
<pre>&lt;#macro repeat count&gt;</pre>
<pre>  &lt;#list 1..count as x&gt;</pre>
<pre>    &lt;#nested x, x/2, x==count&gt;</pre>
<pre>  &lt;/#list&gt;</pre>
<pre>&lt;/#macro&gt;</pre>
<pre>&lt;@repeat count=4 ; c, halfc, last&gt;</pre>
<pre>  ${c}. ${halfc}&lt;#if last&gt; Last!&lt;/#if&gt;</pre>
<pre>&lt;/@repeat&gt;</pre>
<p>输出结果：</p>
<pre>  1. 0.5</pre>
<pre>  2. 1</pre>
<pre>  3. 1.5</pre>
<pre>  4. 2 Last!</pre>
<pre></pre>
<p>Ø         指定的循环变量的数目和用户定义指令开始标记指定的不同不会有问题</p>
<p>n         调用时少指定循环变量，则多指定的值不可见</p>
<p>n         调用时多指定循环变量，多余的循环变量不会被创建</p>
<h3  class="related_post_title">随机文章</h3><ul class="related_post"><li>2010年04月16日 -- <a href="http://www.havenliu.com/other/374.html" title="网通DNS又出问题了">网通DNS又出问题了</a></li><li>2009年11月2日 -- <a href="http://www.havenliu.com/java/266.html" title="MySql access denied for user错误">MySql access denied for user错误</a></li><li>2010年06月17日 -- <a href="http://www.havenliu.com/mylife/457.html" title="D80初试机">D80初试机</a></li><li>2009年07月5日 -- <a href="http://www.havenliu.com/bike/113.html" title="2009年第96届环法自行车赛第一赛段个人计时赛视频">2009年第96届环法自行车赛第一赛段个人计时赛视频</a></li><li>2009年06月6日 -- <a href="http://www.havenliu.com/goodarticle/27.html" title="我喜欢的十个禅宗故事">我喜欢的十个禅宗故事</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/goodarticle/420.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>西塘游记</title>
		<link>http://www.havenliu.com/mylife/409.html</link>
		<comments>http://www.havenliu.com/mylife/409.html#comments</comments>
		<pubDate>Thu, 06 May 2010 15:13:46 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[生活杂记]]></category>
		<category><![CDATA[单车游记]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=409</guid>
		<description><![CDATA[最近太忙,从西塘回来已经许久,才抽出点时间来记录这次旅行.
其实老早就答应带老婆去西塘,她一直很向往,但每次计划好了,到最后时刻总是有很多原因又延后,这次总算去了,了却一大桩心愿.
江南古镇以前去过乌镇,大约是两年前的事.估计是当时对乌镇的期望比较高.游完后非常失望.完全没有传说中那么漂亮.到处充斥着隆重的商业气息和现代人为修饰的气息,一点都找不到古镇的古朴(这次五.一骑行南浔.顺便再去了趟乌镇(详情见后面更新的文章),现在的商业气息跟浓了).所以后来对西塘的期望就比较高了,因为幻想着能从西塘这里找到江南故古镇的气息.整趟游玩下来虽然还是没有期望的那么高（估计还是我期望太高了），但可以肯定的是比当初去乌镇满意多了。
两年前对乌镇的记忆已经有些模糊了，感觉西塘比乌镇大很多，第一天到的时候就逛了一条街，当时在这条街上来回走了好几遍，以为西塘就这么大，当时感觉比较失望，因为这街上除了熙熙攘攘的人流和一个模子刻出来的商店，实在没其他好看的，唯一几处可以看出点水乡味道来的小桥上人满为患，看着桥上的驻足拍照的人流，真的惊叹这些千古小桥的承受能力。
在无聊和失望中走了几圈后就忙着找住宿。西塘是所以江南古镇中住宿最多的一个镇。我们是周末去的，在傍晚时才开始找房，还是比较好找，当然那些特别好的是别人提前预订了的。如果对西塘很熟的人，就算不预订估计也能找到令自己满意的。去之前在网上看见很多人说一定要找临水的房。如果你不是特别浪漫的人，觉得还是没有必要。要享受水乡的夜景，可以到临水的水吧或咖啡厅去坐一会。绝对比临水的房间更能感受水乡的气息。我们本来想去临水的咖啡厅去坐坐，但因为人太少，觉得没太大的意思，就取消了这念头，当时想要是本来约好的朋友这次能一起来，我们一定会进去坐坐，聊聊那些陈旧、老套但永不乏味的旧时光。。。。这估计是这次西塘旅行最大的遗憾。
找好房间，就到吃晚饭的时候了。我们问了旅店老板附件的吃饭的情况，老板推荐我们出去吃。在西街后面临河的一条街全是吃饭的小店，都是镇的原住民开的，我们仔细看过，饭菜好像没什么特别的。而且都是在外面的吃，身边就是熙熙攘攘的人流。我没有在总目睽睽下吃东西的习惯，再说对这些小店的卫生就没太大的信心，就参考了老板的意见，到镇外面去吃。反正晚上检票的人都已经全部下班。进去也方便。
估计是季节的原因，晚上西塘的风很大，吹在身上还有些发冷，吃饭饭后匆匆看了下西塘的夜景就会旅店睡觉了。
第二天一早起来，本打算打点下就回杭州。已经前一天已经逛了好几遍。实在没啥看的。在瞎拐了几个湾之后才发现，昨天我们其实只是在西塘的一条小街上打转。其实后面还有很大的地方没逛，抱着意外的惊喜，又在镇上逛了很久，这些地方相对人要少很多，还发现了很多不错的住宿，才后悔昨天没找到这里。匆匆的拍了些照片，正式回家。
关于逃票：去西塘之前做了些功课，看了网上很多人写的逃票方法，那些全都不管用了。现在进景区的小路几乎都有人检查。唯一安全的逃票方法就是等别人下班了进去。景区检票的人下午5点下班，早上8点上班。如果时间安排的合理点，第一天下午到西塘，等别人下班了进去，晚上住在水乡，顺便看夜景，第二天早上起来再逛逛，就可以回家了，完全不用买票。我们是在检票口的一家餐馆里吃饭，那老板和检票的人很熟，就给了老板20块钱，让老板把我们送进去的。路边和车站有很多三轮车说什么能帮你逃票，这些都不可信，成功的几率很低，千万别信。
下面发几张西塘的照片，其他照片都在我的相册里
“火柴天堂”里拍的。里面都是卖火柴的，贴着一些很搞的标语，引来很有游人
水乡美景
晚上河边有许多人放许愿灯，由于我贪念太多，怕神明怪罪，就没去放。。。
一块古老的门板上有许多彩色粉笔的留言
随机文章2010年06月30日 -- 【转】十年前你绝对没有看懂的《大话西游》，十年后你终于懂了……2010年05月15日 -- 江南古镇之【骑行南浔】2009年11月2日 -- 十二大著名法则2009年06月30日 -- 惠普前总裁孙振耀指点职业规划（三）2009年08月23日 -- 徽杭古道归来]]></description>
			<content:encoded><![CDATA[<p>最近太忙,从西塘回来已经许久,才抽出点时间来记录这次旅行.</p>
<p>其实老早就答应带老婆去西塘,她一直很向往,但每次计划好了,到最后时刻总是有很多原因又延后,这次总算去了,了却一大桩心愿.<br />
江南古镇以前去过乌镇,大约是两年前的事.估计是当时对乌镇的期望比较高.游完后非常失望.完全没有传说中那么漂亮.到处充斥着隆重的商业气息和现代人为修饰的气息,一点都找不到古镇的古朴(这次五.一骑行南浔.顺便再去了趟乌镇(详情见后面更新的文章),现在的商业气息跟浓了).所以后来对西塘的期望就比较高了,因为幻想着能从西塘这里找到江南故古镇的气息.整趟游玩下来虽然还是没有期望的那么高（估计还是我期望太高了），但可以肯定的是比当初去乌镇满意多了。</p>
<p>两年前对乌镇的记忆已经有些模糊了，感觉西塘比乌镇大很多，第一天到的时候就逛了一条街，当时在这条街上来回走了好几遍，以为西塘就这么大，当时感觉比较失望，因为这街上除了熙熙攘攘的人流和一个模子刻出来的商店，实在没其他好看的，唯一几处可以看出点水乡味道来的小桥上人满为患，看着桥上的驻足拍照的人流，真的惊叹这些千古小桥的承受能力。</p>
<p>在无聊和失望中走了几圈后就忙着找住宿。西塘是所以江南古镇中住宿最多的一个镇。我们是周末去的，在傍晚时才开始找房，还是比较好找，当然那些特别好的是别人提前预订了的。如果对西塘很熟的人，就算不预订估计也能找到令自己满意的。去之前在网上看见很多人说一定要找临水的房。如果你不是特别浪漫的人，觉得还是没有必要。要享受水乡的夜景，可以到临水的水吧或咖啡厅去坐一会。绝对比临水的房间更能感受水乡的气息。我们本来想去临水的咖啡厅去坐坐，但因为人太少，觉得没太大的意思，就取消了这念头，当时想要是本来约好的朋友这次能一起来，我们一定会进去坐坐，聊聊那些陈旧、老套但永不乏味的旧时光。。。。这估计是这次西塘旅行最大的遗憾。</p>
<p>找好房间，就到吃晚饭的时候了。我们问了旅店老板附件的吃饭的情况，老板推荐我们出去吃。在西街后面临河的一条街全是吃饭的小店，都是镇的原住民开的，我们仔细看过，饭菜好像没什么特别的。而且都是在外面的吃，身边就是熙熙攘攘的人流。我没有在总目睽睽下吃东西的习惯，再说对这些小店的卫生就没太大的信心，就参考了老板的意见，到镇外面去吃。反正晚上检票的人都已经全部下班。进去也方便。</p>
<p>估计是季节的原因，晚上西塘的风很大，吹在身上还有些发冷，吃饭饭后匆匆看了下西塘的夜景就会旅店睡觉了。<br />
第二天一早起来，本打算打点下就回杭州。已经前一天已经逛了好几遍。实在没啥看的。在瞎拐了几个湾之后才发现，昨天我们其实只是在西塘的一条小街上打转。其实后面还有很大的地方没逛，抱着意外的惊喜，又在镇上逛了很久，这些地方相对人要少很多，还发现了很多不错的住宿，才后悔昨天没找到这里。匆匆的拍了些照片，正式回家。<span style="color: #008000;"><strong></strong></span></p>
<p><span style="color: #ff6600;"><strong>关于逃票：</strong></span>去西塘之前做了些功课，看了网上很多人写的逃票方法，那些全都不管用了。现在进景区的小路几乎都有人检查。唯一安全的逃票方法就是等别人下班了进去。景区检票的人下午5点下班，早上8点上班。如果时间安排的合理点，第一天下午到西塘，等别人下班了进去，晚上住在水乡，顺便看夜景，第二天早上起来再逛逛，就可以回家了，完全不用买票。我们是在检票口的一家餐馆里吃饭，那老板和检票的人很熟，就给了老板20块钱，让老板把我们送进去的。路边和车站有很多三轮车说什么能帮你逃票，这些都不可信，成功的几率很低，千万别信。</p>
<p>下面发几张西塘的照片，其他照片都在<a title="西塘相册" href="http://www.havenliu.com/photos" target="_self">我的相册里</a></p>
<p>“火柴天堂”里拍的。里面都是卖火柴的，贴着一些很搞的标语，引来很有游人<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf4981.jpg" title="" class="shutterset_singlepic12" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/12__500x500_dscf4981.jpg" alt="dscf4981" title="dscf4981" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf4980.jpg" title="" class="shutterset_singlepic11" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/11__500x400_dscf4980.jpg" alt="dscf4980" title="dscf4980" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf4979.jpg" title="" class="shutterset_singlepic10" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/10__500x400_dscf4979.jpg" alt="dscf4979" title="dscf4979" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf4977.jpg" title="" class="shutterset_singlepic8" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/8__500x400_dscf4977.jpg" alt="dscf4977" title="dscf4977" />
</a>
<br />
水乡美景<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf4995.jpg" title="" class="shutterset_singlepic15" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/15__500x400_dscf4995.jpg" alt="dscf4995" title="dscf4995" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5005.jpg" title="" class="shutterset_singlepic17" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/17__500x400_dscf5005.jpg" alt="dscf5005" title="dscf5005" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5009.jpg" title="" class="shutterset_singlepic18" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/18__500h=400float=x_dscf5009.jpg" alt="dscf5009" title="dscf5009" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5014.jpg" title="" class="shutterset_singlepic19" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/19__500h=400float=x_dscf5014.jpg" alt="dscf5014" title="dscf5014" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5040.jpg" title="" class="shutterset_singlepic26" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/26__500h=400float=x_dscf5040.jpg" alt="dscf5040" title="dscf5040" />
</a>
<br />
晚上河边有许多人放许愿灯，由于我贪念太多，怕神明怪罪，就没去放。。。<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5069.jpg" title="" class="shutterset_singlepic29" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/29__500h=400float=x_dscf5069.jpg" alt="dscf5069" title="dscf5069" />
</a>
<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5073.jpg" title="" class="shutterset_singlepic30" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/30__500h=400float=x_dscf5073.jpg" alt="dscf5073" title="dscf5073" />
</a>
<br />
一块古老的门板上有许多彩色粉笔的留言<br />

<a href="http://www.havenliu.com/wp-content/gallery/xitang/dscf5191.jpg" title="" class="shutterset_singlepic42" >
	<img class="ngg-singlepic" src="http://www.havenliu.com/wp-content/gallery/cache/42__500h=400float=x_dscf5191.jpg" alt="dscf5191" title="dscf5191" />
</a>
</p>
<h3  class="related_post_title">随机文章</h3><ul class="related_post"><li>2009年08月3日 -- <a href="http://www.havenliu.com/other/179.html" title="Google收录速度加快了">Google收录速度加快了</a></li><li>2010年05月27日 -- <a href="http://www.havenliu.com/web/446.html" title="Jquery html(val)使用注意">Jquery html(val)使用注意</a></li><li>2010年05月11日 -- <a href="http://www.havenliu.com/goodarticle/420.html" title="找到一份比较全面的freemarker语法总结">找到一份比较全面的freemarker语法总结</a></li><li>2009年10月10日 -- <a href="http://www.havenliu.com/bike/255.html" title="国庆骑行绍兴">国庆骑行绍兴</a></li><li>2009年07月6日 -- <a href="http://www.havenliu.com/bike/115.html" title="2009年第96届环法自行车赛第二、三赛段视频">2009年第96届环法自行车赛第二、三赛段视频</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/mylife/409.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>网通DNS又出问题了</title>
		<link>http://www.havenliu.com/other/374.html</link>
		<comments>http://www.havenliu.com/other/374.html#comments</comments>
		<pubDate>Fri, 16 Apr 2010 01:10:48 +0000</pubDate>
		<dc:creator>Haven</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[淘宝]]></category>

		<guid isPermaLink="false">http://www.havenliu.com/?p=374</guid>
		<description><![CDATA[最近网通的DNS解析又出问题了，很多网站访问都有问题，最典型的淘宝的图片不能显示，Flickr的部分图片服务器也不能解析，一般换成OpenDNS就可以解决这个问题，下面提供两组openDNS：208.67.222.222；208.67.220.220。
对网通的DNS实在没多少信心了。以前老是被劫持，而且一劫持就是几个月都没解决，现在有出现这样的问题。
相关文章2009年09月13日 -- 再度杀回淘宝]]></description>
			<content:encoded><![CDATA[<p>最近网通的DNS解析又出问题了，很多网站访问都有问题，最典型的淘宝的图片不能显示，Flickr的部分图片服务器也不能解析，一般换成OpenDNS就可以解决这个问题，下面提供两组openDNS：208.67.222.222；208.67.220.220。<br />
对网通的DNS实在没多少信心了。以前老是被劫持，而且一劫持就是几个月都没解决，现在有出现这样的问题。</p>
<h3  class="related_post_title">相关文章</h3><ul class="related_post"><li>2009年09月13日 -- <a href="http://www.havenliu.com/mylife/231.html" title="再度杀回淘宝">再度杀回淘宝</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.havenliu.com/other/374.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
