Linux下安装jdk
创建下文件夹
mkdir -p /opt/java/package
上传安装包jdk-8u202-linux-x64.tar.gz 解压
tar -zxvf jdk-8u202-linux-x64.tar.gz
修改配置文件
vi /etc/profile
在最后添加
export JAVA_HOME=/opt/java/package/jdk1.8.0_202
export JRE_HOME=/opt/java/package/jdk1.8.0_202/jre
export CLASSPATH=.:/opt/java/package/jdk1.8.0_202/lib:/opt/java/package/jdk1.8.0_202/lib
export PATH=/opt/java/package/jdk1.8.0_202/bin:$PATH
刷新配置文件
source /etc/profile
程序退出
System.exit(0) 正常退出
System.exit(1) 非正常退出,通常使用在catch后
那么拦截退出呢?
/**
* 拦截系统退出
*/
private static class NoExitSecurityManager extends SecurityManager {
boolean exitFilter = true;
@Override
public void checkPermission(Permission perm) {
}
@Override
public void checkPermission(Permission perm, Object context) {
}
@Override
public void checkExit(int status) {
super.checkExit(status);
if (exitFilter) {
throw new ExitException(status);
}
}
}
Java 时间处理使用Calendar
比如6个月之前的时间为
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.MONTH,-6);
long oldtime=calendar.getTimeInMillis();
而不能使用
long oldtime=System.currentTimeMillis()-1000*60*60*24*30*6;
为啥呢?2个月的还是相同的,因为计算的值不是long,而是默认的int,最后转化为long的。 所以如果还是想自己写实现的方法,要这么写
long oldtime=System.currentTimeMillis()-1000L*60L*60L*24L*30L*6L;
Java 的类型和范围如下:
byte
基本类型 byte short int long folat double char boolean
范围
大小 最小取值 最大取值 包装类型
8 bit -128 (-2的7次方) 127 (2的7次方减1) Byte
short 16 bit -2的15次方(-32 768) 2的15次方减1(32 768) Short
int 32 bit -2的31次方(2 147 483 648) 2的31次方减1(2 147 483 647) Integer
long 64 bit -2的63次方 2的63次方减1 Long
folat 32 bit IEEE754 IEEE754 Float
double 64 bit IEEE754 IEEE754 Double
char 16 bit Unicode o Unicode 2的16次方减1 Charater
boolean —— —— —— Boolean
我想知道谁(哪个方法)调用了本方法
/**
* 获取堆栈信息,找到调用方法的位置,是谁调用了本方法
*/
private static void getStack(){
//获取调用的相关信息,返回结果数组,Stack堆栈,Trace跟踪,Element元素
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
//这个对象只有四个属性,对应的方法可以获取,
//分别是:declaringClass申请类、methodName方法名、fileName文件名、lineNumber所在代码行
//第一个数据[0]是获取对象线程方法(getStackTrace)的堆栈跟踪对象,一般不用
//第二个数据[1]是当前方法调用线程的堆栈跟踪对象(Thread.currentThread()),一般也不用
//第三个数据[2]就是谁调用本方法的对象了,一般用这个
StackTraceElement targetElement = stackTrace[2];
//方法名字
String className = targetElement.getClassName()+".java";
System.out.println(className);
//调用方法的所在行数
int lineNumber = targetElement.getLineNumber();
System.out.println(lineNumber);
//调用本方法的方法的方法名
String methodName = targetElement.getMethodName();
System.out.println(methodName);
System.out.println("-------------------------");
}
Java运行
指定大小
java -jar -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M car.jar
1、堆内存:最小1024M,最大1536M。(对象使用的内存)
2、永久内存:最小128M,最大256M。(类使用的内存,PermGen)