paulwong

#

RUP

一 前言
軟件過程是指實施於軟件開發和維護中的階段、方法、技術、實踐及相關產物(計劃、文檔、模型、代碼、測試用例和手冊等)的集合。行之有效的軟件過程可以提高開發軟件組織的生產效率、提高軟件質量、降低成本並減少風險。

RUP具有較高認知度的原因之一恐怕是因為其提出者Rational軟件公司聚集了物件導向領域三位傑出專家Booch、Rumbaugh和 Jacobson,同時它又是物件導向開發的行業標準語言——標準建模語言(UML)的創立者。RUP是由Objectory過程演化而來。本文主要討論 RUP的主要內容和特點。

二 RUP的二維開發模型

RUP可以用二維坐標來描述。橫軸通過時間組織,是過程展開的生命週期特徵,體現開發過程的動態結構,用來描述它的術語主要包括週期 (Cycle)、階段(Phase)、迭代(Iteration)和里程碑(Milestone);縱軸以內容來組織為自然的邏輯活動,體現開發過程的靜態結構,用來描述它的術語主要包括活動(Activity)、產物(Artifact)、工作者(Worker)和工作流(Workflow)。

三 開發過程中的各個階段和里程碑

RUP中的軟件生命週期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細化階段(Elaboration)、構建階段(Construction)和交付階段(Transition)。每個階段結束於一個主要的里程碑(Major Milestones);每個階段本質上是兩個里程碑之間的時間跨度。在每個階段的結尾執行一次評估以確定這個階段的目標是否已經滿足。如果評估結果令人滿意的話,可以允許項目進入下一個階段。

初始階段(Inception Phase)

初始階段的目標是為系統建立商業案例並確定項目的邊界。為了達到該目的必須識別所有與系統交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關注的是整個項目進行中的業務和需求方面的主要風險。對於建立在原有系統基礎上的開發項目來講,初始階段可能很短。

初始階段結束時是第一個重要的里程碑:生命週期目標(Lifecycle Objective)里程碑。生命週期目標里程碑評價項目基本的生存能力。

細化階段(Elaboration Phase)

細化階段的目標是分析問題領域,建立健全的體系結構基礎,編製項目計劃,淘汰項目中最高風險的元素。為了達到該目的,必須在理解整個系統的基礎上,對體系結構作出決策,包括其範圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環境,包括創建開發案例,創建模板、準則並準備工具。

細化階段結束時第二個重要的里程碑:生命週期結構(Lifecycle Architecture)里程碑。生命週期結構里程碑為系統的結構建立了管理基準並使項目小組能夠在構建階段中進行衡量。此刻,要檢驗詳細的系統目標和範圍、結構的選擇以及主要風險的解決方案。

構建階段(Construction Phase)

在構建階段,所有剩餘的構件和應用程序功能被開發並集成為產品,所有的功能被詳細測試。從某種意義上說,構建階段是一個製造過程,其重點放在管理資源及控制運作以優化成本、進度和質量。

構建階段結束時是第三個重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑決定了產品是否可以在測試環境中進行部署。此刻,要確定軟件、環境、用戶是否可以開始系統的運作。此時的產品版本也常被稱為「beta」版。

交付階段(Transition Phase)

交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發佈做準備的產品測試,基於用戶反饋的少量的調整。在生命週期的這一點上,用戶反饋應主要集中在產品調整,設置、安裝和可用性問題,所有主要的結構問題應該已經在項目生命週期的早期階段解決了。

在交付階段的終點是第四個里程碑:產品發佈(Product Release)里程碑。此時,要確定目標是否實現,是否應該開始另一個開發週期。在一些情況下這個里程碑可能與下一個週期的初始階段的結束重合。

四 RUP的核心工作流(Core Workflows)

RUP中有9個核心工作流,分為6個核心過程工作流(Core Process Workflows)和3個核心支持工作流(Core Supporting Workflows)。儘管6個核心過程工作流可能使人想起傳統瀑布模型中的幾個階段,但應注意迭代過程中的階段是完全不同的,這些工作流在整個生命週期中一次又一次被訪問。9個核心工作流在項目中輪流被使用,在每一次迭代中以不同的重點和強度重複。

商業建模(Business Modeling)

商業建模工作流描述了如何為新的目標組織開發一個構想,並基於這個構想在商業用例模型和商業對像模型中定義組織的過程,角色和責任。

需求(Requirements)

需求工作流的目標是描述系統應該做什麼,並使開發人員和用戶就這一描述達成共識。為了達到該目標,要對需要的功能和約束進行提取、組織、文檔化;最重要的是理解系統所解決問題的定義和範圍。

分析和設計(Analysis & Design)

分析和設計工作流將需求轉化成未來系統的設計,為系統開發一個健壯的結構並調整設計使其與實現環境相匹配,優化其性能。分析設計的結果是一個設計模型和一個可選的分析模型。設計模型是源代碼的抽像,由設計類和一些描述組成。設計類被組織成具有良好接口的設計包(Package)和設計子系統 (Subsystem),而描述則體現了類的對象如何協同工作實現用例的功能。

設計活動以體系結構設計為中心,體系結構由若干結構視圖來表達,結構視圖是整個設計的抽像和簡化,該視圖中省略了一些細節,使重要的特點體現得更加清晰。體系結構不僅僅是良好設計模型的承載媒介,而且在系統的開發中能提高被創建模型的質量。

實現(Implementation)

實現工作流的目的包括以層次化的子系統形式定義代碼的組織結構;以組件的形式(源文件、二進制文件、可執行文件)實現類和對像;將開發出的組件作為單元進行測試以及集成由單個開發者(或小組)所產生的結果,使其成為可執行的系統。

測試(Test)

測試工作流要驗證對像間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現, 識別並確認缺陷在軟件部署之前被提出並處理。RUP提出了迭代的方法,意味著在整個項目中進行測試,從而儘可能早地發現缺陷,從根本上降低了修改缺陷的成本。測試類似於三維模型,分別從可靠性、功能性和系統性能來進行。

部署(Deployment)

部署工作流的目的是成功的生成版本並將軟件分發給最終用戶。部署工作流描述了那些與確保軟件產品對最終用戶具有可用性相關的活動,包括:軟件打包、生成軟件本身以外的產品、安裝軟件、為用戶提供幫助。在有些情況下,還可能包括計劃和進行beta測試版、移植現有的軟件和數據以及正式驗收。

配置和變更管理(Configuration & Change Management)

配置和變更管理工作流描繪了如何在多個成員組成的項目中控制大量的產物。配置和變更管理工作流提供了準則來管理演化系統中的多個變體,跟蹤軟件創建過程中的版本。工作流描述了如何管理並行開發、分佈式開發、如何自動化創建工程。同時也闡述了對產品修改原因、時間、人員保持審計記錄。

項目管理(Project Management)

軟件項目管理平衡各種可能產生衝突的目標,管理風險,克服各種約束併成功交付使用戶滿意的產品。其目標包括:為項目的管理提供框架,為計劃、人員配備、執行和監控項目提供實用的準則,為管理風險提供框架等。

環境(Environment)

環境工作流的目的是向軟件開發組織提供軟件開發環境,包括過程和工具。環境工作流集中於配置項目過程中所需要的活動,同樣也支持開發項目規範的活動,提供了逐步的指導手冊並介紹了如何在組織中實現過程。

五 RUP的迭代開發模式

RUP中的每個階段可以進一步分解為迭代。一個迭代是一個完整的開發循環,產生一個可執行的產品版本,是最終產品的一個子集,它增量式地發展,從一個迭代過程到另一個迭代過程到成為最終的系統。

傳統上的項目組織是順序通過每個工作流,每個工作流只有一次,也就是我們熟悉的瀑布生命週期。這樣做的結果是到實現末期產品完成並開始測試,在分析、設計和實現階段所遺留的隱藏問題會大量出現,項目可能要停止並開始一個漫長的錯誤修正週期。

一種更靈活,風險更小的方法是多次通過不同的開發工作流,這樣可以更好的理解需求,構造一個健壯的體系結構,並最終交付一系列逐步完成的版本。這叫做一個迭代生命週期。在工作流中的每一次順序的通過稱為一次迭代。軟件生命週期是迭代的連續,通過它,軟件是增量的開發。一次迭代包括了生成一個可執行版本的開發活動,還有使用這個版本所必需的其他輔助成分,如版本描述、用戶文檔等。因此一個開發迭代在某種意義上是在所有工作流中的一次完整的經過,這些工作流至少包括:需求工作流、分析和設計工作流、實現工作流、測試工作流。其本身就像一個小型的瀑布項目。

與傳統的瀑布模型相比較,迭代過程具有以下優點:

降低了在一個增量上的開支風險。如果開發人員重複某個迭代,那麼損失只是這一個開發有誤的迭代的花費。

