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

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

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

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
    最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
    本站的官方站點(diǎn)是:顛覆軟件

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

    #

    轉(zhuǎn)自: 這里

    1. 配置RedHat AS 3

    操作系統(tǒng)版本:
    Red Hat Enterprise Linux AS release 3 (Taroon)
    Kernel 2.4.21-4.EL on an i686
    按照常規(guī)來安裝操作系統(tǒng),記得要安裝開發(fā)工具(gcc等必要工具).

    1.1 檢查必要的硬件信息

    檢查內(nèi)容 最小值 檢查命令參考
    物理內(nèi)存 512M # grep MemTotal /proc/meminfo
    交換空間 1.0 GB或者2倍內(nèi)存大小 # grep SwapTotal /proc/meminfo
    /tmp 空間 400 MB # df -k /tmp
    軟件所需空間 2.5 GB # df -k (空間越大越好,如果是正式系統(tǒng),應(yīng)該進(jìn)行詳盡的規(guī)劃)
    數(shù)據(jù)庫文件 1.2 GB # df -k (空間越大越好,如果是正式系統(tǒng),應(yīng)該進(jìn)行詳盡的規(guī)劃)
    檢查完如上各項(xiàng)之后, 應(yīng)該修改核心參數(shù).執(zhí)行如下命令:

    #vi /etc/sysctl.conf

    #注釋:
    #表示使用root用戶操作,$表示使用oracle 用戶進(jìn)行操作.提示符后面的藍(lán)色部分表示需要輸入的命令,以下同.

    在該文件末尾加入如下內(nèi)容:
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 65536
    net.ipv4.ip_local_port_range = 1024 65000

    編輯完之后,保存,執(zhí)行 # /sbin/sysctl -p 命令操作來使我們所做的變更生效.
    注:上面kernel.shmmax/kernel.sem等是典型的核心參數(shù)配置.您可能需要根據(jù)您的實(shí)際環(huán)境進(jìn)行適當(dāng)?shù)淖儎?dòng).

    關(guān)于這些核心參數(shù)的說明在Oracle的 Oracle9i Installation Guide Release 2 (9.2.0.1.0) for UNIX Systems 中有很詳細(xì)的說明.( http://download-west.oracle.com/docs/html/A96167_01/toc.htm )

    然后,應(yīng)該檢查一下上面的操作是否正確:
    # /sbin/sysctl -a | grep sem
    # /sbin/sysctl -a | grep shm
    # /sbin/sysctl -a | grep file-max
    # /sbin/sysctl -a | grep ip_local_port_range

    為Oracle用戶設(shè)定Shell的限制
    一般來說,出于性能上的考慮,還需要需要進(jìn)行如下的設(shè)定,以便改進(jìn)Oracle用戶的有關(guān) nofile(可打開的文件描述符的最大數(shù))和nproc(單個(gè)用戶可用的最大進(jìn)程數(shù)量)

    # vi /etc/security/limits.conf
    # 添加如下的行

    *?????????????? soft??? nproc?? 2047
    *?????????????? hard??? nproc?? 16384
    *?????????????? soft??? nofile? 1024
    *?????????????? hard??? nofile? 65536

    添加如下的行到/etc/pam.d/login 文件:
    session??? required???? /lib/security/pam_limits.so

    編輯 /etc/profile 文件,添加如下部分:
    if [ $USER = "oracle" ]; then?
    ??????? if [ $SHELL = "/bin/ksh" ]; then?
    ??????????????? ulimit -p 16384?
    ??????????????? ulimit -n 65536?
    ??????? else?
    ??????????????? ulimit -u 16384 -n 65536?
    ??????? fi?
    fi
    之后,執(zhí)行$ ulimit 驗(yàn)證一下.

    1.2 檢查并安裝相關(guān)補(bǔ)丁
    在這個(gè)版本的RHEL上安裝Oracle,必須要有幾個(gè)軟件包. 確認(rèn)以下 rpm包都已經(jīng)安裝:

    make-3.79
    binutils-2.11
    openmotif-2.2.2-16
    setarch-1.3-1
    compat-db-4.0.14.5
    compat-gcc-7.3-2.96.122
    compat-gcc-c++-7.3-2.96.122
    compat-libstdc++-7.3-2.96.122
    compat-libstdc++-devel-7.3-2.96.122

    # rpm -qa | grep compat
    # 在機(jī)器上輸出如下:

    compat-gcc-c++-7.3-2.96.122
    compat-libstdc++-7.3-2.96.122
    compat-libstdc++-devel-7.3-2.96.122
    compat-glibc-7.x-2.2.4.32.5
    compat-db-4.0.14-5
    compat-gcc-7.3-2.96.122

    # rpm -qa | grep openmotif
    openmotif-devel-2.2.2-16
    openmotif-2.2.2-16

    # rpm -qa | grep setarch
    setarch-1.3-1


    上面顯示的內(nèi)容是在筆者已經(jīng)安裝了具體的RPM包之后的結(jié)果.一般情況下,你的系統(tǒng)上的輸出結(jié)果和這個(gè)不同.如果個(gè)別包沒有安裝,把系統(tǒng)安裝光盤mount上,找到具體的軟件包(大多數(shù)在第三張光盤上),然后利用如下的命令來安裝相應(yīng)的包:
    # rpm -ivh *.rpm

    要額外注意的是,這些軟件包之間是有依賴性的,先后的順序要找好.否則會(huì)報(bào)告不能安裝的錯(cuò)誤. 此外,最好驗(yàn)證一下 gcc和glibc的版本(要求是gcc-3.2.3-2 或者更高):
    #gcc -v
    #rpm -q glibc

    1.3 創(chuàng)建用戶和相關(guān)的組
    # /usr/sbin/groupadd oinstall
    # /usr/sbin/groupadd dba
    # /usr/sbin/useradd -g oinstall -G dba oracle
     

    如果只是測試目的的話,不創(chuàng)建oinstall組也沒什么. 不過還是規(guī)范一點(diǎn)比較好.如果oracle 用戶和dba組等已經(jīng)存在,作適當(dāng)?shù)恼{(diào)整即可.

    1.4 檢查并調(diào)整環(huán)境變量
    登錄為oracle用戶

    # su - oracle
    $ cd
    $ vi .bash_profile

    #添加如下內(nèi)容,你的具體值應(yīng)該不會(huì)和這個(gè)完全相同.
    export ORACLE_BASE=/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/dbse
    export ORACLE_SID=orcl
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    export LC_CTYPE=en_US.UTF-8

    然后執(zhí)行
    $ source .bash_profile

    使環(huán)境變量生效. /oracle 等目錄應(yīng)該建立好并做合適的授權(quán).

    2. 安裝Orale10g
    mount安裝盤.由于10g無法以root安裝,以前面建的oracle用戶登錄.執(zhí)行:

    $ ./runInstaller

    按照提示安裝即可,最后還需要以root運(yùn)行兩個(gè)腳本。

    3. 配置TNS參數(shù)
    在 /oracle/product/dbse/network/admin/ 目錄下有 listener.ora 和 tnsnames.ora 兩個(gè)文件,設(shè)置如下:

    #listener.ora
    SID_LIST_LISTENER =
    ? (SID_LIST =
    ???? (SID_DESC =
    ????? (GLOBAL_DBNAME = orcl)
    ????? (ORACLE_HOME = /oracle/product/dbse)
    ????? (SID_NAME = orcl)
    ???? )
    ? )

    LISTENER =
    ? (DESCRIPTION_LIST =
    ??? (DESCRIPTION =
    ??????? (ADDRESS_LIST =
    ????? (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    ??????? )
    ??????? (ADDRESS_LIST =
    ????? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    ??????? )
    ??? )
    ? )

    #tnsnames.ora
    ORCL =
    ? (DESCRIPTION =
    ??? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    ??? (CONNECT_DATA =
    ????? (SERVER = DEDICATED)
    ????? (SERVICE_NAME = orcl)
    ??? )
    ? )

    EXTPROC_CONNECTION_DATA =
    ? (DESCRIPTION =
    ????? (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    ??????? (CONNECT_DATA =
    ????? (SID = PLSExtProc)
    ????? (PRESENTATION = RO)
    ??? )
    ? )

    其中SERVICE_NAME與SID_NAME一定要和.bash_profile中的ORACLE_SID相一致,否則無法啟動(dòng)

    4. 啟動(dòng)Oracle
    以oracle用戶登錄

    4.1 啟動(dòng)TNS監(jiān)聽器
    $ lsnrctl start
    出現(xiàn)如下顯示,表示監(jiān)聽服務(wù)成功開啟
    LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 22-FEB-2006 10:24:03

    Copyright (c) 1991, 2005, Oracle.? All rights reserved.

    Starting /oracle/product/dbse/bin/tnslsnr: please wait...

    TNSLSNR for Linux: Version 10.2.0.1.0 - Production
    System parameter file is /oracle/product/dbse/network/admin/listener.ora
    Log messages written to /oracle/product/dbse/network/log/listener.log
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
    STATUS of the LISTENER
    ------------------------
    Alias???????????????????? LISTENER
    Version?????????????????? TNSLSNR for Linux: Version 10.2.0.1.0 - Production
    Start Date??????????????? 22-FEB-2006 10:24:03
    Uptime??????????????????? 0 days 0 hr. 0 min. 0 sec
    Trace Level?????????????? off
    Security????????????????? ON: Local OS Authentication
    SNMP????????????????????? OFF
    Listener Parameter File?? /oracle/product/dbse/network/admin/listener.ora
    Listener Log File???????? /oracle/product/dbse/network/log/listener.log
    Listening Endpoints Summary...
    ? (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
    ? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))
    Services Summary...
    Service "orcl" has 1 instance(s).
    ? Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
    The command completed successfully


    4.2啟動(dòng)數(shù)據(jù)庫
    9i 之后已經(jīng)沒有 svrmgrl 了,所有的管理工作都通過 sqlplus 來完成:
    $ sqlplus /nolog
    SQL> connect system/change_on_install as sysdba
    SQL> startup

    出現(xiàn)如下顯示,表示Oracle已經(jīng)成功啟動(dòng)
    ORACLE instance started.

    Total System Global Area? 285212672 bytes
    Fixed Size????????????????? 1218968 bytes
    Variable Size????????????? 88082024 bytes
    Database Buffers????????? 188743680 bytes
    Redo Buffers??????????????? 7168000 bytes
    Database mounted.
    Database opened.

    4.3 自動(dòng)啟動(dòng)與關(guān)閉

    編輯 /etc/oratab ,把所有的 instance 的重啟動(dòng)標(biāo)志設(shè)置成 'Y',如:
    orcl:/oracle/product/dbse:Y

    做一個(gè)啟動(dòng)腳本 /etc/init.d/dbora ,如下所示:

    #!/bin/sh
    # description: Oracle auto start-stop script.
    # chkconfig: - 20 80
    #
    # Set ORA_HOME to be equivalent to the $ORACLE_HOME
    # from which you wish to execute dbstart and dbshut;
    #
    # Set ORA_OWNER to the user id of the owner of the
    # Oracle database in ORA_HOME.

    ORA_HOME=/oracle/product/dbse
    ORA_OWNER=oracle
    if [ ! -f $ORA_HOME/bin/dbstart ]
    then
    echo "Oracle startup: cannot start"
    exit
    fi
    case "$1" in
    'start')

    # Start the Oracle databases:
    # The following command assumes that the oracle login
    # will not prompt the user for any values

    su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
    ;;
    'stop')

    # Stop the Oracle databases:
    # The following command assumes that the oracle login
    # will not prompt the user for any values

    su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
    su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
    ;;
    'restart')
    $0 stop
    $0 start
    ;;
    esac

    賦予執(zhí)行權(quán)限
    chmod 750 /etc/init.d/dbora

    作成以下鏈接:
    ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
    ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora


    執(zhí)行以下命令:
    chkconfig --level 345 dbora on

    這樣就OK了。下次開關(guān)機(jī)的時(shí)候,Oracle也會(huì)隨之啟動(dòng)/停止。

    參考信息

    http://www.dbanotes.net

    posted @ 2006-05-09 13:12 Alex 閱讀(915) | 評(píng)論 (5)編輯 收藏

    注:本文繼續(xù)分頁的上一篇 關(guān)于分頁,標(biāo)簽,緩存
    hibernate分頁有現(xiàn)成的支持:

    query.setFirstResult(start);
    query.setMaxResults(rowNum);?


    MySql如下:
    select?*?from?table?where??limit?start,rowNum;


    Oracle如下
    select?*?from?table?where??and?rowid?not?in(select?rowid?from?t_table?where? .... and? rownum<=?(pageIndex-1)?*?size)
    and?rownum?<=?size;

    PageBean以前是設(shè)置currentPage,然后在頁面里自己判斷上一頁下一頁是什么,后來發(fā)現(xiàn)純粹多余,完全可以把目標(biāo)頁寫進(jìn)去,而且參數(shù)也統(tǒng)一了,以前頁面?zhèn)鞯紸ction有好幾個(gè)參數(shù):

    if(method.equals("lastPage")){

    }
    else?if(method.equals("nextPage")){

    }
    else?if(method.equals("targetPage")){
    ????
    //.
    }


    現(xiàn)在統(tǒng)一一個(gè)參數(shù)就是pageIndex,爽多了? :)
    PageBean代碼如下:
    int?currentPage?=?1;//當(dāng)前頁:Action控制
    ????int?totalPages?=?0;//總頁數(shù)?:自己運(yùn)算
    ????public?static?int?pageRecorders?=?10;?//每頁記錄數(shù),默認(rèn)為10,可以在初始化的時(shí)候修改//總數(shù)據(jù)數(shù)
    ????int?pageStartRow?=?0;?//每頁的起始數(shù)? [這個(gè)字段可以去掉]
    ????int?pageEndRow?=?0;?//每頁顯示數(shù)據(jù)的終止數(shù)? [這個(gè)字段也可以去掉]
    ????boolean?hasNextPage?=?false;?//是否有下一頁:自己運(yùn)算
    ????boolean?hasPreviousPage?=?false;?//是否有前一頁?:自己運(yùn)算
    ????List?objList?=?new?ArrayList();//存放欲展示的對(duì)象列表
    ????int?totalRows;//總記錄數(shù),由底層service提供

    ????
    //增加上一頁索引?[directly?to?target?page]
    ????private?int?lastPageIndex?=?1;
    ????
    //增加下一頁索引?[directly?to?target?page]
    ????private?int?nextPageIndex?=?1;

    ????
    public?int?getLastPageIndex()?{
    ????????
    return?currentPage?-?1;
    ????}

    ????
    public?int?getNextPageIndex()?{
    ????????
    return?currentPage?+?1;
    ????}


    ????
    //是否有上一頁
    ????public?boolean?isHasPreviousPage()?{
    ????????
    return?(currentPage?>?1???true?:?false);
    ????}

    ????
    //共有多少頁,service只提供有多少條記錄,多少頁數(shù)由PageBean自己運(yùn)算
    ????public?int?getTotalPages()?{
    ????????
    if?(totalRows?<=?pageRecorders)?return?1;
    ????????
    return?(totalRows?%?pageRecorders?==?0???totalRows?/?pageRecorders?:?totalRows?/?pageRecorders?+?1);
    ????}

    ????
    public?int?getCurrentPage()?{
    ????????
    return?currentPage;
    ????}

    ????
    public?int?getPageEndRow()?{
    ????????
    return?pageEndRow;
    ????}

    ????
    //是否有下一頁
    ????public?boolean?isHasNextPage()?{
    ????????
    return?(currentPage?<?this.getTotalPages()???true?:?false);
    ????}

    ????
    public?int?getTotalRows()?{
    ????????
    return?totalRows;
    ????}

    ????
    public?int?getPageStartRow()?{
    ????????
    return?pageStartRow;
    ????}

    ????
    public?int?getPageRecorders()?{
    ????????
    return?pageRecorders;
    ????}

    ????
    public?void?setObjList(List?objList)?{
    ????????
    this.objList?=?objList;
    ????}

    ????
    public?void?setHasPreviousPage(boolean?hasPreviousPage)?{
    ????????
    this.hasPreviousPage?=?hasPreviousPage;
    ????}

    ????
    public?void?setTotalPages(int?totalPages)?{
    ????????
    this.totalPages?=?totalPages;
    ????}

    ????
    public?void?setCurrentPage(int?currentPage)?{
    ????????
    this.currentPage?=?currentPage;
    ????}

    ????
    public?void?setPageEndRow(int?pageEndRow)?{
    ????????
    this.pageEndRow?=?pageEndRow;
    ????}

    ????
    public?void?setHasNextPage(boolean?hasNextPage)?{
    ????????
    this.hasNextPage?=?hasNextPage;
    ????}

    ????
    public?void?setTotalRows(int?totalRows)?{
    ????????
    this.totalRows?=?totalRows;
    ????}

    ????
    public?void?setPageStartRow(int?pageStartRow)?{
    ????????
    this.pageStartRow?=?pageStartRow;
    ????}

    ????
    public?void?setPageRecorders(int?pageRecorders)?{
    ????????
    this.pageRecorders?=?pageRecorders;
    ????}

    ????
    public?List?getObjList()?{
    ????????
    return?objList;
    ????}
    }

    在action中負(fù)責(zé)把pageIndex傳給PageBean,以及通過service得到的記錄總數(shù)傳給pageBean就OK了


    補(bǔ)充:另,在IDEA中文站上看到一篇文章?
    分頁,心中的痛? ????? 提到用一個(gè)統(tǒng)一的接口來規(guī)范:
    代碼如下:
    public?interface?Page?{
    boolean?isFirstPage();
    boolean?isLastPage();
    boolean?hasNextPage();
    boolean?hasPreviousPage();
    int?getLastPageNumber();
    Object?getThisPageElements();
    int?getTotalNumberOfElements();
    int?getThisPageFirstElementNumber();
    int?getThisPageLastElementNumber();
    int?getNextPageNumber();
    int?getPreviousPageNumber();
    int?getPageSize();
    int?getThisPageNumber?();
    }

    個(gè)人感覺思想挺好,不過我還是喜歡用一個(gè)PageBean類就足夠了,沒必要搞復(fù)雜了,在PageBean中其實(shí)是currentPage為核心.

    一個(gè)工具能夠在任何地方都能容易的嵌入進(jìn)去,這就很小巧了,也就夠用了.? :)
    posted @ 2006-05-08 22:46 Alex 閱讀(1197) | 評(píng)論 (0)編輯 收藏

    注:這個(gè)說的挺全面,考慮到了兩種情況,一個(gè)是超連接,一個(gè)是表單

    原文是這里


    Struts Token 機(jī)制可以解決這個(gè)問題。

    1. ? 防止通過超鏈接重復(fù)訪問 Struts Action

    如果我們要防止 A 的默認(rèn)頁面 J 中指向 K 的超鏈接重復(fù)提交數(shù)據(jù),按照下列步驟即可:

    a. ? 如果 J 是從 Struts Action 轉(zhuǎn)發(fā)而來,我們要在該 Struts Action execute 方法中添加下面的一行:

    ??? saveToken(request);

    b. ? 如果 J 不是從 Struts Action 轉(zhuǎn)發(fā)而來,那么新建一個(gè) Struts Action ,在該 Struts Action excute 方法中增加上面的一行,然后再從該 action 轉(zhuǎn)到 J 頁面。

    c. ? J 頁面中使用 Struts 標(biāo)簽生成指向 K 的超鏈接,如:

    ?? <html:link action="/deleteLayoutAction?layoutId=0" transaction="true" >delete</html:link>

    ?? 注意紅色字體部分。

    d. ? <html:link> 標(biāo)簽指向的 action excute 方法中加入下面的代碼:

    ?? if (!isTokenValid(request)) {

    ???????????????????? return mapping.findForward(" 這種情況下就是重復(fù)提交,轉(zhuǎn)到相應(yīng)的頁面 ");

    ????????????? }

    e All Done.

    2. ? 防止通過表單重復(fù)提交數(shù)據(jù)。

    a. ? 如果 J 是從 Struts Action 轉(zhuǎn)發(fā)而來,我們要在該 Struts Action execute 方法中添加下面的一行:

    ??? saveToken(request);

    b. ? 如果 J 不是從 Struts Action 轉(zhuǎn)發(fā)而來,那么新建一個(gè) Struts Action ,在該 Struts Action excute 方法中增加上面的一行,然后再從該 action 轉(zhuǎn)到 J 頁面。

    c. ? J 頁面中表單 Action 屬性指向的 Struts action excute 方法中加入下面的代碼:

    ?? if (!isTokenValid(request)) {

    ?????????? saveToken(request);

    ???????????????????? return mapping.findForward(" 這種情況下就是重復(fù)提交,轉(zhuǎn)到相應(yīng)的頁面 ");

    ?? saveToken(request);

    ????????????? }

    e All Done.
    posted @ 2006-05-08 10:02 Alex 閱讀(358) | 評(píng)論 (0)編輯 收藏

    在新窗口中添加內(nèi)容到父窗口

    代碼如下:
    父窗口: form.html
    <script?language="JavaScript">
    function?addItems()?
    {
    ????
    var?AWnd=window.open('items.htm','fwId','resizable=yes,scrollbars=yes,width=300,height=400');
    ????AWnd.focus();

    }
    function?delItems()?
    {
    ??
    var?sel=document.menu.fwId;
    ??
    for(i=0;i<=sel.options.length;i++)
    ??{
    ??
    if(sel.options[i]!=null)
    ????
    if(sel.options[i].selected)
    ????{
    ??????sel.options[i]
    =null;
    ??????i
    --;
    ????}
    ??}
    }
    </script>

    <form?method="post"?name="menu">

    <select?name="fwId"?size="5"?multiple>
    </select>?
    <input?name="item"?type="button"?onClick="addItems()"?value="ìí?ó">?
    <input?name="itemDel"?type="button"?onClick="delItems()"?value="é?3y"?>?
    </form>




    新開窗口items.html:

    <script?language="JavaScript">
    function?doSubmit(value,name)?
    {
    ??????
    var?aa?=?window.opener.document;
    ????
    var?myop?=?aa.createElement("OPTION");

    ????
    for(var?j?=?0;?j?<?aa.menu.fwId.options.length;?j++)?
    ????{
    ??????????
    if(value?==?aa.menu.fwId.options[j].value)
    ????????????{
    ????????????????alert(
    "ò??-±?????£?");
    ????????????????
    return;
    ????????????}
    ????}
    ????myop.text?
    =name;
    ????myop.value?
    =value;
    ????aa.menu.fwId.add(myop);?
    }
    </script>

    <form?name="items">
    ????
    <a?onclick="javascript:doSubmit('1','test1');"?href="#">test1</a><br>
    ????
    <a?onclick="javascript:doSubmit('2','test2');"?href="#">test2</a><br>
    </form>

    posted @ 2006-05-05 20:37 Alex 閱讀(3540) | 評(píng)論 (0)編輯 收藏

    想用緩存又不想用oscache覺得
    麻煩,自己寫了個(gè)簡單的緩存,不小心發(fā)現(xiàn)getAllCity結(jié)果總是在第一次進(jìn)去的時(shí)候數(shù)量加倍,第二次就好了,真實(shí)怪事.

    代碼如下:
    public?static?List?getAllCity(boolean?bInit)?throws XXException?{
    ????????List?cityList?
    =?new?ArrayList();
    ????????
    if?(null?==?CityInfos?||?CityInfos.size()?==?0)?bInit?=?true;
    ????????
    synchronized?(CityInfos)?{
    ????????????
    if?(bInit)?{?//retrieve?city?info?from?database
    ????????????????CityService?service?=?new?CityService();
    ????????????????cityList?
    =?service.getAllCitys();
    ????????????????CityInfos.clear();
    ????????????????
    if?(null?!=?cityList?&&?cityList.size()?>?0)?{
    ????????????????????log.info(
    "========"?+?"cityList?size?:?"?+?cityList.size()?+?"========");
    ????????????????????
    for?(Iterator?it?=?cityList.iterator();?it.hasNext();)?{
    ????????????????????????CityVo?cityVo?
    =?(CityVo)?it.next();
    ????????????????????????CityInfos.put(cityVo.getId(),?cityVo);
    ????????????????????}
    ????????????????}
    ????????????}

    ????????????cityList.addAll(CityInfos.values());
    ????????}
    ????????
    return?cityList;
    ????}

    CityInfos是一個(gè)static Hashtable,查了下原來是共用了cityList,將synchronized 里面的cityList 改成
    List tmpCityList 就可以了? :)? 為什么會(huì)犯低級(jí)錯(cuò)誤呢?? :(
    posted @ 2006-03-30 14:18 Alex 閱讀(164) | 評(píng)論 (0)編輯 收藏

    ???? 時(shí)間走到了21世紀(jì),一切都那么快,那么忙碌,那么紛繁,java世界的新觀點(diǎn),新技術(shù),恩,還有新框架層出不窮,看的我都累死了,你累么?? :)

    ???? 學(xué)完servlet學(xué)jsp,學(xué)完jsp又來了struts,用了Struts又說webwork不賴;剛學(xué)會(huì)jdbc又來了hibernate,剛對(duì)hibernate掌握了點(diǎn)皮毛又來了個(gè)無所不能的Spring.看看Springside里包含的技術(shù)點(diǎn),看著也夠嚇人的,我在想,什么樣的項(xiàng)目里會(huì)用到這么多的東東呢?你會(huì)了我會(huì)么,我會(huì)了他會(huì)么? 也許xp的可能性太小了,一群牛人才能在那xp.

    ???? 哦,還有模式,感覺模式就像是ML里的姿勢,一會(huì)是老漢推車一會(huì)是69式,你可能忙的滿頭是漢,不過對(duì)方很可能就沒有feeling,也沒有high,你是不是感覺很冤? 其實(shí)有時(shí)候不需要太多的技巧,多一天體貼就夠了,那么,你體貼你的客戶了么? 反過來說,你的客戶在乎你的那些奇淫怪巧么?

    ???? 世界正變得越來越復(fù)雜,所以我們應(yīng)該變得越來越簡單才對(duì).? 這話是哪個(gè)牛人說的? 真TMD的經(jīng)典? 反思下,你的思緒變的復(fù)雜了還是簡單了??
    ???
    ???? 技術(shù)不是上帝,但客戶是我們的上帝

    ???? 讓我們一起想一想,怎么體貼我們的客戶??

    ???? 一點(diǎn)牢騷,胡亂說幾句,不要拍磚.
    posted @ 2006-03-29 16:19 Alex 閱讀(519) | 評(píng)論 (10)編輯 收藏

    keyword: Live Templates XDoclet

    在IDEA中要寫hibernate標(biāo)簽想不想用自動(dòng)提示功能?  :)

    Come on!
    1. 進(jìn)入 這里
    2. 把hibernate.xml文本拷到本機(jī)
    3. 把hibernate.xml copy 到IDEA的config/templates目錄下
    4. 重啟IDEA
    5. 進(jìn)入IDEA的設(shè)置里的Erros,找到Unknown javadoc tags,把以下代碼copy進(jìn)來
     
    happy吧    :)
    posted @ 2006-03-16 00:56 Alex 閱讀(853) | 評(píng)論 (0)編輯 收藏

    喜歡在bloglines里看一些rss,一些想有時(shí)間再看的內(nèi)容就點(diǎn)選" keep new ",時(shí)間長了也留了不少了,清理一下,移到這里,算是backup.
    1. Equinox 1.6 發(fā)布 [appfuse的輕量級(jí)版本實(shí)現(xiàn)]

    2. Design Pattern , 應(yīng)該選哪本書? [Head First Design Patterns]

    3. Simple Persistence for Java 1.1.0 發(fā)布 [一個(gè)簡易的方式持久化數(shù)據(jù)]
    4. hql語句查詢時(shí),根據(jù)屬性和物理字段混查 [hibernate支持物理字段查詢,用別名的時(shí)候只能用屬性]

    5. 關(guān)于Java加密擴(kuò)展的出口限制 [JAVA_HOME==>lib目錄下的local_policy.jar和US_export_policy.jar文件替換調(diào)就OK了]

    6. 使用dom4j和XPath xpath對(duì)xml的所有操作變得異常的簡單和方便,關(guān)于XPath的教程可以參照 xpath教程 另外,用oo的方式操作xml可以參考利用XMLBean輕輕松松讀寫XML感覺前者更適宜普通的配置文件的操作,后者針對(duì)大量的xml文件的讀寫操作,比如相互傳遞xml文件進(jìn)行數(shù)據(jù)交換.

    7. 初識(shí)wxPython(環(huán)境配置篇) [據(jù)說開發(fā)GUI是個(gè)不錯(cuò)的選擇,下載下來看了一下初步感覺不賴]
    8. 使用struts的同步令牌避免form的重復(fù)提交

    9. 重溫Struts--Validator和Tiles

    10. 本人寫的分頁的標(biāo)簽,和.net中的datagrid標(biāo)簽相似,只需要設(shè)置幾個(gè)屬性就可以實(shí)現(xiàn)分頁功能了

    11. 比較完整全面的分頁

    12. 關(guān)于分頁設(shè)計(jì)的一些做法

    13. 擴(kuò)展的 通用表單驗(yàn)證函數(shù) [提到了普通html中的用法,但是不知道如果在Struts標(biāo)簽中是否不支持]
    14. [原創(chuàng)]JAVA中圖片上疊加文字的方法

    15. 自己實(shí)現(xiàn)的一個(gè)加密算法

    16. 淺談hibernate性能優(yōu)化的幾點(diǎn)建議

    17. JDBC實(shí)現(xiàn)oracle blob 出庫入庫

    posted @ 2006-03-12 03:55 Alex 閱讀(457) | 評(píng)論 (0)編輯 收藏

    keyword: IDEA 開發(fā)工具

    IDE其實(shí)沒什么,以前總會(huì)有人討論這個(gè)好那個(gè)好,最終也沒什么定論,各有所好,就像以前總有人喜歡討論哪個(gè)語言如何如何,新手津津樂道,老手感覺無聊。但是我今天還是要提下IDE,我只是把我認(rèn)為不錯(cuò)的東西分享下,僅此而已。

    偶用過的工具不多,曾用過wsad,jbuilder,netbeans和Eclipse也就裝過,幾乎沒用過。用的最多的就數(shù)jbuilder了,說實(shí)話感覺jbuilder不錯(cuò),挺方便的,而且支持的東西也比較全,不過也有一些問題,比如有時(shí)候莫名其妙的就出現(xiàn)編譯不通過,還有一些其他的擴(kuò)展功能似乎不怎么樣。

    很早就聽說IDEA這個(gè)工具,不過身邊的人用的不多,一直也沒怎么用,裝了一個(gè)在桌面上這次終于因?yàn)槭菚r(shí)間充足的緣故或是沖動(dòng)的緣故就用了下,這一用就丟不開了? :)

    好了,下面就請(qǐng)跟隨我一起參與這個(gè)快樂之旅吧.

    第一。IDEA很漂亮
    ??????? 在它身上你既看到j(luò)builder的身影,又能感覺到Eclipse的舞姿,還有netbeans的微笑,是不是太夸張了?? :)

    第二。優(yōu)化你的代碼.
    ??????? 你一直在寫代碼,但是你有過多少機(jī)會(huì)你的項(xiàng)目經(jīng)理或者其他xp的人給你提過你的代碼建議? 也許你會(huì)說我會(huì)用checkstyle,但是單獨(dú)用這個(gè)的好像也不多,恩,我的意思是說IDEA里有一個(gè)現(xiàn)成的東西,就是那個(gè)Analyze下的Inspect Code,你對(duì)自己的代碼會(huì)有很多的發(fā)現(xiàn)哦。

    第三。jsp頁面也可以format。
    ??????? 用jbuilder的時(shí)候?qū)ζ胀╦ava代碼的格式化是允許的,但是對(duì)于jsp頁面則沒有這個(gè)功能,令我開心的是我在這里碰到了,你的那些亂七八糟的html代碼可以一下子舊貌換新顏了,偷著樂吧。

    第四。裝載Struts插件,支持Struts開發(fā).
    ??????? 恩,一開始我不敢用IDEA的考慮之一就是沒有直接的Struts支持,怕會(huì)出問題,不過這個(gè)問題現(xiàn)在看來已經(jīng)不是問題了.
    首先請(qǐng)?jiān)趕ettting===>Plugins里下載Struts Assistant[IDEA的插件不需要你單獨(dú)下載,直接在Resource里下載update就可以了],安裝好后重啟IDEA,會(huì)在控制面板出現(xiàn)一個(gè)Struts Assistant的button,點(diǎn)擊,進(jìn)行屬性設(shè)置,設(shè)置"Struts distributive",目錄指向一個(gè)Struts的目錄,我是從Apache下的一個(gè)1.2的版本,同時(shí)支持1.1和1.2,就用這個(gè)吧,設(shè)置完就OK了。下一步,在IDEA里打開你的struts-config.xml文件,這是IDEA會(huì)自動(dòng)產(chǎn)生一個(gè)struts-config.awf文件,有了這個(gè)文件后你就可以在左邊的struts assistant的panel里看到你的form和action了,以及forward,看起來很簡潔。現(xiàn)在你就可以new一個(gè)form或者action都可以了,怎么樣,一點(diǎn)也不難吧。
    另外,在jsp頁面里你會(huì)發(fā)現(xiàn)導(dǎo)入的標(biāo)簽變紅了,提示找不到標(biāo)簽,這一點(diǎn)和jbuilder不同,它不能在web.xml里直接發(fā)現(xiàn)這個(gè)tld文件,還需要在Resource里做一下映射,算是步太聰明,不過也就麻煩一回,do it.

    第五。導(dǎo)入你的項(xiàng)目文件到IDEA.
    ???????? IDEA支持直接從jbuilder的項(xiàng)目導(dǎo)入,也可以從Eclipse的項(xiàng)目導(dǎo)入,如果沒有看到可以從Plugins里找相應(yīng)的插件,速度也很快。當(dāng)然,如果你不愿意通過導(dǎo)入的方式這里也介紹另一個(gè)適用的辦法,在IDEA里直接新建一個(gè)工程,然后目錄直接指向你的其他項(xiàng)目所在的目錄就OK了,然后IDEA會(huì)自動(dòng)發(fā)現(xiàn)src目錄,在這個(gè)的wizard過程中你還可以根據(jù)自己的情況進(jìn)行調(diào)整,比如有些目錄需要Exclude,有些作為Test.這一切都是可以調(diào)整,靈活就在這里。

    第六。版本控制。
    ??????? IDEA內(nèi)建支持大多數(shù)的版本控制,cvs,svn,perforce,sourcesafe,應(yīng)該夠用了吧。

    第七。html文件和javascrip的動(dòng)態(tài)語法支持,偶最喜歡了。
    ?????? html的任一個(gè)元素你都可以點(diǎn)擊鼠標(biāo)跟進(jìn)去看到底有哪些東西,javaScrip編輯也相當(dāng)方便,這在jbuilder里是沒有的事情,恩,如果你需要其他的關(guān)于javaScrip的功能,去Plugins里看看吧,會(huì)有收獲的。

    ??????? 有用IDEA的兄弟不妨一起交流下心得,偶的msn : eclipse.wang@gmail.com

    ???????? 哎,寫說這幾點(diǎn)吧,我用的感覺不錯(cuò),有興趣的兄弟也嘗試一下吧,唱歌半個(gè)通宵回來寫點(diǎn)東西,天亮了,偶該睡覺了? :)?


    ???????? 對(duì)了,偶沒有拿IDEA的好處費(fèi)在做宣傳哦,這年頭什么鳥都有,^_^
    posted @ 2006-03-05 06:42 Alex 閱讀(4639) | 評(píng)論 (11)編輯 收藏

    keyword: struts錯(cuò)誤,持續(xù)構(gòu)建,checkbox

    前天在運(yùn)行應(yīng)用時(shí)有一個(gè)頁面一點(diǎn)button就轉(zhuǎn)到系統(tǒng)錯(cuò)誤頁面,折騰了好半天,在Action里打樁調(diào)試連調(diào)試信息都見不到,還以為時(shí)log4j配置出了問題,改來改去也不知道原因在哪,最后檢查居然時(shí)在Action里用錯(cuò)了Form,哎,真是要命.回憶了一下,以前這個(gè)地方一直正常,怎么這次修改了別的地方就影響到這了呢,記憶中好像是因?yàn)樽隽艘淮沃貥?gòu)不小心在批量修改的時(shí)候把這里給改了.

    現(xiàn)在總結(jié)一下Struts里可能常出現(xiàn)的錯(cuò)誤的原因:

      1.配置文件里的input或者forward寫錯(cuò)
      2.jsp里的Action對(duì)應(yīng)的.do寫錯(cuò),實(shí)際就是對(duì)應(yīng)的Form也錯(cuò)了
      3.Action里Form寫錯(cuò),或者forward為空
      4.還有Form里的屬性和jsp頁面的屬性不一致

    經(jīng)過這次的教訓(xùn)也讓我有了一個(gè)以前不怎么重視的想法要實(shí)現(xiàn),就是持續(xù)構(gòu)建,如果有了持續(xù)構(gòu)建我的每一次的提交都有報(bào)告和分析結(jié)果出來,防患于未然,也不至于讓我折騰半天為了一行代碼.
    方案就選maven + cc .

    目前國內(nèi)用的多么?沒有調(diào)查過,不過就我目前了解到的情況,好多公司的做法真是讓人覺得有點(diǎn)shit,但愿越來越好,越來越規(guī)范.

    寫到這里又想起一個(gè)關(guān)于jsp的checkbox問題,例如,在一個(gè)產(chǎn)品刪除的頁面里,每條記錄前面有一個(gè)checkbox,我們一般的做法是給checkbox的value賦值為產(chǎn)品ID的值,然后Action根據(jù)ID就可以直接刪除產(chǎn)品了,但是問題是有時(shí)候我除了需要?jiǎng)h除這個(gè)產(chǎn)品,同時(shí)還需要在下一個(gè)頁面里再將當(dāng)前頁面的東西顯示一次,讓用戶確認(rèn),就還需要除產(chǎn)品ID以外的信息了,該怎么辦呢?  我以前有一個(gè)比較笨的辦法就是在value里拼數(shù)據(jù),
    比如id | name | quantity | other,最后在Action里再解析,現(xiàn)在想來其實(shí)沒有必要,可以用<logic:iterator/>里的indexId屬性來做。
    具體請(qǐng)參看這里:
    這里貼下關(guān)鍵部分的代碼:
    jsp代碼:

    <logic:iterate id="testqclist" name="testQCActionForm" property="result" indexId="index" >
    <tr bgcolor="#FFFFFF">
    <td height="26" bgcolor="#EEEEEE">
    <div align= "center" >
    <input type="checkbox" name="checkboxVal" value="<%=index%>" ></div>
    </td>
    </tr>
    </logic:iterate>

    Action代碼: [原文作者寫在Form里實(shí)現(xiàn),不過我個(gè)人喜歡在Action里做,看你情況了]

    if (checkboxVal != null && checkboxVal.length > 0){

          
    for (int i = 0; i < checkboxVal.length; i++){

            
    int chkVal = Integer.parseInt(checkboxVal[i]); //取得checkbox的index值

            //..........................

            checkform.setSaamsampleid (datesampledVal[chkVal].toString());//取得和checkbox為true的其他屬性的值

            checkform.setSaamsampleid(saamsampleidVal[chkVal].toString());

            //......................................................

          }


        }



     

    posted @ 2006-03-05 05:58 Alex 閱讀(969) | 評(píng)論 (0)編輯 收藏

    keyword :  Meta  html  header  content
      引言

      您的個(gè)人網(wǎng)站即使做得再精彩,在“浩瀚如海”的網(wǎng)絡(luò)空間中,也如一葉扁舟不易為人發(fā)現(xiàn),如何推廣
    個(gè)人網(wǎng)站,人們首先想到的方法無外乎以下幾種:
      
      ● 在搜索引擎中登錄自己的個(gè)人網(wǎng)站
      
      ● 在知名網(wǎng)站加入你個(gè)人網(wǎng)站的鏈接

      ● 在論壇中發(fā)帖子宣傳你的個(gè)人網(wǎng)站

      很多人卻忽視了HTML標(biāo)簽META的強(qiáng)大功效,一個(gè)好的META標(biāo)簽設(shè)計(jì)可以大大提高你的個(gè)人網(wǎng)站被搜索到的可能性,有興趣嗎,誰我來重新認(rèn)識(shí)一下META標(biāo)簽吧!

      META標(biāo)簽是HTML語言HEAD區(qū)的一個(gè)輔助性標(biāo)簽,它位于HTML文檔頭部的<HEAD>標(biāo)記和<TITLE>標(biāo)記之間,它提供用戶不可見的信息。meta標(biāo)簽通常用來為搜索引擎robots定義頁面主題,或者是定義用戶瀏覽器上的cookie;它可以用于鑒別作者,設(shè)定頁面格式,標(biāo)注內(nèi)容提要和關(guān)鍵字;還可以設(shè)置頁面使其可以根據(jù)你定義的時(shí)間間隔刷新自己,以及設(shè)置RASC內(nèi)容等級(jí),等等。


      詳細(xì)介紹

      下面介紹一些有關(guān) 標(biāo)記的例子及解釋。

      META標(biāo)簽分兩大部分:HTTP標(biāo)題信息(HTTP-EQUIV)和頁面描述信息(NAME)。


      ★HTTP-EQUIV

      HTTP-EQUIV類似于HTTP的頭部協(xié)議,它回應(yīng)給瀏覽器一些有用的信息,以幫助正確和精確地顯示網(wǎng)頁內(nèi)容。常用的HTTP-EQUIV類型有:


      1、Content-Type和Content-Language (顯示字符集的設(shè)定)

      說明:設(shè)定頁面使用的字符集,用以說明主頁制作所使用的文字已經(jīng)語言,瀏覽器會(huì)根據(jù)此來調(diào)用相應(yīng)的字符集顯示page內(nèi)容。

      用法:<Meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">
          <Meta http-equiv="Content-Language" Content="zh-CN">

      注意: 該META標(biāo)簽定義了HTML頁面所使用的字符集為GB2132,就是國標(biāo)漢字碼。如果將其中的“charset=GB2312”替換成“BIG5”,則該頁面所用的字符集就是繁體中文Big5碼。當(dāng)你瀏覽一些國外的站點(diǎn)時(shí),IE瀏覽器會(huì)提示你要正確顯示該頁面需要下載xx語支持。這個(gè)功能就是通過讀取HTML頁面META標(biāo)簽的Content-Type屬性而得知需要使用哪種字符集顯示該頁面的。如果系統(tǒng)里沒有裝相應(yīng)的字符集,則IE就提示下載。其他的語言也對(duì)應(yīng)不同的charset,比如日文的字符集是“iso-2022-jp ”,韓文的是“ks_c_5601”。
          
      Content-Type的Content還可以是:text/xml等文檔類型;
      Charset選項(xiàng):ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content還可以是:EN、FR等語言代碼。

      2、Refresh (刷新)

       說明:讓網(wǎng)頁多長時(shí)間(秒)刷新自己,或在多長時(shí)間后讓網(wǎng)頁自動(dòng)鏈接到其它網(wǎng)頁。
       用法:<Meta http-equiv="Refresh" Content="30">
          <Meta http-equiv="Refresh" Content="5; Url=http://www.xia8.net">
       注意:其中的5是指停留5秒鐘后自動(dòng)刷新到URL網(wǎng)址。

      3、Expires (期限)

       說明:指定網(wǎng)頁在緩存中的過期時(shí)間,一旦網(wǎng)頁過期,必須到服務(wù)器上重新調(diào)閱。
       用法:<Meta http-equiv="Expires" Content="0">
          <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
       注意:必須使用GMT的時(shí)間格式,或直接設(shè)為0(數(shù)字表示多少時(shí)間后過期)。

      4、Pragma (cach模式)

       說明:禁止瀏覽器從本地機(jī)的緩存中調(diào)閱頁面內(nèi)容。
       用法:<Meta http-equiv="Pragma" Content="No-cach">
       注意:網(wǎng)頁不保存在緩存中,每次訪問都刷新頁面。這樣設(shè)定,訪問者將無法脫機(jī)瀏覽。

      5、Set-Cookie (cookie設(shè)定)

      說明:瀏覽器訪問某個(gè)頁面時(shí)會(huì)將它存在緩存中,下次再次訪問時(shí)就可從緩存中讀取,以提高速度。當(dāng)你希望訪問者每次都刷新你廣告的圖標(biāo),或每次都刷新你的計(jì)數(shù)器,就要禁用緩存了。通常HTML文件沒有必要禁用緩存,對(duì)于ASP等頁面,就可以使用禁用緩存,因?yàn)槊看慰吹降捻撁娑际窃诜?wù)器動(dòng)態(tài)生成的,緩存就失去意義。如果網(wǎng)頁過期,那么存盤的cookie將被刪除。
       用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
           21-Oct-98 16:14:21 GMT; path=/">
       注意:必須使用GMT的時(shí)間格式。

      6、Window-target (顯示窗口的設(shè)定)

       說明:強(qiáng)制頁面在當(dāng)前窗口以獨(dú)立頁面顯示。
       用法:<Meta http-equiv="Widow-target" Content="_top">
       注意:這個(gè)屬性是用來防止別人在框架里調(diào)用你的頁面。Content選項(xiàng):_blank、_top、_self、_parent。

      7、Pics-label (網(wǎng)頁RSAC等級(jí)評(píng)定)
       說明:在IE的Internet選項(xiàng)中有一項(xiàng)內(nèi)容設(shè)置,可以防止瀏覽一些受限制的網(wǎng)站,而網(wǎng)站的限制級(jí)
          別就是通過該參數(shù)來設(shè)置的。
       用法:<META http-equiv="Pics-label" Contect=
                   "(PICS-1.1'http://www.rsac.org/ratingsv01.html'
           I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
           for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))">

       注意:不要將級(jí)別設(shè)置的太高。RSAC的評(píng)估系統(tǒng)提供了一種用來評(píng)價(jià)Web站點(diǎn)內(nèi)容的標(biāo)準(zhǔn)。用戶可以設(shè)置Microsoft Internet Explorer(IE3.0以上)來排除包含有色情和暴力內(nèi)容的站點(diǎn)。上面這個(gè)例子中的HTML取自Microsoft的主頁。代碼中的(n 0 s 0 v 0 l 0)表示該站點(diǎn)不包含不健康內(nèi)容。級(jí)別的評(píng)定是由RSAC,即美國娛樂委員會(huì)的評(píng)級(jí)機(jī)構(gòu)評(píng)定的,如果你想進(jìn)一步了解RSAC評(píng)估系統(tǒng)的等級(jí)內(nèi)容,或者你需要評(píng)價(jià)自己的網(wǎng)站,可以訪問RSAC的站點(diǎn):http://www.rsac.org/。

      8、Page-Enter、Page-Exit (進(jìn)入與退出)

       說明:這個(gè)是頁面被載入和調(diào)出時(shí)的一些特效。
       用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
          <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
       注意:blendTrans是動(dòng)態(tài)濾鏡的一種,產(chǎn)生漸隱效果。另一種動(dòng)態(tài)濾鏡RevealTrans也可以用于頁面進(jìn)入與退出效果:

          <Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
          <Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)">

           Duration  表示濾鏡特效的持續(xù)時(shí)間(單位:秒)
           Transition 濾鏡類型。表示使用哪種特效,取值為0-23。

           0 矩形縮小
           1 矩形擴(kuò)大
           2 圓形縮小
           3 圓形擴(kuò)大
           4 下到上刷新
           5 上到下刷新
           6 左到右刷新
           7 右到左刷新
           8 豎百葉窗
           9 橫百葉窗
           10 錯(cuò)位橫百葉窗
           11 錯(cuò)位豎百葉窗
           12 點(diǎn)擴(kuò)散
           13 左右到中間刷新
           14 中間到左右刷新
           15 中間到上下
           16 上下到中間
           17 右下到左上
           18 右上到左下
           19 左上到右下
           20 左下到右上
           21 橫條
           22 豎條
           23 以上22種隨機(jī)選擇一種

      9、MSThemeCompatible (XP主題)
       說明:是否在IE中關(guān)閉 xp 的主題
       用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
       注意:關(guān)閉 xp 的藍(lán)色立體按鈕系統(tǒng)顯示樣式,從而和win2k 很象。

      10、IE6 (頁面生成器)
       說明:頁面生成器generator,是ie6
       用法:<Meta http-equiv="IE6" Content="Generator">
       注意:用什么東西做的,類似商品出廠廠商。

      11、Content-Script-Type (腳本相關(guān))
       說明:這是近來W3C的規(guī)范,指明頁面中腳本的類型。
       用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">
       注意:

      ★NAME變量

      name是描述網(wǎng)頁的,對(duì)應(yīng)于Content(網(wǎng)頁內(nèi)容),以便于搜索引擎機(jī)器人查找、分類(目前幾乎所有的搜索引擎都使用網(wǎng)上機(jī)器人自動(dòng)查找meta值來給網(wǎng)頁分類)。
      name的value值(name="")指定所提供信息的類型。有些值是已經(jīng)定義好的。例如description(說明)、keyword(關(guān)鍵字)、refresh(刷新)等。還可以指定其他任意值,如:creationdate(創(chuàng)建日期) 、
    document ID(文檔編號(hào))和level(等級(jí))等。
      name的content指定實(shí)際內(nèi)容。如:如果指定level(等級(jí))為value(值),則Content可能是beginner(初級(jí))、intermediate(中級(jí))、advanced(高級(jí))。


      1、Keywords (關(guān)鍵字)
       說明:為搜索引擎提供的關(guān)鍵字列表
       用法:<Meta name="Keywords" Content="關(guān)鍵詞1,關(guān)鍵詞2,關(guān)鍵詞3,關(guān)鍵詞4,……">
       注意:各關(guān)鍵詞間用英文逗號(hào)“,”隔開。META的通常用處是指定搜索引擎用來提高搜索質(zhì)量的關(guān)鍵詞。當(dāng)數(shù)個(gè)META元素提供文檔語言從屬信息時(shí),搜索引擎會(huì)使用lang特性來過濾并通過用戶的語言優(yōu)先參照來顯示搜索結(jié)果。例如:
          <Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
          <Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil">

      2、Description (簡介)
       說明:Description用來告訴搜索引擎你的網(wǎng)站主要內(nèi)容。
       用法:<Meta name="Description" Content="你網(wǎng)頁的簡述">
       注意:

      3、Robots (機(jī)器人向?qū)?
       說明:Robots用來告訴搜索機(jī)器人哪些頁面需要索引,哪些頁面不需要索引。Content的參數(shù)有all、none、index、noindex、follow、nofollow。默認(rèn)是all。
       用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
       注意:許多搜索引擎都通過放出robot/spider搜索來登錄網(wǎng)站,這些robot/spider就要用到meta元素的一些特性來決定怎樣登錄。

        all:文件將被檢索,且頁面上的鏈接可以被查詢;
        none:文件將不被檢索,且頁面上的鏈接不可以被查詢;(和 "noindex, no follow" 起相同作用)
        index:文件將被檢索;(讓robot/spider登錄)
        follow:頁面上的鏈接可以被查詢;
        noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;(不讓robot/spider登錄)
       nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。(不讓robot/spider順著此頁的連接往下探找)

      4、Author (作者)
       說明:標(biāo)注網(wǎng)頁的作者或制作組
       用法:<Meta name="Author" Content="張三,abc@sina.com">
       注意:Content可以是:你或你的制作組的名字,或Email

      5、Copyright (版權(quán))
       說明:標(biāo)注版權(quán)
       用法:<Meta name="Copyright" Content="本頁版權(quán)歸Zerospace所有。All Rights Reserved">
       注意:

      6、Generator (編輯器)
       說明:編輯器的說明
       用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
       注意:Content="你所用編輯器"

      7、revisit-after (重訪)
       說明:
       用法:<META name="revisit-after" CONTENT="7 days" >
       注意:

      ★Head中的其它一些用法


      1、scheme (方案)
       說明:scheme can be used when name is used to specify how the value of content should
          be interpreted.
       用法:<meta scheme="ISBN" name="identifier" content="0-14-043205-1" />
       注意:

      2、Link (鏈接)
       說明:鏈接到文件
       用法:<Link href="soim.ico" rel="Shortcut Icon">
       注意:很多網(wǎng)站如果你把她保存在收件夾中后,會(huì)發(fā)現(xiàn)它連帶著一個(gè)小圖標(biāo),如果再次點(diǎn)擊進(jìn)入之后還會(huì)發(fā)現(xiàn)地址欄中也有個(gè)小圖標(biāo)。現(xiàn)在只要在你的頁頭加上這段話,就能輕松實(shí)現(xiàn)這一功能。<LINK> 用來將目前文件與其它 URL 作連結(jié),但不會(huì)有連結(jié)按鈕,用於 <HEAD> 標(biāo)記間, 格式如下:
           <link href="URL" rel="relationship">
           <link href="URL" rev="relationship">

      3、Base (基鏈接)
       說明:插入網(wǎng)頁基鏈接屬性
       用法:<Base target="_blank">
       注意:你網(wǎng)頁上的所有相對(duì)路徑在鏈接時(shí)都將在前面加上“http://www.cn8cn.com/”。其中target="_blank"是鏈接文件在新的窗口中打開,你可以做其他設(shè)置。將“_blank”改為“_parent”是鏈接文件將在當(dāng)前窗口的父級(jí)窗口中打開;改為“_self”鏈接文件在當(dāng)前窗口(幀)中打開;改為“_top”鏈接文件全屏顯示。


      以上是META標(biāo)簽的一些基本用法,其中最重要的就是:Keywords和Description的設(shè)定。為什么呢?道理很簡單,這兩個(gè)語句可以讓搜索引擎能準(zhǔn)確的發(fā)現(xiàn)你,吸引更多的人訪問你的站點(diǎn)!根據(jù)現(xiàn)在流行搜索引擎(Google,Lycos,AltaVista等)的工作原理,搜索引擎先派機(jī)器人自動(dòng)在WWW上搜索,當(dāng)發(fā)現(xiàn)新的網(wǎng)站時(shí),便于檢索頁面中的Keywords和Description,并將其加入到自己的數(shù)據(jù)庫,然后再根據(jù)關(guān)鍵詞的密度將網(wǎng)站排序。

      由此看來,我們必須記住添加Keywords和Description的META標(biāo)簽,并盡可能寫好關(guān)鍵字和簡介。否則,
    后果就會(huì)是:
      
      ● 如果你的頁面中根本沒有Keywords和Description的META標(biāo)簽,那么機(jī)器人是無法將你的站點(diǎn)加入數(shù)
        據(jù)庫,網(wǎng)友也就不可能搜索到你的站點(diǎn)。

      ● 如果你的關(guān)鍵字選的不好,關(guān)鍵字的密度不高,被排列在幾十甚至幾百萬個(gè)站點(diǎn)的后面被點(diǎn)擊的可
        能性也是非常小的。

      寫好Keywords(關(guān)鍵字)要注意以下幾點(diǎn):


      ● 不要用常見詞匯。例如www、homepage、net、web等。

      ● 不要用形容詞,副詞。例如最好的,最大的等。

      ● 不要用籠統(tǒng)的詞匯,要盡量精確。例如“愛立信手機(jī)”,改用“T28SC”會(huì)更好。


      “三人之行,必有我?guī)煛保瑢ふ液线m關(guān)鍵詞的技巧是:到Google、Lycos、Alta等著名搜索引擎,搜索與
    你的網(wǎng)站內(nèi)容相仿的網(wǎng)站,查看排名前十位的網(wǎng)站的META關(guān)鍵字,將它們用在你的網(wǎng)站上,效果可想而知了。

      ★小竅門

      為了提高搜索點(diǎn)擊率,這里還有一些“捷徑”可以幫得到你:

      ● 為了增加關(guān)鍵詞的密度,將關(guān)鍵字隱藏在頁面里(將文字顏色定義成與背景顏色一樣)。

      ● 在圖像的ALT注釋語句中加入關(guān)鍵字。如:<IMG SRC="xxx.gif" Alt="Keywords">

      ● 利用HTML的注釋語句,在頁面代碼里加入大量關(guān)鍵字。用法: <!-- 這里插入關(guān)鍵字 -->


    <head>
      <title>文件頭,顯示在瀏覽器標(biāo)題區(qū)</title>
      <meta http-equiv="Content-Language" content="zh-cn">
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
      <meta name="ProgId" content="FrontPage.Editor.Document">
      <meta name="制作人" content="唐蓉生">
      <meta name="主題詞" content="HTML 網(wǎng)頁制作 課件">
    </head>
    posted @ 2006-03-02 15:46 Alex 閱讀(329) | 評(píng)論 (0)編輯 收藏

    1. Java組件VLDocking 2.0.6 新版發(fā)布[swing的輔助工具]
    2. 七劍與java開源工具 [Eclipse + cvs + ant + junit + hibernate + spring + struts]
    3. InfoWorld 預(yù)測:2006年值得期待的11項(xiàng)創(chuàng)新
    4. Java API文檔工具Ashkelon 0.9 發(fā)布
    5. 問題跟蹤管理工具JIRA 3.5 發(fā)布
    6. JAVA操作Excel的方法
    7. Jetspeed介紹


    posted @ 2006-02-26 00:35 Alex 閱讀(166) | 評(píng)論 (0)編輯 收藏

         摘要: keyword:分頁 緩存 eXtremeTable oscache 引子:這幾天在弄一個(gè)關(guān)于頁面的分頁,查了一下網(wǎng)上的資料,大都不合要求,要么就是說怎么在數(shù)據(jù)庫這個(gè)層面上如何實(shí)現(xiàn),暈,有了hibernate我用那么費(fèi)勁翻身么.看到一個(gè)用的比較多的方案是做了一個(gè)Page工具類,實(shí)現(xiàn)諸如getBooks(),getNextPage(),看了一下底層實(shí)現(xiàn)居然是"select * from book",...  閱讀全文
    posted @ 2006-02-25 21:26 Alex 閱讀(2680) | 評(píng)論 (6)編輯 收藏

         摘要: keyword: 配置 Tomcat配置 MySql配置 server.conf my.ini 啟動(dòng)參數(shù) 虛擬機(jī)參數(shù) jsp預(yù)編譯 Author: Alex發(fā)布環(huán)境: Tomcat5 + MySql4 +Hibernate + Win2003 一.MySql配置文件 my.ini文件配置Code highlighting produced by Actipro CodeHighlighte...  閱讀全文
    posted @ 2006-02-24 12:52 Alex 閱讀(2497) | 評(píng)論 (4)編輯 收藏

    keyword:MySql字段,Hibernate session

    一.MySql字段敏感

    這幾天怪問題真是不少,這不剛建的一個(gè)數(shù)據(jù)庫的表用MiddleGen批量生成hbm.xml文件居然和數(shù)據(jù)庫的數(shù)據(jù)類型不一致.
    MySql建表語句如下:
    drop table if exists book;

    /*==============================================================*/
    /* Table: book                                                  */
    /*==============================================================*/
    create table book
    (
       id                             
    int                            not null,
       name                           
    varchar(100),
       author                         
    varchar(100),
       date                           date,
       price                          
    int,
       
    primary key (id)
    )
    comment
    ="Book table"
    type 
    = InnoDB;

    生成的hbm.xml文件如下:

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" 
    >
        
    <hibernate-mapping>
    <!-- 
        Created by the Middlegen Hibernate plugin 2.1

        http://boss.bekk.no/boss/middlegen/
        http://www.hibernate.org/
    -->

    <class 
        
    name="net.foxlog.prj.Book" 
        table
    ="book"
    >
        
    <meta attribute="class-description" inherit="false">
           @hibernate.class
            table="book"
        
    </meta>

        
    <id
            
    name="id"
            type
    ="java.lang.Long"
            column
    ="id"
        
    >
            
    <meta attribute="field-description">
               @hibernate.id
                generator-class="assigned"
                type="java.lang.Long"
                column="id"


            
    </meta>
            
    <generator class="assigned" />
        
    </id>

        
    <property
            
    name="name"
            type
    ="java.lang.String"
            column
    ="name"
            length
    ="100"
        
    >
            
    <meta attribute="field-description">
               @hibernate.property
                column="name"
                length="100"
            
    </meta>    
        
    </property>
        
    <property
            
    name="author"
            type
    ="java.lang.String"
            column
    ="author"
            length
    ="100"
        
    >
            
    <meta attribute="field-description">
               @hibernate.property
                column="author"
                length="100"
            
    </meta>    
        
    </property>
        
    <property
            
    name="date"
            type
    ="java.sql.Date"
            column
    ="date"
            length
    ="10"
        
    >
            
    <meta attribute="field-description">
               @hibernate.property
                column="date"
                length="10"
            
    </meta>    
        
    </property>
        
    <property
            
    name="price"
            type
    ="java.lang.String"
            column
    ="price"
            length
    ="10"
        
    >
            
    <meta attribute="field-description">
               @hibernate.property
                column="price"
                length="10"
            
    </meta>    
        
    </property>

        
    <!-- Associations -->
      

    </class>
    </hibernate-mapping>

    注意到?jīng)]有,id的類型變成了Long型了,而price居然變成了String了,暈啊.

    各位碰到過這個(gè)問題么?

    最后還是找到問題所在了,實(shí)際上是建表有問題,問題就出在字段的名稱上,把id改為ID,price改為PRICE就沒問題了!  MySql對(duì)id和price敏感? 不得而知,目前看來好像是這樣.只是提醒我以后建表養(yǎng)成一個(gè)習(xí)慣,都用大寫的就沒問題了.
    沒想到一次測試中隨便建的一個(gè)表發(fā)現(xiàn)了這么個(gè)有趣的事情  :)

    二.Hibernate的session關(guān)閉問題
    用hibernate的工具類獲得session有沒有碰到過session is closed的錯(cuò)誤提示? 我又幸運(yùn)的碰到這個(gè)問題了,呵呵,我怎么有那么多問題啊,暈了,我看來是問題先生了,我的一個(gè)同事上次也跟我說過這個(gè)事情,后來他沒有正面解決這個(gè),繞過去了,他用Spring去替自己解決了,呵呵,也夠狠的.不過問題實(shí)際上是獲得session的時(shí)候需要增加一個(gè)判斷. 即 session.isOpen() == false;
     
    DBUtil.java代碼如下:
    /**
         * 返回一個(gè)可用的數(shù)據(jù)庫Session連接
         * 
    @return Hibernate中對(duì)數(shù)據(jù)庫的Session連接
         * 
    @throws HibernateException
         
    */
        
    public static Session currentSession() throws HibernateException
        {
            Session s 
    = (Session) session.get();
            
    // Open a new Session, if this Thread has none yet
            if (null==|| s.isOpen()==false)//注意這里
            {
                s 
    = sessionFactory.openSession();
                session.set(s);
            }
            
    return s;
        }


    posted @ 2006-02-24 00:25 Alex 閱讀(1376) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共15頁: First 上一頁 7 8 9 10 11 12 13 14 15 下一頁 
    主站蜘蛛池模板: 亚洲av无码一区二区三区乱子伦| 亚洲人成www在线播放| 国产亚洲综合一区二区三区| 蜜桃成人无码区免费视频网站| 亚洲А∨精品天堂在线| 亚洲人和日本人jizz| 大地资源在线资源免费观看 | 久久精品国产亚洲av麻| 深夜福利在线免费观看| 天天操夜夜操免费视频| 久久久久久亚洲精品成人| aa级女人大片喷水视频免费| 国产成人免费一区二区三区| 亚洲人成在线播放| 三年片在线观看免费观看大全动漫| 亚洲国产精品一区二区九九| 亚洲人成色777777老人头| 国产2021精品视频免费播放| 免费成人在线电影| 亚洲国产电影av在线网址| 亚洲日韩国产二区无码| 国产91色综合久久免费分享| 亚洲AV美女一区二区三区| 久久最新免费视频| 亚洲七七久久精品中文国产| 国产精品亚洲а∨无码播放麻豆| 免费a级毛片高清视频不卡| 亚洲综合免费视频| 污污网站18禁在线永久免费观看| 亚洲中文字幕无码久久2017 | 日韩亚洲欧洲在线com91tv| 国产免费久久精品丫丫| 亚洲福利精品电影在线观看| 蜜臀亚洲AV无码精品国产午夜.| 野花香在线视频免费观看大全| 亚洲国产精品13p| 男人和女人高潮免费网站| 免费国产怡红院在线观看| 色窝窝亚洲av网| 免费在线精品视频| 免费人人潮人人爽一区二区|