﻿<?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-george</title><link>http://www.blogjava.net/george/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 06:25:12 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 06:25:12 GMT</pubDate><ttl>60</ttl><item><title>spring注解笔记</title><link>http://www.blogjava.net/george/archive/2009/12/07/305078.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Mon, 07 Dec 2009 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/12/07/305078.html</guid><wfw:comment>http://www.blogjava.net/george/comments/305078.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/12/07/305078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/305078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/305078.html</trackback:ping><description><![CDATA[spring注解使用了有一段时间了，现做几个就简单的记录，具体是使用方式不用多说网上很多，这里便于记忆简单整理一下。<br />
1.注入的属性有2种方式<br />
&nbsp;&nbsp;&nbsp;1.1&nbsp;@Autowired（按类型type注入）<br />
&nbsp;&nbsp;&nbsp;1.2 @Resource（按名字name注入），<br />
&nbsp;&nbsp;&nbsp;&nbsp;另：如果遇到重复使用@Qualifer标注别名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果不需要某些属性注入可以设置Autowired或resources的required属性为false<br />
2.将bean纳入spring容器有4种方式<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.1 @Component（表示是spring容器中的bean，比较中立,没有其他含义）<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.2&nbsp;@Controller ，@Service ，@Repository，这3种和@Compnent功能一样，只是用于三层架构中的控制，业务及持久层。目前只是命名不同。<br />
&nbsp;&nbsp;&nbsp;&nbsp;另：@Scope可以定义bean的作用范围。<br />
3.对于注解需要配置context:component-scan定义初始化容器扫描的目录。<br />
<pre class="displaycode">
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">context:component-scan&nbsp;</span><span style="color: #ff0000">base-package</span><span style="color: #0000ff">="com.blog"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">context:include-filter&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="regex"</span><span style="color: #ff0000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expression</span><span style="color: #0000ff">="com\.blog\.service\..*"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">context:exclude-filter&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="aspectj"</span><span style="color: #ff0000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expression</span><span style="color: #0000ff">="com.blog.util..*"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">context:component-scan</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
</pre>
<br />
4.注释配置和 XML 配置的适用场合
<p>&nbsp;&nbsp;&nbsp;&nbsp;4.1注释配置不一定在先天上优于 XML 配置。如果 Bean 的依赖关系是固定的，（如 Service 使用了哪几个 DAO 类），这种配置信息不会在部署时发生调整，那么注释配置优于 XML 配置；反之如果这种依赖关系会在部署时发生调整，XML 配置显然又优于注释配置，因为注释是对 Java 源代码的调整，您需要重新改写源代码并重新编译才可以实施调整。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4.2如果 Bean 不是自己编写的类（如 JdbcTemplate、SessionFactoryBean 等），注释配置将无法实施，此时 XML 配置是唯一可用的方式。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4.3注释配置往往是类级别的，而 XML 配置则可以表现得更加灵活。比如相比于 @Transaction 事务注释，使用 aop/tx 命名空间的事务配置更加灵活和简单。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4.4所以在实现应用中，我们往往需要同时使用注释配置和 XML 配置，<strong>对于类级别且不会发生变动的配置可以优先考虑注释配置</strong>；<strong>而对于那些第三方类以及容易发生调整的配置则应优先考虑使用 XML 配置</strong>。<br />
参考资料：&nbsp;<br />
<a href="http://kdboy.javaeye.com/blog/419159">http://kdboy.javaeye.com/blog/419159</a> <br />
<a href="http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/">http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/</a></p>
<img src ="http://www.blogjava.net/george/aggbug/305078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-12-07 23:21 <a href="http://www.blogjava.net/george/archive/2009/12/07/305078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat内存溢出总结</title><link>http://www.blogjava.net/george/archive/2009/08/18/291579.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Mon, 17 Aug 2009 16:28:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/08/18/291579.html</guid><wfw:comment>http://www.blogjava.net/george/comments/291579.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/08/18/291579.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/291579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/291579.html</trackback:ping><description><![CDATA[在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的，当然处理方式也不一样。<br />
这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.OutOfMemoryError: Java heap space<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.OutOfMemoryError: PermGen space<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.OutOfMemoryError: unable to create new native thread.<br />
对于前两种情况，在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。（-Xms -Xmx -XX:PermSize&nbsp; -XX:MaxPermSize）<br />
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。<br />
<br />
第一种：是堆溢出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JVM中如果98％的时间是用于GC且可用的 Heap size 不足2％的时候将抛出此异常信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;没有内存泄露的情况下，调整-Xms -Xmx参数可以解决。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Xms:初始堆大小&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Xmx:最大堆大小&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但堆的大小受下面三方面影响：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.相关操作系统的数据模型（32-bt还是64-bit）限制；（32位系统下，一般限制在1.5G~2G；我在2003 server 系统下（物理内存：4G和6G，jdk：1.6）测试 1612M，64为操作系统对内存无限制。）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.系统的可用虚拟内存限制；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.系统的可用物理内存限制。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;堆的大小可以使用 java -Xmx***M&nbsp; version 命令来测试。支持的话会出现jdk的版本号，不支持会报错。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m <br />
<br />
第二种：永久保存区域溢出<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。<a href="http://www.javaeye.com/topic/80620?page=1">http://www.javaeye.com/topic/80620?page=1</a>&nbsp;的帖子有讨论的这个问题。可能是由于这些框架会动态class，而且jvm的gc是不会清理PemGen space的，导致内存溢出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这一个一般是加大-XX:PermSize&nbsp; -XX:MaxPermSize 来解决问题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-XX:PermSize 永久保存区域初始大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-XX:PermSize 永久保存区域初始最大值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这一般结合第一条使用，比如 set JAVA_OPTS= -Xms1024m -Xmx1024m&nbsp; -XX:PermSize=128M -XX:PermSize=256M<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有一点需要注意：java -Xmx***M&nbsp; version 命令来测试的最大堆内存是 -Xmx与&nbsp;-XX:PermSize的 和 比如系统支持最大的jvm堆大小事1.5G，那&nbsp;&nbsp;-Xmx1024m&nbsp; -XX:PermSize=768M 是无法运行的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
第三种：无法创建新的线程。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种现象比较少见，也比较奇怪，主要是和jvm与系统内存的比例有关。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G)，并且它至少要占用可用内存的一半。有人发现，在线程个数很多的情况下，你分配给JVM的内存越多，那么，上述错误发生的可能性就越大。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;产生这种现象的原因如下（<a href="http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html">从这个blog中了解到原因：http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html</a>）：
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每一个32位的进程最多可以使用2G的可用内存，因为另外2G被操作系统保留。这里假设使用1.5G给JVM，那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载，那么真正剩下的也许只有400M，现在关键的地方出现了：当你使用Java创建一个线程，在JVM的内存里也会创建一个Thread对象，但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范)，操作系统会在余下的400兆内存里创建这个物理线程，而不是在JVM的1500M的内存堆里创建。在jdk1.4里头，默认的栈大小是256KB，但是在jdk1.5里头，默认的栈大小为1M每线程，因此，在余下400M的可用内存里边我们最多也只能创建400个可用线程。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样结论就出来了，要想创建更多的线程，你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。</p>
<p>给出一个有关能够创建线程的最大个数的估算公式：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于jdk1.5而言，假设操作系统保留120M内存：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在2000/XP/2003的boot.ini里头有一个启动选项，好像是：<font color="#339966"><strong>/PAE /3G</strong></font> ，可以让用户进程最大内存扩充至3G，这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因此这种情况需要结合操作系统进行相关调整。<br />
<br />
因此：我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。<br />
<br />
参考资料（从这些资料中受益良多）：<br />
<a href="http://www.javaeye.com/topic/80620?page=1">http://www.javaeye.com/topic/80620?page=1</a> <br />
<a href="http://ggmm.blog.sohu.com/117545379.html">http://ggmm.blog.sohu.com/117545379.html</a> <br />
<a href="http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html">http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html</a> <br />
<a href="http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html">http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html</a> </p>
<br />
<img src ="http://www.blogjava.net/george/aggbug/291579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-08-18 00:28 <a href="http://www.blogjava.net/george/archive/2009/08/18/291579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>memcached资源</title><link>http://www.blogjava.net/george/archive/2009/07/25/288402.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Sat, 25 Jul 2009 15:55:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/07/25/288402.html</guid><wfw:comment>http://www.blogjava.net/george/comments/288402.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/07/25/288402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/288402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/288402.html</trackback:ping><description><![CDATA[memcached是目前比较不错的缓存。是一种集中式可以分布式部署的。现在许多大型的网站（facebook，豆瓣等）都使用memcached作为提高网站性能的重要的一环。<br />
最近在一个项目中用到了它感觉不错，下面提供一些不错的资源。<br />
Memcached相关资源：<br />
官方网站：<a href="http://www.danga.com/memcached/" target="_blank">http://www.danga.com/memcached/<br />
</a>Java client：<a href="http://www.infoq.com/cn/articles/memcached-java" target="_blank">http://www.infoq.com/cn/articles/memcached-java</a>&nbsp;<br />
不错的中文资源：<a href="http://tech.idv2.com/2008/08/17/memcached-pdf/" target="_blank">http://tech.idv2.com/2008/08/17/memcached-pdf/ （如果要了解memcached细节这个不错）<br />
</a>windows memcache安装：<a href="http://www.fcicq.net/wp/?p=160" target="_blank">http://www.fcicq.net/wp/?p=160</a>&nbsp;<br />
<br />
<span lang="EN-US" style="font-size: 20pt; mso-fareast-font-family: 黑体; mso-hansi-font-family: Arial; mso-fareast-language: ZH-CN"><strong><span style="font-size: 12pt"><span style="font-family: 黑体; mso-fareast-font-family: 黑体; mso-hansi-font-family: Arial"><strong><br />
</strong></span></span></strong></span>
<img src ="http://www.blogjava.net/george/aggbug/288402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-07-25 23:55 <a href="http://www.blogjava.net/george/archive/2009/07/25/288402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java处理图片的水印效果</title><link>http://www.blogjava.net/george/archive/2009/05/03/268700.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Sun, 03 May 2009 09:10:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/05/03/268700.html</guid><wfw:comment>http://www.blogjava.net/george/comments/268700.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/05/03/268700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/268700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/268700.html</trackback:ping><description><![CDATA[最近想做一个动态的图标，类似于iphone中的信息图标，图片上可以动态的显示通知信息的数目。<br />
因此就想到的水印效果，将一个默认的背景图片和数字合成。<br />
<br />
下面的这篇文章可以大大这个目的：<br />
<a href="http://javaeyetianjin.group.javaeye.com/group/topic/8527">http://javaeyetianjin.group.javaeye.com/group/topic/8527</a><br />
但缺点也很明显，图像会有一定程度的失真。<br />
BufferedImage image = new BufferedImage(wideth, height,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage.TYPE_INT_ARGB);<br />
可能在图片的处理过程中将像素打包成整数造成的。<br />
目前还没找到比较好的方案。<br />
<br />
<a href="http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html">http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html</a><br />
这个处理还是有点失真。<br />
<img src ="http://www.blogjava.net/george/aggbug/268700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-05-03 17:10 <a href="http://www.blogjava.net/george/archive/2009/05/03/268700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex学习网站</title><link>http://www.blogjava.net/george/archive/2009/04/01/263256.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Tue, 31 Mar 2009 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/04/01/263256.html</guid><wfw:comment>http://www.blogjava.net/george/comments/263256.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/04/01/263256.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/263256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/263256.html</trackback:ping><description><![CDATA[<br />
最近在了解google map的一些接口，无意间接触了flex，<br />
发现一个flex学习网站（<a href="http://www.airia.cn"><span style="color: #202eff;">http://www.airia.cn</span></a>）很不错.<br />
其中有一个栏目是<a href="http://www.airia.cn/FLEX_Directory/yizhou_flex_shipin_flexinaweek/"><span style="color: #202eff;">一周学会FLEX应用开发 视频教学</span></a>，里面的视频很清晰，使用英文讲的，发音很标准，基本可以听懂，听不懂下面还有翻译，是个flex学习和英语听力练习的好东东。<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/george/aggbug/263256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-04-01 00:11 <a href="http://www.blogjava.net/george/archive/2009/04/01/263256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>google音乐搜索试用</title><link>http://www.blogjava.net/george/archive/2009/03/31/263244.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Tue, 31 Mar 2009 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/03/31/263244.html</guid><wfw:comment>http://www.blogjava.net/george/comments/263244.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/03/31/263244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/263244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/263244.html</trackback:ping><description><![CDATA[google总是能够给人带来惊喜，昨天推出了挑歌功能感觉不错。<br />
<img src="file:///C:/DOCUME%7E1/%E9%98%BF%E4%B8%99/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><img src="http://www.blogjava.net/images/blogjava_net/george/musicselect.jpg" alt="" border="0" /><br />
可以根据不同的节奏，声调和音色来搜索歌曲，可以根据自己的心情来选择不同个歌曲。<br />
而且他的泡泡展示也很特别，很不错。<br />
<br />
<br />
<img src ="http://www.blogjava.net/george/aggbug/263244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-03-31 22:32 <a href="http://www.blogjava.net/george/archive/2009/03/31/263244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>0.38之深圳百公里</title><link>http://www.blogjava.net/george/archive/2009/03/22/261380.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Sun, 22 Mar 2009 15:58:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/03/22/261380.html</guid><wfw:comment>http://www.blogjava.net/george/comments/261380.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/03/22/261380.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/261380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/261380.html</trackback:ping><description><![CDATA[昨天参加了磨坊组织的2009年深圳百公里徒步活动。我和花花走了体验组的3段，从梧桐山到大梅沙共计38km。（体验组路程共49km要走的玫瑰海岸）<br />
<br />
之前在磨坊上找的路线图，从水库上方开始走。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81233.JPG" alt="" border="0" /><br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81235.JPG" alt="" border="0" /><br />
和上面一样，不过是地形图。<br />
<br />
行程：<br />
早上6点起床，做26路到世界之窗，在坐地铁到门诊部，好不容易挤上了211（这个才是起点站的第二站，车子已经满了，可见人多），经过一路小堵8：55才到梧桐山。也就是体验组的起点。由于之前没有报上名，也不谈签到了，直接就开路了。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81237.JPG" alt="" border="0" /><br />
这个是体验组出发点，人头攒动，参选这次活动的人很多，报名的有2000人左右，从实际的情形看至少5000以上。<br />
我们9点钟开始出发。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81240.JPG" alt="" border="0" /><br />
这是在第一段遇到的，可能是这次参加活动中年龄最小的了。呵呵，他还有签到卡。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81252.JPG" alt="" border="0" /><br />
<br />
第一段路上还有一出塌方，看起来有点危险。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81257.JPG" alt="" border="0" /><br />
<br />
11点到达第一签到点(盐田检查站),里程13km，速度还可以。<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81258.JPG" alt="" border="0" /><br />
这个小朋友一路碰到4次，还算有缘，他的体力不错。<br />
<br />
修整了40min，11：40开始第二段<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81272.JPG" alt="" border="0" /><br />
第二段是盘山公路比较累，偶尔有一些捷径。这个照片是由于相机没有完全打开时照的，看起来比较诡异。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81283.JPG" alt="" border="0" /><br />
呵呵，这种休息方式效果不错。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81290.JPG" alt="" border="0" /><br />
2：15到了东部华侨城的茶溪古修整了半小时。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81295.JPG" alt="" border="0" /><br />
这段路上看到了参赛宠物。这个狗狗很漂亮。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81298.JPG" alt="" border="0" /><br />
3：20到了第二签到点，山海大关，里程16km（总里程29km）。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81300.JPG" alt="" border="0" /><br />
一般报名的一路上会有4灌红牛补给，分别设在不同的签到点。俺们由于没有报上名，没能享受到这个待遇。<br />
<br />
这里修整了半个小时，3：50开始出发。<br />
<br />
下一个终点是大梅沙，可能是由于第二段路程太辛苦，我已经感觉到腿有点不适了。下了山后步子已经迈不开了。<br />
好不容易慢慢拖到大梅沙。<br />
<img src="http://www.blogjava.net/images/blogjava_net/george/SNV81306.JPG" alt="" border="0" /><br />
6：00到了大梅沙，里程9km（总里程38km）<br />
<br />
这个时候签到点已经没人了，看看时间，和自己的状态，还有回来的坐车问题，我还是决定量力而行，结束了这段厉程。<br />
<br />
今天一觉醒来，好像残废了一样，发现从腰一下没有不酸不疼的地方，步子已经迈不开了。<br />
到网上查了有没有缓解办法：<br />
这种叫延迟性肌肉酸痛症。一般在运动锻炼后24小时内出现，24～72小时内达顶点，5～7天后疼痛基本消失。<br />
处理方法：<br />
<font style="font-size: 10.5pt;"><font face="宋体 "><font style="font-size: 12pt;"><font face="微软雅黑 ">可对酸痛的局部肌肉进行热敷按摩；口服维生素C；针灸和电疗也有一定作用.</font></font></font></font>不做治疗，5～7天后症状也会消失。<br />
<br />
不过总体来所，这次徒步活动还是不错的体验。<br />
<br />
<br />
<img src ="http://www.blogjava.net/george/aggbug/261380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-03-22 23:58 <a href="http://www.blogjava.net/george/archive/2009/03/22/261380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于spingside</title><link>http://www.blogjava.net/george/archive/2009/03/19/260608.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Wed, 18 Mar 2009 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/03/19/260608.html</guid><wfw:comment>http://www.blogjava.net/george/comments/260608.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/03/19/260608.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/260608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/260608.html</trackback:ping><description><![CDATA[关注springside已经有一段时间，<br />
最早是从2.0版本开始的，现在已经到了3.1.2了。<br />
ss给我的感觉是从新鲜到兴奋到失望。这儿发点牢骚。<br />
主要体现在下面几点；<br />
1.springside项目的延续性不好<br />
ss2到ss3.1.2随着版本号的增加功能确越来越小。做的一些demo演示越来越不实用。<br />
很怀念书店的demo，这个例子可以所是让ss经过了一个实践的检验，里面的技术细节考虑的要比现在的miniservice，miniexample要周全的多。<br />
我喜欢ss一方面是因为他的新鲜的架构组合和新技术指导性，另一方很大程度上是因为这个demo，他让我看到了新架构带来的生产力，实在的东西。<br />
而现在你在从springside<a href="http://www.springside.org.cn">官方网站</a>下载SpringSide 2.0 RC1 all in one，下来运行一下看看，没有半天到一天的时间更不不可能跑起来。这个里面使用maven来管理jar包，使用ant来调用，遗憾的是springside原先建立的私有lib Repository已经消失了，在这个项目中依赖的包非常多，有些是可以在公共的Repository找到的，这部分到好办直接加入公共的Repository地址就可以了，而有以部分是经过springside封装或重新打包的这些包何处去寻，那只好把这一部分屏蔽掉了，保证项目的运行。原来引入这个maven工具是为了很方面明晰的找到依赖的包，这下倒好反而成了绊脚石。要理清楚里面的关系，还是要一点时间的。这个就是项目不延续造成的。<br />
那有人就奇怪了，说你为什么不用最新的版本，而这也是我的苦衷，现在的最新版本倒是很轻量，把这些东西全砍掉了，只留下了一些miniexample，很难有进一步的更细节一点的指导，而且这些东西没有经过一些实际项目的检验，可能还是会在细节上有所欠缺。就像一开始ss被封装成像ruby一样类似自动crud功能，而这个想法固然很cool但在实际应用中还是一个花架子，有很多不周全的地方，如果对基类不是很了解的情况下很难使用，反而没有自己写的明晰快速。<br />
<br />
2.定位不明晰<br />
ss2到ss3.12像是走了两个极端，一个功能非常多（包括 jms,mail,jbossrules,lucene,compass,acegi,cxf,jbpm,activemq），一个一下瘦身太厉害基本减完了。<br />
虽然在后续可开发计划中会陆续的补充，但是和ss2相比波动太大，而没有在ss2基础上过度过来，好像是另起炉灶的感觉。<br />
现在再想想ss的定位，&nbsp; <br />
&nbsp; SpringSide是以<span class="nobr"><a href="http://www.springframework.org/" title="Visit page outside Confluence" rel="nofollow">Spring Framework<sup><img class="rendericon" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" width="7" height="7" /></sup></a></span>为核心，提供Pragmatic的企业应用开发开源Kickstart。<br />
&nbsp; 定位愈加清晰，不再企图做一个RoR/Gails式的框架，只做主流选型组合的编程模式总结。<br />
&nbsp; SpringSide2.0的末期有点繁杂与失控，何宝荣说：不如我们从头来过<br />
这里是Pragmatic（实用的），难道和ss2相比就ss3会更使用，技术更新这是肯定的，新技术当然可以吸引一部分眼球，但一旦使用了ss后更希望是项目上的指导。而如果只是些miniweb在项目上遇到的问题是很难依靠这个来解决的，感觉这会伤了许多ss fans的心。<br />
定位愈加清晰，不再企图做一个RoR/Gails式的框架，只做主流选型组合的编程模式总结。这一点我认同<br />
SpringSide2.0的末期有点繁杂与失控，何宝荣说：不如我们从头来过&nbsp;&nbsp; ss2确实比较复杂，但是里面也不乏经典的东西，很多地方都可以为实际项目所借鉴。重头来过这个会伤了我们，如果安版本持续下去哪怕版本慢一些，这样不好吗，重头来过，你是要多ss用户负责的。（貌似现在svn中2.0的源码已经没了）<br />
这里说一些题外话：<br />
在现在的互联网发展速度非常快，在互联网公司基本使用的都是动态语言，他们更敏捷，java在web的敏捷方面是如何优化也不能和他们相比的。而什么公司会用ss这类的东西来搭建企业应用呢，一般都一些集团公司的信息系统或门户，而不是互联网公司，如果互联网公司用java做主营业务，那大部分都没有饭吃（当然不排除一些特例），而这些集团公司更需要的是稳定，不过是功能和性能上的稳定，更重要的是技术上的稳定，因为他们打部分是以流程和业务为核心，如果使用动态语言去创新获得良好的用户体验，但技术变化过快，在人员流动的情况下企业的业务很容易收到影响。而作为一个信息规划人员，一般都会考虑使用一种相对稳定的技术，因为系统延续性，和信息的集成和流动才是最重要的，作为一个业务支撑部门。有句话说的好，我们需要创新，但应该是持续创新，而不是破坏性创新。因此在这些用户群体才是最需要ss的，而不是要把ss搞和动态语言一样轻量。如果ss在这方面当然是项目更深入更细节的问题上给于指导，那是最好不过了，bookstore的demo就是一个不错的列子（当然还是有一些问题，比如在acegi的acl上还要进一步细化，等等）。而不是像现在的miniweb把我们领到ss里，然后撒手不管了。<br />
<br />
说了这么多，没别的意思，希望springside更好。刚才出社会没多久，可能有些地方视野还没达到，这里只是说说我的想法。有不对的地方多多包含。
<img src ="http://www.blogjava.net/george/aggbug/260608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-03-19 00:49 <a href="http://www.blogjava.net/george/archive/2009/03/19/260608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用lucene开发简单的站内搜索</title><link>http://www.blogjava.net/george/archive/2009/03/18/260583.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Wed, 18 Mar 2009 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/03/18/260583.html</guid><wfw:comment>http://www.blogjava.net/george/comments/260583.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/03/18/260583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/260583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/260583.html</trackback:ping><description><![CDATA[<br />
关于这个内容javaeye已经有不错的例子了<br />
http://jnotnull.javaeye.com/blog/275327<br />
<br />
在这个例子的基础上我想说一一些需要注意的地方。<br />
<strong>1.重建索引和增量索引</strong>：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">IndexWriter&nbsp;writer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;IndexWriter(directory,analyzer,rebuild,</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;IndexWriter.MaxFieldLength(</span><span style="color: #000000;">200000</span><span style="color: #000000;">));</span></div>
<br />
只需要在构造IndexWriter的时候设置rebuild值就可以了<br />
当rebuild设为true的时候：就会删除原来的索引，重建索引文件<br />
当rebuild设为false时：表示增量索引，是在原来索引文件的基础上增加新的索引内容，当然第一次没有索引文件的时候必须先重建索引生成索引文件。<br />
<br />
在lucene2.4中不使用<span>Field.Index.TOKENIZED而是使用</span><span style="color: #000000;">Field.Index.ANALYZED，表示要对这个field进行分词<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">if</span><span style="color: #000000;">(article.getArticleId()</span><span style="color: #000000;">!=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;doc.add(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Field(Fields.FIELD_ARTICLEID,article.getArticleId(),Field.Store.YES,Field.Index.NOT_ANALYZED));<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(article.getTitle()</span><span style="color: #000000;">!=</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;doc.add(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Field(Fields.FIELD_TITLE,article.getTitle(),Field.Store.YES,Field.Index.ANALYZED));</span></div>
当然这里的<span style="color: #000000;">Fields.FIELD_ARTICLEID</span>是自定义的类变量<br />
<strong><br />
2.分页检索</strong><br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">ScoreDoc[]&nbsp;hits&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;searcher.search(query,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,startIndex</span><span style="color: #000000;">+</span><span style="color: #000000;">perPage,</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sort(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SortField(Fields.FIELD_CHECKTIME,SortField.AUTO,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">))).scoreDocs;<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;numTotalHits&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;searcher.maxDoc();</span><span style="color: #008000;">//</span><span style="color: #008000;">hits.length;</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;endIndex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Math.min(numTotalHits,startIndex&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;perPage);</span></div>
使用<span style="color: #000000;">searcher.maxDoc()取出搜索的总记录数，使用</span><span style="color: #000000;">search(query,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,startIndex</span><span style="color: #000000;">+</span><span style="color: #000000;">perPage,</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sort(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SortField(Fields.FIELD_CHECKTIME,SortField.AUTO,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">))).scoreDocs取出当前一页的索引记录（这个是2.4的新用法，可以获得更高的性能），</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sort(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SortField(Fields.FIELD_CHECKTIME,SortField.AUTO,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">)))来处理索引结果的排序。<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Document&nbsp;doc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">searcher.doc(hits[i].doc);<br />
String&nbsp;title1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;doc.get(Fields.FIELD_TITLE);</span></div>
使用<span style="color: #000000;">searcher.doc(hits[i].doc)取出索引的具体记录</span><br />
<br />
<strong>3.高亮显示</strong><br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">SimpleHTMLFormatter&nbsp;simpleHTMLFormatter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SimpleHTMLFormatter(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;b&gt;&lt;font&nbsp;color='red'&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/font&gt;&lt;/b&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
Highlighter&nbsp;highlighter&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Highlighter(simpleHTMLFormatter,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;QueryScorer(query));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
highlighter.setTextFragmenter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SimpleFragmenter(bestMatchSize));<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(title1&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;TokenStream&nbsp;tokenStream&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;analyzer.tokenStream(Fields.FIELD_TITLE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringReader(title1));<br />
&nbsp;&nbsp;&nbsp;&nbsp;highLightTitle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;highlighter.getBestFragment(tokenStream,title1);<br />
}</span></div>
<span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SimpleHTMLFormatter(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;b&gt;&lt;font&nbsp;color='red'&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/font&gt;&lt;/b&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">)构造高亮显示的样式。</span><br />
<span style="color: #000000;">highlighter.setTextFragmenter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SimpleFragmenter(bestMatchSize))设置显示索引内容的最大字符数，相当于自动抽取含有关键的摘要。</span><br />
<br />
<br />
当然这个只是简单索引和检索过程。<br />
还有一些其他工作要做：<br />
1.索引的过程就是查询的过程，需要把没有索引的文章查询出来进行索引，完毕有要打上标记。这里面就要为文章扩展索引标记，建立一些文章查询。<br />
2.将索引操作加入调度定时执行，这个用quartz就可以了。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/george/aggbug/260583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-03-18 21:48 <a href="http://www.blogjava.net/george/archive/2009/03/18/260583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>准备参加深圳百公里徒步</title><link>http://www.blogjava.net/george/archive/2009/03/17/260353.html</link><dc:creator>georgeliu</dc:creator><author>georgeliu</author><pubDate>Tue, 17 Mar 2009 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/george/archive/2009/03/17/260353.html</guid><wfw:comment>http://www.blogjava.net/george/comments/260353.html</wfw:comment><comments>http://www.blogjava.net/george/archive/2009/03/17/260353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/george/comments/commentRss/260353.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/george/services/trackbacks/260353.html</trackback:ping><description><![CDATA[呵呵，一年一度的深圳百公里要到了，以前就听说比较好玩，今年打算体验一下。<br />
就在<a href="http://www.doyouhike.net/forum/sz100km/"><span style="color: #3844ff;"><a href="http://www.doyouhike.net/forum/sz100km/">磨坊</a></span></a>上找找攻略。<br />
【活动线路】&nbsp;&nbsp;<br />
<span style="color: blue;">蛇口海上世界</span>---望海路---后海路---东滨路---沙河西路---滨海路---滨河路---红岭路---深南路---新秀村---罗沙路---仙湖公园---大望村---梧桐山边防线---盐田检查站---东部华侨城---梅沙路口--大梅沙---溪冲---终点:<span style="color: blue;">玫瑰海岸</span><br />
<br />
【路况描述】&nbsp;&nbsp;<br />
1、<span style="color: blue;">蛇口海上世界</span>---红岭路（第1签到点，里程约22KM）<br />
路况:&nbsp;&nbsp;<br />
路
面良好，大部分人行道都完好，只有在望海路部分地段缺失。由后海路转东滨路，建议过斑马线，走路北的人行道，方便转上沙河西路的人行道。由沙河西路转滨海
路，建议走红树林公园里面的道路，可以看看夜晚的海边，走公路边没有很好的人行道。从滨海路往红岭路走，一路有数个立交桥，请大家注意走桥洞，安全第一。
在赤尾天桥附近，有几家食店的水准不错，吃吃肠粉很正点。到了红岭路人行天桥就是第一个签到点。<br />
<br />
2、红岭路---梧桐山村（第2签到点，里程约23公里）<br />
路况:<br />
红岭路右转上深南路，沿着深南路的人行道一直走到新秀村，沿途有部分地段修地铁，请注意安全，新秀村可以补给一些水和食品。新秀村走罗芳路转罗沙路，沿人行道一直到仙湖人行天桥，<span style="color: red;">过了人行天桥沿路由仙湖植物园正门进入，仙湖植物园需要凭签到卡、义工卡进入，车辆尽量不要进入</span>，在仙湖植物园里面走宝巾路出仙湖植物园北门，沿路一直到大望村梧桐山边防线路口。<br />
<br />
3、梧桐山村---盐田检查站（里程约13公里）&nbsp;&nbsp;<br />
路况:<br />
平坦的青石板路，环境幽美，在全段线路中，有两个地方有道路维修，请大家务必注意安全<br />
<br />
4、盐田检查站---山海大关（第3签到点，里程约16公里）&nbsp;&nbsp;<br />
路况:&nbsp;&nbsp;<br />
沿盘山公路上行，经三洲塘水库，东部华侨城云海谷、茶溪谷、茵特拉根小镇路段，过三洲田水库路段，到达山海大关签到点。走这段路的风景就无须形容了，自己走慢些，好好享受。<br />
&nbsp;&nbsp;<br />
5、山海大关---大梅沙（第4签到点，里程约9公里）&nbsp;&nbsp;<br />
路况:&nbsp;&nbsp;<br />
一路风景不错，路面较窄，注意来往车辆。签到点在大梅沙麦当劳门口。<br />
<br />
6、大梅沙---<span style="color: blue;">玫瑰海岸(长城海滩度假中心前行300米)</span>（终点，里程约11公里）<br />
路况:<br />
海岸公路路面收窄弯多，不时有车辆经过，需非常谨慎小心。在长城海滩度假中心旁边就是玫瑰沙滩，很多人在拍婚纱照片。<br />
<br />
当然第一次参加，要量力而行，我就准备去体验组混混。<br />
【活动线路】<br />
梧桐山村---梧桐山边防线---盐田检查站---东部华侨城---梅沙路口--大梅沙<br />
这段风景也不错，大约37km，搞个8个多小时估计能拿下。<br />
主要是感受一下气氛。<br />
<br />
签到指引&nbsp;&nbsp;<br />
<br />
本届百公里共设置6个签到点<br />
编号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;签到点名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 签到截止时间<br />
&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;蛇口海上世界&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3月20日21:00--22:30（A组签到）<br />
&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;红岭路(原任我行门口)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3月20日23:00--3月21日2:00<br />
&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;梧桐山&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3月21日2:00--9:00（B组6:00--9:00开始签到）<br />
&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;山海大观&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3月21日4:00--15:00<br />
&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大梅沙&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3月21日5:00--17:00<br />
&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;玫瑰海岸&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3月21日9:00--21:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
这里主要关注一下装备<br />
<strong>一、装备 </strong>&nbsp;&nbsp;<br />
个人装备 ：鞋、袜、护膝、舒适的Ｔ恤及短裤、适合1日行程的小型轻便背包或水袋式背囊、登山杖、反光物、头灯、手电、小量的药物、轻便雨衣、高能量的食品及个人用品。可公用的东西带一套既可，例如每队一个小药箱。&nbsp;&nbsp;<br />
1、背包：好的背负系统很重要。装包要平稳四正；不装任何不必要的东西。&nbsp;&nbsp; <br />
2、鞋子：最好轮换使用两双不同质地、不同鞋垫的徒步鞋或运动鞋。大一号的在尾段时穿着会较为舒适。登山鞋重，鞋底硬，公路长距离徒步不宜选择登山鞋。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 长距离平地穿越，必然造成脚掌的极度疲劳。如果配备两双不同质地、不同鞋垫的鞋（如轻便跑鞋、徒步鞋、运动鞋），<span style="color: blue;">每隔一小时换鞋行走，并经常改变行走方式（行走、小跑结合），轮换脚掌受力点，整个脚掌受力更均匀，并调动腿部更多的肌肉群参与运动，必可减缓疲劳和疼痛，可以徒步更远的路</span>。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 新鞋容易引致脚部不适，刺激水泡形成，因此正式参加活动时，最 好穿着练习时穿过的鞋。 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 鞋带要系紧，使鞋子包脚良好。 鞋底较薄可以加多一双鞋垫或穿厚一点的袜子。 一般穿底厚有弹性运动鞋较好，登山鞋较重底硬，走久了易起水泡。很多人走不完百公里主要原因是鞋子没选好脚起水泡而放弃。穿上厚的棉袜子可以减少脚与鞋底的磨擦，减少起水泡的机会。 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 有经验的毅行者建议在穿袜前在足趾背上涂上适量 Vaseline ointment （凡士林）膏，或用 Micropore tape (医生胶布)把脚趾个别分开包扎，或<a href="http://www.doyouhike.net/forum/182609,0,0,1.html" rel="external">尝试用橡皮膏和泡漠双面胶贴于足底</a>。<br />
3、袜子：厚棉袜。 以减低起水泡的机会。要带备用， 多换几次，能保持足部干爽，可预防水泡。&nbsp;&nbsp;<br />
4、<a href="http://www.doyouhike.net/forum/sz100km08/284096,0,0,1.html" rel="external">绑腿</a>：能防止血脉下积而引起的涨疼，小腿不容易感到酸累。（这个就不用了）<br />
5、护膝：可拆式护膝，不定期地使用，不用时可以拆下。&nbsp;&nbsp;<br />
6、护踝：如果只穿一双低帮的徒步鞋，护踝很有必要。&nbsp;&nbsp;<br />
7、登山杖： 减轻你双腿的负担，尤其是登高时。 （这个就不用了）<br />
8、柔软的擦汗毛巾。 <br />
9、要戴遮阳透气的帽子、防晒霜。 <br />
10、衣服：<a href="http://www.doyouhike.net/forum/sz100km/126859,0,0,1.html" rel="external"><span blue\="">建议内裤选择不磨擦大腿根的四角内裤</span></a> ，有透气排汗性能的更好。根据活动性质和天气状况，选择合适的衣物及备用。<br />
&nbsp;&nbsp;<br />
<strong>二：食物 </strong>&nbsp;&nbsp;<br />
1、 1、&nbsp;&nbsp;在徒步（运动）途中，因胃肠消化功能自然减弱，所以不宜食用肉类等高脂肪高蛋白不易消化的食品。
碳水化合物是供给人体主要能量的营养物质，易消化，并能迅速释放能量。所以应补充以碳水化合物为主的粥、米饭、粉、面、馒头等谷类食品和蔬果、运动饮料等
易消化食品。&nbsp;&nbsp;<br />
2、早餐、中餐可在路边餐厅就餐。中途过多过杂的各式各样的饮料，会使徒步人员感到肠胃不适。运动饮料、葡萄糖水、盐水和适量的凉茶足矣。&nbsp;&nbsp;<br />
3、吃了容易口渴的食物不要带。包括：味道重的，辛辣的。&nbsp;&nbsp;<br />
4、不要带过多的水、食物，能在路上补充的就不带。全程基本有路边店可补给。注意要带咸菜等补充盐分、矿物质的食品。<br />
5、尽可能少食多餐，以保持稳定的能量供应，并可避免多食少餐所引起的胃部饱胀。沿途吃一些干果、饼干，间中吃一只香蕉。<br />
<br />
交通指引：<br />
梧桐山村<br />
211路:三岛中心总站--梧桐山村 运营时间:梧桐山村6:30-22:00 建设路6:30-23:00<br />
<br />
<br />
盐田关<br />
85路:盐田检查站--德兴花园(清水河) 运营时间:6:30-21:30<br />
358路:航母世界--龙岗 运营时间:6:30--19:30<br />
380B线:龙华新围村--小梅沙 运营时间:05:30--21:30<br />
<br />
大梅沙公交路线:<br />
J1:海上世界-大梅沙 运营时间:冬季7:00-20:00，夏季6:30-21:00<br />
1路观光巴士:大梅沙-白石州: 运营时间:待查<br />
53路:东部华侨城总站--梅林检查站 运营时间:夏季6:30—21:00冬季6:30—20:00<br />
308路:布吉总站--大梅沙总站 运营时间:6:30--21:30<br />
239路:航母世界--大梅沙总站 运营时间:7:00-19:00<br />
242路:梅林一村--大梅沙总站 运营时间:夏季 6:30-22:00 冬季 6:30-21:00&nbsp;&nbsp; <br />
<br />
<br />
嘎嘎，看样子准备的差不多了，明天去迪卡侬采购点装备，再约上几个哥们就成了。<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/george/aggbug/260353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/george/" target="_blank">georgeliu</a> 2009-03-17 23:57 <a href="http://www.blogjava.net/george/archive/2009/03/17/260353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>