降低了產品無法按照既定進度進入市場的風險。通過在開發早期就確定風險,可以儘早來解決而不至於在開發後期匆匆忙忙。

加快了整個開發工作的進度。因為開發人員清楚問題的焦點所在,他們的工作會更有效率。

由於用戶的需求並不能在一開始就作出完全的界定,它們通常是在後續階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些。

六 總結

RUP具有很多長處:提高了團隊生產力,在迭代的開發過程、需求管理、基於組件的體系結構、可視化軟件建模、驗證軟件質量及控制軟件變更等方面,針對所有關鍵的開發活動為每個開發成員提供了必要的準則、模板和工具指導,並確保全體成員共享相同的知識基礎。它建立了簡潔和清晰的過程結構,為開發過程提供較大的通用性。但同時它也存在一些不足: RUP只是一個開發過程,並沒有涵蓋軟件過程的全部內容,例如它缺少關於軟件運行和支持等方面的內容;此外,它沒有支持多項目的開發結構,這在一定程度上降低了在開發組織內大範圍實現重用的可能性。可以說RUP是一個非常好的開端,但並不完美。

posted @ 2010-03-26 10:29 paulwong 阅读(345) | 评论 (0)编辑 收藏

RUP overview

作者:李訓軍博士

隨著現代信息產業的蓬勃發展,軟件開發已經成為一項浩大繁複的工程。 就像是建造一座宏偉的宮殿, 從計劃、設計到施工, 每一個環節都必須嚴格把關, 稍有不慎, 整個工程就會失敗。 據統計, 僅在美國, 每年就有180,000個信息技術項目, 耗資大約$2500億美元, 其中25-30%的項目會流產。 由此可見, 由於管理不善和設計上的失誤所造成的損失是巨大的。現代軟件開發的管理和方法論顯得比以往任何時候都更為重要。

軟件開發的過程由方法論和工具構成(process = methodology + tools)。正如裝配電子設備一樣,僅有工具就可以勝任裝配任務。但為了減少失誤和提高效率,人們往往採用流水線作業,流水線作業便是一種應用於電子設備裝配中的方法論。目前,信息技術市場流行的方法論有RUP(Rational Unified Process), The Zachman Framework, XP (Extreme Programming)等。在這些方法論中,最流行的要數RUP。RUP是由Rational Software公司首創的。因它與當前流行的JAVA, J2EE技術和麵向對象的設計思想(OOAD)緊密的結合在一起,所以在大型的信息技術項目中得到了廣泛的應用。在這篇文章中,我們試圖對RUP的特點作一個初步的探討,並且討論它是如何貫穿在整個軟件開發的生命週期之中的。

RUP最重要的它有三大特點:1)軟件開發是一個疊代過程,2)軟件開發是由Use Case驅動的,3)軟件開發是以構架設計(Architectural Design)為中心的。

按照傳統的瀑布(Waterfall)開發模式,軟件開發大致經歷如下幾個步驟:商務需求分析(Business Requirement Analysis),系統分析(System Analysis),系統設計(System Design),開發實現(Implementation),測試(Test),發佈(Deployment),系統支持(Supporting)和系統變更管理(Change Management)。傳統的瀑布開發模式假定在進行新的開發過程時,上一個過程已經完成,而且不會回到上一個過程。初看起來,這似乎是一個非常合理,高效率的解決方案,但20多年的實踐證明,這個開發模式存在著很大的弊病,原因是軟件開發是一個非常複雜的工程,有諸多的因素影響工程的效率和成敗。軟件開發需要許多不同背景的個人和團隊參與。由於這些複雜性,在軟件開發的整個生命週期中每一個階段都有可能留下隱患和錯誤。如果等到系統已經開發實現完畢,在測試階段發現了重大問題,這時的返工將會造成人力、物力、財力及時間上的巨大浪費。鑑於以上的考慮,RUP強調軟件開發是一個疊代模型(Iterative Model),RUP定義了四個階段(Phase):開端(Inception),闡述 (Elaboration),建造(Construction),過渡(Transition)。其中每個階段都有可能經歷以上所提到的從商務需求分析開始的各個步驟,只是每個步驟的高峰期會發生在相應的階段。例如開發實現的高峰期是發生在建造階段。實際上這樣的一個開發方法論是一個二維模型。這種疊代模型的實現在很大程度上提供了及早發現隱患和錯誤的機會,因此被現代大型信息技術項目所採用。

RUP 的另一大特徵是Use Case 驅動。Use Case 是RUP方法論中一個非常重要的概念。簡單地說,一個 Use Case就是系統的一個功能。例如在一個基於電子商務的醫療系統中,病人可以坐在家裡通過網上瀏覽器與醫生約定看病的時間 (Make appointment),這樣,「Make appointment」就是系統的一個Use Case。在系統分析和系統設計中, Use Case被用來將一個複雜的龐大系統分割、定義成一個個小的單元,這個小的單元就是Use Case,然後以每個小的單元為對象進行開發。按照 RUP, Use Case貫穿整個軟件開發的生命週期。在商務需求分析中,客戶或用戶對Use Case進行描述,在系統分佈和系統設計過程中,設計師對Use Case進行分析,在開發實現過程中,開發編程人員對Use Case進行實現,在測試過程中,測試人員對Use Case進行檢驗。

RUP的第三大特徵是它強調軟件開發是以構架為中心的。構架設計(Architectural Design)是系統設計的一個重要組成部分。在構架設計過程中,設計師(Architect)必須完成對技術和運行平台的選取,整個項目的基礎框架(Framework)的設計,完成對公共組件的設計,如審計(Auditing)系統,日誌(Log)系統,錯誤處理(Exception Handling)系統,安全 (Security)系統等。設計師必須對系統的可擴展性(Extensibility),安全性(Security),可維護性 (Maintainability),可延拓性(Scalability),可重用性(Reusability)和運行速度(Performance)提出可行的解決方案。

在RUP方法論中,不同的角色可以從不同的側面來認識同一個項目。RUP定義了「4+1」個場景(View): Use Case場景(Use Case View),邏輯場景(Logic View),進程場景(process View),實現場景 (Implementation View)和發佈場景(Deployment View)。在Use Case場景中,客戶和商務分析員對 Use Case進行描述,在邏輯場景中,設計師對系統進行分析和設計,在進程場景中,設計師對系統可能出現的併發性,運行速度和分佈特性進行描述。實現場景則反映了程序開發員開發實現的過程。發佈場景是描述系統管理員和組裝人員實施系統發佈和管理的過程。值得強調的是,系統構架的設計是在邏輯場景中描述的。

RUP還定義了4個模型,即Use Case模型(Use Case Model),分析模型 (Analysis Model),設計模型(Design Model)和實現模型(Implementation Model)。Use Case模型包含Use Case Diagram和Use Case文檔。Use Case模型是其他三個模型的基礎,分析模型即是概念模型 (Conceptual Model),是系統分析所得到的結果,分析模型包含了類圖(Class Diagram),次序圖 (Sequence Diagram)以及活動圖(Activity Diagram)。設計模型則是構架設計和系統設計的結果。當設計模型完成後,開發編程人員便可以進行編程了。設計模型主要包含了類圖,次序圖和狀態圖(State Chart Diagrams)。分析模型和設計模型看起來有許多相似之處,但兩者的含義有本質的區別。分析模型強調的是問題的範圍,但並不給出解決問題的方案,分析模型並不涉及具體的技術和平台。例如它並不關心是否應用 EJB或一般的JAVA BEANS,系統是安裝在WebSphere或是在WebLogic。但是與之相反,設計模型要考慮這些細節,而且要提供解決這些問題的全部方案。當然設計模型是建立在分析模型之上的,分析模型中的一個類可直接映射成為設計模型中的類,但這種映射關係一般並不是一一對應的,最後一個模型是實現模型。實現模型包含構件圖(Component Diagram),從這個模型出發,開發編程人員可以產生骨架源程序 (Skeleton Source Code),也可以從源程序出發更新設計模型。

目前應用於系統分析和設計的工具主要有Rational Rose和Together Software Center (TogetherJ)。JAVA和J2EE的開發工具有IBM Websphere Application Developer(WSAD), Borland Jbuilde和WebGain VisualCafe. WSAD和WebSphere Application Server應用在一起,使得服務器端的排錯和系統的發布變得非常的容易。Jbuilder和VisualCafe一般與WebLogic Server緊密結合在一起。目前WebSphere Server和WebLogic Server佔據了Application Server市場的66%,其中 WebSphere Server佔據了37%,成為同類產品的No.1。在單位測試和集成測試中,廣泛應用的工具和框架有Junit, JunitPerf和Cactus.。

