<?xml version="1.0" encoding="utf-8" ?>
<!-- generator="FEEDCREATOR_VERSION" -->
<rss version="2.0" xmlns:sns="http://blog.sina.com.cn/sns">
    <channel>
        <title>唇边浅笑，眉上轻愁</title>
        <description></description>
        <link>http://blog.sina.com.cn/jumptoflycs</link>
        <lastBuildDate>Thu, 10 Sep 2009 17:28:39 +0800</lastBuildDate>
        <generator>FEEDCREATOR_VERSION</generator>
        <language>zh-cn</language>
        <copyright>Copyright 1996 - 2009 SINA Inc. All Rights Reserved.</copyright>
        <pubDate>Thu, 16 Feb 2012 23:11:52 +0800</pubDate>
        <item>
            <title>Use ARRAY and GIN INDEX in postgresql</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100eq07.html</link>
            <description><![CDATA[I have encounter a problem for m_x_n mapping in database
design.<br />
For example, for products and sales, a product may have many sales
and a sales may response for many products.<br />
<br />
And sometimes I need to get all sales of a particular product when
I need all products of a sales in other times.<br />
<br />
So I make two design the mapping relation in postgresql(I omit
sales table in both two cases since they are nothing
different):<br />
<br />
1. Use a productXsales table:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Table "public.product_"<br />
&nbsp;Column |&nbsp;
Type&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Modifiers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

--------+---------+-------------------------------------------------------<br />

&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;
| integer | not null default
nextval('product__id_seq'::regclass)<br />
&nbsp;name&nbsp;&nbsp; |
text&nbsp;&nbsp;&nbsp; |<br />
Indexes:<br />
&nbsp;&nbsp;&nbsp;
"product__pkey" PRIMARY KEY, btree (id)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;
Table "public.p_x_s"<br />
&nbsp;Column |&nbsp;
Type&nbsp;&nbsp; | Modifiers<br />
--------+---------+-----------<br />
&nbsp;p_id&nbsp;&nbsp; |
integer |<br />
&nbsp;s_id&nbsp;&nbsp; |
integer |<br />
Indexes:<br />
&nbsp;&nbsp;&nbsp; "p_x_s_by_p"
btree (p_id)<br />
&nbsp;&nbsp;&nbsp; "p_x_s_by_s"
btree (s_id)<br />
<br />
<br />
2. User ARRAY and GIN INDEX in product table:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Table "public.product"<br />
&nbsp;Column |&nbsp;&nbsp;
Type&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Modifiers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

--------+-----------+------------------------------------------------------<br />

&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;
| integer&nbsp;&nbsp; | not null default
nextval('product_id_seq'::regclass)<br />
&nbsp;name&nbsp;&nbsp; |
text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|<br />
&nbsp;sals&nbsp;&nbsp; |
integer[] |<br />
Indexes:<br />
&nbsp;&nbsp;&nbsp;
"product_pkey" PRIMARY KEY, btree (id)<br />
&nbsp;&nbsp;&nbsp;
"product_by_sale" gin (sals)<br />
<br />
I make same test data for the two alternatives：<br />
&nbsp;&nbsp;&nbsp; 10000
products<br />
&nbsp;&nbsp;&nbsp; 3 sales for
each product<br />
&nbsp;&nbsp;&nbsp; for each
product, its sales ids are product_id, product_id + 1, product_id +
2.<br />
<br />
So the rows count should be:<br />
test=# SELECT count(1) from product_;<br />
&nbsp;count<br />
-------<br />
&nbsp;10000<br />
(1 row)<br />
<br />
test=# SELECT count(1) from p_x_s;<br />
&nbsp;count<br />
-------<br />
&nbsp;30000<br />
(1 row)<br />
<br />
test=# SELECT count(1) from product;<br />
&nbsp;count<br />
-------<br />
&nbsp;10000<br />
(1 row)<br />
<br />
Then start performance test.<br />
Query and Results:<br />
test=# SELECT id, name from product_, p_x_s where id = p_id and
s_id = 100;<br />
&nbsp;id&nbsp;
|&nbsp;&nbsp;&nbsp;
name&nbsp;&nbsp;&nbsp;<br />
-----+------------<br />
&nbsp; 98 | Prodcut98<br />
&nbsp; 99 | Prodcut99<br />
&nbsp;100 | Prodcut100<br />
(3 rows)<br />
<br />
test=# SELECT id, name from product where 100 = any(sals);<br />
&nbsp;id&nbsp;
|&nbsp;&nbsp;&nbsp;
name&nbsp;&nbsp;&nbsp;<br />
-----+------------<br />
&nbsp; 98 | Product98<br />
&nbsp; 99 | Product99<br />
&nbsp;100 | Product100<br />
(3 rows)<br />
<br />
test=# SELECT id, name from product where '{100}' &lt;@
sals;<br />
&nbsp;id&nbsp;
|&nbsp;&nbsp;&nbsp;
name&nbsp;&nbsp;&nbsp;<br />
-----+------------<br />
&nbsp; 98 | Product98<br />
&nbsp; 99 | Product99<br />
&nbsp;100 | Product100<br />
(3 rows)<br />
<br />
Analyze results:<br />
<br />
User usal B-tree index in a 30000 row map table<br />
test=# EXPLAIN ANALYZE SELECT id, name from product_, p_x_s where
id = p_id and s_id = 100;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

-------------------------------------------------------------------------------------------------------------------------------<br />

&nbsp;Nested Loop&nbsp; (cost=0.00..33.15
rows=3 width=15) (actual time=0.055..0.092 rows=3 loops=1)<br />
&nbsp;&nbsp;
-&gt;&nbsp; Index Scan using p_x_s_by_s on
p_x_s&nbsp; (cost=0.00..8.31 rows=3 width=4) (actual
time=0.033..0.039 rows=3 loops=1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Index Cond: (s_id = 100)<br />
&nbsp;&nbsp;
-&gt;&nbsp; Index Scan using product__pkey
on product_&nbsp; (cost=0.00..8.27 rows=1 width=15)
(actual time=0.008..0.010 rows=1 loops=3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Index Cond: (product_.id = p_x_s.p_id)<br />
&nbsp;Total runtime: 0.168 ms<br />
(6 rows)<br />
<br />
Use ANY for ARRAY without index<br />
test=# EXPLAIN ANALYZE SELECT id, name from product where 100 = ANY
(sals);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

------------------------------------------------------------------------------------------------------<br />

&nbsp;Seq Scan on product&nbsp;
(cost=0.00..328.00 rows=489 width=15) (actual time=0.091..7.719
rows=3 loops=1)<br />
&nbsp;&nbsp; Filter: (100 = ANY
(sals))<br />
&nbsp;Total runtime: 7.772 ms<br />
(3 rows)<br />
<br />
Use GIN INDEX<br />
test=# EXPLAIN ANALYZE SELECT id, name from product where '{100}'
&lt;@ sals;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

-------------------------------------------------------------------------------------------------------------------------<br />

&nbsp;Bitmap Heap Scan on product&nbsp;
(cost=4.33..35.11 rows=10 width=15) (actual time=0.046..0.050
rows=3 loops=1)<br />
&nbsp;&nbsp; Recheck Cond:
('{100}'::integer[] &lt;@ sals)<br />
&nbsp;&nbsp;
-&gt;&nbsp; Bitmap Index Scan on
product_by_sale&nbsp; (cost=0.00..4.33 rows=10 width=0)
(actual time=0.032..0.032 rows=3 loops=1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Index Cond: ('{100}'::integer[] &lt;@ sals)<br />
&nbsp;Total runtime: 0.109 ms<br />
(5 rows)<br />
<br />
<br />
Use GIN index on ARRAY perform a bit better than the mapping table,
much better than ANY since ANY can't use index.<br />
<br />
Another advantage of use ARRAY and GIN index is table size.<br />
test=# SELECT relname, reltuples, relpages from pg_class where
relname in ('product', 'product_', 'p_x_s');<br />
&nbsp;relname&nbsp; | reltuples |
relpages<br />
----------+-----------+----------<br />
&nbsp;product&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;
10000
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
103<br />
&nbsp;product_
|&nbsp;&nbsp;&nbsp;&nbsp;
10000
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
55<br />
&nbsp;p_x_s&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;
30000
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
133<br />
(3 rows)<br />
<br />
1st alternative cost 188 pages in total when 2nd only cost
103.<br />
<br />
<br />
Then I make a test for another group test data like:<br />
&nbsp;&nbsp;&nbsp; 100 products
and 1000 sales per product<br />
<br />
The results likes(I change the table and columns name for this
test, frt=product, user=sales):<br />
<br />
Use a map table, B-tree index and join<br />
test=# EXPLAIN ANALYZE SELECT id from frt_, frt_x_u where id = tid
and uid = 888;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

---------------------------------------------------------------------------------------------------------------------------------<br />

&nbsp;Hash Join&nbsp; (cost=19.98..250.72
rows=93 width=4) (actual time=0.504..1.156 rows=100 loops=1)<br />
&nbsp;&nbsp; Hash Cond: (frt_x_u.tid =
frt_.id)<br />
&nbsp;&nbsp;
-&gt;&nbsp; Bitmap Heap Scan on
frt_x_u&nbsp; (cost=4.98..234.45 rows=93 width=4)
(actual time=0.128..0.515 rows=100 loops=1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Recheck Cond: (uid = 888)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-&gt;&nbsp; Bitmap Index Scan on
frt_x_u_by_u&nbsp; (cost=0.00..4.96 rows=93 width=0)
(actual time=0.088..0.088 rows=100 loops=1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Index Cond: (uid = 888)<br />
&nbsp;&nbsp;
-&gt;&nbsp; Hash&nbsp;
(cost=13.75..13.75 rows=100 width=4) (actual time=0.348..0.348
rows=100 loops=1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-&gt;&nbsp; Index Scan using frt__pkey on
frt_&nbsp; (cost=0.00..13.75 rows=100 width=4) (actual
time=0.016..0.176 rows=100 loops=1)<br />
&nbsp;Total runtime: 1.339 ms<br />
(9 rows)<br />
<br />
Use ARRAY<br />
test=# EXPLAIN ANALYZE SELECT id from frt where '{888}'
&lt;@ users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

-----------------------------------------------------------------------------------------------<br />

&nbsp;Seq Scan on frt&nbsp;
(cost=0.00..3.25 rows=1 width=4) (actual time=0.111..5.079 rows=100
loops=1)<br />
&nbsp;&nbsp; Filter: ('{888}'::integer[]
&lt;@ users)<br />
&nbsp;Total runtime: 5.242 ms<br />
(3 rows)<br />
<br />
Problem got. It didn't use the GIN index since there are too little
rows in the table.<br />
To force it use index and test again:<br />
<br />
test=# SET enable_seqscan = off;<br />
SET<br />
test=# EXPLAIN ANALYZE SELECT id from frt where '{888}'
&lt;@ users;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
QUERY
PLAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

--------------------------------------------------------------------------------------------------------------------<br />

&nbsp;Index Scan using frt_by_user on
frt&nbsp; (cost=0.00..44.31 rows=1 width=4) (actual
time=0.043..0.244 rows=100 loops=1)<br />
&nbsp;&nbsp; Index Cond:
('{888}'::integer[] &lt;@ users)<br />
&nbsp;Total runtime: 0.399 ms<br />
(3 rows)<br />
<br />
Table size:<br />
test=# SELECT relname, reltuples, relpages from pg_class where
relname in ('frt', 'frt_', 'frt_x_u');<br />
&nbsp;relname | reltuples | relpages<br />
---------+-----------+----------<br />
&nbsp;frt&nbsp;&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
100
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2<br />
&nbsp;frt_&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
100
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1<br />
&nbsp;frt_x_u
|&nbsp;&nbsp;&nbsp; 100000
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
443<br />
(3 rows)<br />
<br />
In this case, use ARRAY with GIN INDEX is much better than another
map table.<br />
<br />
The disadvantage of GIN index is it's slow for INSERT and
UPDATE.<br />
<br />
For more information for GIN index in postgresql, refs
http://www.postgresql.org/docs/8.3/interactive/gin.html<br />]]></description>
            <author>蓝沙</author>
            <category>CS</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100eq07.html#comment</comments>
            <pubDate>Thu, 10 Sep 2009 17:28:39 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100eq07.html</guid>
        </item>
        <item>
            <title>我是传奇</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100dnfg.html</link>
            <description><![CDATA[<p><strong><font STYLE="font-size: 14px;" COLOR="#666666">自序</FONT></STRONG></P>
<p><strong><font STYLE="font-size: 14px;" COLOR="#666666">&nbsp;&nbsp;</FONT></STRONG></P>
<p><font STYLE="font-size: 12px;"><font STYLE="font-size: 14px;"><font COLOR="#666666"><strong>&nbsp;&nbsp;&nbsp;</STRONG>
传奇，未必是惊天动地，英雄奇遇。</FONT></FONT></FONT></P>
<p><font STYLE="font-size: 14px;" COLOR="#666666">&nbsp;&nbsp;&nbsp;
普通的人，普通的事，但是当很多罕见的情况恰巧发生在同一个人同一件事上时，便有了传奇。</FONT></P>
<p><font STYLE="font-size: 14px;" COLOR="#666666">&nbsp;&nbsp;&nbsp;
本文情节，纯属事实，如有雷同，算你倒霉。</FONT></P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>楔子</STRONG></P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
“你干吗呢？”TC突然在我身后冒出来。</P>
<p>&nbsp;&nbsp;&nbsp; “和Ryan,
Wilson他们CS呢。”24寸的显示器中的CT仰天倒下，洒出一片瑰丽的血雨，我甩下耳机，无奈的回头，“Ryan这厮不会配合……”</P>
<p>&nbsp;&nbsp;&nbsp;
“CS，你真对的起你的机器，赶紧拷个魔兽台服客户端和我玩来。”不耐烦的语调中夹杂着鄙夷。</P>
<p>&nbsp;&nbsp;&nbsp;
“好，你拷到你的移动硬盘里给我，用无线等到国服开了WLK也拷不完。”我俩的台式机都用无线网卡连的网，也算人才了。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>一 选号初建功</STRONG></P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
“我刚查了，TWOW不提供角色分离功能，所以我的圣骑士没法给你玩。”TC挥舞着他那令女人嫉妒的涤尽尘泥的莲藕般的白皙清瘦的手臂，“我朋友那有个80级的贼，你玩么？”</P>
<p>&nbsp;&nbsp;&nbsp;
“朕对生活在阴暗中的职业没兴趣。”</P>
<p>&nbsp;&nbsp;&nbsp;
“那或者你建个DK，能从55级开始。”莲藕继续在我面前舞动，“55到80一个多礼拜就差不多了。”</P>
<p>&nbsp;&nbsp;&nbsp;
“算了，DK还不如贼对我吸引力大，我只对骑士和法师有兴趣。”</P>
<p>&nbsp;&nbsp;&nbsp;
“那你只能自己从头练了。你用这个号么？还是用你自己的号，我记得你以前有个号。”</P>
<p>&nbsp;&nbsp;&nbsp;
“那个号还能用就用那个，反正都是从头开始，最好用自己的号，保险。”</P>
<p>&nbsp;&nbsp;&nbsp;
“你登录试试就知道了，应该提示时间用尽。”</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp; ……</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
几分钟后，我看到了TWOW提示充值的画面。</P>
<p>&nbsp;&nbsp;&nbsp;
“果然可以，回来充张卡就可以了。”</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
悲剧是由一连串的错误引起的。</P>
<p>&nbsp;&nbsp;&nbsp;
直到几天后，我才知道，此时自以为理所当然的正确选择，便是悲剧的开始。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>二&nbsp;月卡已白充</STRONG></P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“我刚买了两张月卡，”TC洪亮的声音穿墙而来，“你要充么？”</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“充，”我随口答道，“你告诉我怎么充，回来我给你钱。”</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“打开<a HREF="http://www.wowtaiwan.com.tw/">www.wowtaiwan.com.tw</A>，然后……”隔墙的指导继续着。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;……</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“好了。”看到了我在圣光之愿服务器的15级的圣骑士，我知道充值成功了。我的第二次TWOW之旅可以正式开始了。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;返回服务器列表。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;选择鬼雾峰服务器。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;咦？这是什么意思？</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“TC，鬼雾峰怎么写着已锁定？什么意思？”我扭头90度向着墙那头吼去。同时一边进入了鬼雾峰服务器，选择了部落方的血精灵男性圣骑士，开始挑外型。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“我刚想起来一件事，”一个声音自我身后响起，语气中好像带着一股复杂的情绪，“鬼雾峰前两天刚锁定了。”</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“就问你锁了什么意思呢？”我边说着，边按下了“同意”的按钮。</P>
<p>&nbsp;&nbsp;&nbsp;
于是我看到了一个不大的提示框，很有礼貌的写着“只有在这个伺服器已有角色的玩家才可新增角色。”</P>
<p>&nbsp;&nbsp;&nbsp; 良久之后。</P>
<p>&nbsp;&nbsp;&nbsp;
“我靠，你怎么不早点说，我刚把卡充上，白浪费了！”我悲痛莫名。</P>
<p>&nbsp;&nbsp;&nbsp;
“我不也是刚充卡才想起来么。”TC一脸无辜，“等我去问问还有什么招吧。”</P>
<p>&nbsp;&nbsp;&nbsp;
“嗯，应该还有办法，你去问下吧。”</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
其实，要是没有办法，反而是更好的结果。只是那时我们还年轻，还不懂这些。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>三 依然水长东</STRONG></P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“问过了，有两个办法。”TC再次悄然的出现在我的身后，这家伙最近在玩贼么？“你可以在别的服务器建个号然后转过来，转服要一张月卡，有人前两天刚转过。或者我会长给了我个没人玩的可以用的号，你可以用这个号，这号里也没骑士。”</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“我用那个号不还是得充张月卡才能玩？”我自以为聪明的反驳。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;几天以后我才知道，用自己的号，可不光是简单的充张卡这么简单。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“是，那你用你自己号吧，转服的卡我给你充。”</P>
<p>&nbsp;&nbsp;&nbsp;
“得了吧。我先看看能转么，我记得我在圣光之愿的部落有号来着。”我又开始打开TWOW主页。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“Shit！10级的人物才能转。我就一个人物到10级了，可却是个联盟的圣骑士。”我对着浏览器无奈的骂道。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“那就练个呗，反正挺快的，再说早晚也得练。”TC到是很淡然。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“我先看看能不能转吧。万一锁定的服务器不准转入呢。”我开始操作把圣光之愿服务器上的15级人类大叔骑士转向鬼雾峰。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“应该可以。但圣光之愿是PVE服，PVE服应该不能向PVP服转。”TC提醒着。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“谁说的，成功了，你看。”我指着显示器，“充卡就可以了。当然，这个号是联盟，转过去没用。”我取消了这次申请。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“行了，那你练吧，10级就行。”TC回自己的屋去了。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我又退回到服务器列表。还是选个PVP服务器保险。</P>
<p>&nbsp;&nbsp;&nbsp;
所有的PVP服务器都是“已锁定”，除了3个。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“奈辛瓦里”，“死亡之翼”和“远祖滩头”。</P>
<p>&nbsp;&nbsp;&nbsp;
当然是死亡之翼，最强大的堕落黑龙。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;几分钟后，一个叫做“水长东”的圣骑士在死亡之翼的逐日者之岛诞生了。</P>
<p>&nbsp;&nbsp;&nbsp;
于是这个骑士和他的主人的命运也被他的名字所注定了。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
自是人生长恨水长东。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>四 卅七未难中</STRONG></P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;一天后，水长东10岁了。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我将水长东停在了银月城中。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;那时我想，再次上线时，就是鬼雾峰的水长东了，再没有死亡之翼的水长东了。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;可事实是，死亡之翼的水长东恐怕会一直呆在银月城了，并且永葆10岁的青春。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我再次来到了TWOW的官方网站为水长东转服。打开转服申请的页面，选择转出角色所在服务器。</P>
<p>&nbsp;&nbsp;&nbsp;
咦？怎么没有死亡之翼？我仔细再找了一遍，确实没有。</P>
<p>&nbsp;&nbsp;&nbsp;
上游戏去查，一共10个PVE服务器，27个PVP服务器。</P>
<p>&nbsp;&nbsp;&nbsp;
上网站去数，转服列表里一共36个服务器。</P>
<p>&nbsp;&nbsp;&nbsp; 真棒！</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
TC再次来到我的身后，看着眼前这一情况，竟无语凝噎。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
我脑海中灵光一闪。</P>
<p>&nbsp;&nbsp;&nbsp;
台服的转服和角色改名服务是一起的。转服这边没有死亡之翼，那改名呢？</P>
<p>&nbsp;&nbsp;&nbsp;
几秒钟后，我果然在改名申请的服务器列表中找到了死亡之翼。</P>
<p>&nbsp;&nbsp;&nbsp;
一定是写网页的人漏掉了死亡之翼。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
我是干什么的？</P>
<p>&nbsp;&nbsp;&nbsp;
这点小事岂能难倒我。</P>
<p>&nbsp;&nbsp;&nbsp;
打开改名申请页面的源文件，查到死亡之翼服务器ID是987。</P>
<p>&nbsp;&nbsp;&nbsp;
来到转服申请页面。</P>
<p>&nbsp;&nbsp;&nbsp;
此时我不禁感叹，FireBug果然是Bug.</P>
<p>&nbsp;&nbsp;&nbsp;
随便把一个服务器的ID改成987。</P>
<p>&nbsp;&nbsp;&nbsp; 选定。</P>
<p>&nbsp;&nbsp;&nbsp;
果然，打开的新页面中，10级的水长东赫然其上。</P>
<p>&nbsp;&nbsp;&nbsp;
等等，为什么是“伺服器已无法申请转移”？</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
看来写网页的人并没有粗心。</P>
<p>&nbsp;&nbsp;&nbsp;
1/37的几率也并不小嘛。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
TC在我身后大笑不止，完全无视我此时的心情。</P>
<p>&nbsp;&nbsp;&nbsp;
小子，你等着。你会有报应的。&nbsp;</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
一天后，报应果然来了。</P>
<p>&nbsp;&nbsp;&nbsp;
一天后，他笑得更惨更久。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
算了，换个服务器重新练个血骑士再转吧，反正10级很快。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp; ……</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
第二天晚上，我又一次打开TWOW的服务器列表。</P>
<p>&nbsp;&nbsp;&nbsp;
面对着圣光之愿，和奈辛瓦里或远祖滩头，我斟酌着。</P>
<p>&nbsp;&nbsp;&nbsp;
奈辛瓦里和远祖滩头是PVP服务器，比较保险。可这两个应该是新的服务器，新人比较多，尤其是当前CWOW关服的情况下。</P>
<p>&nbsp;&nbsp;&nbsp;
圣光之愿是个老PVE服，部落边的新人应该是没有的，练级应该是比较容易的，而且我亲手试过我那15级的联盟圣骑士，转到鬼雾峰是可以的。</P>
<p>&nbsp;&nbsp;&nbsp;
于是，圣光之愿的永歌森林，一个新的血骑士诞生了。</P>
<p>&nbsp;&nbsp;&nbsp;
这次，他叫做“唇边浅笑”。</P>
<p>&nbsp;</P>
<p>&nbsp;&nbsp;&nbsp;
可是他的主人却注定了要“眉上轻愁”。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
<p><strong>五 洒血狂笑中</STRONG></P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;有了水长东的经历，唇边浅笑成长的速度快了许多。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;2个多小时后，同样在银月城的夕阳下，唇边浅笑阖上了双眼。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我不知道这几天的第几次来到TWOW的转服专区，在圣光之愿的人物列表下，我如愿的找到了10级的血精灵圣骑士唇边浅笑，欲转入服务器定为鬼雾峰，我颤抖的按下了“确认送出”的按钮。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;一个大大的提示窗口弹了出来。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我以为是转服的确认框。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;可却是：</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
抱歉！目前该角色无法进行移民作业！</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
原因：部落方禁止从任何PVE转出到任何PVP</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
（为了您的帐号安全系统将强制登出，如需再移民作业者，请重新登入！）</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我仰天长啸，欲哭无泪。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;当初武侯在上方谷顶，面对谷底的司马懿父子和头顶漫天的大雨，长叹“谋事在人，成事在天！”的心境，我此刻是十分了解了。</P>
<p>&nbsp;</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;手捂着胸口，我颤抖的指着24寸显示器中的提示框。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;“你，你……”</P>
<p>&nbsp;&nbsp;&nbsp;
“好，好……”</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;我“噗”的喷出一口腥红的鲜血，向后倒去。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;身后，TC在地上翻来滚去，浑身抽搐，声音嘶哑，双拳捶地，欲罢不能。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;他也在为我难过啊。</P>
<p>&nbsp;&nbsp;&nbsp;
我心里稍有些慰藉，缓缓的阖上了双眼。</P>
<p>&nbsp;&nbsp;&nbsp;
在我失去知觉前的最后一刹那，TC的笑声传入耳中……</P>
<p>&nbsp;</P>
<p><span STYLE="font-weight: bold;">尾声</SPAN></P>
<p><br /></P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;
丧钟镇。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;
一个亡灵缓缓自棺中坐起。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;
脑海中一片迷雾。</P>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;
只是，依稀记得自己以前的名字，叫做“水长东”。<br /></P>]]></description>
            <author>蓝沙</author>
            <category>WOW</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100dnfg.html#comment</comments>
            <pubDate>Tue, 23 Jun 2009 01:58:56 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100dnfg.html</guid>
        </item>
        <item>
            <title>终失去</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100d84t.html</link>
            <description><![CDATA[世间最美，唯 得不到 与 终失去。<br />
<br />
美国爱荷华州麦迪逊县的罗斯曼廊桥畔的白蛾是否仍在展翅<br />
长眠于大西洋底的海洋之心是否光华依然<br />
<br />
人世间最大的不幸，是曾经幸福过。<br />
<br />
罗伯特与弗朗西斯卡<br />
杰克与露丝<br />
短短数日便产生了超越一生的感情。<br />
然而终难当 生离死别。<br />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">纤云弄巧，飞星传恨，银汉迢迢暗度。金风玉露一相逢，便胜却，人间无数。</SPAN><br STYLE="font-style: italic;" />

<span STYLE="font-style: italic;">柔情似水，佳期如梦，忍顾鹊桥归路。两情若是久长时，又岂在，朝朝暮暮。</SPAN><br STYLE="font-style: italic;" />

<span STYLE="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
──秦观·鹊桥仙</SPAN><br />
<br />
因为终失去，所以此生不忘。<br />
因为终失去，所以刻骨铭心。<br />
<br />
<br />
<div STYLE="font-style: italic;">
其实我只是一个手持镰刀的稻草人，奥莉薇亚，你就是我守护的麦子。等到大风吹折了我的腰，希望你已经成熟，我毕竟不能守护你到永远。我只是一个普普通通的死神。<br />

<br />
我的意识渐渐朦胧了，朦胧间听见雪化的声音，花开的声音，春风吹过第一丛玫瑰的芳香，花瓣散落在潺潺的流水上，某一个星光满天的夜，我们拉着手，踏着水波走回从前……<br />

<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
── 江南·《一千零一夜之死神》<br />
<br /></DIV>
<br />
另荐：<a HREF="http://www.jjwxc.net/onebook.php?novelid=7&amp;chapterid=1" TARGET="_blank">《一千零一夜 之 死神》by 江南</A>]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100d84t.html#comment</comments>
            <pubDate>Sun, 31 May 2009 01:44:03 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100d84t.html</guid>
        </item>
        <item>
            <title>拔牙</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100d7pn.html</link>
            <description><![CDATA[牙痛已数日了。<br />
初时，偶尔小痛，浑没在意。<br />
后来，开始会有时剧痛一阵，然后就不痛了。痛不痛完全不归我控制。<br />
再后来，一用力就会痛。虽然不能让它不痛，但已可以想让它痛就痛了。<br />
于是，便去做检查了。<br />
<br />
伤痛便是如此。<br />
开始时甚是轻微，你毫不在意。<br />
慢慢的，它会愈来愈严重，而且总是在你意料之外给你surprise。<br />
然后，它就会成为你生活的一部分，它就在那里，只要你碰到，就会痛彻心扉。<br />
直到，解决它。<br />
<br />
<br />
在楼下的口腔诊所检查。<br />
不是大医院果然服务很好很用心，虽然用不了医保。<br />
医生说，是左侧上方的最后一颗智齿龋化严重，需要拔掉。<br />
我羞愧万分。<br />
想起前一阵还和人炫耀，我的牙齿一个虫牙都没有。<br />
<br />
善射者死于矢，善战者死于兵，善泳者溺于水。<br />
越是有把握的地方，越是容易出问题。<br />
最自信的地方便是最容易疏忽的地方。<br />
城池最容易被攻破的一面，往往是城墙最坚固的那面。<br />
<br />
<br />
医生又说，右边上方的最后一颗牙也开始龋化了，但还不严重，最好也拔掉，因为那颗牙的下面没有对应的牙，没有咬合功用。<br />
我想了想，决定还是等它不行了再拔。之前先注意保护吧。<br />
不过万一没保护好，龋化还是加深了，就要先受痛再挨刀了。<br />
<br />
类似的错误总是发生的。<br />
一旦一个地方出现了严重的问题，请尽快检查同类的或近似的地方，通常会有一样的问题，只是还没引发。<br />
当问题在萌芽阶段被发现时，人们总是会愿意选择代价比较小的临时解决方法或加强安全措施，而拒绝代价大的根本解决方法。<br />
人们共有的侥幸心理。<br />
只是，一旦，小代价的方法失败了，问题最终还是发生了，那大代价的方法是逃不掉的，也许还有额外的代价。<br />
<br />
<br />
那便拔罢。<br />
动手前，医护人员给我讲解了一些手术过程中可能出现的问题，我不咋理解。不过后来其中的一条我是理解的很深刻了──嘴角可能会受伤。<br />

打麻药。<br />
开战。<br />
敌人在口腔的最深处，相当顽固。<br />
由于地形的原因，我军的兵器不是很容易攻击到敌人的要害。<br />
在医生的要求下，我已尽力张大嘴巴，力求将敌人暴露在我方武器射程之内。<br />
怎奈天不遂人愿，恶人多命长，好人长遭殃。<br />
光靠张大嘴巴是不够滴。为求歼敌，只能扩大火力范围，由此带来的一些误伤是无可避免的了。<br />
于是我的嘴角受到了我方兵器无情的撕扯。<br />
由于麻药的存在，整个过程牙床和牙齿没有感受到特别的疼痛，主要的疼痛来自于被反复拉扯的嘴角。<br />
还好我方的兵器只是前端锋锐，嘴角虽然受到牵扯，却并未见红。<br />
<br />
当问题避无可避时，便只能面对了。<br />
可是奇怪的是，当你坦然面对并着手开始解决时，困扰你很久的难题本身却变的容易起来了，麻烦往往来自于解决问题时引发的其他问题。<br />
就好像，当你经历了数年的不快，反复斟酌思量，痛定思痛，终于决定和你的伴侣离婚时，最大的麻烦忽然成了财产分割。而这原本是你们以前不在乎的事情。<br />

还好，这些麻烦并不会造成比问题本身更大的伤害，只是给解决问题的过程带来些曲折。<br />
<br />
<br />
牙拔出来了。<br />
看着已经变黑的牙齿，心里一阵恶心，却又有一种轻松感。<br />
口腔的麻木感还没有消失，可是我分明可以感觉到，里面宽敞了好多嘛。<br />
医嘱，要吃几天消炎药，24小时内不能刷牙漱口，忌食烫辣硬，伤口疼痛的话可以吃止疼药。<br />
好麻烦。<br />
最麻烦的是居然不能刷卡。<br />
结账后口袋只有不到20块了。<br />
随着麻药效果的消失，伤口处开始有疼痛感。<br />
吃东西也只能用不太熟练的另一边，一不留神还会碰到伤口。<br />
可是，几天后就会痊愈了。<br />
比之前的不定期阵痛和固定情况的长痛好太多了。<br />
<br />
长痛不如短痛。<br />
早死早超生。<br />
临头一刀会带来短暂的剧痛，可是过后，便是另一番光景。海阔凭鱼跃，天高任鸟飞。<br />
勉强的坚持，也许会度过暂时的难关，但也会把痛苦延续。<br />
也许坚持一辈子，痛苦一辈子。<br />
也许到头来，还是不免这一刀，只是凭白多受了这些时日的苦，而当时的海阔天空，也可能已不在了。<br />
相濡以沫，不如相忘于江湖。<br />
<br />
<br />
牙拔掉了，病也除了。<br />
把钱付给人家，人家还把你身体的一部分拿走了，你还得遭受疼痛。<br />
不禁让人感叹，人活着真贱啊。<br />
更贱的是，我居然后来想到，如果当时不打麻药，就能体会下肉体的疼痛能有多深了，会不会比心痛更痛。<br />
看来生病前后人的思维果然是不正常的。<br />
幸运的是，牙病能靠花钱治好。<br />
不幸的是，花钱只能治好牙病。<br />
<br />]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100d7pn.html#comment</comments>
            <pubDate>Fri, 29 May 2009 23:01:10 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100d7pn.html</guid>
        </item>
        <item>
            <title>自是人生长恨水长东</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100cz4i.html</link>
            <description><![CDATA[<span STYLE="font-style: italic;">弃我去者，昨日之日不可留；</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">乱我心者，今日之日多烦忧。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">长风万里送秋雁，对此可以酣高楼。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">蓬莱文章建安骨，中间小谢又清发。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">俱怀逸兴壮思飞，欲上青天揽明月。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">抽刀断水水更流，举杯销愁愁更愁。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">人生在世不称意，明朝散发弄扁舟。</SPAN><br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
── 宣州谢朓楼饯别校书叔云·李白<br />
<br />
<br />
我住长江头，君住长江尾。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">日日思君不见君，共饮长江水。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">此水几时休，此恨何时已。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">只愿君心似我心，定不负相思意。</SPAN><br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
── 卜算子·李之仪</SPAN><br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">无言独上西楼，月如钩，寂寞梧桐，深院锁清秋。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">剪不断，理还乱，是离愁，别是一般滋味在心头。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
── 相见欢·李煜</SPAN><br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">林花谢了春红，太匆匆，无奈朝来寒雨晚来风。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">胭脂泪，相留醉，几时重？自是人生长恨水长东！</SPAN><br STYLE="font-style: italic;" />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
── 相见欢·李煜</SPAN><br />
<br />
<br />
花已谢，人如常。不在身边，却无法忘记你脸庞。<br />
梦醒时，已断肠。刻骨相思如何忘？仅余黯然神伤。<br />]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100cz4i.html#comment</comments>
            <pubDate>Sun, 10 May 2009 00:00:00 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100cz4i.html</guid>
        </item>
        <item>
            <title>非不愿也，实不敢也</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100cxm8.html</link>
            <description><![CDATA[这个世界上有很多我们想做而未做的事情。<br />
每件事情都有很多不能去做的理由。<br />
这些理由归根到底只有一个，<br />
害怕。<br />
<br />
司马宣王怕空城中不知有无的伏兵，故只能在城下听完诸葛武侯一曲后，仓皇离去。<br />
卓一航怕师门和自己的声誉受辱，于是深爱的人一夜青丝成雪，情未断而缘已绝，抱恨终生。<br />
<br />
想说爱而怕被拒绝，于是心上人终为他人妇。<br />
想说能而怕失败，于是机会从指间轻轻滑过。<br />
<br />
想买房怕跌价<br />
想炒股怕被套<br />
想创业怕破产<br />
想结婚怕离婚<br />
想生孩子怕养不起<br />
想辞职怕找不到更好的工作<br />
想说分手怕找不到更好的爱人<br />
<br />
非不愿也，实不敢也。<br />
<br />
项羽破釜沉舟，终大破秦军于巨鹿。<br />
杨过跳下绝情谷，方能与小龙女十六年后重会。<br />
<br />
<br />]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100cxm8.html#comment</comments>
            <pubDate>Fri, 08 May 2009 00:00:00 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100cxm8.html</guid>
        </item>
        <item>
            <title>月华罗</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100cv36.html</link>
            <description><![CDATA[蔚蓝的天<br />
碧蓝的海<br />
被海天映成一色的沙<br />
沙中立着一株月华罗<br />
<br />
一沙一世界，一花一天堂<br />
<br />
千万年的风雨<br />
无数个日夜<br />
天海间的无数个世界<br />
将全部的养分毫无保留的供向那株月华罗<br />
<br />
无际的沙漠中<br />
万物皆已寂灭<br />
只余一株月华罗<br />
<br />
天蓝依旧<br />
海蓝依旧<br />
海天间的沙色依旧<br />
紧紧的拥着那株月华罗<br />
<br />
白天绿如宝石<br />
夜间璨如月光<br />
绽放时，如在天堂]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100cv36.html#comment</comments>
            <pubDate>Sat, 02 May 2009 21:27:11 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100cv36.html</guid>
        </item>
        <item>
            <title>无情不似多情苦</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100co80.html</link>
            <description><![CDATA[<span STYLE="font-style: italic;">无情不似多情苦，一寸还成千万缕。天涯地角有穷时，只有相思无尽处。</SPAN><br />
<br />
人生有时，却真像个笑话。<br />
明明无情，偏装作有情，明明有情，却故作无情。<br />
故作有情者损人利己，假作无情者伤己为人。<br />
<br />
<br />
<span STYLE="font-style: italic;">人生若只如初见，何事秋风悲画扇。</SPAN><br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">等闲变却故人心，却道故人心易变。</SPAN><br />
<br />
你已等他千年。<br />
千年间我陪你走过，<br />
却只为送你到他身边。<br />
<br />
<br STYLE="font-style: italic;" />
<span STYLE="font-style: italic;">鱼，我所欲也,熊掌,亦我所欲也；二者不可得兼，舍鱼而取熊掌者也。</SPAN><br />
<br />
然，临渊结网而渔易，入山觅熊而猎难。 易得之鱼，难求之熊掌，舍鱼而取熊掌？<br />
得鱼而食之，伤于其骨，方知熊掌之善，不光在其味。<br />
熊掌尚在？但愿未晚。<br />
<br />
<br />]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100co80.html#comment</comments>
            <pubDate>Sun, 19 Apr 2009 23:48:37 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100co80.html</guid>
        </item>
        <item>
            <title>别殇</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100c612.html</link>
            <description><![CDATA[梵音自收音机中响起，穿过缭绕的檀香和纸钱燃出的烟雾，荡向远方。<br />
<br />
旧时的景象从回忆深处，从他人的话语，从泛黄的照片，从各个地方涌到眼前，又渐渐散去，化作纷纷碎片，又汇作缕缕思念，纳入缥缈间，萦绕不褪。<br />

<br />
思念向远方无尽的蔓延，天人两隔，距离却总是比思念更远一点。<br />
<br />
虽早已有心里准备，虽也欣慰逝者离去的并不痛苦，虽已明了于生者逝者都是解脱，但是挡得住哀伤，却挡不住想念的悄悄流淌。<br />
<br />
不同于对情人的思念是甜蜜的煎熬，心痛的企盼；对故人的思念，是眉间挤过一道愁纹，心里划过一片苍凉。<br />
<br />
逝者已矣，后会无期。]]></description>
            <author>蓝沙</author>
            <category>随笔</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100c612.html#comment</comments>
            <pubDate>Thu, 05 Mar 2009 17:49:22 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100c612.html</guid>
        </item>
        <item>
            <title>虎威（三）</title>
            <link>http://blog.sina.com.cn/s/blog_540b0e580100bsor.html</link>
            <description><![CDATA[<div STYLE="text-align: left;">“刘封，孟达听令。”</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">
刘备的思绪被施令声从回忆中拉了回来时，眼前两员武将不知何时已立在下首。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">
“你二人率一军出米仓山前往曹军北山粮营，”一文士轻摇手中羽扇，“若曹军尚在营中则前往汉水听黄老将军和赵将军调遣。若曹军已不在，则占寨烧营后，等候接应。”</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">“得令。”二将领令而去。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">文士转向刘备，施礼道：“亮当随主公随后前往汉水。”</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">北山。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">远处尘埃渐起，一支军队的身影越来越清晰。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
三千步卒，一骑白马。马上的武将握着一支长枪，银甲似炼，白衣如洗。<br />
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">
军队将至山口时，白马开始加速，向北山山口骋去，如白云袭过。云端处，闪出一缕乌金色的光芒。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">&nbsp;<br /></DIV>
<div STYLE="text-align: left;">山口处忽地转出一股曹军拦住了去路。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">曹公用兵果然周密，白衣武将心念一闪，马速却未减。</DIV>
<div STYLE="text-align: left;"><br />
<br />
慕容烈奉命在山口拦截蜀军已经等了很久了，此时终于看到了蜀军的身影，不由得兴奋异常。又见蜀军当先的只有一人，更加感叹这是上天送来的功劳，急忙拍马舞刀率众来迎。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">苦候半日的一战，才方开始，便已结束。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">两马相交间，白衣武将随手一枪，慕容烈应枪落马。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">
白马的去势没有丝毫停顿，穿过了败乱的慕容烈的部下，遇上了焦炳所率的另一支拦路的曹军。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">“蜀兵何在？”白衣武将喝问。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">“杀光了。”焦炳答道。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
<div STYLE="text-align: left;">“找死。”张口间，枪芒已起，声毕时，焦炳落地。<br />
<br />
战场上又多了一支溃败的曹军。</DIV>
<div STYLE="text-align: left;">&nbsp;</DIV>
白马穿过了山口向曹营奔去。身后，三千蜀军正在掩杀驱赶败走的曹军。<br />
<br />
<br />
<br />
日已当午。<br />
<div STYLE="text-align: left;"><br />
曹阵中，老将仍在奋力挥刀，只是体力却越来越不支，身边的军士也越来越少。蜀兵眼中的战意渐渐散没，涌上而代之的是绝望和对死亡的恐惧。<br />

<br />
老将低头看着自己缩成一团的影子，心念道，约定午时发援兵，此时援兵纵发也已来不及了，想来此处便是我的毙命之处，我黄忠戎马一生，刀下也曾斩得名将之首，虽死无憾矣。<br />

<br />
黄忠正叹时，山口处曹军乱声响起，一袭白影由远渐近。<br />
<br />
看到来人的身影慢慢清晰，黄忠的精神也慢慢振奋起来。<br />
<br />
“赵将军来救我们了，”苍老的声音在蜀阵中响起，“奋力一搏，当有生机！”<br /></DIV>
<br />
“吼！”剩下的蜀兵齐声呐喊，士气顿升。<br />
<br />
<br />
<br />
白马终到了曹阵前。马上的武将长枪一挺，踏入了茫茫的曹军中。乌金色的枪芒再次在曹阵中绽开。<br />
<br />
金光点点，如梨花凌落；枪影重重，似飞絮纷扬；花开处，猛将落马；絮散时，勇士授魂。<br />
<br />
涯角枪锋到处，非死即伤。白马左冲右突，如入无人之境，眨眼间，曹军便被冲出一个缺口。<br />
<br />
那一袭白衣如雪，寒了曹军的意，暖了蜀军的心。转乾坤，挽狂澜，不过一人。<br />
<br />
<br />
张郃认清来将，惧意已生。他想起了十七年前的穰山，想起了十年前的长坂，踌躇片刻，终究未敢向前迎战。<br />
<br />
徐晃看到白衣武将冲入阵中，救出黄忠，向山口撤去，提斧便欲前去拦敌。正抬头间，他看到了张郃望着他，凝重的微微摇了摇头。徐晃略一沉吟，便明白了张郃的意思，张郃的武艺不逊于自己，他面对白衣武将时不敢迎战，此时又加上一个黄忠，自己更讨不得好。于是徐晃转而去收拢乱军。<br />

<br />
主将不敢上前，何况兵士。白衣武将与黄忠且战且走，所到之处，无人敢阻。<br />
<br />
<br />
山顶的老人终坐不住了。<br />
<br />
“此乃何人？”<br />
<br />
“回丞相，乃常山赵子龙也”，身旁识得白衣武将的人答道。<br />
<br />
“昔日长坂英雄尚在啊！”老人叹道。<br />
<br />
<br />
赵云与黄忠杀出重围，便撤向蜀寨，忽有军士指着东南方另一处曹军道：“此处被围的定是黄老将军的副将张著。”<br />
<br />
“老将军请率队先回，云去去就来。”<br />
<br />
<br />
于是山顶处的老人又看到一匹白马冲向东南方，自己的军队未曾交战便四散败逃，另一支被围的蜀军也被救了出来。<br />
<br />
老人心中火起，“传令，全军追击赵云。”<br />
<br />
<br />
大部队的曹军赶到蜀军汉水大营前时，迎接他们的是敞开的寨门，和寨前的匹马单枪。<br />
<br />
没有紧闭的寨门和严密的守军，放眼望去，不见一个兵卒，也不见一面旌旗，仿佛空营。<br />
<br />
还是那匹白马，还是那杆长枪，还是那骑马持枪的人。赵云就那样慵懒的骑在马上，涯角枪随意的拎在手中，白马温顺的垂着头站在门口，好像面前的大军是自家的运粮队而不是要杀个你死我活的敌人。<br />

<br />
<br />
当诸葛武侯的空城计在后世被百般传颂时，却少有人知道在武侯之前，赵云早先摆过了空营计。不过与武侯不同的是，武侯摆空城时无兵无将，以虚作实是迫于无奈。
而赵云此刻有兵有将，却将兵将尽数伏在营外，摆出一付我家大门常打开，开放怀抱等你的样子。若曹军此时冲营，说不定就能一口气将蜀营占领了，而赵云也会处在一个十分危险的位置。可是赵云还是这样做了，把军士埋伏在了营外，自己独自站在空营前，也许真如他设计时对手下讲的，“当年在长坂坡，我单枪匹马，视曹操八十三万大军如草芥，如今有兵有将，又有何惧？”<br />

<br />
<br />
当张郃和徐晃领着曹军率先赶到蜀军营前时，也愣住了。他们看着那空空如也的蜀营和营前那唇边浅笑眉上轻愁的武将，犹豫难决。还好没多久曹操便到了，他俩不用再犹豫了。<br />

<br />
曹操看着眼前的景象，略一沉吟，便下令全军出击。确实，赵云虽武艺高强，在乱阵中可来去自如，可是面对部队的正面冲锋，就算是楚霸王复生也未必能挡得住。只要部队突破了赵云进入了蜀营，蜀兵即便有埋伏，这大营总是保不住了。<br />

<br />
曹军向蜀营发起了冲锋。<br />
<br />
赵云还是那样站在营前，没有后退，也没有前进，直到曹军冲到他身前二十步时。<br />
<br />
手中涯角枪募的一震，赵云眼中精茫陡增，之前的怠意一扫而光。<br />
<br />
<br />
曹操算对了军势，却算错了军心。曹军中的老兵老将经历过当年长坂坡一役的遇上赵云便已胆战心惊，而不知赵云之勇的新兵则被同伴趁机嘲笑并灌输了一遍长坂的故事。旧时的长坂的传说加上之前的单骑闯阵斩将救人的神威，于是赵云只是抖了抖枪，瞪了瞪眼，曹军的冲锋之势便变缓了。<br />

<br />
没有人不爱惜自己的性命。从士兵到将领，每一个人无不小心谨慎。他们明白，即便己方有千军万马，对面只是孤身一人，可如果赵云的目标是自己，自己恐怕还是挡不住他的一枪。<br />

<br />
所以赵云的枪一动，曹军的心也跟着一动。赵云的枪从地面指向曹军时，曹军将士的心也跟着提了起来。看到枪尖没指向自己的暗中松了口气，在枪锋笼罩范围内的打点起了十二分精神以防那不知何时会刺出的一缕乌茫。所以曹军冲锋的速度慢了。<br />

<br />
<br />
曹军缓下来的同时，蜀营前的战壕内，万箭齐发。<br />
<br />
<br />
附录：<br />
<a HREF="http://blog.sina.com.cn/s/blog_540b0e580100aj58.html" TARGET="_blank">虎威（一）</A><br />
<a HREF="http://blog.sina.com.cn/s/blog_540b0e580100ayy7.html" TARGET="_blank">虎威（二）</A><br />]]></description>
            <author>蓝沙</author>
            <category>陋文</category>
            <comments>http://blog.sina.com.cn/s/blog_540b0e580100bsor.html#comment</comments>
            <pubDate>Wed, 21 Jan 2009 03:17:16 +0800</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_540b0e580100bsor.html</guid>
        </item>
    </channel>
</rss>

