摘要: 1. 需要準備好下面這些工具JDK 1.6+Maven 2或3TortoiseSVN 1.7+ (從1.7開始”.svn”目錄集中放在一處了,不再每個目錄下都放一份)Eclipse 3.5+這4個工具不在這里描述怎么配置了,如果你是有兩三年開發經驗的Java開發人員,正常來講都一直在用了。另外,分析tomcat源代碼不需要對這4個工具做什么特殊配置。2. 下載Tomcat的...  閱讀全文
          posted @ 2013-08-21 12:30 小馬歌 閱讀(405) | 評論 (0)編輯 收藏
           
          導入Tomcat的源代碼,其實很簡單,可是如果沒有找到正確的方法,你會浪費大量的時間,我就是浪費了好多時間在配置編譯環境上。最正確的辦法是到Tomcat的官方網址去找到答案。
          可以參考下邊的連接,這個是關于Tomcat7的。
          http://tomcat.apache.org/tomcat-7.0-doc/building.html
          1. 設置環境
             1.1 JDK1.6 or above           JAVA_HOME
             1.2 Ant 1.8.1 or later        ANT_HOME
           
          2. Check out the latest tomcat source code
          svn --force export http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_11/ D:\Tomcat7\
          上邊的命令SVN會把最新的Tomcat7011的源碼下載到你的硬盤D:\Tomcat7\ 下
          SVN 下載地址 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
           
          3. 為Eclipse編譯工程
             cd ${tomcat.source}
             ant ide-eclipse
            [注] a. ${tomcat.source} 是你下載的源碼在機器上的路徑
                 b. ant ide-eclipse: 這個過程會比較慢,因為會下載一些依賴的第三方jar,這些jar都會放到你在
                    build.properties 中設置的 ${base.path} 所指向的路徑
          4. 設置Eclipse 環境 (Class-path Variables)
             設置TOMCAT_LIBS_BASE,ANT_HOME
             TOMCAT_LIBS_BASE 要指向 ${base.path}
             ANT_HOME 指向安裝ant的目錄就好了
          5. 導入工程
             File -> Import and choose Existing Projects into Workspace
          6. 編譯問題
             往往我們在這時會遇到一些編譯錯誤,這是因為我們Eclipse中JRE環境設置的不正確,需要調整
             6.1 Java Compiler, 需要 6.0 (1.6) 以上
                 Window -> Preferences -> Java -> Complier -> JDK Compliance -> 6.0 (1.6)
             6.2 Default JRE, 需要 1.6 以上
                 Window -> Preferences -> Java -> Installed JREs -> jdk1.6
                 當然,這個也可以在工程中設定,如果你還有其他的工程必須用以前的jdk版本的話。
             6.3 Eclipse 版本問題
                 調整好Java Compiler 和 JRE 后,一般可以編譯通過了,但是我就遇到了Eclipse版本問題,總有一個 
                 compiler ArrayIndexOutofBoundaryException 的錯誤,后來更新了一下Eclipse,就好了,我用的
                 Eclipse 版本是3.2的。我又用了Eclipse Galileo試著打開工程,就沒有類似的問題。
          7. 最周到的服務
             到了這里,您的工程應該就編譯成功了。該想想怎么run, debug TOMCAT了,怎么設置啊?哈,最周到的服務
             來了,在 run(debug) ... -> Java Application 中,我們會看到已經有兩個applications 了,分別叫做
             start-tomcat, stop-tomcat.
          posted @ 2013-08-21 10:41 小馬歌 閱讀(295) | 評論 (0)編輯 收藏
           

          jstat

                 1. jstat -gc pid

                      可以顯示gc的信息,查看gc的次數,及時間。

                      其中最后五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。

                2.jstat -gccapacity pid

                      可以顯示,VM內存中三代(young,old,perm)對象的使用和占用大小,

                      如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,

                      PGC是當前新生成的perm內存占用量,PC是但前perm內存占用量。

                      其他的可以根據這個類推, OC是old內純的占用量。

               3.jstat -gcutil pid

                      統計gc信息統計。

               4.jstat -gcnew pid

                     年輕代對象的信息。

               5.jstat -gcnewcapacity pid

                     年輕代對象的信息及其占用量。

               6.jstat -gcold pid

                    old代對象的信息。

               7.stat -gcoldcapacity pid

                    old代對象的信息及其占用量。

               8.jstat -gcpermcapacity pid

                    perm對象的信息及其占用量。

               9.jstat -class pid

                    顯示加載class的數量,及所占空間等信息。
               10.jstat -compiler pid

                    顯示VM實時編譯的數量等信息。

               11.stat -printcompilation pid

                    當前VM執行的信息。

                  一些術語的中文解釋:

                   S0C:年輕代中第一個survivor(幸存區)的容量 (字節)
                   S1C:年輕代中第二個survivor(幸存區)的容量 (字節)
                   S0U:年輕代中第一個survivor(幸存區)目前已使用空間 (字節)
                   S1U:年輕代中第二個survivor(幸存區)目前已使用空間 (字節)
                     EC:年輕代中Eden(伊甸園)的容量 (字節)
                     EU:年輕代中Eden(伊甸園)目前已使用空間 (字節)
                     OC:Old代的容量 (字節)
                     OU:Old代目前已使用空間 (字節)
                     PC:Perm(持久代)的容量 (字節)
                     PU:Perm(持久代)目前已使用空間 (字節)
                   YGC:從應用程序啟動到采樣時年輕代中gc次數
                 YGCT:從應用程序啟動到采樣時年輕代中gc所用時間(s)
                   FGC:從應用程序啟動到采樣時old代(全gc)gc次數
                 FGCT:從應用程序啟動到采樣時old代(全gc)gc所用時間(s)
                   GCT:從應用程序啟動到采樣時gc用的總時間(s)

              NGCMN:年輕代(young)中初始化(最小)的大小 (字節)

              NGCMX:年輕代(young)的最大容量 (字節)

                  NGC:年輕代(young)中當前的容量 (字節)

             OGCMN:old代中初始化(最小)的大小 (字節) 

             OGCMX:old代的最大容量 (字節)

                 OGC:old代當前新生成的容量 (字節)

             PGCMN:perm代中初始化(最小)的大小 (字節) 

             PGCMX:perm代的最大容量 (字節)   

                 PGC:perm代當前新生成的容量 (字節)

                    S0:年輕代中第一個survivor(幸存區)已使用的占當前容量百分比

                   S1:年輕代中第二個survivor(幸存區)已使用的占當前容量百分比

                     E:年輕代中Eden(伊甸園)已使用的占當前容量百分比

                     O:old代已使用的占當前容量百分比

                     P:perm代已使用的占當前容量百分比

            S0CMX:年輕代中第一個survivor(幸存區)的最大容量 (字節)

           S1CMX :年輕代中第二個survivor(幸存區)的最大容量 (字節)

              ECMX:年輕代中Eden(伊甸園)的最大容量 (字節)

                 DSS:當前需要survivor(幸存區)的容量 (字節)(Eden區已滿)

                    TT: 持有次數限制

                 MTT : 最大持有次數限制

                sun 官方文檔  http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

          refs:http://hi.baidu.com/savagert/item/6a056619d25bb6426926bb38
          posted @ 2013-08-19 16:35 小馬歌 閱讀(209) | 評論 (0)編輯 收藏
           
          用Java語言開發許久了,一直接觸指令式的語言開發,同時也做的多了,也逐漸感覺到了靜態語言的一些弊病。Scala的出現,可以使Java程序員平滑的過度,Scala語言也是運行在JVM上的,可以與Java無縫交互;Scala是面向對象的,可以通過提升接口的抽象級別來幫助管理復雜性。Scala是簡潔的,Scala程序員曾報告說,與Java比起來,它的代碼行數可以減少到Java的1/10,哈哈,是不是有些夸張呢?個人覺得,如果能減少三分之一,就非常成功了;Scala是靜態的,它以Java的內嵌類型系統為基礎,允許使用泛型參數化類型,用交集組合型類型和抽象類型隱藏實現細節,從而能夠設計出安全而又能靈活使用的接口。 

              我們先來安裝Scala的開發包,我的版本是scala-2.9.0.1.zip,安裝方式解壓就可以,環境變量和Jdk的沒什么區別,指向到bin目錄下就可以了,打開dos窗口,運行scala,出現下面結結果就表示安裝成功了 
              
           

              好了,讓我們開始Scala之旅吧。 
              在Scala中,分號是可選的,你可以寫或者不寫;定義類和構造函數,Java中一般這么寫 
          Java代碼  收藏代碼
          1. public class MyTest {  
          2.   
          3.     private int id;  
          4.       
          5.     private int index;  
          6.       
          7.     public MyTest(int id, int index) {  
          8.         this.id = id;  
          9.         this.index = index;  
          10.     }  
          11. }  

          而在Scala中,可以這么寫 
          Java代碼  收藏代碼
          1. class MyTest(id: Int, index: Int)  

          除了這些特性,尤其值得一提的是Scala是靜態類型的語言,它支持指令式的編程,但更推薦的使用函數式的編程。比如下面的代碼 
          Java代碼  收藏代碼
          1. object HelloWorld {  
          2.   
          3.   def main(args: Array[String]): Unit = {  
          4.     var i = 0  
          5.     while(i < args.length) {  
          6.       println(args(i))  
          7.       i += 1  
          8.     }  
          9.   }  
          10.   
          11. }  

          我可以使用scalac HelloWorld.scala使他生成class字節碼,也可以直接在JVM上執行, 
          scala HelloWorld.scala Hello World 
          打印結果將是 Hello World 
          大家不覺得這樣有一丁點兒復雜嗎,來看看Scala的函數式的編程是什么樣的 
          Java代碼  收藏代碼
          1. object HelloWorld {  
          2.   
          3.   def main(args: Array[String]): Unit = {  
          4.     args.foreach(arg => print(arg + " "))  
          5.   }  
          6.   
          7. }  

          arg就是你臨時定義的變量,Scala默認為其開辟了臨時的String變量arg。 

          體驗了最初的簡單函數式風格,我們再看下Scala中如何使用數組,在Java中,使用一個最簡單數組是這樣的 
          Java代碼  收藏代碼
          1. public class ArrayTest {  
          2.   
          3.     public static void main(String[] args) {  
          4.         String[] strs = new String[]{"Hello", "World", "!"};  
          5.         for(String str : strs) {  
          6.             System.out.println(str);  
          7.         }  
          8.     }  
          9. }  

          在Scala中,同樣是通過new來實例化對象,實例化過程中,可以用值和類型使對象參數化,使用值參數化實例可以通過把值傳遞給構造器的圓括號來實現,比如,Scala中數組是這么實現的,值得一提的是,在Scala中,數組是可變數據結構,這是和Java中有區別的地方 
          Java代碼  收藏代碼
          1. object ArrayTest {  
          2.   
          3.   def main(args: Array[String]): Unit = {  
          4.     var greetString = new Array[String](3)  
          5.     greetString(0) = "Hello"  
          6.     greetString(1) = "World"  
          7.     greetString(2) = "!"  
          8.       
          9.     for(i <- 0 to 2) {  
          10.       println(greetString(i))  
          11.     }  
          12.   }  
          13.   
          14. }  


          i <- 這個表達式是表示左邊的涵蓋在右邊范圍之內。 
          下面我們來看看List,在Java中,List是可變的結構序列,而在Scala中,List是不可變的,在Scala中,List是不可變的數據結構,這么設計是為了函數式編程而設計的,奇特的是,Scala中并不需要通過new來創建List對象,比如下面一個例子,我創建了兩個集合,并且把它們循環打印出來。 
          Java代碼  收藏代碼
          1. def main(args: Array[String]): Unit = {   
          2.     var list1 = List("aaa", "bbb", "ccc")  
          3.     var list2 = List("ddd")  
          4.     var list3 = list1 ::: list2  
          5.     list3.foreach(list => print(list + " "))  
          6.   }  

          打出的結果就是 aaa bbb ccc ddd 

          我們再來看看Set和Map,Scala致力于充分利用函數式和指令式兩方面的好處,所以它的集合庫區分為可變型和不可變型,都承接與Set,他們分別在Scala的不同包里。在Java中,我們稱為“實現”了接口,而在Scala中,我們稱為“擴展”或“混入”,下面我分別用Scala中的HashSet和HashMap的不可變數據類型,來做例子 
          Java代碼  收藏代碼
          1. object SetTest {  
          2.   
          3.   def main(args: Array[String]): Unit = {  
          4.     var set = HashSet("b", 3, "c")  
          5.     set += "very"  
          6.     set.foreach(value => print(value + " "))  
          7.   }  
          8.   
          9. }  


          這是Set的,下面是關于Map的 
          Java代碼  收藏代碼
          1. object MapTest {  
          2.   
          3.   def main(args: Array[String]): Unit = {   
          4.     var map = HashMap(1 -> "a", 2 -> "b", 3 -> "c")  
          5.     map += (4 -> "d")  
          6.     map.foreach(value => print(value + " "))  
          7.   }  
          8.   
          9. }  

          Scala的程序,只要后綴名命名為.scala就可以了。同時Eclipse也內置了對Scala的支持,安裝插件的網址是http://download.scala-ide.org/nightly-update-wip-experiment-2.9.0.final 
          大家可以自行安裝,安裝完后就可以在Eclipse中運行了,如下圖 
           

          現在對函數式編程有個了最初體會了
            posted @ 2013-08-19 14:19 小馬歌 閱讀(160) | 評論 (0)編輯 收藏
             
                 摘要: from :http://blog.csdn.net/kmyhy/article/details/4200563一、groovy是什么簡單地說,Groovy 是下一代的java語言,跟java一樣,它也運行在 JVM 中。作為跑在JVM中的另一種語言,groovy語法與 Java 語言的語法很相似。同時,Groovy 拋棄了java煩瑣的...  閱讀全文
            posted @ 2013-08-19 14:18 小馬歌 閱讀(199) | 評論 (0)編輯 收藏
             
            Terracotta是一款由美國Terracotta公司開發的著名開源Java集群平臺。它在JVM與Java應用之間實現了一個專門處理集群功能的抽象層,以其特有的增量檢測、智能定向傳送、分布式協作、服務器鏡像、分片等技術,允許用戶在不改變現有系統代碼的情況下實現單機Java應用向集群話應用的無縫遷移。使得用戶可以專注于商業邏輯的開發,由Terracotta負責實現高性能、高可用性、高穩定性的企業級Java集群。
            Terracotta公司目前在美國、歐洲、澳大利亞、印度等地有近百名員工,為Terracotta商業用戶提供7x24技術支持、解決方案咨詢等服務。同時在Terracotta開源產品之上提供適用于企業用戶的高端產品。
            Terracotta公司在2009年收購了著名的Java開源緩存項目Ehcache以及Java任務調度項目Quartz。經過對該項目的深度整合,Terracotta推出了易用性更高的分布式緩存、分布式任務調度以及分布式Web Session等快捷解決方案,進一步方便了開發人員開發分布式Java應用。
            posted @ 2013-08-19 13:25 小馬歌 閱讀(491) | 評論 (0)編輯 收藏
             

            Amino CBB (Concurrent Building Blocks) 類庫將提供優化后的并發線程組件,適用于JDK6.0 及其以后的版本。

            Amino Java 類庫將涉及下面四個方面的內容:

            1) 數據結構 
            該組件將提供一套免鎖的集合類。因為這些數據結構采用免鎖的運算法則來生成,所
            以,它們將擁有基本的免鎖組件的特性,如可以避免不同類型的死鎖,不同類型的線程初始
            化順序等。 
            2) 并行模式 
            Amino 將為應用程序提供一個或幾個大家熟知的并行計算模式。采用這些并行模式可
            以使開發者起到事半功倍的效果,這些模式包括 Master-Worker、Map-reduce、Divide and 
            conquer, Pipeline 等,線程調度程序可以與這些模式類協同工作,提供了開發效率。 
            3) 并行計算中的一般功能 
            Amino 將為應用程序提供并行計算中常用的方法,例如: 
            a. String、Sequence  和Array  的處理方面。如Sort、Search、Merge、Rank、Compare、
            Reverse、 Shuffle、Rotate 和Median 等 
            4)原子和STM(軟件事務內存模型) 

            --------------------------------
            在Amino 類庫中,主要算法將使用鎖無關的(Lock-Free)的數據結構。 

            原語Compare-and-swap(CAS)  是實現鎖無關數據結構的通用原語。CAS  可以原子
            地比較一個內存位置的內容及一個期望值,如果兩者相同,則用一個指定值取替這個內存位
            罝里的內容,并且提供結果指示這個操作是否成功。

            CAS 操作過程是:當處理器要更新一個內存位置的值的時候,它首
            先將目前內存位置的值與它所知道的修改前的值進行對比(要知道在多處理的時候,你要更
            新的內存位置上的值有可能被其他處理更新過,而你全然不知),如果內存位置目前的值與
            期望的原值相同(說明沒有被其他處理更新過),那么就將新的值寫入內存位置;而如果不
            同(說明有其他處理在我不知情的情況下改過這的值咯),那么就什么也不做,不寫入新的
            值(現在最新的做法是定義內存值的版本號,根據版本號的改變來判斷內存值是否被修改,
            一般情況下,比較內存值的做法已經滿足要求了)。CAS 的價值所在就在于它是在硬件級別
            實現的,速度那是相當的快。

            項目主頁:http://www.open-open.com/lib/view/home/1361839469849

            posted @ 2013-08-19 13:24 小馬歌 閱讀(424) | 評論 (0)編輯 收藏
             
            1. 要想深入了解Java必須對JDK的組成, 本文對JDK6里的目錄做了基本的介紹,主要還是講解  
            2. 了下JDK里的各種可執行程序或工具的用途  
            3. Java(TM) 有兩個平臺 JRE 運行平臺,包括Java虛擬機,運行類庫,java應用程序裝載器。  
            4. JRE不是開發環境,所以不包括編譯器,調試器,有需要這些請安裝JDK(TM)  
            5.       
            6. //說明 :環境為Windows XP SP3 下 的JDK為1.60版本 JAVA_HOME = C:\jdk1.6.0  
            7.   
            8. //---------------------------開發文件和目錄---------------------------------------  
            9.                jdk1.6.0  
            10.      ___________|____________________  
            11.     |           |                    |  
            12.     bin         lib                  jre  
            13.     |           |          __________|____________________  
            14. java.exe    tools.jar     |                               |          
            15. javac.exe   dt.jar       bin                              lib                  
            16. javap.exe            _____|____ __________         _______|_____ _______ ______          
            17. javah.exe           |          |          |       |       |     |       |      |  
            18. javadoc.exe     java.exe    client      server  rt.jar   ext security applet fonts  
            19.                 java.dll       |          |   charsets.jar|                    
            20.                 awt.dll     jvm.dll    jvm.dll       localedata.jar  
            21.   
            22. c:\jdk1.6.0 -- JDK的根目錄,包含一些軟件版權,聲明,和自述文件,  
            23.          同時包含歸檔了的Java平臺源代碼包src.zip           
            24. c:\jdk1.6.0\bin -- JDK包含的一些開發工具執行文件  
            25. c:\jdk1.6.0\jre\bin\client   
            26.         包含 Java HotSpotTM Client Virtual Machine 要用的 DLL 文件   
            27. c:\jdk1.6.0\jre\bin\server   
            28.         包含 Java HotSpotTM Server Virtual Machine 要用的 DLL 文件    
            29. c:\jdk1.6.0\lib  -- Java開發工具要用的一些庫文件,有包含了支持JDK工具的非核心類庫tool.jar,  
            30.         dt.jar 歸檔的 BeanInfo 文件   
            31.         用于告訴IDE這樣顯示java組件怎樣讓開發者在自己的應用程序中用戶化它們  
            32. c:\jdk1.6.0\jre  -- JDK使用的Java運行環境(JRE)的根目錄,這個運行環境實現了Java平臺           
            33. c:\jdk1.6.0\jre\bin -- Java平臺所要用的工具和庫的可執行文件  
            34.         這些可執行文件和 /jdk1.6.0/bin相同的。  
            35.          //Java 啟動器工具充當了應用程序啟動器(覆蓋了1.1版本的JDK推出的舊版本JRE工具)  
            36.                         這個路徑不需要設置 PATH 環境變量  
            37. c:\jdk1.6.0\jre\bin\client  -- 包含Java Hotspot(Java性能引擎) 客戶虛擬機要用的DLL文件  
            38. c:\jdk1.6.0\jre\bin\server -- 包含Java Hotspot(Java性能引擎) 服務器虛擬機要用的DLL文件  
            39. c:\jdk1.6.0\jre\lib -- JRE要用的代碼庫,屬性設置,資源文件。  
            40.         例如rt.jar Java 引導類庫(java 核心APIRunTime類)  
            41.         charsets.jar 字符轉換類庫  
            42. c:\jdk1.6.0\jre\lib\ext -- 默認的Java平臺擴展安裝環境  
            43.         包含localedata.jar 是 ava.text 和 java.util包要用到的地區數據   
            44. c:\jdk1.6.0\jre\lib\security -- 包含安全管理文件,有安全規則(java.policy)   
            45.         和安全屬性文件(java.security)  
            46. c:\jdk1.6.0\jre\lib\applet -- Java applets 要的Jar包,可以放到lib/applet/目錄,  
            47.         這樣可以節省 applet 類裝載器從本地文件系統裝載 大的applets 所需的applet類時間  
            48.          減少從網上下載具有相同的保護的時間。  
            49. c:\jdk1.6.0\jre\lib\fonts 包含平臺所需的TrueType字體文件  
            50.   
            51. //不知道大家的版本有沒有這個目錄  
            52. -db目錄    純Java開發的數據可 Derby,是一個開源的100%Java開發的關系數據庫  
            53.                     db  
            54.             _________|__________  
            55.            |         |          |  
            56.           Demo    Frameworks   lib   
            57.   -Dmeo 是Java Derby的例子程序  
            58.   -Frameworks 提供數據庫運行時需要的用到的shell腳本,包括Windows下的bat和Unix下的Ksh  
            59.         包含 Java DB 的類庫和 Sun Microsystems 的 Apache Derby 數據庫技術的分發  
            60.         有關 Java DB 的信息,請參見 http://developers.sun.com/prodtech/javadb/。   
            61.         有關 Derby 的文檔,請參見:http://db.apache.org/derby/manuals/index.html   
            62.   
            63. //----------------------------附加的文件和目錄------------------------------------  
            64.                         jdk1.6.0  
            65.                  ___________|__________ ___________  
            66.                 |           |          |           |  
            67.               demo      include     src.zip     sample   
            68.              ___|___ _________ __________  
            69.             |       |         |          |  
            70.           applets  jfc       jpda      plugin  
            71.          
            72. c:\jdk1.6.0\src.zip -- 歸檔的Java源代碼  
            73. c:\jdk1.6.0\demo -- Java編程的例子  
            74. c:\jdk1.6.0\demo\applets -- 網頁Applets的例子  
            75. c:\jdk1.6.0\demo\jfc -- Java 2D(TM)和JFC(基礎圖形類集合)\Swing 功能的例子  
            76. c:\jdk1.6.0\demo\jpda -- 用Java平臺Debugging的體系構架,包還有javadt 的 jdb 源代碼,  
            77.         具體內容可看jpda目錄下的doc\index.html  
            78. c:\jdk1.6.0\demo\jvmti -- java虛擬機tool interface (工具接口) 實例代碼  
            79. c:\jdk1.6.0\demo\plugin -- java 插件產品案例  
            80. c:\jdk1.6.0\demo\nbproject -- JDK的 netbean工程示例  
            81. c:\jdk1.6.0\demo\management -- 一些這樣查看死鎖線程(FullThreadDump ),  
            82.         收集垃圾(VerboseGC)內存cpu使用狀況了代碼例子。詳細可查看目錄下的index.html  
            83. c:\jdk1.6.0\sample -- 某些 Java API 的編程樣例(帶源代碼)。  
            84. //有興趣的可看看上面這些代碼,很有用  
            85. c:\jdk1.6.0\include -- C 語言頭文件 支持 用Java本地接口和Java虛擬機接口 來本機代碼編程   
            86.   
            87. //-----------------------------------基本工具-------------------------------------  
            88. 這些工具是JDK的基礎,用這些工具來編寫應用程序。  
            89. javac.exe -- Java語言編譯器   
            90. java.exe -- Java應用程序啟動器,JDK 1.6版里同時用于開發和部署,  
            91.             舊的部署啟動器,jre,不在提供  
            92. javadoc.exe -- Java API 文檔生成器  
            93. apt.exe -- java 注釋處理器  
            94. appletviewer.exe -- java applet 小程序查看器    
            95. jar.exe -- java文件壓縮打包工具  
            96. jdb.exe -- Java 調試器.  
            97. javah.exe -- C 頭文件和stub生成器,用于寫本地化方法,例如生產JNI樣式的頭文件  
            98. javap.exe -- class文件 反編譯工具   
            99. extcheck.exe -- 用于檢測jar包中的問題    
            100.   
            101. //---------------------------------安全工具 --------------------------------------  
            102.   
            103. 這些工具用于設置系統的安全規則和生產可以工作在遠端的安全規則下的應用程序  
            104. keytool.exe -- 管理密鑰庫和證書.  
            105. jarsigner.exe -- 生產和校驗JAR簽名  
            106. policytool.exe -- 有用戶界面的規則管理工具    
            107. kinit.exe.exe -- 用于獲得和緩存網絡認證協議Kerberos 票證的授予票證  
            108. klist.exe.exe --  憑據高速緩存和密鑰表中的 Kerberos 顯示條目   
            109. ktab.exe.exe-- 密鑰和證書管理工具   
            110.   
            111. //--------------------------------Java國際化工具----------------------------------  
            112.   
            113. 這些工具可以幫助你創建可本地化的應用程序  
            114. native2ascii -- 見文本轉化為 Unicode Latin-1//這個工具很有意思 ,大家可以看看這里  
            115. //http://java.sun.com/javase/6/docs/technotes/tools/windows/native2ascii.html    
            116.   
            117. //--------------------------------遠程方法調用工具--------------------------------  
            118.   
            119. 這些工具可以幫助創建可以和web和網絡交互的應用程序  
            120. rmic.exe -- 生成遠程對象的stubs and skeletons(存根和框架)  
            121. rmid.exe -- Java 遠程方法調用(RMI:Remote Method Invocation) 活化系統守護進程  
            122. rmiregistry.exe -- Java 遠程對象注冊表  
            123. serialver.exe -- 返回類的 serialVersionUID.    
            124.   
            125. //------------------------------Java IDL and RMI-IIOP 工具------------------------  
            126.   
            127. 這些工具用于創建使用OMG-Standard IDL 和 CORBA/IIOP 的應用程序  
            128. tnameserv.exe -- Provides access to the naming service.   
            129. idlj.exe -- 生產映射到OMG IDL接口可以使Java應用程序使用CORBA的.java文件  
            130. orbd.exe -- 為客戶可以在CORBA環境下透明的定位和調用服務器的穩定的對象提供支持  
            131. servertool.exe -- 為應用程序提供易于使用的接口用于注冊,注銷,啟動,關閉服務器  
            132.   
            133. //-------------------------------Java 部署工具------------------------------------  
            134. pack200.exe -- 使用java gzip壓縮工具將JAR文件轉換為壓縮的pack200文件,  
            135.         生產打包文件是高度壓縮的JAR包,可以直接部署,減少下載時間  
            136. unpack200.exe -- 解包pack200文件為JARs   
            137.   
            138. //-------------------------------Java 插件工具------------------------------------  
            139. htmlconverter.exe -- Java Plug-in HTML轉換器 htmlconverter -gui 可以啟動圖形界面  
            140.   
            141. //-------------------------------Java web 啟動工具--------------------------------  
            142. javaws.exe -- Java web 啟動命令行工具  
            143.   
            144. //-----------------------Java 故障檢修,程序概要分析,監視和管理工具--------------  
            145. jvisualvm.exe -- 一個圖形化的Java虛擬機,不說了 大家研究一下就發現太酷了  
            146.         // 啊這是想了解JVM的人的神器  
            147.         //http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html  
            148. jconsole.exe -- java監視臺和管理控制臺,圖形界面的功能太強大了,  
            149.         運行一下就知道 ,不想多說,看了就知道  
            150.    
            151. //------------------------------Java web 服務工具---------------------------------  
            152. schemagen.exe  -- Java構架的XML Schema生成器  
            153. wsgen.exe  -- 生成 JAX-WS  
            154. wsimport.exe -- 生成 JAX-WS  
            155. xjc.exe -- 綁定編譯器   
            156.   
            157. //------------------------------監視工具------------------------------------------  
            158.   
            159. 監視Java虛擬機的性能,不支持Windows 98 和Windows ME 平臺  
            160. jps.exe -- JVM Process Status 進程狀態工具。列出目標系統的HotSpot JJVM  
            161. jstat.exe -- 按照命令行的具體要求記錄和收集一個JVM的性能數據  
            162. jstatd.exe -- JVM jstat 的守護進程  
            163.   
            164. //-----------------------------故障檢測和修理工具---------------------------------  
            165. jinfo.exe -- 配置或打印某個Java進程VM flag  
            166. jhat.exe -- 堆儲存查看器  
            167. jmap.exe  -- Java內存圖  
            168. jsadebugd.exe -- Java 的 Serviceability Agent Debug的守護進程  
            169. jstack.exe -- Java堆棧跟蹤  
            170.   
            171. //----------------------------Java腳本工具----------------------------------------  
            172. jrunscript.exe -- 運行腳本  
            173.   
            174. //工具都在JAVA_HOME\bin目錄下,絕大部分工具都有-help命令行參數來提供幫助 
            posted @ 2013-08-19 13:22 小馬歌 閱讀(202) | 評論 (0)編輯 收藏
             
                 摘要: jstack -- 如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。另外,jstack工具還可以附屬到正在運行的java程序中,看到 當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈...  閱讀全文
            posted @ 2013-08-16 13:18 小馬歌 閱讀(4541) | 評論 (0)編輯 收藏
             
            這個project大約是09年初開始做的,很快就形成了現在版本的樣子,后陸續做了一些小修改和修復了一些小bug,現整理了一下決定發布。把它open source的主要原因,就是希望這個小工具能對大家有用,并且能夠參與進來一起把它做的更好
            20101025
            Change Log
            20130509 0.0.9 released fixed an issue when compiler uses strict type checking
            20101108 0.0.8 beta,加入xs_simhash和xs_hdist函數,分別計算simhash和漢明距離。
            關于xsplit的交流,請到xsplit貼吧: http://tieba.baidu.com/f?kw=xsplit 參與討論。
            xsplit是一個PHP擴展,提供基于MMSEG算法的分詞功能。目前只在linux下測試并部署過,希望有朋友可以幫忙編譯提供windows下的dll。
            xsplit只處理UTF8編碼格式,如果是其他編碼格式,請在使用前自行轉換
            xsplit主要有以下幾個函數:
            bool xs_build ( array $words, string $dict_file )
            resource xs_open (string $dict_file [, bool $persistent])
            array xs_split ( string $text [, int $split_method = 1 [, resource $dictionary_identifier ] ] )
            mixed xs_search ( string $text [, int $search_method [, resource $dictionary_identifer ] ] )
            string xs_simhash( string $text [, bool $isBinary] ) 
            int xs_hdist( string $simhash1, string $simhash2 )
            安裝過程與一般的PHP擴展安裝一樣
            $phpize
            $./configure --with-php-config=/path/to/php-config
            $make
            $make install
            php.ini中可以設置以下參數:
            xsplit.allow_persisten = On
            xsplit.max_dicts = 5
            xsplit.max_persistent = 3
            xsplit.default_dict_file = /home/xdict
            xsplit.allow_persistent 是否允許加載持久詞典
            xsplit.max_dicts 允許同時打開的最大詞典數目
            xsplit.max_persistent 允許同時打開的最大持久詞典數目
            xsplit.default_dict_file 默認的詞典,沒有指定詞典時會調用此詞典
            源碼中有一個utils目錄,包含
            make_dict.php 提供命令行方式創建詞典
            xsplit.php 一個簡單的示例文件
            xdict_example.txt 一個文本詞庫的格式示例
            make_dict.php的使用例子如下:
            $php make_dict.php ./xdict_example.txt ./xdict.db
            文本詞庫的格式請參考xdict_example.txt
            bool xs_build (array $words, string $dict_file)
            從$words數組建立名稱為$dict_file的詞典,若成功則返回true。$words數組的格式請參考示例,key為詞語,value為詞頻。
            例子如下:
            <?php
            $dict_file='dict.db';
            $dwords['美麗']=100;
            $dwords['蝴蝶']=100;
            $dwords['永遠']=100;
            $dwords['心中']=100;
            $dwords['翩翩']=100;
            $dwords['飛舞']=100;
            $dwords['翩翩飛舞']=10;
            if(!xs_build($dwords, $dict_file)) {
                die('建立詞典失敗!');
            }
            resource xs_open (string $dict_file [, bool $persistent])
            打開一個詞典文件,并返回一個resource類型的identifier。$persistent可以指定是否是持久化詞典,持久化詞典在這里可以理解為詞典資源生命周期的不同,一般情況下$persistent=true或者默認缺省即可。在進行分詞的時候,可以指定不同的詞典。
            $dict_file_1 = 'xdcit.db';
            $dict_file_2 = 'mydict.db';
            $dict1 = xs_open($dict_file);
            xs_open($dict_file); 
            array xs_split ( string $text [, int $split_method = 1 [, resource $dictionary_identifier ] ] )
            對文本進行分詞,可以指定分詞方法和詞典。分詞方法目前有兩種,一個是MMSEG算法(默認),一個是正向最大匹配,分別用常量XS_SPLIT_MMSEG和XS_SPLIT_MMFWD表示。返回值是一個數組,包含所有切分好的詞語。如果不指定詞典,最后一次打開的詞典將被使用。
            <?php
            $text="那只美麗的蝴蝶永遠在我心中翩翩飛舞著。";
            $dict_file = 'xdict.db';
            $dict_res = xs_open($dict_file);
            $words = xs_split($text);  /* 此處沒有指定詞典資源,默認使用最后一次打開的詞典 */
            $words1 = xs_split($text, XS_SPLIT_MMSEG, $dict_res);
            mixed xs_search ( string $text [, int $search_method [, $dictionary_identifer ] ] ) 基于雙數組trie樹提供的一些功能,$search_method有四個常量表示:
            XS_SEARCH_CP : darts的commonPrefixSearch封裝,如果沒有找到,返回false。
            XS_SEARCH_EM : darts的exactMatchSearch封裝,如果沒有找到,返回false。
            XS_SEARCH_ALL_SIMPLE : 按照詞典返回所有詞語詞頻總和,一個INT型數值。
            XS_SEARCH_ALL_DETAIL : 按照詞典返回所有詞典的詞頻,并以數組形式返回每一個詞語的詳細統計。
            如果不指定詞典,最后一次打開的詞典將被使用。
            <?php
            xs_open($dict_file);
            $text="那只美麗的蝴蝶永遠在我心中翩翩飛舞著。";
            $word='翩翩飛舞';
            $result=xs_search($word, XS_SEARCH_CP); /* common prefix search */
            var_dump($result);
            $result=xs_search($word, XS_SEARCH_EM); /* exact match search */
            var_dump($result);
            $result=xs_search($text, XS_SEARCH_ALL_SIMPLE);
            var_dump($result);
            $result=xs_search($text, XS_SEARCH_ALL_DETAIL);
            var_dump($result);
            string xs_simhash( array $tokens [, bool $rawoutput] )
            計算simhash。這里所有token權重都是1,$tokens的例子如array('在', '這個', '世界')。$rawoput默認為0,即返回simhash的hex string形式,如md5, sha1函數一樣;如過$rawoput為真,返回一個8字節的字符串,這個字符串實際上是一個64 bits的整型數,uint64_t,在一些特殊情況下可以用到。
            int xs_hdist( string $simhash1, $string $simhash2)
            計算漢明距離。
            <?php
            xs_open('xdict');
            $text1="那只美麗的蝴蝶永遠在我心中翩翩飛舞著。";
            $text2="那只美麗的蝴蝶永遠在我心中翩翩飛舞。";
            $tokens1=xs_search($text1, XS_SEARCH_ALL_INDICT); /* 去掉標點等特殊符號,經過實驗,計算simhash時,一些標點、換行、特殊符號等對效果影響較大 */
            $tokens2=xs_search($text2, XS_SEARCH_ALL_INDICT);
            $simhash1=xs_simhash($tokens1);
            $simhash2=xs_simhash($tokens2);
            echo "simhash1 is {$simhash1}\n";
            echo "simhash2 is {$simhash2}\n";
            $hamming_dist=xs_hdist($simhash1, $simhash2);
            echo "bit-wise format:\n";
            echo decbin(hexdec($simhash1)), "\n";
            echo decbin(hexdec($simhash2)), "\n";
            echo "hamming distance is {$hamming_dist}\n";
            Terms - Privacy
            posted @ 2013-08-13 17:35 小馬歌 閱讀(390) | 評論 (0)編輯 收藏
            僅列出標題
            共95頁: First 上一頁 24 25 26 27 28 29 30 31 32 下一頁 Last 
             
            主站蜘蛛池模板: 胶州市| 罗江县| 扎兰屯市| 广水市| 环江| 鹤壁市| 荥阳市| 阿瓦提县| 巧家县| 利津县| 绥江县| 穆棱市| 广宁县| 晴隆县| 兴城市| 河南省| 阿合奇县| 武宁县| 连平县| 长垣县| 泌阳县| 加查县| 岚皋县| 台中县| 靖江市| 福建省| 太湖县| 井冈山市| 东阳市| 龙南县| 大港区| 旺苍县| 嘉兴市| 普兰县| 浮梁县| 大新县| 阿巴嘎旗| 文昌市| 贵阳市| 保德县| 留坝县|