綜上所述,軟件開發的方法論已經成為現代軟件工程過程中不可缺少的一個重要部分。是目前在Java/J2EE和麵向對象的大型項目中廣泛被採用的一種方法論。他對整個軟件開發的生命週期提供了基礎框架和指導。RUP, UML/Rational Rose, Java/J2EE, WSAD, Websphere Application Server和Oracle這樣的技術、工具和平台的組合是目前許多公司、政府信息技術項目中採用的方案。因此,RUP的知識和經驗也是現在求職市場所需求的熱門技能。

posted @ 2010-03-25 18:17 paulwong 阅读(311) | 评论 (0)编辑 收藏

Javascript 篇 之 扩展String 函数

/**
 * @brief  扩展原生字符串 
 
*/


var StringEx = 

    
/**
     * @brief 去除字符串前后空格
     
*/

    trim : 
function()
    
{
        
return this.replace(/(^\s*)|(\s*$)/g, "");
    }
,
    
    
/**
     * @brief 去除左边空格
     
*/

    ltrim : 
function()
    

        
return this.replace(/(^\s*)/g, ""); 
    }
,
    
    
/**
     * @brief 去除右边空格
     
*/

    rtrim : 
function()
    

        
return this.replace(/(\s*$)/g, "");      
    }
,
    
    
/**
     * @brief 避免XSS 攻击
     
*/

    avoidXSS : 
function()
    
{
        
var strTemp = this.replace(/&/g, "&");
        strTemp 
= strTemp.replace(/</g, "&lt;");
        strTemp 
= strTemp.replace(/>/g, "&gt;");
        strTemp 
= strTemp.replace(/\"/g, "&quot;");
        return strTemp;    
    } ,
    
    /**
     * @brief 获取字符串的字节长度 汉字默认双字节
     */
    byteLength : function()
    {
          return this.replace(/[^\x00-\xff]/g,
"**").length;
    },
    
    /**
     * @brief     除去HTML标签
     * @example    <div id=
"test1">aaaa</div>  =>  aaaa 
     */
    removeHTML : function()
    {
        return this.replace(/<\/?[^>]+>/gi, '');
    },
    
    /**
     * @brief      格式化字符串
     * @example 
"<div>{0}</div>{1}".format(txt0,txt1)
     */
    format : function()
    {
        var args = [];
        
        for (var i = 0, il = arguments.length; i < il; i++)
        {
            args.push(arguments[i]);
        }
        
        return this.replace(/\{(\d+)\}/g, function(m, i)
        {
            return args[i];
        });
    },
    
    /**
     * @brief 字符串转数字
     */
    toInt : function() 
    {
        return Math.floor(this);
    }    
}


for (var it in StringEx) 
{
    String.prototype[it] = StringEx[it];
}


test:


    var strTest = "   -{0}这里是扩展原生字符串test{1}- ";
            
            alert(strTest.length);                 
// output : 26
            alert(strTest.ltrim().length);      // 23
            alert(strTest.rtrim().length);      // 25
            
            alert(strTest.byteLength());        
// 36
            
            alert(strTest.format(
"abc","def")); //   -abc这里是扩展原生字符串testdef- 
            
            
var strNumber = "89989";
            
            alert(
typeof strNumber.toInt());    // number
            
            
var domTest = document.getElementById("test1").outerHTML;
            
            alert(domTest);
            
            alert(domTest.avoidXSS());
            alert(domTest.removeHTML());


下载 string.js 及  demo 

posted @ 2010-03-25 00:38 paulwong 阅读(379) | 评论 (0)编辑 收藏

Spring Security 3.x 完整入门教程(转)

     摘要: Spring Security 3.x 出来一段时间了,跟Acegi是大不同了,与2.x的版本也有一些小小的区别,网上有一些文档,也有人翻译Spring Security 3.x的guide,但通过阅读guide,无法马上就能很容易的实现一个完整的实例。 我花了点儿时间,根据以前的实战经验,整理了一份完整的入门教程,供需要的朋友们参考。 1,建一个web project,并导入所有需要的l...  阅读全文

posted @ 2010-03-10 21:56 paulwong 阅读(4464) | 评论 (1)编辑 收藏

洗衣小窍门集锦(绝对值得收藏)

