Asktalk

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

          2006年3月5日

           

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

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

          類圖關(guān)系

          1, 工廠LimitFactory

          TableLimitFactoryAbstractLimitFactoryLimitFactory

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

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

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

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

          2, Limit

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

          3, Preferences

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

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

          if (input != null) {

          properties.load(input);

          }

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

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

          4, Registry

          LimitRegistryAbstractRegistryRegistry

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

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

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

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

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

          接口:定義接口方法,這個不用多說。

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

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

           

          下面是從struts的角度來談?wù)?/span>spring自帶的web框架的使用。
          當然,我們在配置
          web框架前,需要把spring配置好,這里就不多說了。

          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

           

          如果沒有配置config.xml文件,那么其默認的配置文件為[ servlet-name ]-servlet.xml 。也就是我們這個配置的默認配置文件是Dispatcher-servlet.xml

          2.web框架的xml配置

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

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

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

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

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

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

          Command對象,類似于struts中的formBean

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

          下面列出了一些。例如,

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

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

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

           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<!—就是我們上面說的映射控制器 -->
          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.代碼的編寫

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

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

           

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

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

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

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

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

          二、Eclipse啟動過程

          首先我們從Eclipse的啟動過程開始分析。

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

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

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

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

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

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

              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);    //啟動Eclipse內(nèi)核

              }

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

          先列出這些開源項目,隨后對其實現(xiàn)過程深入分析。

          1,Hibernate Synchronizer Eclipse Plugin   最近更新在2006.04.26
                http://hibernatesynch.sourceforge.net/   
                源代碼::pserver:anonymous@hibernatesynch.cvs.sourceforge.net:/cvsroot/hibernatesynch   
                HibernateSynchronizer3   為新項目,支持Eclipse3
                HibernateSynchronizer     為舊項目,支持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ù)庫管理工具相近。

          3,GmailClipse 一個Eclipse RCP 
               http://sourceforge.net/projects/gmclipse/
               源代碼::pserver:anonymous@gmclipse.cvs.sourceforge.net:/cvsroot/gmclipse    源代碼為空,沒有共享
               像hotmail一樣的郵件客戶端收發(fā)系統(tǒng)。其源代碼對于學(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 閱讀(1183) | 評論 (0)編輯 收藏

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

          一、連接MYSQL。

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

          1、例1:連接到本機上的MYSQL。

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

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

          mysql -h110.110.110.110 -uroot -pabcd123

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

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

          二、修改密碼。

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

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

          mysqladmin -uroot -password ab12

          注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

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

          mysqladmin -uroot -pab12 password djg345

          三、增加新用戶。
          (注意:和上面不同,下面的因為是MYSQL環(huán)境中的命令,所以后面都帶一個分號作為命令結(jié)束符)

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

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

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

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

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

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

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

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



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

          一、操作技巧

          1、如果你打命令時,回車后發(fā)現(xiàn)忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了。也就是說你可以把一個完整的命令分成幾行來打,完后用分號作結(jié)束標志就OK。

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

          二、顯示命令

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

          show databases;

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

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

          use mysql; //打開庫,學(xué)過FOXBASE的一定不會陌生吧

          show tables;

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

          describe 表名;

          4、建庫:

          create database 庫名;

          5、建表:

          use 庫名;

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

          6、刪庫和刪表:

          drop database 庫名;

          drop table 表名;

          7、將表中記錄清空:

          delete from 表名;

          8、顯示表中的記錄:

          select * from 表名;

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

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

          drop database if exists school; //如果存在SCHOOL則刪除 
          create database school; //建立庫SCHOOL
          use school; //打開庫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è)為長度為3的數(shù)字字段:int(3)并讓它每個記錄自動加一:auto_increment并不能為空:not null而且讓他成為主字段primary key(2)將NAME設(shè)為長度為10的字符字段(3)將ADDRESS設(shè)為長度50的字符字段,而且缺省值為深圳。varchar和char有什么區(qū)別呢,只有等以后的文章再說了。(4)將YEAR設(shè)為日期字段。

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

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

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

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

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

          例:

          3 rose 深圳二中 1976-10-10

          4 mike 深圳一中 1975-12-23

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

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

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

          mysqldump --opt school>school.bbb

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

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

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

          InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點,視具體應(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表中不需要擴大鎖定(lock escalation),因為 InnoDB 的列鎖定(row level locks)適宜非常小的空間。InnoDB 是 MySQL 上第一個提供外鍵約束(FOREIGN KEY constraints)的表引擎。

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

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

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

          MyISAM
          MyISAM 是MySQL缺省存貯引擎 .

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

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

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

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

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

           

           

          posted @ 2007-12-21 01:09 Asktalk 閱讀(2905) | 評論 (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

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

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

           

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

          4,運行domain.

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

          切換到cd glassfish/bin目錄下

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

           

          5,瀏覽控制臺

          打開瀏覽器,輸入 http://192.168.1.3:8080/ 看到如下圖:

           

           

          控制臺首頁: http://192.168.1.3:4848/
          user name: admin
          password: adminadmin

          控制臺首頁如下:

           

           

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

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

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


          架構(gòu)師.jpg

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

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

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

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

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

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

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

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

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

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

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

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

          主站蜘蛛池模板: 石台县| 嘉祥县| 武鸣县| 麻阳| 墨脱县| 神池县| 安阳市| 寿光市| 雅江县| 射洪县| 循化| 石狮市| 太康县| 获嘉县| 攀枝花市| 布尔津县| 同心县| 五常市| 红桥区| 乌鲁木齐县| 鄂伦春自治旗| 金坛市| 祁连县| 治县。| 佳木斯市| 洱源县| 郎溪县| 琼结县| 闽侯县| 剑阁县| 云林县| 巢湖市| 博乐市| 盐山县| 惠安县| 临朐县| 福州市| 蒙城县| 尤溪县| 扎赉特旗| 突泉县|