﻿<?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-spinage</title><link>http://www.blogjava.net/spinage/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 12:37:03 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 12:37:03 GMT</pubDate><ttl>60</ttl><item><title>使用POI3.5时，为能兼容Excel2007而发生的异常</title><link>http://www.blogjava.net/spinage/archive/2011/03/16/346409.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Wed, 16 Mar 2011 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2011/03/16/346409.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/346409.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2011/03/16/346409.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/346409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/346409.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 刚开始使用new HSSFWorkbook(new FileInputStream(excelFile))来读取Workbook，对Excel2003以前（包括2003）的版本没有问题，但读取Excel2007时发生如下异常：<br />
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该错误意思是说，文件中的数据是用Office2007+XML保存的，而现在却调用OLE2 Office文档处理，应该使用POI不同的部分来处理这些数据，比如使用XSSF来代替HSSF。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是按提示使用XSSF代替HSSF，用new XSSFWorkbook(excelFile)来读取Workbook，对Excel2007没有问题了，可是在读取Excel2003以前（包括2003）的版本时却发生了如下新异常（真是太悲剧了）：<br />
org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: '*.xls'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该错误是说，操作无效，不能打开指定的xls文件。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载POI的源码后进行单步调试，发现刚开始的时候还是对的，但到ZipFile类后就找不到文件了，到网上查了下，原来是XSSF不能读取Excel2003以前（包括2003）的版本，这样的话，就需要在读取前判断文件是2003前的版本还是2007的版本，然后对应调用HSSF或XSSF来读取。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是初步的想法，但这种做法比较麻烦，看了下API，发现XSSF和HSSF虽然在不同的包里，但却引用了同一接口Workbook，于是想到了这样的读取方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Workbook book = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; book = new XSSFWorkbook(excelFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; book = new HSSFWorkbook(new FileInputStream(excelFile));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在各版本的Excel中测试，没有发生异常，问题解决。
 <img src ="http://www.blogjava.net/spinage/aggbug/346409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2011-03-16 16:17 <a href="http://www.blogjava.net/spinage/archive/2011/03/16/346409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>request.getRemoteAddr() 相关笔记</title><link>http://www.blogjava.net/spinage/archive/2011/03/16/346406.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Wed, 16 Mar 2011 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2011/03/16/346406.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/346406.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2011/03/16/346406.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/346406.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/346406.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 最近遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1，这是为什么呢，照道理讲，应该是127.0.0.1才对，为什么这个获取的值变成了ipv6了呢，而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现（例如用localhost访问的时候才会出现，用127.0.0.1不会出现），后来上网查了查原因，原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\system32\drivers\etc\ hosts这个文件)，只需要注释掉文件中的 # ::1 localhost 这一行即可解决问题。另外localhost这个文件很有用，这里你可以添加自己的条目，例如添加 192.168.0.111 buyer.com这样子，在浏览器中原来只能使用192.168.0.111来访问的，并可以使用&nbsp;buyer.com来进行替换。
<img src ="http://www.blogjava.net/spinage/aggbug/346406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2011-03-16 16:08 <a href="http://www.blogjava.net/spinage/archive/2011/03/16/346406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlplus基本命令</title><link>http://www.blogjava.net/spinage/archive/2010/04/06/317562.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Tue, 06 Apr 2010 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2010/04/06/317562.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/317562.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2010/04/06/317562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/317562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/317562.html</trackback:ping><description><![CDATA[<p>假设当前已执行：select * from tab;</p>
<p><strong>&nbsp;　　</strong><strong><em>(a)ppend</em></strong><strong>　添加文本到缓冲区当前行尾</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例： SQL&gt;a&nbsp; order by tname</p>
<p>　　结果：select * from tab order by tname;</p>
<p>　　（注：a后面跟2个空格） <br class="atl-forced-newline" />
</p>
<p>　　<strong><em>(c)hange/old/new</em></strong> <strong>在当前行用新的文本替换旧的文本</strong></p>
<p>　　例：SQL&gt;c/*/tname</p>
<p>　　结果：select tname from tab; <br class="atl-forced-newline" />
</p>
<p>　　<strong><em>(c)hange/</em></strong><strong>text 从当前行删除文本</strong></p>
<p>　　例：SQL&gt;c/tab</p>
<p>　　结果：select tname from ;</p>
<p>&nbsp;　　<strong><em>del</em></strong> <strong>删除当前行</strong></p>
<p>&nbsp;　&nbsp; <strong><em>del n</em></strong> <strong>删除第n行</strong>&nbsp;</p>
<p>　　<strong><em>(i)nput</em></strong> <strong>文本 在当前行之后添加一行</strong>&nbsp;</p>
<p>　　<strong><em>(l)ist</em></strong><strong>　显示缓冲区中所有行</strong>&nbsp;</p>
<p>　　<strong><em>(l)ist n</em></strong> <strong>显示缓冲区中第 n 行</strong>&nbsp;</p>
<p>　　<strong><em>(l)ist m n</em></strong> <strong>显示缓冲区中 m 到 n 行</strong></p>
<p>　　(<strong><em>r)un</em></strong> <strong>执行当前缓冲区的命令</strong></p>
<p>　　<strong><em>/</em></strong><strong>&nbsp; 执行当前缓冲区的命令</strong></p>
<p>　　<strong><em>@文件名</em></strong> <strong>运行调入内存的sql文件</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 例：SQL&gt; edit s&lt;回车&gt;</p>
<p>　　如果当前目录下不存在s.sql文件，则系统自动生成s.sql文件，</p>
<p>　　在其中输入&#8220;select * from tab;&#8221;，存盘退出。</p>
<p>　　SQL&gt; @s&lt;回车&gt;</p>
<p>&nbsp;&nbsp; 　系统会自动查询当前用户下的所有表、视图、同义词。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>@@文件名</em></strong><strong>　在.sql文件中调用另一个.sql文件时使用</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例：SQL&gt;edit test&lt;回车&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在其中输入"@s"，存盘退出。（这里s为上例中创建的sql文件）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;@@test&lt;回车&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果就是执行了文件s.sql中的语法：自动查询当前用户下的所有表、视图、同义词。 <br class="atl-forced-newline" />
</p>
<p>　<strong><em>　save 文件名</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将缓冲区的命令以文件方式存盘，缺省文件扩展名为.sql</strong></p>
<p><strong>　　</strong><strong><em>get 文件名</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　调入存盘的sql文件</strong></p>
<p><strong>　　</strong><strong><em>start 文件名</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　运行调入内存的sql文件</strong></p>
<p><strong>　　</strong><strong><em>spool 文件名</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　把这之后的各种操作及执行结果&#8220;假脱机&#8221;即存盘到磁盘文件上，默认文件扩展名为.lst</strong></p>
<p><strong>&nbsp;&nbsp; 　</strong><strong><em>spool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp; 　　显示当前的&#8220;假脱机&#8221;状态</strong></p>
<p><strong>&nbsp;&nbsp; 　</strong><strong><em>spool off</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　停止输出</strong></p>
<p>　　例：</p>
<p>　　SQL&gt; spool a</p>
<p>　　SQL&gt; spool</p>
<p>　　正假脱机到 A.LST</p>
<p>　　SQL&gt; spool off</p>
<p>　　SQL&gt; spool</p>
<p>　　当前无假脱机 <br class="atl-forced-newline" />
</p>
<p>　<em>　</em><strong><em>exit　　</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 退出SQL*PLUS</strong></p>
<p><strong>　</strong><strong><em>　desc 表名　</em></strong><strong>　&nbsp;&nbsp; 显示表的结构</strong></p>
<p><strong>　</strong><strong><em>　show user</em></strong> <strong>　&nbsp;&nbsp; 显示当前连接用户</strong></p>
<p><strong>　</strong><strong><em>　show error　</em></strong><strong>&nbsp;&nbsp; 显示错误</strong></p>
<p><strong>　　</strong><strong><em>show all</em></strong><strong>&nbsp;&nbsp;&nbsp; 　 　显示所有68个系统变量值</strong></p>
<p><strong>　</strong><strong><em>　edit</em></strong><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开默认编辑器，Windows系统中默认是notepad.exe，把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑</strong></p>
<p><strong>&nbsp;&nbsp; 　</strong><strong><em>edit 文件名　</em></strong><strong>　 把当前目录中指定的.sql文件调入编辑器进行编辑</strong></p>
<p><strong>&nbsp;　</strong><strong><em>　clear screen</em></strong><strong>　&nbsp; 清空当前屏幕显示</strong></p>
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
         <rdf:Description rdf:about="http://wiki.winupon.tst/pages/viewpage.action?pageId=11501611" dc:identifier="http://wiki.winupon.tst/pages/viewpage.action?pageId=11501611" dc:title="(1)SQLPLUS常用命令列表" trackback:ping="http://wiki.winupon.tst/rpc/trackback/11501611" />
</rdf:RDF>
-->
<img src ="http://www.blogjava.net/spinage/aggbug/317562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2010-04-06 16:04 <a href="http://www.blogjava.net/spinage/archive/2010/04/06/317562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myeclipse 去掉js或jsp错误提示</title><link>http://www.blogjava.net/spinage/archive/2010/04/06/317544.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Tue, 06 Apr 2010 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2010/04/06/317544.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/317544.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2010/04/06/317544.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/317544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/317544.html</trackback:ping><description><![CDATA[关于在<font face="Times New Roman"><strong style="color: black; background-color: #ffff66">MyEclipse</strong></font>上<font face="Times New Roman">WEB</font>工程里面的<font face="Times New Roman">JS/JSP</font>经常会有<strong style="color: black; background-color: #a0ffff">语法</strong>错误提示，这是由于<font face="Times New Roman"><strong style="color: black; background-color: #ffff66">MyEclipse</strong></font>对其<strong style="color: black; background-color: #a0ffff">语法</strong>要求相当严格所造成的，而这些文件本身是可以运行并没有什么错误的，在你实际应用部署中并无影响<font face="Times New Roman">.</font>
<p style="margin: 0cm 0cm 18pt; line-height: 20pt"><font size="3">此问题解决办法有两种：</font></p>
<p style="margin: 0cm 0cm 18pt; text-indent: 21pt; line-height: 20pt"><font size="3">一、就是您不用去管它提示，直接部署到你的<font face="Times New Roman">WEB</font>容器上运行是可以的，但此方法欠妥当。</font></p>
<p style="margin: 0cm 0cm 18pt; text-indent: 21pt; line-height: 20pt"><font size="3">二、选择你的工程右击菜单——<font face="Times New Roman">&gt;</font>点击<font face="Times New Roman"><strong style="color: black; background-color: #ffff66">MyEclipse</strong></font>菜单项的<font face="Times New Roman">Exclude From Validation</font>，如果你的工程里还有其它需要它检验其合法性建议可以针对某一文件夹或具体文件进行此项操作，这样可以只针对<font face="Times New Roman">WEB</font>工程里的某一个文件夹里面的<font face="Times New Roman">JSP/JS</font>文件来进行<strong style="color: black; background-color: #99ff99">验证</strong>排除，这样就不会对这些被排除的文件或文件夹进行<strong style="color: black; background-color: #99ff99">验证</strong>了，不过再你打开这些文件时，文件里面是有错误提示的，但工程是不会出现<strong style="color: black; background-color: #a0ffff">语法</strong>错误提示的。这样不仅解决了工程总提示<strong style="color: black; background-color: #a0ffff">语法</strong>信息错误的烦恼，对于一些确实存在问题的文件也可以查看其错误问题所在，可谓一举两得。</font></p>
<p style="margin: 0cm 0cm 18pt; text-indent: 21pt; line-height: 20pt"><font size="3">另外还可以通过使用<font face="Times New Roman">Remove All Validation Markers</font>此菜单项进移除所有的<strong style="color: black; background-color: #99ff99">验证</strong><strong style="color: black; background-color: #a0ffff">语法</strong>错误提示信息。</font></p>
<img src ="http://www.blogjava.net/spinage/aggbug/317544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2010-04-06 13:29 <a href="http://www.blogjava.net/spinage/archive/2010/04/06/317544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat:IOException while loading persisted sessions: java.io.EOFException解决 </title><link>http://www.blogjava.net/spinage/archive/2010/03/24/316400.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Wed, 24 Mar 2010 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2010/03/24/316400.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/316400.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2010/03/24/316400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/316400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/316400.html</trackback:ping><description><![CDATA[Tomcat： <br />
IOException while loading persisted sessions: <span class="hilite1">java</span>.<span class="hilite2">io</span>.<span class="hilite3">EOFException</span>解决 <br />
<br />
严重: IOException while loading persisted sessions: <span class="hilite1">java</span>.<span class="hilite2">io</span>.<span class="hilite3">EOFException</span> <br />
严重: Exception loading sessions from persistent storage <br />
<br />
原因是tomcat对硬盘的session读取失败，彻底解决办法一下：将work下面的文件清空，主要是*.ser文件，或者只是删除掉session.ser即可以解决。 
<img src ="http://www.blogjava.net/spinage/aggbug/316400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2010-03-24 09:57 <a href="http://www.blogjava.net/spinage/archive/2010/03/24/316400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse 无法启动 JVM terminated. Exit code=-1 </title><link>http://www.blogjava.net/spinage/archive/2010/01/26/310814.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Tue, 26 Jan 2010 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2010/01/26/310814.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/310814.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2010/01/26/310814.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/310814.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/310814.html</trackback:ping><description><![CDATA[<strong>eclipse 无法启动 JVM terminated. Exit code=-1</strong> <br />
eclipse.ini中内存设置过大的问题，以前我修改过内存设置，一直都好好的，之前eclipse.ini的配置如下：
<p>&nbsp;</p>
<blockquote>
<p>-showsplash<br />
com.genuitec.myeclipse.product<br />
--launcher.XXMaxPermSize<br />
512m<br />
-vmargs<br />
-Xms256m<br />
-Xmx512m<br />
-Duser.language=en<br />
-XX:PermSize=256M<br />
-XX:MaxPermSize=512M</p>
</blockquote>
<p>现在修改了一下，-Xms256m改成-Xms128m，把Xmx512m&nbsp;<wbr>&nbsp;<wbr>改为&nbsp;<wbr>Xmx256m，结果还真的好了，没想到居然是这样的小问题引起来的。</p>
<p>====================================================================================</p>
<p>第二个，我们的项目采用svn管理，查找.svn，把所有.svn的文件删除</p>
<p>第三个，查看项目根文件夹下的.metadata，发现.metadata下面差很多插件,把现有项目的.metadate覆盖进去即可</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/spinage/aggbug/310814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2010-01-26 09:12 <a href="http://www.blogjava.net/spinage/archive/2010/01/26/310814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 不走索引的几种情况</title><link>http://www.blogjava.net/spinage/archive/2010/01/14/309461.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Thu, 14 Jan 2010 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2010/01/14/309461.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/309461.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2010/01/14/309461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/309461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/309461.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt; font-family: 宋体"><span style="font-family: 宋体">&nbsp; </span>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体"><span style="font-family: 宋体">1</span></span><span style="line-height: 150%; font-family: 宋体"><span style="font-family: 宋体">、建立组合索引，但查询谓词并未使用组合索引的第一列，此处有一个INDEX SKIP SCAN概念。 <br />
2、在包含有null值的table列上建立索引，当时使用select count(*) from table时不会使用索引。 <br />
3、在索引列上使用函数时不会使用索引，如果一定要使用索引只能建立函数索引。 <br />
4、当被索引的列进行隐式的类型转换时不会使用索引。如:select * from t where indexed_column = 5，而indexed_column列建立索引但类型是字符型，这时Oracle会产生 <br />
隐式的类型转换，转换后的语句类似于select * from t where to_number(indexed_column) = 5，此时不走索引的情况类似于case3。日期转换也有类似问题，如: <br />
select * from t where trunc(date_col) = trunc(sysdate)其中date_col为索引列，这样写不会走索引，可改写成select * from t where date_col &gt;= trunc(sysdate) <br />
and date_col &lt; trunc(sysdate+1)，此查询会走索引。 <br />
5、并不是所有情况使用索引都会加快查询速度，full scan table 有时会更快，尤其是当查询的数据量占整个表的比重较大时，因为full scan table采用的是多块读， <br />
当Oracle优化器没有选择使用索引时不要立即强制使用，要充分证明使用索引确实查询更快时再使用强制索引。 </span></span></p>
<p style="line-height: 150%"><span style="font-family: 宋体"><span style="line-height: 150%; font-family: 宋体">6</span><span style="line-height: 150%; font-family: 宋体">、&lt;&gt;</span></span></p>
<p style="line-height: 150%"><span style="line-height: 150%; font-family: 宋体"><span style="font-family: 宋体">7</span></span><span style="line-height: 150%; font-family: 宋体"><span style="font-family: 宋体">、like&#8217;%dd&#8217;百分号在前<br />
</span></span></p>
<span style="font-family: 宋体">8、not in ,not exist.&nbsp;</span></span><span style="font-family: 宋体"> </span>
<img src ="http://www.blogjava.net/spinage/aggbug/309461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2010-01-14 15:16 <a href="http://www.blogjava.net/spinage/archive/2010/01/14/309461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>取中文首字母（支持繁体字，及一些比较偏的字  如：怡）</title><link>http://www.blogjava.net/spinage/archive/2009/11/27/303866.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Fri, 27 Nov 2009 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2009/11/27/303866.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/303866.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2009/11/27/303866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/303866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/303866.html</trackback:ping><description><![CDATA[利用pinyin4j开源的一个小项目取中文首字母<br />
&nbsp;<br />
public static String getAllFirstLetter(String str) {<br />
&nbsp;&nbsp;String convert = "";<br />
&nbsp;&nbsp;for (int j = 0; j &lt; str.length(); j++) {<br />
&nbsp;&nbsp;&nbsp;char word = str.charAt(j);<br />
&nbsp;&nbsp;&nbsp;String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);<br />
&nbsp;&nbsp;&nbsp;if (pinyinArray != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;convert += pinyinArray[0].charAt(0);<br />
&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;convert += word;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return convert;<br />
&nbsp;}
<img src ="http://www.blogjava.net/spinage/aggbug/303866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2009-11-27 10:30 <a href="http://www.blogjava.net/spinage/archive/2009/11/27/303866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单对Facade模式的理解</title><link>http://www.blogjava.net/spinage/archive/2009/11/27/303864.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Fri, 27 Nov 2009 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2009/11/27/303864.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/303864.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2009/11/27/303864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/303864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/303864.html</trackback:ping><description><![CDATA[<p>&nbsp;在许多开源的框架中都充分的利用了设计模式这一概念，Struts典型的MVC模式的化身，Spring是工厂模式和单例模式的充分体现。在项目开发中，能充分利用设计模式的思想来考虑问题，来解决问题，来通过代码去实现。不但可以提高代码的质量，对程序的扩展，重用带来很大方便。其实我们项目中用设计模式编程就是加了一个封装层，减少客户必须处理的对象的数量。<br />
</p>
&nbsp;在设计模式中一般都遵循这样的原则：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)按接口编程。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)尽量用聚合代替继承。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)找出变化并封装之。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 上面主要讲了一些设计模式的作用和原则。接下来是我对门面模式的一个简单理解。Facade（门面模式）是美国著名的四人帮（GOF）写的23种模式之一。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 简单的理解：我们需要用一种比原有的方法更简单的方法与系统交互，或者说，我们需要以一种特殊的方式使用系统。主要是为子系统中的一组接口提供一个统一的接口。Facade模式定义了一个更高的接口，使子系统更加容易使用。它的意图要求一个一致的高层接口。<br />
<img src ="http://www.blogjava.net/spinage/aggbug/303864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2009-11-27 10:25 <a href="http://www.blogjava.net/spinage/archive/2009/11/27/303864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>序列化</title><link>http://www.blogjava.net/spinage/archive/2009/11/24/303429.html</link><dc:creator>spinage</dc:creator><author>spinage</author><pubDate>Tue, 24 Nov 2009 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/spinage/archive/2009/11/24/303429.html</guid><wfw:comment>http://www.blogjava.net/spinage/comments/303429.html</wfw:comment><comments>http://www.blogjava.net/spinage/archive/2009/11/24/303429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spinage/comments/commentRss/303429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spinage/services/trackbacks/303429.html</trackback:ping><description><![CDATA[序列化机制只保存对象的类型信息，属性的类型信息和属性值，和方法没有什么关系，你就是给这个类增加10000个方法，序列化内容也不会增加任何东西。
<img src ="http://www.blogjava.net/spinage/aggbug/303429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spinage/" target="_blank">spinage</a> 2009-11-24 11:01 <a href="http://www.blogjava.net/spinage/archive/2009/11/24/303429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>