(1)衣服会变黄,多半是荧光剂变弱所致,想要衣物恢复洁白亮丽,就得想法子。
洗米水+橘子皮简单又有效:
保留洗米水或是将橘子皮放入锅内加水烧煮后,将泛黄的衣服浸泡其中搓洗就可以轻松让衣服恢复洁白。不但简单,也不像市面贩售的荧光增白剂会对皮肤产生副作用且不伤衣料,是值得一试的好方法。
流汗产生的黄渍,用氨水去除:
流汗产生的汗渍,因为含有脂肪的汗液,容易在布质纤维内凝结,所以在洗涤时加入约2汤匙的氨水,浸泡几分钟后,搓洗一下,然后用清水洗净,依照一般的洗衣程序处理,就可以将黄黄的汗渍去除喽!
(2)有时,白色的衣服或浅颜色的衣服日久颜色会变黄,引起白色或浅色衣服泛黄的主要原因是人身体分泌的油脂,特别是聚酯面料的衣物,更易泛黄。另外还有洗涤时残留的肥渣滓(最明显的见于尾酮亚麻纤维),如果没有冲洗干净,会使衣服大面积的变黄。对于这一现象是有方法可以去掉的,例如在洗涤耐高温水洗的衣服时,大量的使用清洁剂。一个传统的办法是将泛黄的衣服在烈日下悬挂暴晒,但在此之前,应在泛黄处上新鲜的柠檬汁,再放些盐并轻轻的揉搓。
警告:要小心操作,避免使用氯漂剂。斯潘德克斯弹性纤维、丝绸、羊毛等面料,接触氯漂剂会使其更黄。
(3)如果白衣服放久衣服了就会变的发黄,上的黄污渍成分主要是蛋白质,菠菜经过水煮後会释出可溶解蛋白质的成份哦。
1.买一把菠菜, 经过热水滚烫後,菠菜捞起来只留下滚汤待用
2.将有黄污渍的地方放入菠菜水中搓揉, 在浸泡10分钟
3.浸泡後捞起衣物, 在以正常的洗衣程序洗净衣物.完成。衣物又恢复洁白了!
洗衣小窍门集锦:
1、清洗白衣、白袜
白色衣物上的顽渍很难根除,这个时候取一个柠檬切片煮水后把白色衣物放到水中浸泡,大约15分钟后清洗即可。
2、清洗衣物怪味
有时衣物因晾晒不得当,会出现难闻的汗酸味,取白醋与水混合,浸泡有味道的衣服大约五分钟,然后把衣服在通风处晾干就可以了!
3、对付衣服上笔印
首先将酒精倒在衣服上自来水笔的划痕上,每一道划痕上都要均匀的覆盖上酒精,酒精要选用浓度不小于75%的医药用酒精。把衣服上倒了酒精的这一面向上放,尽量不要接触衣服的其它面,否则钢笔或者圆珠笔的印记颜色有可能会染到衣服的其它部分。用普通的洗脸盆,准备好大半盆水,接下来将满满两瓶盖的漂白水倒在了清水中,注意一定要是满满两瓶盖才行。捎做搅拌,之后再加少许的洗衣粉,这个量您可以自己掌握。之后也稍做搅拌,让洗衣粉能充分溶于水中。好了,现在将衣服完全浸泡在水里,时间是二十分钟。时间到了,清洗衣服,一点印记也没有了!
如果是圆珠笔痕迹而且痕迹较重,用上述方法后若尚存遗迹,最后用牙膏加肥皂轻轻揉搓,再用清水冲净。(但严禁用开水泡!)
衣物沾到笔圆珠笔痕迹另外还有一个办法解决:那就是别急着把衣服下水,而是先用汽油洗一洗沾到的部分再洗。
4、清洗衣服上的酱油渍
办法一:需要用到白糖。首先把沾上污渍的地方用水浸湿,然后再撒上一勺白糖,用手揉搓。我们可以看到一部分酱油迹已经沾到了白糖上,然后用水清洗,可除去渍。
办法二:需要用到苏打粉。将白背心浸湿后,在沾有酱油渍的地方涂上苏打粉,10分钟后用清水洗净,即可除掉酱油渍。
办法三:需要用到新鲜的莲藕,用刀把新鲜的莲藕切开,将新鲜的莲藕汁涂在酱油迹处,10分钟后在水中清洗,可除掉酱油渍。
5、清洗衣服上油漆
衣服上蹭到油漆该怎么办呢?方法就是把清凉油抹到粘有油漆的部位,因为清凉油里所含的物质可溶解油漆,之后在冲洗干净即可。若沾上水溶性漆(如水溶漆、乳胶漆)及家用内墙涂料,及时用水一洗即掉;若尼龙织物被油漆沾污,可先涂上猪油揉搓,然后用洗涤剂浸洗,清水漂净。
6、清洗草渍
您需要准备一百克食盐,另外您还需要准备1000克清水。把水倒入容器中,用手搅匀,将沾有草渍的衣服放入盆中,在盐水中泡10分钟。将衣服入在水中清洗,这时您会发现,轻轻松松就可以把顽固的草渍洗掉了。
7、清洗染色衣服
在洗衣机里放入温水,启动洗衣机进行漂洗,加入84消毒液,半缸水加大约三分之一瓶消毒液,溶解稀释,放入衣服,盖上机盖,漂洗大约25分钟, 25分钟后捞出衣物,衣服晾干后,就回复原来的颜色了。
如果想避免衣服不掉色,刚买回来的新衣衣,必须在水里放些盐(一桶水一小匙),洗后要马上用清水漂洗干净,不要泡太久哦!最后,不要在阳光下曝晒,阳光会使染料变性的哦。应放在阴凉通风处晾干。
8、清洗血迹
刚沾染上时,应立即用冷水或淡盐水洗(禁用热水,因血内含蛋白质,遇热会凝固,不易溶化),再用肥皂或10%的碘化钾溶液清洗;
用白萝卜汁或捣碎的胡萝卜拌盐皆可除去衣物上的血迹;
用10%的酒石酸溶液来揩拭沾污处,再用冷水洗净;
用加酶洗衣粉除去血渍,效果甚佳;
若沾污时间较长,可用10%的氨水或3%的双氧水揩拭污处,过一会儿,再用冷水强洗。
如仍不干净,再用10-15%的草酸溶液洗涤,最后用清水漂洗干净。
无论是新迹,陈迹,均可用硫磺皂揉搓清洗。
用搽手油涂抹在血迹上,停留15分钟左右的时间,在用清水肥皂清洗即可。
9、轻松洗掉衣服上的霉点
由于天气闷热空气潮湿,或换季的时候,洗过的衣服很容易长霉点,特别是白色的衣服,一旦长上霉点,是很郁闷的事情。
没关系,对付这些霉点,也有很多的方法:
绿豆芽;把嫩嫩的绿豆芽放在霉点上,双手使劲搓揉,是不是干净了一些呢?再放一些绿豆芽接着搓,哼哼,颜色又浅了很多,再搓,功夫不负有心人,霉点没有了,最后再用清水冲洗,哈哈,就这么简单,问题迎刃而解;
衣物上的霉斑可先在日光下暴晒,后用刷子清霉毛,再用酒精洗除;
把被霉斑污染的衣服放入浓肥皂水中浸透后,带着皂水取出,置阳光下晒一会,反复晾晒几次,待霉斑清除后,再用清水漂净;
丝绸衣物可用柠檬酸洗涤,后用冷水洗漂;
麻织物的霉渍,可用氯化钙液进行清洗;
毛织品上的污渍还可用芥末溶液或硼砂溶液(一桶水中加芥末二汤匙或硼砂二汤匙)清洗;
用2%的肥皂酒精溶液(250克酒精内加一把软皂片、搅拌均匀)擦拭,然后用漂白剂3-5%的次氯酸钠或用双氧水擦拭,最后再洗涤。这种方法限用于白色衣物,陈迹可在溶液中浸泡1小时。
10、清洗红、紫药水
红药水渍可先用白醋洗,然后用清水漂净;
另外可先将红药水污处浸湿后用甘油刷洗,再用含氨皂液反复洗,若加入几滴稀醋酸液,再用肥皂水洗,效果更佳;
处理紫药水渍,可将少量保险粉用开水稀释后,用小毛刷蘸该溶液擦拭。反复用保险粉及清水擦洗,直至除净(毛粘料、改染衣物、丝绸及直接染料色物禁用哦!!)
11、清洗膏药
有时衣衣蹭上了膏药可以用酒精加几滴水(或用高梁酒亦可),放在沾有膏药渍的地方搓揉,待膏药去净,再用清水漂洗,或用焙过的白矾末揉,再用水洗亦可;
也可用食用碱面撒于污处,加些温水,揉搓几次,即可除去。若将碱面置铁勺内加热后撒至污处,再加温水揉洗,去污更快。
12、清洗泛黄的衣服
其实,衣服会变黄,多半是荧光剂变弱,想要衣物恢复洁白亮丽,就得想法子。
洗米水+橘子皮简单又有效:
保留洗米水或是将橘子皮放入锅内加水烧煮后,将泛黄的衣服浸泡其中搓洗就可以轻松让衣服恢复洁白。不但简单,也不像市面贩售的荧光增白剂会对皮肤产生副作用且不伤衣料,是值得一试的好方法;
流汗产生的黄渍,用氨水去除:流汗产生的汗渍,因为含有脂肪的汗液,容易在布质纤维内凝结,所以在洗涤时加入约2汤匙的氨水,浸泡几分钟后,搓洗一下,然后用清水洗净,依照一般的洗衣程序处理,就可以将黄黄的汗渍去除喽!
13、清洗啤酒、黄酒渍
新染上的污迹,放清水中立即搓洗即掉。
陈迹可先用清水洗涤后,再用2%氨水和硼砂混合液揉洗,最后用洗水漂洗干净;黄酒的陈迹,在用清水洗后,再用5%的硼砂溶液及3%双氧水揩拭污处,最后用清水漂净。
14、清洗果汁印
新渍可用浓盐水揩拭污处,或立即把食盐撒在污处,用手轻搓,用水润湿后浸入洗涤剂溶液中洗净,也可用温水搓肥皂强力洗除;
重迹及陈迹清除后,可先用5%的氨水中和果汁中的有机酸,然后再用洗涤剂清洗。对含羊毛的化纤混纺物可有酒石酸清洗;
如织物为白色的,可在3%的双氧水里加入几滴氨水,用棉球或布块蘸此溶液将沾污处润湿,再用干净布揩擦、阴干;
用3-5%的次氯酸钠溶液揩拭沾污处,再用清水漂净。若是陈迹,可将其浸泡在该溶液中过1-2个小时后,再刷洗、漂净;
对桃汁迹,因其中含有高价铁,所以可用草酸溶液除之。对柿子渍,立即用葡萄酒加浓盐水揉搓,再用温洗涤剂溶液清洗,清水漂净;
番茄酱可先刮去干迹,用温洗涤剂清洗。果酱可用水润湿后拿洗发香波刷洗,再用肥皂酒精液洗,清水冲净。
15、清洗铁锈
干家务活是不是经常碰到这个?
取鲜柠檬,可榨出其汁液滴在锈渍上用手揉擦之,反复数次,直至锈渍除去,再用肥皂水洗净。
16、清洗碘酒
对碘酒渍可先用淀粉浸湿揉擦(淀粉遇碘立即呈黑色),再用肥皂水轻轻洗去。
淡的碘渍可用热水或酒精,也可用碘化钾溶液搓拭。浓渍可浸入15-20%的大苏打温热的溶液中,约2小时左右,再用清水漂洗。
17、清洗印油印
当毛料或布料沾上印油时,应先用热水或开水冲洗,然后用肥皂水搓洗,再用清水漂净,即可干净。千万不要用凉水洗,因为这会使颜色浸入纤维,很难再洗净。
18、清洗黄油印
因黄油渍的主要成分是脂肪,可用酒精或氨水再进行洗除。
19、清洗口红印
需要化妆的JM,估计最怕就是脱衣服是蹭到口红印啦;
如染上口红印,可先用小刷蘸汽油轻轻刷擦,去净油脂后,再用温洗涤剂溶液洗除;
如果没有汽油也可以用气泡式矿泉水或是调酒用的苏打水,倒在干净的布上轻拍有印痕的地方,很有效喔!
20、清洗茶、咖啡渍
被茶、咖啡这些饮料污染的衣服,可立即用70-80%的热水洗涤,便可除去。
旧茶迹,可用浓食盐水浸洗,或用氨水与甘油混合液(1:10)揉洗。丝和毛织物禁用氨水,可用10%的甘油溶液揉搓,再用洗涤剂洗后用水冲净。
旧茶及咖啡迹,可用甘油和蛋黄混合溶液擦拭,稍干后用清水漂净。或在污渍处涂上甘油,再撒上几粒硼砂,用开水浸洗。亦可用稀释的氨水、硼砂加温水擦拭。
旧咖啡迹可用3%的双氧水溶液揩拭,再以清水洗净,亦可用食盐或甘油溶液清洗。
21、去除蜡烛油
先用小刀轻轻刮去表面蜡质,然后用草纸两张分别托在污渍的上下,用熨斗熨两三次,用熨斗的热量把布纤维内的蜡质熔化,熔化的蜡油被草纸吸收掉。反复数次,蜡烛油印即可除净。
22、去处口香糖:
黏到口香糖的衣服,可以用棉花沾醋,轻轻松松就可以把口香糖擦掉了;
对衣物上的口香糖胶迹,可先用小刀刮去,取鸡蛋清抹在遗迹上使其松散,再逐一擦净,最后在肥皂水中清洗,清水洗净;
还可以先把衣服用塑料袋包好,放到冰箱中冷冻半天,等衣服上的口香糖变硬了取出来,轻轻揉搓,口香糖很快就掉了,而且一点痕迹也没有!
23、巧洗白球鞋
提到白球鞋,您可能也有过同样的烦恼――辛苦洗干净的白球鞋晒干后却出现这样黄黄的印记,真难看啊!不妨试试热心观众于小姐提供的这个窍门,让白球鞋洗后依旧亮白如新吧!
先用肥皂或洗衣粉将鞋子洗刷干净,把洗好的球鞋浸泡在啤酒中三分钟 ,然后把球鞋拿到阳台,放在阴凉处,并且在鞋面上用卫生纸盖上,晾! 效果显而易见哦!
24、巧洗毛巾
毛巾使用久了,常常会湿湿黏黏的,可用盐搓揉后,用清水洗净,则可除去湿黏之物。
25、去除钢笔渍
网上有朋友留言问“怎样去除钢笔渍”,如下,供参考:
从化工商店买一点儿草酸(颗粒状),将染有钢笔渍的衣服用溶解草酸的水浸泡搓洗,可去处痕迹。由于草酸属于弱酸,不会腐蚀衣物。

