甜咖啡

          我的IT空間

          2013年3月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 甜咖啡 閱讀(17201) | 評(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的書(shū)上寫(xiě)了關(guān)于這個(gè)的問(wèn)題,于是今天就來(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)成功。

          --從這里開(kāi)始將是增加的,為了使導(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)入, 沒(méi)有出現(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

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

           

           

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

          開(kāi)始導(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è)文件。下面開(kāi)始導(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沒(méi)有對(duì)目錄的讀寫(xiě)權(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

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

          下面是沒(méi)有任何錯(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行。

          此表空間中沒(méi)有索引,所以第一種方法也沒(méi)有報(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ì)還是我沒(méi)弄好,所以為了省事還是直接用第二種吧,方便,無(wú)錯(cuò)。

          posted @ 2013-04-03 12:07 甜咖啡 閱讀(993) | 評(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),但是主鍵什么的并沒(méi)有復(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.最常見(jiàn)的情況是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 甜咖啡 閱讀(412) | 評(píng)論 (0)編輯 收藏
          方法1:
          在shell中執(zhí)行LANG=en 將語(yǔ)言設(shè)為英語(yǔ)就可以了.SSH下很多中文都不支持.
          方法2:
          在使用ssh遠(yuǎn)程控制redhat服務(wù)器時(shí),中文顯示為亂碼。這個(gè)問(wèn)題困擾了好久,后來(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ī)器,問(wèn)題應(yīng)該解決了。
          方法3:
          如果你用的是putty ,你只要在字符編碼里選擇utf-8就正常了
           
          補(bǔ)充:這樣做的后果是,在linux啟動(dòng)時(shí),那些提示文字中文都變成了“?”符號(hào)。如果不習(xí)慣的話將ssh顯示端改成英文吧。如下:
          LANG=en_US  
          posted @ 2013-04-03 12:05 甜咖啡 閱讀(658) | 評(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 甜咖啡 閱讀(443) | 評(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ǔ)言編寫(xiě)的,請(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

            

          #:以#開(kāi)頭是注釋,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 :開(kāi)始編譯軟件,如make
          %install :開(kāi)始安裝軟件,如make install
          %files :指定哪些文件需要被打包,如/usr/local/nginx
          %preun :定義卸載之前的動(dòng)作,如殺掉進(jìn)程。


          5、開(kāi)始RPM制作

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

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

          開(kāi)始編譯生成rpm包

          # rpmbuild-bb nginx.spec


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


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

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

          導(dǎo)航

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

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

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 镇远县| 麦盖提县| 临沭县| 怀柔区| 塔河县| 龙江县| 遂溪县| 五常市| 申扎县| 容城县| 太和县| 罗山县| 阳朔县| 永寿县| 宁陕县| 八宿县| 和田市| 清涧县| 长沙市| 始兴县| 蒲江县| 宁都县| 丹阳市| 大宁县| 定结县| 新建县| 霸州市| 页游| 化州市| 鹤岗市| 阳江市| 竹山县| 汉沽区| 吉安市| 泾源县| 沙河市| 峡江县| 禹州市| 宜都市| 罗甸县| 贵州省|