云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理


          目前新版本的Eclipse在啟動應用服務器的時候有一個新的選項:Start the server in profiling mode。
          我個人使用的是tomcat6.0
          但是我在一開始點擊這個按鈕的時候,出現了錯誤提示信息: Could not launch in profiling mode because no profilers are configured.
          經過一番搜索,發現要求安裝TPTP(Test and Performance Tools Platform),下面我把我的安裝步驟簡單地列舉如下:
          1、下載,TPTP的最新版本是4.6.0,下載地址:http://www.eclipse.org/tptp/home/downloads/?ver=4.6.0#tptp-plugins. 這里包括兩個部分:runtime和sdk,如果你只是進行profile的運行分析,不對TPTP進行任何擴展,那就只需要下載runtime。下載的時候可以下載相應平臺的(比如:windows的)或者下載全部平臺的壓縮包。我選擇的是下載runtime和SDK兩個的所有平臺的壓縮包,
          2、安裝。安裝TPTP是非常簡單的,把下載的壓縮包解壓到Eclipse的安裝目錄下就行了
          3、除了上面的runtime/SDK,還需要安裝Agent Controller,第一步當然還是下載了,地址:http://www.eclipse.org/tptp/home/downloads/?ver=4.6.0#rac
          同樣的,這也有runtime和SDK兩部分,選擇和步驟1一樣。
          4、把下載的兩個壓縮也解壓到Eclipse的安裝目錄下。
          5、其他還有一些可選的步驟,比如:Native Logging/Generic Log Adapter之類的東西,我一概都沒有下載安裝。
          6、重新啟動Eclipse,點擊start server in profiling mode, OK, 成功,出現了一個對話框,讓你選擇監控的類型,是要監控線程,還是內存,選擇一個,然后瀏覽一下你的網站,就能得到一張列表了。
          總的來說,整個過程并不復雜,非常順利。

          posted @ 2009-08-21 10:20 云自無心水自閑 閱讀(8907) | 評論 (1)編輯 收藏


          1. 數據庫的表結構
          CREATE TABLE  `software` (
            `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
            `name` varchar(45) NOT NULL,
            PRIMARY KEY (`id`)
          );


          CREATE TABLE  `version` (
            `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
            `publish_time` datetime NOT NULL,
            `software_id` int(10) unsigned NOT NULL,
            PRIMARY KEY (`id`)
          );

          2. java的class

          ---------------------------------------
          Software.java

          import java.util.LinkedHashSet;
          import java.util.Set;

          import javax.persistence.Entity;

          @Entity
          public class Software {

              private Long id;
              private String name;
              private Set<Version> versions = new LinkedHashSet<Version>();

              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              public Long getId() {
                  return id;
              }

              public void setId(Long id) {
                  this.id = id;
              }
              public String getName() {
                  return name;
              }
              public void setName(String name) {
                  this.name = name;
              }
             
              @OneToMany(cascade = { CascadeType.ALL }, mappedBy="software")
              @JoinColumn(name = "software_id")
              @Fetch(FetchMode.SUBSELECT)
              @OrderBy("id")
              public Set<Version> getVersions() {
                  return version;
              }

              public void setVersions(Set<Version> Versions) {
                  this.versions = versions;
              }
          }

          -----------------------------------------------------
          Version.java

          import java.util.Date;
          import javax.persistence.Entity;

          @Entity
          public class Version{
              private Long id;
              private Date publishTime;
              private Software software;
             
              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              public Long getId() {
                  return id;
              }

              public void setId(Long id) {
                  this.id = id;
              }
              public Date getPublishTime() {
                  return publishTime;
              }
              public void setPublishTime(Date publishTime) {
                  this.publishTime = publishTime;
              }
             
              @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
              @JoinColumn(name = "software_id")
              public Software getSoftware() {
                  return software;
              }

              public void setSoftware(Software software) {
                  this.software = software;
              }
          }

          3. 測試代碼

          Software software = new Software();
          software.setName("Windows");

          Version version = new Version;
          version.setPublishTime(new Date());
          version.setSoftware(software);

          software.getVersions().add(version);

          software.save();

          hibernate會自動生成兩條insert語句,一條是software的insert語句,一條是version的insert語句。
          同樣,如果刪除software的話,也會生成兩條delete語句

          posted @ 2009-08-10 13:24 云自無心水自閑 閱讀(4033) | 評論 (0)編輯 收藏


          前一段時間,使用了NetBeans的6.5版本,發現諸多不如意的地方,詳見:http://www.aygfsteel.com/usherlight/archive/2009/08/07/247005.html
          最近,看到NetBeans發布了新版本6.7,后來我又升級到了6.7.1. 在使用過程中,還是感到了不少不滿意的地方。
          1. 可選擇的或者說內建支持的應用服務器種類偏少。沒有Jetty
          2. 應用的發布的運行還是一如上次的不順利。
                  a. 啟動、停止還是有問題,我使用的是jdk1.6+Tomcat6.0,點擊服務器停止按鈕,有時候并沒有真正停止Tomcat,我只有運行Tomcat目錄下的bat文件來停止Tomcat
                  b. 自動的部署有問題,我最后就是因為這個問題而放棄NetBeans的,我的應用修改了之后,總是無法正確部署。Tomcat啟動后,進入首頁,內容還是沒有變化,經常需要先Clean,再Deploy。
          不過,NetBeans也有優點,至少內建支持maven,就是一個比較方便的地方。

          posted @ 2009-08-08 08:53 云自無心水自閑 閱讀(631) | 評論 (0)編輯 收藏


          根據前面的4部分內容,我們已經了解了Tapestry的基本概念,掌握了配置、組件等內容。現在我們通過剖析Tapestry的入門示例來對Tapestry進行一個總體上認識。
          1、web.xml
          <web-app>
              <display-name>app Tapestry 5 Application</display-name>
              <context-param>
                  <!-- The only significant configuration for Tapestry 5, this informs Tapestry
          of where to look for pages, components and mixins. -->
                  <param-name>tapestry.app-package</param-name>
                  <param-value>t5demo</param-value>
              </context-param>
              <filter>
                  <filter-name>app</filter-name>
                  <filter-class>org.apache.tapestry.TapestryFilter</filter-class>
              </filter>
              <filter-mapping>
                  <filter-name>app</filter-name>
                  <url-pattern>/*</url-pattern>
              </filter-mapping>
          </web-app>

          這就是一個最簡單的Tapestry應用所需要配置的內容了。
          a.context-param中的tapestry.app-package配置,這在第一部分說過:這是Tapestry要求配置的java package的名稱,Tapestry相關內容都需要在這個package下面的pages, services, componets子package下。這里的配置是t5demo
          b.TapestryFileter的配置。這個非常容易理解,幾乎所有現在流行的web框架都需要一個類似的定義。

          2、start.tml以及相應的java class,例子中就是t5demo.pages.Start.java
          Start.java非常簡單,只定義了一個get方法:
          public class Start
          {
                  public Date getCurrentTime()
                  {
                          return new Date();
                  }
          }
          相應的頁面start.tml
          <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
              <head>
                  <title>app Start Page</title>
              </head>
              <body>
                  <h1>app Start Page</h1>

                  <p> This is the start page for this application, a good place to start your modifications.
                      Just to prove this is live: </p>

                  <p> The current time is: ${currentTime}. </p>


                  <p>
                      [<t:pagelink t:page="Start">refresh</t:pagelink>]
                  </p>
              </body>
          </html>

          首先要注意在html的tag中加入了Tapestry的命名空間。
          第二、${currentTime}就是Tapestry的Tag了,這里就會調用對應class的getCurrentTime方法在頁面上顯示對應的值。
          第三、<t:pagelink>定義一個到自己本身頁面的鏈接,來完成刷新的任務。t:pagelink在本系列的第4部分介紹過。

          3、需要的library:
          commons-codec.jar
          javassist.jar
          log4j.jar
          slf4j-api.jar
          slf4j-log4j.jar
          tapestry5-annotations-5.1.0.5.jar
          tapestry-core-5.1.0.5.jar
          tapestry-ioc-5.1.0.5.jar

          4、再加上一個log4j.properties,這就是一個最簡單的tapestry應用所需要的全部東西了。
          怎么樣,感覺還是挺簡單的吧。

          posted @ 2009-07-10 20:15 云自無心水自閑 閱讀(4369) | 評論 (5)編輯 收藏

          個人認為flex項目不沒有能夠迅速普及的原因是:
          缺少IDE的支持。adobe做為一個商業公司對flex builder進行收費當然無可厚非。但是我認為這確實在一定程度上阻礙了flex的發展。做一個對比,jdk和flex sdk一樣都免費了。但是我們有eclipse, netbeans這樣優秀的免費IDE來進行開發,而eclipse是ibm捐獻出來的,netbeans是sun提供的。為什么adobe不能這樣搞 呢,畢竟贏利途徑不止是賣ide一條嘛。

          好了,閑話說了一堆,現存轉入重點,談一下我們今天要介紹的內容:

          JSF-FLEX項目的目的是為了讓用戶能夠象創建JSF組件一樣創建Flex組件。JSF-FLEX項目能夠自動生成mxml,swc,swf等文件, 并能把這些組件的值通過JSON+JAVASCRIPT和傳遞給Managed Beans。另外還提供渲染工具,能夠把JSF-FLEX的組件與普通組件結合起來顯示在同一個視圖中。

          http://code.google.com/p/jsf-flex/

          posted @ 2009-07-09 12:56 云自無心水自閑 閱讀(1730) | 評論 (3)編輯 收藏

          發布谷歌 Chorme 瀏覽器之后的 9 個月是令人興奮的。今天,全球超過 3 千萬的用戶經常性地在使用它。我們為那些活在網絡中的人們設計了谷歌 Chrome 瀏覽器,幫助他們搜索信息、查收郵件、獲知新聞、購物,或者與朋友保持聯絡。然而,瀏覽器工作在的各種操作系統卻誕生于沒有互聯網的時代——這正是為什么 今天我們要宣布這個新的項目:谷歌 Chrome 操作系統,它是谷歌 Chrome 瀏覽器的自然延伸,也是我們重新思考操作系統之道的嘗試。

          谷歌 Chrome 操作系統是一個開放源代碼的、精巧的操作系統,它最初會針對上網本。在今年晚些時候,我們將開放它的源代碼。在 2010 年下半年,運行谷歌 Chrome 操作系統的上網本就將被帶給我們的消費者。我們已經與合作伙伴討論過這個項目,并將很快與開放源代碼社區合作,所以選擇現在與大家分享我們的愿景,以讓大 家了解我們正在努力成就的目標。

          快速、簡便和安全是谷歌 Chrome 操作系統的核心特質。我們正在將該操作系統設計得更快速更精巧,數秒間即可啟動并將您帶入互聯網世界。用戶界面最小化以避免掩蓋您的個人風格,而大多數的 用戶體驗則將發生于網絡之上。就像我們為谷歌 Chrome 瀏覽器所做的一樣,我們要回歸本來,徹底地重新設計谷歌 Chrome 操作系統的底層安全架構。如此一來,用戶就不必再應對病毒、惡意軟件和安全更新。一切皆由系統搞定。

          谷歌 chrome 操作系統可運行于 x86 和 ARM 芯片,并且,我們正與各類原始設備商合作,以便于明年為市場帶來許多的上網本選擇。谷歌 Chrome 運行于一個新的基于 Linux 核心的窗口系統,其軟件架構十分簡單。對應用開發者們來說,網絡即是平臺。所有的互聯網應用都將自動運行,而新的各種應用可由您最喜歡的網絡語言編寫。當 然,這些應用不僅可以運行于谷歌 Chrome 操作系統,也可以運行于 Windows、Mac 和Linux 上的任何標準瀏覽器,從而令開發者擁有任何平臺上的最大用戶基數。

          谷歌 Chrome 操作系統是一個全新的項目,與 Android 無關。Android 從設計之初就跨手機、機頂盒和上網本等多樣終端而工作。谷歌 Chrome 操作系統則為那些花費絕大部分時間用于上網的用戶而設計,與此同時,谷歌 Chrome 操作系統被設計用于裝備從小型上網本到大型臺式系統在內的各種計算機。谷歌 Chrome 操作系統和 Android 有一些領域重合,因為我們堅信選擇驅動創新,并讓包括谷歌在內的每一個人受益。

          我們從用戶那里聽到了很多反饋,他們所傳達的信息毋庸置疑——計算機應該更好。人們希望可以即刻獲得電子郵件,而不是浪費時間等待計算機啟動和瀏 覽器開啟;人們希望他們的計算機總是像第一次買到時那樣快速運行;人們希望他們的數據可以唾手可得,無論他們在哪里,也無需擔心電腦丟失或者忘記備份文 件。更重要的是,人們不希望花幾個小時在每一片新的硬件上以配置他們的計算機,或是不得不為不斷的軟件更新而煩心。當我們的用戶擁有了更佳計算機體驗的時 候,這些快樂的用戶們就更愿意呆在互聯網上,而谷歌即可從中受益。

          我們仍有許多工作需要完成,并且為了成就這一愿景,我們顯然需要來自開放源代碼社區的很多幫助。如果您對這個項目感興趣或者有其他問題,請查看常 見問題及回答。我們為即將到來的一切而興奮不已,我們希望您的心情和我們一樣。敬請在這個秋季期待更多的更新,并祝愿大家度過一個愉快的夏天。

          另外也有人持有不同意見:
          LinuxWorld發表分析文章稱,有5大原因顯示Chrome OS無法成功:

          1,上網本所占份額很小

          Google計劃推出Chrome OS是基于對上網本需求強勁的預期,不過,雖然上網本很重要,但在PC銷售中所占比重仍很小。

          另外,Google可能還有個想法:對微軟來說,他們需要靠出售操作系統獲利,而對Google來說,可以免費貢獻Chrome。然而,諸如Linux這樣的免費操作系統已經存在多年,但Linux在操作系統市場僅占很小份額,約為1%。

          Chrome OS主要還是依靠那些上網本用戶,他們不需要特別的應用,因此能接受低價但又能提供相當功能的操作系統。

          2,微軟或許會拼命回擊

          想想,如果微軟宣布2010年Windows 7上網本版將免費提供,那還有多少人會用Chrome OS。至少從理論上來說,任何目前Google能做的事情,微軟都能做得更好。

          如果微軟變得瘋狂,任何事情都可能發生。多年來,微軟的敵人一直是它自己。像Chrome OS這樣的外部刺激或許會幫助微軟獲得活力,就如免疫系統一樣消滅入侵的外來威脅。

          3,Google在云計算應用上缺少建樹

          目前,Google Docs算是Google推出的最好的云計算應用,其它的乏善可陳。而且,就Google Docs來說,仍有很多事情無法做到。如果偶爾使用,倒也不錯,但作為完全替代的解決方案,無法滿足要求。

          4,Chrome并不是一個真正的操作系統

          Google希望推出的Chrome OS對用戶來說隱藏操作系統的影子,而直接提供方便易用的應用。但究竟有多少操作系統的功能會被犧牲掉?

          而另外,如果Chrome越接近真正的操作系統,那它就更像Linux。而這又不是Google希望看到的。

          5,兼容性問題

          對硬件和軟件兼容性問題的解決是微軟能一直統治操作系統市場的原因之一。微軟在通過推行標準解決兼容性問題的同時也成為壟斷者。不過,消費者還是投了微軟的票,因為他們不必再擔心兼容性問題。

          因此,Chrome OS對于那些可以說是一次性使用的上網本來說,或許有點用處,但對整個操作系統市場來說將是微不足道的一份子。


          posted @ 2009-07-09 07:58 云自無心水自閑 閱讀(1451) | 評論 (4)編輯 收藏

          一段時間沒有用筆記本上的Eclipse,今天給安裝了一個新的3.5版(Galileo)的Eclipse,結果發現啟動的時候,跳出一個對話框說是
          JVM terminated. Exit Code=-1.
          在網上找了一下,最后有效而且最簡單的方法是:
          刪除eclipse目錄下的eclipse.ini,然后Eclipse又能啟動工作了。
          原因應該是Eclipse.ini文件里的啟動參數和我的筆記本不配合(個人猜測),刪除后,使用默認配置,啟動成功。

          posted @ 2009-06-26 20:56 云自無心水自閑 閱讀(2054) | 評論 (9)編輯 收藏

               摘要: Tapestry最基本的組成部分:頁面組件  閱讀全文

          posted @ 2009-06-20 19:57 云自無心水自閑 閱讀(2534) | 評論 (3)編輯 收藏

               摘要: Tapestry重要特性之一:頁面的緩存以及頁面間值的傳遞  閱讀全文

          posted @ 2009-06-05 14:24 云自無心水自閑 閱讀(2731) | 評論 (0)編輯 收藏

               摘要: Tapestry的頁面模板語言  閱讀全文

          posted @ 2009-06-03 17:17 云自無心水自閑 閱讀(2246) | 評論 (2)編輯 收藏

          僅列出標題
          共29頁: First 上一頁 9 10 11 12 13 14 15 16 17 下一頁 Last 
          主站蜘蛛池模板: 永德县| 漳平市| 高平市| 辽宁省| 沧州市| 上虞市| 措勤县| 大庆市| 香河县| 锡林浩特市| 惠来县| 钟山县| 博罗县| 兖州市| 启东市| 海淀区| 宕昌县| 玉田县| 定日县| 玉山县| 平陆县| 临夏市| 南靖县| 和硕县| 灌云县| 惠东县| 定西市| 德保县| 清原| 孟津县| 福贡县| 沧源| 舒城县| 三门峡市| 林芝县| 札达县| 宁陕县| 天水市| 静乐县| 丰原市| 石景山区|