posted @ 2010-02-23 20:12 paulwong 阅读(182) | 评论 (0)编辑 收藏

Java实现远程屏幕监视(转)

远程屏幕监视使得控制方可以在远程主机上监视其它一台机器,其主要实现原理就是将被控制机器的屏幕作为图片传送给监视方,在Java中要实现远程屏幕监视,主要解决以下几个问题即可:
1:将当前屏幕的显示内容捕捉为图片
2:将捕捉的图片发送到远程控制主机
3:远程控制主机接收到在本地显示
4:利用多线程重复上面三步达到实时更新

说起来怎么这么简单啊,今天试着做了一下远程屏幕监视的实验,发现还真不是这么简单的,把我的心得总结出来共享一下,希望对你有用。

将当前屏幕显示内容捕捉为图片

1Robot robot = new Robot();
2//要捕捉的屏幕显示范围,下面以全屏示例说明
3Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
4BufferedImage bm = robot.createScreenCapture(rect);

通过上面几行代码就把屏幕的当前显示内容保存为内存中的BufferedImage对象,这个确实简单.

将捕捉的图片发送到远程控制主机
要达到实时监控,怎么保证发送效率,在网络状况不良好时怎么保证发送时使用带宽
因为要不停地往控制机上发送图片,所以传送的图片不能太大,否则会影响实时性,当网络状况不好时,占用带宽过多则更加会给实时性带来严峻的考验,解决的方法有两个:
1:使用jpg格式的图片进行传输。
jpg是一种支持高度压缩技术的图片格式,它所存储的信息不包含透明度,同等质量的情形下相对来说比png,gif等格式的图片要小很多,当然,文件大小是以图像质量为代价的,如果你一味地追求压缩后的大小,图像质量就会受损了。我在实验中使用大小为28394字节的png图片经过jpg压缩后大小仅剩5815字节(不是PS,整个过程全部使用Java完成)。
2:将用图片生成的字节数据先压缩再传送。
这一步是仁者见仁,智者见智了,有人说没有必要,jgp格式的图片再压缩也小不了多少。确实是这样的,我在实验中把5815字节大小的jpg经过zip压缩后为大小变为5702,有点小作用,实际应用中压缩与否就看你了(压缩其它格式的图片效果可能会明显一点,我在实验中把一个大小为883078字节的bmp图片压缩后大小仅为16849字节,很可观,达到了52:1)。

我能想到的就是这两点了,欢迎各位仁智双全的人补充。下面就是这两点用到的Java技术,Java高手就直接跳过吧。

使用Java将图片处理成jpg格式
1//outputstream就是要写入处理后的jpg图片的输出流,要保存到文件的话就用FileOutputStream
2JPEGCodec.createJPEGEncoder(outputstream).encode(bm);
3ImageIO.write(bm, "jpg", outputstream);

这两种方法有什么差别呢?别的我不知道,就平均效率来说,第二种是第一种的2倍,我实验中转换了10次,使用的时间分别是125和250(单位是百分之一毫秒,机子有点慢的说).

把图片数据转换为字节数组
1ByteArrayOutputStream bos = new ByteArrayOutputStream();
2JPEGCodec.createJPEGEncoder(bos).encode(bm);
3// 上句也可以用 ImageIO.write(bm, "jpg", bos)实现
4bos.flush();
5byte[] data = bos.toByteArray();

将生成的字节数组进行zip压缩
1ZipOutputStream zos = new ZipOutputStream(bos);
2zos.setLevel(Deflater.BEST_COMPRESSION);
3//下面我以ScreenCapture.jpg说明
4zos.putNextEntry(new ZipEntry("ScreenCapture.jpg"));
5zos.write(data);
6zos.closeEntry();

好了,这个时候就可以把字节数组发往监控机器了,如果你发了,你就知道,问题又来了(不会吧!)。
1:既然是采用多线程发送多张图片,那么对于一张图片,接收方怎么知道你发完了呢?
2:如果要发其它的数据,比如鼠标点击等,接收方又怎么区分什么时候发的是图片,什么时候发的是其它的……

对于这两点问题,最直接的解决方法是当数据发送完成后关闭发送字节的输出流,第二次发送时重新建立连接(网上确实有人这样肆无忌惮地做),这种方法采用不采用就看良心了(汗)。我采用的解决方法是,每次发送数据前都告诉接收方要发什么东西(解决问题2),同时告诉它我发了多少字节(解决问题1),接收方只要接收了这么多字节数,就表示本次发送完成,最后再发送真正要发送的内容(图片等),说简单点就是,发送的消息结构如下:
【标识位 大小 消息】 
标识位:采用一个整型,其实是一个byte,占一个字节
大小:一个整型,占四个字节
消息:实际要发送的字节数组,长度就是字节数组的长度
这样接收方每次都是先读取一个整数,判断发送方是要发送什么消息,然后再判断消息的大小,然后再接收指定大小的消息,最后完成本次发送转入下一次接收工作。

采用Socket的方式进行消息的发送
1DataOutputStream dos = new DataOutputStream(client.getOutputStream());
2//SEND_IMAGE_SYMBOL是一个标识位,你随便定义,只要保证能与其它标识位区分就行
3dos.write(SEND_IMAGE_SYMBOL);
4
5dos.writeInt(data.length);
6dos.write(data);
7dos.flush();

啊,真不容易,终于发送出去了!不知道那边接收到了没有?那现在就去追踪报道吧。


远程控制主机接收消息 
 1//先要判断消息的类型
 2DataInputStream reader = new DataInputStream(socket.getInputStream());
 3int msgSymbol = reader.read();
 4//还记得这个SEND_IMAGE_SYMBOL吗
 5if (msgSymbol == SEND_IMAGE_SYMBOL)
 6{
 7    //哦,是要发送图片啊。让我看看你的图片有多大
 8    int msgSize = reader.readInt();
 9
10    //晕,你网速好也不用发这么大吧,我一次接收不完的,不过幸好我有准备
11    byte[] buffer = new byte[msgSize];
12    int length = 0;
13
14    while (length < msgSize)
15    {
16        int readSize = reader.read(buffer, length, msgSize - length);
17
18        if (readSize > 0)
19        {
20            length = length + readSize;
21        }

22        else
23        {
24            break;
25        }

26    }

27    //这是非常关键的,图片太大时一次性是读不完的,一定要使用缓冲重复读取。
28
29    //人家给我发送的消息是图片,怎么把字节数组还原成图片呢?
30    ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
31    ZipInputStream zis = new ZipInputStream(bis);
32    //读取压缩的数据内容。
33    ZipEntry ze = zis.getNextEntry();
34    BufferedImage bi = ImageIO.read(zis);
35    //或者BufferedImage bi = JPEGCodec.createJPEGDecoder(zis).decodeAsBufferedImage();
36    //上面两行代码的差别已经说过了
37    //另外,如果在发送的时候你没有进行压缩,把上面的zis换成bis就行。
38
39
40    //有了BufferedImage对象,剩下的就是把它显示出来了进行远程"偷窥",任何一个支持图片显示的swing组件你都以用,我在实验中用的是JPanel,一个简单又支持双缓冲的组件。
41}


最后,就是使用多线程重复上面的步骤进行实时监控了。有什么问题欢迎指正。

