﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-junctioner</title><link>http://www.blogjava.net/junctioner/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 02 May 2026 00:00:03 GMT</lastBuildDate><pubDate>Sat, 02 May 2026 00:00:03 GMT</pubDate><ttl>60</ttl><item><title>序：给自己找点事做</title><link>http://www.blogjava.net/junctioner/archive/2009/09/16/295381.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Wed, 16 Sep 2009 14:17:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2009/09/16/295381.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/295381.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2009/09/16/295381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/295381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/295381.html</trackback:ping><description><![CDATA[时间和日子在无知无觉中过去，问自己收获了什么？<br /><br />每天无所事事。<br /><br /><br />列个标题，挖个坑，希望每天能来挑一点土。<br /><br />《解读eclipse_3.50_galileo 源码》<br /><br />从第一次使用eclipse（大概是03年的事，那时比较好用的是2.1版还是1.4版已记不清了）就想看看这么巧妙的一个玩意儿是怎么实现的，一直懒散无度，从未下手。<br /><br />这段时间用ＳＷＴ做个小工具，是边找边抄，为什么要那么写，不知道－－真是有违一惯的作风。<br /><br />每天下班后，都不是为什么奔忙着，网页？网游？都不知道自己看了些什么，玩了些什么。<br /><br />eclipse 的jar很多，核心的是core.runtime和osgi（早些版本里，是没有osgi的），core.runtime比较小，就几个类，先攻击小的少的－－毛主席真是伟大的军事家呀。<br /><br />敬礼，睡觉去。<img src ="http://www.blogjava.net/junctioner/aggbug/295381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2009-09-16 22:17 <a href="http://www.blogjava.net/junctioner/archive/2009/09/16/295381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一穷二白学习Ｃ语言（１）</title><link>http://www.blogjava.net/junctioner/archive/2008/12/22/247758.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Mon, 22 Dec 2008 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2008/12/22/247758.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/247758.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2008/12/22/247758.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/247758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/247758.html</trackback:ping><description><![CDATA[前言<br />　　一直想学习C，在刚知道有计算机的时候就想学习C，上学时，偷上计算机专业的课,学了半年Turbo C，学到指针时，晕了，也就没有下文。工作之后，时有心血来潮之时，但还是没怎么学习，Java还是比较简单，Java几乎占据了工作全部，更少有学习C了。用Java，研究到Java的核心，发觉还是得学C,学呀，学吧。<br />　　今天也是一时的心血来潮了，趁着有股劲，开始动手，记录一下，以期待和方便下次来潮。<br /><br />　　写出的代码，得编译才可以运行，这个编译环境，得先搭起来。VC、Visual Studio，都微软的东西，有点抵触，也有些大，不安装了，手工配一套环境吧。<br />　　网上搜了一下，Windows系统配C的编译环境，得要MinGW或者cygWin，以前都下载过，但一直不知道它们本身是个什么东西，再查，知道大概：二者均基于GCC（GNU Compiler Collection －格努编译套件），再加一些基本的类库。去各自的官网分别下载安装，感受：cygWin更象是一个linux的模拟器，把linux环境下的GCC给模拟出来，其它的就都一样需要基本的编译器、类库，其它的如make工具。使用的时候，个人取向选择minGW，在环境变量中指向{$minGW}\bin，gcc和make就可以在cmd中运行了。<br />　　写个简单的hello world源程序，gcc一把，生产可执行文件，运行，结果出来，OK！<br /><br />　　注，下载minGW时，我选择了自动安装下载，一个个的下载，点来点去，累的慌。<br />单独下载minGW，要如下几个包，再分别解开放在同一目录中。<br /><table bordercolor="#000000" cellspacing="0" cellpadding="4" width="100%" border="1"><thead><tr valign="top"><td width="17%" bgcolor="#ccccff"><div><font size="2">gcc-core</font></div></td><td width="83%" bgcolor="#ccccff"><div><font size="2">C</font><font size="2">语言编译器</font></div></td></tr></thead><tbody><tr valign="top"><td width="17%" bgcolor="#ccccff"><div><font size="2">gcc-c++</font></div></td><td width="83%" bgcolor="#ccccff"><div><font size="2">C++</font><font size="2">语言编译器</font></div></td></tr><tr valign="top"><td width="17%" bgcolor="#ccccff"><div><font size="2">mingw-runtime</font></div></td><td width="83%" bgcolor="#ccccff"><div><font size="2">MinGW</font><font size="2">的运行时库（这个必须安装）</font></div></td></tr><tr valign="top"><td width="17%" bgcolor="#ccccff"><p><font size="2">win32api </font></p></td><td width="83%" bgcolor="#ccccff"><div><font size="2">win32</font><font size="2">的</font><font size="2">API</font><font size="2">函数头文件和连接库</font></div></td></tr><tr valign="top"><td width="17%" bgcolor="#ccccff"><p><font size="2">binutils </font></p></td><td width="83%" bgcolor="#ccccff"><div><font size="2">MinGW</font><font size="2">的汇编器和连接器等基础工具</font></div></td></tr><tr valign="top"><td width="17%" bgcolor="#ccccff"><p><font size="2">gdb </font></p></td><td width="83%" bgcolor="#ccccff"><div><font size="2">MinGW</font><font size="2">中的调试工具</font></div></td></tr><tr valign="top"><td width="17%" bgcolor="#ccccff"><div><font size="2">mingw32-make</font></div></td><td width="83%" bgcolor="#ccccff"><div><font size="2">Make</font><font size="2">工具，用以更好的管理你的项目</font></div></td></tr></tbody></table>make解后，没有通常的make.exe，只有一个mingw32-make.exe文件，其实，把这个文件改名为make.exe就行。<img src ="http://www.blogjava.net/junctioner/aggbug/247758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2008-12-22 15:53 <a href="http://www.blogjava.net/junctioner/archive/2008/12/22/247758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>年迹</title><link>http://www.blogjava.net/junctioner/archive/2007/06/19/125145.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Tue, 19 Jun 2007 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2007/06/19/125145.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/125145.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2007/06/19/125145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/125145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/125145.html</trackback:ping><description><![CDATA[1978：第一个关键的年份<br />1988：虽然是第一个十年，但十岁的生日没多少印象了，更多的是开始注意的第一个年份。<br />1993：初中结束了，<br />1997：高中结束了，<br />2000/06/30：大学毕业了，世纪之交呀！<br />2000/08/03：子身跑到汕头的一个小镇开始第一份工作，真正的人生地不熟。到目的地时，身上只有20块钱了，还是年青的老板给我付的“摩的”费。<br />2001/11/03：混到一份跟自己所学专业，所做的工作一点也不相关的工作，毅然一个人跑到北京。首都呀！当时天很冷，比我想象的要冷，下车后把能穿的都穿上，不知象什么熊。打22块钱的车找到公司，竞然还没到上班时间。<br />2004/06/xx：一个伤感的月份，也注定要离开这个做了好几年有公司。<br />2004/08/04：换了一个比较远的公司，在朝阳，自己租住在西直门。<br />2005/02/28：一个没有29日的月份，还没开始工作，就没有选择的离开了。<br />2005/07/03：<br />2006/07/03：换了一份工作，不知什么感受。<img src ="http://www.blogjava.net/junctioner/aggbug/125145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2007-06-19 16:35 <a href="http://www.blogjava.net/junctioner/archive/2007/06/19/125145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Velocity之首次研究</title><link>http://www.blogjava.net/junctioner/archive/2007/05/30/120928.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Wed, 30 May 2007 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2007/05/30/120928.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/120928.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2007/05/30/120928.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/120928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/120928.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 与Velocity的第一次见面，是03年，有个新同事推荐使用，因当时我在做别的项目，也没怎么仔细了解，简单的知晓类似如模板一类的东西。之后有过几次接触，但，都没花时间仔细看，前段时间，帮朋友做一个小东西，觉得用个模板做，会省很多事，想到Velocity。东西很小，做完了都没时间看Velocity，今天正好有时间，研究研究。<br>&nbsp;&nbsp;&nbsp; Velocity是apache下的一个开源项目，其网址：http://velocity.apache.org/;下载地址：http://velocity.apache.org/download.cgi，可直接下载源码，也可通过SVN获取源码。<br>&nbsp;&nbsp;&nbsp; 在eclipse中创建一个web应用工程，把Velocity的源码拷到java资源目录下，自动编译后，报几个错，拷贝下载的Velocity源码lib目录下的commons-collections-3.1.jar、oro-2.0.8.jar、commons-lang-2.1.jar这个三类包到web应用工程的lib目录下即可。<br>&nbsp;&nbsp;&nbsp; 准备就绪，就写个例子跑跑试试。写一个hello.vm的模板文件，创建一个对应的Servlet，就可以运行了。两文件源码贴出如下：<br>&nbsp;&nbsp;&nbsp; hello.vm
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;#set($greet&nbsp;=&nbsp;"你好哇！")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hello！$name,&nbsp;$greet<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp; HelloServlet.java<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.io.FileNotFoundException;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.io.IOException;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.Hashtable;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.Properties;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.ServletConfig;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.http.HttpServletResponse;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.apache.velocity.Template;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.apache.velocity.app.Velocity;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.apache.velocity.context.Context;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.apache.velocity.servlet.VelocityServlet;<br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> HelloServlet&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;<span style="COLOR: red">VelocityServlet</span>&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;Properties&nbsp;<span style="COLOR: green">loadConfiguration</span>(ServletConfig&nbsp;config)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;IOException,&nbsp;FileNotFoundException&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Properties();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;config.getServletContext().getRealPath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(path&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,&nbsp;path);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">runtime.log</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;path&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">velocity.log</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setProperty(<span style="COLOR: green">Velocity.INPUT_ENCODING,&nbsp;</span></span><span style="COLOR: green">"GBK"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setProperty(<span style="COLOR: green">Velocity.OUTPUT_ENCODING,&nbsp;</span></span><span style="COLOR: green">"GBK"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;p;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Template&nbsp;handleRequest(HttpServletRequest&nbsp;request,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response,&nbsp;Context&nbsp;ctx)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Template&nbsp;template&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: red">ctx.put(</span></span><span style="COLOR: red">"name","Velocity"</span><span style="COLOR: #000000"><span style="COLOR: red">);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: red">template&nbsp;</span></span><span style="COLOR: red">=&nbsp;Velocity.getTemplate("/hello.vm"</span><span style="COLOR: #000000"><span style="COLOR: red">);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;template;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
&nbsp;&nbsp;&nbsp; 创建servelt要注意的几个地方。<br>&nbsp;&nbsp;&nbsp; 1、新建的Servlet要扩展Velocity的VelocityServlet<br>&nbsp;&nbsp;&nbsp; 2、在servlet中要实现 public Template handleRequest(HttpServletRequest request,HttpServletResponse response, Context ctx) <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; A)把要返回到页面上的数据放到context中对应到指定键值（键值名为对应模板中定义的变量名）<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; B)引入指定模板文件<br>&nbsp;&nbsp;&nbsp; 3、导入配置文件的方法protected Properties loadConfiguration(ServletConfig config)，是否实现，是可选的&nbsp;，其作用在后面说明。<br><br>发布运行后，访问http://localhost:8080/vt/HelloServelt，就可看到结果了。<br><br>运行起来，看到结果，是觉得很简单，其运行过程，就要跟踪看源码才能知道了。<br><br>&nbsp;&nbsp;&nbsp; 看源码，先看的，肯定是VelocityServlet.java。发现源码注释中，这个类已不推荐使用，推荐使用Velocity的一个子项目tool中的VelocityViewServlet.java，我没有当tool子项目，就先看这个&#8220;过时的&#8221;实现。<br>&nbsp;&nbsp;&nbsp;&nbsp; VelocityServlet.java，扩展了HttpServlet，实现了doGet、doPost、init基本方法，前两个方法都直接调用新实现的doRequest方法，这些都是很常规的操作。<br>&nbsp;&nbsp;&nbsp; doRequest方法做如下几件事：创建上下文、设置响应内容文件类型、获取模板（调用每个请求中的具体实现）、合并数据做出响应、出错处理及资源清理。看到这儿，整个请求和响应过程很清晰，并没什么特别的处理。<br>&nbsp;&nbsp;&nbsp; 接下来，看看它的初始化做了些什么事。就做了三件事，超类初始化、自己的初始化、缓存内容类型数据。自己的初始化，也就是(i)导入配置信息，(ii)根据配置信息做初始化设置。导入配置信息，是根据指定的几个地方，获取配置数据（在提供的样例中，重载了它的获取配置数据的方法，自己灵活的写入一些配置信息）;根据配置信息做初始化的工作，应用单例设计模式，保证初始化工作的处理唯一。<br>&nbsp;&nbsp;&nbsp; VelocityServlet自已的初始化，调用另一个类org.apache.velocity.app.Velocity的init( Properties p )方法，就看看Velocity里做了些什么。Velocity里全是静态方法。主要有如下几个方法：<br>&nbsp;&nbsp;&nbsp; 1、初始化;2、预演传入的数据（发现在应用中没有使用，只在单元测试代码中引用到）;3、合并数据和模板;4、设置/获取属性;5、操作信息提示（不过，都不推荐使用了），整个的看下来，有两点：1、主要的还是初始化和数据合并了;2、这个类只是一个中转类，所有的方法，最终都是调另一个类org.apache.velocity.runtime.RuntimeSingleton的方法。<br>&nbsp;&nbsp;&nbsp; 打开RuntimeSingleton的代码，看一看，发现它同Velocity类差不多，类本身不做实际的处理操作。它与Velocity不同的是，它是申明一个静态的实例，再调用这个实例，个别地方（init()）加了同步控制。如此处理体现它这个类的名字－－单例，核心的还是这个静态实例org.apache.velocity.runtime.RuntimeInstance。<br>&nbsp;&nbsp;&nbsp; 到RuntimeInstance，就开始接触到Velocity的处理核心了。<br><br>&nbsp;&nbsp;&nbsp; 写到这儿，突然没有写下去的冲动了，暂切休息一下。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 抽时间看了一下Velocity子项目tool下的VelocityViewServlet的源码，比VelocityServlet要实现的好多了，与struct接合的比较好。<br>&nbsp;&nbsp;&nbsp; Velocity，不仅仅适合于web应用，还可以作生成SQL、XML的模板，内容比较多，待一一挖掘。
<img src ="http://www.blogjava.net/junctioner/aggbug/120928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2007-05-30 15:49 <a href="http://www.blogjava.net/junctioner/archive/2007/05/30/120928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源需要一个良好的商业模式</title><link>http://www.blogjava.net/junctioner/archive/2007/04/24/113100.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Tue, 24 Apr 2007 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2007/04/24/113100.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/113100.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2007/04/24/113100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/113100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/113100.html</trackback:ping><description><![CDATA[在网上看到&#8220;<font size="3">盖茨北大演讲遭开源人士抗议</font>&#8221;一事，对开源兄的行为，我选择不置可否，但对软件而言，我选择开源。<br>现在的局面是，商业化的软件比开源的软件，要活地滋润、舒展多了，所以也会发生这次事件。<br><br>为什么会出面这种局面？为什么需要开源？在这里我不阐述自己的观点－－持有同感的人都有自己的想法。<br><br>开源如果想要活得不那么艰难，我想：需要一个良好的商业模式支持。<br>开源不是免费！<br>开源要生存发展，也需要营养供应，不能仅靠一部分怀开源激情的人或者组织无偿奉献能支撑起来的。<br>linux、jboss的生存模式算是比较成功的，但还不能够同商业化软件相比较，还需要更充足的营养源。<br>这二者的模式也是一定范围内有效，不能做到推而广之。<br><br>开源软件生存模式的探索之路还很广，还很远，需要有志之士共同努力。<br><br><img src ="http://www.blogjava.net/junctioner/aggbug/113100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2007-04-24 10:03 <a href="http://www.blogjava.net/junctioner/archive/2007/04/24/113100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse 3.3m6发布之际的感慨</title><link>http://www.blogjava.net/junctioner/archive/2007/03/28/106930.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Wed, 28 Mar 2007 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2007/03/28/106930.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/106930.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2007/03/28/106930.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/106930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/106930.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/junctioner/archive/2007/03/28/106930.html'>阅读全文</a><img src ="http://www.blogjava.net/junctioner/aggbug/106930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2007-03-28 13:20 <a href="http://www.blogjava.net/junctioner/archive/2007/03/28/106930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>男孩、年青的父亲、男人</title><link>http://www.blogjava.net/junctioner/archive/2006/07/17/58565.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Mon, 17 Jul 2006 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2006/07/17/58565.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/58565.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2006/07/17/58565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/58565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/58565.html</trackback:ping><description><![CDATA[　有一段时间没写blog了，个中的理由就是这段时间心情浮躁，沉不下来。<br /><br />　　毕业后参加工作已整整6个年头了。从一个只知道找父母要钱花，不知道社会是什么样的“弱冠”到现在刚开始意识到要靠自己养家糊口，照顾父母的准“而立”，要考虑的事情比以前复杂的多了，这段时间工作也是动荡的，没有一个稳定的基础考虑自己要考虑的问题，愈是浮萍一样的没有根。<br /><br />　　今，得空闲一会，浏览blog，看到一个blog，它的公告图片上是一个漂亮的小女孩，它的ICO是卡通的唐老鸭，抑郁的心情忽的开阔了。想那小女孩肯定是作者的女儿，唐老鸭肯定是作者女儿的所爱。如果年青的妈妈，她的blog上放这些，是很容易理解的，而作者是一个大老爷们，他的blog上放这些与“大老爷们”身份有巨大的反差，但正是这种反差，让我看到一位父亲对女儿的喜爱。<img src ="http://www.blogjava.net/junctioner/aggbug/58565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2006-07-17 14:51 <a href="http://www.blogjava.net/junctioner/archive/2006/07/17/58565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>信息化市场中，用户就是上帝否？</title><link>http://www.blogjava.net/junctioner/archive/2006/04/03/38853.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Mon, 03 Apr 2006 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2006/04/03/38853.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/38853.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2006/04/03/38853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/38853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/38853.html</trackback:ping><description><![CDATA[粗读王永强的 <a href="http://news.csdn.net/n/20060401/88920.html">解析管理信息化的“十大陷阱”</a> ，最有同感的是“买方决定性陷阱”。<br /><br />   中国信息化的现状说：邓小平提出建设有中国特色的社会主义，或许是因为中国的政治宣传力度比较强，企业的发展管理策略也带上“特色”，信息化就自然而然的要有自己的特色，如果拷贝另一企业的信息化经验成果，就是没有特色－－你用你的枪，我用我的炮。<br />   企业信息化软件实施说：信息化是一把手工程，如果一把手支持稍有松懈，所有的工作就有可能失败，原因什么呢 ？县官不如现管，现管的人不支持，这工作就开展不了。而上一个新系统，对于现管的人来说，就如同是一次革命，牵扯到的利益太多，稍有一点不均衡，不满意的人出来了，你的工作就得暂停一下。所以，新系统必须考虑到企业的实际情况，现有的模式，你再先进、再科学，也得适合我的脚，我才穿。<br />   信息化系统提供商说：我们是公司行为，先生存，再发展；客户要什么东西，我们就做什么东西；先做项目，再做产品。    <br />   圈内流传消息说：中国软件不如印度，更比不上欧美。欧美做内核，简单重复的劳力就支援第三世界发展，换句话说是中国帮外国做产品，但没有自己的产品，而且作为劳动关系雇员还不如同桌。<br /><br />   在这条“生态链”中，谁是谁非？作为一个局外人看其中的问题很清楚，但身处某一个链节中时，没有谁能是我这是问题。如果企业说，我要一个产品，不要项目，这样，中国肯定会出现一些响当当的产品；如果系统提供商说，我有非常好的产品，可以做实施，不做项目，产品有吸引力应能取到市场的一杯羹。<img src ="http://www.blogjava.net/junctioner/aggbug/38853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2006-04-03 11:11 <a href="http://www.blogjava.net/junctioner/archive/2006/04/03/38853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax－json-rpc处理过程</title><link>http://www.blogjava.net/junctioner/archive/2006/03/16/35644.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Thu, 16 Mar 2006 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2006/03/16/35644.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/35644.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2006/03/16/35644.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/35644.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/35644.html</trackback:ping><description><![CDATA[<p>在web.xml文件中，可以发现<br/>&nbsp; &lt;servlet-mapping&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;com.metaparadigm.jsonrpc.JSONRPCServlet&lt;/servlet-name&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/JSON-RPC&lt;/url-pattern&gt;<br/>&nbsp; &lt;/servlet-mapping&gt;<br/>所有的请求提交到这个Servlet后分发处理并做出响应。</p><p>JSONRPCServlet.java中实现了init()和service()，</p><p>init() 中只是取了些配置参数作了相关设置；</p><p>service() 中实现了请求处理；</p><p>1.从session中创建/获取JSONRPCBridge对象；</p><p>2.把提交的数据装入一个JSONObject对象中；</p><p>3.用JSONRPCBridge对象的call方法处理JSONObject对象并返回JSONRPCResult对象。</p><p>这个处理较ajax-buffalo 中的处理单调了不少。</p><p></p><p>再来看看JSONRPCBridge.java是如何构建的。</p><p>1.内置6个内部类：CallbackData、ClassData、LocalArgResovleData、MethodCandidate、MethodKey、ObjectInstance；</p><p>2.还有一些辅助处理的方法，比较多（提取为一个或者多个辅助类比较好）；</p><p>3.核心的就是call()方法了。运用的是java反射机制，进行方法调用。这个方法写的也比较长，没仔细看，只看到有它两个可取的地方，一个就返回对象的序列化，另一个是对不同异常，给出相应返回的处理比较细致，这样有利于找到异常在什么地方，估计是原因引起的。</p><p></p><p></p><p>在客户端的处理，是把各方法、对象串连在一起，封装后，便于应用。</p><p>它把请求的数据对象化再以串的形式提交，后端再做一个反向操作，方便了数据处理。这种方式比ajax-buffalo 中把数据组织成一个XML结构的数据包提交、处理效率高。</p><br><br>
<img src ="http://www.blogjava.net/junctioner/aggbug/35644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2006-03-16 13:57 <a href="http://www.blogjava.net/junctioner/archive/2006/03/16/35644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加强对(Oracle)SQL语句的学习(0)</title><link>http://www.blogjava.net/junctioner/archive/2006/03/16/35639.html</link><dc:creator>junctioner</dc:creator><author>junctioner</author><pubDate>Thu, 16 Mar 2006 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/junctioner/archive/2006/03/16/35639.html</guid><wfw:comment>http://www.blogjava.net/junctioner/comments/35639.html</wfw:comment><comments>http://www.blogjava.net/junctioner/archive/2006/03/16/35639.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/junctioner/comments/commentRss/35639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/junctioner/services/trackbacks/35639.html</trackback:ping><description><![CDATA[
		<p>－－沉浸在技术之中，如同喝高度白酒，比较麻醉人。</p>
		<p>工作中，遇到比较复杂的SQL语句，也挺费时间的。今天有时间就研究一下，找到如下几个资源链（比较懒，也懒得COPY，避嫌抄袭）</p>
		<p>
				<a href="http://www.51one.net/study/Oracle/list1.htm">http://www.51one.net/study/Oracle/list1.htm</a>
		</p>
		<p>学习两个关键字的用法，intersect（取交集），minus（取差集）</p>
		<p>(select a.name from a) intersect (select b.name from b)</p>
		<p>(select a.name from a) minus (select b.name from b)</p>
		<p>｛重学高等数学，全还给老师了，现在自己去要回来，上Google：）</p>
		<p>并集：A和B相加的全部；交集：A和B相交叠的部分；差集：并集-交集；补集：如果集合B是集合I的子集，我们把I看作全集，那么I与B的差集I－B，叫做B在I中的补集｝</p>
		<p>SQL语句优化技术分析</p>
		<p>
				<a href="http://www.pconline.com.cn/pcjob/other/data/oracle/0501/536463.html">http://www.pconline.com.cn/pcjob/other/data/oracle/0501/536463.html</a>
		</p>
		<p>避免用</p>
		<p>
		</p>
		<table style="WIDTH: 512px; HEIGHT: 73px" cellspacing="1" cellpadding="1" width="512" border="1">
				<tbody>
						<tr>
								<td> 避免使用</td>
								<td> 替代方法</td>
						</tr>
						<tr>
								<td>field in(a,b,c)</td>
								<td> field=a or field = b or field=c</td>
						</tr>
						<tr>
								<td>field is null /is not null</td>
								<td> field &gt; ' ' 、field &gt; 0</td>
						</tr>
						<tr>
								<td>
										<p> select * from a   </p>
										<p> union</p>
										<p> select * from b</p>
										<p>先取两表，再合并</p>
								</td>
								<td>
										<p> select * from a</p>
										<p> union all</p>
										<p> select * from b</p>
										<p>简单的将两个结果合并后就返回</p>
								</td>
						</tr>
						<tr>
								<td> </td>
								<td> </td>
						</tr>
				</tbody>
		</table>
		<br />
		<br />
<img src ="http://www.blogjava.net/junctioner/aggbug/35639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/junctioner/" target="_blank">junctioner</a> 2006-03-16 13:51 <a href="http://www.blogjava.net/junctioner/archive/2006/03/16/35639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>