<?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/jingleq</link>
        <lastBuildDate>Thu, 31 Dec 2009 09:32:49 GMT+8</lastBuildDate>
        <generator>FEEDCREATOR_VERSION</generator>
        <language>zh-cn</language>
        <copyright>Copyright 1996 - 2009 SINA Inc. All Rights Reserved.</copyright>
        <pubDate>Thu, 31 Dec 2009 01:32:49 GMT+8</pubDate>
        <item>
            <title>博客搬迁声明</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008is.html</link>
            <description><![CDATA[<DIV>
从二00七年六月四日起，停止对雪湖小札新浪博客的维护。雪湖小札已经搬家到速度更为好的百度博客。</DIV>
<DIV>如有连接到本博客的请做相应修改。谢谢!</DIV>
<DIV>新博客地址为 <FONT FACE="宋体">http://hi.baidu.com/jingleq</FONT></DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008is.html#comment</comments>
            <pubDate>Mon, 04 Jun 2007 13:01:12 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008is.html</guid>
        </item>
        <item>
            <title>java正则表达式效率</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008ig.html</link>
            <description><![CDATA[<DIV>
　　对于正则表达式的使用效率问题，我在网上看到的有两种截然不同的结果，到底它的效率如何，今天我用java来做了个则试。</DIV>
<DIV>
<DIV>
　　解决的问题很简单，从一个字符串中把用正则表达式如<FONT FACE="宋体">href="[^\"]*"的字符串保存到一个list中去。先构造一个长字符串，再进行匹配操作。</FONT></DIV>
<DIV>测试代码如下：</DIV>
<DIV>
<P><FONT FACE="宋体">import java.util.LinkedList;<br/>
import java.util.List;<br/>
import java.util.regex.Matcher;<br/>
import java.util.regex.Pattern;</FONT></P>
<P><FONT FACE="宋体">public class Reg {</FONT></P>
<P><FONT FACE="宋体">&nbsp;public String content =
"";</FONT></P>
<P><FONT FACE="宋体">&nbsp;public List userRegList =
new LinkedList();<br/>
&nbsp;public List userCommonList = new
LinkedList();<br/>
&nbsp;public List userOneToOneList = new
LinkedList();</FONT></P>
<P>&nbsp;//传入的参数为构造的字符串长度</P>
<P><FONT FACE="宋体">&nbsp;public void initContent(int
count) {</FONT></P>
<P><FONT FACE="宋体">&nbsp;
//选用StringBuffer，可以选用String一试，体现双方拼接字符串的效率差异<br/>

&nbsp;&nbsp;StringBuffer sb = new
StringBuffer();<br/>
&nbsp;&nbsp;for (int i = 0; i &lt; count /
20; i++) {</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;&nbsp;//为了简化，统一用一小段来循环<br/>

&nbsp;&nbsp;&nbsp;sb.append("abc
href=\"abcd\"abce");<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;this.content =
sb.toString();<br/>
&nbsp;}</FONT></P>
<P>&nbsp;//使用正则表达式方式</P>
<P><FONT FACE="宋体">&nbsp;public void useRegCode()
{<br/>
&nbsp;&nbsp;Pattern p =
Pattern.compile("href=\"[^\"]*\"", Pattern.CANON_EQ);<br/>
&nbsp;&nbsp;Matcher match =
p.matcher(this.content);<br/>
&nbsp;&nbsp;while (match.find()) {<br/>
&nbsp;&nbsp;&nbsp;userRegList.add(match.group(0));<br/>

&nbsp;&nbsp;}<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;//
主要使用字符串中提供的find函数来实现<br/>
&nbsp;public void useCommonCode() {<br/>
&nbsp;&nbsp;int i = 0;<br/>
&nbsp;&nbsp;int index = 0;<br/>
&nbsp;&nbsp;while ((index =
content.indexOf("href=\"", i)) != -1) {<br/>
&nbsp;&nbsp;&nbsp;int endIndex
= content.indexOf("\"", index + 6);<br/>
&nbsp;&nbsp;&nbsp;i = endIndex
+ 1;<br/>
&nbsp;&nbsp;&nbsp;userCommonList.add(content.substring(index,
endIndex + 1));<br/>
&nbsp;&nbsp;}<br/>
&nbsp;}</FONT></P>
<P>&nbsp;//　一个一个字符地去遍历判断</P>
<P><FONT FACE="宋体">&nbsp;public void
useOneToOneCode() {<br/>
&nbsp;&nbsp;int length =
content.length();<br/>
&nbsp;&nbsp;for (int i = 0; i &lt; length;
i++) {</FONT></P>
<P><FONT FACE="宋体">　
//这里的实现有点依赖了目标的头字符了，为了简单忽略<br/>
&nbsp;&nbsp;&nbsp;if
(content.charAt(i) == 'h' &amp;&amp; i + 5 &lt; length<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;
content.substring(i, i + 5).equals("href=")) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;int
j = i + 6;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;boolean
match = false;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;for
(; j &lt; length; j++) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if
(content.charAt(j) == '\"') {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match
= true;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>

&nbsp;&nbsp;&nbsp;&nbsp;}<br/>

&nbsp;&nbsp;&nbsp;&nbsp;j++;<br/>

&nbsp;&nbsp;&nbsp;&nbsp;if
(match) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userOneToOneList.add(content.substring(i,
j));<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>

&nbsp;&nbsp;&nbsp;&nbsp;i
= j;<br/>
&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
&nbsp;}</FONT></P>
<P>&nbsp;</P>
<P>
&nbsp;//消耗时间记录，为了避免前后程序的干扰，在具体测试中，一个一个来测试记录时间</P>
<P><FONT FACE="宋体">&nbsp;public static void
main(String[] args) {</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;Reg r =
new Reg();<br/>
&nbsp;&nbsp;r.initContent(8000000);</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;//
使用OneToOne<br/>
&nbsp;&nbsp;long t5 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;r.useOneToOneCode();<br/>
&nbsp;&nbsp;long t6 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;System.out.println("你的程序运行了:"
+ (int) ((t6 - t5) / 1000) + "秒"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;+
((t6 - t5) % 1000) + "毫秒");<br/>
&nbsp;&nbsp;<br/>
&nbsp;&nbsp;// 使用正则表达式<br/>
&nbsp;&nbsp;long t3 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;r.useRegCode();<br/>
&nbsp;&nbsp;long t4 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;System.out.println("你的程序运行了:"
+ (int) ((t4 - t3) / 1000) + "秒"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;+
((t4 - t3) % 1000) + "毫秒");<br/>
&nbsp;&nbsp;<br/>
&nbsp;&nbsp;// 使用find<br/>
&nbsp;&nbsp;long t1 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;r.useCommonCode();<br/>
&nbsp;&nbsp;long t2 =
System.currentTimeMillis();<br/>
&nbsp;&nbsp;System.out.println("你的程序运行了:"
+ (int) ((t2 - t1) / 1000) + "秒"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;+
((t2 - t1) % 1000) + "毫秒");<br/>
&nbsp;}</FONT></P>
<P>}</P>
<P>
　　测试过程中，每种方式单独运行，数据量为8000000字符，数据如下，纵坐标单位为毫秒，横坐标单位为次，如图1.1</P>
<P ALIGN="center"><A HREF="http://album.sina.com.cn/pic/49237ee302000uw7" TARGET="_blank"><IMG SRC="http://album.sina.com.cn/pic_3/49237ee302000uw7" BORDER="0"></A></P>
<P ALIGN="center">图1.1</P>
<P>
　　当数据量小的时候如800字符到8个字符，使用正则表达式大约需25毫秒(猜想，所用时间消耗在正则式的解释中)，而其它两种方式不足1毫秒，若数据量为80000字符，使用正则表达式大约需45毫秒，而其它两种方式大约为14毫秒。</P>
<P>
　　通过这次测试，正则表达式在开发coding中，阅读和防止出bug上有很大好处，但是其性能依然值得注意。</P>
<P>&nbsp;</P>
</DIV>
</DIV>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008ig.html#comment</comments>
            <pubDate>Mon, 04 Jun 2007 04:41:38 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008ig.html</guid>
        </item>
        <item>
            <title>asm学习(4)--Tree API</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008gw.html</link>
            <description><![CDATA[<P><FONT FACE="宋体">&nbsp;
asm文档阅读已快到尾声，最后一章已到Tree API的使用，Tree
API就是针对Class,Method,Field等其它同级的属性进行了一个类包装，可以让我们用面向对像的形式来操作字节码，但也不要负于太高的期望，要操作字节码还真得弄懂了才能下手，Tree
API带给我们的只是代码量的减少。Tree
API是通过实现ClassVisitor接口而实现的，从另外一个角度来说就是给我们又封装了一层ClassVisitor,让我们开发便利点。<br/>

&nbsp; 同样，我们可以用它来实现AOP。</FONT></P>
<P><FONT FACE="宋体">&nbsp; ClassWriter cw = new
ClassWriter(0);<br/>
&nbsp; ClassNode classNode = new ClassNode();<br/>
&nbsp; classNode.fields.add(new FieldNode(ACC_PUBLIC,
"count", "I", null,<br/>
&nbsp;&nbsp;&nbsp; new
Integer(0)));<br/>
&nbsp; ClassReader cr = new
ClassReader("com.c2.asm.B");<br/>
&nbsp;
//注意classReader.accept的位置，必须为在填充了Node信息之前，如之后就得不到本来类中的信息。<br/>

&nbsp; cr.accept(classNode, 0);<br/>
&nbsp; List methods = classNode.methods;<br/>
&nbsp; for (MethodNode mn : (List&lt;MethodNode&gt;)
methods) {<br/>
&nbsp;&nbsp; InsnList insns =
mn.instructions;<br/>
&nbsp;&nbsp; Iterator j =
insns.iterator();<br/>
&nbsp;&nbsp; while (j.hasNext()) {<br/>
&nbsp;&nbsp;&nbsp;
AbstractInsnNode in = (AbstractInsnNode) j.next();<br/>
&nbsp;&nbsp;&nbsp; int op =
in.getOpcode();<br/>
&nbsp;&nbsp;&nbsp;
//捕捉到结尾处<br/>
&nbsp;&nbsp;&nbsp; if ((op
&gt;= IRETURN &amp;&amp; op &lt;= RETURN) || op == ATHROW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;
InsnList il = new InsnList();<br/>
&nbsp;&nbsp;&nbsp;&nbsp;
il.add(new InsnNode(ICONST_3));<br/>
&nbsp;&nbsp;&nbsp;&nbsp;
il.add(new VarInsnNode(ISTORE,3));<br/>
&nbsp;&nbsp;&nbsp;&nbsp;
//在这里可以控制在什么地方插入新代码<br/>
&nbsp;&nbsp;&nbsp;&nbsp;
insns.insert(in.getPrevious(),il);<br/>
&nbsp;&nbsp;&nbsp; }<br/>
&nbsp;&nbsp; }<br/>
&nbsp;&nbsp; InsnList il = new
InsnList();<br/>
&nbsp;&nbsp; il.add(new
InsnNode(ICONST_4));<br/>
&nbsp;&nbsp; il.add(new
VarInsnNode(ISTORE,4));<br/>
&nbsp;&nbsp; insns.insert(il);<br/>
&nbsp;&nbsp;
//同样，Stack和Locals瞎写的,猜得差不多吧<br/>
&nbsp;&nbsp; mn.maxStack += 3;<br/>
&nbsp;&nbsp; mn.maxLocals += 4;<br/>
&nbsp; }<br/>
&nbsp;
//注意classNode.accept的位置，必须为在填充了Node信息之后<br/>
&nbsp; classNode.accept(cw);</FONT></P>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008gw.html#comment</comments>
            <pubDate>Thu, 31 May 2007 06:09:10 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008gw.html</guid>
        </item>
        <item>
            <title>asm学习(3)--visitor模式</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008gg.html</link>
            <description><![CDATA[<DIV>&nbsp;
Visitor访问者模式作用于某个对象的操作，它可以使你在不改变这些对象本身的情况下，定义作用于这些对象的新操作。</DIV>
<DIV>&nbsp;
在asm中，ClassReader对象可以接受一个实现ClassVisitor接口的对象来进行对读入的Class的访问与控制。</DIV>
<DIV>&nbsp;
其中，如asm文档展示了一个很简单的<FONT FACE="宋体">ClassPrinter类，用来打印类相关信息。</FONT></DIV>
<DIV><FONT FACE="宋体">&nbsp; ClassPrinter cp = new
ClassPrinter();<br/>
&nbsp; ClassReader cr = new
ClassReader("java.lang.Runnable");<br/>
&nbsp; cr.accept(cp, 0);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; ClassPrinter实现了ClassVisitor接口</DIV>
<DIV>
<P><FONT FACE="宋体"><FONT FACE="宋体">public class ClassPrinter
implements ClassVisitor {<br/>
&nbsp;public void visit(int version, int access, String
name, String signature,<br/>
&nbsp;&nbsp;&nbsp;String
superName, String[] interfaces) {<br/>
&nbsp;&nbsp;System.out.println(name + "
extends " + superName + " {");<br/>
&nbsp;}</FONT></FONT></P>
<P><FONT FACE="宋体">&nbsp;public void
visitSource(String source, String debug) {<br/>
&nbsp;&nbsp;System.out.println("[" + source
+ "]");<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public void
visitOuterClass(String owner, String name, String desc) {<br/>
&nbsp;&nbsp;System.out.println("[outerClass]"
+ owner + " " + name + " " + desc);<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public AnnotationVisitor
visitAnnotation(String desc, boolean visible) {<br/>
&nbsp;&nbsp;return null;<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public void
visitAttribute(Attribute attr) {<br/>
&nbsp;&nbsp;System.out.println("[Attribute]"
+ attr);<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public void
visitInnerClass(String name, String outerName,<br/>
&nbsp;&nbsp;&nbsp;String
innerName, int access) {<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public FieldVisitor
visitField(int access, String name, String desc,<br/>
&nbsp;&nbsp;&nbsp;String
signature, Object value) {<br/>
&nbsp;&nbsp;System.out.println(" " + desc +
" " + name);<br/>
&nbsp;&nbsp;return null;<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public MethodVisitor
visitMethod(int access, String name, String desc,<br/>
&nbsp;&nbsp;&nbsp;String
signature, String[] exceptions) {<br/>
&nbsp;&nbsp;System.out.println(" " + name +
desc);<br/>
&nbsp;&nbsp;return null;<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public void visitEnd()
{<br/>
&nbsp;&nbsp;System.out.println("}");<br/>
&nbsp;}<br/>
}</FONT></P>
<P>&nbsp;</P>
<P>&nbsp;
对于ClassVisitor接口，asm在其之上提供了一个适配器的功能。<FONT FACE="宋体">ClassAdapter用来对ClassReader和ClassWriter中间的适配工作。ClassAdapter实现了ClassVisitor接口，是一个具体类。</FONT></P>
<P>&nbsp;
我们可以继承于ClassAdapter类来实现我们的逻辑。</P>
<P>&nbsp;
ClassAdatper作为具体类的好处是我们只需要重写我们关心的东西。使用ClassAdapter我们可以在字节码级别更改我们的类，一个应用就是实现我们的AOP。</P>
<P>&nbsp;</P>
<P>这是我们的目标类</P>
<P><FONT FACE="宋体">package com.c2.asm;</FONT></P>
<P><FONT FACE="宋体">public class B {<br/>
&nbsp;public int number = 20;</FONT></P>
<P><FONT FACE="宋体">&nbsp;public int getNumber()
{<br/>
&nbsp;&nbsp;System.out.println("class B
logic");<br/>
&nbsp;&nbsp;return number;<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public static void
main(String[] args) {<br/>
&nbsp;&nbsp;B b = new B();<br/>
&nbsp;&nbsp;System.out.println(b.getNumber());<br/>

&nbsp;}<br/>
}</FONT></P>
<P>&nbsp;
我们的任务是对getNumber()方法的更改，在打印"class B
logic"之前实现使number的值由原来的20增加到23，在打印"class B
logic"之后实现打印"after"语句。</P>
<P>&nbsp;&nbsp; 设计类<FONT FACE="宋体">AopExampleAdapter，当中使用到了AopMethodAdapter来实施主要改写逻辑。</FONT></P>
<P><FONT FACE="宋体">class AopMethodAdapter extends MethodAdapter
implements Opcodes {<br/>
&nbsp;public AopMethodAdapter(MethodVisitor mv) {<br/>
&nbsp;&nbsp;super(mv);<br/>
&nbsp;}</FONT></P>
<P>&nbsp;// 执行方法之前</P>
<P><FONT FACE="宋体">&nbsp;@Override<br/>
&nbsp;public void visitCode() {<br/>
&nbsp;&nbsp;mv.visitVarInsn(ALOAD,
0);<br/>
&nbsp;&nbsp;mv.visitInsn(DUP);<br/>
&nbsp;&nbsp;mv.visitFieldInsn(GETFIELD,
"com/c2/asm/B", "number", "I");<br/>
&nbsp;&nbsp;mv.visitInsn(ICONST_3);<br/>
&nbsp;&nbsp;mv.visitInsn(IADD);<br/>
&nbsp;&nbsp;mv.visitFieldInsn(PUTFIELD,
"com/c2/asm/B", "number", "I");<br/>
&nbsp;}</FONT></P>
<P>&nbsp;//执行方法之后</P>
<P><FONT FACE="宋体">&nbsp;@Override<br/>
&nbsp;public void visitInsn(int opcode) {</FONT></P>
<P><FONT FACE="宋体"><FONT FACE="宋体">&nbsp; if
((opcode &gt;= IRETURN &amp;&amp; opcode &lt;= RETURN) || opcode ==
ATHROW) {</FONT><br/>
&nbsp;&nbsp;mv.visitFieldInsn(GETSTATIC,
"java/lang/System", "out",<br/>
&nbsp;&nbsp;&nbsp;&nbsp;"Ljava/io/PrintStream;");<br/>

&nbsp;&nbsp;mv.visitLdcInsn("after");<br/>
&nbsp;&nbsp;// invokes the 'println' method
(defined in the PrintStream class)<br/>
&nbsp;&nbsp;mv.visitMethodInsn(INVOKEVIRTUAL,
"java/io/PrintStream", "println",<br/>
&nbsp;&nbsp;&nbsp;&nbsp;"(Ljava/lang/String;)V");</FONT></P>
<P><FONT FACE="宋体">&nbsp; }<br/>
&nbsp;&nbsp;mv.visitInsn(opcode);<br/>
&nbsp;}</FONT></P>
<P>
&nbsp;//修改类中使用到的stack和locals大小，我没仔细算过
+2,+3都瞎写的</P>
<P><FONT FACE="宋体">&nbsp;@Override<br/>
&nbsp;public void visitMaxs(int maxStack, int
maxLocals) {<br/>
&nbsp;&nbsp;mv.visitMaxs(maxStack + 2,
maxLocals + 3);<br/>
&nbsp;}<br/>
}</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">public class AopExampleAdapter extends
ClassAdapter implements Opcodes {<br/>
&nbsp;<br/>
&nbsp;public AopExampleAdapter(ClassVisitor cv) {<br/>
&nbsp;&nbsp;super(cv);<br/>
&nbsp;}</FONT></P>
<P><FONT FACE="宋体">&nbsp;public MethodVisitor
visitMethod(int access, String name, String desc,<br/>
&nbsp;&nbsp;&nbsp;String
signature, String[] exceptions) {<br/>
&nbsp;&nbsp;MethodVisitor mv;<br/>
&nbsp;&nbsp;mv = cv.visitMethod(access,
name, desc, signature, exceptions);</FONT></P>
<P><FONT FACE="宋体">&nbsp; //
当匹配到getNumber方法后进行对方法修改<br/>
&nbsp;&nbsp;if (mv != null &amp;&amp;
name.equals("getNumber")) {<br/>
&nbsp;&nbsp;&nbsp;mv = new
AopMethodAdapter(mv);<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;return mv;<br/>
&nbsp;}<br/>
}</FONT></P>
<P>&nbsp;
使用AopMethodAdapter如ClassVisitor方法一样，因为AopMethodAdapter是基于ClassVisitor来实现的。</P>
</DIV>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008gg.html#comment</comments>
            <pubDate>Thu, 31 May 2007 00:44:23 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008gg.html</guid>
        </item>
        <item>
            <title>asm学习(2)--运算与逻辑</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008fr.html</link>
            <description><![CDATA[<DIV>&nbsp;
想通过asm的代码生成来写.class文件至少得了解下面的东西。</DIV>
<DIV>
&nbsp;&nbsp;1.ICONST_x相当于常量，前面的I是指int型，还有其它型的CONST,这个量为比如ICONST_1就是指1，对于后面不同的操作，它会再指定实际的类型。使用visitInsn(ICONST_1)就是说定义了一个为1的临时量压到栈里面，但不会定义一个变量。-1&lt;=ICONST&lt;=5;如果要定义大点的数就使用<FONT FACE="宋体">visitVarInsn(BIPUSH,
10)</FONT></DIV>
<DIV>&nbsp;
2.ISTORE是把栈顶的临时量保存成变量如<FONT FACE="宋体">visitVarInsn(ISTORE,
1)保存在位置1,如果想把变量值拿出来用如下进行，把位置1的值拿出来放到栈顶<FONT FACE="宋体">visitVarInsn(ILOAD,
1);</FONT></FONT></DIV>
<DIV>&nbsp; 3.<FONT FACE="宋体"><FONT FACE="宋体">visitIincInsn(1,
1);</FONT>对位置是1的变量进行自增，自增幅度为后面参数所定义的1。</FONT></DIV>
<DIV>&nbsp;
4.对于栈的操作还有DUP,POP,SWAP等命令。需要理解栈的存取。</DIV>
<DIV>&nbsp;
5.for循环例子代码，使用了两个label来完成，开始初学对字节码不明白，所以先从.class文件反译成字节码来进行。相当于实现：</DIV>
<DIV>&nbsp; -----------------------------</DIV>
<DIV>&nbsp;&nbsp;<FONT FACE="宋体">for(int
i = 1; i &gt;= 10;) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte
byte0 = 2;<br/>
&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp; -----------------------------</DIV>
<DIV>
<P><FONT FACE="宋体">&nbsp;&nbsp;Label
forLabel = new Label();<br/>
&nbsp;&nbsp;Label endLabel = new
Label();</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitInsn(ICONST_1);<br/>

&nbsp;&nbsp;mw.visitVarInsn(ISTORE,
1);</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitLabel(forLabel);<br/>

&nbsp;&nbsp;mw.visitVarInsn(ILOAD,
1);<br/>
&nbsp;&nbsp;mw.visitVarInsn(BIPUSH,
10);<br/>
&nbsp;&nbsp;mw.visitJumpInsn(IF_ICMPLT,
endLabel);<br/>
&nbsp;&nbsp;mw.visitIincInsn(1,
1);//&nbsp;++操作<br/>
&nbsp;&nbsp;mw.visitInsn(ICONST_2);<br/>
&nbsp;&nbsp;mw.visitVarInsn(ISTORE, 2);
//这循环体内进做了 int c = 2的操作<br/>
&nbsp;&nbsp;mw.visitJumpInsn(GOTO,
forLabel);<br/>
&nbsp;&nbsp;mw.visitLabel(endLabel);</FONT></P>
</DIV>
<DIV>&nbsp;
5.条件语句例子：没用使用GOTO，相当于实现</DIV>
<DIV><FONT FACE="宋体">&nbsp;&nbsp;-------------------------</FONT></DIV>
<DIV><FONT FACE="宋体">&nbsp; int i = 3;<br/>
&nbsp;&nbsp;if(i &gt;= 0)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i
= 1 + i;</FONT></DIV>
<DIV>&nbsp; --------------------------</DIV>
<DIV>
<P><FONT FACE="宋体">&nbsp;&nbsp;Label
label = new Label();</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitInsn(ICONST_3);<br/>

&nbsp;&nbsp;mw.visitVarInsn(ISTORE,
1);</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitVarInsn(ILOAD,
1);<br/>
&nbsp;&nbsp;mw.visitJumpInsn(IFLT,
label);<br/>
&nbsp;&nbsp;mw.visitInsn(ICONST_1);<br/>
&nbsp;&nbsp;mw.visitIntInsn(ILOAD,
1);<br/>
&nbsp;&nbsp;mw.visitInsn(IADD);<br/>
&nbsp;&nbsp;mw.visitVarInsn(ISTORE,
1);</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitLabel(label);</FONT></P>
</DIV>
<DIV>&nbsp;</DIV>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008fr.html#comment</comments>
            <pubDate>Wed, 30 May 2007 04:41:43 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008fr.html</guid>
        </item>
        <item>
            <title>asm学习(1)--什么是asm</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008fq.html</link>
            <description><![CDATA[<DIV>&nbsp;
什么是asm呢？asm是assembly的缩写，是汇编的称号，对于java而言，asm就是字节码级别的编程。</DIV>
<DIV>&nbsp; 而这里说到的asm是指objectweb
asm,一种.class的代码生成器的开源项目。ASM是一套java字节码生成架构，它可以动态生成二进制格式的stub类或其它代理类，或者在类被java虚拟机装入内存之前，动态修改类。现在挺多流行的框架都使用到了asm.所以从aop追溯来到了这。</DIV>
<DIV>&nbsp;
想学习asm，不了解字节码是不行的，特别想开发高效的程序。</DIV>
<DIV>&nbsp; 到asm的官方网站下载asm发布版，<A HREF="http://asm.objectweb.org/">http://asm.objectweb.org/</A></DIV>
<DIV>&nbsp;
其中3.0版提供了一个HelloWorld的例子。刚下下来看，稍改动变出错，自己水平太弱了。</DIV>
<DIV>&nbsp;
现在还好看懂了不少。真的只是helloWorld，实现的只是打印出helloworld的功能。我做了改动，把println去掉了，使程序更易懂。</DIV>
<DIV>&nbsp; <FONT FACE="宋体">//&nbsp;使用ClassWriter来构建<br/>
&nbsp;&nbsp;ClassWriter cw = new
ClassWriter(0);</FONT></DIV>
<DIV><FONT FACE="宋体">&nbsp;&nbsp;//
首先当然先得给出类的信息，参数分别为
.class版本，访问控制，类名，签名(一般为null就行)，父类，接口<br/>
&nbsp;&nbsp;cw.visit(V1_1, ACC_PUBLIC,
"Example", null, "java/lang/Object", null);</FONT></DIV>
<P><FONT FACE="宋体">&nbsp;&nbsp;//&nbsp;创建构造函数<br/>

&nbsp;&nbsp;MethodVisitor mw =
cw.visitMethod(ACC_PUBLIC,"&lt;init&gt;","()V",null,null);<br/>
&nbsp;&nbsp;//&nbsp;取出栈中的变量即this<br/>

&nbsp;&nbsp;mw.visitVarInsn(ALOAD,
0);<br/>
&nbsp;&nbsp;//&nbsp;执行父类的构造函数<br/>

&nbsp;&nbsp;mw.visitMethodInsn(INVOKESPECIAL,
"java/lang/Object", "&lt;init&gt;", "()V");<br/>
&nbsp;&nbsp;mw.visitInsn(RETURN);<br/>
&nbsp;&nbsp;//&nbsp;定议了这个visiter使用了1大小的stack和1个变量</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitMaxs(1,
1);<br/>
&nbsp;&nbsp;mw.visitEnd();</FONT></P>
<P>&nbsp;</P>
<P>&nbsp; //我加进去的，是定议了一个public
int型叫number的属性</P>
<P>&nbsp; <FONT FACE="宋体">FieldVisitor fv =
cw.visitField(ACC_PUBLIC + ACC_STATIC, "number", "I", null,
0);<br/>
&nbsp;&nbsp;fv.visitEnd();</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">&nbsp;
//&nbsp;创建main方法<br/>
&nbsp;&nbsp;mw = cw.visitMethod(ACC_PUBLIC
+ ACC_STATIC, "main",<br/>
&nbsp;&nbsp;&nbsp;&nbsp;"([Ljava/lang/String;)V",
null, null);</FONT></P>
<P>&nbsp; // 空方法，不执行什么马上返回</P>
<P><FONT FACE="宋体">&nbsp;&nbsp;mw.visitInsn(RETURN);<br/>

&nbsp;&nbsp;// this code uses a maximum of
two stack elements and two local<br/>
&nbsp;&nbsp;// variables<br/>
&nbsp;&nbsp;mw.visitMaxs(1, 1);<br/>
&nbsp;&nbsp;mw.visitEnd();</FONT></P>
<P>&nbsp;</P>
<P><FONT FACE="宋体">&nbsp; byte[] code =
cw.toByteArray();</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;//把编译好的.class文件放到他对应的包里面<br/>

&nbsp;&nbsp;File dir = new
File("bin");<br/>
&nbsp;&nbsp;if (!dir.exists() ||
!dir.isDirectory()) {<br/>
&nbsp;&nbsp;&nbsp;dir.mkdir();<br/>

&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;File packDir = new
File("bin/asm");<br/>
&nbsp;&nbsp;if (!packDir.exists() ||
!packDir.isDirectory()) {<br/>
&nbsp;&nbsp;&nbsp;packDir.mkdir();<br/>

&nbsp;&nbsp;}</FONT></P>
<P>&nbsp; //写.class</P>
<P><FONT FACE="宋体">&nbsp;&nbsp;FileOutputStream fos =
new FileOutputStream("bin/asm/A.class");<br/>
&nbsp;&nbsp;fos.write(code);<br/>
&nbsp;&nbsp;fos.close();</FONT></P>
<P>&nbsp; //执行，Permissions就是这个类，<FONT FACE="宋体">extends ClassLoader implements Opcodes</FONT></P>
<P><FONT FACE="宋体">&nbsp;&nbsp;HelloWorld
loader = new HelloWorld();<br/>
&nbsp;&nbsp;Class exampleClass =
loader.defineClass("asm.A", code, 0, code.length);<br/>
&nbsp;&nbsp;exampleClass.getMethods()[0].invoke(null,
new Object[] { null });</FONT>&nbsp;</P>
<P>&nbsp;</P>
<P ALIGN="right">auth by ：csnowfox</P>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008fq.html#comment</comments>
            <pubDate>Wed, 30 May 2007 01:14:41 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008fq.html</guid>
        </item>
        <item>
            <title>asm学习(0)--java字节码工具Jasml</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008fh.html</link>
            <description><![CDATA[<DIV ALIGN="center">&nbsp;
从aop到cglib到asm跟着发现了Jasml工具，一个挺好玩的东西，可以把.class文件反编译在一种类似字节码，但比字节码好看的jasm代码。只要认识字节码便能在jasm代码中做更改，之后又通过Jasml工具编译成.class文件。</DIV>
<DIV>&nbsp;
不用小颖照样改程序，但要看你字节码功力了``提供另类代码修改。</DIV>
<DIV>&nbsp;
Jasml做的文档挺好，虽然只是英文版，一看就懂。其实也不是文档的功能，是Jasml设计得太方便了。</DIV>
<DIV>&nbsp; 谁用Jasml呢？</DIV>
<DIV>&nbsp;
如文档所说有三种人：A.研究java语言底层理论的人;B.那些想优化代码的或者想没有源码又想深入.class实现的人;C.只有.class文件想改代码的人。</DIV>
<DIV>&nbsp;
有小颖，为嘛有B,C两种人呢？我还是做A吧，呵呵``</DIV>
<DIV>&nbsp; Jasml官方主页：<A HREF="http://jasml.sourceforge.net/"><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">http://jasml.sourceforge.net/</FONT></A></DIV>
<DIV>&nbsp;</DIV>
<DIV ALIGN="right">auth by ：csnowfox</DIV>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008fh.html#comment</comments>
            <pubDate>Tue, 29 May 2007 14:07:34 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008fh.html</guid>
        </item>
        <item>
            <title>认识java[深入java虚拟机]:jvm安全管理器</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010008f7.html</link>
            <description><![CDATA[<DIV>&nbsp;
当java应用程序启动的时候，它还没有安全管理器，但是，应用程序通过将一个指向java.lang.SecurityManager或是其子类的实例给setSecurityManger(),以此来安装安全管理器，这个动作是可选的。</DIV>
<DIV>&nbsp;
在java1.2版本以前java.lang.SecurityManager是一个抽象类，而在1.2中的类java.lang.SecurityManager是一个具体的类。</DIV>
<DIV>&nbsp;
在现阶段，我们使用较多的是SecurityManager中的<FONT FACE="宋体">checkPermission(java.<FONT FACE="宋体">java.security.Permission</FONT>)方法。其中java自带的常用的Permissin有如下：SocketPermission(网络)，PropertyPermission(属性)，FilePermission(文件操作)，举例使用FilePermission:</FONT></DIV>
<DIV>我想限定只有在/temp/目录下有写操作</DIV>
<DIV>
1.首先修改%JRE_HOME%/lib/security/java.policy文件，在grant{}里面添加资源</DIV>
<DIV><FONT FACE="宋体">permission java.io.FilePermission "/temp/*",
"write,read";</FONT></DIV>
<DIV>2.在程序里面可以这样来检查是否具有该文件的写操作权：</DIV>
<DIV><FONT FACE="宋体">SecurityManager sm = new
SecurityManager();<br/>
System.setSecurityManager(sm);<br/>
if (sm != null) {<br/>
&nbsp;Permission p = new FilePermission("/temp/*",
"write");<br/>
&nbsp;System.out.println(p.getActions());<br/>
&nbsp;sm.checkPermission(p);&nbsp;&nbsp;<br/>

}</FONT></DIV>
<DIV>&nbsp;
也可以定义我们自己的Permission,只要继承<FONT FACE="宋体">java.security.Permission。继承的子类必须重写以下方法：</FONT></DIV>
<DIV><FONT FACE="宋体">public boolean equals(Object
obj);</FONT></DIV>
<DIV><FONT FACE="宋体">public String getActions();</FONT></DIV>
<DIV><FONT FACE="宋体">//返回一个字符串，可随意，如FilePermission返回的是第二个参数:read,write这些东西</FONT></DIV>
<DIV><FONT FACE="宋体">public int hashCode();</FONT></DIV>
<DIV><FONT FACE="宋体">public boolean implies(Permission
permission);</FONT></DIV>
<DIV>
//这个方法定意了是否有该权限，如果有返回true，否则返回false</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; 同样我们可以在java.policy中配置权限</DIV>
]]></description>
            <author>樂樂</author>
            <category>技术档案</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010008f7.html#comment</comments>
            <pubDate>Tue, 29 May 2007 01:15:58 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010008f7.html</guid>
        </item>
        <item>
            <title>善用.bat</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee30100088g.html</link>
            <description><![CDATA[<DIV>&nbsp;
以前生成对密钥总看文档啊，敲啊敲啊，都快累死了。后来发现了，用.bat这样的批处理特别爽。都测试用的，里面的东西写死就够了，呵呵。</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;生成密钥脚本：</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT FACE="宋体">@echo off<br/>
echo 通过别名和密码创建私密钥到keystore<br/>
keytool -genkey -alias ws_security -keypass keypassword -keystore
privatestore.jks -storepass keyStorePassword -dname
"cn=ws_security" -keyalg RSA<br/>
echo&nbsp; 证书<br/>
keytool -selfcert -alias ws_security -keystore privatestore.jks
-storepass keyStorePassword -keypass keypassword<br/>
echo 导出公钥到key.rsa<br/>
keytool -export -alias ws_security -file key.rsa -keystore
privatestore.jks -storepass keyStorePassword<br/>
echo 导入公钥到新的keystore中<br/>
keytool -import -alias ws_security&nbsp; -file key.rsa
-keystore publicstore.jks -storepass keyStorePassword<br/>
echo 过程完成！<br/>
echo .&amp;pause</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;
在公司发现一段代码用来清理系统的，简单但也有用：</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT FACE="宋体">@echo off<br/>
echo 正在清除系统垃圾文件，请稍等......<br/>
del /f /s /q %systemdrive%\*.tmp<br/>
del /f /s /q %systemdrive%\*._mp<br/>
del /f /s /q %systemdrive%\*.log<br/>
del /f /s /q %systemdrive%\*.gid<br/>
del /f /s /q %systemdrive%\*.chk<br/>
del /f /s /q %systemdrive%\*.old<br/>
del /f /s /q %systemdrive%\recycled\*.*<br/>
del /f /s /q %windir%\*.bak<br/>
del /f /s /q %windir%\prefetch\*.*<br/>
rd /s /q %windir%\temp &amp; md %windir%\temp<br/>
del /f /q %userprofile%\cookies\*.*<br/>
del /f /q %userprofile%\recent\*.*<br/>
del /f /s /q "%userprofile%\Local Settings\Temporary Internet
Files\*.*"<br/>
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"<br/>
del /f /s /q "%userprofile%\recent\*.*"<br/>
echo 清除系统LJ完成！<br/>
echo. &amp; pause</FONT></DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee30100088g.html#comment</comments>
            <pubDate>Tue, 15 May 2007 07:25:04 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee30100088g.html</guid>
        </item>
        <item>
            <title>深圳中山公园花影</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee30100084j.html</link>
            <description><![CDATA[<DIV>&nbsp;一直都觉得，拍花比拍人简单~~ 喜欢花
~`照片中的花真的很容易就比真实的漂亮~`</DIV>
<DIV><A HREF="http://album.sina.com.cn/pic/49237ee302000s2h" TARGET="_blank"><IMG SRC="http://album.sina.com.cn/pic/49237ee302000s2h" BORDER="0"></A><br/>
出来的效果有层次，我喜欢~~<br/>
<A HREF="http://album.sina.com.cn/pic/49237ee302000s2i" TARGET="_blank"><IMG SRC="http://album.sina.com.cn/pic/49237ee302000s2i" BORDER="0"></A></DIV>
<DIV>构图简单点，颜色我喜欢 ~~<br/>
<A HREF="http://album.sina.com.cn/pic/49237ee302000s2g" TARGET="_blank"><IMG SRC="http://album.sina.com.cn/pic/49237ee302000s2g" BORDER="0"></A><br/>
&nbsp;她喜欢，我也喜欢~~</DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee30100084j.html#comment</comments>
            <pubDate>Sun, 06 May 2007 17:10:44 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee30100084j.html</guid>
        </item>
        <item>
            <title>xfire初试的报错解决</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee301000823.html</link>
            <description><![CDATA[<DIV>很久没写所谓的技术文章了~~
加快毕设，努力研究方案中!配了一下午xfire的we-security，公司边的还没搞好，估计也是版本问题。回宿舍，那个版本问题没了，环境略有不同，回来后又发现了一个问题，开始真郁闷死了。报错如下：<br/>

<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">resin里面报错：</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">- Fault
occurred!<br/>
java.lang.NullPointerException</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
com.caucho.xml.QAttributedNode.hasAttributeNS(QAttributedNode.java:116)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.apache.ws.security.util.WSSecurityUtil.findElementById(WSSecurity<br/>

Util.java:269)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.apache.ws.security.util.WSSecurityUtil.getElementByWsuId(WSSecuri<br/>

tyUtil.java:438)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.apache.ws.security.processor.EncryptedKeyProcessor.decryptDataRef<br/>

(EncryptedKeyProcessor.java:379)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleEncrypte<br/>

dKey(EncryptedKeyProcessor.java:333)</FONT></DIV>
<DIV>....</DIV>
<DIV>&nbsp;</DIV>
<DIV>eclipse里面报错：</DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">Exception
in thread "main" org.codehaus.xfire.XFireRuntimeException: Could
not invoke service.. Nested exception is
org.codehaus.xfire.fault.XFireFault: Fault:
java.lang.NullPointerException org.codehaus.xfire.fault.XFireFault:
Fault: java.lang.NullPointerException</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)</FONT></DIV>
<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">at
org.codehaus.xfire.client.Client.onReceive(Client.java:387)</FONT></DIV>
<DIV>....</DIV>
<DIV>&nbsp;</DIV>
<DIV>
在最后后，在google里面搜到的一篇e文的信件列表里面找到了线索。“<SPAN>This
is a problem with default xml parser ( as i remeber
).<SPAN>configure resin to use xerces as xml parser ( described in
docs ) and</SPAN> <SPAN>everything should work fine.</SPAN>
”于是，我就向那个方向走去~`</SPAN></DIV>
<DIV><SPAN><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">Spring 官方已经提到这个错误了</FONT></SPAN></DIV>
<DIV><A HREF="http://www.springframework.org/docs/reference/xsd-config.html#xsd-config-integration-resin">
<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">http://www.springframework.org/docs/reference/xsd-config.html#xsd-config-integration-resin</FONT></A></DIV>
<DIV>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">A.3.3.1. XML
parsing errors in the Resin v.3 application server</FONT>
<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">If you are
using the XSD-style for Spring 2.0 XML configuration and deploying
to v.3 of Caucho's Resin application server, you will need to set
some configuration options prior to startup so that an XSD-aware
parser is available to Spring.</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">更改resin默认xml解释器的方法：</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">在resin.conf的&lt;web-app&gt;或者&lt;server&gt;节点下添加</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&lt;!-- xml
--&gt;<br/>
&lt;system-property
javax.xml.parsers.DocumentBuilderFactory=</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/&gt;<br/>
&lt;system-property javax.xml.parsers.SAXParserFactory=</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"org.apache.xerces.jaxp.SAXParserFactoryImpl"/&gt;<br/>
&lt;!--&nbsp; xslt --&gt;<br/>
&lt;system-property
javax.xml.transform.TransformerFactory=</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
"org.apache.xalan.processor.TransformerFactoryImpl"/&gt;</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">然后把<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">xalan.jar和</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">xerces.jar</FONT>加入%RESIN_HOME%/lib目录，完工~~看到了想要的结果~`nice</FONT><br/>
</P>
</DIV>
<DIV>&nbsp;</DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee301000823.html#comment</comments>
            <pubDate>Sat, 28 Apr 2007 15:06:47 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee301000823.html</guid>
        </item>
        <item>
            <title>突然觉得很不爽</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007yf.html</link>
            <description><![CDATA[<DIV>突然觉得很不爽~`十分钟的突变，真无语了。<br/>
决定了，为了避免`<br/>
还是玩游戏时候不开任何电脑上的即时聊天工具了!</DIV>
<DIV>不爽 ```<br/>
做一件习以为常的事，睡觉去~~<br/>
少困点</DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007yf.html#comment</comments>
            <pubDate>Wed, 18 Apr 2007 15:38:50 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007yf.html</guid>
        </item>
        <item>
            <title>shopping in 东门老街</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007x2.html</link>
            <description><![CDATA[<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&nbsp;
十一点多，坐上了开往东门老街的公交车。那个人多啊~`还贵后来发现原因了，挻远的，估计</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">有二十公里?差不多了。<br/>
&nbsp;
发现深南大道真tmd长~`道出上旅游的地方真tmd多，什么世界之窗啊，欢乐谷啊，绵绣中华啊</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">...
一堆，有的名字都忘记了。很多高，新，大的楼，才像深圳了。终于看到了招行总部大楼，看</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">到了那博士帽，要是在那工作真舒服~~<br/>
&nbsp; 越来越人多~~发现到站了。<br/>
&nbsp;
第一印象，这里的人多in啊~`呵呵，美女真多，也才像深圳~!第一次的到来，一个字：晕!~到处</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">都如此繁华，真不知道哪里才是老旺市啊。<br/>
&nbsp;
逛，转了个晕头转向！之前在网上就做过功课，东门老街很久以前就存在，进在又加上了现代化</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">的特色。布局有点不知所谓，一个十字型！以一个标志性的称杆立在中心点上。很多很大的商场，</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">类似于故宫的感觉，去了一个地方不错，再去一个还不错，如果在十来个都不错的地方过后，更不</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">错的地方都不想去了。<br/>
&nbsp;
啊升被人拉去了做护肤~被人说晕了，白花花的银子就不断往外流~`真心痛！呵呵，刚好在那碰</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">到了一个清远的人，嗯，叫啊mi?好像是，不记得罗~`同一级的人，虽然我没和她在过一个学校，</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">但她还认识浩锋呢，还有大名鼎鼎的啊牛~`这很意外！所以问了她的联系，要了她QQ，还没加，呵</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">~`嗯，长得还不错吧~`<br/>
&nbsp;
shopping,三个人在一起算买了不少东西了，总比超市的便宜.特价的，打折的东西还很多。特别</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">衣服，比天津的步行街便宜不少。在南方就是好，知道怎么讲价。加上服务态度也挻好的。在天津</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">就不一样了，试了东西不买，那些人好像要吃你似的。<br/>
&nbsp;
中午就在啃德基解决~~是不是太懒了，应该去找点小吃吧！<br/>
&nbsp;
我的战利品-一双板鞋，发现了~就板鞋最顺眼了！嗯，其它的衣服啊，我都不缺，忍着手~~发了</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">工资再说！<br/>
&nbsp;
回来的公交车上我居然睡着了会，想着不能睡觉了~~幸好为避免们没睡，没过站！到家也差不多</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">六点了，一个小时的车程！</FONT></P>
<P><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">&nbsp;
又不知道什么时候会再过去了，下次我希望和她去~~嘻嘻！</FONT></P>
<DIV>&nbsp;</DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007x2.html#comment</comments>
            <pubDate>Sat, 14 Apr 2007 12:51:57 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007x2.html</guid>
        </item>
        <item>
            <title>感受上班</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007w9.html</link>
            <description><![CDATA[<DIV>&nbsp;
感受上班，因为今天才可以说比较正式地迈入了融博的第一天。今天是培训的日子。上了一天的课，久休后的忙，确实挻累的，听课之中，差点睡着，但是兴奋。</DIV>
<DIV>&nbsp; 开始，必然是业务的灌输。</DIV>
<DIV>&nbsp; 开始，必然是制度的灌输。</DIV>
<DIV>&nbsp; 开始，必然是文化的灌输。<br/>
&nbsp; 开始，<br/>
&nbsp; 我了解融博，<br/>
&nbsp; 我了解自己的岗位。<br/>
&nbsp;
呵，大家没几个听过融博吧，简单说，融博是招商银行的下属公司，慢慢地将取缔招行的软件部，嗯，我分到的小组完全归招行CMB部管，不知是好是坏。没用过信用卡的我，被分到了信用卡小组。够意思，以后一定很多信用卡。</DIV>
<DIV>&nbsp;
分到的IP莫名地和别人冲了，上不了网，郁闷！</DIV>
<DIV>&nbsp;
昨晚碰巧看到了第一篇日记，呵~~今天还是开博一周年的日子呢。日志还算更新得正常吧，自己鼓励一下。开始启用msn了，样子不错，比QQ稳定多了。但是msn的blog界面太有点难看了吧。<br/>

&nbsp; 心没变，<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="宋体">喜欢花的人是会去摘花的，然而爱花的人则会去浇水。有人问我我是摘花还是浇水，我说both!<IMG STYLE="DISPLAY: block; MARGIN: 4px auto; TEXT-ALIGN: center" SRC="http://album.sina.com.cn/pic/49237ee302000pjr" BORDER="0"></FONT></DIV>
<DIV>&nbsp;
想把融博的logo也贴出来的，发现融博网站上还没我今天见到的那个，呵``就招商吧。</DIV>
<DIV><A HREF="http://album.sina.com.cn/pic/49237ee302000pjr" TARGET="_blank"></A></DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007w9.html#comment</comments>
            <pubDate>Wed, 11 Apr 2007 12:23:43 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007w9.html</guid>
        </item>
        <item>
            <title>新闻评-乱弹一通</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007v5.html</link>
            <description><![CDATA[<DIV>呵~`想学人写写新闻评论，发现难度太大了。<br/>
观点嘛，嘛观点网上没啊``太难了，要有新观点，有意义的观点<br/>
长了不好，短也不好``不会掌握。<br/>
<br/>
乱来了一篇，扔了白扔，留个纪念<br/>
<br/>
《评<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New">杨丽娟事件》<br/>
<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New">&nbsp;三个字“神经病”;六个字“一家人神经病”。--这是我朋友对杨丽娟事件的评价。<br/>

&nbsp;疯狂！不孝！偏执！清醒的冷静的理智的大多数痛骂爱刘成痴的粉丝，甚至不惮以最大的恶意揣测杨女一家人的行为动机。<br/>

&nbsp;然而，面对着这样荒塘的事件，我们现在并不应该去谴责，而更多的应该是深思。一条生命的消逝带给我们不止茶余饭后的话题。<br/>

&nbsp;前些天,刚好有机会和我们村出色的农民企业家在一起聊天.一路过来,我感受挺多.文化背景不一样的人聊天，真别有一番风味。<br/>

&nbsp;他有他很出色的观点。<br/>
&nbsp;他很爱国，不和日本人做生意，不消费日本的产品。<br/>

&nbsp;他很爱国，可惜外蒙的独立，赞扬小平同志收回了香港和澳门，坚持着要收复台湾，不惜一切。<br/>

&nbsp;他很爱国，鄙视香港那些所谓民主人士在回归后吵来吵去，拥护党。(回归前又不自己争取独立)<br/>

&nbsp;他怀念以前小时候的平均主义思想，有东西不会想到一个人占有。<br/>

&nbsp;我们的话题一直在政治人物和对社会的评价上。<br/>
&nbsp;他-一个四五十年代的人的代表.<br/>
&nbsp;再前些天，我和社会上年龄二十到三十的男性人接触，他们的话题很简单，色情和赌搏。<br/>

&nbsp;真的到了温饱思淫欲的时候了吗？<br/>
&nbsp;在杨丽娟事件上，她们的话题在追逐明星上.<br/>
&nbsp;他们-七八十年代人的代表。<br/>
&nbsp;时代付予他们的思想太特殊了。<br/>
&nbsp;掌握信息等于掌握思想，而很重要的媒体本身扭曲发展。</FONT><br/>
</FONT></DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007v5.html#comment</comments>
            <pubDate>Mon, 09 Apr 2007 05:04:47 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007v5.html</guid>
        </item>
        <item>
            <title>恢复.生活</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007up.html</link>
            <description><![CDATA[<DIV>&nbsp;
第二次到深圳意未着我三个月长假的结束，恢复.生活，完全不一样的方式<br/>

&nbsp; 太长的休养脑袋顿了很多，也懒了很多<br/>
&nbsp; 和电脑在一齐，生活是平淡的，但是过得很坦然<br/>
&nbsp; 反之，生活很动荡，渐渐感觉到累<br/>
&nbsp; 像洪水般的压抑在那天晚上爆发<br/>
&nbsp; 当时坚定的心开始被时间腐蚀 现在不知所措<br/>
&nbsp; 与时间较量<br/>
&nbsp; 恢复生活，努力工作 ...<br/>
&nbsp; --暴动的心</DIV>
]]></description>
            <author>樂樂</author>
            <category>风过留痕</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007up.html#comment</comments>
            <pubDate>Sat, 07 Apr 2007 10:58:02 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007up.html</guid>
        </item>
        <item>
            <title>完全清远学车指南之我谈</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007qj.html</link>
            <description><![CDATA[<FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New">&nbsp;考完了路试等同于完成了学车的过程，如期能拿到架照，安心。<br/>

&nbsp;也有了心情写点学车的指引，完全来自新手的角度，别有风味，如同学习计算机，老手跟本不屑一谈。<br/>

&nbsp;本教程只对伟清远最大的驾校-伟豪有效!其它自行参考。<br/>

&nbsp;一月多放假回家，太久的压抑，总想休息。爸叫了我几次去报名学车，我都推了，爸看我无聊，一直诱惑我~，到了二月，我终于答应了。没怎么考虑，因为我太多东西不知道。<br/>

&nbsp;晚上去了爸的朋友那报名(后来得知，我爸朋友等同于驾校的中介，获得中介利益)。后来知道了，有点后悔~`<br/>

&nbsp;教训一:找中介报名并不妥当，因为中介是和驾校的上级打交道的，可能并不太熟悉教练，而打通教练的交系才是最重要的，因为你直接面对的是教练，而不是管理阶层。而你应该做的是直接找到一个负责的教练，让他帮你报名，而他获取中介利益。一般情况他都会特别照顾。<br/>

&nbsp;当时，中介的阿姨把我给带到了一个教练那，因为那个教练并没有直接利益，所以后来一直没带给我特别照顾。<br/>

&nbsp;因为我是外地的学车人，所以我得先办一个暂住证，花了55rmb。其中包含我特别不明白的50元，回家还收我的志安管理费~<br/>

&nbsp;第二天，我跟着去了驾校，第一次感受到驾校的混乱。<br/>

&nbsp;下了车，很多人~`不知道自己要干什么，也看到很多人，也不知道他们要干什么。其中有的人三五成群地上了车，其它人蜂涌过去。因为我头一天到，不敢乱来。等~~`发现就自己一个人比较特别，不知迷茫。人慢慢分散开，剩一些貌似工作人员，暂时这样称呼。我过去问，我新来的，因该学点什么。他指了指一个方向之后继续忙他的事情。我还是迷茫。附近转了一圈。人继续减少，我只好硬着头皮到那个方向走去。很陌生，不知道干嘛……我只好问其他学员样子的人了，还好，他指对了方向。新学员，应该先学打方向盘。操场中间的地方，有几个破烂的学习的方向盘。我就过去了。旁边的不像有教练。我座着，转。不多久，有个教练带了几个人过来打方向盘，我只好跟着看，学着打。没多久，他们走了，我不知道是否该跟着，最后决定不跟，因为我判断那几个学员是认识那个教练的。就在那我学了半小时，其实就在那坐着看四周看了半小时。之后我决定要改变，我在楼房附近徘徊，找教练模样的人来问，下一步要干什么~``终于遇见了后来知道的是个队长的人，他带了我回去方向盘那，教我怎么弄。<br/>

&nbsp;三手……左三手……右三手……<br/>
&nbsp;第一个教练。虽然不太明白，我点头~~
很快，他又忙他不知道要忙什么的事去了。我还在那。认错了一个学员，当了他是教练，但他也挺耐心地指导我。无所事事，第一个回合过去了，"下班了"！<br/>

&nbsp;教训二:本来按规范是要学打方向，控模拟离合，学模拟手档，学习考文化的，但是以我见解，第一天去就上车学就对了，脸皮厚点，因为模拟的东西很不一样，几本没用，书回家看就行了。到了那就应该上车学。那里的车分几种学习的方向：倒桩，兜圈仔，前后控离合，跑路。不一定每次都有齐。第一天去兜圈仔，前后控离合都行。看到有这样的车就上去就对了，人很多，其它人不会照顾你。不要怕什么~~
教练没资格叫学员下车~`你是消费者。<br/>
&nbsp;第二个回合我去那，吸取了早上的教训，我下午就跟着上车了，还好，遇到了好教练~`李教练。<br/>

&nbsp;开车，跟本不复杂。我说的是开车，并不是路面。脚下有三个东西可以蹬，分别是离合、脚刹、油门。其它的是方向盘，灯，喇叭，手刹，档(主要的)。要起动车，规范动作是：先踩离合，挂一档，打左转灯，按喇叭，慢慢放离合，等车要起动了就放手刹，这样车就跑起来了，说简单，但第一次就很难做到,因为手脚会很不协调，脚放离合的快慢控制得不好。呵呵，到这里就可以这样学了。有的教练会让你一下子做齐这么多东西，也有教练会让你一步步慢慢来，我喜欢后者，也是我遇到的那个教练的做法。那天第一次开车，很爽~``<br/>

&nbsp;第二天，其实就可以去学倒桩了，很重要的一个东西，到了驾校就能感受到。我自己做对了。去了倒桩。但是不幸运，我碰到了皮气不好的教练。这~~
都来自教训一，如果找好了教练就不会出现这样的情况了。还好，我脸皮厚。<br/>

&nbsp;倒桩，两个车位，两排桩，前三，后三，叫蝴蝶桩，对于初学者有两个方法。一，让车后退，当你人看到第一条桩和最边上一条桩成一线马上打尽方向，跟着看倒后镜，慢慢会出现中桩,等车靠近中桩后等车回直就回胎一直下就行了，当然这是理想情况，真实操作中还涉及到位有点偏差的情况。第二种，让车后退，有一条线在那的，等你人和线平行就打尽方向，之后动作一样。打早胎有得救，迟了没得救~~重要的是要学会感觉到方向盘是否正了。这样才能有后来说的看倒后镜，看着车身和边线是否直了，这样来摆正车。学看倒后镜打方向，很重要。会了，就可以说是会倒桩了。移副~~也是一个环节。把车从左边的车位移到右边的车位上。不好描述，不说了，会了倒桩，移副不难。后来的侧方停车也简单，所以得多花时间到倒桩上，这是控制车的学习。<br/>

&nbsp;过了倒桩，几本可以说你已经了解了整个驾校的操作了，是好是坏也没办法了，适者生存。<br/>

&nbsp;长途考，我有点点关系的教练看着照顾，过得还不错~`<br/>

&nbsp;跑路，九选六也没什么特别感受了~``
规则不停地变~`<br/>
&nbsp;呵~``指引over</FONT>
]]></description>
            <author>樂樂</author>
            <category>风过留痕</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007qj.html#comment</comments>
            <pubDate>Wed, 28 Mar 2007 14:36:26 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007qj.html</guid>
        </item>
        <item>
            <title>不愤</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007l3.html</link>
            <description><![CDATA[<DIV>&nbsp;
慢慢发现社会上的承诺并不如学校那样当真。<br/>
&nbsp; 万一他们不能兑现我们也真无可奈何。<br/>
&nbsp;
本以为去实习前能拿到车照，从现在的情况看又得泡汤了，四月不到手一拖就不知道得拖到什么时候了。哎~~真倒霉。<br/>

&nbsp;
本来还想着贡献点什么写个清远最大的学车驾校拿c牌的学习小教程的，现在倒好，没兴趣了。至于来点什么批判的还是等以后完成了这个过程再说吧。<br/>

&nbsp; 不愤，对那些不能兑现承诺的人。</DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007l3.html#comment</comments>
            <pubDate>Mon, 12 Mar 2007 14:47:56 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007l3.html</guid>
        </item>
        <item>
            <title>迟来的日志</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007ks.html</link>
            <description><![CDATA[<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New">　　我们的纪念日——2.28<br/>
　　没把日记本带回家真有点可惜……</FONT><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New"><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New"><br/></FONT><br/></FONT></DIV>
]]></description>
            <author>樂樂</author>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007ks.html#comment</comments>
            <pubDate>Sun, 11 Mar 2007 15:40:59 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007ks.html</guid>
        </item>
        <item>
            <title>cc派的没落</title>
            <link>http://blog.sina.com.cn/s/blog_49237ee3010007k9.html</link>
            <description><![CDATA[<DIV><FONT STYLE="BACKGROUND-COLOR: #ffffff" FACE="Courier New">&nbsp;
可能现在已经没有人会记起cc派了，可我却一直惦记着。<br/>
&nbsp; 新的时代赋予了cc派新的使命。<br/>
&nbsp;
cc派的认识还得追溯到我的初中,光明-历史。可以说那时cc派正式在我心中奠定了基础。曾经辉煌的cc派继续走着它不平常的道路，尽管它并没有达到鼎盛，然而现在在慢慢地凝固，慢慢升华成另一种状态。<br/>

&nbsp; cc派的没落，其实是一种好事~~</FONT></DIV>
]]></description>
            <author>樂樂</author>
            <category>风过留痕</category>
            <comments>http://blog.sina.com.cn/s/blog_49237ee3010007k9.html#comment</comments>
            <pubDate>Sat, 10 Mar 2007 10:38:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_49237ee3010007k9.html</guid>
        </item>
    </channel>
</rss>