本次实验进行的还算成功,成功偷窥了自己的桌面。谢谢你坚持看完我这么烂的文章,向你致敬!


下面是本次实验的运行图:


本文所使用的源代码:  源代码下载

posted @ 2010-02-10 23:45 paulwong 阅读(460) | 评论 (0)编辑 收藏

扫盲加扯淡——网友随笔画之云计算

     摘要: 今天在论坛看到网友自创的漫画,也许就是随笔画画吧, 且不说这位网友是否真的理解云计算(老实说,我也不清楚云计算是什么。),但确实是这位网友还是很有才的,能把自己的看法用这种形式表达出来,已经很难为可贵了。

“我看了N多的相关介绍也找不到一个好的解释,应该说是我看不懂吧。

谁给个简单通俗点的解释啊

我看了大概就像是网络硬盘吧可以上传电脑备份和文件的还可以在线编辑本人啥的,没啥特别的啊不是已经实现了,只觉的现在大头就是想把他们规划下罢了,
没啥特别的怎么那么多公司参与呢”
网络硬盘不是云计算。
————————
什么是云计算呢?
最开始,人们使用算盘。

  阅读全文

posted @ 2010-01-29 00:27 paulwong 阅读(384) | 评论 (0)编辑 收藏

华佗偏方

1.冠心病:干山楂30克,决明子10克,白菊花10克,加水稍煎当茶饮,每日一剂,半月愈.

  2.慢性干病:茵陈1两,大枣10个,白菊花10克,水煎服,每天一剂,连续服100天痊愈.

  3:肺结核:活乌龟一只,用泥包住,用暗火,慢火烧焦去泥,研成龟粉,开水冲服,每天三次,每次一钱,效果良佳,一百日即愈.(忌狗肉酸辣食物)

  4:阳痿不举:活虾2个,蛤蚧一点,一棵整葱白,把葱白花开,再把活吓,蛤蚧夹在葱里烤干研面,睡前服下,当晚见效.

  5:肝硬化腹水;纯绿豆面一斤,猪胆4个,用胆汁调绿面成丸,如绿豆大小,每天三次,每次6丸特效.

  6肺气肿:仙人掌2两,去皮切片,香油炸黄,加水一碗,烧开七次,剩半碗即可,每日暮途穷3次,7天痊愈.

  7全身浮肿;小麦麸炒黄1斤,加红糖拌匀,大枣汤冲服,每日2次,每次60克,连服15天即愈.

  8肺炎:鱼星草一把,炖七个荷包鸡蛋吃,每日一次,十天愈.

  9:高血压:每天用八个干香蕉皮,煮开水灌瓶内当茶喝,连续喝八天,不能减断,不级少于六十四个香蕉皮,连续喝八天痊愈.

  10:糖尿病:大白公鸡一只,杀掉去肠杂,内加陈醋四两,不加油盐,炖熟吃肉喝汤,三天吃一只,轻者吃1-2只,重的吃三只痊愈.

  11:肾炎:玉米须,西瓜皮,冬瓜皮,赤小豆各一两,煮汤代茶,持续服见奇效.

  12:肾炎腹水:巴豆,黄蜡,用大针串在巴豆上,放蜡灯烧出油后,沾蜂黄蜡吃,每日2次,每次4粒,连吃半月痊愈.

  13:羊羔风:落地羊羔一个全毛小鸡没出蛋壳的七个开白花的桃叶七片,共煮熟分几次吃完自愈.

  14:前列腺炎:生南瓜籽二两,每天分3次吃完,连续吃七天痊愈.或用黄瓜尾巴五个切碎,加水250毫升,煮开后分二次,喝完半月愈.

  15:血脂稠:每天用野山枣树根一尺长,短的也得配一尺长,玉米须干的一两,湿的二两,煮开水当茶喝,连续喝十五天痊愈,不再复发.

  16:贫血症:菠菜3两,猪肝3两,牛羊肝各2两,不加油盐,炖熟吃,每日1付分3次吃完,半月愈.

  17:胃病溃疡:白芨,疾黎各3钱,煎水服,每日一剂,煎两次服,外加2片痢特灵,七天痊愈.

  18:食道炎:木灰一两,红枣七个,用火烧红开水捕灭,研灰粉,红糖水冲服,每日一次,连服七日痊愈.

  19:慢性肠炎,每天4个个鸡蛋,分2次炒,炒时不加油盐水,连续吃半月特效.或用半熟的无花果,用单不用双,3,5,7,个都行,煮开水当茶喝,半月痊愈.

  20:红白痢疾:早晨起床后,空腹吃七个变蛋,每日一次,三日痊愈.或用拉拉秧头七个,加红白糖各一两,煮开水1碗喝下痊愈.

  21:低血压:甘草15克,桂枝30克,肉桂30克,水煎当茶大量喝,3日血压升高,少者2日恢复正常.

  22:气管炎,哮喘:红砂糖1000克,乌贼骨500克,乌贼骨焙干研面,与砂糖拌匀,每日三次,每次20克,半月痊愈,不再复发.

  23:肺结核,气管炎:羊肉500克,小麦仁(小麦去皮)60克,生姜9克,熬炖成稀粥,每天早晚各服一次,连服一月痊愈.

  24:性病流精不止:强的松片,盐酸四环素片,维生素c片,每天服三次,每次各2片,开水送下,3天除根,不再复发.

  25:梦遗滑精:荷叶100克,阴干辔烘干,研面,每日3次,每次十克,黄酒冲服,连服3日愈.

  26:甲状腺肿大:浙贝母,海藻,牡蛎各12克,共研未每日2次,每次6克,饭前用白酒一蛊送下,7天愈.

  27:胃下垂:猪肚半斤,白胡椒25克,同煮后,吃肚喝汤,每日一次,3日愈,胃下垂蹲着吃饭,时间长了就痊愈.

  28:治疗翻胃:牛乳一杯,韭菜法半杯,生姜2调羹,和匀微火上沌温,空腹饮用,对反胃,噎隔,大便炽结,呕吐有特效.

  29:经前腹痛:五灵脂10克,香附15克,炒香附时洒点酒,加水煎至300毫升,分早晚各服一次,两次痊愈.

  30:白带污臭:鸡蛋打一小孔,放入白果2克,蒸熟吃,每日2个,7日痊愈.

  31:阴痒滴虫病:蛇床子,苦参各15克,煮开水先熏后洗,两次痊愈.

  32:乳腺炎:鲜葡萄叶500克,捣烂敷患处,每天换一次,连用15天痊愈.

  33:慢性咽炎:干黄花菜30克,加水400毫升,文火煎烂,调入蜂蜜100毫升,每日3次,细嚼慢咽,7天痊愈.

  34:十二脂肠溃疡:维生素B6,28片,痢特灵28片,用法:第一天吃四次各四片,第二吃三次各二片,第三天吃两次各两片,第四天吃一次各两片.休息一天再服一剂痊愈.

  35:肾亏腰酸疼:黑豆50克,猪腰子4个,小茴香一钱,食盐少许,煮服吃,每日一剂,7剂痊愈.

  36:肾炎蛋白尿:黄芪,玉米须,糯稻根各30克,炒糯米15克,煎水当茶饮,每天一会,15天痊愈.

  37:肾结石:用拉拉秧根,煮开水当茶喝,连喝十天愈.

  38:胆结石:鸡内金粉15克,冲泡3百毫升开水浸泡15分钟后,即可服用,然后慢跑步,以助结石排出,连服1月痊愈.

  39:胆襄炎:玉米须2两,茵陈1两,山枳子5钱,广郁金5钱,水煎服,每日一剂,连服15剂痊愈.

  40:头痛病:麦麸半斤,加醋炒热后,分两袋装,放头上顶,两袋互换顶凉了加热,12小时不出屋一次愈.

  41:偏头痛:用萝卜汁滴鼻孔,仰卧,左边头疼滴右边鼻孔,右边头疼滴左边鼻孔,效果即佳.

  42:腮腺炎:活泥鳅20条,洗净加白糖250克,拌15分钟,用滑液糖浆涂患处,干了即换,每日数次,3日痊愈.

  43:急性扁桃体炎:取蝎尾一条,冰片0.3克,研细未,撒在小膏药中间,贴于患处,24小时更换一次,2至3次即愈.

  44:头晕:用才出小鸡的蛋壳,焙干研面,红糖水冲服,每日3次,每次10克,3日愈.

  45:鼻子出血:用七七芽一把,煮碗水喝下即愈.

  46:鼻炎,鼻窦炎:河里青苔鲜的,从潮湿处刮下,装入瓶内,纱布卷青苔条,塞入鼻孔内,4小时更换一次,五日即愈,鼻塞得用10至15日痊愈.

  47:耳内流脓:柳树上生的莪子2克,入老青瓦上焙干研面,香油调各,滴入耳内,用棉花堵住,一次愈神效.

  48:耳鸣:生猪皮,香葱各100克,同剁烂,稍加食盐,蒸熟后一次吃完,连吃3天.对疲劳过度,上火引起的有效.

  49耳聋:口内含一根大铁钉,耳上放块磁铁听,每天听六次,每次2分钟,数日愈.

  50:口腔炎:用食盐水漱口,再含冰糖即可,如溃疡,取鸡蛋壳软膜贴之,疼痛立止,2次痊愈.

  51:咳嗽无痰:冬瓜子一两,水豆腐一方,冰糖二两,炖熟服下有效如神,连用3次,不妨一试.

  52:牙疼:两方,神经性火牙疼,用蛇皮焙黄研面,白酒调稀糊,点在牙上立即止痛,30年不发;蛀牙痛,把猪肚洗净,

  刮一点粘膜,包在小沙布内,一次根治.

  53:黑黄牙变白:乌贼骨研面,拌牙膏刷牙,洁白如玉.

  54:洗眼仙方:中药青皮15克,皮硝15克,加六碗水煎至两碗水,装在瓶内,洗时倒点碗内,用小纱布棉花沾药水洗眼,每天三次,白内障和一切眼病洗之即愈.

  55:百虫入耳:猫尿滴耳内,百虫自出来,大蒜擦猫鼻自尿.

  56:鱼刺卡喉:鸭子倒提,取口中涎水咽下,鱼刺自化.别的骨头,用狗液咽下自化.

  57:少白头变黑发:1:柏壳装枕头,枕头半年即黑.2:黑芝麻三两,何首乌三两,加糖水煮沸分三次吃完,连吃半月后,白发逐渐变黑.

  58:脱发:取黑芝麻30克,大米100克,放锅内煮粥,当早饭食用,每天一剂,连服10天可再生新发.

  59:吐血:用韭菜根捣汁,兑冷开水喝特效.

  60:神经衰弱:浮小麦50克,甘草15克,大枣10克,酸枣仁15克,水煎服,每日一付即愈.

  61:感冒:二两生姜,二两红糖,把姜切碎,放锅内加水煎剩一碗喝下睡觉,一次即愈.

  62:咳嗽:香油一两,羊肝三两,炒熟吃,每日3次,3日即愈.痰多用萝卜捣绞汁二两,冰糖二两,煎服,每日早晚各服一次,3日愈.

  63:去口臭:甘草,桔皮,泡过的茶叶各五钱,研未先含后服,每日2次,3日即愈.

  64:大便干燥:1猪油一两,白糖一两,开水一杯冲服即愈.2:每天早晨喝一杯淡盐开水特效.

  65:小儿气管炎;石榴子一把,捣烂加冰糖调水喂,每天三次,三天断根.

  66:小儿腹泻:清凉油,涂小儿肚脐上,和尾骨上,每天2次,3天痊愈.

  67:小儿尿床:鲇鱼一条,放锅里加水煮,不加油盐,留一碗喝下,第一天尿,向后永不尿床.

  68:小儿夜哭:茶叶适量,放嘴嚼碎制成饼状,敷于小儿肚脐上立即停哭.

  69:小儿百日咳:鸡苦胆一个,红糖适量,两者调匀,每日一次,三日即愈.

  70:大人尿床:鸡肠子四付,洗净,放新瓦上加热,放鸡肠焙干研面,每日二次,每次10克,黄酒冲服,四付服完痊愈,再复发.

  71:疝气:用发岔的茄子,切碎煮熟吃,每天2次连吃5次愈.或用红糖1两,葵花杆瓤子一棵整个煮水喝,2次愈.

  72:多尿症:穿山甲15克,五香粉适量,放锅内加水炖熟食穿山甲肉,每日一次,4日即愈.

  73:荨麻疹:糯米60克,慢火把米炒开花,取米花炖汤服,每日一次,3日愈.

  74:麻疹:香菜500克,水烧开后,芫荽下锅煮一二开即可,先熏后洗手足,可治麻疹应出不出,或不透的.

  75:湿疹:中药苍耳子50克,煎水洗患处,每日二次,二日愈.

  76:全身痒:中药蛇床子30克,苦参30克,加雄黄盐少许,煮开水洗全身,每日一次,3日愈.

  77:失眠:白芍60克,鸡肝一具,先煎白芍,去药渣且,把鸡肝捣烂,煎温服,每晚一次,5次神效.

  78:打呃逆:鲜生姜30克,蜂蜜30克,生姜取汁去渣,与蜂蜜调匀一次服下却愈.

  79:细菌性腹泻:3-5棵大葱,去皮洗净,沾油象吃菜那样吃下,隔2-3小时再吃一次即愈.

  80:病后不语:服龟,每天2次,每次10克,3天后自能说话,(大蒜抹龟鼻自尿)

  81:口吃:舌头上放块小糖,慢慢练习说话,几日见效.

  82:红眼病:桑叶,菊花各15克,水煎,去渣,温洗患眼,一日二次,三日即愈.

  83:尿血:葡萄根,白糖各9克,水煎服,七日即愈.

  84:秀球风:桃叶,明矾捣泥擦患处,3次特效.

  85:晕船晕车:生姜二片,绿豆七粒,把二片姜中间夹七个绿豆粒,敷有寸脉内关上,胶布固定,神效.

  86:脸上粉刺:香油炸蝎子吃,每日10克,7日痊愈.

  87:脸上雀斑:柠檬一两,硼砂三钱,封瓶三天涂雀斑,每日一次,七日掉.

  88:脸上黑痣:生石灰,白碱面各3克,用酒精调糊状,点在黑痣上,四小时即掉.

  89:盗汗:五倍子9克,研末加水调成糊状,睡前敷肚脐上纱布固定,一次即愈.

  90:睡觉打呼噜:枕头不要太高,睡前点滴鼻通良效.

  91:头昏:生猪脑一个,加红糖一两,炖熟吃,每日一次,七日愈.

  92:减肥:海带50克,草决明75克,水煎服,每日一次,15日达到理想,不妨一试.

  93:鹅掌风:半斤食醋,加几滴白酒,烧开洗手,每天3至5次,5天即愈.

  94:米面不生虫:花椒壳,小茴香两把,用纱布包住,放在米面缸里,盖好常年不生虫.

  95:烧烫伤:用白纸泡白酒内,敷患处,要急时,纸干即换,消毒,止痛,好得快,不妨一试.

  96:痔疮:不论什么痔疮,用无花果树叶6片,煮开水连叶倒入桶内,先熏后洗,每天一次,3天痊愈.

  97:脱肛:用白矾,白芋各等份,捣成糊状,砂布包条寒入肛门,每天一次二小时取出,连续七次即愈.

  98:牛皮癣,头癣:用韭菜根30克,上药晒干研面,香油调糊状,涂患处,隔日一次,5次即愈.或用大蒜先擦刀锈,再擦癣,每日3次,顽癣10天愈.

  99:皮肤过敏:每日3次,每次吃15-25枚红枣,生食熟食,一般十天后见效.

  100狐臭:明矾30克,樟脑3克,冰片1.5克,共研细面,水调糊状擦患处,每晚一次,7日愈.

  101:冻疮:夏天冶冻疮冬天不冻,用芝麻中间的叶子,摘下擦冻过的皮肤一次,冷天再不冻.

  102.灰指甲:用冰醋酸泡指甲草,1斤冰醋酸,泡3两凤仙花连叶花梗一起泡在冰醋酸内,泡七天即可用,每天5次,1月即愈。

  103。脚汗:茄子棵、辣椒棵,煮开水洗脚,3日愈。

  104。脚气:白矾研细面撒在鞋子里边,每天撒一次,三次神效,不再复发,不妨一试。

  105:脚手裂:用醋煮杨树叶,泡脚手,3日即愈。

  106:脚鸡眼:中药鸭蛋子,去皮研面,先刺破患处点滴醋,再把药面抹上,胶布固定,3次愈。

  107:脚骨刺:没石子,牙皂各5克,研面,白醋精调糊状,敷患处固定,2天愈。

  108:脚手麻木:生姜60克,陈醋100克,煎汤洗1月愈。

  109:脚臭:开水里加茶叶和盐少许,水温,泡双脚搓洗,3次愈。

  110:脚腿抽筋:抽筋时用食指和拇指按压人中穴,按不抽筋为止,结其他部位也管用。

  111:刺猴:七个生菜鸡蛋在醋里泡七天,再把鸡蛋煮吃,每天吃一个,七个吃完,刺猴全掉。

  112:骨质增生:独头大蒜3头,萝卜一片,葱白一段,捣成糊状,滩在布上,敷患处,两小时去掉,过两天一次,5次愈。或生铁屑炒热加醋装布袋内敷患处,4次愈。

  113:肩周炎:食盐500克,小茴香80克,放锅内炒熟,装入布包内,敷患处,每晚一次,出汗止痛,四次即愈。

  114:关节炎:每日早倒退四-五百步,每晚用细黄砂1斤,食盐半斤,炒热后装布袋内,敷关节一次,再重的关节炎1月痊愈。

  115:类风湿关节炎:生姜,大葱,辣椒各9克,煮面条,乘热吃下,以出汗为度,每日2次,连续10天特效。

  116:坐骨神经痛:石决明,蛇脱,苏薄荷各15克,加黄酒一斤,煎30分钟,分2次服下,半月即愈。

  117:脉管炎:将田螺洗净,捣碎如泥敷患处,连用七天愈。

  118:腰腿疼:反走路膝盖不要弯曲,每天早晨起床后,倒走200至300步,治疗腰腿,关节炎有特效,不妨一试。

  119:小便不通:大葱白3棵,捣如泥,按揉关元穴即尿。

  120:夜晚磨牙:半夏,茯苓,桔红,石昌蒲,炒焦荷叶各6克,甘草5克,水煎服,每日一剂分2次服,3剂痊愈。

  121:戒烟妙法:中药槟榔一棵,钻一小孔,灌入烟油,放米水中泡四天,清水洗净,来烟瘾就闻,几日内戒掉。

  122:喝酒不醉:葛花,葛根二种不管哪种15克,加点茶叶,泡杯茶喝下,10分钟后,再去喝酒,如同喝水。

  123:酒醉立醒:冰片0。2克,甘草5克,冲水一杯喝下可醒。

  124:丹毒:用海蛰皮不要洗,接开敷患处,4小时换一次。或用地龙洗去泥,加白糖化液涂患处,每天3次,特效。

  125:食道癌:核桃叶一个,鸡蛋一个,把核桃叶切碎,同鸡蛋放锅内,不加油盐和水,单找个锅炒熟吃,每天3次,吃好为止。

  126:白癜风:用烧酒泡生姜7天,用生姜沾酒擦患处每日3次,每次3分钟,擦红为止,数日即愈。

