JAVA相关

JVM资料:

http://en.wikipedia.org/wiki/JVM

 

 jdk安装

linux environment:

jdk-6u37-linux-i586.bin

JAVA环境变量配置, 为所有用户:
/etc/profile追加
export JAVA_HOME=/usr/src/jdk1.6.0_37
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 重启 or input the command: source /etc/profile, or edit the file: ~/.bashrc

windows environment:

 jdk-7u21-windows-x64.exe

JAVA_HOME:
C:\Program Files\Java\jdk1.7.0_21

CLASSPATH:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar
(为什么是这个呢?.表示当前路径,也就是说同一目录下的java class 是可见的,java下的类都打包在rt.jar里)

PATH:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

 

java package入门:

在D盘package目录下建2个文件:
//A.java
import com.wangjianping.www.*;
public class A {
    public static void main(String[] args) {
        B b1=new B() ;
        b1.print() ;
    }
}
//B.java
package com.wangjianping.www;
public class B {
    public void print() {
        System.out.println("package test");
    }
}
2.1 B.java文件在D:\package\com\wangjianping\www目录下
编译:
javac A.java
运行:
java A
2.2 单独编译B.java:
javac B.java -d . (-d选项指定class文件的输出路径)
运行编译A.java, 需指定所依赖的class路径, 此时并不需要class文件:
javac -classpath . A.java
注意: 此时要把当前目录下的B.java文件删除.
运行:
java –classpath . A
2.3   如果把com目录移到D盘下, 正确的步骤为:
javac -classpath d:\ A.java
注意: 此时要把d:\目录下的B.java文件删除.(只会对编译产生影响)
运行:
java –classpath d:\; . A
2.4 jar包:
把com文件夹放到D盘下, d:\com\wangjianping\www\B.class
到D盘目录下:
jar -cvf tools.jar com\
到package目录下:
javac -classpath d:\ A.java –verbose(使用-verbose选项会有惊喜)
运行:
java -classpath d:\;. A

 JAVA CONCURRENCY 

http://www.ibm.com/developerworks/cn/java/j-concurrent/

 

Java Reflection例子代码 

java的"动态性"

import java.awt.Button;
import java.lang.reflect.Method;
import java.util.Hashtable;

public class ReflectionTest {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        ReflectionTest reflection = new ReflectionTest();
        reflection.getNameTest();
        System.out.println("============================================================");
        reflection.getMethodTest();
    }
    
     // 根据对象创建对象
     // 跟据字符串(类的名字)创建类
    public void getNameTest() throws Exception {
        String name = "amigo";
        // 一个实例可以调用getClass得到实例所属的类的对象 
        Class cls = name.getClass(); // name是String类的实例
        System.out.println("string class name: " + cls.getName());
        
        Button btn = new Button();
        Class btnClass = btn.getClass();
        System.out.println("button class name: " + btnClass.getName());
        Class superBtnClass = btnClass.getSuperclass();
        System.out.println("super button class name: " + superBtnClass.getName());
        
        Class clsTest = Class.forName("java.awt.Button");
        System.out.println("clsTest name: " + clsTest.getName());
    }

     //  
    public void getMethodTest() throws Exception {
        Class cls = Class.forName("ReflectionTest");
        Class ptypes[] = new Class[2]; // 类的数组
        ptypes[0] = Class.forName("java.lang.String"); // 根据类的名字创建类
        ptypes[1] = Class.forName("java.util.Hashtable"); // 根据类的名字创建类
        // 从类Reflection(一个Class类的对象, 这个对象可由类的名字构造)中的到testMethod这个方法, 创建一个方法的对象
        // 第一个是方法的名称, 第二个是方法的参数类型
        Method method = cls.getMethod("testMethod", ptypes);
        Object args[] = new Object[2];
        args[0] = "args[0]";
        Hashtable ht = new Hashtable();
        ht.put("name", "amigo");
        args[1] = ht;
        // 调用Method类中的invoke方法运行method
        // 同是传递该方法的参数
        String ret = (String) method.invoke(new ReflectionTest(), args);
        System.out.println("return value is: " + ret);
    }
    // 
    public String testMethod(String str, Hashtable ht) throws Exception {
        System.out.println("-----testMethod is invoked by an instance of ReflectionTest class------");
        String returnStr = "return string";
        System.out.println("str= " + str);
        System.out.println("name= " + (String) ht.get("name"));
        System.out.println("-----------------------------------------------------------------------");
        return returnStr;
    }
}

 

 

 MAVEN安装:

MAVEN_HOME:C:\project\apache-maven-3.1.0

PATH:%MAVEN_HOME%\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

MAVEN SOCKS代理:

<proxy>
      <id>my-proxy</id>
      <active>true</active>
      <protocol>socks5</protocol>
      <username></username>
      <password></password>
      <host>proxy-socks.sc.intel.com</host>
      <port>1080</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

mvn archetype:generate -DgroupId=com.intel.hibench.tpcds -DartifactId=sandbox -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  -DsocksProxyHost=proxy-socks.sc.intel.com -DsocksProxyPort=1080

 

运行JAR文件中的某个类:

C:\Users\wangjian\workspace\sandbox\target> java -cp sandbox-1.0-SNAPSHOT.jar com.intel.hibench.tpcds.TpcdsDriver

 

MAVEN 仓库:http://mvnrepository.com/artifact/org.apache.hive/hive-service/0.8.1

 

 

while (true) {
lock(u)
if (c ! = g(N)) {
c ++;
in ++;
unlock(u);
run query; // long time
if empty, break;
lock(u)
in --;
unlock(u);
} else {
unlock(c);
wait();
}
}

while (true) {
lock(u);
if (c == g(N) && in == 0) {
unlock(u);
run refresh;
N ++;
notifyAll();
} else {
unlock(u);
}
if (c == max) {
break;
}
}

 

  

 JAVA单例模式设计:

http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html

 

 测量程序运行时间(纳秒级别):

http://www.cnblogs.com/kenkofox/archive/2010/06/05/1752390.html

 

 Trouble shooting:

JVM GC

Exception in thread "DAGScheduler" java.lang.OutOfMemoryError: GC overhead limit exceeded

 

posted @ 2013-02-01 16:20  Busy_Living  阅读(291)  评论(0)    收藏  举报