甜咖啡

          我的IT空間

          2012年5月16日

          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("通過Map.keySet遍歷key和value:");
            for (String key : map.keySet()) {
             System.out.println("key= "+ key + " and value= " + map.get(key));
            }
            
            //第二種
            System.out.println("通過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());
            }
            
            //第三種:推薦,尤其是容量大時
            System.out.println("通過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("通過Map.values()遍歷所有的value,但不能遍歷key");
            for (String v : map.values()) {
             System.out.println("value= " + v);
            }
           }

          Java遍歷Set

          對 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循環遍歷:  
          for (String str : set) {  
                System.out.println(str);  
          }  
            
            
          優點還體現在泛型 假如 set中存放的是Object  
            
          Set<Object> set = new HashSet<Object>();  
          for循環遍歷:  
          for (Object obj: set) {  
                if(obj instanceof Integer){  
                          int aa= (Integer)obj;  
                       }else if(obj instanceof String){  
                         String aa = (String)obj  
                       }  
                        ........  
          }  

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

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

          第一種:修改用戶的一些權限。

          首先使用sytem帳戶登陸

          --創建新表空間的用戶

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

          用戶已創建。

          --授給新用戶一般的權限

          SQL> grant export full database to pangzi;

          授權成功。

          SQL> grant import full database to pangzi;

          授權成功。

          SQL> grant connect,resource to pangzi;

          授權成功。

          SQL> grant create procedure to pangzi;

          授權成功。

          SQL> grant create job to pangzi;

          授權成功。

          SQL> grant create view to pangzi;

          授權成功。

          SQL> grant create synonym to pangzi;

          授權成功。

          --從這里開始將是增加的,為了使導入的數據,不放在原來的表空間上

          SQL> grant dba to pangzi;

          --收回用戶的umlimited tablespace權限

          SQL> revoke unlimited tablespace from pangzi;

          --設置新創建的用戶可使用syb表空間的大小0(原數據所在的表空間為syb)

          SQL> alter user pangzi quota 0 on syb;

          --設置新創建的用戶可使用pangzi表空間的大小不限制

           

          SQL> alter user pangzi quota unlimited on pangzi;

          --收回DBA權限

          SQL> revoke dba from pangzi;

          執行導入數據

          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

           

          經由常規路徑由 EXPORT:V10.02.01 創建的導出文件

           

          警告: 這些對象由 SYB 導出, 而不是當前用戶

           

          已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入

          . 正在將 SYB 的對象導入到 PANGZI

          . . 正在導入表                     "ALL_SALES"導入了         360 行

          . . 正在導入表                       "COUPONS"導入了           6 行

          . . 正在導入表                     "CUSTOMERS"導入了           5 行

          . .中間部分內容省略,都是導入的信息

           

           

          . . 正在導入表                      "REG_EXPS"導入了           1 行

          . . 正在導入表                 "SALARY_GRADES"導入了           4 行

          即將啟用約束條件...

          成功終止導入, 沒有出現警告。

          導入成功,我們看導的表已經在新的表空間中了

          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來導入和導出

                 使用expdp來導出,首先要為一個參數來指定一個路徑——directory,expdp是在服務器端工作,導出的文件需要放在本地目錄,這個參數就是保存導出文件的位置。這個可以自己創建,也可以是默認的,我自己創建了一個,名字是expdir

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

           

          目錄已創建。

           

          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

          --給用戶授予讀寫權限

           

           

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

          開始導出數據

          [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
                 中間導出信息省略

          .  . 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

           

          導出成功后查看一下剛才創建目錄里邊的內容

          [root@dyspangzi var]# cd backup
          [root@dyspangzi backup]# ls -l
          總計 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

          多了兩個文件,一個是日志文件一個是導出的數據文件,在導入的時候需要這兩個文件。下面開始導入。

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

          出現了第一個錯誤

          [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

          出現了錯誤,后來發現這個是因為新用戶pangzi沒有對目錄的讀寫權限造成的,于是加上權限

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

          授權成功。

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

          出現了第二個錯誤

          [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

          這個是由于原來的用戶和現在的不一樣了,加上這個參數就好了  remap_schema=syb:pangzi

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

          下面是沒有任何錯誤的導入了

          [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
               中間部分導入信息省略

          . . 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

          成功導入!?。?!

          查看默認的表空間

          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行。

          此表空間中沒有索引,所以第一種方法也沒有報錯,如果出現有索引的第一種方法還得增加幾步,等我明天找到周五那個數據再來再著做試驗。

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

          今天特意去公司找來了那天導的數據庫,回來做實驗。采用第一種方法不可行,雖然說可以使用IMP  加indexs參數來導出一些索引,但是導入的時候總有莫名其妙的錯誤,估計還是我沒弄好,所以為了省事還是直接用第二種吧,方便,無錯。

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

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

          01: 
               create table newtable   as select * from oldtable;//用于復制前未創建新表newtable不存在的情況 
          02: 
                insert into newtable   select * from oldtable;//已經創建了新表newtable 的情況

          注意:第一種方式只是復制了表結構,但是主鍵什么的并沒有復制進去,所以用的時候要小心在意。

          2.如果想簡單快速的復制表結構,而不需要oldtable里面的數據,可以用下面的語句:

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

          3.如過newtable 和oldtable的表結構不同,可以使用下面的方式:

           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中的數據添加到newtable中??梢赃@樣:

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

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

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

          7.要注意,導出表的時候不能用select...into語句。

          posted @ 2013-04-03 12:05 甜咖啡 閱讀(413) | 評論 (0)編輯 收藏
          方法1:
          在shell中執行LANG=en 將語言設為英語就可以了.SSH下很多中文都不支持.
          方法2:
          在使用ssh遠程控制redhat服務器時,中文顯示為亂碼。這個問題困擾了好久,后來發現修改i18n這個文件能夠修正亂碼。
           
          方法如下:修改/etc/sysconfig/i18n文件,將其改成以下內容:
          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"
          重啟機器,問題應該解決了。
          方法3:
          如果你用的是putty ,你只要在字符編碼里選擇utf-8就正常了
           
          補充:這樣做的后果是,在linux啟動時,那些提示文字中文都變成了“?”符號。如果不習慣的話將ssh顯示端改成英文吧。如下:
          LANG=en_US  
          posted @ 2013-04-03 12:05 甜咖啡 閱讀(659) | 評論 (0)編輯 收藏
          一、java實現DES加密算法
          為了實現一對密鑰對整個項目所有加密解密文件都適用的方法,采用先生成一對密鑰.保存到xml文件中,以后獲得私匙和公鑰只需要從xml文件中取得就可以了.
          /**
          * 把成生的一對密鑰保存到DesKey.xml文件中
          */
          public static void saveDesKey(){     
              try {
                  SecureRandom sr = new SecureRandom();
                  //為我們選擇的DES算法生成一個KeyGenerator對象
                  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加密的密鑰。在交易處理的過程中應該定時更
          * 換密鑰。需要JCE的支持,如果jdk版本低于1.4,則需要
          * 安裝jce-1_2_2才能正常使用。
          * @return   Key 返回對稱密鑰
          */
              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進行加密并保存目標文件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進行加密并保存目標文件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) | 評論 (0)編輯 收藏
          1、查看操作系統版本和內核版本

          #uname –a

          #more /etc/redhat-release


          2、創建相關目錄

          /usr/src/redhat/SOURCES //存放源代碼,補丁,圖標等文件。


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


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


          /usr/src/redhat/RPMS //存放由rpmbuild制作好的二進制包。


          /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、手工創建SPEC文件

          由于spec文件是由spec語言編寫的,請注意spec語言的語法。

          #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會忽略它。
          Summary:簡單描述軟件。
          Name :定義rpm的名稱。
          Version: 定義軟件版本
          Release: 發行版本
          License: 定義許可證
          Group: 軟件分類
          Source: 源碼下載地址
          URL: 源碼相關網站
          Distribution: 發行版系列
          Packager: 打包人的信息

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


          5、開始RPM制作

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

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

          開始編譯生成rpm包

          # rpmbuild-bb nginx.spec


          注意:如果安裝生成報錯,請將安裝過的東東全部去除,再重新打包


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

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

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

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

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

          只是這次配置Xmanager相當痛苦,按照網上各種資料對redhat進行配置,然后不停的reboot,但是,xmanager總是連不上。

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

          /usr/share/gdm/defaults.conf這個gdm的配置文件,主要是以下內容:

          Enable=true

          DisplaysPerHost=10

          Port=177

          還有/etc/inittab文件,主要是首先默認級別為5,這個文件貌似在安裝的時候就已經默認為5了。id:5:initdefault:

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

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

          當然,還得改!

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

          AllowRoot=true

          AllowRemoteRoot=true

          AllowRemoteAutoLogin=true

          如果開著防火墻,那還是要放開177端口,我暫時把防火墻關了。

          reboot!reboot總是很重要的!

          如果上述調整完成之后,依然無法連接,我就是這樣的情況,連接不上?。。。。?/p>

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

          打開/etc/hosts文件一看,空的?。。?/p>

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

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

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

          今天開發的同事,和我說

          SecureCRT連接到IDC服務器,老超時斷開,影響工作了

          研究了下。

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


          CentOS 5遠程SSH連接超時設定
          操作系統:CentOS 5.6    SSH版本:OpenSSH_4.3p2
          網上很多文章都說,遠程SSH連接的超時設定是在/etc/ssh/sshd_config里,使用ClientAliveInterval和ClientAliveCountMax選項,我原來也這么認為的,不過一直沒配置過超時。
          今天配置了一下,發現這個是不對的,正確的配置是在/etc/profile里,使用TMOUT選項進行控制,如TMOUT=300,設定超時間隔為300秒。
          posted @ 2013-02-28 20:04 甜咖啡 閱讀(4566) | 評論 (0)編輯 收藏

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

          windows 遠程終端服務是單用戶的,也就是說通過遠程登錄到服務器時,服務器本地將黑屏。如何做到不管用本地登錄還是遠程登錄,同一時刻容許多個用戶操作服務器計算機。

          首先:

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

          然后:

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

          遠程桌面的其它可能的設置:
          運行gpedit.msc打開組策略,計算機配置-管理模板-Windows組件-遠程桌面服務-遠程桌面會話主機-連接-“限制連接數量”,如果將狀態設置為“禁用”或“未配置”,則在“組策略”級別上不強制限制連接的數量。

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

          步驟/方法

          1. 第1步,在開始菜單中依次單擊“控制面板”→“添加或刪除程序”菜單項,打開“添加或刪除程序”窗口。然后單擊“添加/刪除Windows組件”按鈕,打開“Windows組件向導”對話框。在“組件”列表中選中“終端服務器”復選框,如圖2008112107所示。
            圖2008112107 選中“終端服務器”復選框
            在Windows Server 2003中安裝終端服務器組件
          2. 第2步,打開“配置警告”對話框,提示用戶關于IE安全配置方面的信息。因為配置終端服務器的目的主要是為了遠程管理Windows Server 2003服務器,對于瀏覽Internet方面的要求并不高,因此直接單擊“是”按鈕。返回“Windows組件”對話框,選中“終端服務器授權”復選框,并單擊“下一步”→“下一步”按鈕即可,如圖2008112108所示。
            圖2008112108 “配置警告”對話框
            在Windows Server 2003中安裝終端服務器組件
          3. 第3步,在打開的為應用程序兼容性選擇默認權限對話框中列出兩種安裝模式,即“完整安全模式”和“寬松安全模式”。選擇不同的模式會應用到Windows Server 2003系統的不同安全級別。選中“完整安全模式”單選框,并單擊“下一步”按鈕,如圖2008112109所示。
            圖2008112109 選中“完整安全模式”單選框
            在Windows Server 2003中安裝終端服務器組件
          4. 第4步,打開指定終端服務器許可證服務器對話框,提示用戶該終端服務器必須在120天內與Windows Server 2003終端服務器許可證服務器連接才能保證正常使用。由于在“Windows組件”對話框中選中了“終端服務器授權”復選框,則意味著這臺Windows Server 2003終端服務器將同時作為許可證服務器。因此選中“使用下列許可證服務器”單選框,并在編輯框中輸入這臺服務器的名稱或IP地址。設置完畢單擊“下一步”按鈕,如圖2008112110所示。
            圖2008112110 輸入許可證服務器IP地址
            在Windows Server 2003中安裝終端服務器組件
          5. 第5步,在打開的終端服務器授權模式對話框中,要求用戶指定這臺終端服務器使用的授權模式。選中“每設備授權模式”單選框,并單擊“下一步”按鈕,如圖2008112111所示。
            圖200811211 選中“每設備授權模式”單選框
            在Windows Server 2003中安裝終端服務器組件
          6. 第6步,打開“終端服務器授權安裝程序”對話框,要求用戶選擇安裝許可證服務器數據庫的路徑。一般可以保持默認路徑,并單擊“下一步”按鈕,如圖2008112112所示。
            圖2008112112 選擇許可證服務器數據庫路徑
            在Windows Server 2003中安裝終端服務器組件
          7. 第7步,Windows組件向導開始安裝終端服務器和終端服務器授權組件,在安裝過程中要求提供Windows Server 2003(SP1)系統的安裝光盤或指定安裝程序路徑。完成安裝后單擊“完成”按鈕關閉Windows組件向導,并按照提示重新啟動計算機。
          posted @ 2013-01-06 15:59 甜咖啡 閱讀(341) | 評論 (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,事件驅動
             * 只有兩種節點
             * Element Node元素節點
             * Text Node文本節點 
             */
            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>();
            }
            
            //開始元素語法事件  參數說明:命名空間、不帶命名空間的標簽名、含有命名空間前綴的標簽名、屬性
            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;
            }
           
            //觸發文本節點事件  參數說明:整個xml內容的字符串、當前讀到文本類型的開始位置、當前讀到文本的數據長度
            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));
            }
            }
            }
           
            //結束元素語法事件  參數說明:命名空間、不帶命名空間的標簽名、含有命名空間前綴的標簽名
            public void endElement(String uri, String localName, String qName)
            throws SAXException {
            if("person".equals(qName)){
            list.add(person);
            person = null;
            //對象設為空
            }
            tag = null;
            }
            }
           
           
            /*//開始文檔事件
            public void startDocument() throws SAXException {
           
            }
            
            //開始元素語法事件  參數說明:命名空間、不帶命名空間的標簽名、含有命名空間前綴的標簽名、屬性
            public void startElement(String uri, String localName, String qName,
            Attributes atts) throws SAXException {
           
            }
           
            //觸發文本節點事件  參數說明:整個xml內容的字符串、當前讀到文本類型的開始位置、當前讀到文本的數據長度
            public void characters(char[] ch, int start, int length)
            throws SAXException {
           
            }
           
            //結束元素語法事件  參數說明:命名空間、不帶命名空間的標簽名、含有命名空間前綴的標簽名
            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 甜咖啡 閱讀(381) | 評論 (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

          把以上兩行加入系統的環境變量里面:具體操作如下:
          vi /etc/profile
          按 i 就可以編輯這個文件,開始復制
          把上面兩行拷貝到這個文件的最下面然后保存就可以了!
          保存退出時先按一下“ESC”,然后再按“:wq”就可以保存退出了!
          posted @ 2012-11-16 16:24 甜咖啡 閱讀(2019) | 評論 (0)編輯 收藏
          /**
            * 從數據庫中查詢IRI和KLO模型的數據,并下載到本地
            * @param dataTime         時次
            * @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模型的文件上傳到數據庫中
            * @param dataTime     時次
            * @param iriFilePath  要上傳IRI文件的絕對路徑
            * @param kloFilePath  要上傳KLO文件的據對路徑
            * @param ANAFilePath  要上傳插值文件的據對路徑
            */
            @SuppressWarnings("static-access")
            public static void insertBlogInfo(String dataTime, String IRIFilePath, String KLOFilePath, String ANAFilePath) {
            try {
            Connection con = DBConnectionManager.getInstance().getConnection();
            // 處理事務
            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+"時次已經入庫!");
            return ;
            }
            // 插入一個空對象
            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方式鎖定數據行
            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()) {
            // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
            BLOB blob = (BLOB) rs.getBlob("IRIDATA");
            // 到數據庫的輸出流
            OutputStream outStream = blob.getBinaryOutputStream();
            // 這里用一個文件模擬輸入流
            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);
            }
            // 依次關閉(注意順序)
            fin.close();
            outStream.flush();
            outStream.close();
           
            // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
            blob = (BLOB) rs.getBlob("KLODATA");
            // 到數據庫的輸出流
            outStream = blob.getBinaryOutputStream();
            // 這里用一個文件模擬輸入流
            fin = new FileInputStream(new File(IRIFilePath));
            // 將輸入流寫到輸出流
            b = new byte[blob.getBufferSize()];
            len = 0;
            while ((len = fin.read(b)) != -1) {
            outStream.write(b, 0, len);
            }
            // 依次關閉(注意順序)
            fin.close();
            outStream.flush();
            outStream.close();
           
            // 得到java.sql.Blob對象,然后Cast為oracle.sql.BLOB
            blob = (BLOB) rs.getBlob("ANADATA");
            // 到數據庫的輸出流
            outStream = blob.getBinaryOutputStream();
            // 這里用一個文件模擬輸入流
            fin = new FileInputStream(new File(ANAFilePath));
            // 將輸入流寫到輸出流
            b = new byte[blob.getBufferSize()];
            len = 0;
            while ((len = fin.read(b)) != -1) {
            outStream.write(b, 0, len);
            }
            // 依次關閉(注意順序)
            fin.close();
            outStream.flush();
            outStream.close();
           
            con.commit();
            /* 恢復原提交狀態 */
            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 甜咖啡 閱讀(1337) | 評論 (0)編輯 收藏
              // date類型轉換為String類型
            // formatType格式為yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH時mm分ss秒
            // data Date類型的時間
            public static String dateToString(Date data, String formatType) {
            return new SimpleDateFormat(formatType).format(data);
            }
           
            // long類型轉換為String類型
            // currentTime要轉換的long類型的時間
            // formatType要轉換的string類型的時間格式
            public static String longToString(long currentTime, String formatType)
            throws ParseException {
            Date date = longToDate(currentTime, formatType); // long類型轉成Date類型
            String strTime = dateToString(date, formatType); // date類型轉成String
            return strTime;
            }
           
            // string類型轉換為date類型
            // strTime要轉換的string類型的時間,formatType要轉換的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
            // HH時mm分ss秒,
            // strTime的時間格式必須要與formatType的時間格式相同
            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轉換為Date類型
            // currentTime要轉換的long類型的時間
            // formatType要轉換的時間格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH時mm分ss秒
            public static Date longToDate(long currentTime, String formatType)
            throws ParseException {
            Date dateOld = new Date(currentTime); // 根據long類型的毫秒數生命一個date類型的時間
            String sDateTime = dateToString(dateOld, formatType); // 把date類型的時間轉換為string
            Date date = stringToDate(sDateTime, formatType); // 把String類型轉換為Date類型
            return date;
            }
           
            // string類型轉換為long類型
            // strTime要轉換的String類型的時間
            // formatType時間格式
            // strTime的時間格式和formatType的時間格式必須相同
            public static long stringToLong(String strTime, String formatType)
            throws ParseException {
            Date date = stringToDate(strTime, formatType); // String類型轉成date類型
            if (date == null) {
            return 0;
            } else {
            long currentTime = dateToLong(date); // date類型轉成long類型
            return currentTime;
            }
            }
           
            // date類型轉換為long類型
            // date要轉換的date類型的時間
            public static long dateToLong(Date date) {
            return date.getTime();
            }
          posted @ 2012-09-27 17:07 甜咖啡 閱讀(56553) | 評論 (0)編輯 收藏
          1、新建用戶
          useradd 用戶名(gpsin) -g 當前登錄用戶(root) -d 根目錄(/home/weiss) -s /sbin/nologin(不是用于登錄)       
          passwd 用戶名(為該用戶創建密碼)
          2、刪除用戶
          userdel 用戶名(gpsin)
          3、修改用戶根目錄
          usermod -d 新目錄(/home/wei) 用戶名(gpsin)


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

          linux:只需要一個文件即可也就是sh文件
          test.sh
          文件內容: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 甜咖啡 閱讀(311) | 評論 (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;
          }
          }

                  //測試方法
          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();
          }
          }
          }


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

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

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

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

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

          最近遇到了一個頭痛的問題,可能大家也遇到過。經過多番的詢問與查找,終于知道問題原因的所在:異常內容如下:

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

          問題原因:Oracle驅動版本不對

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

          (ojdbc14.jar在classes12.jar前面)

           

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


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

          1.下載

          rarlinux-3.7.1.tar.zip

          #unzip rarlinux-3.7.1.tar.zip

          #cd rar

          #make

          #make install

          運行 rar --help 可以看到幫助信息,如果出現下列信息:
           #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)
           則執行:
           #cp -f rar_static /usr/local/bin/rar
           這樣就可以使用rar 命令了。

          posted @ 2012-09-19 14:21 甜咖啡 閱讀(1106) | 評論 (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! 此時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.給文件加上可執行權限
             [root@esprit java]# chmod +x jdk-1_5_0_06-linux-i586-rpm.bin
          chmod +x jdk-6u31-linux-i586-rpm.bin
          3.執行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
             執行后生成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環境變量

           環境變量配置有三種方法(分別是:修改/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

          如果顯示版本信息,表示已經安裝配置成功

          五、卸載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 甜咖啡 閱讀(7103) | 評論 (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 -- 目標文件
          * @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 -- 目標圖片
          * @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);
          }
          }

          posted @ 2012-09-08 19:51 甜咖啡 閱讀(297) | 評論 (0)編輯 收藏

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

          posted @ 2012-09-08 19:46 甜咖啡 閱讀(1604) | 評論 (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命令成功執行后,您將看到vsftpd文件獲得當前目錄中創建。

          # ls -l vsftpd

          3、  安裝 vsftpd d Linux

          # make install

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

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

          4、  復制vsftpd手冊頁到/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、   設置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>

          在這個階段,如果你試圖登錄與任何其他賬戶(除了匿名,和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): 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 &

           

           

          如果還不能登錄成功,那么要關閉系統其他的ftp服務和防火墻

          Service xinetd stop

          Service iptables stop

          posted @ 2012-08-22 16:15 甜咖啡 閱讀(253) | 評論 (0)編輯 收藏
          posted @ 2012-05-17 17:56 甜咖啡 閱讀(180) | 評論 (0)編輯 收藏
               摘要: 各種排序算法:冒擇路(入)兮(稀)快歸堆,桶式排序,基數排序 冒泡排序,選擇排序,插入排序,稀爾排序,快速排序,歸并排序,堆排序,桶式排序,基數排序 一、冒泡排序(BubbleSort) 1. 基本思想:   兩兩比較待排序數據元素的大小,發現兩個數據元素的次序相反時即進行交換,直到沒有反序的數據元素為止。 2. 排序過程:   設想被排序的數組R[1..N]垂直豎立,將每個數據元素看作有重量的氣...  閱讀全文
          posted @ 2012-05-17 17:52 甜咖啡 閱讀(830) | 評論 (0)編輯 收藏
               摘要: Java反射機制是Java語言被視為準動態語言的關鍵性質。Java反射機制的核心就是允許在運行時通過Java Reflection APIs來取得已知名字的class類的相關信息,動態地生成此類,并調用其方法或修改其域(甚至是本身聲明為private的域或方法)。 也許你使用Java已經很長時間了,可是幾乎不會用到Java反射機制。你會嗤之以鼻地告訴我,Java反射機制沒啥用...  閱讀全文
          posted @ 2012-05-17 17:07 甜咖啡 閱讀(276) | 評論 (0)編輯 收藏
          1.使用mysqladmin修改mysql密碼
          C:\>mysqladmin -udbuser -p password newpass
          Enter password: oldpass
          當然用此命令的前提是你把mysql加入了環境變量,如果沒有加入環境變量的話那只能在命令行下cd到mysqladmin所在的目錄下與此那個次命令了!
          -----------------------------------------
          2.重置root密碼
          方法一:
          在my.ini的[mysqld]字段加入:
          skip-grant-tables
          重啟mysql服務,這時的mysql不需要密碼即可登錄數據庫
          然后進入mysql
          mysql>use mysql;
          mysql>update user set password=password('新密碼') WHERE User='root';
          mysql>flush privileges;
          運行之后最后去掉my.ini中的skip-grant-tables,重啟mysqld即可。
          修改mysql密碼方法二:
          不使用修改my.ini重啟服務的方法,通過非服務方式加skip-grant-tables運行mysql來修改mysql密碼
          停止mysql服務
          打開命令行窗口,在bin目錄下使用mysqld-nt.exe啟動,即在命令行窗口執行: mysqld-nt --skip-grant-tables
          然后另外打開一個命令行窗口,登錄mysql,此時無需輸入mysql密碼即可進入。
          按以上方法修改好密碼后,關閉命令行運行mysql的那個窗口,此時即關閉了mysql,如果發現mysql仍在運行的話可以結束掉對應進程來關閉。
          啟動mysql服務

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

          記住此方法,走遍天下無mysql密碼

          posted @ 2012-05-16 18:38 甜咖啡 閱讀(200) | 評論 (0)編輯 收藏

          先假設一個ftp地址 用戶名 密碼

                FTP Server: home4u.at.china.com

            User: yepanghuang

            Password: abc123

          打開windows的開始菜單,執行“運行”命令,在對話框中輸入ftp,按下“確定”按鈕將會切換至DOS窗口,出現命令提示符

                ftp>鍵入命令連接FTP服務器

            ftp> open home4u.at.china.com (回車)

            稍等片刻,屏幕提示連接成功:

            ftp> connected to home4u.china.com

            接下來服務器詢問用戶名和口令,分別輸入yepanghuang和abc123,待認證通過即可。

          windows下ftp上傳文件:

                比如要把 D:\index.html上傳至服務器的根目錄中,可以鍵入:

            ftp> put D:\index.html (回車)

            當屏幕提示你已經傳輸完畢,可以鍵入相關命令查看:

            ftp> dir (回車)

          windows下ftp上傳下載:

                假設要把服務器\images目錄中的所有.jpg文件下載至本機中,可以輸入指令:

            ftp> cd images(回車) [注:進入\images目錄]

            ftp> mget *.jpg

            windows下ftp上傳與下載工作完畢,鍵入bye中斷連接。

            ftp> bye(回車)

          下面是一些常用的FTP命令:

            1. open:與服務器相連接;

            2. send(put):上傳文件;

            3. get:下載文件;

            4. mget:下載多個文件;

            5. cd:切換目錄;

            6. dir:查看當前目錄下的文件;

            7. del:刪除文件;

            8. bye:中斷與服務器的連接。

            如果想了解更多,可以鍵入

            ftp> help (回車)

          查看命令集

            ascii: 設定以ASCII方式傳送文件(缺省值)

            bell: 每完成一次文件傳送,報警提示

            binary: 設定以二進制方式傳送文件

            bye: 終止主機FTP進程,并退出FTP管理方式

            case: 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉換為小寫字母

            cd: 同UNIX的CD命令

            cdup: 返回上一級目錄

            chmod: 改變遠端主機的文件權限

            close: 終止遠端的FTP進程,返回到FTP命令狀態,所有的宏定義都被刪除

            delete: 刪除遠端主機中的文件

            dir [remote-directory] [local-file]: 列出當前遠端主機目錄中的文件.如果有本地文件,就將結果寫至本地文件

            get [remote-file] [local-file]: 從遠端主機中傳送至本地主機中

            help [command]: 輸出命令的解釋

            lcd: 改變當前本地主機的工作目錄,如果缺省,就轉到當前用戶的HOME目錄

            ls [remote-directory] [local-file]: 同DIR

          posted @ 2012-05-16 18:35 甜咖啡 閱讀(9137) | 評論 (0)編輯 收藏

          導航

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(1)

          我參與的團隊

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 淅川县| 余庆县| 石柱| 灌阳县| 松阳县| 陵川县| 兰溪市| 高青县| 永登县| 嘉义县| 凤城市| 桂阳县| 郸城县| 伊川县| 巴青县| 弥勒县| 三亚市| 嵊泗县| 湖州市| 长岭县| 岳西县| 即墨市| 宜兰市| 舒城县| 乃东县| 通州市| 辛集市| 南汇区| 常宁市| 永顺县| 太仆寺旗| 永寿县| 黑山县| 钟山县| 兴和县| 江门市| 苍梧县| 东源县| 夹江县| 原阳县| 普宁市|