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

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

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

    Asktalk

    天行健,君子以自強(qiáng)不息!
    posts - 21, comments - 79, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) ::  :: 聯(lián)系 :: 聚合  :: 管理

    2005年5月20日

     

    這是一個(gè)目前最好的一個(gè)開(kāi)源分頁(yè)標(biāo)簽的實(shí)現(xiàn)---extremeTable標(biāo)簽。今天談?wù)勊?/span>Limit的設(shè)計(jì)架構(gòu)思想。

    這個(gè)設(shè)計(jì)很通用,經(jīng)過(guò)作者的多次重構(gòu),現(xiàn)在extremeTable的架構(gòu)非常漂亮。這個(gè)標(biāo)簽現(xiàn)在缺點(diǎn)是有些參數(shù)對(duì)mvc控制器屏蔽了,應(yīng)提供一致的對(duì)外接口。不過(guò)整體上設(shè)計(jì)還是很精致的,面向?qū)ο髞?lái)處理 html元素,與spring非常的默契,非常便于開(kāi)發(fā)和測(cè)試。

    類圖關(guān)系

    1, 工廠LimitFactory

    TableLimitFactoryAbstractLimitFactory,LimitFactory

    TableLimitFactory是最終實(shí)現(xiàn)的工廠,它extendsAbstractLimitFactory抽象類,AbstractLimitFactory implementsLimitFactory接口。

    TableLimitFactory主要是用來(lái)實(shí)例化,通過(guò)構(gòu)造函數(shù)傳入?yún)?shù)。同時(shí)創(chuàng)建Registry來(lái)完成jsp頁(yè)面參數(shù)傳入Registry。當(dāng)然還有一個(gè)功能就是從web.xml的配置文件讀取一些全局參數(shù)。首先讀取配置文件參數(shù),然后根據(jù)參數(shù)創(chuàng)建LimitRegistry對(duì)象。

    this.registry = new LimitRegistry(context, tableId, prefixWithTableId, state, stateAttr);

    AbstractLimitFactory主要是用來(lái)獲取jsp頁(yè)面上設(shè)置的參數(shù),比如分頁(yè)的信息(第幾頁(yè),起始行,結(jié)束行,每頁(yè)顯示行數(shù),查詢條件,排序條件等),當(dāng)然他是通過(guò)工具類Registry來(lái)實(shí)現(xiàn)。

    2, Limit

    TableLimit,Limit。其主要作用是一個(gè)參數(shù)參數(shù)器,就是把Registry對(duì)象的參數(shù)傳入TableLimit,考慮到分層吧,TableLimit是該標(biāo)簽和action通信的橋梁。就像我們的j2ee項(xiàng)目vodaostrutsview等數(shù)據(jù)傳輸工具。

    3, Preferences

    TableProperties,Properties 主要是來(lái)實(shí)現(xiàn)從web.xml配置的文件中讀取配置的一些全局參數(shù)。

    InputStream input = this.getClass().getResourceAsStream(preferencesLocation);

    if (input != null) {

    properties.load(input);

    }

    其中preferencesLocation是路徑,在TableLimitFactory初始化時(shí)候,通過(guò)工具類TableModelUtils.getPreferencesLocation(context)獲取。

    這個(gè)設(shè)計(jì)也是大多數(shù)需要配置文件的系統(tǒng)常用的方法。

    4, Registry

    LimitRegistry,AbstractRegistry,Registry

    這個(gè)體系結(jié)構(gòu)和上面的工廠模式一樣,就是LimitRegistry主要是用來(lái)實(shí)例化,通過(guò)構(gòu)造函數(shù)傳入?yún)?shù)。AbstractRegistry是實(shí)際實(shí)現(xiàn)類,獲取jsp表單提交的參數(shù),并提供getter方法供Limit來(lái)使用。Registry是一個(gè)接口。

    所以這設(shè)計(jì)模式,我們可以來(lái)學(xué)習(xí),

    經(jīng)典表述:抽象類接口

    類:初始化,定義構(gòu)造函數(shù),傳入?yún)?shù)。

    抽象類:定義業(yè)務(wù)方法在此。

    接口:定義接口方法,這個(gè)不用多說(shuō)。

    (作者:asktalk   來(lái)自 http://www.tkk7.com/askltak 原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處)

    posted @ 2007-12-26 16:17 Asktalk 閱讀(4612) | 評(píng)論 (5)編輯 收藏

     

    下面是從struts的角度來(lái)談?wù)?/span>spring自帶的web框架的使用。
    當(dāng)然,我們?cè)谂渲?/span>web框架前,需要把spring配置好,這里就不多說(shuō)了。

    1.web框架核心servletweb.xml中的配置。


     

     1<servlet>  
     2<servlet-name>Dispatcher</servlet-name>  
     3<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <init-param>   
     4<param-name>contextConfigLocation</param-name>   <param-value>/WEB-INF/Config.xml</param-value>
     5  </init-param> 
     6</servlet>  
     7
     8<servlet-mapping>  
     9<servlet-name>Dispatcher</servlet-name>  
    10<url-pattern>*.do</url-pattern>
    11 </servlet-mapping>
    12

     

    如果沒(méi)有配置config.xml文件,那么其默認(rèn)的配置文件為[ servlet-name ]-servlet.xml 。也就是我們這個(gè)配置的默認(rèn)配置文件是Dispatcher-servlet.xml

    2.web框架的xml配置

    spring web框架與struts最大的不同就是spring web框架根據(jù)分工,把每一種功能都定義為一種組件,所以在開(kāi)發(fā)過(guò)程中需要配置的東西就非常多;Spring中分為幾個(gè)角色:

    核心控制器,就是web框架的主 servlet

    業(yè)務(wù)控制器,也就是struts中的action對(duì)象;

    映射處理器,定義了訪問(wèn)路徑如何與webxml中的bean相匹配,就是定義了一種策略;

    視圖和視圖解析器,視圖就是jstl,velocity,xslt等,視圖解析器定義了action最終導(dǎo)航頁(yè)面的策略;

    模型,就是struts MVC結(jié)構(gòu)中的model

    Command對(duì)象,類似于struts中的formBean;

    2.1 Spring web框架與struts框架的區(qū)別

    下面列出了一些。例如,

    Web框架要攔截*.do路徑,那么*.do如何與我們下面的bean匹配,就需要一個(gè)映射控制器。在struts中就是名字相同的匹配,不需要配置。

    action最后要導(dǎo)向到不同的頁(yè)面,在struts中我們用的是默認(rèn)的不需要在xml文件中配置,在spring中就需要配置視圖解析器。

    下面代碼中,ActioncommandClass配置的就是類似于struts中的formBean對(duì)象。

     1<?xml version="1.0" encoding="UTF-8"?>
     2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
     3 "http://www.springframework.org/dtd/spring-beans.dtd">
     4<beans>
     5 <!--Definition of View Resolver -->
     6 <bean id="viewResolver"
     7  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     8  <property name="viewClass"> 
     9   <value>org.springframework.web.servlet.view.JstlView</value>
    10  </property>
    11  <property name="prefix">
    12   <value>/WEB-INF/view/</value>
    13  </property>
    14  <property name="suffix">
    15   <value>.jsp</value>
    16  </property>
    17 </bean>
    18  
    19<!—就是我們上面說(shuō)的映射控制器 -->
    20 <!--Request Mapping -->
    21 <bean id="urlMapping"
    22  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    23  <property name="mappings">
    24   <props>
    25    <prop key="/login.do">LoginAction</prop>
    26   </props>
    27  </property>
    28 </bean>
    29 
    30<!---類似于struts的action配置-->
    31 <!---Action Definition-->
    32 <bean id="LoginAction"
    33  class="com.maxway.action.LoginAction">
    34  <property name="commandClass">
    35   <value>com.maxway.action.LoginInfo</value>
    36  </property>
    37  <property name="fail_view">
    38   <value>loginfail</value>
    39  </property>
    40  <property name="success_view">
    41   <value>main</value>
    42  </property>
    43 </bean>
    44</beans>
    45


     

    3.代碼的編寫(xiě)

    Action不外乎繼承一些現(xiàn)成的類,來(lái)實(shí)現(xiàn)我們view部分的業(yè)務(wù)。
    作者:http://www.tkk7.com/asktalk

    posted @ 2007-12-25 02:23 Asktalk 閱讀(4324) | 評(píng)論 (0)編輯 收藏

     

    最近我一直在研究Eclipse的架構(gòu)體系,下面我們就來(lái)看看Eclipse的啟動(dòng)機(jī)制吧

    1Eclipse源代碼       
    eclipse-sourceBuild-srcIncluded-3.3.1.1.zip   
    版本:3.3.1.1        大?。?/span>95.058MB
    下載地址:http://download.eclipse.org/eclipse/downloads

    解壓后的目錄結(jié)構(gòu)如下圖,通過(guò)執(zhí)行build.bat可以編譯出完整的Eclipse-sdk-3.3.1.1運(yùn)行包,和我們網(wǎng)上下載的一樣。但是這個(gè)過(guò)程可能需要一個(gè)小時(shí)左右的時(shí)間,要有耐性哦。所有的插件工程目錄在plugins中,我們只需要導(dǎo)入現(xiàn)有工程即可把plugins下所有工程導(dǎo)入。

    下面我們就先來(lái)研究一下Eclipse最核心的部分,就是RCP部分必須的插件。下面我列出了Eclipse RCP需要的插件。

    將這些代碼解壓縮到一個(gè)空目錄里,然后導(dǎo)入到Source InsightProject里。     

    二、Eclipse啟動(dòng)過(guò)程

    首先我們從Eclipse的啟動(dòng)過(guò)程開(kāi)始分析。

    1、exe部分的引導(dǎo)

    eclipse.exeEclipse的啟動(dòng)文件,是與平臺(tái)相關(guān)的可執(zhí)行文件。它的功能比較簡(jiǎn)單,主要是加載startup.jar文件,代碼在Eclipse源代碼的eclipse-sourceBuild-srcIncluded-3.3.1.1"plugins"org.eclipse.platform"launchersrc.zip,對(duì)應(yīng)多個(gè)平臺(tái)。對(duì)于win32平臺(tái),你可以直接運(yùn)行win32目錄下的build.bat文件來(lái)編譯得到它(需要安裝C編譯器)。

    2、java代碼部分的執(zhí)行入口

    對(duì)于Eclipse 3.3.1.1版本來(lái)說(shuō),如果在eclipse目錄下沒(méi)有找到startup.jar,則直接執(zhí)行org.eclipse.equinox.launcher.Main.main方法。

    當(dāng)然我們可以在eclipse目錄下定制我們自己的啟動(dòng)引導(dǎo)包startup.jar,現(xiàn)在Eclipse 3.3.1.1好像已經(jīng)不建議這樣做了。如果有這個(gè)包,那么這個(gè)包將是java代碼的執(zhí)行入口,你可以在命令行下運(yùn)行java -jar startup.jar命令來(lái)啟動(dòng)Eclipse。它的入口是org.eclipse.core.launcher.Main類,這個(gè)類最終執(zhí)行的還是org.eclipse.equinox.launcher.Main.main方法。它對(duì)應(yīng)的源代碼在org.eclipse.equinox.launcher目錄下的Main.java。關(guān)于此文件的定制詳細(xì)信息請(qǐng)查看eclipse-sourceBuild-srcIncluded-3.3.1.1"plugins"org.eclipse.platform"launchersrc.zip中的eclipse.c的注解部分。

    我們從main函數(shù)往后跟蹤,找到basicRun方法,這個(gè)是啟動(dòng)的主要部分。

        protectedvoid basicRun(String[] args) throws Exception {

            System.getProperties().put("eclipse.startTime", Long.toString(System.currentTimeMillis())); //$NON-NLS-1$

            commands = args;

            String[] passThruArgs = processCommandLine(args);

           

            if (!debug)

               // debug can be specified as system property as well

               debug = System.getProperty(PROP_DEBUG) != null;

            setupVMProperties();     //設(shè)置VM屬性

            processConfiguration();   //讀取configuration/config.ini配置文件

           

            // need to ensure that getInstallLocation is called at least once to initialize the value.

            // Do this AFTER processing the configuration to allow the configuration to set

            // the install location. 

            getInstallLocation();

            // locate boot plugin (may return -dev mode variations)

            URL[] bootPath = getBootPath(bootLocation);

            

            //Set up the JNI bridge. We need to know the install location to find the shared library

            setupJNI(bootPath);

           

            //ensure minimum Java version, do this after JNI is set up so that we can write an error message

            //with exitdata if we fail.

            if (!checkVersion(System.getProperty("java.version"), System.getProperty(PROP_REQUIRED_JAVA_VERSION))) //$NON-NLS-1$

                return;

           

            setSecurityPolicy(bootPath); //設(shè)置執(zhí)行權(quán)限

            // splash handling is done here, because the default case needs to know

            // the location of the boot plugin we are going to use

            handleSplash(bootPath);

            beforeFwkInvocation();

            invokeFramework(passThruArgs, bootPath);    //啟動(dòng)Eclipse內(nèi)核

        }

    posted @ 2007-12-22 16:33 Asktalk 閱讀(4905) | 評(píng)論 (3)編輯 收藏

    先列出這些開(kāi)源項(xiàng)目,隨后對(duì)其實(shí)現(xiàn)過(guò)程深入分析。

    1,Hibernate Synchronizer Eclipse Plugin   最近更新在2006.04.26
          http://hibernatesynch.sourceforge.net/   
          源代碼::pserver:anonymous@hibernatesynch.cvs.sourceforge.net:/cvsroot/hibernatesynch   
          HibernateSynchronizer3   為新項(xiàng)目,支持Eclipse3
          HibernateSynchronizer     為舊項(xiàng)目,支持Eclipse2 

          本插件使用方法:http://dev2dev.bea.com.cn/bbsdoc/20060124187.html
         可以生成hibernate的所有配置文件和dao。基本流程是 hibernate.cfg.xml->xxx.hbm.xml->po and dao

    2,  SqlExplorer    最近更新 2007.09.08
         http://www.sqlexplorer.org/index.php
         http://sourceforge.net/projects/eclipsesql
         源代碼::pserver:anonymous@eclipsesql.cvs.sourceforge.net:/cvsroot/eclipsesql
         與myEclipse的數(shù)據(jù)庫(kù)管理工具相近。

    3,GmailClipse 一個(gè)Eclipse RCP 
         http://sourceforge.net/projects/gmclipse/
         源代碼::pserver:anonymous@gmclipse.cvs.sourceforge.net:/cvsroot/gmclipse    源代碼為空,沒(méi)有共享
         像hotmail一樣的郵件客戶端收發(fā)系統(tǒng)。其源代碼對(duì)于學(xué)習(xí)RCP有很大的幫助。

    4,  SpringIde    spring官方的IDE工具。
          源代碼:http://springide.org/project/browser/trunk

    5, Hibernate tools   hibernate官方IDE工具。
           官方介紹:http://www.hibernate.org/268.html 
           源代碼svn: http://anonhibernate.labs.jboss.com/branches/Branch_3_2/HibernateExt 

    6,   Html解析工具 HTML Parser
          官方網(wǎng)址:http://htmlparser.sourceforge.net/
         

         
         

    posted @ 2007-12-22 00:43 Asktalk 閱讀(1174) | 評(píng)論 (0)編輯 收藏

    有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連接MYSQL、修改密碼、增加用戶等方面來(lái)學(xué)習(xí)一些MYSQL的常用命令。

    一、連接MYSQL。

    格式: mysql -h主機(jī)地址 -u用戶名 -p用戶密碼

    1、例1:連接到本機(jī)上的MYSQL。

    首先在打開(kāi)DOS窗口,然后進(jìn)入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車(chē)后提示你輸密碼,如果剛安裝好MYSQL,超級(jí)用戶root是沒(méi)有密碼的,故直接回車(chē)即可進(jìn)入到MYSQL中了,MYSQL的提示符是:mysql>

    2、例2:連接到遠(yuǎn)程主機(jī)上的MYSQL。假設(shè)遠(yuǎn)程主機(jī)的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令:

    mysql -h110.110.110.110 -uroot -pabcd123

    (注:u與root可以不用加空格,其它也一樣)

    3、退出MYSQL命令: exit (回車(chē))

    二、修改密碼。

    格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

    1、例1:給root加個(gè)密碼ab12。首先在DOS下進(jìn)入目錄mysqlbin,然后鍵入以下命令

    mysqladmin -uroot -password ab12

    注:因?yàn)殚_(kāi)始時(shí)root沒(méi)有密碼,所以-p舊密碼一項(xiàng)就可以省略了。

    2、例2:再將root的密碼改為djg345。

    mysqladmin -uroot -pab12 password djg345

    三、增加新用戶。
    (注意:和上面不同,下面的因?yàn)槭荕YSQL環(huán)境中的命令,所以后面都帶一個(gè)分號(hào)作為命令結(jié)束符)

    格式:grant select on 數(shù)據(jù)庫(kù).*  to  用戶名@登錄主機(jī)  identified by  \"密碼\"

    例1、增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MYSQL,然后鍵入以下命令:

    grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";

    但例1增加的用戶是十分危險(xiǎn)的,你想如某個(gè)人知道test1的密碼,那么他就可以在internet上的任何一臺(tái)電腦上登錄你的mysql數(shù)據(jù)庫(kù)并對(duì)你的數(shù)據(jù)可以為所欲為了,解決辦法見(jiàn)例2。

    例2、增加一個(gè)用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對(duì)數(shù)據(jù)庫(kù)mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫(kù)所在的那臺(tái)主機(jī)),這樣用戶即使用知道test2的密碼,他也無(wú)法從internet上直接訪問(wèn)數(shù)據(jù)庫(kù),只能通過(guò)MYSQL主機(jī)上的web頁(yè)來(lái)訪問(wèn)了。

    grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";

    如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。

    grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";



    在上篇我們講了登錄、增加用戶、密碼更改等問(wèn)題。下篇我們來(lái)看看MYSQL中有關(guān)數(shù)據(jù)庫(kù)方面的操作。注意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進(jìn)行的,而且每個(gè)命令以分號(hào)結(jié)束。

    一、操作技巧

    1、如果你打命令時(shí),回車(chē)后發(fā)現(xiàn)忘記加分號(hào),你無(wú)須重打一遍命令,只要打個(gè)分號(hào)回車(chē)就可以了。也就是說(shuō)你可以把一個(gè)完整的命令分成幾行來(lái)打,完后用分號(hào)作結(jié)束標(biāo)志就OK。

    2、你可以使用光標(biāo)上下鍵調(diào)出以前的命令。但以前我用過(guò)的一個(gè)MYSQL舊版本不支持。我現(xiàn)在用的是mysql-3.23.27-beta-win。

    二、顯示命令

    1、顯示數(shù)據(jù)庫(kù)列表。

    show databases;

    剛開(kāi)始時(shí)才兩個(gè)數(shù)據(jù)庫(kù):mysql和test。mysql庫(kù)很重要它里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫(kù)進(jìn)行操作。

    2、顯示庫(kù)中的數(shù)據(jù)表:

    use mysql; //打開(kāi)庫(kù),學(xué)過(guò)FOXBASE的一定不會(huì)陌生吧

    show tables;

    3、顯示數(shù)據(jù)表的結(jié)構(gòu):

    describe 表名;

    4、建庫(kù):

    create database 庫(kù)名;

    5、建表:

    use 庫(kù)名;

    create table 表名 (字段設(shè)定列表);

    6、刪庫(kù)和刪表:

    drop database 庫(kù)名;

    drop table 表名;

    7、將表中記錄清空:

    delete from 表名;

    8、顯示表中的記錄:

    select * from 表名;

    從文本文件執(zhí)行SQL語(yǔ)句

    三、一個(gè)建庫(kù)和建表以及插入數(shù)據(jù)的實(shí)例

    drop database if exists school; //如果存在SCHOOL則刪除 
    create database school; //建立庫(kù)SCHOOL
    use school; //打開(kāi)庫(kù)SCHOOL
    create table teacher //建立表TEACHER
    (
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default '深圳',
    year date
    ); //建表結(jié)束
    //以下為插入字段
    insert into teacher values('','glchengang','深圳一中','1976-10-10');
    insert into teacher values('','jack','深圳一中','1975-12-23');

    注:在建表中(1)將ID設(shè)為長(zhǎng)度為3的數(shù)字字段:int(3)并讓它每個(gè)記錄自動(dòng)加一:auto_increment并不能為空:not null而且讓他成為主字段primary key(2)將NAME設(shè)為長(zhǎng)度為10的字符字段(3)將ADDRESS設(shè)為長(zhǎng)度50的字符字段,而且缺省值為深圳。varchar和char有什么區(qū)別呢,只有等以后的文章再說(shuō)了。(4)將YEAR設(shè)為日期字段。

    如果你在mysql提示符鍵入上面的命令也可以,但不方便調(diào)試。你可以將以上命令原樣寫(xiě)入一個(gè)文本文件中假設(shè)為school.sql,然后復(fù)制到c:\\下,并在DOS狀態(tài)進(jìn)入目錄\\mysql\\bin,然后鍵入以下命令:

    mysql -uroot -p密碼 < c:\\school.sql

    如果成功,空出一行無(wú)任何顯示;如有錯(cuò)誤,會(huì)有提示。(以上命令已經(jīng)調(diào)試,你只要將//的注釋去掉即可使用)。

    四、將文本數(shù)據(jù)轉(zhuǎn)到數(shù)據(jù)庫(kù)中

    1、文本數(shù)據(jù)應(yīng)符合的格式:字段數(shù)據(jù)之間用tab鍵隔開(kāi),null值用\\n來(lái)代替.

    例:

    3 rose 深圳二中 1976-10-10

    4 mike 深圳一中 1975-12-23

    2、數(shù)據(jù)傳入命令 load data local infile \"文件名\" into table 表名;

    注意:你最好將文件復(fù)制到\\mysql\\bin目錄下,并且要先用use命令打表所在的庫(kù)。

    五、備份數(shù)據(jù)庫(kù):(命令在DOS的\\mysql\\bin目錄下執(zhí)行)

    mysqldump --opt school>school.bbb

    注釋:將數(shù)據(jù)庫(kù)school備份到school.bbb文件,school.bbb是一個(gè)文本文件,文件名任取,打開(kāi)看看你會(huì)有新發(fā)現(xiàn)。

    后記:其實(shí)MYSQL的對(duì)數(shù)據(jù)庫(kù)的操作與其它的SQL類數(shù)據(jù)庫(kù)大同小異,您最好找本將SQL的書(shū)看看。我在這里只介紹一些基本的,其實(shí)我也就只懂這些了,呵呵。最好的MYSQL教程還是"晏子"譯的"MYSQL中文參考手冊(cè)"不僅免費(fèi)每個(gè)相關(guān)網(wǎng)站都有下載,而且它是最權(quán)威的??上Р皇窍骪"PHP4中文手冊(cè)\"那樣是chm的格式,在查找函數(shù)命令的時(shí)候不太方便。

    posted @ 2007-12-21 01:50 Asktalk 閱讀(878) | 評(píng)論 (0)編輯 收藏

    InnoDB和MyISAM是在使用MySQL最常用的兩個(gè)表類型,各有優(yōu)缺點(diǎn),視具體應(yīng)用而定。下面是已知的兩者之間的差別,僅供參考。

    innodb
    InnoDB 給 MySQL 提供了具有事務(wù)(commit)、回滾(rollback)和崩潰修復(fù)能力(crash recovery capabilities)的事務(wù)安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行鎖(locking on row level),提供與 Oracle 類型一致的不加鎖讀取(non-locking read in SELECTs)。這些特性均提高了多用戶并發(fā)操作的性能表現(xiàn)。在InnoDB表中不需要擴(kuò)大鎖定(lock escalation),因?yàn)?InnoDB 的列鎖定(row level locks)適宜非常小的空間。InnoDB 是 MySQL 上第一個(gè)提供外鍵約束(FOREIGN KEY constraints)的表引擎。

    InnoDB 的設(shè)計(jì)目標(biāo)是處理大容量數(shù)據(jù)庫(kù)系統(tǒng),它的 CPU 利用率是其它基于磁盤(pán)的關(guān)系數(shù)據(jù)庫(kù)引擎所不能比的。在技術(shù)上,InnoDB 是一套放在 MySQL 后臺(tái)的完整數(shù)據(jù)庫(kù)系統(tǒng),InnoDB 在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。 InnoDB 把數(shù)據(jù)和索引存放在表空間里,可能包含多個(gè)文件,這與其它的不一樣,舉例來(lái)說(shuō),在 MyISAM 中,表被存放在單獨(dú)的文件中。InnoDB 表的大小只受限于操作系統(tǒng)的文件大小,一般為 2 GB。

    在 http://www.innodb.com/ 上可以找到 InnoDB 最新的信息。InnoDB 手冊(cè)的最新版本總是被放置在那里,并且在那里可以得到 InnoDB 的商業(yè)許可(order commercial licenses)以及支持。

    InnoDB 現(xiàn)在(2001年十月)在一些大的需高性能的數(shù)據(jù)庫(kù)站點(diǎn)上被使用。著名的 Internet 新聞?wù)军c(diǎn) Slashdot.org 就是使用的 InnoDB。 Mytrix, Inc. 在 InnoDB 表上存儲(chǔ)了超過(guò) 1 TB 的數(shù)據(jù),而且另外的一個(gè)站點(diǎn)在 InnoDB 表上處理著平均每秒 800 次的插入/更新的負(fù)載。

    MyISAM
    MyISAM 是MySQL缺省存貯引擎 .

    每張MyISAM 桌被存放在盤(pán)在三個(gè)文件 。frm 文件存放表格定義。 數(shù)據(jù)文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。

    以下是一些細(xì)節(jié)和具體實(shí)現(xiàn)的差別:

    1.InnoDB不支持FULLTEXT類型的索引。
    2.InnoDB 中不保存表的具體行數(shù),也就是說(shuō),執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來(lái)計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語(yǔ)句包含 where條件時(shí),兩種表的操作是一樣的。
    3.對(duì)于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
    4.DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除。
    5.LOAD TABLE FROM MASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。

    另外,InnoDB表的行鎖也不是絕對(duì)的,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表,例如update table set num=1 where name like “%aaa%”

    任何一種表都不是萬(wàn)能的,只用恰當(dāng)?shù)尼槍?duì)業(yè)務(wù)類型來(lái)選擇合適的表類型,才能最大的發(fā)揮MySQL的性能優(yōu)勢(shì)。

     

     

    posted @ 2007-12-21 01:09 Asktalk 閱讀(2898) | 評(píng)論 (0)編輯 收藏

     

    1, 下載

    https://glassfish.dev.java.net/downloads/v2-b33.html選擇下載版本,這里下載的是windows版.

    Solaris SPARC Platform

    glassfish-installer-v2-b33.jar, size 70M

    Solaris x86 Platform

    glassfish-installer-v2-b33-sunos_x86.jar size 67M

    Windows Platform

    glassfish-installer-v2-b33-winnt.jar size 63M

    Linux Platform

    glassfish-installer-v2-b33-linux.jar size 64M

    MacOS Platform

    glassfish-installer-v2-b33-darwin.jar size 67M

     

    2,設(shè)置Java和Ant環(huán)境變量

    系統(tǒng)需要安裝J2SE 5.0

    3,執(zhí)行安裝

    java -Xmx256m -jar glassfish-installer-v2-b33.jar

    直接點(diǎn)擊運(yùn)行g(shù)lassfish-installer-v2-b33.jar無(wú)法安裝,必須在cmd命令環(huán)境下執(zhí)行上述命令.

    執(zhí)行完畢后在glassfish-installer-v2-b33.jar的同級(jí)目錄會(huì)出現(xiàn)一個(gè)glassfish文件夾,所有文件都已經(jīng)解壓到這個(gè)目錄了,記著,只是解壓還沒(méi)有安裝哪!

     

    下面cd glassfish ,切換到glassfish目錄下,運(yùn)行ant腳本setup.xml,執(zhí)行真正的安裝過(guò)程.
    運(yùn)行 ant -f setup.xml

    4,運(yùn)行domain.

    大家都用過(guò)IBM Websphere 和BEA Weblogic,domain相當(dāng)于服務(wù)器的一個(gè)具體實(shí)例,所有配置參數(shù)都在這里面.在步驟3中已經(jīng)為我們生成了一個(gè)domain,在glassfish\domains\domain1目錄中.

    切換到cd glassfish/bin目錄下

    執(zhí)行asadmin start -domain domain1 ,運(yùn)行domain1.結(jié)果如下

     

    5,瀏覽控制臺(tái)

    打開(kāi)瀏覽器,輸入 http://192.168.1.3:8080/ 看到如下圖:

     

     

    控制臺(tái)首頁(yè): http://192.168.1.3:4848/
    user name: admin
    password: adminadmin

    控制臺(tái)首頁(yè)如下:

     

     

    posted @ 2007-03-25 16:48 Asktalk 閱讀(1157) | 評(píng)論 (0)編輯 收藏

             系統(tǒng)架構(gòu)設(shè)計(jì)師角色是技術(shù)上的領(lǐng)導(dǎo)和系統(tǒng)開(kāi)發(fā)創(chuàng)新遠(yuǎn)景的來(lái)源。
             隨著現(xiàn)在技術(shù)的進(jìn)步,特別師銀行,電信都在搞省集中,那么集中意味這什么,數(shù)據(jù)量增大,并發(fā)增大,特別是現(xiàn)在在銀行,電信項(xiàng)目中為了達(dá)到平臺(tái)專業(yè)化,都是在向SOA靠攏。這意味這什么?接口增多了,而且都是基于總線,那么在這種情況下,軟件的管理和規(guī)劃設(shè)計(jì)和原來(lái)的都不一樣了,就需要更高級(jí)的架構(gòu)師。
              這一年我一直在做電信的項(xiàng)目,以前一個(gè)97項(xiàng)目,包羅萬(wàn)象,什么都有。所以到了今年中國(guó)電信提出平臺(tái)專業(yè)化,都在向省集中靠攏,那么以前的一個(gè)項(xiàng)目就搞定了,現(xiàn)在變成了10幾個(gè)廠商都在,由于SOA還不成熟,基于總線,接口非常之多,數(shù)據(jù),模型等都需要一個(gè)技術(shù)專家組,也就是所謂的架構(gòu)師去換一種思路設(shè)計(jì)整體的架構(gòu)。特別是SOA有很多沒(méi)有一個(gè)很成熟的方案,所以架構(gòu)是在這個(gè)時(shí)候就需要具有透視未來(lái)的能力,以后壓力增大,系統(tǒng)可以承受嗎?很多都需要重新思考。需要一個(gè)正規(guī)的流程就顯的特別重要!!下面說(shuō)說(shuō)理想中的架構(gòu)師。應(yīng)該向這方面靠攏!

             系統(tǒng)架構(gòu)設(shè)計(jì)師建立并改進(jìn)系統(tǒng)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)并參與優(yōu)化這些結(jié)構(gòu),優(yōu)化結(jié)構(gòu)要根據(jù)主要的系統(tǒng)元素及其接口,并要權(quán)衡各種競(jìng)爭(zhēng)因素和約束(如,性能、價(jià)格和環(huán)境影響),評(píng)估生成所需行為的可能方案。系統(tǒng)架構(gòu)設(shè)計(jì)師的視野跨越整個(gè)系統(tǒng)以及內(nèi)部和外部可能影響到開(kāi)發(fā)的所有因素??紤]到要維持該廣闊的視野,系統(tǒng)分析員很少深入地參與系統(tǒng)的詳細(xì)工程,而傾向于把它們留給各個(gè)工程專業(yè)的其他專業(yè)人員。


    架構(gòu)師.jpg

    系統(tǒng)架構(gòu)師應(yīng)具備的技能:

    系統(tǒng)架構(gòu)設(shè)計(jì)師角色要求精通促成系統(tǒng)工程的多個(gè)規(guī)程,并在分析和解決方案合成方面技術(shù)嫻熟。系統(tǒng)架構(gòu)設(shè)計(jì)師還必須善于啟發(fā)式和歸納式推理(大部分系統(tǒng)體系結(jié)構(gòu)所依賴的),以及對(duì)其他工程規(guī)程的演繹推理。系統(tǒng)架構(gòu)設(shè)計(jì)師不只是地考慮解決方案的技術(shù),還考慮許多其他問(wèn)題,比如系統(tǒng)操作、性能、經(jīng)濟(jì)可行性、可維護(hù)性和后勤支持,以及有關(guān)這些問(wèn)題的政治、技術(shù)、社會(huì)、財(cái)務(wù)和環(huán)境因素(及其他因素)。 

    系統(tǒng)架構(gòu)設(shè)計(jì)師必須成熟有經(jīng)驗(yàn),使其能夠完成對(duì)象分析和貿(mào)易研究以從多個(gè)解決方案中選擇最優(yōu)解決方案,能夠在信息不完整或不明確時(shí)作出好的判斷,并能夠認(rèn)識(shí)到“最好”通常是由政治、經(jīng)濟(jì)以及工程考慮支配的。

    在處理由人員、硬件和軟件組合的系統(tǒng)時(shí),系統(tǒng)架構(gòu)設(shè)計(jì)師需要對(duì)任何解決方案中由人員和硬件組件施加的物理限制和約束有很強(qiáng)的判斷力。除了在系統(tǒng)工程方面的經(jīng)驗(yàn)(以及對(duì)聯(lián)合規(guī)程方面的知識(shí),如操作調(diào)查和工程經(jīng)濟(jì))之外,系統(tǒng)架構(gòu)設(shè)計(jì)師在軟件工程(由于它在現(xiàn)代系統(tǒng)中普遍存在)方面也要有堅(jiān)實(shí)的基礎(chǔ)以及以下素質(zhì):

    • 在問(wèn)題領(lǐng)域的經(jīng)驗(yàn)和對(duì)需求的深入理解。該專業(yè)技能可以在系統(tǒng)體系結(jié)構(gòu)團(tuán)隊(duì)中分?jǐn)偂?
    • 領(lǐng)導(dǎo)品質(zhì),用以推動(dòng)跨各團(tuán)隊(duì)的技術(shù)工作,在壓力下制定關(guān)鍵決策,并堅(jiān)持貫徹這些決策。為達(dá)到效果,系統(tǒng)架構(gòu)設(shè)計(jì)師和項(xiàng)目經(jīng)理必須緊密協(xié)作,前者領(lǐng)導(dǎo)技術(shù)事宜,后者領(lǐng)導(dǎo)管理事宜。系統(tǒng)架構(gòu)設(shè)計(jì)師必須有權(quán)作出技術(shù)決策。
    • 溝通技能,以贏得信任,進(jìn)行說(shuō)服、激勵(lì)和指導(dǎo)。系統(tǒng)架構(gòu)設(shè)計(jì)師不是通過(guò)職位擁有權(quán)利,而是因?yàn)橛心抗捕玫哪芰统煽?jī)。為了達(dá)到效果,系統(tǒng)架構(gòu)設(shè)計(jì)師必須指揮項(xiàng)目團(tuán)隊(duì)、項(xiàng)目經(jīng)理、顧客和用戶團(tuán)體,并管理團(tuán)隊(duì)。
    • 面向目標(biāo)和主動(dòng)性,專注于成果。系統(tǒng)架構(gòu)設(shè)計(jì)師是項(xiàng)目背后的技術(shù)驅(qū)動(dòng)力,而不是顧問(wèn)或夢(mèng)想家。對(duì)于一名成功的系統(tǒng)架構(gòu)設(shè)計(jì)師而言,其職業(yè)就是在壓力和許多不確定情況下作出一系列次最佳(但通常不是非常次最佳)決策。只有那些能夠?qū)W⒂谛枳鲋碌娜瞬艜?huì)在這種環(huán)境中獲得成功。

    系統(tǒng)架構(gòu)設(shè)計(jì)師角色具有系統(tǒng)設(shè)計(jì)人員的技能,但前者的技能重點(diǎn)是戰(zhàn)略性的,并不詳細(xì)。

    系統(tǒng)架構(gòu)設(shè)計(jì)師與軟件設(shè)計(jì)人員的關(guān)系

    這兩個(gè)角色有很多相似點(diǎn);實(shí)際上對(duì)于那些因規(guī)?;驈?fù)雜程度而被看作“系統(tǒng)”開(kāi)發(fā)、但仍是大型的或完整的軟件項(xiàng)目來(lái)說(shuō),這兩個(gè)角色是合為一體的。 然而,通常情況下,系統(tǒng)架構(gòu)設(shè)計(jì)師比軟件設(shè)計(jì)人員的支持范圍大。 系統(tǒng)架構(gòu)設(shè)計(jì)師必須對(duì)付物理上強(qiáng)加的約束,這些約束在軟件更易適應(yīng)的領(lǐng)域中不存在。但是,正是軟件的靈活性使得體系結(jié)構(gòu)演進(jìn)具有可能的道路,這在以前是無(wú)法設(shè)想的。因此,軟件設(shè)計(jì)人員和系統(tǒng)架構(gòu)設(shè)計(jì)師之間并不是嚴(yán)格的從屬關(guān)系:從軟件體系結(jié)構(gòu)上考慮的反饋可能對(duì)系統(tǒng)的體系結(jié)構(gòu)有深遠(yuǎn)的影響;否認(rèn)這一點(diǎn)將要承擔(dān)潛在的次最佳系統(tǒng)體系結(jié)構(gòu)的風(fēng)險(xiǎn),這些體系結(jié)構(gòu)基于軟件體系結(jié)構(gòu)可從需求的分配(由系統(tǒng)架構(gòu)設(shè)計(jì)師完成)派生到計(jì)算平臺(tái)這一簡(jiǎn)單的概念。但是以下說(shuō)法也是正確的:在系統(tǒng)架構(gòu)設(shè)計(jì)師和軟件設(shè)計(jì)人員的團(tuán)隊(duì)中,系統(tǒng)架構(gòu)設(shè)計(jì)師角色的職責(zé)要求系統(tǒng)架構(gòu)設(shè)計(jì)師是團(tuán)隊(duì)中的佼佼者,因?yàn)橄到y(tǒng)是最終產(chǎn)品。

    posted @ 2006-12-18 19:39 Asktalk 閱讀(3404) | 評(píng)論 (2)編輯 收藏

         摘要: 摘要:此為我給公司內(nèi)部新員工培訓(xùn)的實(shí)戰(zhàn)演示例子,傻瓜級(jí)教程,講述了開(kāi)發(fā)中的注意要點(diǎn)和常見(jiàn)錯(cuò)誤,目的主要是讓他們適應(yīng)企業(yè)級(jí)快速流水作業(yè)。由于是面對(duì)面講解,所以沒(méi)有詳細(xì)的文檔,現(xiàn)在簡(jiǎn)單整理如下,希望對(duì)入門(mén)者有幫助。

    培訓(xùn)的目標(biāo):對(duì)下面的開(kāi)發(fā)過(guò)程和模式快速理解和應(yīng)用?;谖业腢ML架構(gòu)-----〉Java POJOs代碼------〉在pojos中做xdoclet標(biāo)識(shí)-------〉基于ant生成*.hbm.xml文件(借助于eclipse可以自動(dòng)化配置)------〉生成database schma和數(shù)據(jù)庫(kù)sql語(yǔ)句。逐步可以讓新員工過(guò)渡到j(luò)ava5的annotation來(lái)開(kāi)發(fā)EJB3 .
      閱讀全文

    posted @ 2006-03-05 21:27 Asktalk 閱讀(3694) | 評(píng)論 (8)編輯 收藏

    從多層內(nèi)部類/嵌套的類中訪問(wèn)外部類的成員

    本文用到名詞說(shuō)明:

    內(nèi)部類:Inner Class

    嵌套類:Static Nested Class (與標(biāo)題上的嵌套的類不同,此處是專有名詞)

    靜態(tài)內(nèi)部類:同嵌套類一個(gè)意思,一物兩個(gè)名字而已。

     

    在下面,我們看到對(duì)于B類來(lái)說(shuō)他的嵌套層次是:AcessMethod-A-B

    那么訪問(wèn)方法如下:

    class B {
          void h() {
            System.out.println("h()");
            g();
            f();
          }

    AcessMethodA來(lái)說(shuō)對(duì)B,都是透明的,直接調(diào)用。

    嵌套類實(shí)例化的順序:有外到里!AcessMethod-A-B

    調(diào)用代碼如下:

        AcessMethod am = new AcessMethod();
        AcessMethod.A a = am.new A();
        AcessMethod.A.B b = a.new B();
        b.h();

    這里很有意思的一點(diǎn),’.new’語(yǔ)法產(chǎn)生了正確的作用域。

     

    疑問(wèn):下面我們來(lái)看一下在B.h()中怎樣調(diào)用A1.g()方法?

     

    下面我們來(lái)看是否可以在B中調(diào)用A1.g()方法,在B.h()方法中原則上可以這樣調(diào)用A1.g()但是A1沒(méi)有實(shí)例化,所以這樣是錯(cuò)誤的,也就是在B中無(wú)法調(diào)用A1中的非靜態(tài)方法了。

     

    假設(shè):如果A1.g()static類型,那么在B中可以這樣調(diào)用A1種的方法:A1.this.g();

     

    但是這是不可能的,因?yàn)樵?/SPAN>A1.g()不可能定義為static類型,詳細(xì)看下面的問(wèn)題1問(wèn)題1:在什么情況下可以定義static 方法),這是一個(gè)缺點(diǎn)吧,但是可以使用嵌套類來(lái)解決了。

    /**
     
    從多層嵌套類中訪問(wèn)外部類的成員.  .new“語(yǔ)法產(chǎn)生了正確的作用域
     */
    public class AcessMethod {

      private void f() {
        System.out.println("f()");
      }


      class A1 {
        private void g() {
          System.out.println("A1 - g()");
        }

    }


      class A {
        private void g() {
          System.out.println("g()");
        }

        class B {
          void h() {
            System.out.println("h()");
            g();
            f();
          }
        }
      }

      public static void main(String[] args) {
        AcessMethod am = new AcessMethod();
        AcessMethod.A a = am.new A();
        AcessMethod.A.B b = a.new B();
        b.h();
      }
    }

    運(yùn)行結(jié)果:h()

    g()

    f()

     

    問(wèn)題1:在什么情況下可以定義static 方法?

     

    只有在頂層類中定義,或者在靜態(tài)內(nèi)部類中定義,看下面的例子

    public class Test {
      static void t(){}
      class T2{
        //!
    錯(cuò)誤,The method a cannot be declared static; 
        //static methods can only be declared in a static or top level type
        //static void a(){}
      }

    static class T3{
            static void a(){}
      }
    }

    posted @ 2006-02-19 19:24 Asktalk 閱讀(2987) | 評(píng)論 (0)編輯 收藏

         摘要: Thinking in java 第四版來(lái)了,增加了java 5.0的泛型,新語(yǔ)法等的討論,還加入了java6.0的最新技術(shù),主要是對(duì)web2.0的支持方面。

    ... I wish I had this book when I started programming. I recommend this book to every student as well as beginner and intermediate Java programmer. This book would also serve as a guide to those who would wish to write the Sun Certified Java Programmer (SCJP) certification exam. It also introduces design patterns and testing which is really good since we see programmers writing 100’s of lines of code with no  閱讀全文

    posted @ 2006-02-17 10:20 Asktalk 閱讀(15959) | 評(píng)論 (11)編輯 收藏

    現(xiàn)實(shí)的發(fā)票有三部分組成:頭部分,主題部分(數(shù)據(jù)部分),尾部分;不同的對(duì)象打印出來(lái)的頭和尾是不一樣的,但是主體部分是一樣,那么要實(shí)現(xiàn)這樣的需求,就應(yīng)該采用裝飾模式,下面是UML圖示。
    下面是一個(gè)發(fā)票打印系統(tǒng),其中
    SalesOrder是發(fā)票的主體,也就是中間的數(shù)據(jù)部分
    HeaderDecorator,HeaderDecorator1是頭部分樣式;
    FooterDecorator,FooterDecorator2是尾部分樣式;
    OrderLine是主體中的單列數(shù)據(jù);

    printinvoice.gif

    對(duì)IBM RSA與Together2006的比較:
    IBM RSA:
    1,比較易用,外觀漂亮,可以很方便調(diào)整顏色:
    2,運(yùn)行速度比較快,相比較    Together2006;
    3,智能化技術(shù)非常低,在反向工程中最明顯;
    4,不支持Java5.0技術(shù);

    Together2006(上圖Together2006實(shí)現(xiàn)):
    1,智能化技術(shù)非常高,沒(méi)發(fā)現(xiàn)出現(xiàn)低級(jí)錯(cuò)誤,在反向工程中最明顯;
    2,支持Java5.0技術(shù);
    3,運(yùn)行速度慢,有時(shí)候讓人難以接受;

    先寫(xiě)到這,有時(shí)間接著寫(xiě)。。。
                  

    posted @ 2006-02-14 23:41 Asktalk 閱讀(2984) | 評(píng)論 (5)編輯 收藏

         摘要: J2EE開(kāi)發(fā)正在變得越來(lái)越復(fù)雜,J2EE已經(jīng)發(fā)展為一個(gè)API、復(fù)雜化的編程和配置的復(fù)雜網(wǎng)絡(luò)。這幾年,新的框架和方法不斷涌現(xiàn)從一定程度上緩解了開(kāi)發(fā)的復(fù)雜和降低了開(kāi)發(fā)的成本,但是要把這些Framework整合起來(lái),如Struts,JSF,Webwork,Hibernate,JDO等等,并不是那么容易,就目前來(lái)看這個(gè)職位只有Spring能夠勝任,采用的就是IoC技術(shù)。那么反向控制到底什么?  閱讀全文

    posted @ 2006-02-14 15:48 Asktalk 閱讀(2448) | 評(píng)論 (2)編輯 收藏

    著名的開(kāi)源站點(diǎn)無(wú)法訪問(wèn),打聽(tīng)了不同地方的朋友,好像都不能訪問(wèn),聽(tīng)朋友說(shuō)被禁了,是不是真的禁了。
    不明白為什么?2002年前好像一直被禁,后來(lái)開(kāi)放了,但是現(xiàn)在又無(wú)法訪問(wèn);大家試一下,自己的
    能訪問(wèn)嗎?

    開(kāi)源的權(quán)威站點(diǎn)啊,hibernate,spring ,等等都來(lái)自哪里?。?!

    posted @ 2006-01-19 23:50 Asktalk 閱讀(2884) | 評(píng)論 (9)編輯 收藏

         摘要: 在Hibernate中有三種狀態(tài),對(duì)它的深入理解,才能更好的理解hibernate的運(yùn)行機(jī)理,剛開(kāi)始不太注意這些概念,后來(lái)發(fā)現(xiàn)它是重要的。對(duì)于理解hibernate,JVM和sql的關(guān)系有更好的理解。對(duì)于需要持久化的JAVA對(duì)象,在它的生命周期中有三種狀態(tài),而且互相轉(zhuǎn)化。
      閱讀全文

    posted @ 2006-01-18 18:26 Asktalk 閱讀(3830) | 評(píng)論 (2)編輯 收藏

         摘要: JCL(Jakarta Commons Logging)和log4j不都是做log的嗎,怎么在jcl的源碼包中,還有個(gè)log4j的包?倒底怎么回事?看了jcl的用戶指南,就明白了。 1、Commons-Loggin簡(jiǎn)介   Jakarta Commons Logging (JCL)提供的是一個(gè)日志(Log)接口(interface),同時(shí)兼顧輕量級(jí)和不依賴于具體的日志實(shí)現(xiàn)工具。 它提供給中間件/日志工具開(kāi)發(fā)者一個(gè)簡(jiǎn)單的日志操作抽象,允許程序開(kāi)發(fā)人員使用不同的具體日志實(shí)現(xiàn)工具。用戶被假定已熟悉某種日志實(shí)現(xiàn)工具的更高級(jí)別的細(xì)節(jié)。JCL提供的接口,對(duì)其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進(jìn)行了簡(jiǎn)單的包裝,此接口更接近于Log4J和LogKit的實(shí)現(xiàn).   閱讀全文

    posted @ 2005-08-18 01:18 Asktalk 閱讀(2924) | 評(píng)論 (1)編輯 收藏

         摘要: 對(duì)于hibernate的one-to-one關(guān)系來(lái)說(shuō),在hibernate中有兩種方法:第一種就是用many-to-one來(lái)代替一對(duì)多,其實(shí)one-to-one也就是many-to-one的一種極限方式,若把many-to-one設(shè)置unique="true",則這時(shí)候的many-to-one實(shí)質(zhì)上就是one-to-one;這里為什么能夠用many-to-one來(lái)代替one-to-one呢?最根本的是連個(gè)對(duì)象必須有一個(gè)字段相關(guān)聯(lián),那么你也發(fā)現(xiàn)one-to-one中沒(méi)有column屬性,也就是不能夠把one-to-one的這種關(guān)系生成一個(gè)字段/屬性,而many-to-one可以,它有column屬性。所以,說(shuō)了這么多,你應(yīng)該明白為什么可以用many-to-one來(lái)代替one-to-one.  閱讀全文

    posted @ 2005-08-18 00:26 Asktalk 閱讀(5253) | 評(píng)論 (0)編輯 收藏

         摘要: CVS團(tuán)隊(duì)開(kāi)發(fā):Window2003版用法  閱讀全文

    posted @ 2005-08-14 07:14 Asktalk 閱讀(4544) | 評(píng)論 (1)編輯 收藏

         摘要: 不知道為什么,復(fù)制到這里顏色沒(méi)了,所以就成下面的了。還可以湊或著看吧
    不用多說(shuō)了,已經(jīng)注釋很詳細(xì)了,希望對(duì)你有幫助  閱讀全文

    posted @ 2005-07-30 16:31 Asktalk 閱讀(3264) | 評(píng)論 (1)編輯 收藏

    tomcat頁(yè)面設(shè)置訪問(wèn)權(quán)限

    CSDN網(wǎng)址:http://blog.csdn.net/fasttalk
    剛從CSDN搬到這里,先發(fā)表一篇!
    web應(yīng)用中,對(duì)頁(yè)面的訪問(wèn)控制通常通過(guò)程序來(lái)控制,流程為:

    登錄 -> 設(shè)置session -> 訪問(wèn)受限頁(yè)面時(shí)檢查session是否存在,如果不存在,禁止訪問(wèn)

    對(duì)于較小型的web應(yīng)用,可以通過(guò)tomcat內(nèi)置的訪問(wèn)控制機(jī)制來(lái)實(shí)現(xiàn)權(quán)限控制。采用這種機(jī)制的好處是,程序中無(wú)需進(jìn)行權(quán)限控制,完全通過(guò)對(duì)tomcat的配置即可完成訪問(wèn)控制。

    為了在tomcat頁(yè)面設(shè)置訪問(wèn)權(quán)限控制,在項(xiàng)目的WEB-INFO/web.xml文件中,進(jìn)行如下設(shè)置:

    其中,<url-pattern>中指定受限的url,可以使用通配符*,通常對(duì)整個(gè)目錄進(jìn)行訪問(wèn)權(quán)限控制。
    <auth-constraint>
    中指定哪些角色可以訪問(wèn)<url-pattern>指定的url,在<role-name>中可以設(shè)置一個(gè)或多個(gè)角色名。

    使用的角色名來(lái)自tomcat的配置文件${CATALINA_HOME}/conf/tomcat-users.xml。

    <login-config>中設(shè)置登錄方式,<auth-method>的取值為BASICFORM。如果為BASIC,瀏覽器在需要登錄時(shí)彈出一個(gè)登錄窗口。如果為FORM方式,需要指定登錄頁(yè)面和登錄失敗時(shí)的提示信息顯示頁(yè)面。

    使用FORM方式的配置樣例如下:

    其中的<form-login-page>指定登錄頁(yè)面url,<form-error-page>指定登錄失敗時(shí)的提示頁(yè)面url。
    登錄頁(yè)面中,formaction,以及其中的用戶名和密碼兩個(gè)參數(shù)的名稱,都應(yīng)取固定的值。登錄的后臺(tái)處理程序?yàn)?SPAN lang=EN-US>j_security_check
    ;用戶名和密碼的參數(shù)名稱分別為:j_usernamej_password
    如下是登錄頁(yè)面(如:login.jsp)的一段示例代碼:

     

    posted @ 2005-07-23 04:12 Asktalk 閱讀(29878) | 評(píng)論 (10)編輯 收藏

    由于csdn的blog太不穩(wěn)定,讓我傷透了心,現(xiàn)在有找到了一個(gè)新家,我非常高興!希望與大家交流java技術(shù)。

    posted @ 2005-05-20 10:51 Asktalk 閱讀(660) | 評(píng)論 (3)編輯 收藏

    主站蜘蛛池模板: 四虎影视精品永久免费| 特级毛片A级毛片100免费播放 | 免费看一级一级人妻片| 永久久久免费浮力影院| 亚洲日韩一区二区三区| 成人免费福利电影| 亚洲欧好州第一的日产suv| 影音先锋在线免费观看| 亚洲精品无码成人| 日本不卡视频免费| 美女免费视频一区二区| 男人的天堂亚洲一区二区三区 | 午夜电影免费观看| 亚洲第一街区偷拍街拍| 日日AV拍夜夜添久久免费| 日韩精品亚洲专区在线影视| 国产一级一片免费播放i| 全部一级一级毛片免费看| 国产成人精品久久亚洲| a级男女仿爱免费视频| 亚洲Av无码专区国产乱码DVD| 国产精品免费福利久久| 久久久久亚洲av无码专区喷水| 最近免费中文字幕mv在线电影| 亚洲图片中文字幕| 毛色毛片免费观看| 小说区亚洲自拍另类| 亚洲一本大道无码av天堂| 成全动漫视频在线观看免费高清版下载 | 国产成人精品曰本亚洲79ren| 两性色午夜视频免费播放| 亚洲AV福利天堂一区二区三| 亚洲免费在线观看视频| 亚洲自偷自偷在线成人网站传媒 | 日韩人妻无码精品久久免费一 | 国产V片在线播放免费无码| 国产精品亚洲а∨无码播放| 99视频在线免费| 国产成人精品亚洲2020| 国产无遮挡裸体免费视频 | 亚洲AV一二三区成人影片|