2012年7月13日 星期五

執行 Java 程式時出現記憶體不足 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

時常在 Java 編譯時出現下列錯誤訊息
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
原因: 所設計的程式佔用記憶體太大所致
解決方法: 加大執行時的記憶體
原:   java  yourjavaClass
變更:  java -Xmx512M  yourjavaClass

2012年7月12日 星期四

雲端技術收錄文章

原文出處: http://eblog.cisanet.org.tw/80366493/article/content.aspx?ArticleID=996
作者:毅佳電腦科技股份有限公司 發表於2010/12/13 上午 10:44:25

軟體即服務(SaaSSoftware as a Service

是一種服務觀念的基礎,軟件服務供應商,以租賃的概念提供客戶服務,而非購買,比較常見的模式是提供一組帳號密碼。該服務軟體是安裝於集中式的網絡伺服器並確保在網際網路或者區網內執行其功能。這是目前最流行的類型的雲端運算,也被稱為“軟體需求”,因為其高靈活性,卓越的服務,強大的可擴展性和較低的維護成本。
當前市面上不乏許多通行已久的SaaS服務,其中最耳熟能詳的莫過於Google AppsSaleforce.com。採用P2P技術的Skype、趨勢科技的雲端防毒,以及YouTubeFacebookTwitter Web應用程式,皆屬於不同類型的SaaS服務。微軟在既有商用軟體上,另外提供相對應線上軟體服務也是其中一種。在儲存方面,目前Amazon所提供的自助式內容分派服務CloudFront,以及支援檔案共享與資料同步化服務的微軟Live Mesh,皆屬於採用分散式雲端儲存技術的SaaS服務。
CRMSAAS應用實例中,隨著基於 WebCRM所有的員工需要做的是註冊和登錄到中央系統,登錄後即可使用與存取所需之服務與資料。這種方式的供應商提供主機應用程序和數據,以便客戶可以自由地使用該服務。 SaaS是非常有效的降低成本的solution,因為它比直接購買與安裝應用程序的成本便宜得多,通常帳號的申請是須要付費的,並以月租費(年租)收費模式。這樣 SaaS的用戶可以不必擔心日後所有的安裝或升級問題。

平台即服務(PaaSPlatform as a Service

SaaS的需求發展,現在正發展一種平台即服務(PaaS)的事業。 PaaS是指提供了一個資訊開發人員的平台。最終用戶編寫自己的程式碼於PaaS的提供商上傳的介面或API服務,並在網絡上服務。 SalesForce.comForce.comPaaS的例子。 PaaS的發展提供服務,測試,部署和維護應用程序的主機在相同的集成開發環境。它還提供了一定程度的支持創建應用程序。因此,PaaS的成本提供了一種更快,更有效的模型的應用開發和交付。 PaaS的供應商管理的升級,更新和其他日常系統維護。 PAAS是基於測光或訂閱模式,使用戶只需要支付他們的使用。用戶需要什麼,他們需要的複雜性,而不必擔心在幕後。
基本上有四種類型的PaaS的解決方案 - 社交應用平台,原計算平台,網絡應用平台和業務應用平台。 Facebook是一個社交應用平台類型,其中第三方可以編寫新的應用程序提供給最終用戶。客戶關係管理解決方案公司提供的業務應用平台的例子。開發人員可以上傳和執行他們的應用程序在亞馬遜的基礎設施,就是一個例子原料計算平台。雖然谷歌提供的API來構建 Web應用程序開發這是一個例子,網絡應用平台。

基礎設施即服務(IaaSInfrastructure as a Service

最後談的部分是在雲端運算基礎設施。基礎設施即服務(IaaS)是交付的資訊基礎設施作為一個完全外包服務。能提供基礎設施服務像是谷歌,IBMAmazon.com等,透過主機託管和發展環境,提供IaaS的服務項目。用戶可以根據需求購買基礎設施的服務,概念上只有使用者在特定時間付費,而非購買那些基礎設施的服務,也有可能該服務屬於短期性、暫時性。 IaaS的商業模式屬於“使用才付費”的模式,確保用戶僅需支付他們使用的服務。IaaS的供應商是透過虛擬化提供幾乎無限的客戶端服務,使承載的硬體效益更高。 IaaS的用戶認為享用企業級 IT基礎設施和資源,如果自行建構可能會非常昂貴。因此,能夠動態調整,以使用才付費、特定使用範圍為基礎的定價,是能夠降低成本並獲得卓越的IT資源,這就是IaaS最大的優勢。 IaaS在過去有時也被稱為硬體即服務(Hardware)。因為過去幾乎都以硬體的基礎設施作為服務產品,並提供了最大的靈活性,因為幾乎任何可以被虛擬化運作的平台都可在這環境中,這也是 IaaS的環境所提供的最大好處。尤其對於微型或中小型企業,其中最困難的事情要做的就是控制持續性的資本性支出。透過這些服務,中小企業能夠擁有使用企業級的硬體和數據中心。


因此,我們可以看到三者之間的關係,
SaaS的提供了一個完整的應用程式作為服務
PaaS提供了一個應用程式開發的服務環境
IaaS則僅基礎建設服務,但是與上述應用程式服務是無關的。
對於客戶端而言,假如你已經寫了很多程式碼或軟體套件,倘若要安裝並運行在雲中,那麼你就找的IaaS(您可能是IaaS的目標客戶)。
假如您有還沒建置軟體或想從頭開始自行開發建置,那麼你應該去PaaS服務業者尋找相關服務,因為這些軟體可能太昂貴或太複雜,使用PaaS服務將可大量降低成本、風險。
不同的企業服務有不同的需求,從基礎服務到應用程式,IaaS/PaaS/SaaS這三個類型的服務提供的雲端運算,未來將對所有產業有很大的影響。

簡易鬧鈴程式

簡易鬧鈴程式
//用途: 簡易鬧鈴程式
import java.io.*;
import java.util.Vector;
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class AlarmClock
{
  public static void main(String[] args)throws Exception
  {
       System.out.print("現在時間: "+ GetCurrentTime("hh:mm:ss")+"\r");
       System.out.println("");   
       String nowTime = GetCurrentTime("hh:mm:ss");
       //設定鬧鈴時間
       String alarmTime = SetAlarmTime();
       //執行鬧鈴程式
       Check_AlarmTime(alarmTime);
  }
  public static void Check_AlarmTime(String alarmTime) throws Exception
  {
     while (true){
            String nowTime = GetCurrentTime("hh:mm:ss");
            System.out.print("(按Ctrl+C 離開) 現在時間: "+ nowTime+"\r");
          //檢查是否時間到
         if ( nowTime.equals(alarmTime) ){
              Alarm_UP(10); //執行鬧鐘鈴響
             break;
         }
     }
  }
  public static String SetAlarmTime() throws Exception
  {
      BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
      System.out.print("請輸入鬧鈴時間(hh:mm:ss):");    
      String line = br.readLine();
      return line;
  }
  //時鐘程式
  public static String GetCurrentTime(String dateFormat)
 {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    return sdf.format(cal.getTime());
  }
   //鬧鈴程式 num 是鬧鈴響的次數
 public static void Alarm_UP(int num)
 {
       char BEE = (char)7; //嗶嗶聲
       for (int i=0; i <100;i++           ){
               System.out.println("懶豬 起床!!! 時間到囉!! "+BEE);
       }
    }
}

Java 不同編碼字串, 其字串長度大小計算

以 Java 開發專案, 在 DAO 寫入資料庫時, 常遇到JAVA 字串與資料庫編碼不一致, 有時會產生字串過長,導致無法寫入資料庫的情況. 這時就要在入庫前, 先驗證 JAVA 編碼字串是否超出資料庫欄位長度 JAVA 依 不同編碼, 其長度是不一樣的 如: ...