<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tinguo002

     

    java.net.SocketException: Connection reset 解決方法

    推薦好文:http://www.cnblogs.com/zmc/p/3295761.html

    當數據庫連接池中的連接被創建而長時間不使用的情況下,該連接會自動回收并失效,但客戶端并不知道,在進行數據庫操作時仍然使用的是無效的數據庫連接,這樣,就導致客戶端程序報“ java.sql.SQLException: Io 異常: Connection reset” 或“java.sql.SQLException 關閉的連接”異常。


    解決辦法:客戶端在使用一個無效的連接時會先對該連接進行測試,如果發現該連接已經無效,則重新從連接池獲取有效數據庫連接來使用。

    在tomcat的context.xml里面設置數據源時候可參考:

     <Resource auth="Container"
      driverClassName="oracle.jdbc.OracleDriver"
      type="javax.sql.DataSource"
      url="jdbc:oracle:thin:@11.11.11.45:1521:orcl"
      name="jdbc/login"
      username="login"
      password="login"
      maxActive="15"
      maxIdle="10"
      maxWait="-1"
      minIdle="2"
      removeAbandonedTimeout="5"
      testOnBorrow="true"
      testWhileIdle="true"
      testOnReturn="true"
      removeAbandoned="true"
      logAbandoned="true"
      validationQuery="select 1 from dual"
     /> 
     
     
    參考:http://www.cnblogs.com/younes/archive/2012/06/01/2529483.html




    DBCP數據庫連接失效的解決方法(Io 異常:Connection reset)


    網上很多評論說DBCP有很多BUG,但是都沒有指明是什么BUG,只有一部分人說數據庫如果因為某種原因斷掉后再DBCP取道的連接都是失效的連接,而沒有重新取。有的時候會報Io 異常:Connection reset。

    解決方法:

    spring中datasource的配置如下:
        <bean id="dispatchdataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:myserver" />
        <property name="username" value="user1" />
        <property name="password" value="pwd" />
        <property name="maxActive" value="10000" />
        <property name="maxIdle" value="30" />
         <property name="minIdle" value="2" />
        <property name="maxWait" value="600000" />
        <property name="testOnBorrow" value="true"/>
        <property name="testWhileIdle" value="true"/>
        <property name="validationQuery" value="select 1 from dual"/>
    </bean>

     

    分析:

    DBCP使用apache的對象池ObjectPool作為連接池的實現,有以下主要的方法

    Object borrowObject() throws Exception;從對象池取得一個有效對象

    void returnObject(Object obj) throws Exception;使用完的對象放回對象池

    void invalidateObject(Object obj) throws Exception;使對象失效

    void addObject() throws Exception;生成一個新對象


    ObjectPool的一個實現就是GenericObjectPool,這個類使用對象工廠PoolableObjectFactory實現對象的生成,失效檢查等等功能,以其實現數據庫連接工廠PoolableConnectionFactory做以說明,主要方法:

         Object makeObject() throws Exception; 使用ConnectionFactory生成新連接

         void destroyObject(Object obj) throws Exception;關閉連接

         boolean validateObject(Object obj); 驗證連接是否有效,如果_validationQuery不空,則使用該屬性作為驗證連接是否有效的sql語句,查詢數據庫

         void activateObject(Object obj) throws Exception;激活連接對象

         void passivateObject(Object obj) throws Exception; 關閉連接生成過的Statement和ResultSet,使連接處于非活動狀態

        而GenericObjectPool有幾個主要屬性

         _timeBetweenEvictionRunsMillis:失效檢查線程運行時間間隔,默認-1

         _maxIdle:對象池中對象最大個數

         _minIdle:對象池中對象最小個數

         _maxActive:可以從對象池中取出的對象最大個數,為0則表示沒有限制,默認為8

         在構造GenericObjectPool時,會生成一個內嵌類Evictor,實現自Runnable接口。如果 _timeBetweenEvictionRunsMillis大于0,每過_timeBetweenEvictionRunsMillis毫秒 Evictor會調用evict()方法,檢查對象的閑置時間是否大于 _minEvictableIdleTimeMillis毫秒(_minEvictableIdleTimeMillis小于等于0時則忽略,默認為30 分鐘),是則銷毀此對象,否則就激活并校驗對象,然后調用ensureMinIdle方法檢查確保池中對象個數不小于_minIdle。在調用 returnObject方法把對象放回對象池,首先檢查該對象是否有效,然后調用PoolableObjectFactory 的passivateObject方法使對象處于非活動狀態。再檢查對象池中對象個數是否小于_maxIdle,是則可以把此對象放回對象池,否則銷毀此對象。

         還有幾個很重要的屬性,_testOnBorrow、_testOnReturn、_testWhileIdle,這些屬性的意義是取得、返回對象和空閑時是否進行驗證,檢查對象是否有效,默認都為false即不驗證。所以當使用DBCP時,數據庫連接因為某種原因斷掉后,再從連接池中取得連接又不進行驗證,這時取得的連接實際已經時無效的數據庫連接了。網上很多說 DBCP的bug應該都是如此吧,只有把這些屬性設為true,再提供_validationQuery語句就可以保證數據庫連接始終有效了,oracle數據庫可以使用SELECT COUNT(*) FROM DUAL,不過DBCP要求_validationQuery語句查詢的記錄集必須不為空,可能這也可以算一個小小的BUG,其實只要_validationQuery語句執行通過就可以了。

    參考:http://hi.baidu.com/dobodo/item/7d95e3384d181cc4392ffab5



    Tomcat Resource可配置的屬性




    posted @ 2014-06-27 11:43 一堣而安 閱讀(14942) | 評論 (0)編輯 收藏

    web 打印

    http://www.jb51.net/article/21444.htm
    http://www.downdiy.com/kfyy/php/20140323/9e7b9b20201d3a49bb835efc2edc23d3.html  保持線條被打印

    posted @ 2014-06-26 14:40 一堣而安 閱讀(229) | 評論 (0)編輯 收藏

    Tomcat6.0 連接池的配置

     Tomcat6.0 連接池的配置

    1.本人當前使用的Tomcat版本為:6.0.20,oracle為穩定的9i版本

    2.下文為方便起見,依習慣以%Tomcat_Home%表示Tomcat安裝的目錄,本人安裝目錄為“E:\Program Files\WindowsXP\tomcat6”

    配置步驟如下:

    1.Tomcat 6的配置和以前的不同了,不推薦在server.xml中進行配置,而是在%Tomcat_Home%\webapps\yourApp\META-INF \context.xml中進行配置才是更好的方法。而不是以前版本%Tomcat_Home%\conf下的context.xml文件。這樣就可以在不同的web應用下單獨配置連接池了,且Tomcat會自動重載。當然你也可以更改%Tomcat_Home%\conf下的context.xml文件,將所有web應用下的連接池進行統一配置。

    2.將代碼修改如下:

    view plaincopy to clipboardprint?
    <Context reloadable="true"> 
        <WatchedResource>WEB-INF/web.xml</WatchedResource> 
        <Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource"   
        maxActive="100"   
        maxIdle="30" 
        maxWait="10000" 
        username="scott"   
        password="tiger" 
        driverClassName="oracle.jdbc.driver.OracleDriver" 
        url="jdbc:oracle:thin:@localhost:1521:ora9"/> 
    </Context> 
    <Context reloadable="true">
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
     <Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource"
     maxActive="100"
     maxIdle="30"
     maxWait="10000"
     username="scott"
     password="tiger"
     driverClassName="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@localhost:1521:ora9"/>
    </Context>

    name 為當前數據源JNDI的名字,可以隨意設定;

    auth 為驗證方式;

    type 資源類型;

    driverClassName 為Oracle驅動引用;

    maxActiv 為連接池最大激活的連接數,設為0表示無限制;

    maxIdle 表示即使沒有數據庫連接時依然可以保持30個空閑的連接,而不被清除,隨時處于待命狀態。設為0表示無限制;

    maxWait 為連接最大的等待時間,單位毫秒,取值10000,表示10000秒后超時。設為-1

                  表示無限制。;

    username 為oracle數據庫的一個用戶名;

    password 為username的密碼;

    url 為連接oracle的連接地址;

    注:本人嘗試將代碼“driverClassName="oracle.jdbc.driver.OracleDriver"”改為“driverClassName="oracle.jdbc.OracleDriver"”程序依然運行正常,剛開始以為老師的代碼有問題

    3.在程序中的調用形式為:

    view plaincopy to clipboardprint?
    Context context = new InitialContext();  
    DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");  
    Connection conn = ds.getConnection(); 
    Context context = new InitialContext();
    DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");
    Connection conn = ds.getConnection();

    注:“java:/comp/env/jdbc/oracleds”紅色標記文字為步驟1里設置的Resource name

    則可以將建立connection的方式以上述形式取代傳統方式:

    view plaincopy to clipboardprint?
    String driver = "oracle.jdbc.driver.OracleDriver";  
    String url = "jdbc:oracle:thin:@localhost:1521:ora9";  
    String username = "scott";  
    String password = "tiger";  
    Class.forName(driver);  
    Connection conn = DriverManager.getConnection(url, username, password); 
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:ora9";
    String username = "scott";
    String password = "tiger";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, username, password);

    4.另外還需將用到的jdbc驅動類庫導入到%Tomcat_Home%\lib目錄下

    否則會拋出如下異常:
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'

    依上述步驟就能成功的配置Tomcat6.0 連接池,還有網友貼文說需

    在web.xml文件中的web-app節點下加入如下代碼形式:
    <resource-ref>
    <res-ref-name>jdbc/myoracle</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    </resource-ref>

    因本人未添加此項,程序依然正確,故本人認為此步驟為非必要項

     ---------------------------------------------------------------------------

    今天需要在另一臺機器上重新部署系統,重新設置db的連接池。當我把tomcat拷貝到那臺機器,并且修改META-INF\context.xml,然后重新啟動tomcat,但發現系統連接的仍然是老的db。再次檢查了META-INF\context.xml文件,確信了這個文件已經正確設置db連接了,這也說明這個文件并沒有真正起作用。查看了tomcat下conf\context.xml也沒有設置db的連接池。那是哪個文件在起作用呢?折騰了辦法,后來發現tomcat在conf\Catalina\localhost下生成了一個和原來META-INF\context.xml相同內容的文件,懷疑一定是這個文件在起作用?刪除conf\Catalina\localhost目錄,重啟tomcat,問題消失。

    轉載一篇tomcat加載類的順序

     

     

    bin:存放啟動和關閉tomcat的腳本文件; 

    /conf:存放tomcat的各種配置文件,比如:server.xml 

    /server/lib:存放tomcat服務器所需要的各種jar文件(jar文件只可被tomcat 服務器訪問) 

    /server/webapps:存放tomcat自帶的兩個web應用:admin應用和manager應用。 

    /common/lib:存放tomcat服務器以及所有web應用都可以訪問的jar文件夾(web和tomcat服務器都可訪問此jar) 

    /shared/lib:存放web都可訪問的jar文件。(可以被所有的web訪問,但不能被tomcat訪問) 

    /logs:存放tomcat的日志文件 

    /webapps:當發布web應用時,默認情況下把web應用文件放于此目錄下 

    /work:tomcat把由jsp生成的Servlet放于此目錄 

    另:在web應用中,WEB-Inf目錄下,也可以建立lib子目錄,在此子目錄下可以存放各種jar文件,這些jar文件只能被當前web應用訪問。其中,在web-inf目錄下的lib與classes目錄,Tomcat類裝載器先裝載classes目錄下的類,再裝載lib目錄下的類。因為類同名時,classes優先。 

     

    其中jsp運行時,查找class的順序為:項目文件夾(WEB-INF\lib)===》容器文件夾(tomcat\common\lib)==》jdk文件夾(jdk\jre\lib\ext) 

     

    Tomcat的class加載的優先順序一覽 

    1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。 

    2.環境變量CLASSPATH中的jar和class文件。 

    3.$CATALINA_HOME/common/classes下的class文件。 

    4.$CATALINA_HOME/commons/endorsed下的jar文件。 

    5.$CATALINA_HOME/commons/i18n下的jar文件。 

    6.$CATALINA_HOME/common/lib 下的jar文件。 

    (JDBC驅動之類的jar文件可以放在這里,這樣就可以避免在server.xml配置好數據源卻出現找不到JDBC Driver的情況。) 

    7.$CATALINA_HOME/server/classes下的class文件。 

    8.$CATALINA_HOME/server/lib/下的jar文件。 

    9.$CATALINA_BASE/shared/classes 下的class文件。 

    10.$CATALINA_BASE/shared/lib下的jar文件。 

    11.各自具體的webapp /WEB-INF/classes下的class文件。 

    12.各自具體的webapp /WEB-INF/lib下的jar文件。 

     

    class的搜尋順序如下 

    ------------- 

    /WEB-INF/classes of your web application 

    /WEB-INF/lib/*.jar of your web application 

    $CATALINA_HOME/common/classes 

    $CATALINA_HOME/common/endorsed/*.jar 

    $CATALINA_HOME/common/i18n/*.jar 

    $CATALINA_HOME/common/lib/*.jar 

    $CATALINA_BASE/shared/classes 

    $CATALINA_BASE/shared/lib/*.jar 

    -------------- 

    因此放在不同webapp里的class文件,會被classloader加載成不同的實例。 

    例如假設下面兩個不同內容的class。分別放在不同的webapp的class目錄下。 

    package com.lizongbo; 

    public class TestClass { 

      private String NAME="lizongbo"; 

     

    package com.lizongbo; 

    public class TestClass { 

      private String NAME="li_zongbo"; 

     

    在不同的webapp得到的com.lizongbo.NAME結果是不同的,且互不影響。 

    但是注意,以下包名開頭的class例外: 

    javax.* 

    org.xml.sax.* 

    org.w3c.dom.* 

    org.apache.xerces.* 

    org.apache.xalan.* 

     

    ps,注意.在各個jar中的\META-INF\MAINFEST.MF文件里Class-Path鍵值對,也會提供jar的加載優先順序。 

    例如某jar的MAINFEST.MF內容如下: 

    Manifest-Version: 1.0 

    Created-By: lizongbo 

    Class-Path: commons-beanutils.jar 

    Class-Path: commons-collections.jar 

    Class-Path: commons-dbcp.jar 

    Class-Path: commons-digester.jar 

    Class-Path: commons-logging.jar 

    Class-Path: commons-pool.jar 

    Class-Path: commons-services.jar 

    Class-Path: commons-validator.jar 

    Class-Path: jakarta-oro.jar 

    Main-Class: com.lizongbo.MyTestClass 

     

     

    那么在加載這個jar的時候,會先在此jar所在目錄下依次先加載commons-beanutils.jar,commons-collections.jar。。。等jar文件。 

     

    在不同的地方放置jar和class可能會產生意想不到的后果,,尤其是不同版本的jar文件,因此在實際應用部署web應用時候要特別留心. 

     

    例如 使用javamail常見的一個出錯信息: 

    javax.mail.NoSuchProviderException: No provider for smtp 

    其真實原因就很可能如下: 

    在不同的加載jar的目錄下放置了不同版本的mail.jar,比如一個是javamail1.3.1的mail.jar 

    在D:\jakarta-tomcat-5.5.8\common\lib下,而另外一個是javamail1.3.2的mail.jar在 

    D:\jakarta-tomcat-5.5.8\webapps\lizongbo\WEB-INF/lib下, 

    那么lizongbo這個webapp中使用到javamail進行郵件發送的時候,便會出現No provider for smtp的錯誤。



    詳細出處參考:http://m.tkk7.com/gm_jing/articles/308828.html

    posted @ 2014-06-18 14:54 一堣而安 閱讀(498) | 評論 (0)編輯 收藏

    時間比較




    import java.util.Date;
    import java.text.ParseException;搜索
    import java.text.SimpleDateFormat;

    public class TimeCompare {

    public static int Hour(Date time){
    SimpleDateFormat st=new SimpleDateFormat("yyyyMMddHH");
    return Integer.parseInt(st.format(time));
    }

    public static Date StringToDate(String s){
    Date time=new Date();
    SimpleDateFormat sd=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    try{
    time=sd.parse(s);
    }
    catch (ParseException e) {
    System.out.println("輸入的日期格式有誤!");
    }
    return time;
    }

    public static void main(String[] args) {
    String a="2012/01/01 18:08:20";
    String b="2012/01/01 18:01:20";
    String c="2012/01/02 01:01:01";
    if(Hour(StringToDate(a))<=Hour(StringToDate(b))&&Hour(StringToDate(a))<Hour(StringToDate(c)))
    System.out.println("成功");
    else
    System.out.println("失敗");
    }
    }

    posted @ 2014-05-26 17:47 一堣而安 閱讀(158) | 評論 (0)編輯 收藏

    eclipse自動更新的取消方法:

    詳細參考:http://blog.csdn.net/fengyifei11228/article/details/6942316

    eclipse自動更新的取消方法:

     

    1. window --> preferences --> General --> Startup and Shutdown --> 在列表中找到 "Automatic Updates Scheduler " 項去掉前面的勾。

     

    如果安裝了Myeclipse,那么還需要執行如下操作

    2. Window --> Preferences --> Myeclipse Enterprise Workbench --> Maven4Myeclipse --> Maven --> "Download repository index updates on startup" 去掉前面的勾。

     

    3. Window --> Preferences --> Myeclipse Enterprise Workbench --> Maven4Myeclipse --> MyEclipse Dashboard --> "Show MyEclipse Dashboard on startup" 去掉前面的勾。

    posted @ 2014-05-25 09:04 一堣而安 閱讀(3951) | 評論 (0)編輯 收藏

    iframe應用session丟失的問題

    詳細參考:http://www.cnblogs.com/fengqingtao/archive/2011/03/16/1986174.html

    iframe應用session丟失的問題

    在網站群的建設中,各子站需要共享主站的footer等公共信息。同時主站的后臺管理也集成了各子站的管理,采取的方式是使用iframe嵌入各站的頁面。在本機開發環境中,沒有出現任何的問題。但是一放到測試環境中,便遇到session丟失的問題。
            環境:應用服務器采用tomcat6.0,各個站點單獨使用一個應用服務器,部署在一臺物理服務器上。外部訪問采用同一個IP,但是不同的端口。
           起初以為,IE它的安全策略默認是會把iframe中的頁面站點認為是不可信任的,它會阻止該站點傳過來的cookie(如果你在iframe中的URL跳轉是用的localhost,則不會被阻擋),所以因為沒法使用cookie了,session便失效了。解決的方法是在過濾器,或者被嵌入的頁面內加入屬性為P3P的header信息。java為:response.addHeader("P3P","CP=CAO PSA OUR");但是依然沒有成功。網上的解決方案都是這么說,況且自己以前還弄過,都成功過,這次怎么弄都不好。
            今天腦子安靜下來,仔細的分析這里面的原因。如果是IE的安全限制,但是火狐、google瀏覽器沒有這樣的限制,為什么這兩個瀏覽器也出現這樣的情況。這肯定不僅僅和跨域引起的P3P的安全問題有關。于是在本機測試,通過iframe引入測試環境中的鏈接,設置了P3P,發現一切正常。這就更說明了,測試環境中的問題絕對不是P3P的問題了。而且使用了同一個IP,也應該沒有跨域的說法。那原因到底是什么呢?
            慢慢的,我將視線注意到了端口上。這些網站的訪問方式都是:同一IP+不同端口,難道和端口有關系。上網搜,關于這方面的內容太少了,但是總算在零星的資源中,找到了里面的原因。IP相同的兩個session對應的cookie是一樣的,而不幸的是sessionID就保存在cookie中,這樣先訪問A,再訪問B的時候,B的sessionid會覆蓋A的sessionid。這個事情沒辦法解決,所以你不要搞兩個端口,最好是搞兩個IP。原來都是cookie惹的禍,它不會區分端口,造成這多個站點不斷的后來的覆蓋前面的,從而造成session的丟失。問題解決了,將相互有引用的應用架構在不同的虛擬主機中,或者映射不同的IP。

    posted @ 2014-05-22 23:07 一堣而安 閱讀(254) | 評論 (0)編輯 收藏

    win7_oracle11g_64位連接32位PLSQL_Developer

    文章參數:http://jingyan.baidu.com/article/fb48e8be4c7c206e622e1491.html

    posted @ 2014-05-13 21:42 一堣而安 閱讀(213) | 評論 (0)編輯 收藏

    Java DES 加密和解密源碼

    文章參考:http://www.oschina.net/code/snippet_727646_18383

    Java密碼學結構設計遵循兩個原則:

    1) 算法的獨立性和可靠性。

    2) 實現的獨立性和相互作用性。

    算法的獨立性是通過定義密碼服務類來獲得。用戶只需了解密碼算法的概念,而不用去關心如何實現這些概念。實現的獨立性和相互作用性通過密碼服務提供器來實現。密碼服務提供器是實現一個或多個密碼服務的一個或多個程序包。軟件開發商根據一定接口,將各種算法實現后,打包成一個提供器,用戶可以安裝不同的提供器。安裝和配置提供器,可將包含提供器的ZIPJAR文件放在CLASSPATH,再編輯Java安全屬性文件來設置定義一個提供器。


    DES算法及如何利用DES算法加密和解密類文件的步驟

    DES算法簡介
    DESData Encryption Standard)是發明最早的最廣泛使用的分組對稱加密算法。DES算法的入口參數有三個:KeyDataMode。其中Key8個字節共64位,是DES算法的工作密鑰;Data也為8個字節64位,是要被加密或被解密的數據;ModeDES的工作方式,有兩種:加密或解密。

    package com.afreon.util;

    import java.io.IOException;
    import java.security.SecureRandom;

    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    public class DesUtil {

        
    private final static String DES = "DES";

        
    public static void main(String[] args) throws Exception {
            String data 
    = "123 456";
            String key 
    = "wang!@#$%";
            System.err.println(encrypt(data, key));
            System.err.println(decrypt(encrypt(data, key), key));

        }

        
        
    /**
         * Description 根據鍵值進行加密
         * 
    @param data 
         * 
    @param key  加密鍵byte數組
         * 
    @return
         * 
    @throws Exception
         
    */

        
    public static String encrypt(String data, String key) throws Exception {
            
    byte[] bt = encrypt(data.getBytes(), key.getBytes());
            String strs 
    = new BASE64Encoder().encode(bt);
            
    return strs;
        }


        
    /**
         * Description 根據鍵值進行解密
         * 
    @param data
         * 
    @param key  加密鍵byte數組
         * 
    @return
         * 
    @throws IOException
         * 
    @throws Exception
         
    */

        
    public static String decrypt(String data, String key) throws IOException,
                Exception 
    {
            
    if (data == null)
                
    return null;
            BASE64Decoder decoder 
    = new BASE64Decoder();
            
    byte[] buf = decoder.decodeBuffer(data);
            
    byte[] bt = decrypt(buf,key.getBytes());
            
    return new String(bt);
        }


        
    /**
         * Description 根據鍵值進行加密
         * 
    @param data
         * 
    @param key  加密鍵byte數組
         * 
    @return
         * 
    @throws Exception
         
    */

        
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
            
    // 生成一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();

            
    // 從原始密鑰數據創建DESKeySpec對象
            DESKeySpec dks = new DESKeySpec(key);

            
    // 創建一個密鑰工廠,然后用它把DESKeySpec轉換成SecretKey對象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey securekey 
    = keyFactory.generateSecret(dks);

            
    // Cipher對象實際完成加密操作
            Cipher cipher = Cipher.getInstance(DES);

            
    // 用密鑰初始化Cipher對象
            cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

            
    return cipher.doFinal(data);
        }

        
        
        
    /**
         * Description 根據鍵值進行解密
         * 
    @param data
         * 
    @param key  加密鍵byte數組
         * 
    @return
         * 
    @throws Exception
         
    */

        
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
            
    // 生成一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();

            
    // 從原始密鑰數據創建DESKeySpec對象
            DESKeySpec dks = new DESKeySpec(key);

            
    // 創建一個密鑰工廠,然后用它把DESKeySpec轉換成SecretKey對象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey securekey 
    = keyFactory.generateSecret(dks);

            
    // Cipher對象實際完成解密操作
            Cipher cipher = Cipher.getInstance(DES);

            
    // 用密鑰初始化Cipher對象
            cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

            
    return cipher.doFinal(data);
        }

    }




    posted @ 2014-05-13 17:19 一堣而安 閱讀(1209) | 評論 (0)編輯 收藏

    JS讀書文件

    Automation服務器不能創建對象
    最簡單解決方法:打開Internet Explorer “工具”菜單欄中的“選項”一欄,單擊“安全”欄中的“自定義級別”選項卡,將第三項“對沒有標記為安全的activex控件進行初始化和腳本運行”設置成
    另外解決辦法參考:http://blog.chinaunix.net/uid-20624711-id-1911481.html


    ==========
    參考:http://www.cnblogs.com/java-boy/archive/2011/03/21/1989911.html

    <script type="text/javascript">
    /**
     *CreateFile: 測試在電腦上創建一個文件件,并在文件夾里寫進一些數據。
     *
     */
    function CreateFile()
    {
       var fso, tf;
       fso = new ActiveXObject("Scripting.FileSystemObject");//獲取對象
       tf = fso.CreateTextFile("c:\\testfile.txt", true);//創建一個文件夾
       // 寫一行,并且帶有新行字符。
       tf.WriteLine("Testing 1, 2, 3.") ;
       // 向文件寫三個新行字符。 
       tf.WriteBlankLines(3) ;
       // 寫一行。
       tf.Write ("This is a test.");
       tf.Close();//關閉
    }
    /**
     *Folder的API:
     *任務 方法
     *創建文件夾。 FileSystemObject.CreateFolder
     *刪除文件夾。 Folder.Delete 或 FileSystemObject.DeleteFolder
     *移動文件夾。 Folder.Move 或 FileSystemObject.MoveFolder
     *復制文件夾。 Folder.Copy 或 FileSystemObject.CopyFolder
     *檢索文件夾的名字。 Folder.Name
     *如果文件夾在驅動器上存在,則找出它。 FileSystemObject.FolderExists
     *獲得現有 Folder 對象的實例。 FileSystemObject.GetFolder
     *找出文件夾的父文件夾名。 FileSystemObject.GetParentFolderName
     *找出系統文件夾的路徑。 FileSystemObject.GetSpecialFolder
     */
    function ManipFiles()
    {
       var fso, f1, f2, s;
       fso = new ActiveXObject("Scripting.FileSystemObject");
       f1 = fso.CreateTextFile("c:\\testfile.txt", true); //如果當前文件已經存在的話,則覆蓋原有文件
       alert("Writing file <br>");
       // 寫一行。
       f1.Write("This is a test.");
       // 關閉文件。
       f1.Close();
       alert("Moving file to c:\\tmp <br>");
       if(!fso.FolderExists("c:\\tmp")) { //如果tmp目錄不存在,則創建一個目錄
            fso.CreateFolder("c:\\tmp");
       }
       // 獲取 C 的根目錄(C:\)中的文件的句柄。
       f2 = fso.GetFile("c:\\testfile.txt");
       // 把文件移動到 \tmp 目錄。如果這個tmp目錄下已經有testfile.txt文件了,則會出錯。(如果沒有tmp這個文件目錄也會出錯)
       f2.Move ("c:\\tmp\\testfile.txt");
       alert("Copying file to c:\\temp <br>");
       // 把文件復制到 \temp 目錄
       if(!fso.FolderExists("c:\\temp")) {//如果temp目錄不存在,則創建一個目錄
            fso.CreateFolder("c:\\temp");
       }
       f2.Copy ("c:\\temp\\testfile.txt");
       alert("Deleting files <br>");
       // 獲得文件當前位置的句柄。
       f2 = fso.GetFile("c:\\tmp\\testfile.txt");
       f3 = fso.GetFile("c:\\temp\\testfile.txt");
       // 刪除文件。
       f2.Delete();
       f3.Delete();
       //刪除文件夾
       var fdTmp = fso.GetFolder("c:\\tmp");
       var fdTemp = fso.GetFolder("c:\\temp");
       fdTmp.DeleteFolder();
       fdTemp.DeleteFolder();
       alert("All done!");
    }

    ManipFiles();
    //CreateFile();
    alert("Ok! Write Over!");
    </script>

    posted @ 2014-05-06 23:02 一堣而安 閱讀(203) | 評論 (0)編輯 收藏

    jquery-validate 框架驗證

    參考:http://liuna718-163-com.iteye.com/blog/1914769

    /*
    動態添加驗證
    $("#dzName").rules("add",{ required: true,range:[1,100000000000], messages: { required: "必填項"} });
    動態刪除驗證
    $("#dzName").rules("remove");
    判斷驗證是否全部通過
     if(!$("#entInfoForm").validate().form()){
            alert("如果您保存不了,請先將必填項填寫完整(紅色字體提示'必填項')");
        }
    */

    posted @ 2014-05-06 15:43 一堣而安 閱讀(231) | 評論 (0)編輯 收藏

    僅列出標題
    共17頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本免费大黄在线观看| 国产永久免费高清在线| 99热在线精品免费全部my| 亚洲色图综合网站| 777爽死你无码免费看一二区| 久久精品亚洲精品国产色婷| 中文字幕在线免费| 亚洲日韩久久综合中文字幕| 好大好硬好爽免费视频| 亚洲av纯肉无码精品动漫| 亚洲AV中文无码乱人伦| 亚欧洲精品在线视频免费观看| 亚洲区小说区激情区图片区| 国产高清不卡免费视频| 亚洲国产av一区二区三区丶| 性盈盈影院免费视频观看在线一区| 亚洲国产精品成人综合色在线| 四虎国产精品免费视| 精品无码一级毛片免费视频观看| 久久综合日韩亚洲精品色| 日韩精品人妻系列无码专区免费| 亚洲三级中文字幕| 日韩免费视频播播| 久久精品无码专区免费| 久久久久亚洲AV片无码下载蜜桃| 免费电视剧在线观看| 另类专区另类专区亚洲| 亚洲高清国产拍精品26U| 天天影院成人免费观看| 亚洲AV无码专区国产乱码不卡| 亚洲欧洲国产成人综合在线观看| 香蕉成人免费看片视频app下载| 国产色在线|亚洲| 国产精品亚洲产品一区二区三区 | 久久久久亚洲爆乳少妇无 | 色屁屁在线观看视频免费| 久久亚洲国产欧洲精品一| 永久免费av无码网站韩国毛片| 日本永久免费a∨在线视频| 亚洲一区二区成人| 亚洲欧洲中文日韩久久AV乱码|