Go To My HomePage

Java11新特性

一、var“关键字”

// 编译器能根据右边的表达式自动推断类型
// var的好处是在使用lambda表达式时给参数加上注解
var str = "abc";
System.out.println(str.getClass());  //class java.lang.String
Consumer<Integer> consumer = (@Deprecated var x) -> System.out.println(x);

var“关键字”并非正在的关键字,变量依旧可以用var命名,var“关键字”只是一个语法糖

二、增加字符串处理方法

// 判断字符串是否为空白
"\t ".isBlank();                    // ture

// 去除首尾空白
"\t [content]  ".strip();           // [content]
// 去除首部空格
"\t [content]  ".stripLeading();    // [content]空格空格    
// 去除尾部空格
"\t [content]  ".stripTrailing();   // 空格空格[content]

// 复制字符串
"Java ".repeat(3);                  // Java Java Java

// 行数统计
"A\nB\nC".lines().count();          // 3

strip与trim的区别时trim不能去除非英文的空格,strip可以去除所有字符集的空格

三、标准Java异步HTTP客户端

public class HttpClientTest {

  public static void main(String[] args) throws Exception {
    // 创建HttpClient
    HttpClient httpClient = HttpClient.newHttpClient();

    // 创建Request
    HttpRequest request = HttpRequest.newBuilder(URI.create("http://www.baidu.com")).build();

    // send同步发送数据,并指定Resopnse的Body如何处理
    HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

    // 打印headers和body
    System.out.println(response.headers());
    System.out.println(response.body());

    // sendAsync异步发送
    httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println);
  }
}

四、Java Flight Recorder

Flight Recorder源自飞机的黑盒子,以前是商业版的特性现Oracle将其开源用于监视JVMJFR的可监视生产环境且性能开销最大不超过1%

采集JFR信息

# 开启JFR,会显示记录id
jcmd <pid> JFR.start

# 指定生成文件,和开启时显示的记录id
jcmd <pid> JFR.dump filename=recording.jfr name=num

# 关闭JFR,需指定记录id
jcmd <pid> JFR.stop name=num

解析JFR信息

# 打印JFR所有信息
jfr print recording.jfr

# 打印指定事件信息
jfr print --events CPULoad,GarbageCollection recording.jfr

# 打印指定时间信息用json格式
jfr print --json --events CPULoad recording.jfr

# 打印指定分类信息信息
jfr print --categories "GC,JVM,Java*" recording.jfr

# 打印JDK事件并指定栈深度
jfr print --events "jdk.*" --stack-depth 64 recording.jfr

# 打印统计信息
jfr summary recording.jfr

# 打印元信息
jfr metadata recording.jfr