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
浙公网安备 33010602011771号