2013年工做中遇到的20個問題:81-100


81.Spring中注入Filter。
若是隻是爲了使用Filter,實際上能夠不使用Spring的注入,直接在web.xml中配置就能夠了。php

如今出現了新的需求,Filter中用到了Service,須要注入進去。
web.xml配置一個
    <filter>
        <filter-name>DelegatingFilterProxy</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>myFilter</param-value>         //本身過濾器的名字,好比SessionFilter
        </init-param>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>java

    <filter-mapping>
        <filter-name>DelegatingFilterProxy</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>web

配置過濾器時,必定要注意讓合法的請求能夠經過。
第2天,發現Flex調用Java接口的請求被過濾了,致使Flex端沒法登陸。ajax

/* 攔截全部的內容,感受有點多。spring

82.Session過時。
經過配置Filter,能夠方便地檢查Session是否過時和用戶是否登陸。
可是在經過Ajax異步上傳文件時,若是此時過時了,此時後臺返回值,
正常狀況是「正確」或「錯誤」,如今變成了「login頁面的jsp源碼」。數據庫

須要特殊處理。apache

關於session等權限檢查問題和特殊處理ajax上傳文件,待進一步研究。ubuntu

83.多數據源獲取Hibernate的Session失敗。
 出現的異常:對象名table_name不存在。
 實際狀況:目標數據庫存在table_name這個表。
 
  Session session = getSessionByProjectId(projectId);
 
  多數據源的實現是經過Spring配置的。
 
  大部分功能都沒有問題。
 
  在一個多線程的方法中,實現 動態獲取Session,執行CRUD操做時,發現
 獲取的Session老是默認的Session,而不是根據projectId獲取的Session。
 
   後來,把多線程改爲了單線程,就能夠了。
  
   至於具體緣由,不清楚。
  
   教訓:儘可能不使用多線程。多線程不必定會使程序運行的更快。瀏覽器


  
84.Spring事務回滾與Dao捕獲異常。
 
   原來的代碼:
   @Transactional(...配置事務)
    serviceFunction(){
       for(int index=0;index<10000;index++){
       daoFunction();
    }
    }
 
 daoFunction(){
   try{
     //access db
   }catch{
  
   }
 }
 
 問題:若是daoFunction內部發生了異常,Spring也不會回滾事務。
 改進:daoFunction不捕獲異常,直接拋出。或者捕獲,再拋出異常。tomcat


85.事務與內存。
   代碼同上。
     for(int index=0;index<10000;index++){
       daoFunction();
    }
   
    若是dao執行1萬次,再提交,能夠保證這1萬次在同一個事務中。
    若是發生了錯誤,事務回滾,保證數據正常。
   
    缺點:因爲一直沒有提交,致使內存佔用愈來愈大。
    MyEclipse會自動進行垃圾回收,線上的服務器應該不會。

86.查看Hibernate的Session訪問的數據庫。
   在調試問題83時,想知道Session訪問的數據庫。
   最開始使用的是:Session.createSQLQuery("show tables").list();
   提示,語法不正確。估計是,Hibernate不支持。
  
   使用下面這個方法是能夠的。
   Session.connection().getCatalog()。
  
87.加速Eclipse和MyEclipse的啓動。
   每次打開Eclipse,都提示我是否須要提交一些信息給Eclipse指定的某個網站。
   實在是難以忍受,網上找到了一點技巧。
  
   首選項-General-Startup and Shutdown,把不須要的選項去掉。
   好比,MyEclipse EASIE Weblogic。

88.PhpMyadmin登陸失敗。
  登陸phpmyadmin提示: #1045 沒法登陸 MySQL 服務器
 
  根本緣由:管理員帳號是root,不是admin。
  IE,Firefox,搜狗 3個瀏覽器使用admin登陸幾十次都失敗。從新安裝後,admin也失敗。
  我就隨手輸入了個root,成功了。
  無語啊!


89.PHP sites-enabled下配置了多個相似的文件,本覺得只會讀取000-default,實際上
該目錄下的全部文件都看成了配置文件。

90.http://42.96.184.84/fansunion改成http://42.96.184.84/後,
首頁能夠進去,文章和目錄頁面打不開,而登陸功能卻可使用。

一直覺得是虛擬主機沒有配置好,我也很奇怪,由於81端口的虛擬主機都是好的。
後來終於發現,是固定連接須要更新。而.htaccess由於權限不夠,不能自動更新。

91.ubuntu 默認面板恢復命令
   昨天裝了Ubuntu,折騰來折騰去,面板不見了,不是默認的佈局了,添加面板不是解決辦法。

Google 了下,解決辦法以下:

打開終端,終端窗口打開以後,當即在提示符後面輸入下列命令:
gconftool --recursive-unset /apps/panel
(注意:每一個斜槓 「/」 後面沒有空格)
接下來輸入下列命令:
rm -rf ~/.gconf/apps/panel
最後還須要執行:
pkill gnome-panel
接下來,Ubuntu 默認的上下兩欄面板就會恢復默認值,出現頂部+底部各一面板的默認佈局。

92.在dos環境下,爲了將java命令的使用幫助信息放到一個文件中,
使用標記-複製方法不行,只好換了另一種方法。
  java>  c:\java.txt就能夠了
 c盤根目錄java.txt就有java的詳細使用信息了。
 熟悉dos 命令的使用

93. 切換到 非C盤目錄。
   須要增長 /D 參數
  cd /D J:\開發工具\Tomcat家族\apache-tomcat-6.0.35\bin

94.dos命令行復制
   a. 點擊標題欄-右鍵菜單-編輯-標記,選中標記菜單,開始標記。
   b. 選中 黑屏中須要複製的內容,完成標記過程。
   c. 點擊標題欄-右鍵菜單-編輯-複製,完成複製過程,而後就能夠粘貼了。

95.eclipse內存不足
   Eclipse發生內存不足錯誤時,使用記事本修改eclipse.ini文件是個錯誤的方法。(換行容易發生錯誤)

    應該使用notepad++等編輯器打開,修改參數設置,才能夠!
 
 運行程序時,報內存溢出,也有多是Tomcat的內存不夠致使的。
 
96. 環境變量
   新建環境變量JAVA_HOME ,值爲C:\Program Files (x86)\Jave(末尾不能有分號)
    不須要末尾的分號,難道是由於只有一個麼.

97.安裝OpenCMS修改MySQL配置。
 提示MySQL的'max_allowed_packet' 過小,須要調大一點。
 修改C:\Program Files (x86)\MySQL\MySQL Server 5.5/my.ini,添加
max_allowed_packet=167772160(160M),任務管理器-服務-MySQL-從新啓動就能夠繼續安裝了。

98. 把引用到的jar包摺疊起來。
  直接把一個包下的文件夾,好比src目錄下的lib文件夾裏的jar,所有加入到classpath中,
  這些jar包全都顯示在 項目列表中,而不是在一個 文件夾下。
 
  而我期待的是 這種形式的:ReferencedJars,點擊ReferencedJars,出現jar列表。
 

99.壓縮文件
  JDK自帶的有。
   // 聲明壓縮流對象
        ZipOutputStream zipOut = null;
     
            zipOut = new ZipOutputStream(new FileOutputStream(new File(
                    zipFilePath)));
            for (String file : files) {
                File file2 = new File(file);
                // 設置ZipEntry對象
                zipOut.putNextEntry(new ZipEntry(file2.getName()));
               // zipOut.setComment("www.fansunion.cn");
                zipOut.write(FileUtils.getBytesFromFile(file2));

            }
 JODD,Apache Commons Compress也能夠,應該是對JDK自帶類庫的進一步封裝。
   

100. 字符串比較 區分大小寫。

  修改一個項目的名稱時,把大寫改成小寫,提示項目名稱已存在。
 
  方法一:從數據庫查詢出字符串與目標字符串 比較。
 
  方法二:修改數據庫的信息,修改列屬性的排序規則(SQLServer)。
 

相關閱讀

工做問題 http://blog.csdn.net/FansUnion/article/category/1334371

相關文章
相關標籤/搜索