posts - 122,  comments - 25,  trackbacks - 0
          1、JVM設置:

          找到%TOMCAT_HOME%/bin/catalina.sh, 找到如下代碼:

          # ----- Execute The Requested Command -----------------------------------------

          并加入如下設置:
          CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx256m $JPDA_OPTS"

          最小內存128M,最大256M,按你的要求設置,不過最大只能1024M

          2、圖片不能顯示:
          若Linux系統在字符模式下, 處理圖片用時,須作如下設置:
          JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

          posted @ 2007-11-30 12:35 josson 閱讀(1038) | 評論 (1)編輯 收藏

           Source Installation Overview
          ----------------------------------

          The basic commands you must execute to install a MySQL source
          distribution are:

               shell> groupadd mysql
               shell> useradd -g mysql mysql
               shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
               shell> cd mysql-VERSION
               shell> ./configure --prefix=/usr/local/mysql
               shell> make
               shell> make install
               shell> cp support-files/my-medium.cnf /etc/my.cnf
               shell> cd /usr/local/mysql
               shell> bin/mysql_install_db --user=mysql
               shell> chown -R root  .
               shell> chown -R mysql var
               shell> chgrp -R mysql .
               shell> bin/mysqld_safe --user=mysql &

          If you start from a source RPM, do the following:

               shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

          Set Root Password for MySQL
           /usr/local/bin/mysqladmin -u root password 'new-password'


          使用GRANT ... IDENTIFIED BY語句,來進行授權
          GRANT select,insert,delete,update on dbname.* to  user@'%' IDENTIFIED BY 'manager';
          這里PASSWORD()函數是不必要的,也不需要使用FLUSH PRIVILEGES來執行確認
          posted @ 2007-11-28 19:54 josson 閱讀(382) | 評論 (0)編輯 收藏
          Mysql數據庫介紹
          MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標準
          化的數據庫語言。MySQL是以一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和很多不同的
          客戶程序和庫組成。
          SQL是一種標準化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網站檢索
          產品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。
          MySQL 主要目標是快速、健壯和易用。最初是因為我們需要這樣一個SQL服務器,它能處理與任何可不昂
          貴硬件平臺上提供數據庫的廠家在一個數量級上的大型數據庫,但速度更快,MySQL就開發出來。自1996年以
          來,我們一直都在使用MySQL,其環境有超過 40 個數據庫,包含 10,000個表,其中500多個表超過7百萬行
          ,這大約有100 個吉字節(GB)的關鍵應用數據。
          Mysql數據庫特點
          1. 使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)。
          2. 可運行在不同的平臺上。
          3. 多種列類型:1、 2、 3、4、和 8 字節長度的有符號/無符號整數(INT)、FLOAT、DOUBLE、CHAR、
          VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型。
          4. 利用一個優化的一遍掃描多重聯結(one-sweep multi-join)非常快速地進行聯結(join)。
          5. 在查詢的SELECT和WHERE部分支持全部運算符和函數。
          6. 通過一個高度優化的類庫實現SQL函數庫并且像他們能達到的一樣快速,通常在查詢初始化后不應該有任
          何內存分配。
          7. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、
          SUM()、 MAX()和MIN() )。
          8. 支持ANSI SQL的LEFT OUTER JOIN和ODBC語法。
          9. 你可以在同一查詢中混用來自不同數據庫的表。
          10. 一個非常靈活且安全的權限和口令系統,并且它允許基于主機的認證。口令是安全的,因為當與一個服
          務器連接時,所有的口令傳送被加密。
          11. ODBC for Windiws 95。
          12. 具備索引壓縮的快速B樹磁盤表。
          13. 每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是 256 個字節(在
          編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴。
          14. 定長和變長記錄。
          15. 用作臨時表的內存散列表。
          16. 大數據庫處理。我們正在對某些包含 50,000,000 個記錄的數據庫使用MySQL。
          17. 所有列都有缺省值,你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置為他們的缺省
          值。
          18. 一個非常快速的基于線程的內存分配系統。
          19. 沒有內存漏洞。用一個商用內存漏洞監測程序測試過(purify)。
          20. 包括myisamchk,一個檢查、優化和修復數據庫表的快速實用程序。
          21. 全面支持ISO-8859-1 Latin1 字符集。
          22. 所有數據以 ISO-8859-1 Latin1 格式保存。所有正常的字符串比較是忽略大小寫的。
          23. DELETE、INSERT、REPLACE和UPDATE 返回有多少行被改變(受影響)。
          24. 函數名不會與表或列名沖突。例如ABS是一個有效的列名字。對函數調用的唯一限制是函數名與隨后的
          "("不能有空格。
          25. 所有MySQL程序可以用選項--help或-?獲得聯機幫助。
          26. 服務器能為客戶提供多種語言的出錯消息。
          27. 客戶端使用TCP/IP 連接或Unix套接字(socket)或NT下的命名管道連接MySQL。
          28. MySQL特有的SHOW命令可用來檢索數據庫、表和索引的信息,EXPLAIN命令可用來確定優化器如何解決一
          個查詢。

          MySQL服務器的啟動與停止
          一、啟動服務器的方法
          啟動服務器由三種主要方法:
          1、 直接調用mysqld。
          #./mysqld&
          這可能是最不常用的方法,建議不要多使用。
          2、調用safe_mysqld腳本,最好的方法。
          #./safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &
          3、調用mysql.server腳本。
          safe_mysqld腳本安裝在MySQL安裝目錄的bin目錄下,或可在MySQL源代碼分發的scripts目錄下找到。
          mysql.server腳本安裝在MySQL安裝目錄下的share/mysqld目錄下或可以在MySQL源代碼分發的support_files
          目錄下找到。如果你想使用它們,你需要將它們拷貝到適當的目錄下mysql/bin下。
          #./mysql.server start
          Sun Solariys開機自動啟mysql的方法
          寫一個啟動和關閉的批處理文件Web (在路徑/etc/init.d 下), 內容如下:
          #!/bin/sh
          OPT_=$1
          case "$OPT_" in
          start)
          /bin/echo "$0 : (start)"
          #
          # Your service startup command goes here.
          #
          /usr/local/apache/bin/apachectl start
          /home3/mysql/bin/safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &
          # NOTE: Must exit with zero unless error is severe.
          exit 0
          ;;
          stop)
          /bin/echo "$0 : (stop)"
          #
          # Your service shutdown command goes here.
          #
          /usr/local/apache/bin/apachectl stop
          # NOTE: Must exit with zero unless error is severe.
          exit 0
          ;;
          *) /bin/echo ''
          /bin/echo "Usage: $0 [start|stop]"
          /bin/echo " Invalid argument ==> \"${OPT_}\""
          /bin/echo ''
          exit 0
          ;;
          esac
          確認此文件有可執行的權利
          #chmod 500 web
          #cd /etc/rc2.d
          #ln -s ../init.d/web S99mysql
          在系統啟動時,S99mysql腳本將自動用一個start參數調用。注意頭字母必須大寫。
          二、停止服務器的方法
          1、要手工停止服務器,使用mysqladmin:
          #mysqladmin -u 用戶名 -p'密碼' shutdown
          2、 調用mysql.server腳本,最好的方法。
          #./mysql.server stop
          3、 直接殺掉OS的進程號
          #kill -9 進程號
          這可能是最不常用的方法,建議不要多使用。
          要自動停止服務器,你不需做特別的事情。只需要加另外一個關閉程序。
          #cd /etc/rc0.d
          #ln -s ../init.d/web K01mysql
          在系統啟動時,K01mysql腳本將自動用一個stop參數調用。
          MySQL目錄結構和常用命令
          一、 數據目錄的位置
          這是默認的mysql目錄結構
          bin info libexec share var
          include lib man sql-bench
          一個缺省數據目錄被編譯進了服務器,如果你從一個源代碼分發安裝MySQL,典型的缺省目錄為
          /usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進制分發安裝則是
          /usr/local/mysql/data。
          作為一名MySQL管理員,你應該知道你的數據目錄在哪里。如果你運行多個服務器,你應該是到所有數據目錄
          在哪里,但是如果你不知道確切的位置,由多種方法找到它:
          1、使用mysqladmin variables從你的服務器直接獲得數據目錄路徑名。查找datadir變量的值,在Unix上,其輸出類似于:
          %mysqladmin -u username -p'*****' variables
          +----------------------+----------------------+
          | variable_name | Value |
          +----------------------+----------------------+
          | back_log | 5 |
          | connect_timeout | 5 |
          | basedir | /var/local/ |
          | datadir | /usr/local/var/ |
          ....
          2、查找mysql運行的路徑
          %ps -ef | grep mysqld
          二、數據目錄結構
          每個數據庫對應于數據目錄下的一個目錄。
          在一個數據庫中的表對應于數據目錄下的文件。
          數據目錄也包含由服務器產生的幾個狀態文件,如日志文件。這些文件提供了關于服務器操作的重要信息。
          對管理特別在出了問題而試圖確定問題原因時很有價值。
          1、數據庫表的表示
          數據庫目錄中有3種文件:一個樣式(描述文件)、一個數據文件和一個索引文件。每個文件的基本名是表
          名,文件名擴展名代表文件類型。擴展名如下表。數據和索引文件的擴展名指出表使用老式IASM索引或新式
          MyISAM索引。
          MySQL文件類型
          文件類型 文件名擴展名 文件內容
          樣式文件 .frm 描述表的結構(它的列、列類型、索引等)
          數據文件 .ISD(ISAM)或.MYD(MyISAM) 包含表里所有的數據
          索引文件 .ISM(ISAM)或.MYI(MyISAM) 包含數據文件上的所有索引的索引樹

          當你發出一條CREATE TABLE tbl_name時語句定義表的結構時,服務器創建一個名為tbl_name.frm的文件,它
          包括該結構的內部編碼,同時也創建一個空數據和索引文件,初始化為包含指出無記錄和無索引的信息(如
          果CREATE TABLE語句包括索引指定,索引文件反映出這些索引)。對應于表的文件的屬主和模式被設置為只
          允許MySQL服務器用戶訪問。
          下面介紹一下常用的mysql命令
          進入mysql數據庫
          #./mysql -u 用戶名 -p'密碼'
          查看所有的數據庫
          mysql> show databases;
          進入一個特定的數據庫
          mysql> use 數據庫名;
          查看數據庫里所有的表
          mysql> show tables;
          把表改名
          mysql> alter table 表名1 rename 表名2;
          例子:mysql>alter table dept rename dept2;
          2、 建索引的注意事項:
          先要把要加索引的字段設為非空
          mysql> alter table 表名 change 字段名 字段名 字段描述 not null;
          例子:
          我們創建這樣一個表
          mysql> create table employee
          ( id int(5) not null,
          depno int(5),
          name varchar(20) not null,
          cardnumber bigint(15) not null);
          mysql> alter table employee change depno depno int(5) not null;
          加索引
          mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
          例子: mysql> alter table employee add index emp_name (name);
          加主關鍵字的索引
          mysql> alter table 表名 add primary key (字段名);
          例子: mysql> alter table employee add primary key(id);
          加唯一限制條件的索引
          mysql> alter table 表名 add unique 索引名 (字段名);
          例子: mysql> alter table employee add unique emp_name2(cardnumber);
          查看某個表的索引
          mysql> show index from 表名;
          例子: mysql> show index from employee;
          刪除某個索引
          mysql> alter table 表名 drop index 索引名;
          例子: mysql>alter table employee drop index emp_name;
          MySQL用戶管理
          MySQL管理員應該知道如何設置MySQL用戶賬號,指出哪個用戶可以連接服務器,從哪里連接,連接后能做什
          么。MySQL 3.22.11開始引入兩條語句使得這項工作更容易做:GRANT語句創建MySQL用戶并指定其權限,而
          REVOKE語句刪除權限。兩條語句扮演了mysql數據庫的前端角色,并提供與直接操作這些表的內容不同的另一
          種方法。CREATE和REVOKE語句影響4個表:
          授權表內容:
          user 能連接服務器的用戶以及他們擁有的任何全局權限
          db 數據庫級權限
          tables_priv 表級權限
          columns_priv 列級權限
          還有第5個授權表(host),但它不受GRANT和REVOKE的影響。
          當你對一個用戶發出一條GRANT語句時,在user表中為該用戶創建一條記錄。如果語句指定任何全局權限(管
          理權限或適用于所有數據庫的權限),這些也記錄在user表中。如果你指定數據庫、表和列級權限,他們被
          分別記錄在db、tables_priv和columns_priv表中。
          在下面的章節中,我們將介紹如何設置MySQL用戶賬號并授權。我們也涉及如何撤權和從授權表中刪除用戶。
          一、創建用戶并授權
          GRANT語句的語法看上去像這樣:
          GRANT privileges (columns)
          ON what
          TO user IDENTIFIED BY "password"
          WITH GRANT OPTION 
          要使用該語句,你需要填寫下列部分:
          privileges
          授予用戶的權限,下表列出可用于GRANT語句的權限指定符:
          權限指定符 權限允許的操作:
          ALTER 修改表和索引
          CREATE 創建數據庫和表
          DELETE 刪除表中已有的記錄
          DROP 拋棄(刪除)數據庫和表
          INDEX 創建或拋棄索引
          INSERT 向表中插入新行
          REFERENCE 未用
          SELECT 檢索表中的記錄
          UPDATE 修改現存表記錄
          FILE 讀或寫服務器上的文件
          PROCESS 查看服務器中執行的線程信息或殺死線程
          RELOAD 重載授權表或清空日志、主機緩存或表緩存。
          SHUTDOWN 關閉服務器
          ALL 所有;ALL PRIVILEGES同義詞
          USAGE 特殊的“無權限”權限
          columns
          權限運用的列,它是可選的,并且你只能設置列特定的權限。如果命令有多于一個列,應該用逗號分開它們.
          what
          權限運用的級別。權限可以是全局的(適用于所有數據庫和所有表)、特定數據庫(適用于一個數據庫中的
          所有表)或特定表的。可以通過指定一個columns字句是權限是列特定的。
          user
          權限授予的用戶,它由一個用戶名和主機名組成。MySQL中的一個用戶名就是你連接服務器時指定的用戶名,
          該名字不必與你的Unix登錄名或Windows名聯系起來。缺省地,如果你不明確指定一個名字,客戶程序將使用
          你的登錄名作為MySQL用戶名。這只是一個約定。你可以在授權表中將該名字改為nobody,然后以nobody連接
          執行需要超級用戶權限的操作。
          password
          賦予用戶的口令,它是可選的。如果你對新用戶沒有指定IDENTIFIED BY子句,該用戶不賦給口令(不安全)。
          對現有用戶,任何你指定的口令將代替老口令。如果你不指定口令,老口令保持不變,當你用IDENTIFIED BY
          時,口令字符串用改用口令的字面含義,GRANT將為你編碼口令,不要象你用SET PASSWORD 那樣使用password()
          函數。
          WITH GRANT OPTION子句是可選的。如果你包含它,用戶可以授予權限通過GRANT語句授權給其它用戶。你可
          以用該子句給與其它用戶授權的能力。
          用戶名、口令、數據庫和表名在授權表記錄中是大小寫敏感的,主機名和列名不是。
          舉例:創建一個超級用戶test1
          mysql> grant all privilleges on *.* to test1@localhost identified by '123456' with grant option;
          創建一個只能查詢的用戶 test2
          mysql> grant select on *.* to test2@localhost identified by '9876543';
          二、撤權并刪除用戶
          要取消一個用戶的權限,使用REVOKE語句。REVOKE的語法非常類似于GRANT語句,除了TO用FROM取代并且沒有
          INDETIFED BY和WITH GRANT OPTION子句:
          REVOKE privileges (columns) ON what FROM user
          user部分必須匹配原來GRANT語句的你想撤權的用戶的user部分。privileges部分不需匹配,你可以用GRANT
          語句授權,然后用REVOKE語句只撤銷部分權限。REVOKE語句只刪除權限,而不刪除用戶。即使你撤銷了所有
          權限,在user表中的用戶記錄依然保留,這意味著用戶仍然可以連接服務器。要完全刪除一個用戶,你必須
          用一條DELETE語句明確從user表中刪除用戶記錄:
          #mysql -u root mysql
          mysql>DELETE FROM user
          ->WHERE User="user_name" and Host="host_name";
          mysql>FLUSH PRIVILEGES; 
          DELETE語句刪除用戶記錄,而FLUSH語句告訴服務器重載授權表。(當你使用GRANT和REVOKE語句時,表自動
          重載,而你直接修改授權表時不是。)
          舉例:刪除用戶test1
          mysql> revoke all on *.* from test2@localhost;
          mysql> use mysql;
          mysql> delete from user where user='test' and host='localhost';
          mysql> flush privileges;
          MySQL數據庫備份
          在數據庫表丟失或損壞的情況下,備份你的數據庫是很重要的。已經知道表被破壞,用諸如vi或Emacs等編輯
          器試圖直接編輯它們,這對表絕對不是件好事!
          備份數據庫兩個主要方法是用mysqldump程序或直接拷貝數據庫文件(如用cp、cpio或tar等)。每種方法都
          有其優缺點:
          mysqldump與MySQL服務器協同操作。直接拷貝方法在服務器外部進行,并且你必須采取措施保證沒有客戶正
          在修改你將拷貝的表,一般在數據庫關閉情況下做。mysqldump比直接拷貝要慢些。mysqldump生成能夠移植
          到其它機器的文本文件,甚至那些有不同硬件結構的機器上。直接拷貝文件可以移植到同類機器上,但不能
          移植到其它機器上,除非你正在拷貝的表使用MyISAM存儲格式。
          一、使用mysqldump備份和拷貝數據庫
          當你使用mysqldump程序產生數據庫備份文件時,缺省地,文件內容包含創建正在傾倒的表的CREATE語句和包
          含表中行數據的INSERT語句。換句話說,mysqldump產生的輸出可在以后用作mysql的輸入來重建數據庫。
          Mysqldump參數如下:
          #mysqldump -u 用戶名-p'密碼' 數據庫名 [表名] > 操作系統下文件名
          舉例:#./mysqldump -u root -p'123456' samp_db>samp.db.txt
          輸出文件的開頭看起來象這樣:
          # MySQL Dump 6.0
          #
          # Host: localhost Database: samp_db
          #---------------------------------------
          # Server version 3.23.2-alpha-log
          #
          # Table structure for table 'absence'
          #
          CREATE TABLE absence(
          student_id int(10) unsigned DEFAULT '0' NOT NULL,
          date date DEFAULT '0000-00-00' NOT NULL,
          PRIMARY KEY (student_id,date)
          );
          #
          # Dumping data for table 'absence'
          #
          INSERT INTO absence VALUES (3,'1999-09-03');
          INSERT INTO absence VALUES (5,'1999-09-03');
          INSERT INTO absence VALUES (10,'1999-09-08');
          ...... 
          文件剩下的部分有更多的INSERT和CREATE TABLE語句組成。
          輸出單個的表:
          #mysqldump samp_db student score event absence >grapbook.sql
          #mysqldump samp_db member president >hist-league.sql
          缺省地,mysqldump在寫入前將一個表的整個內容讀進內存。這通常確實不必要,并且實際上如果你有一個大
          表,幾乎是失敗的。你可用--quick選項告訴mysqldump只要它檢索出一行就寫出每一行。為了進一步優化傾
          倒過程,使用--opt而不是--quick。--opt選項打開其它選項,加速數據的傾倒和把它們讀回。
          二、使用直接拷貝數據庫的備份和拷貝方法
          另一種不涉及mysqldump備份數據庫和表的方式是直接拷貝數據庫表文件。典型地,這用諸如cp、tar或cpio
          實用程序。本文的例子使用cp。
          %cd DATADIR
          %cp -r samp_db /usr/archive/mysql
          單個表可以如下備份:
          %cd DATADIR/samp_db
          %cp member.* /usr/archive/mysql/samp_db
          %cp score.* /usr/archive/mysql/samp_db
          ....
          當你完成了備份時,你可以重啟服務器(如果關閉了它)或釋放加在表上的鎖定(如果你讓服務器運行)。
          要用直接拷貝文件把一個數據庫從一臺機器拷貝到另一臺機器上,只是將文件拷貝到另一臺服務器主機的適
          當數據目錄下即可。要確保文件是MyIASM格式或兩臺機器有相同的硬件結構,否則你的數據庫在另一臺主機
          上有奇怪的內容。你也應該保證在另一臺機器上的服務器在你正在安裝數據庫表時不訪問它們。
          建一個sh文件bakmysql.sh
          #!/bin/sh
          cd /usr/local/mysql/
          tar cvf /mount2/mysqlvar.tar var
          可以設到操作系統自動運行。
          root用戶crontab文件
          /var/spool/cron/crontabs/root增加以下內容
          0 2 1 * * /mount2/bakmysql.sh
          #/etc/rc2.d/S75cron stop
          #/etc/rc2.d/S75cron start
          重新擊活Sun Solaris自動處理進程
          三、用備份恢復數據
          數據庫損壞的發生有很多原因,程度也不同。如果你走運,你可能僅損壞一兩個表(如掉電),如果你倒霉
          ,你可能必須替換整個數據目錄(如磁盤損壞)。在某些情況下也需要恢復,比如用戶錯誤地刪除了數據庫
          或表。不管這些倒霉事件的原因,你將需要實施某種恢復。
          如果表損壞但沒丟失,嘗試用myisamchk或isamchk修復它們,如果這樣的損壞可有修復程序修復。
          1、 恢復整個數據庫
          Mysqldump參數如下:
          #mysqldump -u 用戶名-p'密碼' 數據庫名 < 操作系統下文件名
          舉例:
          先在Mysql里創建另一個數據庫
          mysql> create database test;
          然后將備份的數據導入
          #mysqldump -u root -p'123456' test2 < samp.db.txt

          create database dbname DEFAULT CHARSET=UTF8
          posted @ 2007-11-28 19:53 josson 閱讀(330) | 評論 (0)編輯 收藏

          在 MySQL 中,數據庫和表對就于那些目錄下的目錄和文件。因而,操作系統的敏感性決定數據庫和表命名的大小寫敏感。這就意味著數據庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix 系統中是大小寫敏感的。

          奇怪的是列名與列的別名在所有的情況下均是忽略大小寫的,而表的別名又是區分大小寫的。

          要避免這個問題,你最好在定義數據庫命名規則的時候就全部采用小寫字母加下劃線的組合,而不使用任何的大寫字母。

          或者也可以強制以 -O lower_case_table_names=1 參數啟動 mysqld(如果使用 --defaults-file=...\my.cnf 參數來讀取指定的配置文件啟動 mysqld 的話,你需要在配置文件的 [mysqld] 區段下增加一行 lower_case_table_names=1)。這樣MySQL 將在創建與查找時將所有的表名自動轉換為小寫字符(這個選項缺省地在 Windows 中為 1 ,在 Unix 中為 0。從 MySQL 4.0.2 開始,這個選項同樣適用于數據庫名)。

          當你更改這個選項時,你必須在啟動 mysqld 前首先將老的表名轉換為小寫字母。

          換句話說,如果你希望在數據庫里面創建表的時候保留大小寫字符狀態,則應該把這個參數置0: lower_case_table_names=1 。否則的話你會發現同樣的sqldump腳本在不同的操作系統下最終導入的結果不一樣(在Windows下所有的大寫字符都變成小寫了)。

          posted @ 2007-11-23 12:42 josson 閱讀(330) | 評論 (0)編輯 收藏
          1、查看當前所有連接的詳細資料:
          ./mysqladmin -uadmin -p -h10.140.1.1 processlist


          2、只查看當前連接數(Threads就是連接數.):
          ./mysqladmin  -uadmin -p -h10.140.1.1 status
          posted @ 2007-11-23 12:41 josson 閱讀(2080) | 評論 (0)編輯 收藏
          A.修改linux系統默認的1024個文件上限。
          在/root/.bash_profile文件中加入:ulimit -n 4096
          參見:linux 解決Too open many files問題

          B.察看某個進程打開的文件數:
          先用ps -aux找到pid,然后運行:lsof -p %pid% | wc -l


          C.察看80端口的連接數
          netstat -nat|grep -i “80″|wc -l

          posted @ 2007-11-23 12:38 josson 閱讀(158) | 評論 (0)編輯 收藏

          1、接口UserService.java:

          package demo.xfire;

          import demo.xfire.model.UserInfoBean;

          public interface UserService {

              
          /**
               * 獲取用戶信息.
               * 
          @param username
               * 
          @return
               
          */

              
          public UserInfoBean getUserInfo(String username);
              
              
          /**
               * 用戶認證.
               * 
          @param username
               * 
          @param passwd
               * 
          @return
               
          */

              
          public int login(String username,String passwd);
          }


          2、實現UserServiceImpl.java:

          package demo.xfire;

          import demo.xfire.model.UserInfoBean;

          public class UserServiceImpl implements UserService {

              
          /**
               * 獲取用戶信息.
               * 
          @param username
               * 
          @return
               
          */

              
          public UserInfoBean getUserInfo(String username) {
                  
          return JingManager.getUserInfo(username);
              }

              
              
          /**
               * 用戶認證.
               * 
          @param username
               * 
          @param passwd
               * 
          @return
               
          */

              
          public int login(String username,String passwd){
                  
          return JingManager.login(username, passwd);
              }

          }


          3、XFire服務配置services.xml,放置到/WEB-INF/目錄下(具體路徑須視web.xml中的設置而定):

          <beans xmlns="http://xfire.codehaus.org/config/1.0">
            
          <service>
              
          <name>UserService</name>
              
          <namespace>http://xfire.demo/service/UserService</namespace>
              
          <serviceClass>demo.xfire.UserService</serviceClass>
              
          <implementationClass>demo.xfire.UserServiceImpl</implementationClass>
            
          </service>
          </beans>

          4、配置Web.xml文件:
            <servlet> 
              
          <servlet-name>xfire</servlet-name>  
              
          <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
              
          <init-param>
               
          <param-name>config</param-name>
               
          <param-value>services.xml</param-value>
             
          </init-param>
            
          </servlet>
            
          <servlet-mapping>
              
          <servlet-name>xfire</servlet-name> 
              
          <url-pattern>/service/*</url-pattern>
            
          </servlet-mapping>

          啟動服務后,http://localhost:8080/appname/UserService?wsdl即可以查看用戶接口服務的wsdl了。
          posted @ 2007-11-23 12:30 josson 閱讀(373) | 評論 (0)編輯 收藏
          一、設置構建路徑(必要的jar包)

          commons-logging-1.1.jar
          geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
          geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
          geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
          geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
          geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
          jaxb-api-2.0.jar
          jaxb-impl-2.0.5.jar
          jaxws-api-2.0.jar
          neethi-2.0.jar
          saaj-api-1.3.jar
          saaj-impl-1.3.jar
          stax-api-1.0.1.jar
          wsdl4j-1.6.1.jar
          wstx-asl-3.2.1.jar
          XmlSchema-1.2.jar
          xml-resolver-1.2.jar

          aopalliance-1.0.jar
          spring-core-2.0.4.jar
          spring-beans-2.0.4.jar
          spring-context-2.0.4.jar
          spring-web-2.0.4.jar

          cxf-2.0-incubator.jar

          二、編寫服務類
          a). 接口類HelloService.java
          package demo.spring;

          import java.util.List;

          import javax.jws.WebParam;
          import javax.jws.WebService;

          import demo.spring.model.UserInfoBean;

          @WebService
          public interface HelloService {

              
          public String sayHello(@WebParam(name="name")String text);
              
              
          public UserInfoBean getUserInfo(@WebParam(name="username")String name);
              
              
          public List<UserInfoBean> getUsers();
          }

          b).實現類HelloServiceImpl.java
          package demo.spring;

          import java.util.ArrayList;
          import java.util.List;

          import javax.jws.WebService;

          import demo.cxf.server.HelloService;
          import demo.spring.model.UserInfoBean;

          @WebService(endpointInterface
          ="demo.spring.HelloService")
          public class HelloServiceImpl implements HelloService {

              
          public String sayHello(String text) {
                  
          return "Hello,".concat(text);
              }


              
          public UserInfoBean getUserInfo(String username){
                  UserInfoBean user 
          = new UserInfoBean();
                  user.setRealname(
          "捷克");
                  user.setUsername(username);
                  user.setEmail(
          "jack@chaina.com");
                  
          return user;
              }

              
              
          public List<UserInfoBean> getUsers(){
                  List
          <UserInfoBean> users = new ArrayList<UserInfoBean>();
                  users.add(getUserInfo(
          "john"));
                  
          return users;
              }

          }

          三、聲明服務Bean
          在WEB-INF目錄下創建成一個beans.xml文件,以聲明endpoint bean:
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:jaxws
          ="http://cxf.apache.org/jaxws"
              xsi:schemaLocation
          ="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
          >

              
          <import resource="classpath:META-INF/cxf/cxf.xml" />
              
          <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
              
          <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
              
          <jaxws:endpoint id="helloService" implementor="demo.spring.HelloServiceImpl" address="/HelloService"/>
          </beans>

          若使用Spring定義的bean,也可這樣聲明:
          <bean id="helloService" class="demo.spring.HelloServiceImpl" />
          <jaxws:endpoint id="helloServiceImpl" implementor="#helloService" address="/HelloService" />

          四、定義Servlet
          修改WEB-INF/目錄下的web.xml文件,添加如下定義:
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>WEB-INF/beans.xml</param-value>
              
          </context-param>

              
          <listener>
                  
          <listener-class>
                      org.springframework.web.context.ContextLoaderListener
                  
          </listener-class>
              
          </listener>

              
          <servlet>
                  
          <servlet-name>CXFServlet</servlet-name>
                  
          <display-name>CXF Servlet</display-name>
                  
          <servlet-class>
                      org.apache.cxf.transport.servlet.CXFServlet
                  
          </servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>

              
          <servlet-mapping>
                  
          <servlet-name>CXFServlet</servlet-name>
                  
          <url-pattern>/*</url-pattern>
              
          </servlet-mapping>

          五、客戶端代碼
          client_beans.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:jaxws
          ="http://cxf.apache.org/jaxws"
              xsi:schemaLocation
          ="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
          http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"
          >

              
          <bean id="client" class="demo.spring.HelloService" 
                factory-bean
          ="clientFactory" factory-method="create"/>
              
              
          <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
                
          <property name="serviceClass" value="demo.spring.HelloService"/>
                
          <property name="address" value="http://localhost:8080/cxf/HelloService"/>
              
          </bean>
                
          </beans>

          client.java
                  ClassPathXmlApplicationContext context 
                      
          = new ClassPathXmlApplicationContext(new String[] {"demo/spring/client/client_beans.xml"});
                  HelloService client 
          = (HelloService)context.getBean("client");
                  String response 
          = client.sayHello("Joe");
                  System.out.println(
          "Response: " + response);
                  
                  UserInfoBean user 
          = client.getUserInfo("jack");
                  System.out.println(user.getUsername());
                  
                  List
          <UserInfoBean> users = client.getUsers();
                  
          for(UserInfoBean u : users){
                      System.out.println(u.getUsername());
                  }

                  System.exit(
          0);
          posted @ 2007-11-21 23:21 josson 閱讀(635) | 評論 (0)編輯 收藏
          Apache CXF 則是由 Celtix 和 XFire 項目整合而生,并且剛剛發布了 2.0.2 的最新版本,不過仍是 Apache 的一個孵化項目。

          一、與Axis2的不同之處
            1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile
            2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy將在新版本里得到支持
            3、Apache CXF 是根據Spring哲學來進行編寫的,即可以無縫地與Spring進行整合
            4、Axis2 不是
            5、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。
            6、Apache CXF 目前僅支持 JAXB 和 Aegis,并且默認是 JAXB 2.0,與 XFire 默認是支持 Aegis 不同,XMLBeans、JiBX 和 Castor 將在 CXF 2.1 版本中得到支持,目前版本是 2.0.2
            7、Axis2 支持多種語言,它有 C/C++ 版本。
            8、Apache CXF 提供方便的Spring整合方法,可以通過注解、Spring標簽式配置來暴露Web Services和消費Web Services

          二、A simple JAX-WS service
          原文見http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html

          a). 設置構建路徑,將下列jar包放到項目中
          the CXF distribution
          commons-logging-1.1.jar
          geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
          geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
          geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
          geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
          geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
          jaxb-api-2.0.jar
          jaxb-impl-2.0.5.jar
          jaxws-api-2.0.jar
          jetty-6.1.5.jar
          jetty-util-6.1.5.jar
          neethi-2.0.jar
          saaj-api-1.3.jar
          saaj-impl-1.3.jar
          stax-api-1.0.1.jar
          wsdl4j-1.6.1.jar
          wstx-asl-3.2.1.jar
          XmlSchema-1.2.jar
          xml-resolver-1.2.jar

          Spring jars
          aopalliance-1.0.jar
          spring-core-2.0.4.jar
          spring-beans-2.0.4.jar
          spring-context-2.0.4.jar
          spring-web-2.0.4.jar

          CXF jar
          cxf-2.0-incubator.jar

          b). 編寫Service代碼
          接口HelloService.java
          package demo.cxf.server;

          import javax.jws.WebParam;
          import javax.jws.WebService;

          @WebService
          public interface HelloService {

              
          public String sayHello(@WebParam(name="text")String text);
          }

          實現類HelloServiceImpl
          package demo.cxf.server;

          import javax.jws.WebService;

          @WebService(endpointInterface
          ="demo.cxf.server.HelloService",serviceName="helloService")
          public class HelloServiceImpl implements HelloService {
              
              
          public String sayHello(String text) {
                  
          return "Hello ".concat(text);
              }


          }

          c). 發布服務
                  System.out.println("Starting Server");
                  HelloServiceImpl impl 
          = new HelloServiceImpl();
                  String addr 
          = "http://localhost:80/helloService";
                  Endpoint.publish(addr,impl);

          d). 客戶端調用
                  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
                  factory.getInInterceptors().add(
          new LoggingInInterceptor());
                  factory.getOutInterceptors().add(
          new LoggingOutInterceptor());
                  factory.setServiceClass(HelloService.
          class);
                  factory.setAddress(
          "http://localhost:9000/helloService");
                  HelloService service 
          = (HelloService)factory.create();
                  
                  String reply 
          = service.sayHello("cxf.");
                  System.out.println(reply);
                  System.exit(
          0);
          posted @ 2007-11-21 23:01 josson 閱讀(1003) | 評論 (0)編輯 收藏
          "^\\d+$"  //非負整數(正整數 + 0)
          "^[0-9]*[1-9][0-9]*$"  //正整數
          "^((-\\d+)|(0+))$"  //非正整數(負整數 + 0)
          "^-[0-9]*[1-9][0-9]*$"  //負整數
          "^-?\\d+$"    //整數
          "^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)
          "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點數
          "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)
          "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負浮點數
          "^(-?\\d+)(\\.\\d+)?$"  //浮點數
          "^[A-Za-z]+$"  //由26個英文字母組成的字符串
          "^[A-Z]+$"  //由26個英文字母的大寫組成的字符串
          "^[a-z]+$"  //由26個英文字母的小寫組成的字符串
          "^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字符串
          "^\\w+$"  //由數字、26個英文字母或者下劃線組成的字符串
          "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
          "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
          "^[A-Za-z0-9_]*$"
          posted @ 2007-11-21 22:38 josson 閱讀(283) | 評論 (0)編輯 收藏
          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 延长县| 白沙| 丰宁| 淮北市| 高邑县| 吉安市| 新宁县| 永顺县| 大足县| 伊川县| 涟源市| 富裕县| 连山| 江油市| 搜索| 广南县| 山东省| 万山特区| 襄樊市| 长治县| 嘉鱼县| 特克斯县| 南召县| 保靖县| 山丹县| 油尖旺区| 霍州市| 光泽县| 吉安县| 英德市| 揭阳市| 尼木县| 阳朔县| 竹山县| 长丰县| 清流县| 清水河县| 安庆市| 太仆寺旗| 通化市| 且末县|