posted @ 2010-01-12 23:44 paulwong 阅读(459) | 评论 (0)编辑 收藏

jbpm4.3与spring集成

jbpm4.2与spring集成有点问题,直接跟据它自己的“开发指南”提供的方法是不能集成的。在官网查到的信息是发布4.2时,忘记更新集成spring的文件。不过4.3已经把该bug改过来了。下面是集成方法。

版本:
jbpm4.3
spring2.5.6
mysql5.1.40

直接从jbpm4.3自带的文件到src目录:
从jbpm-4.3"install"src"cfg"hibernate"jdbc复制mysql.hibernate.cfg.xml到src目录,文件名改为hibernate.cfg.xml。
从jbpm-4.3"install"src"cfg"spring复制applicationContext.xml到src目录。
从jbpm-4.3"install"src"cfg"jbpm复制spring.jbpm.cfg.xml到src目录,文件名改为jbpm.cfg.xml。
修改applicationContext.xml、hibernate.cfg.xml的数据库配置信息,jbpm4.3与spring的集成就完成了,可以自己写测试文件测试,集成非常容易。

不过在applicationContext.xml和hibernate.cfg.xml两个文件都要改数据库信息有点麻烦,所以只复制applicationContext.xml、spring.jbpm.cfg.xml两个文件到src目录,把hibernate.cfg.xml的配置整进spring的配置文件applicationContext.xml中。
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" 
         xmlns:aop
