fkjava

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

          #

           

          需要準(zhǔn)備的安裝包:

             

              1.      memcache包:memcached-1.4.0.tar.gz

             

              2.      php擴展包:memcache-2.2.5.tgz

             

              memcache安裝到/usr/local/lib目錄下面:

             

              [plain]

             

              #版本可能不同,選擇自己相應(yīng)的版本

             

              sudo tar zxvf memcached-1.4.0.tar.gz

             

              cd memcached-1.4.0

             

              sudo ./configure --prefix=/usr/local/web/lib/memcache --with-libevent

             

              sudo make

             

              sudo make install

             

              管理memcache:

             

              [plain]

             

              #啟動memcache

             

              cd /usr/local/web/lib/memcache/bin/

             

              ./memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 128 -P /usr/local/web/lib/memcache/memcached.pid

             

              #查看memcache

             

              ps -ef | grep memcached

             

              #停止memcache進程

             

              sudo kill   21039

             

              擴展包安裝

             

              [plain]

             

              #根據(jù)你自己php的安裝目錄

             

              sudo tar xzvf memcache-2.2.5.tgz

             

              cd memcache-2.2.5

             

              sudo /usr/local/web/php.5.3.3/bin/phpize

             

              sudo ./configure --enable-memcache --with-php-config=/usr/local/web/php.5.3.3/bin/php-config --with-zlib-dir

             

              sudo make

             

              sudo make install

             

              修改php.ini文件

             

              [plain]

             

              sudo vim /usr/local/web/php.5.3.3/lib/php.ini

             

              #加上:extension=memcache.so

             

          sudo kill -USR2 `cat /usr/local/web/ php.5.3.3/var/run/php-fpm.pid` #重啟

              您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

              信息咨詢:Q564205990           星老師

          posted @ 2012-08-28 14:13 瘋狂軟件 閱讀(857) | 評論 (0)編輯 收藏

           

          對于初學(xué)者來講,在了解Oracle體系結(jié)構(gòu)之前必須掌握以下兩個基本的概念: 數(shù)據(jù)庫和實例。

              一、數(shù)據(jù)庫

              數(shù)據(jù)庫(database)是一個數(shù)據(jù)集合。

              無論數(shù)據(jù)庫是采用關(guān)系結(jié)構(gòu)還是面向?qū)ο蠼Y(jié)構(gòu), oracle數(shù)據(jù)庫都將

              其數(shù)據(jù)存放在數(shù)據(jù)文件中。 在其內(nèi)部, 數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)對文件的邏輯

              映射, 使不同的數(shù)據(jù)分開存儲, 這些邏輯劃分稱為表空間。

              表空間和文件介紹:

              1: 表空間

              表空間(tablespace)是數(shù)據(jù)庫的邏輯劃分, 每個數(shù)據(jù)庫至少有一個表空間,叫做系統(tǒng)表空間(system 表空間)。 一個表空間只能屬于一個數(shù)據(jù)庫。

              每個表空間由同一個磁盤上的一個或多個文件組成, 這些文件稱為數(shù)據(jù)文件。

              表空間的特性:

              1)控制數(shù)據(jù)庫數(shù)據(jù)磁盤分配

              2)限制用戶在表空間中可以使用的磁盤空間大小

              3)表空間具有 online, offline, readonly, readwrite屬性

              修改表空間的屬性:

              SQL> alter tablespace 表空間名稱 屬性;

              查詢表空間狀態(tài):

              SQL> select tablespace_name, status from dba_tablespaces;

              注意: system, undo, temp表空間不能設(shè)為offline屬性。

              4)完成部分?jǐn)?shù)據(jù)庫的備份與恢復(fù)

              5)表空間通過數(shù)據(jù)文件來擴大, 表空間的大小等于構(gòu)成該表空間的所以數(shù)據(jù)文件的大小只和。

              查詢表空間與數(shù)據(jù)文件對應(yīng)關(guān)系:

              SQL> select tablespace_name, bytes, file_name from dba_data_files;

              基于表空間的幾個操作:

              1)查詢用戶缺省表空間:

              SQL> select username, default_tablespace from dba_users;

              2)查詢表與存儲該表的表空間:

              SQL> select table_name, tablespace_name from user_tables;

              3)修改用戶缺省表空間:

              SQL> alter user username default tablespace tablespace_name;

              4)將數(shù)據(jù)從一個表空間移動到另一個表空間:

              SQL> alter table table_name move tablespace tablespace_name;

              2.數(shù)據(jù)文件

              每個表空間由同一個磁盤上的一個或多個文件組成, 這些文件叫做數(shù)據(jù)文件(datafile),數(shù)據(jù)文件只能屬于一個表空間。 數(shù)據(jù)文件創(chuàng)建后可以改變大小。 創(chuàng)建新的表空間需要創(chuàng)建新的數(shù)據(jù)文件。 數(shù)據(jù)文件一旦加入到表空間中, 就不能從表空間中移走, 也不能與其他表空間發(fā)生聯(lián)系。

              數(shù)據(jù)庫必須的三類文件是 data file, control file, redolog file. 其他文件 prameter file,password file, archived log files并不是數(shù)據(jù)庫必須的, 他們只是輔助數(shù)據(jù)庫的。

              查看數(shù)據(jù)庫的物理文件組成:

              1)查看數(shù)據(jù)文件: SQL> select * from v$datafile;

              2)查看控制文件: SQL> select * from v$controlfile;

              3)查看日志文件: SQL> select * from v$logfile;

              二: 實例

              通俗的講實例就是操作oracle數(shù)據(jù)庫的一種手段。

              數(shù)據(jù)庫實例也稱作服務(wù)器, 是用來訪問數(shù)據(jù)庫文件集的存儲結(jié)構(gòu)及后臺進程的集合。

              一個數(shù)據(jù)庫可以被多個實例訪問(稱為真正的應(yīng)用群集選項)。

              決定實例的大小及組成的各種參數(shù)或者存儲在名稱init.ora的初始化文件中, 或者隱藏

              在數(shù)據(jù)庫內(nèi)部的服務(wù)器參數(shù)文件中。 通過spfile引用該文件, spfile存儲在spfile.ora文件中。

              實例啟動時讀取初始化文件, 數(shù)據(jù)庫系統(tǒng)管理員可以修改該文件, 對初始化文件的修改只有在下次啟動時才有效。

              Instance分為兩部分:

              1: memory structure(內(nèi)存結(jié)構(gòu))

              memory structure分為兩部分:SGASystem Global Area)區(qū)是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進程所共享。它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息, 它是在Oracle 服務(wù)器所駐留的計算機的實際內(nèi)存中得以分配,如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫。

              包括:

              .share pool

              .datafase buffer cache

              .redo log buffer

              .other structures

              PGAProgram Global Area)區(qū)包含單個服務(wù)器進程或單個后臺進程的數(shù)據(jù)和控制信息,與幾個進程共享的SGA 正相反PGA 是只被一個進程使用的區(qū)域,PGA 在創(chuàng)建進程時分配在終止進程時回收。

              2: background process(后臺進程)

              包括:

              .PMON 負責(zé)在一個Oracle 進程失敗時清理資源

              .SMON 檢查數(shù)據(jù)庫的一致性如有必要還會在數(shù)據(jù)庫打開時啟動數(shù)據(jù)庫的恢復(fù)

              .DBWR 負責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件

              .LGWR 將重做日志緩沖區(qū)中的更改寫入在線重做日志文件

          .CKPT 負責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時,更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990              星老師

          posted @ 2012-08-27 16:01 瘋狂軟件 閱讀(96) | 評論 (0)編輯 收藏

           

          對于初學(xué)者來講,在了解Oracle體系結(jié)構(gòu)之前必須掌握以下兩個基本的概念: 數(shù)據(jù)庫和實例。

              一、數(shù)據(jù)庫

              數(shù)據(jù)庫(database)是一個數(shù)據(jù)集合。

              無論數(shù)據(jù)庫是采用關(guān)系結(jié)構(gòu)還是面向?qū)ο蠼Y(jié)構(gòu), oracle數(shù)據(jù)庫都將

              其數(shù)據(jù)存放在數(shù)據(jù)文件中。 在其內(nèi)部, 數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)對文件的邏輯

              映射, 使不同的數(shù)據(jù)分開存儲, 這些邏輯劃分稱為表空間。

              表空間和文件介紹:

              1: 表空間

              表空間(tablespace)是數(shù)據(jù)庫的邏輯劃分, 每個數(shù)據(jù)庫至少有一個表空間,叫做系統(tǒng)表空間(system 表空間)。 一個表空間只能屬于一個數(shù)據(jù)庫。

              每個表空間由同一個磁盤上的一個或多個文件組成, 這些文件稱為數(shù)據(jù)文件。

              表空間的特性:

              1)控制數(shù)據(jù)庫數(shù)據(jù)磁盤分配

              2)限制用戶在表空間中可以使用的磁盤空間大小

              3)表空間具有 online, offline, readonly, readwrite屬性

              修改表空間的屬性:

              SQL> alter tablespace 表空間名稱 屬性;

              查詢表空間狀態(tài):

              SQL> select tablespace_name, status from dba_tablespaces;

              注意: system, undo, temp表空間不能設(shè)為offline屬性。

              4)完成部分?jǐn)?shù)據(jù)庫的備份與恢復(fù)

              5)表空間通過數(shù)據(jù)文件來擴大, 表空間的大小等于構(gòu)成該表空間的所以數(shù)據(jù)文件的大小只和。

              查詢表空間與數(shù)據(jù)文件對應(yīng)關(guān)系:

              SQL> select tablespace_name, bytes, file_name from dba_data_files;

              基于表空間的幾個操作:

              1)查詢用戶缺省表空間:

              SQL> select username, default_tablespace from dba_users;

              2)查詢表與存儲該表的表空間:

              SQL> select table_name, tablespace_name from user_tables;

              3)修改用戶缺省表空間:

              SQL> alter user username default tablespace tablespace_name;

              4)將數(shù)據(jù)從一個表空間移動到另一個表空間:

              SQL> alter table table_name move tablespace tablespace_name;

              2.數(shù)據(jù)文件

              每個表空間由同一個磁盤上的一個或多個文件組成, 這些文件叫做數(shù)據(jù)文件(datafile),數(shù)據(jù)文件只能屬于一個表空間。 數(shù)據(jù)文件創(chuàng)建后可以改變大小。 創(chuàng)建新的表空間需要創(chuàng)建新的數(shù)據(jù)文件。 數(shù)據(jù)文件一旦加入到表空間中, 就不能從表空間中移走, 也不能與其他表空間發(fā)生聯(lián)系。

              數(shù)據(jù)庫必須的三類文件是 data file, control file, redolog file. 其他文件 prameter file,password file, archived log files并不是數(shù)據(jù)庫必須的, 他們只是輔助數(shù)據(jù)庫的。

              查看數(shù)據(jù)庫的物理文件組成:

              1)查看數(shù)據(jù)文件: SQL> select * from v$datafile;

              2)查看控制文件: SQL> select * from v$controlfile;

              3)查看日志文件: SQL> select * from v$logfile;

              二: 實例

              通俗的講實例就是操作oracle數(shù)據(jù)庫的一種手段。

              數(shù)據(jù)庫實例也稱作服務(wù)器, 是用來訪問數(shù)據(jù)庫文件集的存儲結(jié)構(gòu)及后臺進程的集合。

              一個數(shù)據(jù)庫可以被多個實例訪問(稱為真正的應(yīng)用群集選項)。

              決定實例的大小及組成的各種參數(shù)或者存儲在名稱init.ora的初始化文件中, 或者隱藏

              在數(shù)據(jù)庫內(nèi)部的服務(wù)器參數(shù)文件中。 通過spfile引用該文件, spfile存儲在spfile.ora文件中。

              實例啟動時讀取初始化文件, 數(shù)據(jù)庫系統(tǒng)管理員可以修改該文件, 對初始化文件的修改只有在下次啟動時才有效。

              Instance分為兩部分:

              1: memory structure(內(nèi)存結(jié)構(gòu))

              memory structure分為兩部分:SGASystem Global Area)區(qū)是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進程所共享。它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息, 它是在Oracle 服務(wù)器所駐留的計算機的實際內(nèi)存中得以分配,如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫。

              包括:

              .share pool

              .datafase buffer cache

              .redo log buffer

              .other structures

              PGAProgram Global Area)區(qū)包含單個服務(wù)器進程或單個后臺進程的數(shù)據(jù)和控制信息,與幾個進程共享的SGA 正相反PGA 是只被一個進程使用的區(qū)域,PGA 在創(chuàng)建進程時分配在終止進程時回收。

              2: background process(后臺進程)

              包括:

              .PMON 負責(zé)在一個Oracle 進程失敗時清理資源

              .SMON 檢查數(shù)據(jù)庫的一致性如有必要還會在數(shù)據(jù)庫打開時啟動數(shù)據(jù)庫的恢復(fù)

              .DBWR 負責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件

              .LGWR 將重做日志緩沖區(qū)中的更改寫入在線重做日志文件

          .CKPT 負責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時,更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990              星老師

          posted @ 2012-08-27 16:01 瘋狂軟件 閱讀(111) | 評論 (0)編輯 收藏

           

           jQuery是一款免費且開放源代碼的JavaScript代碼庫,由John Resig創(chuàng)建。授權(quán)協(xié)議為GPLMIT許可證雙協(xié)議。

             

              示例代碼:$(“p.neat”)。addClass(“ohmy”)。show(“slow”);

             

              特點

             

              輕量級

             

              經(jīng)GZip壓縮后傳輸?shù)拇a文件僅14KB,未經(jīng)壓縮傳送的代碼文件僅26KB. jQuery 1.26版時:

             

              檔案

             

              檔案行數(shù)

              

              檔案Size

             

              備注

             

              jquery-1.2.6.pack.js

             

              11

             

              31KB

             

              使用 Notepad++ 4.92版開啟時,易導(dǎo)致Notepad++程式當(dāng)?shù)簟?/span>

             

              jquery-1.2.6.min.js

             

              32

             

              55KB

             

              jquery-1.2.6.js

             

              3550

             

              98KB

             

              鏈?zhǔn)秸Z法

             

              $(“p.surprise”)。addClass(“ohmy”)。show(“slow”);

             

              CSS 1-3 選擇器

             

              支持CSS選擇器選定DOM對象。

             

              跨瀏覽器

             

              支持Internet Explorer 6+Opera 9+Firefox 1.5+Safari 2+

             

              簡單

             

              較其它JavaScript庫更易于入門。

             

              子項目

             

              jQuery UI

             

              基于jQuery的用戶界面庫,包括菜單、工具條、拖放、縮放、對話框、表格排序等多個組件。

             

              jQuery FX

             

          基于jQuery的網(wǎng)頁特效庫,包括元素漸進式顯示、隱藏等功能。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990          星老師

          posted @ 2012-08-25 17:46 瘋狂軟件 閱讀(138) | 評論 (0)編輯 收藏

           

          在使用java線程的時候,特別是初學(xué)者總會有幾點很常見的誤區(qū),下面以以下代碼為例:

             

              線程類:

             

              package threadtest1;

             

              public class ReturnThreadInfo extends Thread {

             

              private String str;

             

              public ReturnThreadInfo() {

             

              this.str = “Hello”;

             

              }

             

              public void run(){

             

              try{

             

              this.str = “Hello World!”;

             

              }catchException ex{

             

              }

             

              }

             

              /*返回線程信息:str變量的值*/

             

              public String getThreadInfo(){

             

              return this.str;

             

              }

             

              }

              

              主類:

             

              package threadtest1;

             

              public class Main extends Thread {

             

              public Main() {

             

              }

             

              public static void mainString[] args {

             

              ReturnThreadInfo returnThreadInfo = new ReturnThreadInfo();

             

              returnThreadInfo.start();

             

              System.out.printlnreturnThreadInfo.getThreadInfo());

             

              }

             

              }

             

              大家可以看到這個程序主要功能是返回線程returnThreadInfo對象的變量str的值并輸出,那么str的值到底是什么,一些人可能會認為是“Hello world!”或是null,其實如果大家運行下就會知道輸出的str的值實際是“Hello.為什么呢?其實認為輸出結(jié)果是“Hello world”或是null的人存在著兩個比較常見的誤區(qū):

             

              1、誤區(qū)一:認為returnThreadInfo對象中的run方法一定在主類的System.out.printlnreturnThreadInfo.getThreadInfo())之間運行。

             

              這是比較常見的一個誤區(qū),稍微了解一些java編譯原理的人應(yīng)該清楚,java源文件的代碼編譯是自上而下的,也就是處在同一文件上面的代碼會在下面的代碼之間被編譯和運行。所以很多人認為returnThreadInfo.start()先被運行,returnThreadInfo線程被啟動,然后run()方法被調(diào)用,str被賦值:“hello world!,然后線程結(jié)束并返回到主類,最后調(diào)用System.out.printlnreturnThreadInfo.getThreadInfo())將str的值輸出就是“Hello world!.

             

              如果returnThreadInfo不是一個線程而是一個普通類的對象,那么輸出的結(jié)果是“Hello world,但是正因為returnThreadInfo是一個線程,所以run方法并不一定在System.out.printlnreturnThreadInfo.getThreadInfo())之前運行。因為實際上主類Main在運行時也是一個線程,當(dāng)調(diào)用returnThreadInfo.start()方法來啟動returnThreadInfo線程后,此時系統(tǒng)中運行的實際上就是MainreturnThreadInfo兩個線程,那么這兩個線程就會競爭CPU,誰先搶到CPU的控制權(quán),誰就會先運行(實際上線程誰能優(yōu)先搶到CPU運行時間是靠優(yōu)先級來決定的,優(yōu)先級可以通過線程的setPriorityint newPriority)來設(shè)置,newPriority的取值是1-10,newPriority值越大,線程的優(yōu)先級就越高,優(yōu)先強占CPU的幾率就越大。線程默認的優(yōu)先級是5)。由于MainreturnThreadInfo的優(yōu)先級都默認為5,所以它們爭搶CPU的幾率是相同的。又因為Main線程實際上是比returnThreadInfo線程先啟動的,所以在這個程序中,MainSystem.out.printlnreturnThreadInfo.getThreadInfo())反而比returnThreadInforun方法更早運行,所以輸出的str值還是初始的“Hello.

             

              2、誤區(qū)二:認為線程運行完畢后,線程消亡的同時,線程對象也會一并被回收。

             

              下面對ReturnThreadInfo類的源代碼進行修改,將ReturnThreadInfo線程的優(yōu)先級設(shè)置為10:

             

              public ReturnThreadInfo() {

             

              this.str = “Hello”;

             

              this.setPriority10);

             

              }

             

              這樣returnThreadInfo線程的run()方法就會在Main類的System.out.printlnreturnThreadInfo.getThreadInfo())語句之前被運行。因此有很多人會認為當(dāng)returnThreadInfo線程的run()方法運行完畢并返回后,線程就會死亡,那么Main類的最后一句System.out.printlnreturnThreadInfo.getThreadInfo())就會出問題,等于調(diào)用了已經(jīng)不存在的對象:returnThreadInfo.

             

          實際上這存在著很大的一個誤區(qū),線程的死亡并不意味著線程對象的銷毀和回收。線程的死亡指的是當(dāng)線程的run方法結(jié)束后,該線程就無法被重用和啟動,但它的對象還存在并且它的屬性和方法還一樣可以被使用,因此System.out.printlnreturnThreadInfo.getThreadInfo())輸出的并不是NULL而是“Hello World!,只有當(dāng)整個應(yīng)用程序都結(jié)束后,returnT

           您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

           信息咨詢:Q564205990          星老師

          posted @ 2012-08-24 16:45 瘋狂軟件 閱讀(147) | 評論 (0)編輯 收藏

           

           

          Windows操作系統(tǒng)好幾個版本中,都可以把系統(tǒng)日志另存為文本文件、CSV文件等等,以方便系統(tǒng)管理員查詢。不過同XP操作系統(tǒng)版本不同,在Windows7 中其日志另存為多了一個格式,即Xml格式。如下圖所示,在Windows7中除了有XP操作系統(tǒng)所具有的三種格式外,還多了一個XML文件格式。這個格式也真是很多系統(tǒng)管理員所期待的日志格式。因為采用這個日志格式,能夠給我們?nèi)粘9芾韼砗艽蟮谋憷?/span>

          便利一:閱讀與查詢方便。

                   Xml格式的文件與其它文件最大的不同,就是Xml文件是一種結(jié)構(gòu)化的數(shù)據(jù)。通俗的來說,其在保存記錄的時候,會采用一些特殊的格式化控制符符號,來保證存儲的數(shù)據(jù)都符合結(jié)構(gòu)化的需要。那么這結(jié)構(gòu)化的數(shù)據(jù),對于系統(tǒng)管理員有什么幫助呢?最直接的幫助,就是系統(tǒng)管理員可以將Xml文件的數(shù)據(jù)輕松的導(dǎo)入到數(shù)據(jù)庫中,進行分析。系統(tǒng)管理員往往需要多幾個月、甚至幾年的日志信息進行分析,以找到提高操作系統(tǒng)性能與漏洞方面的信息。但是對于這些海量的數(shù)據(jù),如果不借助于數(shù)據(jù)庫等專業(yè)分析工具,很難得出一個合理的結(jié)論。為此系統(tǒng)管理員往往需要把這些日志記錄導(dǎo)入到數(shù)據(jù)庫系統(tǒng)中,然后進行縱向與橫向的對比,最終得出一些可行的結(jié)論。

                 而現(xiàn)在如果采用了Xml格式來保存日志信息的話,那么系統(tǒng)管理員就可以輕松的把這些日志信息導(dǎo)入到數(shù)據(jù)庫中。在不需要任何調(diào)整的情況下,就可以把XML格式的文件直接導(dǎo)入到數(shù)據(jù)庫系統(tǒng)中。由于XML文件可以直接通過瀏覽器等工具打開,而這個瀏覽器又往往是操作系統(tǒng)所必備的一個應(yīng)用軟件。所以其查看就會非常的方便。

          便利二:兼容性比較高

                 XML文件的另外一個優(yōu)點,就是其兼容性比較高。現(xiàn)在主流的數(shù)據(jù)庫軟件,基本上都支持XML文件。也就是說,系統(tǒng)管理員不僅可以利用微軟的SQL Server數(shù)據(jù)庫軟件,也可以利用Oracle等非微軟的數(shù)據(jù)庫軟件,把日志信息導(dǎo)入進去,然后進行分析。通常情況下,大部分系統(tǒng)管理員不怎么喜歡使用SQL Server數(shù)據(jù)庫,因為其相對來說復(fù)雜一點,而且安裝起來也比較麻煩。再說,對日志記錄進行統(tǒng)計分析,使用SQLServer這種大型的數(shù)據(jù)庫系統(tǒng)也有一點大材小用。為此包括筆者在內(nèi)的系統(tǒng)管理員更加喜歡使用MySQL等小型的數(shù)據(jù)庫系統(tǒng)來進行分析。不僅僅因為其是免費的,主要是其小巧方便,而且也不會占用多大的硬盤空間。而現(xiàn)在Windows7操作系統(tǒng)中,推出了XML格式的文件來保存日志記錄,那么我們系統(tǒng)管理員就更加有理由采用MySQL等小型數(shù)據(jù)庫了。因為MySQLXML文件的支持是非常強大的。而且,數(shù)據(jù)庫也可以把相關(guān)的統(tǒng)計結(jié)果保存為XML文件的格式。

           

                 另外XML的兼容性還體現(xiàn)在不同操作系統(tǒng)平臺上的兼容。像事件文件,這是微軟操作系統(tǒng)提供的一種文件格式,在Linux等操作系統(tǒng)上無法打開。再如文本文件,雖然在Linux操作系統(tǒng)上可以打開。但是通常情況下會出現(xiàn)一個格式的混亂現(xiàn)象,影響系統(tǒng)管理員的正常閱讀。除非系統(tǒng)管理員利用一些系統(tǒng)自帶的工具進行轉(zhuǎn)換。但是采用XML格式的文件就不會出現(xiàn)這種情況。XML文件看起來就好像是一個網(wǎng)頁。其在Windows操作系統(tǒng)下打開是什么樣子的,那么在Linux操作系統(tǒng)上打開也是這個樣子。不僅格式不會亂掉,而且也不需要用到其它額外的輔助工具。所以說,這個不同操作系統(tǒng)平臺上的兼容性,可以提高員工資料的共享。據(jù)筆者所知,不少的企業(yè),可能客戶端采用的是Windows系統(tǒng),而在服務(wù)器端采用的是Linux等非微軟的操作系統(tǒng)。現(xiàn)在這種趨勢越來越明顯。所以提高這個多操作系統(tǒng)的兼容性,也是非常必要的。即使把日志文件保存在Linux操作系統(tǒng)上的文件服務(wù)器中,也不用擔(dān)心會有什么問題。

          便利三:可以實現(xiàn)日志文件的統(tǒng)一管理

                  在企業(yè)中,不僅操作系統(tǒng)會產(chǎn)生日志文件。其它應(yīng)用系統(tǒng)也會產(chǎn)生相關(guān)的日志文件。如數(shù)據(jù)庫系統(tǒng)、ERP系統(tǒng)、財務(wù)管理軟件等等也會產(chǎn)生日志文件。當(dāng)企業(yè)應(yīng)用服務(wù)器比較多的時候,分散的管理日志文件不僅效率比較低,而且容易造成關(guān)鍵信息的疏漏。為此通過一個統(tǒng)一的日志服務(wù)器平臺來管理各個系統(tǒng)與服務(wù)產(chǎn)生的日志文件,是一個比較好的解決方法。但是要實現(xiàn)這個目標(biāo)的話,最大的障礙就是各個系統(tǒng)產(chǎn)生的日志文件格式不兼容。如果Oralce數(shù)據(jù)庫系統(tǒng)、 Windows操作系統(tǒng)等等都以各自的格式來保存日志文件,那么就需要不同的工具來打開這些日志文件進行查詢,這處理起來非常的不方便。而如果這些應(yīng)用軟件都支持XML格式的日志文件,那么就會非常的方便。

                  自從微軟Windows7操作系統(tǒng)推出了XML格式的日志文件,筆者現(xiàn)在正在做一個項目。就是把Windows7操作系統(tǒng)、Oracle數(shù)據(jù)庫系統(tǒng)以及其它一些支持XML日志文件的應(yīng)用服務(wù)的日志文件,實現(xiàn)同一個軟件來管理。其實原理很簡單,就是把這些系統(tǒng)產(chǎn)生的日志文件自動傳送到一臺日志服務(wù)器中,然后數(shù)據(jù)庫會自動把這些日志文件導(dǎo)入到數(shù)據(jù)庫服務(wù)器中。并利用數(shù)據(jù)庫的觸發(fā)器等等工具來進行一些分析、自動預(yù)警等等工作。這可以減少系統(tǒng)管理員不時的查看相關(guān)日志所耗用的時間,減輕系統(tǒng)管理員的工作量。

                  所以微軟推出了采用XML格式的日志文件,這讓統(tǒng)一管理操作系統(tǒng)與其它非微軟產(chǎn)品的日志文件有了實現(xiàn)的可能性。因為XML格式是一個結(jié)構(gòu)化的數(shù)據(jù)文件,其支持的廠商有很多。不過XML格式的文件已經(jīng)出來了好久了,應(yīng)該在XP操作系統(tǒng)出來之前。為什么在XP操作系統(tǒng)上,沒有實現(xiàn)這個技術(shù),筆者對此比較迷惑。不過在Windows7中終于給大家盼來了,遲來總比沒有好。

          便利四:對于WEB的支持性比較好。

                  有時候系統(tǒng)管理員往往一個人不能夠完成相關(guān)日志記錄的分析。而需要跟數(shù)據(jù)庫管理員或者其他應(yīng)用軟件負責(zé)人一起完成相關(guān)的日志分析工作。這主要是系統(tǒng)管理人員分工的不斷細化所造成。現(xiàn)在有不少的項目管理軟件,都是基于WEB來實現(xiàn)的。如果把日志文件跟這些WEB項目管理軟件結(jié)合起來的話,這對系統(tǒng)管理員的工作將會有很大的幫助。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990            星老師

          posted @ 2012-08-21 17:32 瘋狂軟件 閱讀(117) | 評論 (0)編輯 收藏

           

          今天在看用TdataSet生成的XML中第一行里有個standalone,不知道是什么意思,查了一下資料才知道它的作用,下面就把我了解的寫下來。

              standalone 用來表示該文件是否呼叫其它外部的文件。若值是 yes 表示沒有呼叫外部文件,若值是 no 則表示有呼叫外部文件。默認值是 yes”。

              這里所指的外部文件其實就是查檢XML是不是有效的約束文件,或是DTD或是Schema,那這兩者又有什么區(qū)別呢?

              盡管XML1.0提供了一種機制,即文檔類型定義(DTD)來規(guī)范XML的格式規(guī)則。但是它天生存在一些缺點,比如,它采用了非XML的語法規(guī)則、不支持更多的數(shù)據(jù)類型、擴展性差等,為了克服這些缺點,XML Schema 出現(xiàn)了。W3C推薦在XML中使用XML Schema來代替DTD

              XML Schema(模式) DTD一樣,也用于定義 XML 文檔的約束。但它與DTD明顯不同的是,XML Schema遵循XML語法規(guī)則,更好地支持?jǐn)?shù)據(jù)類型以及命名空間。W3C稱:XML Schema is an XML based alternative to DTD。模式在單獨的文件中定義,通常擴展名為 .xsd。每個模式定義都有一個根元素 schema,該元素屬于名稱空間http://www.w3.org/2001/XMLSchemaschema 元素可以包含可選的屬性。

              比如:

              <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

              elementFormDefault="qualified" attributeFormDefault="unqualified">

              這表示模式中使用的元素來自http://www.w3.org/2001/XMLSchema名稱空間。

              XML 文件使用 schema 名稱空間中的 schemaLocation 屬性鏈接到對應(yīng)的模式。使用 schemaLocation 屬性必須定義 schema 名稱空間。所有這些定義都出現(xiàn)在 XML 文檔的根元素中。

              語法如下:

              <root_element schema_namespace_definition schema_location_definition>

              下面是一個例子:

              <Books xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"

              xs:schemaLocation="http://www.example.com Books.xsd">

              先來看看一個XML文件示例(message.xml),分別用DTDXML Schema 描述這個文件,看看它們之間的區(qū)別:

              1、使用DTD

              <?xml version="1.0" standalone="yes"?>

              <!DOCTYPE message[

              <!ELEMENT message to,from,body>

              <!ELEMENT to      #PCDATA>

              <!ELEMENT from    #PCDATA>

              <!ELEMENT body    #PCDATA>

              ]>

              <message>

              <to>rose</to>

              <from>alex</from>

              <body>Hi,My Girl!</body>

             </message>

              2、使用XML Schema

              message.xml:

              <?xml version="1.0" standalone="no"? >

              <message xmlns=http://www.example.com

              xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

              xsi:schemaLocation="http://www.example.com message.xsd">

              <to>Rose</to>

              <from>Alex</from>

              <body>Hi,My Girl!</body>

              </message>

              message.xsd:

              <?xml version="1.0"?>

              <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

              targetNamespace=http://www.example.com

              xmlns="http://www.example.com" elementFormDefault="qualified">

              <xs:element name="message">

              <xs:complexType>

              <xs:sequence>

              <xs:element name="to" type="xs:string"/>

              <xs:element name="from" type="xs:string"/>

              <xs:element name="body" type="xs:string"/>

              </xs:sequence>

              </xs:complexType>

              </xs:element>

          </xs:schema>

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990             星老師

          posted @ 2012-08-19 17:27 瘋狂軟件 閱讀(283) | 評論 (0)編輯 收藏

             tomcat服務(wù)器是一種Servlet/jsp容器,更實質(zhì)性的說是Servlet容器,因為jsp最終還是被編譯成servlet來執(zhí)行的。而對于servlet來說,其最長見的用途是擴展java web服務(wù)器功能,為來自web客戶的請求提供服務(wù)。它完全運行在java虛擬機上。由于它的運行在服務(wù)器端,因此他的運行不依賴于瀏覽器。

             

                  tomcat作為servlet容器,負責(zé)處理客戶請求,把請求傳給servlet并把結(jié)果返回給客戶。servlet容器與servlet之間的接口是由java servlet api定義的,在此api中定義了servlet的各種方法,這些方法在servlet生命周期的不容階段被servlet容器調(diào)用,servlet api還定義了servlet容器傳遞給servlet的對象類,如請求對象ServletRequest和相應(yīng)對象ServletResponse

             

                 tomcat服務(wù)器是由一系列可配置的組件構(gòu)成,其中核心組件是Catalina Servlet容器,它是所有其他tomcat組件的頂層容器。tomcat的組件可以在conf/server.xml文件當(dāng)中進行配置,每個tomcat組件在server.xml文件中進行配置,每個tomcat組件在server.xml文件中對應(yīng)一種配置元素。具體見下:

             

              < server>

             

              < service>

             

              < Connector>

             

              < /Connector>

             

              < Engine>

             

              < Host>

             

              < Context>< /Context>

             

              < /Host>

             

              < /Engine>

             

              < /service>

             

              < /server>

             

              1.頂層類元素:

             

              < Server>< Service>,他們位于整個配置文件的頂層

             

              < Server>元素代表整個Catalina Servlet容器,它是tomcat實例的頂層元素。< Server>元素當(dāng)中可包含一個或多個< service>元素。

             

              < service>元素中包含一個< Engine>元素,以及一個或多個< Connector>元素,這些< Connector>元素共享同一個< Engine>元素

             

              2.連接器類元素:

             

              connector,它代表了介于客戶與服務(wù)器之間的通信接口,負責(zé)將客戶的請求發(fā)送給服務(wù)器,并將服務(wù)器的相應(yīng)結(jié)果傳遞給客戶。

             

              3.容器類元素

             

              < Engine>,< Host>< context

             

              其中< Engine>組件處理在同一個< service>中所有< Connector>元素接受到的客戶請求

             

              < Host>組件為特定的虛擬機處理所有客戶請求。每個< Host>元素定義了一個虛擬主機,它可以包含一個或多個web應(yīng)用。

             

              < context>組件為特定的web應(yīng)用處理所有客戶請求。它是使用最頻繁的元素。每個< Context>元素代表了運行在虛擬機上的單個web應(yīng)用,一個< Host>元素中可以包含多個< context>元素

             

                  說到< context>元素,java web應(yīng)用的主要特征之一就是它與Context的關(guān)系,每個web應(yīng)用有唯一的Context.當(dāng)java web應(yīng)用運行時,Servlet容器為每個web應(yīng)用創(chuàng)建唯一的ServletContext對象,它被整個web應(yīng)用中所有的組件共享。

             

              如下代碼:

             

              < Context path=“/reglog” docBase=“reglog” debug=“0”

             

              crosscontext=“true” reloadable=“true”>

             

              < /Context>

             

              你可以自己在server.xml當(dāng)中定義一個context元素,設(shè)定你所存在項目的參數(shù)及屬性。其中path指定訪問web應(yīng)用的url入口

             

              docBase指定web應(yīng)用的文件路徑,可以給定絕對路徑,也可以給定向?qū)τ?/span>hostappBase屬性的相對路徑

             

              reloadable,如果這個屬性設(shè)為true,tomcat服務(wù)器在運行狀態(tài)下會監(jiān)視在WEB-INF/classesWEB-INF/lib目錄下class文件的改動,如果監(jiān)測到有class文件被更新,服務(wù)器會自動重新加載web應(yīng)用。

             

              另外說一下tomcat的運行腳本

             

                  如果仔細研究一下tomcat的啟動和關(guān)閉腳本,會發(fā)現(xiàn)startup.batshutdown.bat都執(zhí)行同一個目錄下的catalina.bat腳本。其實質(zhì)是這樣的:執(zhí)行startup.bat腳本,相當(dāng)于執(zhí)行了catalina start命令,執(zhí)行shutdown.bat相當(dāng)于執(zhí)行了catalina stop命令。

             

              commonlib,serverlib,sharedlib這三個目錄相信大家都見過吧,但具體是干什么用的呢?

             

              其中serverlib下的jar文件只能被tomcat服務(wù)器訪問。

             

              sharedlib下的jar文件可以被所有的web應(yīng)用訪問,但不能被tomcat服務(wù)器訪問。

             

              commonlib目錄下的jar文件可以被tomcat服務(wù)器和所有的web應(yīng)用訪問

           

          您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990            星老師

          posted @ 2012-08-18 14:51 瘋狂軟件 閱讀(292) | 評論 (0)編輯 收藏

           

              從服務(wù)器端促進程序快速開發(fā)的Java Server Pages JSP)決定它成為一種廣為流行的工具。雖然呆板的一面仍然存在,然而無論它包含多少缺點,JSP能夠為Web程序設(shè)計者提供很多東西,尤其是與數(shù)據(jù)庫的輸入和輸出操作與數(shù)據(jù)的處理。

             

              通過JSP來進行數(shù)據(jù)庫訪問不需要太多的引導(dǎo)。問題是如何使開發(fā)者能夠接受Web程序的數(shù)據(jù)庫訪問比傳統(tǒng)的本地OLAP系統(tǒng)的數(shù)據(jù)庫訪問更加具有吸引力,并且使他們認識到,整潔和簡要的數(shù)據(jù)訪問方法才是關(guān)鍵的。在這一點上,JSP可以很好地解決。

             

              你能夠做哪些?

             

              如果你正在編寫高數(shù)據(jù)量、數(shù)據(jù)密度大的Web程序時,你的數(shù)據(jù)庫訪問應(yīng)該具備哪一方面的要求?如果你正在使用JSP,那么你必須處理大量的服務(wù)器端的數(shù)據(jù)。程序也許需要大量的數(shù)據(jù),或者很多用戶,或者這二者的結(jié)合。你所考慮的可能范圍還會包括:性能的優(yōu)化,可檢測性,每一用戶的多個查詢的影響,查詢的復(fù)雜性,以及當(dāng)單一的會話處理大量數(shù)據(jù)時,高等級的類型轉(zhuǎn)換。

             

              這其中包含大規(guī)模的處理。但是,JSP能夠幫助你很好地處理,因為它能夠與Java Database Connectivity API JDBC)很好的兼容。你可以將JDBC包含在JSP代碼中,并且JDBC能夠傳遞聲明執(zhí)行類似數(shù)據(jù)庫的命令,只要你能夠正確地使用JDBC驅(qū)動程序。

             

              開始

             

              這里是一個通常的、抽象的JSP程序執(zhí)行的體系。首選的JSP設(shè)計模式為模型-視圖-控制器(MVCModel-View-Controller),即傳統(tǒng)三層體系的一種變異,以更好的適合于服務(wù)器程序。在JSPMVC設(shè)計模式中,Model指的是程序的邏輯與數(shù)據(jù),View為查看,以及Controller為請求處理。

             

              當(dāng)你設(shè)計一個JSP程序時,在客戶端與服務(wù)器交互之間建立第一步驟的頁面,這是最好的一個過程。例如,在一個典型程序中,在數(shù)據(jù)交換中的每一個特定步驟都會有頁面:一個數(shù)據(jù)入口頁面,一個驗證請求頁面,一個數(shù)據(jù)庫響應(yīng)頁面,以及這些頁面的子頁面(一個更改記錄的頁面,一個刪除記錄的頁面,等等)。

             

              你可以將JDBC嵌入到每一頁面中,以完成被請求的數(shù)據(jù)庫操作。然而,這一操作也會冒很大的風(fēng)險,因為由于混合了JSPJDBC而混合了整個程序──JDBC是基于SQL.這也就是SQL被封裝在JDBC,JDBC也被封裝在JSP──這也足夠讓你暈頭轉(zhuǎn)向的。如果你選擇這一方法,你將會獲得你想要的功能,但一定要保證你的程序邏輯與數(shù)據(jù)庫訪問代碼的關(guān)系非常清晰,這一點格外小心。

             

              嵌入式JDBC

             

              JDBC API不會直接地與數(shù)據(jù)庫進行交流。其中的驅(qū)動程序完成的實際的連接,你可以在賣方的Web站點上下載這些驅(qū)動程序。除此之外,還有四種JDBC的驅(qū)動程序類型,如果你決定使用JDBC,你需要正確地選擇最為適合你需要的那種類型。你將使用一個DriverManager類來處理基于驅(qū)動程序的連接。

             

              你可以使用一個名為getConnectionDriverManager方法來建立你的數(shù)據(jù)庫連接。你還可以使用它的URL參數(shù)來識別數(shù)據(jù)庫:

             

              public static Connection getConnectionjdbc:odbc:nameOfDatabase

             

              現(xiàn)在,告訴DriverManager有關(guān)驅(qū)動程序的信息(應(yīng)該在你的classpath中):

             

              Class.forName(“sun.jdbc.odbc.nameOfJDBCDriver”);

             

              你已經(jīng)將數(shù)據(jù)庫連接到JSP程序,但你仍然不能夠執(zhí)行一個數(shù)據(jù)庫命令。解決這一點,你可以在JSP代碼中生成聲明以建立數(shù)據(jù)庫命令,如下所示:

             

              public Statement createStatementintresultSetType, intresultSetConcurrency

             

              其中的參數(shù)能夠讓你控制從數(shù)據(jù)庫查詢得到的結(jié)果。當(dāng)使用第一個參數(shù)時,可以在程序中看到結(jié)果;當(dāng)使用第二個參數(shù)時,你可以通過查詢來更新數(shù)值(這是一個難以相信的功能,在以后的文章中值得進一步討論)。

             

              A

             

              C#Listing">http://builder.com.com/5100-6387-5172666.html?tag=sC#Listing

             

              AListing A顯示列舉了下兩種方法的復(fù)雜性。

             

              聲明(Statement)就是SQL命令。PreparedStatement就是SQL的聲明,你可以通過其中的參數(shù)來控制程序的過程。CallableStatement是用于訪問SQL存儲程序。你是否開始意識到,如果你沒有看到這些說明,你是否覺得這些聲明很復(fù)雜?請注意到,通過調(diào)用rollback方法,你可以撤除交易過程。

             

              如果你想完全使用這些數(shù)據(jù)庫訪問的方法,你唯一遺漏的還有:

             

              ResultSetexecuteQuerystring sqlQuery

             

              (你可以使用executeQuery來完成以上過程。你也可以使用一個executeUpdate來完成更新、插入和刪除)。你以上的聲明接口使你可以使用一些方法來執(zhí)行SQL聲明。ResultSet所做的就是訪問從查詢得到的數(shù)據(jù),所以你可以在JSP程序中使用這些數(shù)據(jù)。

             

              通過將JSP程序分解成單一的、功能明顯的頁面,以及在任何給定頁面中執(zhí)行一個單一的數(shù)據(jù)庫操作,可以很大程度地簡化你的數(shù)據(jù)庫操作,以及建立可以用于以后程序開發(fā)的頁面,即使你將SQL嵌入到這些頁面的JDBC中。

             

          但是你還可以做更多的事情,以使得你的JSP數(shù)據(jù)庫訪問更加整潔和容易維護。在JSP代碼中嵌入JDBC,以及通過發(fā)送SQL命令與數(shù)據(jù)庫通訊,這些過程都很好。但是,它要求在不能增加代碼復(fù)雜程度下,建立通過接口的SQL命令的程序。當(dāng)你的SQL處理需要提高靈活性的時候,你可以進一步地分離你的數(shù)據(jù)庫接口代碼,以清潔你的JSP程序。

           

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990            星老師

          posted @ 2012-08-17 13:13 瘋狂軟件 閱讀(147) | 評論 (0)編輯 收藏

           

           1)繼承第1種方式:對象冒充

          2)繼承第2種方式:

          call方法call方法是Function對象中的方法,因此我們定義的每個函數(shù)都擁有該方法。可以通過函數(shù)名來調(diào)用call方法,call方法的第一個參數(shù)會被傳遞給函數(shù)中的this,從第二個參數(shù)開始,逐一賦值給函數(shù)中的參數(shù)。

           

          3)繼承第3種方式:

           apply方法apply方法與call方法的不同之處在于,apply方法第二個參數(shù)傳遞的是一個數(shù)組,而不像call方法那樣以離散的形式傳遞參數(shù)。

          4)繼承第4種方式:

          原型鏈方式該方式的缺點是不能夠傳遞參數(shù)。初始化必須要等對象創(chuàng)建之后

          5)繼承第5種方式:混合方式(推薦)

           

          您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990          星老師

          posted @ 2012-08-15 13:43 瘋狂軟件 閱讀(145) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 永平县| 绥滨县| 平江县| 资阳市| 德惠市| 桃源县| 景东| 本溪市| 井研县| 仙游县| 丰城市| 松滋市| 光山县| 仪征市| 永济市| 贺兰县| 漠河县| 泸溪县| 深水埗区| 正宁县| 明水县| 平昌县| 漠河县| 德化县| 商南县| 昌吉市| 密山市| 凤阳县| 册亨县| 福泉市| 湘西| 临西县| 界首市| 泰兴市| 大洼县| 沁水县| 河东区| 嘉义市| 资阳市| 建德市| 伊金霍洛旗|