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

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

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

    2010年9月16日

    在網(wǎng)絡(luò)鄰居里面隱藏

    net config server /hidden:yes

    posted @ 2010-09-16 16:38 A++ 閱讀(152) | 評(píng)論 (0)編輯 收藏

    2009年10月14日

    淘寶接口地址介紹

    http://isv.alisoft.com/isv/portal/home/home.jspa

    posted @ 2009-10-14 10:52 A++ 閱讀(287) | 評(píng)論 (1)編輯 收藏

    2009年8月14日

    免安裝Oracle客戶端使用PL/SQL連接Oracle的2種方法

    方法一:

    大家都知道,用PL/SQL連接Oracle,是需要安裝Oracle客戶端軟件的。有沒要想過不安裝Oracle客戶端直接連接Oracle呢?

          其實(shí)我一直想這樣做,因?yàn)檫@個(gè)客戶端實(shí)在太讓人討厭了!!!不但會(huì)安裝一個(gè)JDK,而且還會(huì)把自己放在環(huán)境變量的最前面,會(huì)造成不小的麻煩。

          其實(shí)我之前問過很多人的,但是他們都說一定需要安裝Oracle客戶端的.......直到昨天無意中發(fā)現(xiàn)了以下這個(gè)方法:

          只需要在Oracle下載一個(gè)Instant Client Package的軟件就可以了,這個(gè)軟件不需要安裝,只要解壓就可以用了,很方便,就算重裝了系統(tǒng)還是可以用的。

          下載地址:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

          下載這個(gè),Instant Client Package - Basic包。然后解壓到任意目錄,在這個(gè)目錄下建立NETWORK文件夾,接著再這個(gè)文件夾下再建立ADMIN文件夾,然后建立tnsnames.ora文件,內(nèi)容如下:

         oracledata =
               (DESCRIPTION =
                 (ADDRESS_LIST =
                   (ADDRESS = (PROTOCOL = TCP)(HOST = yourhostIp )(PORT = 1521))
                 )
                 (CONNECT_DATA =
                   (SERVICE_NAME = yourSID   )
                 )
               )
        這里根據(jù)自己的實(shí)際情況配置。接著打開PL/SQL,在perference里面設(shè)置OCI Library和Oracle_home,我的設(shè)置是OCI Library=c:\oracleclient\oci.dll,Oracle_home=c:\oracleclient。

         根據(jù)自己的實(shí)際情況配置,其實(shí)就是剛才下載下來的那個(gè)包的路徑。還有最后一個(gè)問題,需要設(shè)置一個(gè)字符集,這樣查詢出來的數(shù)據(jù)才不會(huì)是亂碼,寫一個(gè)批處理pldev. bat放到pl安裝目錄下,內(nèi)容如下:

        set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
        PLSQLDev.exe

         這個(gè)字符集,指的是服務(wù)器端的字符集,請(qǐng)根據(jù)實(shí)際情況配置。

         最后,只要雙擊這個(gè)批處理,再填寫帳號(hào)和密碼就可以了


     
    方法二:
     
     
    前幾天發(fā)了免安裝Oracle客戶端使用PL/SQL連接Oracle一文,巴士飛揚(yáng)和我說,他早就用了另外一個(gè)更好用的綠色版本Oracle客戶端,而且不需要太復(fù)雜的配置。

          我比較了一下,我的文章中的方法,客戶端比較大,30M左右。設(shè)置比較復(fù)雜,不過應(yīng)該比較穩(wěn)定。巴士飛揚(yáng)所提供的包是一個(gè)3M多一點(diǎn)的,解壓開來10M,應(yīng)該是某位高人做的。

          綠色版Oracle客戶端下載(由巴士飛揚(yáng)友情提供):Oracle客戶端

          大家也說說哪個(gè)好用吧!!!

    posted @ 2009-08-14 09:36 A++ 閱讀(1493) | 評(píng)論 (1)編輯 收藏

    2009年6月5日

    判斷瀏覽器

    <script language="javascript">
    if(window.navigator.appName=="Microsoft Internet Explorer"&&window.navigator.appVersion.substring(window.navigator.appVersion.indexOf("MSIE")+5,window.navigator.appVersion.indexOf("MSIE")+8)<6) {
    alert("對(duì)不起,AICBOSS需要使用IE6.0版本瀏覽器,請(qǐng)升級(jí)!");
    window.location="about:blank";
    }

    posted @ 2009-06-05 08:50 A++ 閱讀(240) | 評(píng)論 (0)編輯 收藏

    2009年6月3日

    cmd ftp 模糊讀取文件

    @echo off
    echo open 10.76.1.77 77>> ftpscript.txt
    echo tzys >> ftpscript.txt
    echo tzys >> ftpscript.txt
    set wind=%date:~0,4%%date:~5,2%%date:~8,2%
    echo dir %wind% >> ftpscript.txt
    echo prompt off >> ftpscript.txt
    echo mget %wind%*.txt >> ftpscript.txt
    echo bye >> ftpscript.txt

    ftp -s:ftpscript.txt

    del ftpscript.txt

    posted @ 2009-06-03 11:11 A++ 閱讀(406) | 評(píng)論 (0)編輯 收藏

    2009年6月2日

    Cmd下FTP使用命令全集

    2006年02月03日

    Cmd下FTP使用命令全集

    文章來源:CnXHacker.Net
    FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統(tǒng)下使用FTP,都會(huì)遇到大量的FTP內(nèi)部命令。熟悉并靈活應(yīng)用FTP的內(nèi)部命令,可以大大方便使用者,并收到事半功倍之效。

    FTP的命令行格式為: ftp -v -d -i -n -g [主機(jī)名]
    -v 顯示遠(yuǎn)程服務(wù)器的所有響應(yīng)信息;
    -n 限制ftp的自動(dòng)登錄,即不使用;
    .n etrc文件;
    -d 使用調(diào)試方式;
    -g 取消全局文件名。

    ftp使用的內(nèi)部命令如下(中括號(hào)表示可選項(xiàng)):

    1.![cmd[args]]:在本地機(jī)中執(zhí)行交互shell,exit回到ftp環(huán)境,如:!ls*.zip.
    2.$ macro-ame[args]:執(zhí)行宏定義macro-name.
    3.account[password]:提供登錄遠(yuǎn)程系統(tǒng)成功后訪問系統(tǒng)資源所需的補(bǔ)充口令。
    4.append local-file[remote-file]:將本地文件追加到遠(yuǎn)程系統(tǒng)主機(jī),若未指定遠(yuǎn)程系統(tǒng)文件名,則使用本地文件名。
    5.ascii:使用ascii類型傳輸方式。
    6.bell:每個(gè)命令執(zhí)行完畢后計(jì)算機(jī)響鈴一次。
    7.bin:使用二進(jìn)制文件傳輸方式。
    8.bye:退出ftp會(huì)話過程。
    9.case:在使用mget時(shí),將遠(yuǎn)程主機(jī)文件名中的大寫轉(zhuǎn)為小寫字母。
    10.cd remote-dir:進(jìn)入遠(yuǎn)程主機(jī)目錄。
    11.cdup:進(jìn)入遠(yuǎn)程主機(jī)目錄的父目錄。
    12.chmod mode file-name:將遠(yuǎn)程主機(jī)文件file-name的存取方式設(shè)置為mode,如: chmod 777 a.out 。
    13.close:中斷與遠(yuǎn)程服務(wù)器的ftp會(huì)話(與open對(duì)應(yīng))。
    14.cr:使用asscii方式傳輸文件時(shí),將回車換行轉(zhuǎn)換為回行。
    15.delete remote-file:刪除遠(yuǎn)程主機(jī)文件。
    16.debug[debug-value]:設(shè)置調(diào)試方式, 顯示發(fā)送至遠(yuǎn)程主機(jī)的每條命令,如: deb up 3,若設(shè)為0,表示取消debug。
    17.dir[remote-dir][local-file]:顯示遠(yuǎn)程主機(jī)目錄,并將結(jié)果存入本地文件local-file。
    18.disconnection:同close。
    19.form format:將文件傳輸方式設(shè)置為format,缺省為file方式。
    20.get remote-file[local-file]: 將遠(yuǎn)程主機(jī)的文件remote-file傳至本地硬盤的local-file。
    21.glob:設(shè)置mdelete,mget,mput的文件名擴(kuò)展,缺省時(shí)不擴(kuò)展文件名,同命令行的-g參數(shù)。
    22.hash:每傳輸1024字節(jié),顯示一個(gè)hash符號(hào)(#)。
    23.help[cmd]:顯示ftp內(nèi)部命令cmd的幫助信息,如:help get。
    24.idle[seconds]:將遠(yuǎn)程服務(wù)器的休眠計(jì)時(shí)器設(shè)為[seconds]秒。
    25.image:設(shè)置二進(jìn)制傳輸方式(同binary)。
    26.lcd[dir]:將本地工作目錄切換至dir。
    27.ls[remote-dir][local-file]:顯示遠(yuǎn)程目錄remote-dir, 并存入本地文件local-file。
    28.macdef macro-name:定義一個(gè)宏,遇到macdef下的空行時(shí),宏定義結(jié)束。
    29.mdelete[remote-file]:刪除遠(yuǎn)程主機(jī)文件。
    30.mdir remote-files local-file:與dir類似,但可指定多個(gè)遠(yuǎn)程文件,如: mdir *.o.*.zipoutfile 。
    31.mget remote-files:傳輸多個(gè)遠(yuǎn)程文件。
    32.mkdir dir-name:在遠(yuǎn)程主機(jī)中建一目錄。
    33.mls remote-file local-file:同nlist,但可指定多個(gè)文件名。
    34.mode[modename]:將文件傳輸方式設(shè)置為modename, 缺省為stream方式。
    35.modtime file-name:顯示遠(yuǎn)程主機(jī)文件的最后修改時(shí)間。
    36.mput local-file:將多個(gè)文件傳輸至遠(yuǎn)程主機(jī)。
    37.newer file-name: 如果遠(yuǎn)程機(jī)中file-name的修改時(shí)間比本地硬盤同名文件的時(shí)間更近,則重傳該文件。
    38.nlist[remote-dir][local-file]:顯示遠(yuǎn)程主機(jī)目錄的文件清單,并存入本地硬盤的local-file。
    39.nmap[inpattern outpattern]:設(shè)置文件名映射機(jī)制, 使得文件傳輸時(shí),文件中的某些字符相互轉(zhuǎn)換,如:nmap $1.$2.$3[$1,$2].[$2,$3],則傳輸文件a1.a2.a3時(shí),文件名變?yōu)閍1,a2。該命令特別適用于遠(yuǎn)程主機(jī)為非UNIX
    機(jī)的情況。
    40.ntrans[inchars[outchars]]:設(shè)置文件名字符的翻譯機(jī)制,如ntrans1R,則文件名LLL將變?yōu)镽RR。
    41.open host[port]:建立指定ftp服務(wù)器連接,可指定連接端口。
    42.passive:進(jìn)入被動(dòng)傳輸方式。
    43.prompt:設(shè)置多個(gè)文件傳輸時(shí)的交互提示。
    44.proxy ftp-cmd:在次要控制連接中,執(zhí)行一條ftp命令, 該命令允許連接兩個(gè)ftp服務(wù)器,以在兩個(gè)服務(wù)器間傳輸文件。第一條ftp命令必須為open,以首先建立兩個(gè)服務(wù)器間的連接。
    45.put local-file[remote-file]:將本地文件local-file傳送至遠(yuǎn)程主機(jī)。
    46.pwd:顯示遠(yuǎn)程主機(jī)的當(dāng)前工作目錄。
    47.quit:同bye,退出ftp會(huì)話。
    48.quote arg1,arg2...:將參數(shù)逐字發(fā)至遠(yuǎn)程ftp服務(wù)器,如:quote syst.
    49.recv remote-file[local-file]:同get。
    50.reget remote-file[local-file]:類似于get,但若local-file存在,則從上次傳輸中斷處續(xù)傳。
    51.rhelp[cmd-name]:請(qǐng)求獲得遠(yuǎn)程主機(jī)的幫助。
    52.rstatus[file-name]:若未指定文件名,則顯示遠(yuǎn)程主機(jī)的狀態(tài),否則顯示文件狀態(tài)。
    53.rename[from][to]:更改遠(yuǎn)程主機(jī)文件名。
    54.reset:清除回答隊(duì)列。
    55.restart marker:從指定的標(biāo)志marker處,重新開始get或put,如:restart 130。
    56.rmdir dir-name:刪除遠(yuǎn)程主機(jī)目錄。
    57.runique:設(shè)置文件名唯一性存儲(chǔ),若文件存在,則在原文件后加后綴..1,.2等。
    58.send local-file[remote-file]:同put。
    59.sendport:設(shè)置PORT命令的使用。
    60.site arg1,arg2...:將參數(shù)作為SITE命令逐字發(fā)送至遠(yuǎn)程ftp主機(jī)。
    61.size file-name:顯示遠(yuǎn)程主機(jī)文件大小,如:site idle 7200。
    62.status:顯示當(dāng)前ftp狀態(tài)。
    63.struct[struct-name]:將文件傳輸結(jié)構(gòu)設(shè)置為struct-name, 缺省時(shí)使用stream結(jié)構(gòu)。
    64.sunique:將遠(yuǎn)程主機(jī)文件名存儲(chǔ)設(shè)置為唯一(與runique對(duì)應(yīng))。
    65.system:顯示遠(yuǎn)程主機(jī)的操作系統(tǒng)類型。
    66.tenex:將文件傳輸類型設(shè)置為TENEX機(jī)的所需的類型。
    67.tick:設(shè)置傳輸時(shí)的字節(jié)計(jì)數(shù)器。
    68.trace:設(shè)置包跟蹤。
    69.type[type-name]:設(shè)置文件傳輸類型為type-name,缺省為ascii,如:type binary,設(shè)置二進(jìn)制傳輸方式。
    70.umask[newmask]:將遠(yuǎn)程服務(wù)器的缺省umask設(shè)置為newmask,如:umask 3。
    71.user user-name[password][account]:向遠(yuǎn)程主機(jī)表明自己的身份,需要口令時(shí),必須輸入口令,如:user anonymous my@email
    72.verbose:同命令行的-v參數(shù),即設(shè)置詳盡報(bào)告方式,ftp服務(wù)器的所有響應(yīng)都將顯示給用戶,缺省為on.
    73.?[cmd]:同help.

    posted @ 2009-06-02 15:00 A++ 閱讀(273) | 評(píng)論 (0)編輯 收藏

    2009年5月31日

    表拷貝

    要看這兩個(gè)表的字段是否一致阿,  
      如果是象插到另以個(gè)空表,還不入建一個(gè)新的,  
      create   table   newtable   as   select   *   from   oldtable;  
      有數(shù)據(jù)的話就用  
      insert   into   newtable(select   *   from   oldtable);

    posted @ 2009-05-31 18:28 A++ 閱讀(171) | 評(píng)論 (0)編輯 收藏

    2009年5月14日

    ubuntu下bin文件安裝說明

    ubuntu下bin文件的安裝:

    目前我就安裝了2個(gè)bin文件:一個(gè)是realplayer11,另一個(gè)是google earth

    以realplayer11.bin為例:

    A:將realplayer11.bin放置在主文件夾中 (位置-主文件夾)

    B:打開終端 (應(yīng)用程序-附件-終端)

    C:輸入命令: sudo chmod +x realplayer11.bin 回車

    再輸入:sudo ./realplayer11.bin 回車

    命令行完成后,打開應(yīng)用程序-影音-realplayer, 進(jìn)入圖形安裝界面,這就跟windows下一樣了。

    注:real player 11安裝成后是需要在首選項(xiàng)中對(duì)硬件進(jìn)行配置,配置下聲頻設(shè)備什么的,很簡單。

    同樣的方式安裝google earth,但是安裝完成后,直接在應(yīng)用程序中打開google earth會(huì)發(fā)現(xiàn)一個(gè)問題,怎么這個(gè)google earth里沒有地球,只有星星呢?

    是怎么回事呢?原來是權(quán)限的問題,據(jù)說可以在安裝的結(jié)尾解決這個(gè)問題,但是我沒看到,也懶的重新安裝,所以就用稍微麻煩點(diǎn)的方法吧。

    ---》從終端打開google earth 命令: sudo googleearth 然后照常摸黑輸入密碼,打開googleearth,搞定。

    posted @ 2009-05-14 09:08 A++ 閱讀(1019) | 評(píng)論 (0)編輯 收藏

    2009年5月12日

    言論

    ◎ “拆東墻補(bǔ)西墻”之升級(jí)版“拆別人墻補(bǔ)自己墻”

    ◎ 白馬啊……你死去哪了!是不是你把王子弄丟了不敢來見我了。
    ◎ 別人裝處,我只好裝經(jīng)驗(yàn)豐富。
    ◎ 不可否認(rèn),馬賽克是這個(gè)世紀(jì)阻礙人類裸體藝術(shù)進(jìn)步最大的障礙!
    ◎ 不怕小偷兒帶工具,就怕小偷兒懂科技!
    ◎ 長個(gè)包子樣就別怨狗跟著!
    ◎ 純,屬虛構(gòu);亂,是佳人。
    ◎ 當(dāng)白天又一次把黑夜按翻在床上的時(shí)候,太陽就出生了……
    ◎ 跌倒了,爬起來再哭。
    ◎ 犯賤是普遍真理,你我只是其中之一。
    ◎ 孤單是一個(gè)人的狂歡,狂歡是一群人的孤單。
    ◎ 好久沒有人把牛皮吹的這么清新脫俗了!
    ◎ 既宅又腐,前途未卜。
    ◎ 今天心情不好,我只有四句話想說,包括這句和前面的兩句,我的話說完了
    ◎ 開車無難事,只怕有新人!
    ◎ 雷鋒做了好事不留名,但是每一件事情都記到日記里面。
    ◎ 路漫漫其修遠(yuǎn)兮,不如我們打的吧。
    ◎ 驢是的念來過倒
    ◎ 每當(dāng)我錯(cuò)過一個(gè)女孩,我就在地上放一塊磚,于是便有了長城。
    ◎ 明騷易躲,暗賤難防。
    ◎ 命運(yùn)負(fù)責(zé)洗牌,但是玩牌的是我們自己!
    ◎ 某女在博客日記寫:某月某日,大醉而歸,伸手一摸,手機(jī)和貞操都在,睡覺!
    ◎ 男人膝下有黃金,我把整個(gè)腿都切下來了,連塊銅也沒找著!
    ◎ 你不能讓所有人滿意,因?yàn)椴皇撬械娜硕际侨恕?
    ◎ 你的手機(jī)比話費(fèi)還便宜。
    ◎ 你以為我會(huì)眼睜睜看著你去送死嗎?我會(huì)閉上眼睛的。
    ◎ 女人一生喜歡兩朵花:一是有錢花,二是盡量花!
    ◎ 騙子太多,傻子明顯不夠用了。
    ◎ 錢不是問題,問題是沒錢!
    ◎ 錢可以解決的問題都不是問題。
    ◎ 人家有的是背景,而我有的是背影。
    ◎ 人又不聰明,還學(xué)人家禿頂!
    ◎ 如果你容不下我,說明不是你的心胸太狹小,就是我的人格太偉大。
    ◎ 如果太陽不出來了,我就不去上班了;如果出來了,我就繼續(xù)睡覺!
    ◎ 上帝不會(huì)為難頭腦簡單的孩子。
    ◎ 失敗不可怕,關(guān)鍵看是不是成功他媽。
    ◎ 史上最神秘的部門:有關(guān)部門。
    ◎ 思想有多遠(yuǎn),你就給我滾多遠(yuǎn)!
    ◎ 雖然你身上噴了古龍水,但我還是能隱約聞到一股人渣味兒。
    ◎ 臺(tái)灣一日不收復(fù),我一日不過四級(jí)!
    ◎ 談錢不傷感情,談感情最他媽傷錢。
    ◎ 唾沫是用來數(shù)鈔票的,而不是用來講道理的。
    ◎ 參加減肥班,教練讓我穿寬松衣服,要有寬松的衣服我參加減肥班干嘛?
    ◎ 我的名字叫Rain,小名叫潤土。
    ◎ 我的人生有A 面也有B面,你的人生有S面也有B面。
    ◎ 我的優(yōu)點(diǎn)是:我很帥;但是我的缺點(diǎn)是:我?guī)浀牟幻黠@。
    ◎ 我是胖人,不是粗人。
    ◎ 我這輩子只有兩件事不會(huì):這也不會(huì),那也不會(huì)。
    ◎ 我自橫刀向天笑,笑完我就去睡覺。
    ◎ 我詛咒你一輩子買方便面沒有調(diào)料包。
    ◎ 洗臉只洗臉頰,刷牙只刷門牙
    ◎ 現(xiàn)在的大學(xué)生太沒素質(zhì)了!過來拷毛片,居然用剪切!
    ◎ 一覺醒來,天都黑了。
    ◎ 一山不能容二虎,除非一公和一母。
    ◎ 英雄不問出路,流氓不看歲數(shù)!
    ◎ 一次上街,被一群女孩攔住。她們說我?guī)浳也怀姓J(rèn),她們就打我,說我虛偽。
    ◎ 鴛鴦戲水,都他媽淹死;比翼雙飛,都他媽摔死。
    ◎ 再牛的肖邦,也彈不出老子的悲傷!
    ◎ 讓我拿什么整死你,我的愛人。
    ◎ 左青龍,右白虎,肩膀紋個(gè)米老鼠。

    posted @ 2009-05-12 11:35 A++ 閱讀(281) | 評(píng)論 (0)編輯 收藏

    新建用戶并添加到管理組

    用recovery mode模式啟動(dòng)后,進(jìn)入命令行模式,提示符應(yīng)該是 #

    1、輸入用戶管理的命令,新建用戶(以test為例):
    useradd test

    修改 test 用戶的密碼:
    passwd test

    2、將新用戶添加到管理組:
    gpasswd -a test admin

    3、給 test 用戶創(chuàng)建自己的目錄:
    cd /home

    mkdir test

    chown test /home/test

    4、重新啟動(dòng),
    reboot

    然后用 test 登錄,

    登錄以后,點(diǎn)菜單“系統(tǒng)-系統(tǒng)管理-用戶和組”,進(jìn)去選中你的用戶,點(diǎn)右邊的“屬性”按鈕,到用戶權(quán)限里打勾需要的;

    posted @ 2009-05-12 09:23 A++ 閱讀(226) | 評(píng)論 (0)編輯 收藏

    2009年3月27日

    收集MyEclipse 7.0注冊(cè)碼

    icech在網(wǎng)上查代碼,竟然找到了一個(gè)Myeclipse7.0注冊(cè)機(jī)的源代碼,真強(qiáng)!這個(gè)源代碼號(hào)稱支持Myeclipse 6.5和7.0兩個(gè)版本,java的代碼,很爽!編譯運(yùn)行后輸入想要注冊(cè)的用戶名,然后再控制臺(tái)下就會(huì)生成相應(yīng)的注冊(cè)碼!

    代碼如下:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class MyEclipseGen {
    private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";

    public String getSerial(String userId, String licenseNum) {
       java.util.Calendar cal = java.util.Calendar.getInstance();
       cal.add(1, 3);
       cal.add(6, -1);
       java.text.NumberFormat nf = new java.text.DecimalFormat("000");
       licenseNum = nf.format(Integer.valueOf(licenseNum));
       String verTime = new StringBuilder("-").append(
         new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))
         .append("0").toString();
       String type = "YE3MP-";
       String need = new StringBuilder(userId.substring(0, 1)).append(type)
         .append("300").append(licenseNum).append(verTime).toString();
       String dx = new StringBuilder(need).append(LL).append(userId)
         .toString();
       int suf = this.decode(dx);
       String code = new StringBuilder(need).append(String.valueOf(suf))
         .toString();
       return this.change(code);
    }

    private int decode(String s) {
       int i;
       char[] ac;
       int j;
       int k;
       i = 0;
       ac = s.toCharArray();
       j = 0;
       k = ac.length;
       while (j < k) {
        i = (31 * i) + ac[j];
        j++;
       }
       return Math.abs(i);
    }

    private String change(String s) {
       byte[] abyte0;
       char[] ac;
       int i;
       int k;
       int j;
       abyte0 = s.getBytes();
       ac = new char[s.length()];
       i = 0;
       k = abyte0.length;
       while (i < k) {
        j = abyte0[i];
        if ((j >= 48) && (j <= 57)) {
         j = (((j - 48) + 5) % 10) + 48;
        } else if ((j >= 65) && (j <= 90)) {
         j = (((j - 65) + 13) % 26) + 65;
        } else if ((j >= 97) && (j <= 122)) {
         j = (((j - 97) + 13) % 26) + 97;
        }
        ac[i] = (char) j;
        i++;
       }
       return String.valueOf(ac);
    }

    public MyEclipseGen() {
       super();
    }

    public static void main(String[] args) {
       try {
        System.out.println("please input register name:");
        BufferedReader reader = new BufferedReader(new InputStreamReader(
          System.in));
        String userId = null;
        userId = reader.readLine();
        MyEclipseGen myeclipsegen = new MyEclipseGen();
        String res = myeclipsegen.getSerial(userId, "5");
        System.out.println("Serial:" + res);
        reader.readLine();
       } catch (IOException ex) {
       }
    }
    }

    注意:注冊(cè)Myeclipse的時(shí)候要先斷開網(wǎng)絡(luò),否則可能注冊(cè)不成功!

    注冊(cè)方法:
    window -> preferences -> myeclipse -> subscription

    下面是一個(gè)網(wǎng)上流傳很廣的Myeclipse注冊(cè)碼,有效!

    Subscriber:MaYong
    Subscription Code:ZLR8ZO-655444-54678656985359684

    2.

    下載頁面:
    http://www.myeclipseide.com/Downloads-req-viewsdownload-sid-30.html

    下載地址:
    http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse_7.0M1_E3.4.0_Installer.exe

    主要增加了對(duì)JavaScript的一些工具,以及JSF(Java server face)的一些工具

    漢化教程:
    首先打開MyEclipse7.0
    然后選擇Help →
    Software Updates..
    然后彈出一個(gè)菜單,選擇Available Software → Add Site..
    然后會(huì)彈出一個(gè)輸入框,輸入
    http://download.eclipse.org/technology/babel/update-site/ 或者
    http://download.eclipse.org/technology/babel/update-site/ganymede/
    然后點(diǎn)擊確定,這時(shí)也許點(diǎn)該網(wǎng)址對(duì)應(yīng)的列表刷不出來,我們要點(diǎn)一下Refresh 稍等一下選擇列表里面的中文那一項(xiàng)
    選擇Eclipse language pack for Simplified chinese

    然后點(diǎn)擊Install.. → 同意協(xié)議 最后等MyEclipse自動(dòng)加載,可能加載過程有點(diǎn)慢,耐心等下,如果實(shí)在太慢了,重新選擇一次試試,等完成再關(guān)閉MyEclipse 然后啟動(dòng),MyEclipse
    就成了中文版的
    注冊(cè)碼:
    Subscriber: www.1cn.biz
    Subscription Code: jLR8ZC-655444-65526656052107345

    填寫注冊(cè)碼時(shí),最好拔掉網(wǎng)線!!!

    posted @ 2009-03-27 11:02 A++ 閱讀(1813) | 評(píng)論 (1)編輯 收藏

    2007年9月4日

    名詞解釋

    框架:一個(gè)應(yīng)用程序的半成品,中間可以共享的可復(fù)用的公共構(gòu)架。

    posted @ 2007-09-04 09:28 A++ 閱讀(162) | 評(píng)論 (0)編輯 收藏

    2007年5月30日

    刪除服務(wù)

    該服務(wù)程序安裝目錄刪除 開始》》運(yùn)行 輸入regedit 回車進(jìn)入注冊(cè)表 看下 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 有沒有 有刪除次 重啟

    posted @ 2007-05-30 10:33 A++ 閱讀(178) | 評(píng)論 (0)編輯 收藏

    2007年4月24日

    Java連接各種數(shù)據(jù)庫的實(shí)例

    Java連接各種數(shù)據(jù)庫的實(shí)例 
    來源:  網(wǎng)全天下  作者:  Zenith 
    此文中的代碼主要列出連接數(shù)據(jù)庫的關(guān)鍵代碼,其他訪問數(shù)據(jù)庫代碼省略 
     
    1、Oracle8/8i/9i數(shù)據(jù)庫(thin模式)
    Oracle(String  url="jdbc:oracle:thin:@localhost:1521:orcl";
    //orcl為數(shù)據(jù)庫的SID
    String  user="test";
    String  password="test";
    Connection  conn=  DriverManager.getConnection(url,user,password);
     
    2、DB2數(shù)據(jù)庫
    Class.forName("com.ibm.db2.jdbc.app.DB2Driver  ").newInstance();
    String  url="jdbc:db2://localhost:5000/sample";
    //sample為你的數(shù)據(jù)庫名
    String  user="admin";
    String  password="";
    Connection  conn=  DriverManager.getConnection(url,user,password);

    3、Sql? Server7.0/2000/2005數(shù)據(jù)庫
    連接SqlServer2000
    Microsoft SQLServer(
    cn = DriverManager.getConnection(
    "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );

    Microsoft SQLServer(String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
    //mydb為數(shù)據(jù)庫
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);

    連接SqlServer2005
    (
    URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
    2000和2005略有不同
     
    4、Sybase數(shù)據(jù)庫
    Sybase(
    String  url  ="  jdbc:sybase:Tds:localhost:5007/myDB";
    //myDB為你的數(shù)據(jù)庫名
    Properties  sysProps  =  System.getProperties();
    SysProps.put("user","userid");
    SysProps.put("password","user_password");
    Connection  conn=  DriverManager.getConnection(url,  SysProps);
     
    5、Informix數(shù)據(jù)庫
    Class.forName("com.informix.jdbc.IfxDriver").newInstance();
    String  url  =
    "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
    user=testuser;password=testpassword";
    //myDB為數(shù)據(jù)庫名
    Connection  conn=  DriverManager.getConnection(url);
     
    6、MySQL數(shù)據(jù)庫
    MySQL(
    String  url  ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode= 
    true&characterEncoding=8859_1"
    //myDB為數(shù)據(jù)庫名
    Connection  conn=  DriverManager.getConnection(url);
     
    7、PostgreSQL數(shù)據(jù)庫
    PostgreSQL(
    String  url  ="jdbc:postgresql://localhost/myDB"
    //myDB為數(shù)據(jù)庫名
    String  user="myuser";
    String  password="mypassword";
    Connection  conn=  DriverManager.getConnection(url,user,password);
     
    8、odbc橋接 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //裝載JDBC-ODBC驅(qū)動(dòng)程序
    strCon  =  "jdbc:odbc:Test_DB";  //設(shè)置數(shù)據(jù)庫連接字符串  ,test_DB 


     9、access數(shù)據(jù)庫直連用ODBC的
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
    String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
    Connection conn = DriverManager.getConnection(url,"","");
     Statement stmtNew=conn.createStatement() ;

    二、JDBC連接MySql方式
        下面是使用JDBC連接MySql的一個(gè)小的教程    

        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測(cè)試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測(cè)試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。


    二、JDBC連接MySql方式
        下面是使用JDBC連接MySql的一個(gè)小的教程    

        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測(cè)試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測(cè)試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。


        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測(cè)試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測(cè)試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。

     

     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=495470

    posted @ 2007-04-24 09:36 A++ 閱讀(249) | 評(píng)論 (0)編輯 收藏

    2007年4月18日

    數(shù)據(jù)庫設(shè)計(jì)范式的通俗理解(轉(zhuǎn))

    第一范式

    對(duì)于表中的每一行,必須且僅僅有唯一的行值.在一行中的每一列僅有唯一的值并且具有原子性.

    第二范式

    第二范式要求非主鍵列是主鍵的子集,非主鍵列活動(dòng)必須完全依賴整個(gè)主鍵。主鍵必須有唯一性的元素,一個(gè)主鍵可以由一個(gè)或更多的組成唯一值的列組成。一旦創(chuàng)建,主鍵無法改變,外鍵關(guān)聯(lián)一個(gè)表的主鍵。主外鍵關(guān)聯(lián)意味著一對(duì)多的關(guān)系.

    第三范式

    第三范式要求非主鍵列互不依賴.

    第四范式

    第四范式禁止主鍵列和非主鍵列一對(duì)多關(guān)系不受約束

    第五范式

    第五范式將表分割成盡可能小的塊,為了排除在表中所有的冗余

    posted @ 2007-04-18 10:36 A++ 閱讀(317) | 評(píng)論 (0)編輯 收藏

    2007年4月16日

    Hibernate和iBatis比較

    『本文轉(zhuǎn)至:http://hi.baidu.com/injava/blog/item/946b1c46c3b4a6086a63e529.html

    簡介

    Hibernate 是當(dāng)前最流行的O/R mapping框架,當(dāng)前版本是3.05。它出身于sf.net,現(xiàn)在已經(jīng)成為Jboss的一部分了    

    iBATIS 是另外一種優(yōu)秀的O/R mapping框架,當(dāng)前版本是2.0。目前屬于apache的一個(gè)子項(xiàng)目了。    

    相對(duì)HibernateO/R”而言,iBATIS 是一種“Sql Mapping”的ORM實(shí)現(xiàn)。     

    Hibernate對(duì)數(shù)據(jù)庫結(jié)構(gòu)提供了較為完整的封裝,HibernateO/R Mapping實(shí)現(xiàn)了POJO 和數(shù)據(jù)庫表之間的映射,以及SQL 的自動(dòng)生成和執(zhí)行。程序員往往只需定義好了POJO 到數(shù)據(jù)庫表的映射關(guān)系,即可通過Hibernate 提供的方法完成持久層操作。程序員甚至不需要對(duì)SQL 的熟練掌握, Hibernate/OJB 會(huì)根據(jù)制定的存儲(chǔ)邏輯,自動(dòng)生成對(duì)應(yīng)的SQL 并調(diào)用JDBC 接口加以執(zhí)行。    

    iBATIS 的著力點(diǎn),則在于POJO SQL之間的映射關(guān)系。也就是說,iBATIS并不會(huì)為程序員在運(yùn)行期自動(dòng)生成SQL 執(zhí)行。具體的SQL 需要程序員編寫,然后通過映射配置文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定POJO

    使用iBATIS 提供的ORM機(jī)制,對(duì)業(yè)務(wù)邏輯實(shí)現(xiàn)人員而言,面對(duì)的是純粹的Java對(duì)象,

    這一層與通過Hibernate 實(shí)現(xiàn)ORM 而言基本一致,而對(duì)于具體的數(shù)據(jù)操作,Hibernate會(huì)自動(dòng)生成SQL 語句,而iBATIS 則要求開發(fā)者編寫具體的SQL 語句。相對(duì)Hibernate而言,iBATIS SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。 

    二者的對(duì)比:

    1.  iBATIS非常簡單易學(xué),Hibernate相對(duì)較復(fù)雜,門檻較高。

    2.  二者都是比較優(yōu)秀的開源產(chǎn)品

    3.  當(dāng)系統(tǒng)屬于二次開發(fā),無法對(duì)數(shù)據(jù)庫結(jié)構(gòu)做到控制和修改,iBATIS的靈活性將比Hibernate更適合

    4.  系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,這往往意味著我們必須通過經(jīng)過高度優(yōu)化的SQL語句(或存儲(chǔ)過程)才能達(dá)到系統(tǒng)性能設(shè)計(jì)指標(biāo)。在這種情況下iBATIS會(huì)有更好的可控性和表現(xiàn)。

    5.  iBATIS需要手寫sql語句,也可以生成一部分,Hibernate則基本上可以自動(dòng)生成,偶爾會(huì)寫一些Hql。同樣的需求,iBATIS的工作量比Hibernate要大很多。類似的,如果涉及到數(shù)據(jù)庫字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。

    6.  以數(shù)據(jù)庫字段一一對(duì)應(yīng)映射得到的POHibernte這種對(duì)象化映射得到的PO是截然不同的,本質(zhì)區(qū)別在于這種PO是扁平化的,不像Hibernate映射的PO是可以表達(dá)立體的對(duì)象繼承,聚合等等關(guān)系的,這將會(huì)直接影響到你的整個(gè)軟件系統(tǒng)的設(shè)計(jì)思路。

    7.  Hibernate現(xiàn)在已經(jīng)是主流O/R Mapping框架,從文檔的豐富性,產(chǎn)品的完善性,版本的開發(fā)速度都要強(qiáng)于iBATIS

    8.  最關(guān)鍵的一句話是iBATIS的作者說的:

    If you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.

    If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy

    結(jié)論:

    Hibernate 和iBATIS可以說是互相補(bǔ)充,共同發(fā)展的關(guān)系.具體你想用什么要看實(shí)際情況.如果看了上面的文字還是拿不定注意,那就Just to try it.實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn).鞋合不合適,只有試了才知道。
     

    評(píng)論:

    1.Hhibernate集成度很高,更好的封裝了數(shù)據(jù)庫操作。ibatis適用于sql語法復(fù)雜的系統(tǒng),而且也適合以前用jdbc開發(fā)的人員,跨度不是很大。

    2.hibernate和ibatis基本屬于一類的啊。ibatis的LEADER:C.B說的話是:如果你的系統(tǒng)全部是從頭自主設(shè)計(jì)開發(fā)(數(shù)據(jù)庫自己設(shè)計(jì)),SQL不至于太復(fù)雜,團(tuán)隊(duì)對(duì)hibernate和面向?qū)ο笫炀?..那么用hibernate但是如果數(shù)據(jù)庫很大很復(fù)雜、是遺留系統(tǒng)甚至于設(shè)計(jì)比較糟糕(你自己不可以做大的改動(dòng)、需要重用很多遺留存儲(chǔ)過程),團(tuán)隊(duì)沒有一個(gè)hibernate牛人,團(tuán)隊(duì)只對(duì)SQL熟練那么還是推薦ibatis

    3.個(gè)人感覺iBatis強(qiáng)在復(fù)雜的查詢和存儲(chǔ)過程的使用,而Hibernate則在單表的操作上有優(yōu)勢(shì),其實(shí)也可以在dao層使用hibernate+iBatis。

    4.兩個(gè)在必要的時(shí)候才需要在一個(gè)項(xiàng)目里邊使用兩種框架。個(gè)人認(rèn)為,hibernate適合于事務(wù)性的,邏輯性較強(qiáng)的系統(tǒng),ibatis適用于查詢?yōu)橹鞯南到y(tǒng),
    如果要兩個(gè)都用,ibatis應(yīng)該作為hibernate的有益補(bǔ)充,著重解決多表連接查詢的問題。

    posted @ 2007-04-16 15:43 A++ 閱讀(864) | 評(píng)論 (0)編輯 收藏

    開源的圖表工具

    JFreeChart is a free (LGPL) chart library for the Java(tm) platform. It supports bar charts, pie charts, line charts, time series charts, scatter plots, histograms, simple Gantt charts, Pareto charts, bubble plots, dials, thermometers and more.
    JFreeChart它主要是用來制作各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。

    posted @ 2007-04-16 11:16 A++ 閱讀(234) | 評(píng)論 (0)編輯 收藏

    2007年4月12日

    window.open和window.location

    window.open是打開新窗口。
    window.location是將本頁替換了,也就是定位。

    例如:

    <input   type="button"     value="轉(zhuǎn)向"   onclick="window.open('default.htm')">

    <input   type="button"     value="轉(zhuǎn)向"    onclick="window.location='default.htm';">      

    posted @ 2007-04-12 12:07 A++ 閱讀(1045) | 評(píng)論 (1)編輯 收藏

    2007年4月7日

    js中innerHTML與innerText的用法與區(qū)別

    js中innerHTML與innerText的用法與區(qū)別
    (Javascript)
    『本文地址:http://v1.djasp.net/Static/35/1794.stm


    用法:

    <div id="test">
       <span style="color:red">test1</span> test2
    </div>

    在JS中可以使用:

    test.innerHTML:

      也就是從對(duì)象的起始位置到終止位置的全部內(nèi)容,包括Html標(biāo)簽。


      上例中的test.innerHTML的值也就是“<span style="color:red">test1</span> test2 ”。

    test.innerText:

      從起始位置到終止位置的內(nèi)容, 但它去除Html標(biāo)簽

      上例中的text.innerTest的值也就是“test1 test2”, 其中span標(biāo)簽去除了。


    test.outerHTML:

      除了包含innerHTML的全部內(nèi)容外, 還包含對(duì)象標(biāo)簽本身。

      上例中的text.outerHTML的值也就是<div id="test"><span style="color:red">test1</span> test2</div>


    完整示例:

    <div id="test">
       <span style="color:red">test1</span> test2
    </div>

    <a href="javascript:alert(test.innerHTML)">innerHTML內(nèi)容</a>
    <a href="javascript:alert(test.innerText)">inerHTML內(nèi)容</a>
    <a href="javascript:alert(test.outerHTML)">outerHTML內(nèi)容</a>

    特別說明:

      innerHTML是符合W3C標(biāo)準(zhǔn)的屬性,而innerText只適用于IE瀏覽器,因此,盡可能地去使用innerHTML,而少用innerText,如果要輸出不含HTML標(biāo)簽的內(nèi)容,可以使用innerHTML取得包含HTML標(biāo)簽的內(nèi)容后,再用正則表達(dá)式去除HTML標(biāo)簽,下面是一個(gè)簡單的符合W3C標(biāo)準(zhǔn)的示例:

    <a href="javascript:alert(document.getElementById('test').innerHTML.replace(/<.+?>/gim,''))">無HTML,符合W3C標(biāo)準(zhǔn)</a>

    posted @ 2007-04-07 22:19 A++ 閱讀(367) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題  下一頁
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    http://www.matrix.org.cn/resource/article/2005-10-16/Generic_Types_43864.html

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 妞干网免费视频在线观看| 亚洲欧洲日韩不卡| 亚洲国产精品激情在线观看| 亚洲精品国产综合久久一线| 亚洲成a人片在线观看中文动漫| 亚洲色图古典武侠| 色窝窝亚洲AV网在线观看| 在线免费视频你懂的| 无码乱肉视频免费大全合集| 免费一级毛片不卡不收费| 婷婷亚洲综合五月天小说| 亚洲伊人久久大香线蕉AV| 久久精品免费大片国产大片| 中文字幕乱码免费视频| 亚洲午夜日韩高清一区| 亚洲一级高清在线中文字幕| 又长又大又粗又硬3p免费视频| 2020因为爱你带字幕免费观看全集| 最好免费观看韩国+日本| 久久精品国产亚洲AV麻豆~| 亚洲国产精品ⅴa在线观看| 国产成人无码免费视频97| 亚洲AV本道一区二区三区四区| 亚洲精品无码av中文字幕| 日本免费在线中文字幕| 亚洲JIZZJIZZ中国少妇中文| 精品日韩99亚洲的在线发布| 成人无码视频97免费| 国产婷婷高清在线观看免费 | 国产自国产自愉自愉免费24区| 日韩一级在线播放免费观看| 亚洲天堂在线播放| 中文字幕av免费专区| 吃奶摸下高潮60分钟免费视频| 亚洲最大在线观看| 日韩精品免费视频| 国产成人亚洲精品狼色在线| 美女视频黄.免费网址| 美女黄网站人色视频免费国产| 亚洲黄色免费网站| 日韩精品免费视频|