posts - 15, comments - 20, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2010年1月14日

                 剛開始使用new HSSFWorkbook(new FileInputStream(excelFile))來讀取Workbook,對Excel2003以前(包括2003)的版本沒有問題,但讀取Excel2007時發生如下異常:
          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)

                  該錯誤意思是說,文件中的數據是用Office2007+XML保存的,而現在卻調用OLE2 Office文檔處理,應該使用POI不同的部分來處理這些數據,比如使用XSSF來代替HSSF。

                  于是按提示使用XSSF代替HSSF,用new XSSFWorkbook(excelFile)來讀取Workbook,對Excel2007沒有問題了,可是在讀取Excel2003以前(包括2003)的版本時卻發生了如下新異常(真是太悲劇了):
          org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: '*.xls'
                  該錯誤是說,操作無效,不能打開指定的xls文件。

                  下載POI的源碼后進行單步調試,發現剛開始的時候還是對的,但到ZipFile類后就找不到文件了,到網上查了下,原來是XSSF不能讀取Excel2003以前(包括2003)的版本,這樣的話,就需要在讀取前判斷文件是2003前的版本還是2007的版本,然后對應調用HSSF或XSSF來讀取。
                  這是初步的想法,但這種做法比較麻煩,看了下API,發現XSSF和HSSF雖然在不同的包里,但卻引用了同一接口Workbook,于是想到了這樣的讀取方法:
                  Workbook book = null;
                  try {
                      book = new XSSFWorkbook(excelFile);
                  } catch (Exception ex) {
                      book = new HSSFWorkbook(new FileInputStream(excelFile));
                  }
                  在各版本的Excel中測試,沒有發生異常,問題解決。

          posted @ 2011-03-16 16:17 spinage 閱讀(12728) | 評論 (1)編輯 收藏

             最近遇到了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來訪問的,并可以使用 buyer.com來進行替換。

          posted @ 2011-03-16 16:08 spinage 閱讀(940) | 評論 (1)編輯 收藏

          假設當前已執行:select * from tab;

             (a)ppend 添加文本到緩沖區當前行尾

                 例: SQL>a  order by tname

            結果:select * from tab order by tname;

            (注:a后面跟2個空格)

            (c)hange/old/new 在當前行用新的文本替換舊的文本

            例:SQL>c/*/tname

            結果:select tname from tab;

            (c)hange/text 從當前行刪除文本

            例:SQL>c/tab

            結果:select tname from ;

             del 刪除當前行

              del n 刪除第n行 

            (i)nput 文本 在當前行之后添加一行 

            (l)ist 顯示緩沖區中所有行 

            (l)ist n 顯示緩沖區中第 n 行 

            (l)ist m n 顯示緩沖區中 m 到 n 行

            (r)un 執行當前緩沖區的命令

            /  執行當前緩沖區的命令

            @文件名 運行調入內存的sql文件

               例:SQL> edit s<回車>

            如果當前目錄下不存在s.sql文件,則系統自動生成s.sql文件,

            在其中輸入“select * from tab;”,存盤退出。

            SQL> @s<回車>

              系統會自動查詢當前用戶下的所有表、視圖、同義詞。

                @@文件名 在.sql文件中調用另一個.sql文件時使用

                例:SQL>edit test<回車>

                     在其中輸入"@s",存盤退出。(這里s為上例中創建的sql文件)

                     SQL>@@test<回車>

                     結果就是執行了文件s.sql中的語法:自動查詢當前用戶下的所有表、視圖、同義詞。

            save 文件名             將緩沖區的命令以文件方式存盤,缺省文件擴展名為.sql

            get 文件名           調入存盤的sql文件

            start 文件名         運行調入內存的sql文件

            spool 文件名        把這之后的各種操作及執行結果“假脫機”即存盤到磁盤文件上,默認文件擴展名為.lst

              spool                 顯示當前的“假脫機”狀態

              spool off            停止輸出

            例:

            SQL> spool a

            SQL> spool

            正假脫機到 A.LST

            SQL> spool off

            SQL> spool

            當前無假脫機

            exit             退出SQL*PLUS

            desc 表名     顯示表的結構

            show user     顯示當前連接用戶

            show error    顯示錯誤

            show all       顯示所有68個系統變量值

            edit                打開默認編輯器,Windows系統中默認是notepad.exe,把緩沖區中最后一條SQL語句調入afiedt.buf文件中進行編輯

              edit 文件名   把當前目錄中指定的.sql文件調入編輯器進行編輯

             clear screen   清空當前屏幕顯示

          posted @ 2010-04-06 16:04 spinage 閱讀(327) | 評論 (0)編輯 收藏

          關于在MyEclipseWEB工程里面的JS/JSP經常會有語法錯誤提示,這是由于MyEclipse對其語法要求相當嚴格所造成的,而這些文件本身是可以運行并沒有什么錯誤的,在你實際應用部署中并無影響.

          此問題解決辦法有兩種:

          一、就是您不用去管它提示,直接部署到你的WEB容器上運行是可以的,但此方法欠妥當。

          二、選擇你的工程右擊菜單——>點擊MyEclipse菜單項的Exclude From Validation,如果你的工程里還有其它需要它檢驗其合法性建議可以針對某一文件夾或具體文件進行此項操作,這樣可以只針對WEB工程里的某一個文件夾里面的JSP/JS文件來進行驗證排除,這樣就不會對這些被排除的文件或文件夾進行驗證了,不過再你打開這些文件時,文件里面是有錯誤提示的,但工程是不會出現語法錯誤提示的。這樣不僅解決了工程總提示語法信息錯誤的煩惱,對于一些確實存在問題的文件也可以查看其錯誤問題所在,可謂一舉兩得。

          另外還可以通過使用Remove All Validation Markers此菜單項進移除所有的驗證語法錯誤提示信息。

          posted @ 2010-04-06 13:29 spinage 閱讀(2357) | 評論 (2)編輯 收藏

          Tomcat:
          IOException while loading persisted sessions: java.io.EOFException解決

          嚴重: IOException while loading persisted sessions: java.io.EOFException
          嚴重: Exception loading sessions from persistent storage

          原因是tomcat對硬盤的session讀取失敗,徹底解決辦法一下:將work下面的文件清空,主要是*.ser文件,或者只是刪除掉session.ser即可以解決。

          posted @ 2010-03-24 09:57 spinage 閱讀(245) | 評論 (0)編輯 收藏

          eclipse 無法啟動 JVM terminated. Exit code=-1
          eclipse.ini中內存設置過大的問題,以前我修改過內存設置,一直都好好的,之前eclipse.ini的配置如下:

           

          -showsplash
          com.genuitec.myeclipse.product
          --launcher.XXMaxPermSize
          512m
          -vmargs
          -Xms256m
          -Xmx512m
          -Duser.language=en
          -XX:PermSize=256M
          -XX:MaxPermSize=512M

          現在修改了一下,-Xms256m改成-Xms128m,把Xmx512m  改為 Xmx256m,結果還真的好了,沒想到居然是這樣的小問題引起來的。

          ====================================================================================

          第二個,我們的項目采用svn管理,查找.svn,把所有.svn的文件刪除

          第三個,查看項目根文件夾下的.metadata,發現.metadata下面差很多插件,把現有項目的.metadate覆蓋進去即可

           

          posted @ 2010-01-26 09:12 spinage 閱讀(348) | 評論 (0)編輯 收藏

           

          1、建立組合索引,但查詢謂詞并未使用組合索引的第一列,此處有一個INDEX SKIP SCAN概念。
          2、在包含有null值的table列上建立索引,當時使用select count(*) from table時不會使用索引。
          3、在索引列上使用函數時不會使用索引,如果一定要使用索引只能建立函數索引。
          4、當被索引的列進行隱式的類型轉換時不會使用索引。如:select * from t where indexed_column = 5,而indexed_column列建立索引但類型是字符型,這時Oracle會產生
          隱式的類型轉換,轉換后的語句類似于select * from t where to_number(indexed_column) = 5,此時不走索引的情況類似于case3。日期轉換也有類似問題,如:
          select * from t where trunc(date_col) = trunc(sysdate)其中date_col為索引列,這樣寫不會走索引,可改寫成select * from t where date_col >= trunc(sysdate)
          and date_col < trunc(sysdate+1),此查詢會走索引。
          5、并不是所有情況使用索引都會加快查詢速度,full scan table 有時會更快,尤其是當查詢的數據量占整個表的比重較大時,因為full scan table采用的是多塊讀,
          當Oracle優化器沒有選擇使用索引時不要立即強制使用,要充分證明使用索引確實查詢更快時再使用強制索引。

          6、<>

          7、like’%dd’百分號在前

          8、not in ,not exist. 

          posted @ 2010-01-14 15:16 spinage 閱讀(2042) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 聂荣县| 株洲市| 呼玛县| 九龙坡区| 夹江县| 东辽县| 吴桥县| 合山市| 阿图什市| 济宁市| 大埔区| 新沂市| 凌海市| 台州市| 平阳县| 南安市| 常山县| 静安区| 石泉县| 和田市| 桃江县| 龙南县| 朝阳区| 谢通门县| 即墨市| 泾源县| 邛崃市| 溧水县| 金昌市| 乌兰察布市| 宁河县| 金乡县| 客服| 赤峰市| 新源县| 和林格尔县| 文山县| 台东市| 敖汉旗| 五原县| 江都市|