<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>Agile</title>
  <link>http://agilejava.blogbus.com</link>
  <description><![CDATA[A programmer's note]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Fri, 09 Feb 2007 00:09:15 +0800</lastBuildDate>
  <image>
									<url>http://public.blogbus.com/images/head.gif</url>
									<title>Agile</title>
									<link>http://agilejava.blogbus.com</link>
								</image>  <item>
   <title>一个多月没写了</title>
   <description><![CDATA[<p>刚才看了一下上一个blog的时间，7.6号，一算已经一个多月没写了。借口还是老样子，忙。</p><p>从3月中旬开始准备，到前些日子正式上线，一直在忙奥运的项目，主要是这个<a href="http://info.2008.sohu.com" target="_blank">http://info.2008.sohu.com</a> .</p><p>开幕式那天在公司值班，不停的检查系统状态，快讯的发送状态，也没好好看网上的直播。</p><p>晚上回到家中，快2点了，cctv5重播，我看了会儿，听那小孩唱歌，突然很感动，后来听全场唱国歌，差点哭了，在那一下，有种很自豪的感觉，我和同事所做的项目是很有意义的，呵呵。</p><p>还有10几天，坚持就是胜利，呵呵。 </p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/18821148.html">Wubi</a> 2008-04-10</div><div><a href="http://agilejava.blogbus.com/logs/15344346.html">Groovy字符串操作</a> 2008-02-14</div><div><a href="http://agilejava.blogbus.com/logs/11418696.html">Groovy 脚本小技巧两则 | 解决vpnc覆盖resolv.conf的问题</a> 2007-12-03</div><div><a href="http://agilejava.blogbus.com/logs/8388707.html">常居顶端</a> 2007-09-22</div><div><a href="http://agilejava.blogbus.com/logs/7234081.html">NP问题是个问题</a> 2007-07-30</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F27513971.html&title=%E4%B8%80%E4%B8%AA%E5%A4%9A%E6%9C%88%E6%B2%A1%E5%86%99%E4%BA%86">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/27513971.html</link>
   <author>agilejava</author>
   <pubDate>Sun, 10 Aug 2008 23:27:35 +0800</pubDate>
  </item>
  <item>
   <title>HashMap.get() can cause an infinite loop!</title>
   <description><![CDATA[<p>看到这个题目吓了一跳，竟然有这种事，记在这里，敲个警钟。</p><p><a href="http://lightbody.net/blog/2005/07/hashmapget_can_cause_an_infini.html" target="_blank">HashMap.get() can cause an infinite loop!</a></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/16416465.html">Apache MINA竟然源自Netty2</a> 2008-03-05</div><div><a href="http://agilejava.blogbus.com/logs/14061975.html">epoll selector</a> 2008-01-18</div><div><a href="http://agilejava.blogbus.com/logs/13211115.html">RMI JDK6比JDK5强的地方</a> 2008-01-03</div><div><a href="http://agilejava.blogbus.com/logs/12599601.html">A hash set puzzler</a> 2007-12-24</div><div><a href="http://agilejava.blogbus.com/logs/12540606.html">在Linux下重新安装Netbeans6.0</a> 2007-12-23</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F24241911.html&title=HashMap.get%28%29+can+cause+an+infinite+loop%21">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/24241911.html</link>
   <author>agilejava</author>
   <pubDate>Sun, 06 Jul 2008 23:39:06 +0800</pubDate>
  </item>
  <item>
   <title>Java 多线程与并发编程专题</title>
   <description><![CDATA[http://www.ibm.com/developerworks/cn/java/j-concurrent/&nbsp;<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/18821148.html">Wubi</a> 2008-04-10</div><div><a href="http://agilejava.blogbus.com/logs/12599601.html">A hash set puzzler</a> 2007-12-24</div><div><a href="http://agilejava.blogbus.com/logs/12458079.html">Escape Analysis in Java 6</a> 2007-12-22</div><div><a href="http://agilejava.blogbus.com/logs/6095282.html">请和我们一起留住9岁的孩子</a> 2007-06-24</div><div><a href="http://agilejava.blogbus.com/logs/5598592.html">Don't use String literals for the synchronized blocks!</a> 2007-06-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F23609802.html&title=Java+%E5%A4%9A%E7%BA%BF%E7%A8%8B%E4%B8%8E%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E4%B8%93%E9%A2%98">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/23609802.html</link>
   <author>agilejava</author>
   <pubDate>Thu, 26 Jun 2008 12:00:40 +0800</pubDate>
  </item>
  <item>
   <title>近期总结</title>
   <description><![CDATA[<p>有好些日子没有写Blog了，奥运越来越近，工作是越来越忙了，呵呵。</p><p>最近主要是在搞公司的工作，&nbsp;抽空把Scala研究了一下。</p><p>用Scala写了一些程序，因为还不熟悉，所以经常要查文档，看资料。</p><p>着重研究了一下Scala的Actor用法，在此推荐两篇论文：&nbsp;</p><p><a href="http://lampwww.epfl.ch/~odersky/papers/jmlc06.pdf" target="_blank">Event-Based Programming without Inversion of Contro</a>l 和 <a href="http://lamp.epfl.ch/~phaller/doc/haller07coord.pdf" target="_blank">&nbsp;Actors that Unify Threads and Events</a>,</p><p>这两个论文都是在<a href="http://www.scala-lang.org/docu/files/api/scala/actors/Actor.html" target="_blank">Actor</a>&nbsp;的API中引用的。</p><p>Sala的Actor即有Erlang中轻量级Process的优势，又可以直接当作本地线程使用。</p><p>我总结了一下，对于Actor的使用，基本上可以根据任务的特点来决定使用哪种了:</p><p>1.cpu相关的</p><p>对于这种任务，无论是Erlang的Process，还是Scala的Actor都可以支持得很好，Scala的实现是用一个线程池来执行Actor,它可以根据cpu的个数决定线程池中工作线程的个数，同时根据任务的个数，适时的调整这工作线程的个数。</p><p>写法在Scala的例子中有很多，类似如下：&nbsp;</p><pre>loop {      react {  ........           }  } </pre><p><br /><br /> 2.io相关的</p><p>这种任务主要的工作不在cpu,而在IO操作上，比如读写Socke等，类似这种操作的时候，最好使用Actor的线程特性，也就是在ract的时候，根据参数新创建一个Actor来执行和IO相关的任务，下面的&ldquo;主Actor&rdquo;的任务是接收消息，每收到一个消息就启动一个Actor去请求页面的内容,然后再做相关的处理，这也是<a href="http://lamp.epfl.ch/~phaller/doc/haller07coord.pdf" target="_blank">Actors that Unify Threads and Events </a>里所主要表达的内容。</p><pre>loop {  </pre><pre>    react {  </pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;url:String&nbsp;=&gt;</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;actor｛</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//由个新建的actor执行IO操作,避免阻塞后续的其它的请求</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;response&nbsp;=&nbsp;HttpUtil.get(url)&nbsp;</pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;｝&nbsp;         </pre><pre> }  </pre><pre>} </pre><p>用Scala写并发方面的程序要比Java来得容易，Actor的使用要小心一些，否则不小心就搞出一个&ldquo;串行&rdquo;来，呵呵。</p><p>说说Struts2吧，&nbsp;</p><p>&nbsp;很久没有用过Struts2之类的Web框架了，最近在用Struts2，开始是同事基本上把环境都搭好了，我只需要下载更新后，按步就班地开发就好了。昨天需要我从开始弄一个应用，那就一个背。照猫画虎地把应用弄起来，写action,写jsp，还算顺利。这时发现了一个问题，因为我用的了所谓的&quot;模型驱动&quot;这种参数注入方式，OGNL以前也用过，它可以根据表达来给Action中的对象属性设置由页面中传入的参数。</p><p>private Sample sample;</p><p>public&nbsp;void&nbsp;setSample(Sample&nbsp;sample){</p><p>this.sample&nbsp;=&nbsp;sample;</p><p>}</p><p>有了上面这段代码，OGNL就能自动地把提交的参数设置到sample这个对象的属性中，比如sample.user.</p><p>这就让我产生了一个疑问，如果用户知道我们的Action中的其它setter方法，那会不会受到&rdquo;攻击&ldquo;呢。</p><p>我试了一下，&nbsp;&nbsp;</p><p>private OwnSample ownSample;</p><p>public&nbsp;void&nbsp;setOwnSample(OwnSample&nbsp;sample){</p><p>this.OwnSample&nbsp;=&nbsp;sample;</p><p>}</p><p>&nbsp;假设用户知道有这么一个属性可以用，那种他在发送请求的时候会加上一个ownSample.id=XX之类的参数，就会造成OGNL首先会生成一个OwnSample对象，然后设置属性，然后调用 setOwnSample设置给Action中。如果这个参数是使用其它的途径注入，如用Spring,那用户设置的参数会被覆盖掉(在这种情况下也是有害的，因为无谓地多生成了一次对象，还要看创建对象的代价大小，如果是那种比较费时的创建那就惨了)，反之用户的参数就会生效了。</p><p>虽然是内部使用的程序，我觉得还是能避免这种问题最好，找了一下API，发现可以定义一个acceptableParameterName的方法来过滤一下参数就保险了。</p><p>类似的问题还有Struts2在配置文件中定义Action的时候，支持通配符，例如:</p><p>&lt;action name=&quot;user_*&quot; class=&quot;com.UserAction&quot; method=&quot;{1}&quot;&gt;<br /><br />这种配置我觉得也是有风险的，如果UserAction里有一个一般用户都不知道的方法，那么如果被猜出来，或者被&ldquo;离职的职员&rdquo;恶意访问，问题就大了，除非对这种方法有额外的权限检查。</p><p>所以如果有这种问题，还是勤快点儿，尽量少用通配符的好，呵呵。</p><p>这两个问题是我正经用了两天Struts2之后感觉不太对的地方，写出来，也可能有更好的解决办法，供大家留意一下。</p><p>多说一句，现在的各种框架的Demo&nbsp;或者样例一般是怎么简单怎么来，让人一看就觉得这太简单了，太好用了，省得我老得request.getParameter一个一个的把参数凑整齐再用，这么用多方便。我们还是小心点好，Demo中的例子，不一定在生产环境中靠谱，还需要我们自己推敲一下。:)</p><p>&nbsp;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/18096012.html">还是没有忍住</a> 2008-04-02</div><div><a href="http://agilejava.blogbus.com/logs/17663169.html">First Steps to Scala</a> 2008-03-25</div><div><a href="http://agilejava.blogbus.com/logs/2443792.html">Tapestry4.0中的session</a> 2006-05-11</div><div><a href="http://agilejava.blogbus.com/logs/1980402.html">jsp tapestry asp.net 处理大量组件/tag的比较</a> 2006-02-27</div><div><a href="http://agilejava.blogbus.com/logs/1104185.html">websphere中的数据库编程一定要注意的一个问题</a> 2005-04-07</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F20747142.html&title=%E8%BF%91%E6%9C%9F%E6%80%BB%E7%BB%93">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/20747142.html</link>
   <author>agilejava</author>
   <pubDate>Sun, 11 May 2008 23:00:22 +0800</pubDate>
  </item>
  <item>
   <title>Wubi</title>
   <description><![CDATA[<p>在家里的时候， 习惯使用Ubuntu,有时上班的时候，总是想这个功能要是在windows里有就好了。</p><p>随着Ubuntu8.04的,提供了一种新的安装方式 <a href="http://wubi-installer.org/" target="_blank">Wubi</a></p><p>以下是摘自官方站的介绍：&nbsp;</p><p><em>Wubi is a Ubuntu installer for Windows users that will bring you into the Linux world with a single click. Wubi allows you to install and uninstall Ubuntu as any other application. If you heard about Linux and Ubuntu, if you wanted to try them but you were afraid, Wubi is for you.</em></p><p>昨天报着试试看的心理，边工作边使用Wubi下载安装了一个Ubuntu8.04,安装完成后，重新启动竟然是两个启动选项，可以直接引导进入Ubuntu。</p><p>今天试着在Ubuntu下工作，基本上所有的工作都可以处理了，只是偶尔需要访问公司的内部网站，对FireFox支持不好，用不了，&nbsp;还得借笔记本临时顶一下。</p><p>总得来说，经过一天的试用，Wubi是一种非常好的安装Ubuntu的方式，不影响现有的分区，如果不满意，随时可以删掉，不用担心分区表被破坏之类的问题，推荐一下。 :)</p><p>将来，在公司工作时，Ubuntu也将是我的首选平台，呵呵。&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/17507193.html">Ubuntu8.04发布倒计时</a> 2008-03-23</div><div><a href="http://agilejava.blogbus.com/logs/14189076.html">Gnome窗口最大，最小和关闭按钮消失</a> 2008-01-20</div><div><a href="http://agilejava.blogbus.com/logs/14061975.html">epoll selector</a> 2008-01-18</div><div><a href="http://agilejava.blogbus.com/logs/14010939.html">我的新KDE4桌面</a> 2008-01-17</div><div><a href="http://agilejava.blogbus.com/logs/13351131.html">KDE4.0 发布日期越来越近了</a> 2008-01-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F18821148.html&title=Wubi">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/18821148.html</link>
   <author>agilejava</author>
   <pubDate>Thu, 10 Apr 2008 23:50:56 +0800</pubDate>
  </item>
  <item>
   <title>10 Ways to Learn New Things in Development</title>
   <description><![CDATA[<p>从一个Blog上看到的一些很不错的建议: <a href="http://www.philosophicalgeek.com/2008/04/01/10-ways-to-learn-new-things-in-development/ " target="_blank">10 Ways to Learn New Things in Development</a> .</p><p>摘要如下，记在这里，让自己能经常想起它们并坚持做到.&nbsp;</p><p><strong>1.</strong> <strong>Read books</strong></p><p><strong>2.</strong> <strong>Read Code</strong>. </p><p><strong>3.</strong> <strong>Write Code</strong></p><p><strong>4. Talk to other developers</strong>&nbsp; </p><p><strong>5. Teach others</strong></p><p><strong>6. Listen to podcasts</strong></p><p><strong>7. Read blogs</strong></p><p><strong>8. Learn a new language</strong></p><p><strong>9. Learn the anti-patterns</strong></p><p><strong>10. Be Humble</strong></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/14333745.html">又感冒</a> 2008-01-23</div><div><a href="http://agilejava.blogbus.com/logs/14133276.html">久违了的学习</a> 2008-01-19</div><div><a href="http://agilejava.blogbus.com/logs/10143578.html">国庆中期总结</a> 2007-10-03</div><div><a href="http://agilejava.blogbus.com/logs/8040439.html">史上最经典摇滚柔情曲15首(续)</a> 2007-09-01</div><div><a href="http://agilejava.blogbus.com/logs/7829041.html">最近在看的书</a> 2007-08-20</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F18287133.html&title=10+Ways+to+Learn+New+Things+in+Development">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/18287133.html</link>
   <author>agilejava</author>
   <pubDate>Sat, 05 Apr 2008 00:58:15 +0800</pubDate>
  </item>
  <item>
   <title>还是没有忍住</title>
   <description><![CDATA[<p>我最终还是没有忍住，刚才悄悄地在网上用信用卡买了一本<a href="http://www.artima.com/shop/forsale" target="_blank">&lt;Programming in Scala&gt;</a>,$22.5啊，这是我买过得最贵的书了，而且还是PDF的，连张纸都没有。</p><p>传到我的8700上了，要好好学习，好赖也是用美元买的。 :)<br /> </p><p>&nbsp;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/20747142.html">近期总结</a> 2008-05-11</div><div><a href="http://agilejava.blogbus.com/logs/17663169.html">First Steps to Scala</a> 2008-03-25</div><div><a href="http://agilejava.blogbus.com/logs/14189076.html">Gnome窗口最大，最小和关闭按钮消失</a> 2008-01-20</div><div><a href="http://agilejava.blogbus.com/logs/7943744.html">用groovy shell从sogou音乐盒下载专辑(2)</a> 2007-08-27</div><div><a href="http://agilejava.blogbus.com/logs/7234081.html">NP问题是个问题</a> 2007-07-30</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F18096012.html&title=%E8%BF%98%E6%98%AF%E6%B2%A1%E6%9C%89%E5%BF%8D%E4%BD%8F">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/18096012.html</link>
   <author>agilejava</author>
   <pubDate>Wed, 02 Apr 2008 02:03:11 +0800</pubDate>
  </item>
  <item>
   <title>First Steps to Scala</title>
   <description><![CDATA[<pre class="indent"><a href="http://www.scala-lang.org/" target="_blank"><img src="http://www.scala-lang.org/images/scala_logo.png" border="0" alt="Scala" width="80" height="55" /></a></pre><h2>
      What is Scala?
    </h2>
    <p>
      Scala is a general purpose programming language designed to express
      common programming patterns in a concise, elegant, and type-safe
      way. It smoothly integrates features of object-oriented and
      functional languages. It is also fully interoperable with
      <a href="http://java.sun.com/" title="The Java Programming Language" class="external">Java</a>. (<em>摘自Scala主页的简介</em>)</p><p>&nbsp;</p><pre class="indent">最近晚上的大部分时间都耗在它上面了， 第一次知道Scala是我在网上搜索Groovy的性能问题的时候，</pre><pre class="indent">发现了一个Scala与Groovy的性能评测对比，简单的了解了一下Scala，没什么感觉，被它奇怪的语法</pre><pre class="indent">吓到了。</pre><pre class="indent">近期一段时间，一直在忙公司的项目，晚上回来想做点什么，就想起了Scala，想研究一下，连续几天，</pre><pre class="indent">慢慢的被它吸引了，原来认为奇怪的语法，现在看起来实在是很简洁，和阿菜两个人决定一起研究一下Scala。</pre><pre class="indent">他下午发给我一个地址 <a href="http://www.artima.com/scalazine/articles/steps.html" target="_blank">First Steps to Scala</a></pre><pre class="indent">讲Scala入门的，非常不错，推荐，呵呵。</pre>到目前为止，刚刚入一点门，继续学习 :)<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/20747142.html">近期总结</a> 2008-05-11</div><div><a href="http://agilejava.blogbus.com/logs/18096012.html">还是没有忍住</a> 2008-04-02</div><div><a href="http://agilejava.blogbus.com/logs/14333745.html">又感冒</a> 2008-01-23</div><div><a href="http://agilejava.blogbus.com/logs/11395578.html">Opera Browser JavaScript | Gant真不错</a> 2007-12-02</div><div><a href="http://agilejava.blogbus.com/logs/7702260.html">eclipse不格式化注释</a> 2007-08-15</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F17663169.html&title=First+Steps+to+Scala">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/17663169.html</link>
   <author>agilejava</author>
   <pubDate>Tue, 25 Mar 2008 23:13:39 +0800</pubDate>
  </item>
  <item>
   <title>Ubuntu8.04发布倒计时</title>
   <description><![CDATA[<p>Ubuntu8.04发布倒计时,很快就要发布正式版了，现在一直在用它的测试版，几乎天天都要更新一下.</p><p>我一般在家用Ubuntu,响应<a href="http://www.ubuntu.com/getubuntu/countdown" target="_blank">号召</a>，在我的blog加了一个广告，呵呵。 </p><p>&nbsp;</p><p>&nbsp;</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/18821148.html">Wubi</a> 2008-04-10</div><div><a href="http://agilejava.blogbus.com/logs/14189076.html">Gnome窗口最大，最小和关闭按钮消失</a> 2008-01-20</div><div><a href="http://agilejava.blogbus.com/logs/14061975.html">epoll selector</a> 2008-01-18</div><div><a href="http://agilejava.blogbus.com/logs/14010939.html">我的新KDE4桌面</a> 2008-01-17</div><div><a href="http://agilejava.blogbus.com/logs/13351131.html">KDE4.0 发布日期越来越近了</a> 2008-01-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F17507193.html&title=Ubuntu8.04%E5%8F%91%E5%B8%83%E5%80%92%E8%AE%A1%E6%97%B6">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/17507193.html</link>
   <author>agilejava</author>
   <pubDate>Sun, 23 Mar 2008 12:37:08 +0800</pubDate>
  </item>
  <item>
   <title>Apache MINA竟然源自Netty2</title>
   <description><![CDATA[<p>最近可能要做一个网络相关的应用,这种应用少不了NIO的支持.</p><p>这几天一直在努力准备相关的技术,把以前学过用过的东西想捡回来.</p><p>今天晚上在网上看有关Reactor和Procator方面的资料,回忆起来一些,,不怎么就跑到<a href="http://mina.apache.org/" target="_blank">Apache MINA</a>上面去了.<br />看了一个PPT,发现它竟然源自NETTY2,NETTY2是<a rel="nofollow" href="http://gleamynode.net/" title="Visit page outside Confluence">Trustin Lee</a>(韩国人)开发的NIO框架.记得是在2004年的时候,我所在的公司就用它开发IVR方面的应用.那段时间学了很多东西,在开发学习的过程中也发现了一个NETTY2在高并发时的bug,后来我的经理写了一个邮件提交给了作者,最后他也采用了我们的建议,呵呵 ,这是我第一次对开源做&quot;贡献&quot;,当时看到作者把我们提交的BUG确认后并修复后,很兴奋.&nbsp; </p><p>一晃好几年过去了,没想到NETTY2已经发展到如此地步了,最近需要严重关注一下,可能的话就用MINA作为我们新应用的开发框架,有一种老友重逢的感觉.</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://agilejava.blogbus.com/logs/24241911.html">HashMap.get() can cause an infinite loop!</a> 2008-07-06</div><div><a href="http://agilejava.blogbus.com/logs/14061975.html">epoll selector</a> 2008-01-18</div><div><a href="http://agilejava.blogbus.com/logs/13211115.html">RMI JDK6比JDK5强的地方</a> 2008-01-03</div><div><a href="http://agilejava.blogbus.com/logs/12599601.html">A hash set puzzler</a> 2007-12-24</div><div><a href="http://agilejava.blogbus.com/logs/12540606.html">在Linux下重新安装Netbeans6.0</a> 2007-12-23</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fagilejava.blogbus.com%2Flogs%2F16416465.html&title=Apache+MINA%E7%AB%9F%E7%84%B6%E6%BA%90%E8%87%AANetty2">Del.icio.us</a></span></div>]]></description>
   <link>http://agilejava.blogbus.com/logs/16416465.html</link>
   <author>agilejava</author>
   <pubDate>Wed, 05 Mar 2008 01:25:35 +0800</pubDate>
  </item>
 </channel>
</rss>
