摘要: 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