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

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

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

    甜咖啡

    我的IT空間

    2012年8月22日

    Java遍歷Map
    public static void main(String[] args) {

      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "value1");
      map.put("2", "value2");
      map.put("3", "value3");
      
      //第一種:普遍使用,二次取值
      System.out.println("通過(guò)Map.keySet遍歷key和value:");
      for (String key : map.keySet()) {
       System.out.println("key= "+ key + " and value= " + map.get(key));
      }
      
      //第二種
      System.out.println("通過(guò)Map.entrySet使用iterator遍歷key和value:");
      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }
      
      //第三種:推薦,尤其是容量大時(shí)
      System.out.println("通過(guò)Map.entrySet遍歷key和value");
      for (Map.Entry<String, String> entry : map.entrySet()) {
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }

      //第四種
      System.out.println("通過(guò)Map.values()遍歷所有的value,但不能遍歷key");
      for (String v : map.values()) {
       System.out.println("value= " + v);
      }
     }

    Java遍歷Set

    對(duì) set 的遍歷  
    1.迭代遍歷:  
    Set<String> set = new HashSet<String>();  
    Iterator<String> it = set.iterator();  
    while (it.hasNext()) {  
      String str = it.next();  
      System.out.println(str);  
    }  
      
    2.for循環(huán)遍歷:  
    for (String str : set) {  
          System.out.println(str);  
    }  
      
      
    優(yōu)點(diǎn)還體現(xiàn)在泛型 假如 set中存放的是Object  
      
    Set<Object> set = new HashSet<Object>();  
    for循環(huán)遍歷:  
    for (Object obj: set) {  
          if(obj instanceof Integer){  
                    int aa= (Integer)obj;  
                 }else if(obj instanceof String){  
                   String aa = (String)obj  
                 }  
                  ........  
    }  

    當(dāng)一個(gè)人找不到出路的時(shí)候,最好的辦法就是將當(dāng)前能做好的事情做到極致,做到無(wú)人能及。
    posted @ 2013-04-03 12:12 甜咖啡 閱讀(17196) | 評(píng)論 (0)編輯 收藏

    今天在研究了一下關(guān)于ORACLE的導(dǎo)入導(dǎo)出的功能,周五快要下班的時(shí)候給同事新建一個(gè)表空間,將同一個(gè)數(shù)據(jù)庫(kù)中的某個(gè)用戶下的表導(dǎo)入新的表空間上,建好表空間和用戶后,直接用 exp ,imp 來(lái)導(dǎo)入數(shù)據(jù)到新的表空間,查是發(fā)現(xiàn)后來(lái)導(dǎo)入的數(shù)據(jù)還在原來(lái)的表空間上,(周五那天的我是用工具編輯DMP文件,修改里的表空間名后導(dǎo)入的),后來(lái)想起來(lái)了eygle的書上寫了關(guān)于這個(gè)的問題,于是今天就來(lái)試驗(yàn)了一下。

    第一種:修改用戶的一些權(quán)限。

    首先使用sytem帳戶登陸

    --創(chuàng)建新表空間的用戶

    SQL> create user pangzi identified by pangzi default tablespace pangzi temporary tablespace temp;

    用戶已創(chuàng)建。

    --授給新用戶一般的權(quán)限

    SQL> grant export full database to pangzi;

    授權(quán)成功。

    SQL> grant import full database to pangzi;

    授權(quán)成功。

    SQL> grant connect,resource to pangzi;

    授權(quán)成功。

    SQL> grant create procedure to pangzi;

    授權(quán)成功。

    SQL> grant create job to pangzi;

    授權(quán)成功。

    SQL> grant create view to pangzi;

    授權(quán)成功。

    SQL> grant create synonym to pangzi;

    授權(quán)成功。

    --從這里開始將是增加的,為了使導(dǎo)入的數(shù)據(jù),不放在原來(lái)的表空間上

    SQL> grant dba to pangzi;

    --收回用戶的umlimited tablespace權(quán)限

    SQL> revoke unlimited tablespace from pangzi;

    --設(shè)置新創(chuàng)建的用戶可使用syb表空間的大小0(原數(shù)據(jù)所在的表空間為syb)

    SQL> alter user pangzi quota 0 on syb;

    --設(shè)置新創(chuàng)建的用戶可使用pangzi表空間的大小不限制

     

    SQL> alter user pangzi quota unlimited on pangzi;

    --收回DBA權(quán)限

    SQL> revoke dba from pangzi;

    執(zhí)行導(dǎo)入數(shù)據(jù)

    C:\Users\dyspangzi>imp pangzi/pangzi@testdev file=syb.dmp full=y

     

    Import: Release 10.2.0.3.0 - Production on 星期六 4月 21 17:48:54 2012

     

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

     

     

    連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options

     

    經(jīng)由常規(guī)路徑由 EXPORT:V10.02.01 創(chuàng)建的導(dǎo)出文件

     

    警告: 這些對(duì)象由 SYB 導(dǎo)出, 而不是當(dāng)前用戶

     

    已經(jīng)完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導(dǎo)入

    . 正在將 SYB 的對(duì)象導(dǎo)入到 PANGZI

    . . 正在導(dǎo)入表                     "ALL_SALES"導(dǎo)入了         360 行

    . . 正在導(dǎo)入表                       "COUPONS"導(dǎo)入了           6 行

    . . 正在導(dǎo)入表                     "CUSTOMERS"導(dǎo)入了           5 行

    . .中間部分內(nèi)容省略,都是導(dǎo)入的信息

     

     

    . . 正在導(dǎo)入表                      "REG_EXPS"導(dǎo)入了           1 行

    . . 正在導(dǎo)入表                 "SALARY_GRADES"導(dǎo)入了           4 行

    即將啟用約束條件...

    成功終止導(dǎo)入, 沒有出現(xiàn)警告。

    導(dǎo)入成功,我們看導(dǎo)的表已經(jīng)在新的表空間中了

    SQL> show user
    USER 為 "PANGZI"
    SQL> select table_name,tablespace_name from user_tables;

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    DYSPANGZI                      PANGZI
    CUSTOMERS                      PANGZI
    PRODUCT_TYPES                  PANGZI
    PRODUCTS                       PANGZI
    PURCHASES                      PANGZI
    EMPLOYEES                      PANGZI
    SALARY_GRADES                  PANGZI
    PURCHASES_WITH_TIMESTAMP       PANGZI
    PURCHASES_TIMESTAMP_WITH_TZ    PANGZI
    PURCHASES_WITH_LOCAL_TZ        PANGZI
    COUPONS                        PANGZI

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    PROMOTIONS                     PANGZI
    ORDER_STATUS                   PANGZI
    PRODUCT_CHANGES                PANGZI
    MORE_PRODUCTS                  PANGZI
    MORE_EMPLOYEES                 PANGZI
    DIVISIONS                      PANGZI
    JOBS                           PANGZI
    EMPLOYEES2                     PANGZI
    ALL_SALES                      PANGZI
    PRODUCT_PRICE_AUDIT            PANGZI
    REG_EXPS                       PANGZI

    已選擇22行。                      

    第二種:使用EXPDP和IMPDP來(lái)導(dǎo)入和導(dǎo)出

           使用expdp來(lái)導(dǎo)出,首先要為一個(gè)參數(shù)來(lái)指定一個(gè)路徑——directory,expdp是在服務(wù)器端工作,導(dǎo)出的文件需要放在本地目錄,這個(gè)參數(shù)就是保存導(dǎo)出文件的位置。這個(gè)可以自己創(chuàng)建,也可以是默認(rèn)的,我自己創(chuàng)建了一個(gè),名字是expdir

    SQL> CREATE OR REPLACE DIRECTORY expdir AS '/var/backup';

     

    目錄已創(chuàng)建。

     

    SQL> select * from dba_directories;

     

    OWNER        DIRECTORY_NAME      DIRECTORY_PATH

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

    SYS             ADMIN_DIR            /ade/aime_10.2_lnx_push/oracle/md/admin

     

    SYS             DATA_PUMP_DIR       /usr/app/oracle/product/10.2.0/db_1/rdbms/log/

     

    SYS             WORK_DIR             /ade/aime_10.2_lnx_push/oracle/work

     

    SYS             EXPDIR                /var/backup

    --給用戶授予讀寫權(quán)限

     

     

    SQL> grant read,write on directory expdir to syb;

    開始導(dǎo)出數(shù)據(jù)

    [oracle@dyspangzi ~]$ expdp dumpfile=syb.dmp directory=expdir;

    Export: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:06:46

    Copyright (c) 2003, 2005, Oracle.  All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Starting "SYB"."SYS_EXPORT_SCHEMA_01":  dumpfile=syb.dmp directory=expdir
    Estimate in progress using BLOCKS method...
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Total estimation using BLOCKS method: 1.375 MB
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/TABLE/TABLE
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/TABLE/COMMENT
    Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
    Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION
    Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
    Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
    Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
    Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
    Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
    . . exported "SYB"."DYSPANGZI"                           48.50 KB     659 rows
    . . exported "SYB"."ALL_SALES"                           13.68 KB     360 rows
           中間導(dǎo)出信息省略

    .  . exported "SYB"."REG_EXPS"                            5.437 KB       1 rows
    . . exported "SYB"."SALARY_GRADES"                       5.710 KB       4 rows
    . . exported "SYB"."PRODUCT_PRICE_AUDIT"                     0 KB       0 rows
    Master table "SYB"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for SYB.SYS_EXPORT_SCHEMA_01 is:
      /var/backup/syb.dmp
    Job "SYB"."SYS_EXPORT_SCHEMA_01" successfully completed at 18:07:11

     

    導(dǎo)出成功后查看一下剛才創(chuàng)建目錄里邊的內(nèi)容

    [root@dyspangzi var]# cd backup
    [root@dyspangzi backup]# ls -l
    總計(jì) 720
    -rw-r--r-- 1 oracle oinstall   3472 04-21 18:07 export.log
    -rw-r----- 1 oracle oinstall 729088 04-21 18:07 syb.dmp

    多了兩個(gè)文件,一個(gè)是日志文件一個(gè)是導(dǎo)出的數(shù)據(jù)文件,在導(dǎo)入的時(shí)候需要這兩個(gè)文件。下面開始導(dǎo)入。

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

    出現(xiàn)了第一個(gè)錯(cuò)誤

    [oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi

    Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:45:35

    Copyright (c) 2003, 2005, Oracle.  All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    ORA-39002: invalid operation
    ORA-39070: Unable to open the log file.
    ORA-39087: directory name EXPDIR is invalid

    出現(xiàn)了錯(cuò)誤,后來(lái)發(fā)現(xiàn)這個(gè)是因?yàn)樾掠脩魀angzi沒有對(duì)目錄的讀寫權(quán)限造成的,于是加上權(quán)限

    SQL> grant read,write on directory expdir to pangzi;

    授權(quán)成功。

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

    出現(xiàn)了第二個(gè)錯(cuò)誤

    [oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi

    Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:47:38

    Copyright (c) 2003, 2005, Oracle.  All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    ORA-31655: no data or metadata objects selected for job
    ORA-39154: Objects from foreign schemas have been removed from import
    Master table "PANGZI"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
    Starting "PANGZI"."SYS_IMPORT_FULL_01":  pangzi/******** dumpfile=syb.dmp directory=expdir remap_tablespace=syb:pangzi
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Job "PANGZI"."SYS_IMPORT_FULL_01" successfully completed at 18:47:41

    這個(gè)是由于原來(lái)的用戶和現(xiàn)在的不一樣了,加上這個(gè)參數(shù)就好了  remap_schema=syb:pangzi

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

    下面是沒有任何錯(cuò)誤的導(dǎo)入了

    [oracle@dyspangzi ~]$ impdp pangzi/pangzi dumpfile=syb.dmp directory=expdir remap_schema=syb:pangzi remap_tablespace=syb:pangzi

    Import: Release 10.2.0.1.0 - Production on Saturday, 21 April, 2012 18:49:24

    Copyright (c) 2003, 2005, Oracle.  All rights reserved.

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Master table "PANGZI"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
    Starting "PANGZI"."SYS_IMPORT_FULL_01":  pangzi/******** dumpfile=syb.dmp directory=expdir remap_schema=syb:pangzi remap_tablespace=syb:pangzi
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/TABLE/TABLE
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    . . imported "PANGZI"."DYSPANGZI"                        48.50 KB     659 rows
    . . imported "PANGZI"."ALL_SALES"                        13.68 KB     360 rows
         中間部分導(dǎo)入信息省略

    . . imported "PANGZI"."PURCHASES_WITH_TIMESTAMP"         5.609 KB       1 rows
    . . imported "PANGZI"."REG_EXPS"                         5.437 KB       1 rows
    . . imported "PANGZI"."SALARY_GRADES"                    5.710 KB       4 rows
    . . imported "PANGZI"."PRODUCT_PRICE_AUDIT"                  0 KB       0 rows
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
    Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
    Processing object type SCHEMA_EXPORT/FUNCTION/FUNCTION
    Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
    Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
    Processing object type SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
    Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
    Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
    Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
    Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
    Job "PANGZI"."SYS_IMPORT_FULL_01" successfully completed at 18:49:37

    成功導(dǎo)入!!!!

    查看默認(rèn)的表空間

    SQL> select table_name,tablespace_name from user_tables;

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    DYSPANGZI                      PANGZI
    CUSTOMERS                      PANGZI
    PRODUCT_TYPES                  PANGZI
    PRODUCTS                       PANGZI
    PURCHASES                      PANGZI
    EMPLOYEES                      PANGZI
    SALARY_GRADES                  PANGZI
    PURCHASES_WITH_TIMESTAMP       PANGZI
    PURCHASES_TIMESTAMP_WITH_TZ    PANGZI
    PURCHASES_WITH_LOCAL_TZ        PANGZI
    COUPONS                        PANGZI

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    PROMOTIONS                     PANGZI
    ORDER_STATUS                   PANGZI
    PRODUCT_CHANGES                PANGZI
    MORE_PRODUCTS                  PANGZI
    MORE_EMPLOYEES                 PANGZI
    DIVISIONS                      PANGZI
    JOBS                           PANGZI
    EMPLOYEES2                     PANGZI
    ALL_SALES                      PANGZI
    PRODUCT_PRICE_AUDIT            PANGZI
    REG_EXPS                       PANGZI

    已選擇22行。

    此表空間中沒有索引,所以第一種方法也沒有報(bào)錯(cuò),如果出現(xiàn)有索引的第一種方法還得增加幾步,等我明天找到周五那個(gè)數(shù)據(jù)再來(lái)再著做試驗(yàn)。

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

    今天特意去公司找來(lái)了那天導(dǎo)的數(shù)據(jù)庫(kù),回來(lái)做實(shí)驗(yàn)。采用第一種方法不可行,雖然說(shuō)可以使用IMP  加indexs參數(shù)來(lái)導(dǎo)出一些索引,但是導(dǎo)入的時(shí)候總有莫名其妙的錯(cuò)誤,估計(jì)還是我沒弄好,所以為了省事還是直接用第二種吧,方便,無(wú)錯(cuò)。

    posted @ 2013-04-03 12:07 甜咖啡 閱讀(988) | 評(píng)論 (0)編輯 收藏

    1.在Oracle中可以用下面兩種:

    01: 
         create table newtable   as select * from oldtable;//用于復(fù)制前未創(chuàng)建新表newtable不存在的情況 
    02: 
          insert into newtable   select * from oldtable;//已經(jīng)創(chuàng)建了新表newtable 的情況

    注意:第一種方式只是復(fù)制了表結(jié)構(gòu),但是主鍵什么的并沒有復(fù)制進(jìn)去,所以用的時(shí)候要小心在意。

    2.如果想簡(jiǎn)單快速的復(fù)制表結(jié)構(gòu),而不需要oldtable里面的數(shù)據(jù),可以用下面的語(yǔ)句:

        create table newtable   as  select * from oldtable where 1=2;(把數(shù)據(jù)過(guò)濾掉)

    3.如過(guò)newtable 和oldtable的表結(jié)構(gòu)不同,可以使用下面的方式:

     create table newtable  as select  s.c1,s.c2  from oldtable s;

     

    4.如果想重新命名newtable的列名:

    在oracle中:

     create table  newtable(id,name1) as select  s.c1,s.c2  from oldtable s;

    或者

     create table  newtable as select  s.c1 ,s.c2  from oldtable s;

    在mysql中恐怕只能用第二種方式了。

    5.如果是只需要把一部分的oldtable中的數(shù)據(jù)添加到newtable中。可以這樣:

     create table newtable   as (select * from oldtable where ...);//加where過(guò)濾條件

    6.最常見的情況是id列新表中要用,并且和舊表中的不同,使用下面的語(yǔ)句就可以了(我們可以重新建一個(gè)sequence)

    create table yang(id,name) as select hibernate_sequence.nextval,t.ename from emp t;

    7.要注意,導(dǎo)出表的時(shí)候不能用select...into語(yǔ)句。

    posted @ 2013-04-03 12:05 甜咖啡 閱讀(409) | 評(píng)論 (0)編輯 收藏
    方法1:
    在shell中執(zhí)行LANG=en 將語(yǔ)言設(shè)為英語(yǔ)就可以了.SSH下很多中文都不支持.
    方法2:
    在使用ssh遠(yuǎn)程控制redhat服務(wù)器時(shí),中文顯示為亂碼。這個(gè)問題困擾了好久,后來(lái)發(fā)現(xiàn)修改i18n這個(gè)文件能夠修正亂碼。
     
    方法如下:修改/etc/sysconfig/i18n文件,將其改成以下內(nèi)容:
    LANG="zh_CN.GB18030"
    LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
    SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
    SYSFONT="lat0-sun16"
    重啟機(jī)器,問題應(yīng)該解決了。
    方法3:
    如果你用的是putty ,你只要在字符編碼里選擇utf-8就正常了
     
    補(bǔ)充:這樣做的后果是,在linux啟動(dòng)時(shí),那些提示文字中文都變成了“?”符號(hào)。如果不習(xí)慣的話將ssh顯示端改成英文吧。如下:
    LANG=en_US  
    posted @ 2013-04-03 12:05 甜咖啡 閱讀(644) | 評(píng)論 (0)編輯 收藏
    一、java實(shí)現(xiàn)DES加密算法
    為了實(shí)現(xiàn)一對(duì)密鑰對(duì)整個(gè)項(xiàng)目所有加密解密文件都適用的方法,采用先生成一對(duì)密鑰.保存到xml文件中,以后獲得私匙和公鑰只需要從xml文件中取得就可以了.
    /**
    * 把成生的一對(duì)密鑰保存到DesKey.xml文件中
    */
    public static void saveDesKey(){     
        try {
            SecureRandom sr = new SecureRandom();
            //為我們選擇的DES算法生成一個(gè)KeyGenerator對(duì)象
            KeyGenerator kg = KeyGenerator.getInstance ("DES" );
            kg.init (sr);
            FileOutputStream fos = new FileOutputStream("C:/DesKey.xml");
          ObjectOutputStream oos = new ObjectOutputStream(fos);
            //生成密鑰
            Key key = kg.generateKey();
          oos.writeObject(key);
          oos.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
    }




    獲取密鑰方法如下:

    /**

    * 獲得DES加密的密鑰。在交易處理的過(guò)程中應(yīng)該定時(shí)更
    * 換密鑰。需要JCE的支持,如果jdk版本低于1.4,則需要
    * 安裝jce-1_2_2才能正常使用。
    * @return   Key 返回對(duì)稱密鑰
    */
        public static Key getKey() {
            Key kp = null;
            try {
                  String fileName = "conf/DesKey.xml";
                  InputStream is = DesUtil.class.getClassLoader()
                          .getResourceAsStream(fileName);
                  ObjectInputStream oos = new ObjectInputStream(is);
                  kp = (Key) oos.readObject();
                  oos.close();
            } catch (Exception e) {
                  e.printStackTrace();
            }
            return kp;
        }


    文件采用DES算法加密文件

    /**
    * 文件file進(jìn)行加密并保存目標(biāo)文件destFile中

    * @param file
    *         
    要加密的文件 如c:/test/srcFile.txt
    * @param destFile
    *         加密后存放的文件名 如c:/加密后文件
    .txt
    */

    public static void encrypt(String file, String destFile) throws Exception {

            Cipher cipher = Cipher.getInstance("DES");

            cipher.init(Cipher.ENCRYPT_MODE, getKey());

            InputStream is = new FileInputStream(file);

            OutputStream out = new FileOutputStream(dest);

            CipherInputStream cis = new CipherInputStream(is, cipher);

            byte[] buffer = new byte[1024];

            int r;

            while ((r = cis.read(buffer)) > 0) {

                  out.write(buffer, 0, r);

            }

            cis.close();

            is.close();

            out.close();

        }


    文件采用DES算法解密文件


    /**
    文件file進(jìn)行加密并保存目標(biāo)文件destFile中

    * @param file
    *         
    已加密的文件 如c:/加密后文件.txt
    * @param destFile
    *         解密后存放的文件名 如c:/ test/解密后文件
    .txt
    */

    public static void decrypt(String file, String dest) throws Exception {
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.DECRYPT_MODE, getKey());
            InputStream is = new FileInputStream(file);
            OutputStream out = new FileOutputStream(dest);
            CipherOutputStream cos = new CipherOutputStream(out, cipher);
            byte[] buffer = new byte[1024];
            int r;
            while ((r = is.read(buffer)) >= 0) {
                  cos.write(buffer, 0, r);
            }
            cos.close();
            out.close();
            is.close();
        } 
    posted @ 2013-03-29 15:58 甜咖啡 閱讀(438) | 評(píng)論 (0)編輯 收藏
    1、查看操作系統(tǒng)版本和內(nèi)核版本

    #uname –a

    #more /etc/redhat-release


    2、創(chuàng)建相關(guān)目錄

    /usr/src/redhat/SOURCES //存放源代碼,補(bǔ)丁,圖標(biāo)等文件。


    /usr/src/redhat/SPECS //存放用于管理rpm制作進(jìn)程的spec文件。


    /usr/src/redhat/BUILD //解壓后的文件存放在這里。


    /usr/src/redhat/RPMS //存放由rpmbuild制作好的二進(jìn)制包。


    /usr/src/redhat/SRPMS //存放由rpmbuild制作好的源碼包。


    #mkdir -p /usr/src/redhat/

    #cd /usr/src/redhat/

    #mkdir SOURCES SPECS BUILD RPMS SRPMS


    3、下載Nginx源碼包

    下載源碼包到SOURCES目錄,不需要解壓


    #wget http://nginx.org/download/nginx-1.3.9.tar.gz


    4、手工創(chuàng)建SPEC文件

    由于spec文件是由spec語(yǔ)言編寫的,請(qǐng)注意spec語(yǔ)言的語(yǔ)法。

    #cd /usr/src/redhat/SPECS/

    #cat < nginx.spec > EOC

      

    Summary:  High Performance Web Server

      

    Name:  nginx

      

    Version:  1.3.9

      

    Release:  el5

      

    License:  GPL

      

    Group:  Applications/Server

      

    Source:  http://nginx.org/download/nginx-1.3.9.tar.gz

      

    URL:  http://nginx.org/

      

    Distribution:  Linux

      

    Packager:  JingSheng <jingsheng1@staff.sina.com.cn>

      
      

    %description

      

    nginx  [engine x] is a HTTP and reverse proxy server

      

    %prep

      

    useradd  nginx -s /sbin/nologin

      

    rm -rf  $RPM_BUILD_DIR/nginx-1.3.9

      

    zcat  $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf -

      

    %build

      

    cd  $RPM_BUILD_DIR/nginx-1.3.9

      

    ./configure  --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_stub_status_module  --with-http_ssl_module

      

    make

      

    %install

      

    cd  $RPM_BUILD_DIR/nginx-1.3.9

      

    make  install

      

    %preun

      

    if [ -z  "`ps aux | grep nginx | grep -v grep`" ];then

      

    killall  nginx >/dev/null

      

    exit 0

      

    fi

      

    %files

      

    /usr/local/nginx

      

    #:以#開頭是注釋,rpm會(huì)忽略它。
    Summary:簡(jiǎn)單描述軟件。
    Name :定義rpm的名稱。
    Version: 定義軟件版本
    Release: 發(fā)行版本
    License: 定義許可證
    Group: 軟件分類
    Source: 源碼下載地址
    URL: 源碼相關(guān)網(wǎng)站
    Distribution: 發(fā)行版系列
    Packager: 打包人的信息

    scription:軟件詳細(xì)描述,可多行
    %prep :軟件編譯之前的處理,如解壓。
    %build :開始編譯軟件,如make
    %install :開始安裝軟件,如make install
    %files :指定哪些文件需要被打包,如/usr/local/nginx
    %preun :定義卸載之前的動(dòng)作,如殺掉進(jìn)程。


    5、開始RPM制作

    在制作RPM包之前,需要安裝必要的編譯工具

    #yum install -y gcc rpm-build pcre-devel

    開始編譯生成rpm包

    # rpmbuild-bb nginx.spec


    注意:如果安裝生成報(bào)錯(cuò),請(qǐng)將安裝過(guò)的東東全部去除,再重新打包


    # rpm –qpl *.rpm 查看rpm包含哪些

    posted @ 2013-03-22 09:59 甜咖啡 閱讀(629) | 評(píng)論 (0)編輯 收藏

    最近一直在折騰linux,centos、redhat裝了又裝,到最后還是裝了redhat。

    以前多少接觸過(guò)linux,但是都不深入(這次雖然也是皮毛,但是稍微知道了一些東東,現(xiàn)在就賣了),這次從零開始自己折騰linux,確實(shí)是被linux折騰了。linux跟windows確實(shí)有很多不同,有機(jī)會(huì)再繼續(xù)介紹,這次先說(shuō)一下使用Xmanager遠(yuǎn)程連接Redhat的經(jīng)歷。

    Xmanager不多說(shuō)了,是一款非常不錯(cuò)的管理工具。但是,如果要讓Xmanager遠(yuǎn)程連接redhat,其實(shí)遠(yuǎn)程連接,主要還是想要做成跟windows的遠(yuǎn)程桌面一樣的東西,圖形界面方便啦!

    只是這次配置Xmanager相當(dāng)痛苦,按照網(wǎng)上各種資料對(duì)redhat進(jìn)行配置,然后不停的reboot,但是,xmanager總是連不上。

    這其中,修改的文件包括:

    /usr/share/gdm/defaults.conf這個(gè)gdm的配置文件,主要是以下內(nèi)容:

    Enable=true

    DisplaysPerHost=10

    Port=177

    還有/etc/inittab文件,主要是首先默認(rèn)級(jí)別為5,這個(gè)文件貌似在安裝的時(shí)候就已經(jīng)默認(rèn)為5了。id:5:initdefault:

    然后最后一行的“x:5:respawn:/etc/X11/prefdm -nodaemon”調(diào)整為:

    x:5:respawn:/usr/sbin/gdm

    當(dāng)然,還得改!

    依然是/usr/share/gdm/defaults.conf,在[security]中調(diào)整以下的值:

    AllowRoot=true

    AllowRemoteRoot=true

    AllowRemoteAutoLogin=true

    如果開著防火墻,那還是要放開177端口,我暫時(shí)把防火墻關(guān)了。

    reboot!reboot總是很重要的!

    如果上述調(diào)整完成之后,依然無(wú)法連接,我就是這樣的情況,連接不上啊!!!!

    又隨便找了幾篇文章,也許跟hosts文件有關(guān)系哦!

    打開/etc/hosts文件一看,空的!!!

    在其中加上127.0.0.1 localhost,reboot,我總是喜歡reboot,這樣比較干凈!比較徹底!

    在Xstart中配置好相應(yīng)的參數(shù),一定要在Commond中選擇“GNOME”,這樣再Run,Xbrowser將久違的redhat桌面打開了!

    posted @ 2013-02-28 20:06 甜咖啡 閱讀(344) | 評(píng)論 (0)編輯 收藏

    今天開發(fā)的同事,和我說(shuō)

    SecureCRT連接到IDC服務(wù)器,老超時(shí)斷開,影響工作了

    研究了下。

    因?yàn)榭蛻舳伺c服務(wù)器之間存在路由器,防火墻以及為了本身的安全性,在超過(guò)特定的時(shí)間后就會(huì)把空閑連接斷開。或者是服務(wù)器端設(shè)置了斷開空閑連接。
    解決方法:
    既然會(huì)斷開超時(shí)的空閑連接,那么我們就應(yīng)該讓客戶端與服務(wù)器之間的連接“忙”起來(lái),方法有兩個(gè):
    從服務(wù)器方面入手:
    修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默認(rèn)為0)
    這個(gè)參數(shù)的是意思是每5分鐘,服務(wù)器向客戶端發(fā)一個(gè)消息,用于保持連接
    service sshd reload 生效
    從客戶端入手:
    上面是配置需要服務(wù)器權(quán)限,如果沒有服務(wù)器權(quán)限則可以使用這個(gè)方法,其思想是:客戶端向服務(wù)器發(fā)一個(gè)消息,用于保持連接
    secureCRT在選項(xiàng) 終端 反空閑 中設(shè)置每隔多少秒發(fā)送一個(gè)字符串,或者是NO-OP協(xié)議包
    putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默認(rèn)為0, 改為300


    CentOS 5遠(yuǎn)程SSH連接超時(shí)設(shè)定
    操作系統(tǒng):CentOS 5.6    SSH版本:OpenSSH_4.3p2
    網(wǎng)上很多文章都說(shuō),遠(yuǎn)程SSH連接的超時(shí)設(shè)定是在/etc/ssh/sshd_config里,使用ClientAliveInterval和ClientAliveCountMax選項(xiàng),我原來(lái)也這么認(rèn)為的,不過(guò)一直沒配置過(guò)超時(shí)。
    今天配置了一下,發(fā)現(xiàn)這個(gè)是不對(duì)的,正確的配置是在/etc/profile里,使用TMOUT選項(xiàng)進(jìn)行控制,如TMOUT=300,設(shè)定超時(shí)間隔為300秒。
    posted @ 2013-02-28 20:04 甜咖啡 閱讀(4563) | 評(píng)論 (0)編輯 收藏

    遠(yuǎn)程桌面服務(wù)使局域網(wǎng) (LAN) 上的計(jì)算機(jī)可以連接到服務(wù)器(也稱為遠(yuǎn)程計(jì)算機(jī))并運(yùn)行位于服務(wù)器上的程序。這可以只需要在1臺(tái)機(jī)器上安裝應(yīng)用程序,其他機(jī)器共享使用。遠(yuǎn)程桌面連接使用遠(yuǎn)程桌面服務(wù)技術(shù),使一臺(tái)計(jì)算機(jī)可遠(yuǎn)程控制另一臺(tái)計(jì)算機(jī)。

    windows 遠(yuǎn)程終端服務(wù)是單用戶的,也就是說(shuō)通過(guò)遠(yuǎn)程登錄到服務(wù)器時(shí),服務(wù)器本地將黑屏。如何做到不管用本地登錄還是遠(yuǎn)程登錄,同一時(shí)刻容許多個(gè)用戶操作服務(wù)器計(jì)算機(jī)。

    首先:

    要安裝工具包,需要從微軟下載(遠(yuǎn)程服務(wù)器管理工具 http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d ),安裝升級(jí)包后,在控制面板--程序和功能--打開或關(guān)閉WINDOWS功能---遠(yuǎn)程服務(wù)器管理工具--角色管理工具--遠(yuǎn)程桌面服務(wù)工具,選中前面的選擇框。
    在開始--命令框輸入cmd,在彈出的Dos界面輸入netstat -na ,如果出現(xiàn) 3389 端口,就說(shuō)明遠(yuǎn)程終端已經(jīng)啟動(dòng)了。

    然后:

    1, 下載 補(bǔ)丁UniversalTermsrvPatch,功能就是去除單用戶登陸的限制,允許多人多用戶同時(shí)并行訪問登錄。
    2, 根據(jù)你的系統(tǒng)運(yùn)行對(duì)應(yīng)的程序:
    32位系統(tǒng)請(qǐng)運(yùn)行 UniversalTermsrvPatch-x86.exe;
    64位系統(tǒng)請(qǐng)運(yùn)行 UniversalTermsrvPatch-x64.exe。
    3, 需要管理員權(quán)限。右鍵點(diǎn)程序,選擇以管理員身份運(yùn)行。
    4, 破解后需要重啟生效。
    5, 備份文件: \windows\system32\termsrv.dll.backup.(如果想還原設(shè)置 請(qǐng)將備份文件改名為termsrv.dll替換破解的文件即可)

    遠(yuǎn)程桌面的其它可能的設(shè)置:
    運(yùn)行g(shù)pedit.msc打開組策略,計(jì)算機(jī)配置-管理模板-Windows組件-遠(yuǎn)程桌面服務(wù)-遠(yuǎn)程桌面會(huì)話主機(jī)-連接-“限制連接數(shù)量”,如果將狀態(tài)設(shè)置為“禁用”或“未配置”,則在“組策略”級(jí)別上不強(qiáng)制限制連接的數(shù)量。

    posted @ 2013-01-06 16:00 甜咖啡 閱讀(506) | 評(píng)論 (0)編輯 收藏
    在Windows 2003系統(tǒng)上的遠(yuǎn)程桌面實(shí)際上就是終端服務(wù),雖然遠(yuǎn)程桌面最初在Windows XP上就已經(jīng)存在,但由于Windows XP的遠(yuǎn)程桌面功能,只能提供一個(gè)用戶使用計(jì)算機(jī),因此使用率并不高。而Windows 2003提供的遠(yuǎn)程桌面功能則可供多用戶同時(shí)使用,在其上可以運(yùn)行程序、保存文件和使用網(wǎng)絡(luò)資源,在很多方面可以像使用終端一樣,并且在管理及配置方面比原來(lái)的終端服務(wù)更方便。要更好地發(fā)揮遠(yuǎn)程桌面的作用就要對(duì)遠(yuǎn)程桌面進(jìn)行相應(yīng)的配置。 www.2cto.com  
      組策略編譯器(gpedit.msc)配置
     
    使用組策略編譯器配置用戶遠(yuǎn)程連接數(shù)以及用戶會(huì)話數(shù),
    1,“開始”—>“運(yùn)行”輸入gpedit.msc回車打開組策略編譯器->“計(jì)算機(jī)配置”->“管理模板”->“windows組件”->“終端服務(wù)”,右側(cè)鼠標(biāo)右鍵選擇“限制連接數(shù)”打開屬性,選擇“設(shè)置”—>選擇“已啟用”,  “TS    允許的最大連接數(shù)”填寫你所需要的數(shù)量,例如:20。確定完成最大連接數(shù)限制設(shè)置。雙擊“會(huì)話”->選擇“為斷開的會(huì)話設(shè)置時(shí)間限制”右鍵選擇屬性-》“設(shè)置”->xuanze選擇“已啟用”-》“結(jié)束斷開連接會(huì)話”填寫合適的時(shí)間,五分鐘為好。
     
      終端服務(wù)配置(Tscc.msc)的使用
     
      使用終端服務(wù)配置可以更改本地計(jì)算機(jī)上該連接的屬性、添加新連接或設(shè)置服務(wù)器。打開“控制面板”—〉“管理工具”,單擊“終端服務(wù)器配置”啟動(dòng)終端服務(wù)配置窗口。
     
      1 單擊左邊窗口的“連接”項(xiàng),右邊窗口即出現(xiàn)可選的RDP-TCP連接,右擊“RDP-TCP”,選“屬性”出現(xiàn)RDP-Tcp屬性對(duì)話框,主要配置有:
      (1)連接數(shù)設(shè)置:可在“網(wǎng)卡”選項(xiàng)中更改。設(shè)置更多地連接數(shù)可使更多的用戶同時(shí)登錄服務(wù)器。默認(rèn)最多同時(shí)兩個(gè)用戶連接,如果想要使3個(gè)以上的用戶同時(shí)使用遠(yuǎn)程桌面功能,則必須安裝終端服務(wù),安裝后就可以任意設(shè)定用戶數(shù)制。  www.2cto.com  
      安裝終端服務(wù)可通過(guò)Windows的“添加/刪除程序”—〉“添加/刪除Windows組件”中,選中“終端服務(wù)器”來(lái)添加,根據(jù)需要完成相應(yīng)配置,完成終端服務(wù)安裝,重啟機(jī)器生效。
      由于每個(gè)用戶連接遠(yuǎn)程桌面后最小占用12MB左右的內(nèi)存,因此可根據(jù)服務(wù)器內(nèi)存大小來(lái)設(shè)定用戶數(shù),一般用戶數(shù)不要太多,以免影響性能。如256MB內(nèi)存可設(shè)定用戶數(shù)8個(gè)左右,512MB內(nèi)存可設(shè)定20~30個(gè)。
      (2)調(diào)整顏色分辨率(顏色深度):在“客戶端設(shè)置”項(xiàng)中。限制顏色深度可以增強(qiáng)連接性能,尤其是對(duì)于慢速鏈接,并且還可以減輕服務(wù)器負(fù)載。“遠(yuǎn)程桌面”連接的當(dāng)前默認(rèn)最大顏色深度設(shè)置為 16 位。
      選中“顏色深度最大值”,可修改限定的最大顏色深度為8、15、16或24位。若不選中,則使用登錄的客戶端顏色設(shè)置。
      (3)讓客戶自動(dòng)登錄:在“登錄設(shè)置”選項(xiàng)卡上。這對(duì)普通應(yīng)用非常方便,可加快登錄速度,提高服務(wù)效率。
      要使用自動(dòng)登錄,需選中“總是使用下列登錄信息”,在“用戶名”中,鍵入允許自動(dòng)登錄到服務(wù)器的用戶的名稱,在“密碼”和“確認(rèn)密碼”中,鍵入該用戶的密碼。 這樣客戶端連接時(shí)將不用再輸入用戶名和密碼,而自動(dòng)進(jìn)入Windows 2003桌面(注意:若此后再有用戶登錄,那么原來(lái)的連接將被斷開)。若輸入不完整,則登錄時(shí)還會(huì)要求輸入用戶名或密碼。
      如要想更安全的使用服務(wù)器,則應(yīng)選中“總是提示密碼”以指定該用戶在登錄到服務(wù)器之前始終要被提示輸入密碼,從而限制客戶端的自動(dòng)登錄。
      (4)對(duì)連接自動(dòng)限制管理:單擊“會(huì)話”項(xiàng)來(lái)設(shè)定。主要用來(lái)設(shè)定超時(shí)的限制,以便釋放會(huì)話所占用的資源,“結(jié)束已斷開的會(huì)話”和“空閑會(huì)話限制”的時(shí)間,一般應(yīng)用設(shè)為5分鐘較好。對(duì)安全性要求高的也可設(shè)定“活動(dòng)會(huì)話限制”的時(shí)間。“達(dá)到會(huì)話限制或者連接被中斷時(shí)”下的選項(xiàng),最好選“結(jié)束會(huì)話”,這樣連接所占的資源就會(huì)被釋放。
      (5)設(shè)置加密級(jí)別:單擊“常規(guī)”項(xiàng),可指定在終端服務(wù)會(huì)話期間,對(duì)于客戶端與遠(yuǎn)程計(jì)算機(jī)之間發(fā)送的所有數(shù)據(jù)是否強(qiáng)制加密級(jí)別。分四個(gè)級(jí)別:符合 FIPS(最高級(jí)別的加密)、高(加密數(shù)據(jù)經(jīng)過(guò)強(qiáng) 128 位加密。)、客戶端兼容(加密數(shù)據(jù)經(jīng)過(guò)客戶端支持的最大密鑰強(qiáng)度加密)和低(從服務(wù)器發(fā)送到客戶端的數(shù)據(jù)將不會(huì)被加密)。
      (6)啟用終端客戶音頻:在“客戶端設(shè)置”項(xiàng)下邊,默認(rèn)為禁用,以節(jié)約服務(wù)器資源。當(dāng)用戶少時(shí) ,單擊“音頻映射”去掉被禁用的選項(xiàng),使終端客戶能使用多媒體設(shè)備。當(dāng)然,客戶端計(jì)算機(jī)也必須裝有聲卡。  www.2cto.com  
      如果有多個(gè)用戶連接到相同的服務(wù)器,則會(huì)以同一個(gè)用戶名登錄。
     
      (7)啟用驅(qū)動(dòng)器映射;此項(xiàng)可方便終端與服務(wù)器磁盤間文件的相互傳送。啟用后本地驅(qū)動(dòng)器將作為網(wǎng)絡(luò)驅(qū)動(dòng)器顯示在終端中。
     
      同樣還有打印機(jī)、剪貼板、com端口等也可設(shè)置映射。但每設(shè)置一個(gè)都要占用一定的系統(tǒng)資源;所以,一般用戶最好禁用。
     
      (8)服務(wù)器的安全設(shè)置:在“權(quán)限”項(xiàng),可選擇組或用戶,限制其對(duì)終端的配置權(quán)限。另外,由于只有Administrators 和 Remote Desktop Users 組的成員可以使用終端服務(wù)連接與遠(yuǎn)程計(jì)算機(jī)連接,所以可對(duì)不同用戶分組管理,對(duì)于要求安全性高的,可利用NTFS分區(qū)設(shè)置不同用戶的權(quán)限。
     
    “服務(wù)器設(shè)置”—》“限制每個(gè)用戶使用一個(gè)會(huì)話”右鍵選擇屬性,去除“限制每個(gè)用戶使用一個(gè)會(huì)話”的勾選,確認(rèn)完成設(shè)置。
      整個(gè)多用戶的遠(yuǎn)程連接設(shè)置到此結(jié)束。
    posted @ 2013-01-06 15:59 甜咖啡 閱讀(526) | 評(píng)論 (0)編輯 收藏
    在遠(yuǎn)程管理方面,Windows Server 2003系統(tǒng)一個(gè)最明顯的進(jìn)步就是增加了“遠(yuǎn)程桌面”功能。這樣一來(lái),從Windows 2000保留下來(lái)的終端服務(wù)似乎就顯得有點(diǎn)多余了。然而情況并不是這樣,因?yàn)樵诓话惭b“終端服務(wù)器”的前提下,“遠(yuǎn)程桌面”功能的可管理性比較有限。搭建終端服務(wù)器以后,對(duì)Windows 2000 Server和Windows Server 2003系統(tǒng)的遠(yuǎn)程管理操作將更加靈活。
    在Windows Server 2003(SP1)中默認(rèn)沒有安裝終端服務(wù)器組件,用戶需要手動(dòng)添加該組件。安裝終端服務(wù)組件的步驟如下所述:

    步驟/方法

    1. 第1步,在開始菜單中依次單擊“控制面板”→“添加或刪除程序”菜單項(xiàng),打開“添加或刪除程序”窗口。然后單擊“添加/刪除Windows組件”按鈕,打開“Windows組件向?qū)?#8221;對(duì)話框。在“組件”列表中選中“終端服務(wù)器”復(fù)選框,如圖2008112107所示。
      圖2008112107 選中“終端服務(wù)器”復(fù)選框
      在Windows Server 2003中安裝終端服務(wù)器組件
    2. 第2步,打開“配置警告”對(duì)話框,提示用戶關(guān)于IE安全配置方面的信息。因?yàn)榕渲媒K端服務(wù)器的目的主要是為了遠(yuǎn)程管理Windows Server 2003服務(wù)器,對(duì)于瀏覽Internet方面的要求并不高,因此直接單擊“是”按鈕。返回“Windows組件”對(duì)話框,選中“終端服務(wù)器授權(quán)”復(fù)選框,并單擊“下一步”→“下一步”按鈕即可,如圖2008112108所示。
      圖2008112108 “配置警告”對(duì)話框
      在Windows Server 2003中安裝終端服務(wù)器組件
    3. 第3步,在打開的為應(yīng)用程序兼容性選擇默認(rèn)權(quán)限對(duì)話框中列出兩種安裝模式,即“完整安全模式”和“寬松安全模式”。選擇不同的模式會(huì)應(yīng)用到Windows Server 2003系統(tǒng)的不同安全級(jí)別。選中“完整安全模式”單選框,并單擊“下一步”按鈕,如圖2008112109所示。
      圖2008112109 選中“完整安全模式”單選框
      在Windows Server 2003中安裝終端服務(wù)器組件
    4. 第4步,打開指定終端服務(wù)器許可證服務(wù)器對(duì)話框,提示用戶該終端服務(wù)器必須在120天內(nèi)與Windows Server 2003終端服務(wù)器許可證服務(wù)器連接才能保證正常使用。由于在“Windows組件”對(duì)話框中選中了“終端服務(wù)器授權(quán)”復(fù)選框,則意味著這臺(tái)Windows Server 2003終端服務(wù)器將同時(shí)作為許可證服務(wù)器。因此選中“使用下列許可證服務(wù)器”單選框,并在編輯框中輸入這臺(tái)服務(wù)器的名稱或IP地址。設(shè)置完畢單擊“下一步”按鈕,如圖2008112110所示。
      圖2008112110 輸入許可證服務(wù)器IP地址
      在Windows Server 2003中安裝終端服務(wù)器組件
    5. 第5步,在打開的終端服務(wù)器授權(quán)模式對(duì)話框中,要求用戶指定這臺(tái)終端服務(wù)器使用的授權(quán)模式。選中“每設(shè)備授權(quán)模式”單選框,并單擊“下一步”按鈕,如圖2008112111所示。
      圖200811211 選中“每設(shè)備授權(quán)模式”單選框
      在Windows Server 2003中安裝終端服務(wù)器組件
    6. 第6步,打開“終端服務(wù)器授權(quán)安裝程序”對(duì)話框,要求用戶選擇安裝許可證服務(wù)器數(shù)據(jù)庫(kù)的路徑。一般可以保持默認(rèn)路徑,并單擊“下一步”按鈕,如圖2008112112所示。
      圖2008112112 選擇許可證服務(wù)器數(shù)據(jù)庫(kù)路徑
      在Windows Server 2003中安裝終端服務(wù)器組件
    7. 第7步,Windows組件向?qū)ч_始安裝終端服務(wù)器和終端服務(wù)器授權(quán)組件,在安裝過(guò)程中要求提供Windows Server 2003(SP1)系統(tǒng)的安裝光盤或指定安裝程序路徑。完成安裝后單擊“完成”按鈕關(guān)閉Windows組件向?qū)В凑仗崾局匦聠?dòng)計(jì)算機(jī)。
    posted @ 2013-01-06 15:59 甜咖啡 閱讀(337) | 評(píng)論 (0)編輯 收藏
    package com;
      
      import java.io.FileInputStream;
      import java.io.InputStream;
      import java.util.ArrayList;
      import java.util.List;
      
      import javax.xml.parsers.SAXParser;
      import javax.xml.parsers.SAXParserFactory;
      
      import org.xml.sax.Attributes;
      import org.xml.sax.SAXException;
      import org.xml.sax.helpers.DefaultHandler;
      
      /**
       * SAX解析XML,事件驅(qū)動(dòng)
       * 只有兩種節(jié)點(diǎn)
       * Element Node元素節(jié)點(diǎn)
       * Text Node文本節(jié)點(diǎn) 
       */
      public class SaxResolveXML {
     
      public static void main(String[] args){
      try {
      SaxResolveXML saxResolveXML = new SaxResolveXML();
      InputStream inStream = new FileInputStream("D:\\xml.xml");
      List<Person> list = saxResolveXML.getList(inStream);
      for(Person person : list){
      System.out.println(person.toString());
      }
      } catch (Exception e) {
      e.printStackTrace();
      }
     
      }
     
      public List<Person> getList(InputStream inStream) throws Exception {
      SAXParserFactory factory = SAXParserFactory.newInstance();
      SAXParser parse = factory.newSAXParser();
      SaxResolve saxResolve = new SaxResolve();
      parse.parse(inStream, saxResolve);
      inStream.close();
      return saxResolve.getPerson();
      }
     
      private final class SaxResolve extends DefaultHandler {
     
      private List<Person> list = null;
      private Person person = null;
      private String tag = null;
     
      public List<Person> getPerson(){
      return list;
      }
     
      //開始文檔事件
      public void startDocument() throws SAXException {
      //初始化
      list = new ArrayList<Person>();
      }
      
      //開始元素語(yǔ)法事件  參數(shù)說(shuō)明:命名空間、不帶命名空間的標(biāo)簽名、含有命名空間前綴的標(biāo)簽名、屬性
      public void startElement(String uri, String localName, String qName,
      Attributes atts) throws SAXException {
      if("person".equals(qName)){
      person = new Person();
      person.setId(Integer.parseInt(atts.getValue(0)));
      }
      tag = qName;
      }
     
      //觸發(fā)文本節(jié)點(diǎn)事件  參數(shù)說(shuō)明:整個(gè)xml內(nèi)容的字符串、當(dāng)前讀到文本類型的開始位置、當(dāng)前讀到文本的數(shù)據(jù)長(zhǎng)度
      public void characters(char[] ch, int start, int length)
      throws SAXException {
      if(tag != null){
      String data = new String(ch, start, length);
      if(tag.equals("name")){
      person.setName(data);
      }else if(tag.equals("age")){
      person.setAge(Integer.parseInt(data));
      }
      }
      }
     
      //結(jié)束元素語(yǔ)法事件  參數(shù)說(shuō)明:命名空間、不帶命名空間的標(biāo)簽名、含有命名空間前綴的標(biāo)簽名
      public void endElement(String uri, String localName, String qName)
      throws SAXException {
      if("person".equals(qName)){
      list.add(person);
      person = null;
      //對(duì)象設(shè)為空
      }
      tag = null;
      }
      }
     
     
      /*//開始文檔事件
      public void startDocument() throws SAXException {
     
      }
      
      //開始元素語(yǔ)法事件  參數(shù)說(shuō)明:命名空間、不帶命名空間的標(biāo)簽名、含有命名空間前綴的標(biāo)簽名、屬性
      public void startElement(String uri, String localName, String qName,
      Attributes atts) throws SAXException {
     
      }
     
      //觸發(fā)文本節(jié)點(diǎn)事件  參數(shù)說(shuō)明:整個(gè)xml內(nèi)容的字符串、當(dāng)前讀到文本類型的開始位置、當(dāng)前讀到文本的數(shù)據(jù)長(zhǎng)度
      public void characters(char[] ch, int start, int length)
      throws SAXException {
     
      }
     
      //結(jié)束元素語(yǔ)法事件  參數(shù)說(shuō)明:命名空間、不帶命名空間的標(biāo)簽名、含有命名空間前綴的標(biāo)簽名
      public void endElement(String uri, String localName, String qName)
      throws SAXException {
     
      }
      
      public void endDocument() throws SAXException {
     
      }
      
      public void endPrefixMapping(String prefix) throws SAXException {
     
      }
      
      public void ignorableWhitespace(char[] ch, int start, int length)
      throws SAXException {
     
      }
      
      public void processingInstruction(String target, String data)
      throws SAXException {
     
      }
      
      public void setDocumentLocator(Locator locator) {
     
      }
      
      public void skippedEntity(String name) throws SAXException {
     
      }
      
      public void startPrefixMapping(String prefix, String uri)
      throws SAXException {
     
      }*/
     
      }
      
     
     
     
     xml文件如下:
     <?xml version="1.0" encoding="UTF-8"?>
      <persons>
          <person id="1">
              <name>liming</name>
              <age>23</age>
          </person>
          <person id="2">
              <name>lixiangmei</name>
              <age>24</age>
          </person>
      </persons>
      
     
     
     
    posted @ 2012-12-25 16:52 甜咖啡 閱讀(376) | 評(píng)論 (0)編輯 收藏




    export LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/runtime/glnx86:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnx86:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/java/jre/glnx86/jre/lib/i386/native_threads:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/java/jre/glnx86/jre/lib/i386/server:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/java/jre/glnx86/jre/lib/i386
    export XAPPLRESDIR=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/X11/app-defaults

    把以上兩行加入系統(tǒng)的環(huán)境變量里面:具體操作如下:
    vi /etc/profile
    按 i 就可以編輯這個(gè)文件,開始復(fù)制
    把上面兩行拷貝到這個(gè)文件的最下面然后保存就可以了!
    保存退出時(shí)先按一下“ESC”,然后再按“:wq”就可以保存退出了!
    posted @ 2012-11-16 16:24 甜咖啡 閱讀(2009) | 評(píng)論 (0)編輯 收藏
    /**
      * 從數(shù)據(jù)庫(kù)中查詢IRI和KLO模型的數(shù)據(jù),并下載到本地
      * @param dataTime         時(shí)次
      * @param outIRIFilePath   IRI文件下載到本地的路徑
      * @param outKLOFilePath   KLO文件下載到本地的路徑
      * @param outAnaFilePath   插值文件下載到本地的路徑
      */
      @SuppressWarnings("static-access")
      public static void selectBlogInfo(String dataTime, String outIRIFilePath, String outKLOFilePath, String outAnaFilePath) {
      try {
      Connection con = DBConnectionManager.getInstance().getConnection();
      Statement st = con.createStatement();
      String sql = "select * from MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24')";
      ResultSet rs = st.executeQuery(sql);
      if (rs.next()) {
      Blob blod = rs.getBlob("IRIDATA");
      InputStream reader = blod.getBinaryStream();
      dataTime = dataTime.replaceAll("-", "");
      dataTime = dataTime.replaceAll(" ", "");
      String iriFilePath = outIRIFilePath+"\\"+dataTime+"0000.iri.grd";
      File file = new File(iriFilePath);
      OutputStream writer;
      writer = new BufferedOutputStream(new FileOutputStream(file));
      byte buf[] = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
     
      blod = rs.getBlob("IRIDATA");
      reader = blod.getBinaryStream();
      String kloFilePath = outKLOFilePath+"\\"+dataTime+"0000.klo.grd";
      file = new File(kloFilePath);
      writer = new BufferedOutputStream(new FileOutputStream(file));
      buf = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
     
      blod = rs.getBlob("ANADATA");
      reader = blod.getBinaryStream();
      String anaFilePath = outAnaFilePath+"\\"+dataTime+"0000.grd";
      file = new File(anaFilePath);
      writer = new BufferedOutputStream(new FileOutputStream(file));
      buf = new byte[1024];
      for (int i = 0; (i = reader.read(buf)) > 0;) {
      writer.write(buf, 0, i);
      }
      writer.close();
      reader.close();
      }
      DBConnectionManager.closeConnection();
      if(con!=null){con.close();}
      if(st!=null){st.close();}
      if(rs!=null){rs.close();}
      } catch (SQLException e) {
      e.printStackTrace();
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
     
      /**
      * 把IRI和KLO模型的文件上傳到數(shù)據(jù)庫(kù)中
      * @param dataTime     時(shí)次
      * @param iriFilePath  要上傳IRI文件的絕對(duì)路徑
      * @param kloFilePath  要上傳KLO文件的據(jù)對(duì)路徑
      * @param ANAFilePath  要上傳插值文件的據(jù)對(duì)路徑
      */
      @SuppressWarnings("static-access")
      public static void insertBlogInfo(String dataTime, String IRIFilePath, String KLOFilePath, String ANAFilePath) {
      try {
      Connection con = DBConnectionManager.getInstance().getConnection();
      // 處理事務(wù)
      boolean defaultCommit;
      defaultCommit = con.getAutoCommit();
     
      con.setAutoCommit(false);
      Statement st = con.createStatement();
     
      String sql = "select * from MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24')";
      ResultSet rs = st.executeQuery(sql);
      if(rs.next()){
      System.out.println(dataTime+"時(shí)次已經(jīng)入庫(kù)!");
      return ;
      }
      // 插入一個(gè)空對(duì)象
      sql = "insert into MODELTEC(ID, DATATIME, IRIDATA, KLODATA, ANADATA) values(" +
      "SEQU_MODEL_ID.nextval, " +
      "to_date('"+dataTime+"','YYYY-mm-dd HH24'), " +
      "empty_blob(), " +
      "empty_blob(), " +
      "empty_blob())";
      st.executeUpdate(sql);
      // 用for update方式鎖定數(shù)據(jù)行
      sql = "select IRIDATA,KLODATA,ANADATA from  MODELTEC where DATATIME=to_date('"+dataTime+"', 'YYYY-mm-dd HH24') for update";
      rs = st.executeQuery(sql);
      if (rs.next()) {
      // 得到j(luò)ava.sql.Blob對(duì)象,然后Cast為oracle.sql.BLOB
      BLOB blob = (BLOB) rs.getBlob("IRIDATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      OutputStream outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      InputStream fin = new FileInputStream(new File(IRIFilePath));
      // 將輸入流寫到輸出流
      byte[] b = new byte[blob.getBufferSize()];
      int len = 0;
      while ((len = fin.read(b)) != -1) {
      outStream.write(b, 0, len);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      // 得到j(luò)ava.sql.Blob對(duì)象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("KLODATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      fin = new FileInputStream(new File(IRIFilePath));
      // 將輸入流寫到輸出流
      b = new byte[blob.getBufferSize()];
      len = 0;
      while ((len = fin.read(b)) != -1) {
      outStream.write(b, 0, len);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      // 得到j(luò)ava.sql.Blob對(duì)象,然后Cast為oracle.sql.BLOB
      blob = (BLOB) rs.getBlob("ANADATA");
      // 到數(shù)據(jù)庫(kù)的輸出流
      outStream = blob.getBinaryOutputStream();
      // 這里用一個(gè)文件模擬輸入流
      fin = new FileInputStream(new File(ANAFilePath));
      // 將輸入流寫到輸出流
      b = new byte[blob.getBufferSize()];
      len = 0;
      while ((len = fin.read(b)) != -1) {
      outStream.write(b, 0, len);
      }
      // 依次關(guān)閉(注意順序)
      fin.close();
      outStream.flush();
      outStream.close();
     
      con.commit();
      /* 恢復(fù)原提交狀態(tài) */
      con.setAutoCommit(defaultCommit);
      DBConnectionManager.closeConnection();
      if(con!=null){con.close();}
      if(st!=null){st.close();}
      if(rs!=null){rs.close();}
      }
      } catch (SQLException e) {
      e.printStackTrace();
      } catch (FileNotFoundException e) {
      e.printStackTrace();
      } catch (IOException e) {
      e.printStackTrace();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }
    posted @ 2012-10-19 13:17 甜咖啡 閱讀(1334) | 評(píng)論 (0)編輯 收藏
        // date類型轉(zhuǎn)換為String類型
      // formatType格式為yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH時(shí)mm分ss秒
      // data Date類型的時(shí)間
      public static String dateToString(Date data, String formatType) {
      return new SimpleDateFormat(formatType).format(data);
      }
     
      // long類型轉(zhuǎn)換為String類型
      // currentTime要轉(zhuǎn)換的long類型的時(shí)間
      // formatType要轉(zhuǎn)換的string類型的時(shí)間格式
      public static String longToString(long currentTime, String formatType)
      throws ParseException {
      Date date = longToDate(currentTime, formatType); // long類型轉(zhuǎn)成Date類型
      String strTime = dateToString(date, formatType); // date類型轉(zhuǎn)成String
      return strTime;
      }
     
      // string類型轉(zhuǎn)換為date類型
      // strTime要轉(zhuǎn)換的string類型的時(shí)間,formatType要轉(zhuǎn)換的格式y(tǒng)yyy-MM-dd HH:mm:ss//yyyy年MM月dd日
      // HH時(shí)mm分ss秒,
      // strTime的時(shí)間格式必須要與formatType的時(shí)間格式相同
      public static Date stringToDate(String strTime, String formatType)
      throws ParseException {
      SimpleDateFormat formatter = new SimpleDateFormat(formatType);
      Date date = null;
      date = formatter.parse(strTime);
      return date;
      }
     
      // long轉(zhuǎn)換為Date類型
      // currentTime要轉(zhuǎn)換的long類型的時(shí)間
      // formatType要轉(zhuǎn)換的時(shí)間格式y(tǒng)yyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH時(shí)mm分ss秒
      public static Date longToDate(long currentTime, String formatType)
      throws ParseException {
      Date dateOld = new Date(currentTime); // 根據(jù)long類型的毫秒數(shù)生命一個(gè)date類型的時(shí)間
      String sDateTime = dateToString(dateOld, formatType); // 把date類型的時(shí)間轉(zhuǎn)換為string
      Date date = stringToDate(sDateTime, formatType); // 把String類型轉(zhuǎn)換為Date類型
      return date;
      }
     
      // string類型轉(zhuǎn)換為long類型
      // strTime要轉(zhuǎn)換的String類型的時(shí)間
      // formatType時(shí)間格式
      // strTime的時(shí)間格式和formatType的時(shí)間格式必須相同
      public static long stringToLong(String strTime, String formatType)
      throws ParseException {
      Date date = stringToDate(strTime, formatType); // String類型轉(zhuǎn)成date類型
      if (date == null) {
      return 0;
      } else {
      long currentTime = dateToLong(date); // date類型轉(zhuǎn)成long類型
      return currentTime;
      }
      }
     
      // date類型轉(zhuǎn)換為long類型
      // date要轉(zhuǎn)換的date類型的時(shí)間
      public static long dateToLong(Date date) {
      return date.getTime();
      }
    posted @ 2012-09-27 17:07 甜咖啡 閱讀(56549) | 評(píng)論 (0)編輯 收藏
    1、新建用戶
    useradd 用戶名(gpsin) -g 當(dāng)前登錄用戶(root) -d 根目錄(/home/weiss) -s /sbin/nologin(不是用于登錄)       
    passwd 用戶名(為該用戶創(chuàng)建密碼)
    2、刪除用戶
    userdel 用戶名(gpsin)
    3、修改用戶根目錄
    usermod -d 新目錄(/home/wei) 用戶名(gpsin)


    posted @ 2012-09-27 17:00 甜咖啡 閱讀(288) | 評(píng)論 (0)編輯 收藏
    window:需要兩個(gè)文件
    一個(gè)要執(zhí)行的bat文件 test.bat
    文件內(nèi)容:ftp -n -s:C:\\config.txt 127.0.0.1
    另一個(gè)操作ftp的命令文件 config.txt
    文件內(nèi)容:
    user user
    pass
    ls
    put ......
    get ...... 
    bye

    linux:只需要一個(gè)文件即可也就是sh文件
    test.sh
    文件內(nèi)容:ftp -i -n 127.0.0.1
    user user pass
    bin
    ls
    put ......
    get ...... 
    bye


    ftp -nv 127.0.0.1 <<EOF
    user user pass
    bin
    prompt
    lcd /home
    put ......
    get ......
    quit
    posted @ 2012-09-26 13:00 甜咖啡 閱讀(306) | 評(píng)論 (0)編輯 收藏
    package db;
    import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    public class DBPool {
    private ComboPooledDataSource dataSource;
    public static Connection con;
    public DBPool() {
    try {
    dataSource = new ComboPooledDataSource();
    dataSource.setUser("test");
    dataSource.setPassword("test");
    dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
    dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
    dataSource.setInitialPoolSize(2);
    dataSource.setMinPoolSize(1);
    dataSource.setMaxPoolSize(10);
    dataSource.setMaxStatements(50);
    dataSource.setMaxIdleTime(60);
    dataSource.setAcquireRetryAttempts(3);   
    } catch (PropertyVetoException e) {
    }
    }
    public final static DBPool getInstance() {
    return new DBPool();
    }
    public final Connection getConnection() {
    try {
    return dataSource.getConnection();
    } catch (SQLException e) {
    return null;
    }
    }

            //測(cè)試方法
    public static void main(String[] args) throws SQLException {
    con = DBPool.getInstance().getConnection();
    System.out.println(con);
    try {
    if (con != null){con.close();}
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }


       //初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。Default: 3 initialPoolSize  
        cpds.setInitialPoolSize(initialPoolSize);   
        //連接池中保留的最大連接數(shù)。Default: 15 maxPoolSize   
        cpds.setMaxPoolSize(maxPoolSize);
        //連接池中保留的最小連接數(shù)。   
        cpds.setMinPoolSize(minPoolSize);
        //獲得連接的最大等待毫秒數(shù)。Default: 1000 acquireRetryDelay
        cpds.setAcquireRetryDelay(acquireRetryDelay);
        //最大空閑時(shí)間,60秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default: 0 maxIdleTime   
        cpds.setMaxIdleTime(maxIdleTime);
        //當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。Default: 3 acquireIncrement   
        //cpds.setAcquireIncrement(3);   
        //每60秒檢查所有連接池中的空閑連接。Default: 0 idleConnectionTestPeriod   
        //cpds.setIdleConnectionTestPeriod(60);
        //連接關(guān)閉時(shí)默認(rèn)將所有未提交的操作回滾。Default: false autoCommitOnClose   
        //cpds.setAutoCommitOnClose(true);
        //JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatements數(shù)量。但由于預(yù)緩存的statements屬于單個(gè)connection而不是整個(gè)連接池。所以設(shè)置這個(gè)參數(shù)需要考慮到多方面的因素。如果maxStatements與maxStatementsPerConnection均為0,則緩存被關(guān)閉。Default: 0
        //cpds.setMaxStatements(1);

        //maxStatementsPerConnection定義了連接池內(nèi)單個(gè)連接所擁有的最大緩存statements數(shù)
        //cpds.setMaxStatementsPerConnection(100);

        //定義所有連接測(cè)試都執(zhí)行的測(cè)試語(yǔ)句。在使用連接測(cè)試的情況下這個(gè)一顯著提高測(cè)試速度。注意:測(cè)試的表必須在初始數(shù)據(jù)源的時(shí)候就存在。Default: null preferredTestQuery  
        //cpds.setPreferredTestQuery("select sysdate from dual");   
        // 因性能消耗大請(qǐng)只在需要的時(shí)候使用它。如果設(shè)為true那么在每個(gè)connection提交的   
        // 時(shí)候都將校驗(yàn)其有效性。建議使用idleConnectionTestPeriod或automaticTestTable   
        // 等方法來(lái)提升連接測(cè)試的性能。Default: false testConnectionOnCheckout   
        //cpds.setTestConnectionOnCheckout(true);
        //如果設(shè)為true那么在取得連接的同時(shí)將校驗(yàn)連接的有效性。Default: false testConnectionOnCheckin   
        //cpds.setTestConnectionOnCheckin(true);   
        //定義在從數(shù)據(jù)庫(kù)獲取新連接失敗后重復(fù)嘗試的次數(shù)。Default: 30 acquireRetryAttempts   
        //cpds.setAcquireRetryAttempts(30);     
        //獲取連接失敗將會(huì)引起所有等待連接池來(lái)獲取連接的線程拋出異常。但是數(shù)據(jù)源仍有效   
        //保留,并在下次調(diào)用getConnection()的時(shí)候繼續(xù)嘗試獲取連接。如果設(shè)為true,那么在嘗試   
        //獲取連接失敗后該數(shù)據(jù)源將申明已斷開并永久關(guān)閉。Default: false breakAfterAcquireFailure   
        //cpds.setBreakAfterAcquireFailure(false);   

      //兩次連接中間隔時(shí)間,單位毫秒。Default: 1000 acquireRetryDelay
      cpds.setAcquireRetryDelay(60000);

    java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getClob(異常解決辦法

    最近遇到了一個(gè)頭痛的問題,可能大家也遇到過(guò)。經(jīng)過(guò)多番的詢問與查找,終于知道問題原因的所在:異常內(nèi)容如下:

    java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getClob(Ljava/lang/String;)Ljava/sql/Clob;

    問題原因:Oracle驅(qū)動(dòng)版本不對(duì)

    解決辦法:在Oracle服務(wù)器上找到這個(gè)驅(qū)動(dòng),然后cp到Apache的lib目錄下,并同是修改環(huán)境變量classpath,保證這個(gè)lib/classes12.jar在最前面;修改完后,重新啟動(dòng)服務(wù),問題就可以解決。

    (ojdbc14.jar在classes12.jar前面)

     

    posted @ 2012-09-20 15:21 甜咖啡 閱讀(5959) | 評(píng)論 (0)編輯 收藏
    useradd gpsin -g root -d /inraw -s /sbin/nologin     #該用戶僅用來(lái)支持FTP服務(wù),因此不必讓他登錄系統(tǒng)
    gpsin是ftp登錄的用戶名,root指定哪個(gè)用戶可以使用該ftp用戶,-d /inraw 指定ftp的根目錄,-s /sbin/nologin不用于登錄


    passwd gpsin    給gpsin用戶設(shè)置密碼
    posted @ 2012-09-19 14:25 甜咖啡 閱讀(687) | 評(píng)論 (0)編輯 收藏

    1.下載

    rarlinux-3.7.1.tar.zip

    #unzip rarlinux-3.7.1.tar.zip

    #cd rar

    #make

    #make install

    運(yùn)行 rar --help 可以看到幫助信息,如果出現(xiàn)下列信息:
     #rar: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by rar)
     #rar: /lib/tls/libc.so.6: version `GLIBC_2.7' not found (required by rar)
     則執(zhí)行:
     #cp -f rar_static /usr/local/bin/rar
     這樣就可以使用rar 命令了。

    posted @ 2012-09-19 14:21 甜咖啡 閱讀(1100) | 評(píng)論 (0)編輯 收藏

    一、卸載jdk1.4

    由于Redhat Enterprise Linux 5.6 中自帶安裝了jdk1.4.2的,所以在安裝jdk1.6前我把jdk1.4.2的卸了,步驟如下:

    1、打開終端輸入 yum remove java
    終端顯示 Is this ok [y/N]:
    輸入y ,按回車。
    終端顯示 Complete! 此時(shí)jdk1.4已被卸了。
    二、安裝jdk1.6

    1.下載:jdk-1_5_0_06-linux-i586-rpm.bin
       地址:http://java.sun.com/j2se/1.5.0/download.jsp
    2.給文件加上可執(zhí)行權(quán)限
       [root@esprit java]# chmod +x jdk-1_5_0_06-linux-i586-rpm.bin
    chmod +x jdk-6u31-linux-i586-rpm.bin
    3.執(zhí)行jdk-1_5_0_06-linux-i586-rpm.bin
       [root@esprit java]# ./jdk-1_5_0_06-linux-i586-rpm.bin
    ./jdk-6u31-linux-i586-rpm.bin
       執(zhí)行后生成jdk-6u31-linux-i586.rpm
    4.安裝jdk-6u31-linux-i586.rpm
    rpm -ivh jdk-6u31-linux-i586.rpm
    ########################################### [100%]
    package jdk-1.6.0_31-fcs is already installed
    這里我jdk安裝在/usr/java目錄下

    三、配置java環(huán)境變量

     環(huán)境變量配置有三種方法(分別是:修改/etc/profile文件,修改用戶目錄下的.bashrc文件,直接在shell下修改)
    這里我只講我用到的修改/etc/profile文件
       [root@esprit java]# vi /etc/profile
       打開文件后,按 I 鍵,在文件后添加:
     JAVA_HOME =/ usr / java / jdk1.6.0_31
     PATH = $JAVA_HOME / bin:$PATH
     CLASSPATH = .:$JAVA_HOME / lib / tools.jar:$JAVA_HOME / lib / dt.jar:$JAVA_HOME/lib
     export JAVA_HOME PATH CLASSPATH
     
       按esc 鍵
       輸入:wq 保存退出。
       重新登入

    四、檢查jdk是否裝好

    在命令行輸入: java -version

    如果顯示版本信息,表示已經(jīng)安裝配置成功

    五、卸載jdk1.6

    輸入 rpm -qa|grep jdk
    顯示 jdk-1.6.0_24-fcs
    卸載 rpm -e –nodeps jdk-1.6.0_24-fcs

    posted @ 2012-09-19 14:19 甜咖啡 閱讀(7096) | 評(píng)論 (1)編輯 收藏

    package com.ky.ui.util;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;

    import javax.imageio.ImageIO;

    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;

     

    /**
    Email:

    上午11:18:19
    */
    public final class ImgRead{

    // public final static String getPressImgPath(){
    // return ApplicationContext.getRealPath("/template/data/util/shuiyin.gif");
    // }

    /** *//**
    * 把圖片印刷到圖片上
    * @param pressImg -- 水印文件
    * @param targetImg -- 目標(biāo)文件
    * @param x
    * @param y
    */
    public final static void pressImage(String pressImg, String targetImg, int x, int y){
    try {
    File _file = new File(targetImg);
    Image src = ImageIO.read(_file);
    int wideth = src.getWidth(null);
    int height = src.getHeight(null);
    BufferedImage image = new BufferedImage(wideth, height,
    BufferedImage.TYPE_INT_RGB);
    Graphics g = image.createGraphics();
    g.drawImage(src, 0, 0, wideth, height, null);

    // 水印文件
    File _filebiao = new File(pressImg);
    Image src_biao = ImageIO.read(_filebiao);
    int wideth_biao = src_biao.getWidth(null);
    int height_biao = src_biao.getHeight(null);
    g.drawImage(src_biao, wideth - wideth_biao - x, height - height_biao -y, wideth_biao,
    height_biao, null);
    // /
    g.dispose();
    FileOutputStream out = new FileOutputStream(targetImg);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    encoder.encode(image);
    out.close();
    } catch (Exception e){
    e.printStackTrace();
    }
    }

    /** *//**
    * 打印文字水印圖片
    * @param pressText --文字
    * @param targetImg -- 目標(biāo)圖片
    * @param fontName -- 字體名
    * @param fontStyle -- 字體樣式
    * @param color -- 字體顏色
    * @param fontSize -- 字體大小
    * @param x -- 偏移量
    * @param y
    */

    public static void pressText(String pressText, String targetImg, String fontName,int fontStyle, int color, int fontSize, int x, int y){
    try{
    File _file = new File(targetImg);
    Image src = ImageIO.read(_file);
    int wideth = src.getWidth(null);
    int height = src.getHeight(null);
    BufferedImage image = new BufferedImage(wideth, height,
    BufferedImage.TYPE_INT_RGB);
    Graphics g = image.createGraphics();
    g.drawImage(src, 0, 0, wideth, height, null);
    // String s=" g.setColor(Color.RED);
    g.setFont(new Font(fontName, fontStyle, fontSize));

    g.drawString(pressText, wideth - fontSize - x, height - fontSize/2 - y);
    g.dispose();
    FileOutputStream out = new FileOutputStream(targetImg);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    encoder.encode(image);
    out.close();
    } catch (Exception e){
    System.out.println(e);
    }
    }

    public static void main(String[] args){
    pressImage("C:/foot_05.gif", "c:/Chart.jpg", 20 ,20);
    }
    }

    //  獲取屏幕的邊界
      Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(frame.getGraphicsConfiguration());
    //  獲取底部任務(wù)欄高度
      int taskBarHeight = screenInsets.bottom; 

    posted @ 2012-09-08 19:46 甜咖啡 閱讀(1602) | 評(píng)論 (0)編輯 收藏

    1、  下載vsftpd

    # wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.2.tar.gz

    2、  解壓、安裝vsftpd

    # tar xvfz vsftpd-2.3.2.tar.gz

    # cd vsftpd-2.3.2

    # make

    make命令成功執(zhí)行后,您將看到vsftpd文件獲得當(dāng)前目錄中創(chuàng)建。

    # ls -l vsftpd

    3、  安裝 vsftpd d Linux

    # make install

    make install,確保vsftpd文件復(fù)制到/ usr / local / sbin目錄。

    # ls -l /usr/local/sbin/vsftpd

    4、  復(fù)制vsftpd手冊(cè)頁(yè)到/usr/share/man/man8,man5

    # cp vsftpd.8 /usr/share/man/man8/

    # cp vsftpd.conf.5 /usr/share/man/man5/

    5、  拷貝vsftpd.cond配置文件

    # cp vsftpd.conf /etc

    6、   設(shè)置Anonymouse FTP訪問vsftpd

    # mkdir /var/ftp/

    # chown root.root /var/ftp

    # chmod og-w /var/ftp

     

    ftp localhost

    Connected to dotcom.

    220 (vsFTPd 2.3.2)

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (localhost:root): anonymous

    331 Please specify the password.

    Password:

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp>

    在這個(gè)階段,如果你試圖登錄與任何其他賬戶(除了匿名,和ftp),它就會(huì)失敗,如下所示

    # ftp localhost

    Connected to dotcom.

    220 (vsFTPd 2.3.2)

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (localhost:root): ramesh

    530 This FTP server is anonymous only.

    Login failed.

    ftp>

    7、   允許LINIX登錄使用vsftp

    # cp RedHat/vsftpd.pam /etc/pam.d/ftp

    #local_enable=YES

    # ftp localhost

    Connected to dotcom.

    220 (vsFTPd 2.3.2)

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (localhost:root): ramesh

    Password:

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp>

    切記再每次修改完vsftpd.conf文件之后要重啟一下vsftpd

    # ps -ef | grep vsftpd

    # kill -9 {vsftpd-pid}

    # /usr/local/sbin/vsftpd &

     

     

    如果還不能登錄成功,那么要關(guān)閉系統(tǒng)其他的ftp服務(wù)和防火墻

    Service xinetd stop

    Service iptables stop

    posted @ 2012-08-22 16:15 甜咖啡 閱讀(253) | 評(píng)論 (0)編輯 收藏

    導(dǎo)航

    <2012年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    我參與的團(tuán)隊(duì)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 欧美a级在线现免费观看| 亚洲色www永久网站| 午夜免费啪视频在线观看| 中文字幕人成人乱码亚洲电影| 成人a毛片视频免费看| 亚洲av无码成人精品区在线播放 | 亚洲av无码国产精品夜色午夜 | 精品国产免费一区二区三区| 在线日韩日本国产亚洲| 久久99精品免费一区二区| 亚洲日韩欧洲无码av夜夜摸| 国产在线精品免费aaa片| 婷婷久久久亚洲欧洲日产国码AV| 无码国产精品一区二区免费模式| 亚洲人成网www| 最近免费mv在线电影| 亚洲an日韩专区在线| 无码一区二区三区免费视频| 亚洲一日韩欧美中文字幕在线| 免费看美女让人桶尿口| 亚洲欧美在线x视频| 亚洲第一成人影院| 好吊色永久免费视频大全| 亚洲AV午夜福利精品一区二区| 日韩在线不卡免费视频一区| 亚洲人成777在线播放| 成年女人18级毛片毛片免费观看| 亚洲AV无码成人精品区狼人影院| 免费人成在线观看播放国产| 久久精品无码免费不卡| 日韩精品无码一区二区三区免费| 久久亚洲精品成人777大小说| 中国人xxxxx69免费视频| 亚洲18在线天美| 又粗又大又硬又爽的免费视频 | 亚洲爆乳无码专区| 6080午夜一级毛片免费看6080夜福利 | 牛牛在线精品观看免费正| 亚洲自偷自偷偷色无码中文| 小草在线看片免费人成视久网| 亚洲免费中文字幕|