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

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

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

    Gay Bird

    登高者必自卑,行遠(yuǎn)者必自邇,在這個(gè)世界上,重要的不是你正站在那里,而是你正朝什么方向移動(dòng)......

    2008年9月22日 #

    JAVA幾種對(duì)象的解釋

    posted @ 2008-10-16 12:52 Sky Yi 閱讀(273) | 評(píng)論 (0)編輯 收藏

    MSSQL事務(wù)、事務(wù)隔離級(jí)別、鎖的簡(jiǎn)單總結(jié)

    一、數(shù)據(jù)庫事務(wù)
    1、事務(wù)是作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。可以是一條SQL語句也可以是多條SQL語句。

    2、事務(wù)具有四個(gè)特性
       原子性:不可分隔、成則具成、敗則具敗。
       恢灤裕菏攣裨諭瓿墑保 匭朧顧 械氖 荻急3忠恢倫刺?
       隔離性:獨(dú)立的執(zhí)行互不干擾。由并發(fā)事務(wù)所作的修改必須與任何其他并發(fā)事務(wù)所作的修改隔離(另外的描述:多個(gè)事務(wù)同時(shí)進(jìn)行,它們之間應(yīng)該互不干擾.應(yīng)該防止一個(gè)事務(wù)處理其他事務(wù)也要修改的數(shù)據(jù)時(shí),不合理的存取和不完整的讀取數(shù)據(jù))
      
    3、啟動(dòng)事務(wù):使用 API 函數(shù)和 Transact-SQL 語句,可以按顯式、自動(dòng)提交或隱式的方式來啟動(dòng)事務(wù)。

    4、結(jié)束事務(wù):您可以使用 COMMIT(成功) 或 ROLLBACK(失敗) 語句,或者通過 API 函數(shù)來結(jié)束事務(wù)。

    5、創(chuàng)建事務(wù)的原則:
       盡可能使事務(wù)保持簡(jiǎn)短很重要,當(dāng)事務(wù)啟動(dòng)后,數(shù)據(jù)庫管理系統(tǒng) (DBMS) 必須在事務(wù)結(jié)束之前保留很多資源、以保證事務(wù)的正確安全執(zhí)行。
       特別是在大量并發(fā)的系統(tǒng)中, 保持事務(wù)簡(jiǎn)短以減少并發(fā) 資源鎖定爭(zhēng)奪,將先得更為重要。
       1、事務(wù)處理,禁止與用戶交互,在事務(wù)開始前完成用戶輸入。
       2、在瀏覽數(shù)據(jù)時(shí),盡量不要打開事務(wù)
       3、盡可能使事務(wù)保持簡(jiǎn)短。
       4、考慮為只讀查詢使用快照隔離,以減少阻塞。
       5、靈活地使用更低的事務(wù)隔離級(jí)別。
       6、靈活地使用更低的游標(biāo)并發(fā)選項(xiàng),例如開放式并發(fā)選項(xiàng)。
       7、在事務(wù)中盡量使訪問的數(shù)據(jù)量最小。

     

    二、事務(wù)的隔離級(jí)別

    1、數(shù)據(jù)庫事務(wù)的隔離級(jí)別:四種

    隔離級(jí)別 臟讀(Dirty Read) 不可重復(fù)讀(NonRepeatable Read) 幻讀(Phantom Read)
    讀未提交(Read uncommitted) 可能 可能 可能
    讀已提交(Read committed) 不可能 可能 可能
    可重復(fù)讀(Repeatable read) 不可能 不可能 可能
    可串行化(Serializable ) 不可能 不可能 不可能

    2、數(shù)據(jù)庫一般的默認(rèn)隔離離級(jí)別是“讀已提交”,默認(rèn)的事務(wù)隔離級(jí)別下:Insert,update ,delete下的是X鎖, 會(huì)等待事務(wù)完成。通常情況下可以把隔離級(jí)別設(shè)為Read Commited,它能避免臟讀,而且有較好的并發(fā)性能。盡管它會(huì)導(dǎo)致不可重復(fù)讀、虛讀和第二類更新丟失等問題,在可能出現(xiàn)這類問題的個(gè)別場(chǎng)合可以由應(yīng)用程序釆用悲觀鎖或樂觀鎖來控制。


    3、SQL語句可以使用SET TRANSACTION ISOLATION LEVEL來設(shè)置事務(wù)的隔離級(jí)別。如:SET TRANSACTION ISOLATION LEVEL   Read Committed。若要在應(yīng)用程序中使用更嚴(yán)格或較寬松的隔離級(jí)別,可以通過使用   set transaction isolation level語句設(shè)置會(huì)話的隔離級(jí)別,來自定義整個(gè)會(huì)話的鎖定。  
    指定隔離級(jí)別后,sql server會(huì)話中所有select語句的鎖定行為都運(yùn)行于該隔離級(jí)別上,并一直保持有效直到會(huì)話終止或者將隔離級(jí)別設(shè)置為另一個(gè)級(jí)別。

    4、另外要提一點(diǎn):SQL標(biāo)準(zhǔn)對(duì)事務(wù)隔離級(jí)別的規(guī)定,是按該級(jí)別不可能發(fā)生什么問題來確定的,不一定會(huì)發(fā)生這樣的問題;所以,不同的數(shù)據(jù)庫對(duì)事務(wù)隔離的級(jí)別約定不一樣,比如,有的數(shù)據(jù)庫把 可重復(fù)讀級(jí)別按可串行化來對(duì)待。(lkdlhw_2000個(gè)人理解:各個(gè)數(shù)據(jù)庫應(yīng)該都遵循四種標(biāo)準(zhǔn)的事務(wù)隔離等級(jí)的定義,但是某些數(shù)據(jù)庫具體實(shí)現(xiàn)可能不存在四種,因?yàn)榇谢梢员苊獠豢芍貜?fù)讀,因此某些數(shù)據(jù)庫語法上支持設(shè)置事務(wù)隔離等級(jí)為不可重復(fù)讀,但實(shí)際上是串行化在起作用。也就是說只要該級(jí)別能夠避免不可重復(fù)讀的問題,就可以稱之為不可重復(fù)讀取級(jí)別。)

    5、該隔離級(jí)別定義一個(gè)事務(wù)必須與其他事務(wù)所進(jìn)行的資源或數(shù)據(jù)更改相隔離的程度。事務(wù)隔離級(jí)別控制:
         讀取數(shù)據(jù)時(shí)是否占用鎖以及所請(qǐng)求的鎖類型。
         占用讀取鎖的時(shí)間。
         引用其他事務(wù)修改的行的讀取操作是否:
         在該行上的排他鎖被釋放之前阻塞其他事務(wù)。
         檢索在啟動(dòng)語句或事務(wù)時(shí)存在的行的已提交版本。
         讀取未提交的數(shù)據(jù)修改

    三、鎖

    1、分類:從數(shù)據(jù)庫系統(tǒng)的角度來看:分為獨(dú)占鎖(即排它鎖),共享鎖和更新鎖

    2、事務(wù)使用鎖,防止其他用戶修改另外一個(gè)還沒有完成的事務(wù)中的數(shù)據(jù)。對(duì)于多用戶系統(tǒng)來說,鎖機(jī)制是必須的。SQL Server有多種鎖,允許事務(wù)鎖定不同的資源。鎖就是保護(hù)指定的資源,不被其他事務(wù)操作。SQL Server有多種鎖,允許事務(wù)鎖定不同的資源。鎖就是保護(hù)指定的資源,不被其他事務(wù)操作。為了最小化鎖的成本,SQL Server自動(dòng)地以與任務(wù)相應(yīng)等級(jí)的鎖來鎖定資源對(duì)象。鎖定比較小的對(duì)象,例如鎖定行,雖然可以提高并發(fā)性,但是卻有較高的開支,因?yàn)槿绻i定許多行,那么需要占有更多的鎖。鎖定比較大的對(duì)象,例如鎖定表,會(huì)大大降低并發(fā)性,因?yàn)殒i定整個(gè)表就限制了其他事務(wù)訪問該表的其他部分,但是成本開支比較低,因?yàn)橹恍杈S護(hù)比較少的鎖。

    3、 鎖的特點(diǎn):
    1. 鎖是保證并發(fā)控制的手段
    2. 可以鎖定的資源包括行、頁、簇、表和數(shù)據(jù)庫
    3. 鎖的類型主要包括共享鎖和排它鎖
    4. 特殊類型的鎖包括意圖鎖、修改鎖和模式鎖
    5. 共享鎖允許其他事務(wù)繼續(xù)使用鎖定的資源
    6. 排它鎖只允許一個(gè)事務(wù)訪問數(shù)據(jù)
    7. 系統(tǒng)本身可以處理死鎖
    8. 用戶可以根據(jù)實(shí)際情況定制鎖的一些特征

    4、鎖是定義到sql語句上的,對(duì)數(shù)據(jù)進(jìn)行操作的sql就是:select,Insert,update ,delete。不同的事物隔離即被在執(zhí)行sql的時(shí)候會(huì)向表上發(fā)送不同的鎖。

    關(guān)于鎖的更多描述,可以去網(wǎng)上搜索一下。http://www.bitscn.com/windows/sql/200604/1068.html

    四、多個(gè)用戶同時(shí)對(duì)數(shù)據(jù)庫的并發(fā)操作時(shí)會(huì)帶來以下數(shù)據(jù)不一致的問題:

    臟讀dirty reads:
       當(dāng)事務(wù)讀取還未被提交的數(shù)據(jù)時(shí),就會(huì)發(fā)生這種事件。舉例來說:Transaction1修改了一行數(shù)據(jù),然后Transaction2在Transaction1還未提交修改操作之前讀取了被修改的行。如果Transaction1回滾了修改操作,那么Transaction2讀取的數(shù)據(jù)就可以看作是從未存在過的。
    不可重復(fù)的讀non-repeatable reads:
       當(dāng)事務(wù)兩次讀取同一行數(shù)據(jù),但每次得到的數(shù)據(jù)都不一樣時(shí),就會(huì)發(fā)生這種事件。舉例來說:Transaction1讀取一行數(shù)據(jù),然后Transaction2修改或刪除該行并提交修改操作。當(dāng)Transaction1試圖重新讀取該行時(shí),它就會(huì)得到不同的數(shù)據(jù)值(如果該行被更新)或發(fā)現(xiàn)該行不再存在(如果該行被刪除)。    
    虛讀phantom read:
       如果符合搜索條件的一行數(shù)據(jù)在后面的讀取操作中出現(xiàn),但該行數(shù)據(jù)卻不屬于最初的數(shù)據(jù),就會(huì)發(fā)生這種事件。舉例來說Transactio1讀取滿足某種搜索條件的一些行,然后Transaction2插入了符合Transaction1的搜索條件的一個(gè)新行。如果Transaction1重新執(zhí)行產(chǎn)生原來那些行的查詢,就會(huì)得到不同的行。

    為了解決這些問題,數(shù)據(jù)庫引入了“鎖”的機(jī)制(從數(shù)據(jù)庫系統(tǒng)的角度來看:分為獨(dú)占鎖(即排它鎖),共享鎖和更新鎖,詳細(xì)內(nèi)容不再描述)。

     

    五、lkdlhw_2000個(gè)人理解(以下問題都是推測(cè),還沒有證實(shí)):

    隔離級(jí)別是由鎖來實(shí)現(xiàn)的,之所以出現(xiàn)事務(wù)的隔離級(jí)別相當(dāng)于數(shù)據(jù)庫開發(fā)商根據(jù)一般的業(yè)務(wù)需求實(shí)現(xiàn)定義好的一組鎖使用的規(guī)則,便于我們時(shí)候,當(dāng)我們將事務(wù)隔離級(jí)別定義到某一級(jí)上后如果不能滿足需求,我們還可以自行定義sql的鎖來覆蓋事務(wù)隔離級(jí)別默認(rèn)的鎖機(jī)制?

    鎖存在兩個(gè)問題:一個(gè)是鎖的粒度,一個(gè)是鎖的時(shí)間,鎖的時(shí)間應(yīng)該包括兩種一種是sql執(zhí)行完就釋放鎖,領(lǐng)一中是事務(wù)結(jié)束后釋放鎖

    六、參考文章

    http://www.es-ivision.com/Channel-4-10-108-0.html
    http://tech.ccidnet.com/art/1105/20050602/261573_1.html
    http://www.tkk7.com/zhengtengfeng/archive/2007/04/23/113025.html

    七、事務(wù)隔離級(jí)別的例子

    1. Read Uncommitted:最低等級(jí)的事務(wù)隔離,僅僅保證了讀取過程中不會(huì)讀取到非法數(shù)據(jù)。上訴4種不確定情況均有可能發(fā)生。
    2. Read Committed:大多數(shù)主流數(shù)據(jù)庫的默認(rèn)事務(wù)等級(jí),保證了一個(gè)事務(wù)不會(huì)讀到另一個(gè)并行事務(wù)已修改但未提交的數(shù)據(jù),避免了“臟讀取”。該級(jí)別適用于大多數(shù)系統(tǒng)。
    第一個(gè)查詢事務(wù)
    SET TRANSACTION ISOLATION LEVEL   Read Committed
    begin tran
       update Cate SET Sname=Sname+'b' where ID=1
       SELECT * FROM cate where ID=1
       waitfor delay '00:00:6'  
       rollback tran --回滾事務(wù)
    select Getdate()
    SELECT * FROM cate where ID=1
    第二個(gè)查詢事務(wù)
    SET TRANSACTION ISOLATION LEVEL Read committed   --把committed換成Read uncommitted可看到“臟讀取”的示例。
    SELECT * FROM cate where ID=1
    select Getdate()
    可以看到使用 Read Committed 成功的避免了“臟讀取”.
    3. Repeatable Read:保證了一個(gè)事務(wù)不會(huì)修改已經(jīng)由另一個(gè)事務(wù)讀取但未提交(回滾)的數(shù)據(jù)。避免了“臟讀取”和“不可重復(fù)讀取”的情況,但是帶來了更多的性能損失。
    第一個(gè)查詢事務(wù)
    SET TRANSACTION ISOLATION LEVEL Repeatable Read --   把Repeatable Read換成Read committed可以看到“不可重復(fù)讀取”的示例
    begin tran
    SELECT * FROM cate where ID=33 --第一次讀取數(shù)據(jù)
       waitfor delay '00:00:6'  
    SELECT * FROM cate where ID=33 --第二次讀取數(shù)據(jù),不可重復(fù)讀取
    commit
    第二個(gè)查詢事務(wù)
    SET TRANSACTION ISOLATION LEVEL Read committed
    update cate set Sname=Sname+'JD' where ID=33
    SELECT * FROM cate where ID>30
    4. Serializable:最高等級(jí)的事務(wù)隔離,上面3種不確定情況都將被規(guī)避。這個(gè)級(jí)別將模擬事務(wù)的串行執(zhí)行。
    在第一個(gè)查詢窗口執(zhí)行
    SET TRANSACTION ISOLATION LEVEL Serializable -- 把Serializable換成Repeatable Read 可看到“幻像讀”的示例
    begin tran
    SELECT * FROM cate where ID>30 --第一次讀取數(shù)據(jù),“幻像讀”的示例
       waitfor delay '00:00:6'   --延遲6秒讀取
    SELECT * FROM cate where ID>30 --第一次讀取數(shù)據(jù)
    commit
    第二個(gè)查詢事務(wù)
    SET TRANSACTION ISOLATION LEVEL Read committed
    Delete from cate where ID>33
    SELECT * FROM cate where ID>30
    創(chuàng)建事務(wù)

    設(shè)置事務(wù)級(jí)別:SET TRANSACTION ISOLATION LEVEL
    開始事務(wù):begin tran
    提交事務(wù):COMMIT
    回滾事務(wù):ROLLBACK
    創(chuàng)建事務(wù)保存點(diǎn):SAVE TRANSACTION savepoint_name
    回滾到事務(wù)點(diǎn):ROLLBACK TRANSACTION savepoint_name



    1、并發(fā)的影響:http://technet.microsoft.com/zh-cn/library/ms190805.aspx
          該文章列出了并發(fā)引起的四種影響:丟失更新、臟讀(未提交的依賴關(guān)系)、不可重復(fù)讀(不一致的分析)、幻讀
      
    2、并發(fā)控制類型:http://technet.microsoft.com/zh-cn/library/ms189132.aspx
         當(dāng)許多人試圖同時(shí)修改數(shù)據(jù)庫中的數(shù)據(jù)時(shí),必須實(shí)現(xiàn)一個(gè)控制系統(tǒng),使一個(gè)人所做的修改不會(huì)對(duì)他人所做的修改產(chǎn)生負(fù)面影響。這稱為并發(fā)控制。并發(fā)控制類型分為兩大類:樂觀并發(fā)控制和悲觀并發(fā)控制
      
    3、數(shù)據(jù)庫引擎中的隔離級(jí)別:http://technet.microsoft.com/zh-cn/library/ms189122.aspx
         1)講到了事務(wù)隔離級(jí)別控制的內(nèi)容:
               事務(wù)隔離級(jí)別控制:
              讀取數(shù)據(jù)時(shí)是否占用鎖以及所請(qǐng)求的鎖類型。
              占用讀取鎖的時(shí)間。
              引用其他事務(wù)修改的行的讀取操作是否:
                     在該行上的排他鎖被釋放之前阻塞其他事務(wù)。
                    檢索在啟動(dòng)語句或事務(wù)時(shí)存在的行的已提交版本。
                     讀取未提交的數(shù)據(jù)修改。
          2)列出了事務(wù)的隔離級(jí)別:
            未提交讀(隔離事務(wù)的最低級(jí)別,只能保證不讀取物理上損壞的數(shù)據(jù))
             已提交讀(數(shù)據(jù)庫引擎的默認(rèn)級(jí)別)
             可重復(fù)讀
             可序列化(隔離事務(wù)的最高級(jí)別,事務(wù)之間完全隔離)

         3)選擇事務(wù)隔離級(jí)別不影響為保護(hù)數(shù)據(jù)修改而獲取的鎖。事務(wù)總是在其修改的任何數(shù)據(jù)上獲取排他鎖并在事務(wù)完成之前持有該鎖,不管為該事務(wù)設(shè)置了什么樣的隔離級(jí)別。對(duì)于讀取操作,事務(wù)隔離級(jí)別主要定義保護(hù)級(jí)別,以防受到其他事務(wù)所做更改的影響。
      
    4、SET TRANSACTION ISOLATION LEVEL (Transact-SQL) 設(shè)置事務(wù)隔離級(jí)別http://technet.microsoft.com/zh-cn/library/ms173763.aspx
         該選項(xiàng)的作用與在事務(wù)內(nèi)所有 SELECT 語句中的所有表上設(shè)置 HOLDLOCK 相同
    5、總結(jié):
         通過以上幾篇文章基本上可以了解數(shù)據(jù)庫事務(wù)和鎖之間的關(guān)系。數(shù)據(jù)庫事務(wù)隔級(jí)別也是由鎖機(jī)制來最實(shí)現(xiàn)的。要想了解關(guān)于鎖的更深層析的內(nèi)容還需要專門學(xué)習(xí)鎖的相關(guān)知識(shí)。

    posted @ 2008-10-11 13:11 Sky Yi 閱讀(5555) | 評(píng)論 (1)編輯 收藏

    struts2筆記 - 配置

         摘要: 與Struts 1.X不同,Struts2引入了WebWork的配置機(jī)制,在很大程度上提高了配置的靈活度。通過使用配置可以配置如下內(nèi)容: 配置類型 配置文件 ...  閱讀全文

    posted @ 2008-10-08 14:36 Sky Yi 閱讀(703) | 評(píng)論 (0)編輯 收藏

    struts2筆記 - helloworld

    可以從Apache Struts 的官方站點(diǎn)(http://struts.apache.org)下載發(fā)布版本,當(dāng)前最新的版本是2.0.9。下載的版本中包含struts2-core.jar和相關(guān)的依賴類庫文件,示例程序,HTML格式的文檔,和全部的源代碼。

    1,導(dǎo)入struts2需要的jar文件
    commons-logging-1.0.4.jar              日志記錄接口,可以配置選擇使用jdk1.4 log 或者 log4j
    freemarker-2.3.8.jar                        所有標(biāo)簽的模板都是用Freemarker編寫
    ognl-2.6.11.jar                               Objet Graph NavigationLanguage,Struts2表達(dá)式的基礎(chǔ)。
    struts2-core-2.0.9.jar                      struts2框架類庫
    xwork-2.0.4.jar                               xwork類庫,struts2的基礎(chǔ)

    2,配置web.xml文件
    <?xml version="1.0"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"
    >

    <web-app>
      
    <display-name>My Application</display-name>
      
    <filter>
        
    <!--配置struts過濾器-->
        
    <filter-name>struts2</filter-name>
        
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      
    </filter>

      
    <filter-mapping>
        
    <filter-name>struts2</filter-name>
        
    <url-pattern>/*</url-pattern>
      
    </filter-mapping>
    </web-app>

    3,配置struts.xml文件
    必須要把該文件建立在編譯好的WEB-INF下的classes目下
    在myeclipse可以把它新建到src下。src下的所有資源文件等都會(huì)在保存時(shí)自動(dòng)編譯到classes目錄
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>
        
    <!-- 配置默認(rèn)的包. -->
        
    <package name="default" extends="struts-default">
             
        
    </package>
    </struts>


    3,建立頁面文件
    Struts2提交一個(gè)請(qǐng)求的時(shí)候,輸入的數(shù)據(jù)并沒有直接送給下一個(gè)頁面,而是送給了一個(gè)你提供的Java類。這種Java類被稱為Action。當(dāng) Action執(zhí)行之后,Struts2會(huì)選擇一個(gè)結(jié)果作為返回,通常情況下是一個(gè)JSP頁面,但是也可以是PDF文件,Excel表單或者Java Applet窗口。
    這時(shí)需要做的是
  • 創(chuàng)建一個(gè)JSP頁面來顯示歡迎消息
  • 創(chuàng)建一個(gè)Action類來生成歡迎消息
  • 在struts.xml中創(chuàng)建一個(gè)配置項(xiàng)來關(guān)聯(lián)上述的Action和JSP頁面

  • 建立jsp頁面
    第一行引入了struts2的標(biāo)簽庫,在之后的頁面中可以使用s標(biāo)簽了。這行在幾乎所有的struts2應(yīng)用的jsp頁面中都會(huì)出現(xiàn)

    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
        
    <head>
            
    <title>Hello World!</title>
        
    </head>
        
    <body>
            
    <s:form action="hello">
             
    <s:textfield name="name" label="name" />
           
    </s:form>
        
    </body>
    </html>

    創(chuàng)建action類
    execute方法用來處理業(yè)務(wù)操作
    import com.opensymphony.xwork2.ActionSupport;
    public class HelloWorld extends ActionSupport {

        
    private String name;
        
    public String execute() throws Exception {
           
    return SUCCESS;
        }


        
    public void setName(String name){
            
    this.name= name;
        }


        
    public String getName() {
            
    return name;
        }

    }

    配置struts.xml關(guān)聯(lián)jsp和action
    <!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        
    <package name="tutorial" extends="struts-default">        
            
    <action name="HelloWorld" class="tutorial.HelloWorld">         
                
    <result>/HelloWorld.jsp</result>        
            
    </action>       
         
    </package>
    </struts>

    工作原理
    當(dāng)瀏覽器發(fā)送請(qǐng)求 http://localhost:8080/tutorial/HelloWorld.action 的時(shí)候,在服務(wù)器上發(fā)生了如下事件:

    1. 服務(wù)器接收到對(duì)HelloWorld.action的請(qǐng)求,根據(jù)web.xml文件中的配置,所有以.action結(jié)尾的請(qǐng)求都會(huì)被 org.apache.struts2.dispatcher.FilterDispatcher過濾,所以這個(gè)請(qǐng)求被發(fā)送給 FilterDispatcher,F(xiàn)ilterDispatcher是Struts 2 框架的入口點(diǎn)。
    2. Struts 2 框架查找HelloWorld.action對(duì)應(yīng)的Java 類,發(fā)現(xiàn)是HelloWorld.java,之后Struts 2 框架實(shí)例化了一個(gè)HelloWorld類,并且調(diào)用了這個(gè)類的execute方法。
    3. execute方法設(shè)置了message的內(nèi)容,并且返回SUCCESS。框架卻定返回值SUCCESS,并且找到對(duì)應(yīng)的內(nèi)容HelloWorld.jsp,并且通知服務(wù)器將HelloWorld.jsp作為返回內(nèi)容。
    4. 在HelloWorld.jsp被處理的過程中,<s:property value="message" />標(biāo)簽的內(nèi)容被替換為HelloWorld 的getMessage方法調(diào)用的結(jié)果
    5. 根據(jù)HelloWorld.jsp內(nèi)容生成的HTML內(nèi)容被發(fā)回到請(qǐng)求的瀏覽器。
    結(jié)果類型(Result Type)
    Action 處理完成之后,會(huì)選擇一個(gè)結(jié)果返回給客戶,這個(gè)結(jié)果可能是簡(jiǎn)單的HTML頁面,JSP頁面,F(xiàn)reeMarker模板,Velocity模板,或者是一個(gè) PDF文旦個(gè)或者是更復(fù)雜的JasperReports。一個(gè)Action可能有幾個(gè)可選的結(jié)果類型,為了決定到底使用那個(gè)結(jié)果類型,Action類的 execute方法必須返回一個(gè)標(biāo)記結(jié)果類型的字符串。
    struts.xml
    <action name="Logon" class="tutorial.Logon">
      <result type="redirect-action">Menu</result>
      <result name="input">/tutorial/Logon.jsp</result>
    </action>
    如果我們輸入了用戶名和密碼,Logon Action會(huì)返回“success”。"success"是默認(rèn)的返回結(jié)果,這個(gè)時(shí)候會(huì)使用Menu action作為結(jié)果。
    如果我們什么也不輸入,Logon Action 會(huì)返回"input", Struts 2會(huì)使用Logon.jsp 作為結(jié)果返回

    posted @ 2008-10-08 14:31 Sky Yi 閱讀(486) | 評(píng)論 (0)編輯 收藏

    struts2筆記 - 概述

    Struts 2 中不想要要在在處理和HTTP相關(guān)的操作,自需要使用框架的接口即可。
           在Strut 2 中不再會(huì)涉及到諸如 HttpServletRequest, HttpServletResponse, HttpSession等Http相關(guān)的Servlet接口類,取而代之的是Struts 2 的接口,例如RequestAware,SessionAware等。

    Struts 2 的標(biāo)簽基于 CSS,標(biāo)簽可以提供自己需要的HTML支持。
            Struts 2 的標(biāo)簽利用了CSS和模板,使用起來會(huì)非常方便,在Struts 1.x中我們需要使用Table來組織表單,但是在Struts 2中所有的標(biāo)簽自帶了Table內(nèi)容,可以方便的處理格式。例如<s:textfield> 標(biāo)簽自動(dòng)添加了 <tr> <td> 等標(biāo)簽。

    有狀態(tài)的Checkbox,可以以一種統(tǒng)一的方式記錄checkbox狀態(tài)的變化。
           在Struts 2中即使沒有被選中的checkbox其內(nèi)容仍然存在于Struts 2 框架中,不必像在Struts 1.x中那樣需要做特殊的存在性判斷。

     靈活的取消按鈕,在取消按鈕點(diǎn)擊的時(shí)候可以指向一個(gè)不同的action。
           @TODO
           可以在制定Form的action的同時(shí),制定cancel按鈕的action,當(dāng)點(diǎn)擊submit和cancel的時(shí)候出現(xiàn)完全按不同的功能。

        第一等級(jí)的AJAX的支持,在普通struts 標(biāo)簽的基礎(chǔ)上,使用AJAX增加了交互性和靈活性。
           Struts 2 的標(biāo)簽內(nèi)置了Ajax的支持。Struts 2 的標(biāo)簽使用了Dojotoolkit Ajax框架,不但能夠使用Ajax特性,而且能夠使用非常豐富和強(qiáng)大的瀏覽器小控件,例如日期選擇控件

        見到那集成Spring框架,非常簡(jiǎn)單的使用Spring框架提供的依賴注入功能。
           可以方便的使用Spring管理Struts 2 的action的創(chuàng)建,通過使用Spring可以充分的利用Spring的依賴諸如功能,并且能夠很好的集成其他的框架,例如Hibernate,iBatis等。

        更多的返回形式,除了JSP還支持,JasperReports,JFreeChart, Action鏈,文件下載等。
           除了支持JSP的表現(xiàn)形式,還支持JasperResports報(bào)表, JFreechart圖標(biāo),Action鏈,文件下載等。

        POJO表單,不再需要ActionForms,使用Javabean獲得客戶的收入或者將屬性表示出來,
        完全消除了ActionForm組建,可以使用任意合適的類型來接受頁面?zhèn)鱽淼臄?shù)據(jù)或者將數(shù)據(jù)表現(xiàn)出來。ActionFrom可以使用POJO的 JavaBean來替代,JavaBean中的屬性可以使用String,也可以使用具體的類型,例如Date,Int等。

        POJO Action,使用任意的類作為Action類,甚至可以使用接口。
           任何類都可以作為Action類,只要接口滿足一些簡(jiǎn)單的定義,不需要在使用Action類似的基類,你可以完全自由的發(fā)揮。
    部署
        插件結(jié)構(gòu),使用jar文件擴(kuò)展框架功能,不需要在做手動(dòng)的配置,內(nèi)置了JavaServer Faces, JasperResports, JFreeChart, Tiles等插件。
           擴(kuò)展一個(gè)功能只需要添加一個(gè)插件,插件甚至可以熱插拔,在你的應(yīng)用不停止的情況下追加新的功能。

        集成了分析功能,可以方便的找到程序性能的問題點(diǎn)。
           可以不借助外力發(fā)現(xiàn)程序的熱點(diǎn),找到問題的所在,

        準(zhǔn)確的報(bào)告錯(cuò)誤,可以非常準(zhǔn)確的指出程序的問題點(diǎn)。
           準(zhǔn)確的報(bào)告運(yùn)行時(shí)的錯(cuò)誤,方便解決問題。

    維護(hù)
        Action容易測(cè)試,直接測(cè)試Struts 2的Action,不需要使用Mock Http對(duì)象來測(cè)試。
           Action是普通的類,不需要特殊的環(huán)境,所以Struts 2 的Action 特別容易測(cè)試。

        聰明的默認(rèn)值,不需要配置不必要的配置,大部分的框架配置元素的都有非常合適的默認(rèn)值,基本上你不需要在做任何配置。
           Struts 2 有很多的配置項(xiàng),但是每一個(gè)都有默認(rèn)值,基本額上不需要更改默認(rèn)的選項(xiàng)即可保證最佳

        容易定制的控制器,可以定制每一個(gè)Action的處理過程。
           可以使用Intercepter來過濾每一個(gè)Action,在Action執(zhí)行前后追加自定義的操作。

        集成了Debugging,可以使用內(nèi)容之的debugging工具找到問題。
          
         靈活的標(biāo)簽庫,可以通過修改FreeMarker模板來定制標(biāo)簽的輸出,不需要在操作像天書異樣的JSP Taglib API,模板語言支持,F(xiàn)reemarker和Velocity     
           可以自定義模板庫,或者修改已有模板的內(nèi)容來定制頁面的顯示。

    Struts 2 中使用的模式
    Command
    Chain of responsibility

    Struts2 處理流程概要




    上圖來源于Struts2官方站點(diǎn),是Struts 2 的整體結(jié)構(gòu)。
    一個(gè)請(qǐng)求在Struts2框架中的處理大概分為以下幾個(gè)步驟
    1 客戶端初始化一個(gè)指向Servlet容器(例如Tomcat)的請(qǐng)求
    2 這個(gè)請(qǐng)求經(jīng)過一系列的過濾器(Filter)(這些過濾器中有一個(gè)叫做ActionContextCleanUp的可選過濾器,這個(gè)過濾器對(duì)于Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin)
    3 接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問ActionMapper來決定這個(gè)請(qǐng)是否需要調(diào)用某個(gè)Action
    4 如果ActionMapper決定需要調(diào)用某個(gè)Action,F(xiàn)ilterDispatcher把請(qǐng)求的處理交給ActionProxy
    5 ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調(diào)用的Action類
    6 ActionProxy創(chuàng)建一個(gè)ActionInvocation的實(shí)例。
    7 ActionInvocation實(shí)例使用命名模式來調(diào)用,在調(diào)用Action的過程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。
    8 一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是(但不總是,也可 能是另外的一個(gè)Action鏈)一個(gè)需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2 框架中繼承的標(biāo)簽。在這個(gè)過程中需要涉及到ActionMapper
     
    在上述過程中所有的對(duì)象(Action,Results,Interceptors,等)都是通過ObjectFactory來創(chuàng)建的。

    posted @ 2008-10-08 13:56 Sky Yi 閱讀(635) | 評(píng)論 (0)編輯 收藏

    MyEclipse 快捷鍵

    MyEclipse 快捷鍵
    (1)Ctrl+M切換窗口的大小
    (2)Ctrl+Q跳到最后一次的編輯處
    (3)F2當(dāng)鼠標(biāo)放在一個(gè)標(biāo)記處出現(xiàn)Tooltip時(shí)候按F2則把鼠標(biāo)移開時(shí)Tooltip還會(huì)顯示即Show Tooltip Description。
              F3跳到聲明或定義的地方。
              F5單步調(diào)試進(jìn)入函數(shù)內(nèi)部。
              F6單步調(diào)試不進(jìn)入函數(shù)內(nèi)部,如果裝了金山詞霸2006則要把“取詞開關(guān)”的快捷鍵改成其他的。
              F7由函數(shù)內(nèi)部返回到調(diào)用處。
              F8一直執(zhí)行到下一個(gè)斷點(diǎn)。
    (4)Ctrl+Pg~對(duì)于XML文件是切換代碼和圖示窗口
    (5)Ctrl+Alt+I看Java文件中變量的相關(guān)信息
    (6)Ctrl+PgUp對(duì)于代碼窗口是打開“Show List”下拉框,在此下拉框里顯示有最近曾打開的文件
    (7)Ctrl+/ 在代碼窗口中是這種//~注釋。
              Ctrl+Shift+/ 在代碼窗口中是這種/*~*/注釋,在JSP文件窗口中是<!--~-->。
    (8)Alt+Shift+O(或點(diǎn)擊工具欄中的Toggle Mark Occurrences按鈕) 當(dāng)點(diǎn)擊某個(gè)標(biāo)記時(shí)可使本頁面中其他地方的此標(biāo)記黃色凸顯,并且窗口的右邊框會(huì)出現(xiàn)白色的方塊,點(diǎn)擊此方塊會(huì)跳到此標(biāo)記處。
    (9)右擊窗口的左邊框即加斷點(diǎn)的地方選Show Line Numbers可以加行號(hào)。
    (10)Ctrl+I格式化激活的元素Format Active Elements。
                Ctrl+Shift+F格式化文件Format Document。
    (11)Ctrl+S保存當(dāng)前文件。
                Ctrl+Shift+S保存所有未保存的文件。
    (12)Ctrl+Shift+M(先把光標(biāo)放在需導(dǎo)入包的類名上) 作用是加Import語句。
                Ctrl+Shift+O作用是缺少的Import語句被加入,多余的Import語句被刪除。
    (13)Ctrl+Space提示鍵入內(nèi)容即Content Assist,此時(shí)要將輸入法中Chinese(Simplified)IME-Ime/Nonlme Toggle的快捷鍵(用于切換英文和其他文字)改成其他的。
                Ctrl+Shift+Space提示信息即Context Information。
    (14)雙擊窗口的左邊框可以加斷點(diǎn)。
    (15)Ctrl+D刪除當(dāng)前行。


    ---待續(xù)


    [以下為轉(zhuǎn)載]
    Eclipse快捷鍵大全
    Ctrl+1 快速修復(fù)(最經(jīng)典的快捷鍵,就不用多說了)
    Ctrl+D: 刪除當(dāng)前行
    Ctrl+Alt+↓ 復(fù)制當(dāng)前行到下一行(復(fù)制增加)
    Ctrl+Alt+↑ 復(fù)制當(dāng)前行到上一行(復(fù)制增加)

    Alt+↓ 當(dāng)前行和下面一行交互位置(特別實(shí)用,可以省去先剪切,再粘貼了)
    Alt+↑ 當(dāng)前行和上面一行交互位置(同上)
    Alt+← 前一個(gè)編輯的頁面
    Alt+→ 下一個(gè)編輯的頁面(當(dāng)然是針對(duì)上面那條來說了)

    Alt+Enter 顯示當(dāng)前選擇資源(工程,or 文件 or文件)的屬性

    Shift+Enter 在當(dāng)前行的下一行插入空行(這時(shí)鼠標(biāo)可以在當(dāng)前行的任一位置,不一定是最后)
    Shift+Ctrl+Enter 在當(dāng)前行插入空行(原理同上條)

    Ctrl+Q 定位到最后編輯的地方
    Ctrl+L 定位在某行 (對(duì)于程序超過100的人就有福音了)
    Ctrl+M 最大化當(dāng)前的Edit或View (再按則反之)
    Ctrl+/ 注釋當(dāng)前行,再按則取消注釋
    Ctrl+O 快速顯示 OutLine
    Ctrl+T 快速顯示當(dāng)前類的繼承結(jié)構(gòu)
    Ctrl+W 關(guān)閉當(dāng)前Editer
    Ctrl+K 參照選中的Word快速定位到下一個(gè)
    Ctrl+E 快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁面沒有顯示的用黑體表示)

    Ctrl+/(小鍵盤) 折疊當(dāng)前類中的所有代碼

    Ctrl+×(小鍵盤) 展開當(dāng)前類中的所有代碼

    Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)

    Ctrl+Shift+E 顯示管理當(dāng)前打開的所有的View的管理器(可以選擇關(guān)閉,激活等操作)

    Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個(gè)字母編輯器都提供快速匹配定位到某個(gè)單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個(gè)單詞時(shí),特別實(shí)用,這個(gè)功能Idea兩年前就有了)

    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)

    Ctrl+Shift+F4 關(guān)閉所有打開的Editer

    Ctrl+Shift+X 把當(dāng)前選中的文本全部變味小寫

    Ctrl+Shift+Y 把當(dāng)前選中的文本全部變?yōu)樾?/p>

    Ctrl+Shift+F 格式化當(dāng)前代碼

    Ctrl+Shift+P 定位到對(duì)于的匹配符(譬如{}) (從前面定位后面時(shí),光標(biāo)要在匹配符里面,后面到前面,則反之)

    下面的快捷鍵是重構(gòu)里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構(gòu)的快捷鍵都是Alt+Shift開頭的了)

    Alt+Shift+R 重命名 (是我自己最愛用的一個(gè)了,尤其是變量和類的Rename,比手工方法能節(jié)省很多勞動(dòng)力)

    Alt+Shift+M 抽取方法 (這是重構(gòu)里面最常用的方法之一了,尤其是對(duì)一大堆泥團(tuán)代碼有用)

    Alt+Shift+C 修改函數(shù)結(jié)構(gòu)(比較實(shí)用,有N個(gè)函數(shù)調(diào)用了這個(gè)方法,修改一次搞定)

    Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數(shù)字和字符串抽取成一個(gè)變量,尤其是多處調(diào)用的時(shí)候)

    Alt+Shift+F 把Class中的local變量變?yōu)閒ield變量 (比較實(shí)用的功能)

    Alt+Shift+I 合并變量(可能這樣說有點(diǎn)不妥Inline)
    Alt+Shift+V 移動(dòng)函數(shù)和變量(不怎么常用)
    Alt+Shift+Z 重構(gòu)的后悔藥(Undo)

    posted @ 2008-09-26 20:41 Sky Yi 閱讀(450) | 評(píng)論 (0)編輯 收藏

    Sql Server 中一個(gè)非常強(qiáng)大的日期格式化函數(shù)



    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
    Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
    Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
    Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
    Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
    Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
    Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
    Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
    Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
    Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
    Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
    Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
    Select CONVERT(varchar(100), GETDATE(), 12): 060516
    Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
    Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
    Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
    Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
    Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
    Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
    Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
    Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
    Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
    Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
    Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
    Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
    Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
    Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
    Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
    Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
    Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
    Select CONVERT(varchar(100), GETDATE(), 112): 20060516
    Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
    Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
    Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
    Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
    Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
    Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM


    常用:
    Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
    Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
    Select CONVERT(varchar(100), GETDATE(), 12): 060516
    Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16  

    posted @ 2008-09-25 15:40 Sky Yi 閱讀(358) | 評(píng)論 (0)編輯 收藏

    網(wǎng)站開發(fā)定律

    1.250定律
    拉德認(rèn)為:每一位顧客身后,大體有250名親朋好友。如果您贏得了一位顧客的好感,就意味著贏得了250個(gè)人的好感;反之,如果你得罪了一名顧客,也就意味著得罪了250 名顧客。  在你的網(wǎng)站訪客中,一個(gè)訪客可能可以帶來一群訪客,任何網(wǎng)站都有起步和發(fā)展的過程,這個(gè)過程中此定律尤其重要。
    2.達(dá)維多定律
    達(dá)維多認(rèn)為,一個(gè)企業(yè)要想在市場(chǎng)上總是占據(jù)主導(dǎo)地位,那么就要做到第一個(gè)開發(fā)出新產(chǎn)品,又第一個(gè)淘汰自己的老產(chǎn)品。  國內(nèi)網(wǎng)站跟風(fēng)太嚴(yán)重,比如前段時(shí)間的格子網(wǎng),乞討網(wǎng),博客網(wǎng),一個(gè)成功了,大家一擁而上。但實(shí)際效果是,第一個(gè)出名的往往最成功,所以在網(wǎng)站的定位上,要?jiǎng)幼约旱哪X筋,不是去撿人家剩下的客戶。同理,買人家出售的數(shù)據(jù)來建站效果是很糟糕的。
    3.木桶定律
    水桶定律是指,一只水桶能裝多少水,完全取決于它最短的那塊木板。這就是說任何一個(gè)組織都可能面臨的一個(gè)共同問題,即構(gòu)成組織的各個(gè)部分往往決定了整個(gè)組織的水平。  注意審視自己的網(wǎng)站,是速度最糟糕?美工最糟糕?宣傳最糟糕?你首先要做的,不是改進(jìn)你最強(qiáng)的,而應(yīng)該是你最薄弱的。
    4.馬太效應(yīng)
    《新約》中有這樣一個(gè)故事,一個(gè)國王遠(yuǎn)行前,交給三個(gè)仆人每人一錠銀子,吩咐他們:“你們?nèi)プ錾猓任一貋頃r(shí),再來見我。”國王回來時(shí),第一個(gè)仆人說: “主人,你交給我們的一錠銀子,我已賺了10錠。”于是國王獎(jiǎng)勵(lì)他10座城邑。第二個(gè)仆人報(bào)告說:“主人,你給我的一錠銀子,我已賺了5錠。”于是國王例獎(jiǎng)勵(lì)了他5座城邑。第三個(gè)仆人報(bào)告說:“主人,你給我的一錠銀子,我一直包在手巾里存著,我怕丟失,一直沒有拿出來。”于是國王命令將第三個(gè)仆人的一錠銀子也賞給第一個(gè)仆人,并且說:“凡是少的,就連他所有的也要奪過來。凡是多的,還要給他,叫他多多益善。”這就是馬太效應(yīng)。  在同類網(wǎng)站中,馬太效應(yīng)是很明顯的。一個(gè)出名的社區(qū),比一個(gè)新建的社區(qū),更容易吸引到新客戶。啟示是,如果你無法把網(wǎng)站做大,那么你要做專。作專之后再做大就更容易。
    5.手表定理
    手表定理是指一個(gè)人有一只表時(shí),可以知道現(xiàn)在是幾點(diǎn)鐘,而當(dāng)他同時(shí)擁有兩只表時(shí)卻無法確定。
    一個(gè)網(wǎng)站,你只需要關(guān)注你特定的用戶群需求。不要在意不相干人的看法。
    6.不值得定律
    不值得定律:不值得做的事情,就不值得做好  不要過度seo,如果你不是想只做垃圾站。不要把時(shí)間浪費(fèi)在美化再美化頁面,優(yōu)化再優(yōu)化程序,在你網(wǎng)站能盈利后,這些事情可以交給技術(shù)人員完成。
    7.彼得原理
    勞倫斯.彼得認(rèn)為:在各種組織中,由于習(xí)慣于對(duì)在某個(gè)等級(jí)上稱職的人員進(jìn)行晉升提拔,因而雇員總是趨向于晉升到其不稱職的地位。
    不要輕易改變自己網(wǎng)站的定位。如博客網(wǎng)想變門戶,盛大想做娛樂,大家拭目以待吧。
    8.零和游戲原理
    當(dāng)你看到兩位對(duì)弈者時(shí),你就可以說他們正在玩“零和游戲”。因?yàn)樵诖蠖鄶?shù)情況下, 總會(huì)有一個(gè)贏,一個(gè)輸,如果我們把獲勝計(jì)算為得1分,而輸棋為-1分,那么,這兩人得分之和就是:1+(-1)=0  不要把目光一直盯在你的競(jìng)爭(zhēng)網(wǎng)站上,不要花太多時(shí)間搶它的訪客。我們把這些時(shí)間用來尋找互補(bǔ)的合作網(wǎng)站,挖掘新訪客。
    9.華盛頓合作規(guī)律
    華盛頓合作規(guī)律說的是: 一個(gè)人敷衍了事,兩個(gè)人互相推諉, 三個(gè)人則永無成事之日。
    如果你看準(zhǔn)一個(gè)方向,你自己干,缺人手就招。不要輕易找同伴一起搞網(wǎng)站,否則你會(huì)發(fā)現(xiàn),日子似乎越過越快了,事情越做越慢了。
    10.邦尼人力定律
    一個(gè)人一分鐘可以挖一個(gè)洞,六十個(gè)人一秒種卻挖不了一個(gè)洞。合作是一個(gè)問題,如何合作也是一個(gè)問題。你需要有計(jì)劃。
    11.牛蛙效應(yīng)
    把一只牛蛙放在開水鍋里,牛蛙會(huì)很快跳出來;但當(dāng)你把它放在冷水里,它不會(huì)跳出來,然后慢慢加熱,起初牛蛙出于懶惰,不會(huì)有什么動(dòng)作,當(dāng)水溫高到它無法忍受的時(shí)候,想出來,但已經(jīng)沒有了力氣。  如果你是soho,注意關(guān)注你的財(cái)務(wù)。不要等到?jīng)]錢了再想怎么掙,你會(huì)發(fā)現(xiàn)那時(shí)候掙錢更難。
    12.蘑菇管理
    蘑菇管理是許多組織對(duì)待初出茅廬者的一種管理方法,初學(xué)者被置于陰暗的角落(不受重視的部門,或打雜跑腿的工作),澆上一頭大糞(無端的批評(píng)、指責(zé)、代人受過),任其自生自滅(得不到必要的指導(dǎo)和提攜)。
      做網(wǎng)站畢竟要遭遇這樣的階段,搜索引擎不理你,友情鏈接找不到,訪客不上門。這是磨練。
    13.奧卡姆剃刀定律
    如無必要,勿增實(shí)體。
    把網(wǎng)站做得簡(jiǎn)單,再簡(jiǎn)單,簡(jiǎn)單到非常實(shí)用,而不是花俏。google的首頁為什么比雅虎好?
    14.巴萊多定律(Paredo 也叫二八定律)
    你所完成的工作里80%的成果,來自于你20%的付出;而80%的付出,只換來20%的成果。
    隨時(shí)衡量你所做的工作,哪些是最有效果的。
    1.馬蠅效應(yīng)
    林肯少年時(shí)和他的兄弟在肯塔基老家的一個(gè)農(nóng)場(chǎng)里犁玉米地,林肯吆馬,他兄弟扶犁,而那匹馬很懶,慢慢騰騰,走走停停。可是有一段時(shí)間馬走得飛快。林肯感到奇怪,到了地頭,他發(fā)現(xiàn)有一只很大的馬蠅叮在馬身上,他就把馬蠅打落了。看到馬蠅被打落了,他兄弟就抱怨說:”哎呀,你為什么要打掉它,正是那家伙使馬跑起來的嘛!”  在你心滿意足的時(shí)候,去尋找你的馬蠅。沒有firefox,不會(huì)有ie7,firefox就是微軟的馬蠅之一。馬蠅不可怕,怕的是會(huì)一口吃掉你的東西,像ie當(dāng)初對(duì)網(wǎng)景干的那樣。
    2.最高氣溫效應(yīng)
    每天最熱總是下午2 時(shí)左右,我們總認(rèn)為這個(gè)時(shí)候太陽最厲害,其實(shí)這時(shí)的太陽早已偏西,不再是供給最大熱量的時(shí)候了。此時(shí)氣溫之所以最高,不過是源于此前的熱量積累。
    你今天的網(wǎng)站流量,是你一個(gè)星期或更長(zhǎng)時(shí)間前所做的事帶來的。
    3.超限效應(yīng)(溢出效應(yīng))
    刺激過多、過強(qiáng)和作用時(shí)間過久而引起心理極不耐煩或反抗的心理現(xiàn)象,稱之為“超限效應(yīng)”。 別到別人論壇里發(fā)太多廣告。別在自己網(wǎng)站上放太多廣告。別在自己的論壇里太多地太明顯地誘導(dǎo)話題。
    4.懶螞蟻效應(yīng)
    生物學(xué)家研究發(fā)現(xiàn),成群的螞蟻中,大部分螞蟻很勤勞,尋找、搬運(yùn)食物爭(zhēng)先恐后,少數(shù)螞蟻卻東張西望不干活。當(dāng)食物來源斷絕或蟻窩被破壞時(shí),那些勤快的螞蟻一籌莫展。“懶螞蟻”則“挺身而出”,帶領(lǐng)眾伙伴向它早已偵察到的新的食物源轉(zhuǎn)移。  不要把注意力僅僅放在一個(gè)網(wǎng)站上,即使這個(gè)網(wǎng)站現(xiàn)在為你帶來一切。你要給自己一些時(shí)間尋找新的可行的方向,以備萬一。
    5.長(zhǎng)尾理論
    ChrisAnderson認(rèn)為,只要存儲(chǔ)和流通的渠道足夠大,需求不旺或銷量不佳的產(chǎn)品共同占據(jù)的市場(chǎng)份額就可以和那些數(shù)量不多的熱賣品所占據(jù)的市場(chǎng)份額相匹敵甚至更大。  對(duì)于搜索引擎,未必你需要一個(gè)熱門詞排在第一位,如果有一千個(gè)冷門詞排在第一位,效果不但一樣,還會(huì)更穩(wěn)定更長(zhǎng)遠(yuǎn)。
    6.破窗理論
    棟建筑上的一塊玻璃,又沒有及時(shí)修好,別人就可能受到某些暗示性的縱容,去打碎更多的玻璃。  管理論壇時(shí),如果你發(fā)現(xiàn)第一個(gè)垃圾貼,趕緊刪掉他吧。想想:落伍現(xiàn)在為什么那么多××貼?現(xiàn)在控制比最初控制難多了。
    7.“羊群效應(yīng)”,又稱復(fù)制原則(Copy Strategy)
    一個(gè)羊群(集體)是一個(gè)很散亂的組織,平時(shí)大家在一起盲目地左沖右撞。如果一頭羊發(fā)現(xiàn)了一片肥沃的綠草地,并在那里吃到了新鮮的青草,后來的羊群就會(huì)一哄而上,爭(zhēng)搶那里的青草,全然不顧旁邊虎視眈眈的狼,或者看不到其它地方還有更好的青草。
    不要輕易跟風(fēng),保持自己思考的能力。
    8.墨菲定律
    如果壞事情有可能發(fā)生,不管這種可能性多么小,它總會(huì)發(fā)生,并引起最大可能的損失。
    除非垃圾站,否則不要作弊,對(duì)搜索引擎不要,對(duì)廣告也不要。
    9.光環(huán)效應(yīng)
    人們對(duì)人的某種品質(zhì)或特點(diǎn)有清晰的知覺,印象比較深刻、突出, 這種強(qiáng)烈的知覺, 就像月暈形式的光環(huán)一樣,向周圍彌漫、擴(kuò)散,掩蓋了對(duì)這個(gè)人的其他品質(zhì)或特點(diǎn)的認(rèn)識(shí)。
    不要輕易崇拜一個(gè)人或者公司、一個(gè)概念、一種做法。
    10.蝴蝶效應(yīng)
    一只亞馬遜河流域熱帶雨林中的蝴蝶,偶爾扇動(dòng)幾下翅膀,兩周后,可能在美國德克薩斯州引起一場(chǎng)龍卷風(fēng)。
    不管你做什么,網(wǎng)站或者其他,你都應(yīng)該關(guān)注新聞。機(jī)遇或者災(zāi)難可能就在那。
    11.阿爾巴德定理
    一個(gè)企業(yè)經(jīng)營(yíng)成功與否,全靠對(duì)顧客的要求了解到什么程度。  我贊同別人的點(diǎn)評(píng):看到了別人的需要,你就成功了一半;滿足了別人的需求,你就成功了全部。尤其是做網(wǎng)站。
    12.史密斯原則
    如果你不能戰(zhàn)勝他們,你就加入到他們之中去。 
    不要試圖做孤膽英雄。如果潮流擋不住,至少,你要去思考為什么。

    posted @ 2008-09-22 11:31 Sky Yi 閱讀(376) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲国产精品高清久久久| 99视频在线免费观看| 亚洲色欲色欲综合网站| 四虎精品亚洲一区二区三区| 69堂人成无码免费视频果冻传媒 | 老司机在线免费视频| 久久不见久久见免费影院www日本| 亚洲中文字幕无码中文字| 亚洲国产成人手机在线电影bd| 精品久久久久久亚洲| 四虎免费久久影院| 成人黄页网站免费观看大全| 久久www免费人成看片| 99re在线免费视频| 日韩精品免费视频| 中文字幕手机在线免费看电影| 美女一级毛片免费观看| 色欲色欲天天天www亚洲伊| 亚洲一区二区三区高清在线观看| 亚洲国产精品无码久久久| 久久精品亚洲精品国产色婷 | 国产免费高清69式视频在线观看| 国产亚洲精品成人久久网站| 色婷婷六月亚洲综合香蕉| 亚洲熟女乱色一区二区三区| 亚洲中文无码亚洲人成影院| 亚洲videos| 国产精品亚洲自在线播放页码| 亚洲国产精品专区| 亚洲最大在线视频| 亚洲国产精品久久久久秋霞影院| 亚洲综合区图片小说区| 亚洲国产成AV人天堂无码| 亚洲熟妇av一区| 亚洲免费人成视频观看| 亚洲一区在线视频观看| 国产精品亚洲午夜一区二区三区| 亚洲高清视频在线| 亚洲国产成人综合精品| 国产大陆亚洲精品国产| a在线视频免费观看在线视频三区|