java备忘录

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 速查链接:

https://docs.oracle.com/javase/8/docs/api/java/lang/class-use/FunctionalInterface.html


 

 

【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 <pid>

or

jmap -dump:live,file=dump_001.bin <pid>

 

thread dump:

jstack <PID>


【jvm】异常栈不打印

- 可能是打印过多被Hotspot抑制,可以通过-XX:-OmitStackTraceInFastThrow参数放开。


 

 

 

posted @ 2019-03-08 19:19  rainforwind  阅读(122)  评论(0)    收藏  举报