java7 try-with-resources 语法特性:
1. 凡是实现了AutoCloseable接口的类,在try()里声明该类实例的时候,在try结束后,close方法都会被调用
2. try结束后自动调用的close方法,这个动作会早于finally里调用的方法。
3. 不管是否出现异常(int i=1/0会抛出异常),try()里的实例都会被调用close方法
4. 越晚声明的对象,会越早被close掉。
Closeable vs. AutoCloseable:
Closeable throws IOException while AutoCloseable throws Exception
Closeable extends AutoCloseable
AutoCloseable is introduced since java 1.7
So, 从异常看,AutoCloseable使用更广泛,但是为了便于老版本的代码做升级,保留了Closeable,这样使用Closeable的代码就不需要额外显式处理非IOException的异常。
常用启动选项:
sofa-startup.sh
-verbose:class
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
@FunctionalInterface 速查链接:
【java】bean 转 map
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (!key.equals("class")) {
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
【java】cron in spring(org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler)
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.initialize();
scheduler.schedule(new Runnable() {
@Override
public void run() {
System.out.println(new Date());
}
}, new CronTrigger("0/2 * * * * *"));
【jvm】java dump命令
jmap -dump:format=b,file=filename-heap.bin pid
要触发gc的话:
jmap -histo:live
or
jmap -dump:live,file=dump_001.bin
thread dump:
jstack
【jvm】异常栈不打印
- 可能是打印过多被Hotspot抑制,可以通过-XX:-OmitStackTraceInFastThrow参数放开。