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

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

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

    yanmin

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 1 文章 :: 9 評(píng)論 :: 0 Trackbacks

    2005年12月26日 #

         摘要:   閱讀全文
    posted @ 2012-07-12 16:48 yanmin 閱讀(862) | 評(píng)論 (0)編輯 收藏

    最近做一個(gè)項(xiàng)目,里面很多特殊字符,引發(fā)了一些問(wèn)題,解決后很開(kāi)心,特別來(lái)分享。
    特殊字符:
    Jörg Ranau
    Sigut? Jakštonyt?
    Côte d'Ivoire

    數(shù)據(jù)庫(kù)手工導(dǎo)入數(shù)據(jù)

    1 先檢查數(shù)據(jù)庫(kù)的字符集和客戶端字符集是否一致。 采用的是UTF8
    查看語(yǔ)句:
    select * from nls_database_parameters

    2 若是采用DOS 下的SQLPLUS 導(dǎo)入數(shù)據(jù),需要set NLS_LANG=AMERICAN_AMERICA.UTF8
    windows:    set NLS_LANG=AMERICAN_AMERICA.UTF8
    unix:    NLS_LANG=AMERICAN_AMERICA.UTF8

    3:   檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM, 
    可以用NOTEPAD++, CONVER TO UTF8 without BOM
    也可以用txt , 轉(zhuǎn)換成UTF8.

    第3點(diǎn)非常重要,之前忽略了,發(fā)現(xiàn)插入導(dǎo)入數(shù)據(jù)庫(kù)后,數(shù)據(jù)顯示不對(duì)。

    驗(yàn)證你導(dǎo)入的數(shù)據(jù)是否正確可以用ORACLE DUMP 命令。
    select dump(country_desc),country_desc  from tb_test  where testcode='1';
    Typ=1 Len=14: 67,195,180,116,101,32,100,39,73,118,111,105,114,101        Côte d'Ivoire


    數(shù)據(jù)庫(kù)腳本中遇到特殊字符:
    1:  單引號(hào)‘ , oracle 腳本需要寫(xiě)成 兩個(gè)單引號(hào)
    UPDATE pi_portal_nday SET ND_CTY='Côte d'‘Ivoire' WHERE ND_ID IN (152,162);

    2: 特殊字符&, oracle 表示需要的參數(shù), 若是數(shù)據(jù)中有這個(gè)有2個(gè)方法:
    第1 種: set define off;

    第2種:
    set escape on;
    然后將所有的&, 替換成/&。

    3: 空行
    用<br> 代替。


    JAVA 代碼導(dǎo)入數(shù)據(jù):

    要導(dǎo)入的數(shù)據(jù)都放在TXT 類型的文件里,通過(guò)batch job 導(dǎo)入數(shù)據(jù)庫(kù)。 
    檢查導(dǎo)入的數(shù)據(jù)的文件格式,格式采用: UTF8 without BOM, 
    可以用NOTEPAD++, CONVER TO UTF8 without BOM

    java 代碼:
    1 讀文件的時(shí)候采用 UTF8格式。

    InputStreamReader read = new InputStreamReader (new FileInputStream(file),"UTF-8");
    BufferedReader inBuf=new BufferedReader(read); 

    2 檢查所用開(kāi)發(fā)工具的文件ENCODING 字符。
    這個(gè)就是會(huì)為什么導(dǎo)致沒(méi)發(fā)現(xiàn) 讀文件錯(cuò)誤,在開(kāi)發(fā)工具中打出的LOG 欺騙了我們的眼睛。

    我的開(kāi)發(fā)工具BEA JAVA 文件默認(rèn)ENCODING cp1252, 改成UTF8 就好了。這個(gè)特別容易忽略,當(dāng)在控制臺(tái)看LOG的時(shí)候,發(fā)現(xiàn)讀過(guò)來(lái)的文件里的內(nèi)容打出來(lái)都正確,就忽略了JAVA的源文件。認(rèn)為是從unicode轉(zhuǎn)換 utf8 有問(wèn)題,特別將字符又做了處理,發(fā)現(xiàn)插入數(shù)據(jù)庫(kù)還是不正確。 修改了ENCODING 字符字符后發(fā)現(xiàn)讀入文件就不對(duì)了。這樣輕松就解決了。 所以只要修改了讀文件的時(shí)候采用 UTF8格式就可以啦。


    JAVA 代碼中直接賦值的或是頁(yè)面錄入的。
    1: 頁(yè)面的就很簡(jiǎn)單了,JSP 或是HTML ,里面加入字符是UTF8的就OK
    2: 代碼里面的,需要轉(zhuǎn)換:
    byte[] byteArr1 = columnValueBe.getBytes("UTF-8");
    columnValue = new String(byteArr1, "UTF-8");













    posted @ 2011-05-20 18:29 yanmin 閱讀(1991) | 評(píng)論 (1)編輯 收藏

         用了這么多年計(jì)算機(jī), 發(fā)現(xiàn)很多計(jì)算機(jī)的快捷命令都不知道, 汗啊,  從網(wǎng)上搜尋下一些,COPY 在這是沒(méi)用的,打下來(lái)用的時(shí)候就看:

    這些命令都是從開(kāi)始——運(yùn)行處進(jìn)行的(windows鍵+R)

           'cmd'     這個(gè)命令是調(diào)用類似dos的命令窗口的命令,在這里你可以像操作DOS一樣操作Windows.

           'inetmgr'   這個(gè)命令相信做過(guò)網(wǎng)站的都知道,對(duì)了這就是調(diào)用IIS的快捷命令。

           'mstsc'     這個(gè)是用來(lái)啟動(dòng)遠(yuǎn)程桌面連接的快捷命令,相信搞過(guò)網(wǎng)絡(luò)的人對(duì)此不會(huì)陌生。

           'regedit'   這個(gè)命令大家都很熟悉,是用來(lái)調(diào)用注冊(cè)表的。

           'appwiz.cpl'     進(jìn)入添加和刪除程序的快捷命令

           'control userpasswords2'         進(jìn)入用戶賬戶設(shè)置界面的命令

           'cleanmgr'                       磁盤(pán)垃圾清理快捷命令

          'command.com'               調(diào)用的則是系統(tǒng)內(nèi)置的 NTVDM,一個(gè) DOS虛擬機(jī)。它完全是一個(gè)類似 Virtual PC 的 虛擬環(huán)

    境,和系統(tǒng)本身聯(lián)系不大。當(dāng)我們?cè)诿钐崾痉逻\(yùn)行 DOS 程序時(shí),實(shí)際上也 是自動(dòng)轉(zhuǎn)移到 NTVDM虛擬機(jī)下,和 CMD

    本身沒(méi)什么關(guān)系。

          'calc'           啟動(dòng)計(jì)算器

          'chkdsk.exe'                 磁盤(pán)檢查

          'compmgmt.msc'           計(jì)算機(jī)管理

          'devmgmt.msc'               設(shè)備管理器

          diskmgmt.msc              磁盤(pán)管理實(shí)用程序

          'dfrg.msc '                      磁盤(pán)碎片整理程序

          'drwtsn32'             系統(tǒng)醫(yī)生

          'dvdplay'                Windows Media Player

          'explorer'               資源管理器

          'dxdiag'                   DirectX Diagnostic Tool

          'gpedit.msc'           組策略編輯器

          'gpupdate /target:computer /force'              強(qiáng)制刷新組策略

          'eventvwr.exe'                       事件查看器

          'logoff'                    注銷命令

          'lusrmgr.msc'            本地用戶和組   

          'msinfo32'                   系統(tǒng)信息

          'msconfig'                   系統(tǒng)配置實(shí)用程序

          'net start (servicename)'        啟動(dòng)該服務(wù)

          'net stop (servicename)'停止該服務(wù)

          'notepad'           記事本

         'nusrmgr.cpl'       同control userpasswords,打開(kāi)用戶帳戶控制面板

         'Nslookup'           IP地址偵測(cè)器

         'oobe/msoobe /a'             檢查XP是否激活

         'perfmon'                計(jì)算機(jī)性能監(jiān)視器

         'regedit'                   系統(tǒng)注冊(cè)表

         'regedt32'                 注冊(cè)表編輯器

         'regsvr32 /u *.dll'      停止dll文件運(yùn)行

         'route print'             查看路由表

         'rononce -p'             15秒快速關(guān)機(jī)

         'rsop.msc'               組策略結(jié)果集

         'rundll32.exe rundll32.exe %Systemroot%\System32\shimgvw.dll,ImageView_Fullscreen'    啟動(dòng)一個(gè)空白的Windows 圖

    片和傳真查看器

         ' secpol.msc'             本地安全策略

         'services.msc'            本地服務(wù)設(shè)置

         'sfc /scannow'          啟動(dòng)系統(tǒng)文件檢查器

         'sndrec32'               錄音機(jī)

         'taskmgr'                 任務(wù)管理器

         'tsshutdn'               60秒倒記時(shí)關(guān)機(jī)命令

         'winchat'                  winxp自帶局域網(wǎng)聊天

         'winmsd'                  系統(tǒng)信息

         'winver'                  顯示About Windows 窗口

         'wupdmgr'                 update

         'firewall.cpl'             防火墻

         'magnify'                  放大鏡

         'sysdm.cpl'               系統(tǒng)屬性

         'sysdm.cpl'               windows系統(tǒng)安全工具

         'write'                     寫(xiě)字板

         'tourstart'                Windows XP 漫游

         'utilman'                   輔助工具管理器

        'spider'                     蜘蛛牌游戲

        'sysedit'                   系統(tǒng)配置編輯器

        系統(tǒng)文件檢查工具(立即掃描) sfc /scannow

       系統(tǒng)文件檢查工具(下次啟動(dòng)時(shí)掃描) sfc /scanonce

       系統(tǒng)文件檢查工具(每次啟動(dòng)時(shí)掃描) sfc /scanboot

       系統(tǒng)文件檢查工具(返回默認(rèn)設(shè)置) sfc /revert

       系統(tǒng)文件檢查工具(清除文件緩存) sfc /purgecache

       系統(tǒng)文件檢查工具(設(shè)置緩存大小=x) sfc /cachesize=x

       'cliconfg'                SQL Client客戶端網(wǎng)絡(luò)實(shí)用工具

       'mmsys.cpl'             聲音和音頻設(shè)備屬性       

      'shutdown'               關(guān)閉windows

      'fsmgmt.msc'           共享文件夾

       'wscui.cpl'              Windows安全中心

       'control schedtasks'       任務(wù)計(jì)劃

       'sticpl.cpl'               掃描儀與相機(jī)

        'ntmsmgr.msc'         可移動(dòng)存儲(chǔ)

        'intl.cpl'             區(qū)域的語(yǔ)言選擇

        'eudcedit'          TrueType造字程序

        'control printers'    打印機(jī)和傳真

       'powercfg.cpl'          電源選項(xiàng)屬性

       'telephon.cpl'      電話與調(diào)制解調(diào)器選項(xiàng)

        'osk'           屏幕鍵盤(pán)

        'odbccp32.cpl'           ODBC數(shù)據(jù)源管理器

        'packager'              對(duì)象包裝程序

        'ncpa.cpl' /'control netconnections'            網(wǎng)絡(luò)連接

        'netsetup.cpl'        網(wǎng)絡(luò)連接向?qū)?

        'main.cpl' /'control mouse'         鼠標(biāo)屬性

        'winmine'                 掃雷游戲

        'secpol.msc'            本地安全設(shè)置

        'control keyboard'         鍵盤(pán)屬性

       IP配置實(shí)用程序(顯示連接配置) ipconfig /all
      IP配置實(shí)用程序(顯示DNS緩存內(nèi)容) ipconfig /displaydns
      IP配置實(shí)用程序(刪除DNS緩存內(nèi)容) ipconfig /flushdns
      IP配置實(shí)用程序(釋放全部(或指定)適配器的由DHCP分配的動(dòng)態(tài)IP地址) ipconfig /release
      IP配置實(shí)用程序(為全部適配器重新分配IP地址) ipconfig /renew
      IP配置實(shí)用程序(刷新DHCP并重新注冊(cè)DNS) ipconfig /registerdns
      IP配置實(shí)用程序(顯示DHCP Class ID) ipconfig /showclassid
      IP配置實(shí)用程序(修改DHCP Class ID) ipconfig /setclassid

      'inetcpl.cpl'                internet屬性

       'ciadv.msc'                  索引服務(wù)

      'winver'                      檢查windows版本號(hào)

      'mplayer2'                  簡(jiǎn)易widnows media player

       'mspaint'                     畫(huà)圖板

       'mem.exe'                顯示內(nèi)存使用狀況

       'compmgmt.msc'               計(jì)算機(jī)管理

       'wmimgmt.msc'                   打開(kāi)windows管理體系結(jié)構(gòu)(WMI)

       'ntbackup'                          系統(tǒng)備份與還原

      'narrator'                         屏幕“講述人”

      'netstat  -an'                   (TC)命令檢查接口

      'syncapp'                     創(chuàng)建一個(gè)公文包

       'sigverif'                       文件簽名驗(yàn)證程序

        'certmgr.msc'               證書(shū)管理實(shí)用程序

       'iexpress'                     木馬捆綁工具,系統(tǒng)自帶

        'access.cpl'                   輔助功能選項(xiàng)

        'fsquirt'                  Bluetooth文件傳送向?qū)?/p>

        'dcomcnfg'                     組件服務(wù)

         'timedate.cpl'                 日期時(shí)間屬性

         'ddeshare'                         DDE共享

         'control desktop'             顯示屬性

         'desk.cpl'                        顯示屬性

         'control.cpl'                  顯示屬性的外觀選項(xiàng)卡

         'sigverif'                     文件簽名驗(yàn)證 

        快速查找 findfast.cpl

       文件夾選項(xiàng) control folders

       字體文件夾 control fonts

       字體文件夾 fonts

        'freecell'         空檔接龍游戲 

        'joy.cpl'              游戲控制 

    posted @ 2008-01-03 10:00 yanmin 閱讀(248) | 評(píng)論 (1)編輯 收藏

         toad 中的中文顯示“靠”

    本來(lái)就超級(jí)忙,被迫重裝了系統(tǒng),重新建了庫(kù),一切都OK的時(shí)候,發(fā)現(xiàn)用TOAD連接ORACLE 數(shù)據(jù)庫(kù),里面的中文字都顯示“靠”, 第一個(gè)反映,遭了,數(shù)據(jù)庫(kù)文字設(shè)置不對(duì),要是數(shù)據(jù)庫(kù)重裝,那又要浪費(fèi)2天??!

    幸好,用其他機(jī)器的TOAD,中文字顯示正確; 明白了是自己新裝的操作系統(tǒng)的原因。 網(wǎng)上查到解決辦法, 解決了,心又落回來(lái)了!!

        在環(huán)境變量中設(shè)置系統(tǒng)環(huán)境變量:

       NLS_lANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    posted @ 2007-10-29 11:45 yanmin 閱讀(739) | 評(píng)論 (1)編輯 收藏

    最近狂多的面試,發(fā)現(xiàn)自己的基礎(chǔ)知識(shí)和理論都弱了很多,為了不誤人子弟,開(kāi)始惡補(bǔ):

    一.Enterprise Beans
      在EJB(Enterprise Java Beans)中定義了兩種不同類別的Enterprise Bean :
      *會(huì)話 Bean (Session Bean)
      *實(shí)體Bean (Entity Bean)
      
      1. 會(huì)話 Bean (Session Bean)
      會(huì)話 Bean 是調(diào)用它的客戶端代碼要完成的工作。當(dāng)客戶端與服務(wù)器建立聯(lián)系,那么一個(gè)會(huì)話 Bean 就建立起來(lái)了。根據(jù)會(huì)話 Bean 的狀態(tài)不同有分為:
      A. 狀態(tài)會(huì)話 Bean (Stateful Session Bean)
      B. 無(wú)狀態(tài)會(huì)話 Bean (Stateless Session Bean)
      1.1 狀態(tài)會(huì)話 Bean (Stateful Session Bean)
      當(dāng)客戶機(jī)和服務(wù)器建立連接之后,狀態(tài)會(huì)話 Bean (Stateful Session Bean) 將一直在客戶機(jī)和服務(wù)器之間保持著用戶的某個(gè)狀態(tài)。例如:用戶使用銀行的ATM時(shí),經(jīng)過(guò)驗(yàn)證之后,用戶可以連續(xù)執(zhí)行多次操作,在這個(gè)過(guò)程當(dāng)中,用戶的合法狀態(tài)將一直被保留,直到她將信用卡取出,結(jié)束這次操作。這時(shí),狀態(tài)會(huì)話 Bean (Stateful Session Bean) 也就被銷毀。
      1.2無(wú)狀態(tài)會(huì)話 Bean (Stateless Session Bean)
      當(dāng)客戶機(jī)和服務(wù)器建立連接之后,無(wú)狀態(tài)會(huì)話 Bean (Stateless Session Bean)處理單一的用戶請(qǐng)求或商務(wù)過(guò)程。無(wú)狀態(tài)會(huì)話 Bean (Stateless Session Bean)不需要從以前的請(qǐng)求中提取任何狀態(tài)。例如,用戶的用戶密碼確認(rèn)。用戶輸入密碼后,發(fā)送請(qǐng)求。組件返回真或假來(lái)確認(rèn)用戶,一旦過(guò)程完成,無(wú)狀態(tài)會(huì)話 Bean (Stateless Session Bean) 也宣告結(jié)束。
      2. 實(shí)體Bean (Entity Bean)
      實(shí)體Bean (Entity Bean)只是數(shù)據(jù)模型,它不包括商務(wù)邏輯。實(shí)體Bean (Entity Bean)可以將關(guān)系/對(duì)象數(shù)據(jù)庫(kù)的數(shù)據(jù)映射到內(nèi)存中供其它組件使用。實(shí)體Bean (Entity Bean)是一直存在的,而且具有很高的容錯(cuò)性能。實(shí)體Bean (Entity Bean)能供允許多用戶同時(shí)訪問(wèn)。
      
      二. 會(huì)話 Bean (Session Bean)
      Ejb的執(zhí)行過(guò)程是被放在一個(gè)EJB容器中進(jìn)行的,所以客戶端不會(huì)直接調(diào)用我們寫(xiě)好的Enterprise Bean ,而是調(diào)用EJB容器生成的一個(gè)EJBObject (EJB對(duì)象)來(lái)實(shí)現(xiàn)。那么,我們?cè)诰帉?xiě)服務(wù)器端的Enterprise Bean 時(shí),就要考慮這點(diǎn)。既然客戶端不能直接訪問(wèn),就由EJBObject來(lái)代勞,所以在編寫(xiě)服務(wù)器端時(shí),就要編寫(xiě)服務(wù)器端的一個(gè)接口(Remote)用來(lái)與客戶機(jī)聯(lián)系,實(shí)力化EJBObject。要生成EJBObject 就要調(diào)有Home 接口,來(lái)建立這個(gè)實(shí)力。
      
      以下是會(huì)話 Bean 的代碼分析:
      A.Enterprise Bean 類:sailorsy.class
      1.setSessionContext(SessionContext ctx)方法
      它是EJB容器和Enterprise Bean互相作用的關(guān)口。
      
      import java.rmi.*;
      import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      public voic setSessionContext(SessionContext ctx)//setSessionContext
      }//class sailorsy
      
      2.ejbCreate(…)方法
      它可以初始化Enterprise Bean ,可以定義不同的ejbCreate(…)方法,每個(gè)方法所帶的參數(shù)不同。但是,必許要存在至少一種。
      
       import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      public voic setSessionContext(SessionContext ctx)//setSessionContext
          public void ejbCreate() //ejbCreate
      }//class sailorsy
      
      3.ejbPassivate()方法
      如果初始化的Enterprise Bean 過(guò)多,EJB容器將其中的一些掛起(passivate),釋放他們所占用的空間。
      
       import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      
      public voic setSessionContext(SessionContext ctx)//setSessionContext
      
          public void ejbCreate() //ejbCreate
          public void ejbPassivate() //ejbPassivate
      
      }//class sailorsy
      
      4.ejbActivate()方法
      和ejbPassivate正好相反,它將被掛起的Bean從新調(diào)回。
      
      import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      
      public voic setSessionContext(SessionContext ctx)//setSessionContext
      
          public void ejbCreate() //ejbCreate
          public void ejbPassivate() //ejbPassivate
          
          public void ejbActivate() //ejbActivate
      
      }//class sailorsy
      
      5.ejbRemove()方法
      它可以清除EJB容器中的Bean。
      
       import java.rmi.*;
       import javax.ejb.*;
      public class sailorsy implements SessionBean{
      private SessionContext ctx=null;
      
      public voic setSessionContext(SessionContext ctx)//setSessionContext
      
          public void ejbCreate() //ejbCreate
      
          public void ejbPassivate() //ejbPassivate
          
          public void ejbActivate() //ejbActivate
      
          public void ejbRemove() //ejbRemove
         
           public String showname(){
           return "Hello,my name is sailorsy";
          }//自己的商務(wù)方法
      }//class sailorsy
      
      以上這些是EJB必需的回調(diào)方法,我們可以在里面加入自己的方法,加入自己的商務(wù)邏輯。
      B.Home 接口: sailorsyHome
      
        import java.rmi.*;
      import javax.ejb.*;
      
      public interface sailorsyHome extends EJBHome {
       public sailorsyRemote create() throws RemoteException, CreateException;
      }
      
      C. Remote接口:sailorsyRemote
      import java.rmi.*;
      import javax.ejb.*;
      
      public interface sailorsyRemote extends EJBObject {
       public java.lang.String showname() throws RemoteException;
      }
      
      三.調(diào)用會(huì)話 Bean:sailorsyTestClient1
       [code]    import javax.naming.*;
      import javax.ejb.*;
      import javax.rmi.PortableRemoteObject;
      import java.rmi.*;
      
      public class sailorsyTestClient1 {
       private sailorsyHome sailorsyHomeObject = null;
      
       //Construct the EJB test client
       public sailorsyTestClient1() {
        try {
         //以下是客戶端使用JNDI定位Home對(duì)象。
         Context ctx = new InitialContext();
      
         //look up jndi name
         Object ref = ctx.lookup("sailorsy");
      
         //cast to Home interface
         sailorsyHomeObject = (sailorsyHome) PortableRemoteObject.narrow(ref, sailorsyHome.class);
      
        }
        catch(Exception e)
       }
      
       //----------------------------------------------------------------------------
       // Utility Methods
       //----------------------------------------------------------------------------
      
       public sailorsyHome getHome() {
        return sailorsyHomeObject;
       }
       //Main method
      
       public static void main(String[] args) throws Exception{
        sailorsyTestClient1 client = new sailorsyTestClient1();
        sailorsyRemote sr=client.getHome() .create()
        String s=sr.showname()
        System.out.print(s);
        // Use the getHome() method of the client object to call Home interface
        // methods that will return a Remote interface reference. Then
        // use that Remote interface reference to access the EJB.
       }
      }[/code]
      
      以上的EJB在win2000+jbuilder5/jbuilder6+BAS4.5經(jīng)過(guò)測(cè)試。
      
      以下是整個(gè)EJB的執(zhí)行過(guò)程:
      1. 客戶端通過(guò)JNDI檢索Home對(duì)象的引用;
      2. JNDI返回Home對(duì)象的引用;
      3. 請(qǐng)求創(chuàng)建一個(gè)新的EJB對(duì)象;
      4. 創(chuàng)建EJB對(duì)象;
      5. 返回EJB對(duì)象;
      6. 調(diào)用商務(wù)方法;
      7. 調(diào)用Enterprise Bean.
    posted @ 2007-10-19 15:57 yanmin| 編輯 收藏

    實(shí)現(xiàn)java1.4中的split()函數(shù)功能的代碼- -

    ??????????????????????????????????????

    split()函數(shù)是分隔字符串的函數(shù),在JDK1.4以后才有的.

    在以前的版本里要用這個(gè)函數(shù)時(shí),需要自己去寫(xiě).

    lotus r6中的JDK是1.3的,寫(xiě)JAVA代理時(shí)也需要自己寫(xiě)這個(gè)函數(shù)


    import java.util.*;
    public class test
    {
    ? public static void main(String args[])
    ??? {
    ????? Vector v = new Vector();
    ????? test t = new test();
    ????? v = t.splitString("b","aaabccccbddddbeeeeee");
    ????? System.out.println(v.size());
    ????? for (int i = 0;i<v.size();i++)
    ????? {
    ????? ?System.out.println(v.get(i));
    ????? ?}
    ??? ?}
    ??? ?
    ??? ?
    ?? public Vector splitString(String sign, String sourceString)
    ?? {
    ??????? Vector splitArrays = new Vector();
    ??????? int i = 0;
    ??????? int j = 0;
    ??????? if (sourceString.length()==0) {return splitArrays;}
    ??????? while (i <= sourceString.length()) {
    ?????????????? j = sourceString.indexOf(sign, i);
    ?????????????? if (j < 0) {j = sourceString.length();}
    ?????????????? splitArrays.addElement(sourceString.substring(i, j));
    ?????????????? i = j + 1;
    ??????? }
    ??????? return splitArrays;
    ? }
    ?
    }
    posted @ 2006-09-23 17:15 yanmin| 編輯 收藏

    <bean:define id="oe" name="<%=org.apache.struts.taglib.html.Constants.BEAN_KEY%>"/>
    ???? <td class='ssCell' width="6.8%" align="center">
    ???? ?<%
    ???String mrnString = "";
    ???com.phs.ihis.pm.PatientBarInfoModel pbInfoModel = (com.phs.ihis.pm.PatientBarInfoModel)oe;?
    ???if (pbInfoModel.getMrnString() != null && !"".equals(pbInfoModel.getMrnString())){
    ????mrnString = pbInfoModel.getMrnString()+"*";?
    ???}else{
    ????if (pbInfoModel.getPatientNo() != null && !"".equals(pbInfoModel.getPatientNo())){
    ?????mrnString = pbInfoModel.getPatientNo();
    ????}
    ???}?
    ??? ?%>
    ??? ?<a href="javascript: clickPick(
    ??? ???'<%=pbInfoModel.getKey()%>')">
    ??? ???<%=mrnString%>
    ??? ?</a>
    ??? </td>
    posted @ 2006-09-15 10:08 yanmin| 編輯 收藏

    ?myCheckBoxArray.value !=undefined
    posted @ 2006-09-06 19:56 yanmin 閱讀(403) | 評(píng)論 (0)編輯 收藏


    這段是放在bodyonload ();剛才做的action :
    document.OTNotesForm.action = contextPath + "/ot/SearchCareproviderOTNotesAction.do?setter="+setter+"&"+type+"="+ParamEncode(value)+"&CareProviderType="+ParamEncode(careproviderType);

    在JSP上的JAVA巧調(diào)用javascript 方法
    用的: out.println("javascript 方法(參數(shù)1,參數(shù)2);");
    ??



    <%
    ??if(request.getAttribute("PopupCareProviderSearch") != null){
    ???String setter = request.getParameter("setter");
    ???String careProviderCode = request.getParameter("CareProviderCode");
    ???String careProviderName = request.getParameter("CareProviderName");
    ???String careProviderType = request.getParameter("CareProviderType");
    ???careProviderCode = careProviderCode == null? "": careProviderCode;
    ???careProviderName = careProviderName == null? "": careProviderName;
    ???out.println("popupCareProvider('"+setter+"','"+careProviderCode+"','"+careProviderName+"','"+careProviderType+"',true);");
    ??}
    ??if(request.getAttribute("RefreshPatientBar") != null){
    ???out.println("top.refreshPatientBar();");
    ??}??
    ??if(request.getAttribute("PopupOrderItemSearch") != null){
    ???String setter = request.getParameter("setter");
    ???String itemCode = request.getParameter("searchCode");
    ???String itemName = request.getParameter("searchDesc");
    ???itemCode = itemCode == null? "": itemCode;
    ???itemName = itemName == null? "": itemName;
    ???out.println("popupOrderItemSearch('"+setter+"','"+itemCode+"','"+itemName+"',true);");
    ??}
    ??String y = request.getParameter("y");
    ??if(y != null){
    ???out.println("document.body.scrollTop="+y+";");
    ??}??
    ?%>
    posted @ 2006-09-06 19:45 yanmin 閱讀(1900) | 評(píng)論 (1)編輯 收藏

    get :? userId
    byte[] userId = (byte[])session.getUserMstrPK().getPrimaryKey();
    posted @ 2006-09-01 17:15 yanmin 閱讀(182) | 評(píng)論 (0)編輯 收藏

    // 焦點(diǎn)
    window.CommonPatPersonSearchFrame.document.CommonPatPersonSearchForm.txtSearchCode.focus();
    posted @ 2006-09-01 17:14 yanmin 閱讀(467) | 評(píng)論 (1)編輯 收藏

    function AddItem(setter,dropdownValue){
    ??// obtain the dropdownlist control
    ??var ct1 = null;
    ??if (setter == "OperateDoctor1"){
    ???ctl = document.OTRequestForm.ddOperateDoctor1Subspecialty;
    ??}
    ??if (setter == "OperateDoctor2"){
    ???ctl = document.OTRequestForm.ddOperateDoctor2Subspecialty;
    ??}
    ??if (setter == "RequestDoctor"){
    ???ctl = document.OTRequestForm.ddRequestDoctorSubspecialty;
    ??}
    ??if (ctl != null){
    ???clearDropdown(ctl);
    ??}
    ??// get the text and value
    ??var subSpecInfo =? dropdownValue.split("&&");
    ??for (i=0; i<subSpecInfo.length; i++){
    ???// create a new option
    ???var newOpt = document.createElement("option");
    ???var subSpec = subSpecInfo[i].split("|");
    ???newOpt.text = subSpec[1];
    ???newOpt.value = subSpec[0];
    ???ctl.add(newOpt);
    ??}
    ???
    }
    posted @ 2006-09-01 17:11 yanmin 閱讀(535) | 評(píng)論 (0)編輯 收藏

    得到CVS里所有文件清單

    用WINCVS 不能得到所有CVS里的文件清單,以EXCEL形式。

    現(xiàn)介紹用這個(gè)方法:

    1: check out? 最新CVS所有文件。
    2: 用批處理刪除其中的CVS目錄和一些無(wú)用的class 文件和其他一些文件。
    3: 用ultraEdit 軟件, 多文件查找,只填寫(xiě)目錄和選中搜索子目錄,和保存到新文件。


    此批處理文件用來(lái)參數(shù)CVS目錄和一些有標(biāo)志的文件或目錄

    @echo On
    @Rem 刪除CVS版本控制目錄

    @REM 刪除所有有規(guī)律的目錄
    @for /r . %%a in (.) do @if exist "%%a\CVS" rd /s /q "%%a\CVS"

    @REM 刪除所有有規(guī)律的文件
    @for /r . %%a in (.) do @if exist "%%a\EJS*.*" del /f /s /q "%%a\EJS*.*"

    @for /r . %%a in (.) do @if exist "%%a\_*.*" del /f /s /q "%%a\_*.*"

    @Rem for /r . %%a in (.) do @if exist "%%a\CVS" @echo "%%a\CVS"

    @echo Mission Completed.
    @pause

    posted @ 2006-09-01 17:09 yanmin 閱讀(353) | 評(píng)論 (0)編輯 收藏

    進(jìn)入首頁(yè)立刻會(huì)彈出一個(gè)窗口,或者按一個(gè)連接或按鈕彈出,通常在這個(gè)窗口里會(huì)顯示一些注意事項(xiàng)、版權(quán)信息 、警告、歡迎光顧之類的話或者作者想要特別提示的信息。只要往該頁(yè)面的HTML里加入幾段Javascript代碼即可實(shí)現(xiàn).

    ????? window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,
    ????? left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o,
    ????? status=no') //這句要寫(xiě)成一行


    參數(shù)解釋:
      
      <SCRIPT LANGUAGE="javascript"> js腳本開(kāi)始;
      window.open 彈出新窗口的命令;
      'page.html' 彈出窗口的文件名;
      'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
      height=100 窗口高度;
      width=400 窗口寬度;
      top=0 窗口距離屏幕上方的象素值;
      left=0 窗口距離屏幕左側(cè)的象素值;
      toolbar=no 是否顯示工具欄,yes為顯示;
      menubar,scrollbars 表示菜單欄和滾動(dòng)欄。
      resizable=no 是否允許改變窗口大小,yes為允許;
      location=no 是否顯示地址欄,yes為允許;
      status=no 是否顯示狀態(tài)欄內(nèi)的信息(通常是文件已經(jīng)打開(kāi)),yes為允許;
      </SCRIPT> js腳本結(jié)束


    【1、最基本的彈出窗口代碼】
    ?????   
    ?????   <SCRIPT LANGUAGE="javascript">
    ?????   <!--
    ?????   window.open ('page.html')
    ?????   -->
    ?????   </SCRIPT>
    ?????   
    ?????   因?yàn)橹且欢蝚avascripts代碼,所以它們應(yīng)該放在<SCRIPT
    ????? LANGUAGE="javascript">標(biāo)簽和</script>之間。<!-- 和
    ????? -->是對(duì)一些版本低的瀏覽器起作用,在這些老瀏覽器中不會(huì)將標(biāo)簽中的代碼作為文本顯示出來(lái)。要養(yǎng)成這個(gè)好習(xí)慣啊。window.open
    ????? ('page.html')
    ????? 用于控制彈出新的窗口page.html,如果page.html不與主窗口在同一路徑下,前面應(yīng)寫(xiě)明路徑,絕對(duì)路徑(http://)和相對(duì)路徑(../)均可。用單引號(hào)和雙引號(hào)都可以,只是不要混用。這一段代碼可以加入HTML的任意位置,<head>和</head>之間可以,<body>間</body>也可以,越前越早執(zhí)行,尤其是頁(yè)面代碼長(zhǎng),又想使頁(yè)面早點(diǎn)彈出就盡量往前放。
    ?????  
    ?????   【2、經(jīng)過(guò)設(shè)置后的彈出窗口】
    ?????   
    ?????   下面再說(shuō)一說(shuō)彈出窗口的設(shè)置。只要再往上面的代碼中加一點(diǎn)東西就可以了。
    我們來(lái)定制這個(gè)彈出的窗口的外觀,尺寸大小,彈出的位置以適應(yīng)該頁(yè)面的具體情況。
    ?????   
    ?????   <SCRIPT LANGUAGE="javascript">
    ?????   <!--
    ?????   window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,
    ????? left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o,
    ????? status=no') //這句要寫(xiě)成一行
    ?????   -->
    ?????   </SCRIPT>
    ?????   ?????   
    ?????   【3、用函數(shù)控制彈出窗口】
    ?????   
    ?????   下面是一個(gè)完整的代碼。
    ?????   <html>
    ?????   <head>
    ?????   <script LANGUAGE="JavaScript">
    ?????   <!--
    ?????   function openwin() {
    ?????   window.open ("page.html", "newwindow", "height=100, width=400, toolbar
    ????? =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
    ????? //寫(xiě)成一行
    ?????   }
    ?????   //-->
    ?????   </script>
    ?????   </head>
    ?????   <body onload="openwin()">
    ?????   任意的頁(yè)面內(nèi)容...
    ?????   </body>
    ?????   </html>
    ?????   這里定義了一個(gè)函數(shù)openwin(),函數(shù)內(nèi)容就是打開(kāi)一個(gè)窗口。在調(diào)用它之前沒(méi)有任何用途。怎么調(diào)用呢?

    ?????   方法一:<body onload="openwin()"> 瀏覽器讀頁(yè)面時(shí)彈出窗口;
    ?????   方法二:<body onunload="openwin()"> 瀏覽器離開(kāi)頁(yè)面時(shí)彈出窗口;
    ?????   方法三:用一個(gè)連接調(diào)用:
    ?????   <a href="#" onclick="openwin()">打開(kāi)一個(gè)窗口</a>
    ?????   注意:使用的“#”是虛連接。
    ?????   方法四:用一個(gè)按鈕調(diào)用:
    ?????   <input type="button" onclick="openwin()" value="打開(kāi)窗口">
    ?????  
    ?????  
    ?????   【4、同時(shí)彈出2個(gè)窗口】
    ?????   
    ?????    對(duì)源代碼稍微改動(dòng)一下:
    ?????   
    ?????   <script LANGUAGE="JavaScript">
    ?????   <!--
    ?????   function openwin() {
    ?????   window.open ("page.html", "newwindow", "height=100, width=100, top=0,
    ????? left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o,
    ????? status=no")//寫(xiě)成一行
    ?????   window.open ("page2.html", "newwindow2", "height=100, width=100, top=1
    ????? 00, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, loca
    ????? tion=no, status=no")//寫(xiě)成一行
    ?????   }
    ?????   //-->
    ?????   </script>
    ?????   為避免彈出的2個(gè)窗口覆蓋,用top和left控制一下彈出的位置不要相互覆蓋即可 。最后用上面說(shuō)過(guò)的四種方法調(diào)用即可。
    ?????   注意:2個(gè)窗口的name(newwindows和newwindow2)不要相同,或者干脆全部為空。
    ??????
    ?????   【5、主窗口打開(kāi)文件1.htm,同時(shí)彈出小窗口page.html】

    ?????   如下代碼加入主窗口<head>區(qū):
    ?????   <script language="javascript">
    ?????   <!--
    ?????   function openwin() {
    ?????   window.open("page.html","","width=200,height=200")
    ?????   }
    ?????   //-->
    ?????   </script>
    ?????   加入<body>區(qū):
    ?????   <a href="1.htm" onclick="openwin()">open</a>即可。
    ??????
    ?????   【6、彈出的窗口之定時(shí)關(guān)閉控制】
    ?????   
    ?????   下面我們?cè)賹?duì)彈出的窗口進(jìn)行一些控制,效果就更好了。如果我們?cè)賹⒁恍《?
    ????? 代碼加入彈出的頁(yè)面(注意是加入page.html的HTML中,可不是主頁(yè)面中,否則 ...),讓它10秒后自動(dòng)關(guān)閉是不是更酷了?
    ????? 首先,將如下代碼加入page.html文件的<head>區(qū):
    ?????   <script language="JavaScript">
    ?????   function closeit()
    ?????   {
    ?????   setTimeout("self.close()",10000) //毫秒
    ?????   }
    ?????   </script>
    ?????   然后,再用<body onload="closeit()">
    ????? 這一句話代替page.html中原有的<BODY>這一句就可以了。(這一句話千萬(wàn)不要忘記寫(xiě)?。∵@一句的作用是調(diào)用關(guān)閉窗
    ????? 口的代碼,10秒鐘后就自行關(guān)閉該窗口。)
    ?????   【7、在彈出窗口中加上一個(gè)關(guān)閉按鈕】

    ?????   <FORM>
    ?????   <INPUT TYPE='BUTTON' VALUE='關(guān)閉' onClick='window.close()'>
    ?????   </FORM>
    ?????   呵呵,現(xiàn)在更加完美了!

    ?????   【8、內(nèi)包含的彈出窗口-一個(gè)頁(yè)面兩個(gè)窗口】
    ?????   上面的例子都包含兩個(gè)窗口,一個(gè)是主窗口,另一個(gè)是彈出的小窗口。通過(guò)下面的例子,你可以在一個(gè)頁(yè)面內(nèi)完成上面的效果。

    ?????   <html>
    ?????   <head>
    ?????   <SCRIPT LANGUAGE="JavaScript">
    ?????   function openwin()
    ?????   {
    ?????   OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no
    ????? ,scrollbars="+scroll+",menubar=no");
    ?????   //寫(xiě)成一行
    ?????   OpenWindow.document.write("<TITLE>例子</TITLE>")
    ?????   OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")
    ?????   OpenWindow.document.write("<h1>Hello!</h1>")
    ?????   OpenWindow.document.write("New window opened!")
    ?????   OpenWindow.document.write("</BODY>")
    ?????   OpenWindow.document.write("</HTML>")
    ?????   OpenWindow.document.close()
    ?????   }
    ?????   </SCRIPT>
    ?????   </head>
    ?????   <body>
    ?????   <a href="#" onclick="openwin()">打開(kāi)一個(gè)窗口</a>
    ?????   <input type="button" onclick="openwin()" value="打開(kāi)窗口">
    ?????   </body>
    ?????   </html>
    ?????   看看OpenWindow.document.write()里面的代碼不就是標(biāo)準(zhǔn)的HTML嗎?只要按照
    ????? 格式寫(xiě)更多的行即可。千萬(wàn)注意多一個(gè)標(biāo)簽或少一個(gè)標(biāo)簽就會(huì)出現(xiàn)錯(cuò)誤。記得用 OpenWindow.document.close()結(jié)束啊。
    ?????   【9、終極應(yīng)用--彈出的窗口之Cookie控制】
    ?????   回想一下,上面的彈出窗口雖然酷,但是有一點(diǎn)小毛病(沉浸在喜悅之中,一定
    ????? 沒(méi)有發(fā)現(xiàn)吧?)比如你將上面的腳本放在一個(gè)需要頻繁經(jīng)過(guò)的頁(yè)面里(例如首頁(yè)),那么每次刷新這個(gè)頁(yè)面,窗口都會(huì)彈出一次,是不是非常煩人?:-(
    ?????   有解決的辦法嗎?Yes! ;-) Follow me.我們使用cookie來(lái)控制一下就可以了。
    ?????   首先,將如下代碼加入主頁(yè)面HTML的<HEAD>區(qū):
    ?????   <script>
    ?????   function openwin(){
    ?????   window.open("page.html","","width=200,height=200")
    ?????   }
    ?????   function get_cookie(Name) {
    ?????   var search = Name + "="
    ?????   var returnvalue = "";
    ?????   if (document.cookie.length > 0) {
    ?????   offset = document.cookie.indexOf(search)
    ?????   if (offset != -1) {
    ?????   offset += search.length
    ?????   end = document.cookie.indexOf(";", offset);
    ?????   if (end == -1)
    ?????   end = document.cookie.length;
    ?????   returnvalue=unescape(document.cookie.substring(offset, end))
    ?????   }
    ?????   }
    ?????   return returnvalue;
    ?????   }  
    ?????   function loadpopup(){
    ?????   if (get_cookie('popped')==''){
    ?????   openwin()
    ?????   document.cookie="popped=yes"
    ?????   }
    ?????   }
    ?????   </script>
    ?????   然后,用<body
    ????? onload="loadpopup()">(注意不是openwin而是loadpop啊?。┨鎿Q主頁(yè)面中原有的<BODY>這一句即可。你可以試著刷新一下這個(gè)頁(yè)面或重新進(jìn)
    ????? 入該頁(yè)面,窗口再也不會(huì)彈出了。真正的Pop-Only-Once!
    ?????   寫(xiě)到這里彈出窗口的制作和應(yīng)用技巧基本上算是完成了

    posted @ 2006-05-25 11:11 yanmin 閱讀(268) | 評(píng)論 (1)編輯 收藏


    最近做項(xiàng)目發(fā)現(xiàn)很多SQL沒(méi)有優(yōu)化: 現(xiàn)在總結(jié)幾種優(yōu)化方式.
    ?首先先了解一個(gè)SQL語(yǔ)句的執(zhí)行過(guò)程分3步: 語(yǔ)法分析(parase)與編譯,執(zhí)行,取數(shù)據(jù).
    1: 在語(yǔ)法分析與編譯時(shí):oracle 使用哈希函數(shù)為SQL語(yǔ)句在庫(kù)緩存中分配一個(gè)SQL區(qū),
    首先檢查語(yǔ)句是否存在,若在,則查詢數(shù)據(jù)庫(kù)字典、檢查必須的權(quán)限。
    若無(wú),需要語(yǔ)法分析與編譯。所以SQL語(yǔ)句存在與內(nèi)存中,將減少分析,編譯時(shí)間。
    SQL語(yǔ)句的分析與編譯占整個(gè)語(yǔ)句運(yùn)行過(guò)程的60%的時(shí)間,SQL優(yōu)化的目標(biāo)就是減少分析與編譯的時(shí)間,共享代碼。

    查詢SQL語(yǔ)句分析與編譯的時(shí)間:
    select * from v$sysstat
    where name in ('parse time cpu','parse time elapsed','parse count (hard)')

    一個(gè)SQL語(yǔ)句的響應(yīng)時(shí)間(elapsed time )應(yīng)該是服務(wù)時(shí)間+等待時(shí)間.
    服務(wù)時(shí)間= CPU執(zhí)行時(shí)間.
    等待時(shí)間 可以從v$system_event
    select total_waits, total_timeouts, time_waited, average_wait ,event
    from v$system_event
    where event='latch free'
    所以解析一個(gè)SQL語(yǔ)句的平均等待時(shí)間是"等待時(shí)間/parse count" 這個(gè)值接近0
    通過(guò)數(shù)據(jù)字典v$sqlare,可以查詢到頻繁被分析與編譯的SQL語(yǔ)句.應(yīng)該減少SQL語(yǔ)句的分析與編譯的次數(shù).

    2: 將常用的實(shí)體駐留內(nèi)存.
    為了減少分析與編譯時(shí)間,可以將常用的的實(shí)體如: 存儲(chǔ)過(guò)程,包等,盡可能駐留在內(nèi)存區(qū)域.
    ?1)預(yù)留內(nèi)存空間. sql> show parameter shared_pool_reserved_size
    ?????? 2)將頻繁使用的實(shí)體駐留在內(nèi)存中. 在使用DBMS_SHARED_POOL程序包前,必須首先運(yùn)行系統(tǒng)提供的程序包: dbmspool.sql 和prvtpool.plb
    ?在加載這兩個(gè)程序包后,自動(dòng)生成所需的包.
    ????? 加載: sql> @/u01/app/oracle/product/8.17/rdbms/admin/dbmspool.sql
    ?????????? sql> @/u01/app/oracle/product/8.17/rdbms/admin/prvtpool.sql
    ????? 包DBMS_SHARED_POOL包含以下存儲(chǔ)過(guò)程.
    ????? dbms_shared_pool.keep 用于將實(shí)體保存內(nèi)存. dbms_shared_pool.keep(object in varchar2,[type in char default p]);
    ???????????????????????????? object 表示參數(shù)名, type 表示被駐留內(nèi)存的實(shí)體類型;P 表示存儲(chǔ)過(guò)程,C表示光標(biāo),R表示觸發(fā)器,默認(rèn)P
    ???????
    ????? dbms_shared_pool.unkeep 用于取消被設(shè)置進(jìn)入內(nèi)存的實(shí)體. dbms_shared_pool.unkeep(object in varchar2,[type in char default p]);
    ???????????????????????????? object 表示參數(shù)名, type 表示被駐留內(nèi)存的實(shí)體類型;P 表示存儲(chǔ)過(guò)程,C表示光標(biāo),R表示觸發(fā)器,默認(rèn)P
    ?????
    ????? dbms_shared_pool.size(minsize in number)

    ????? select name ,type ,source_size+code_size+parsed_size+error_size "total bytes"
    ????? from dba_object_size
    ????? where owner='SCOTT'

    3: 創(chuàng)建索引.
    ?? select index_name,table_owner, table_name, tablespace_name from all_indexes
    ??
    ?? select user_indexes.TABLE_NAME, user_indexes.INDEX_NAME,uniqueness, column_name
    ?? from user_ind_columns ,user_indexes
    ?? where user_ind_columns.INDEX_NAME=user_indexes.INDEX_NAME
    ?? and user_ind_columns.TABLE_NAME=user_indexes.TABLE_NAME
    ?? order by user_indexes.TABLE_TYPE,user_indexes.TABLE_NAME,user_indexes.INDEX_NAME,user_ind_columns.COLUMN_POSITION

    4: 創(chuàng)建聚簇(cluster): 是一組存儲(chǔ)在一起的有共同列或經(jīng)常一起使用的表,被聚簇的兩個(gè)表只有一個(gè)數(shù)據(jù)段.聚簇表在存儲(chǔ)時(shí),在物理層將子表合并到父表中,這樣就少了表的連接時(shí)間.

    5: 創(chuàng)建哈希索引.
    ?
    6: SQL優(yōu)化器: 基于成本的優(yōu)化器CBO(cose_based)和基于規(guī)則RBO(rule_based)
    ?? sql> show parameter OPTIMIZER_MODE
    ?? 可以修改參數(shù)文件: initSID.ora,增加: optimizer_Mode={CHOOSE| RULE| FIRST_ROWS|ALL_ROWS}
    ? all_rows , first_rows(n)基于成本; rule 基于規(guī)則,choose基于規(guī)則、成本。
    ? /*+ ordered*/
    ? /*+ rule */
    ? /*+ first_rows(50) */

    ? /*+ordered star*/
    ? 寫(xiě)發(fā):?
    ? alter system flush shared_pool;
    select /*+ rule */ aa from visit

    posted @ 2006-03-20 15:28 yanmin 閱讀(1068) | 評(píng)論 (1)編輯 收藏

    今天弄程序,發(fā)現(xiàn)XML中一個(gè)很陌生的東東---CDATA, 問(wèn)了同事他們也不知道,只有自己查資料,后來(lái)發(fā)現(xiàn)原來(lái)很簡(jiǎn)單的東西.

    在XML文檔中的所有文本都會(huì)被解析器解析。 
     只有在CDATA部件之內(nèi)的文本會(huì)被解析器忽略。

     下面是五個(gè)在XML文檔中預(yù)定義好的實(shí)體:
                      &lt;<小于號(hào)
                      &gt;>大于號(hào)
                      &amp;&和
                      &apos;'單引號(hào)
                      &quot;"雙引號(hào)

    實(shí)體必須以符號(hào)"&"開(kāi)頭,以符號(hào)";"結(jié)尾。
                注意: 只有"<" 字符和"&"字符對(duì)于XML來(lái)說(shuō)是嚴(yán)格禁止使用的。剩下的都是合法的,為了減少出錯(cuò),使用實(shí)體是一個(gè)好習(xí)慣。

    CDATA部件
                在CDATA內(nèi)部的所有內(nèi)容都會(huì)被解析器忽略。
                如果文本包含了很多的"<"字符和"&"字符——就象程序代碼一樣,那么最好把他們都放到CDATA部件中。
                一個(gè) CDATA 部件以"<![CDATA[" 標(biāo)記開(kāi)始,以"]]>"標(biāo)記結(jié)束,注意"]]>"中間沒(méi)有空格

    例如:
     <![CDATA[
             UPDATE USERMSTR SET LOGON_SUCCESS_COUNTER = 0
          ]]>

    posted @ 2005-12-26 13:46 yanmin 閱讀(1386) | 評(píng)論 (2)編輯 收藏

    主站蜘蛛池模板: 99在线视频免费| 99久热只有精品视频免费看 | 亚洲国产一区在线观看| 亚洲国产日产无码精品| 亚洲精品成a人在线观看☆| 无人视频在线观看免费播放影院| igao激情在线视频免费| 无码午夜成人1000部免费视频| 国产成人免费网站| 国产伦精品一区二区三区免费下载 | 国产黄色免费观看| 日韩在线永久免费播放| 搡女人真爽免费视频大全| 亚洲Av无码乱码在线znlu| 久久久无码精品亚洲日韩蜜桃 | 国国内清清草原免费视频99| 免费永久在线观看黄网站| 精品久久久久久亚洲| 亚洲H在线播放在线观看H| 污视频网站在线免费看| 一级毛片全部免费播放| 日韩免费一区二区三区| 国产亚洲精品久久久久秋霞| 亚洲福利一区二区三区| 黄色网址在线免费观看| 18禁黄网站禁片免费观看不卡| 日韩a级毛片免费视频| 亚洲成AV人片一区二区密柚| 亚洲中文字幕精品久久| 香蕉免费在线视频| 毛色毛片免费观看| 亚洲精品国产字幕久久不卡 | 亚洲免费综合色在线视频| 久久精品国产影库免费看| 精品久久洲久久久久护士免费 | 人人狠狠综合久久亚洲88| 四虎亚洲精品高清在线观看| 中文字幕a∨在线乱码免费看 | 亚洲综合精品第一页| 日本免费中文字幕| 五月天婷亚洲天综合网精品偷|