="http://www.springframework.org/schema/aop" 
         xmlns:context
="http://www.springframework.org/schema/context"
          xmlns:p
="http://www.springframework.org/schema/p"
         xmlns:tx
="http://www.springframework.org/schema/tx"
       xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation
="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
 
 
<context:annotation-config />

<bean
  
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
  p:location
="hibernate.properties"
  p:ignoreUnresolvablePlaceholders
="true" />
  
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
  
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
  
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    
<property name="dataSource" ref="dataSource" />
    
<property name="mappingResources">
        
<list>
            
<value>jbpm.repository.hbm.xml</value>
            
<value>jbpm.execution.hbm.xml</value>
            
<value>jbpm.history.hbm.xml</value>
            
<value>jbpm.task.hbm.xml</value>
            
<value>jbpm.identity.hbm.xml</value>
        
</list>
    
</property>
    
<property name="hibernateProperties">
        
<props>
                
<prop key="hibernate.dialect">${dataSource.dialect}</prop>
                
<prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
            
</props>
    
</property>
  
</bean>
  
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    
<property name="sessionFactory" ref="sessionFactory" />
    
<property name="dataSource" ref="dataSource" />
  
</bean>
  
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    
<property name="driverClassName" value="${dataSource.driverClassName}" />
    
<property name="url" value="${dataSource.url}" />
    
<property name="username" value="${dataSource.username}" />
    
<property name="password" value="${dataSource.password}" />
  
</bean>
</beans>


新建文件hibernate.properties,主要用来配置连接数据库信息

dataSource.password=123
dataSource.username
=root
dataSource.databaseName
=jbpmdb
dataSource.driverClassName
=com.mysql.jdbc.Driver
dataSource.dialect
=org.hibernate.dialect.MySQLInnoDBDialect
dataSource.serverName
=localhost:3306
dataSource.url
=jdbc:mysql://${dataSource.serverName}/${dataSource.databaseName}
dataSource.properties
=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}
dataSource.hbm2ddl.auto=update

以后要改数据库配置信息也只在这个文件修改就可以了。

测试用的流程swing.jpdl.xml

<?xml version="1.0" encoding="UTF-8"?>
<process name="swing" xmlns="http://jbpm.org/4.3/jpdl">
   
<start g="94,64,48,48" name="start1">
      
<transition g="-52,-22" name="A" to="A"/>
   
</start>
   
<task assignee="A" g="73,195,92,52" name="A">
      
<transition g="-52,-22" name="B" to="B"/>
   
</task>
   
<task assignee="B" g="266,192,92,52" name="B">
      
<transition g="-40,-21" name="end" to="end1"/>
   
</task>
   
<end g="290,327,48,48" name="end1"/>
</process>


测试代码

public class Main {
    
public static void main(String[] args)  {
        ClassPathXmlApplicationContext applicationContext 
= new ClassPathXmlApplicationContext("applicationContext.xml");
        applicationContext.start();
        ProcessEngine processEngine 
= (ProcessEngine)applicationContext.getBean("processEngine");
        ExecutionService executionService 
= processEngine.getExecutionService();
        TaskService taskService 
= processEngine.getTaskService();

        
//发布流程
        String deploymentId = processEngine.getRepositoryService().createDeployment()
        .addResourceFromClasspath(
"resource/swing.jpdl.xml").deploy();
        System.out.println(
"流程发布ID:"+deploymentId);
        
        
//启动一个流程实例
        ProcessInstance processInstance = executionService.startProcessInstanceByKey("swing");
        System.out.println(
"流程实例ID:" + processInstance.getId());

        
//A处理任务
        List<Task> taskList_A = taskService.findPersonalTasks("A");
        System.out.println(
"A待处理任务数:" + taskList_A.size());
        
if(taskList_A.size() > 0){
            Task task 
= taskList_A.get(0);
            taskService.completeTask(task.getId());
        }

        
        
//B处理任务
        List<Task> taskList_B = taskService.findPersonalTasks("B");
        System.out.println(
"B待处理任务数:" + taskList_B.size());
        
if(taskList_B.size() > 0){
            Task task 
= taskList_B.get(0);
            taskService.completeTask(task.getId());
        }

        
    }

}


附件是完整的集成文件和测试代码,仅在spring2.5.6测试过,要运行该部分代码,需要添加jbpm4.3和spring的相关库文件。
源代码:jbpm4.3-spring

posted @ 2010-01-08 12:40 paulwong 阅读(838) | 评论 (0)编辑 收藏

FCKeditor

     摘要: 在线编辑器对于我们作新闻产品之类的程序是很重要的,在网上找录了好了好一段时间,发现FCKeditor,跨平台的,正在进行的jsp项目正需要这款html在线编辑器。试用了一下FCKeditor,根据网上的文章小结一下:

1.下载
FCKeditor.java 2.3 (FCKeditot for java)
FCKeditor 2.2 (FCKeditor基本文件)
以下是下载地址:
http://www.fckeditor.net/download/default.html
  阅读全文

posted @ 2009-12-14 15:42 paulwong 阅读(139) | 评论 (0)编辑 收藏

仅列出标题
共115页: First 上一页 100 101 102 103 104 105 106 107 108 下一页 Last