-
協議不同查看全部
-
3-11 JDK11 其他新特性
查看全部 -
3-10 JDK11 中新增加的常用 API
查看全部 -
import?org.jetbrains.annotations.NotNull; import?java.util.ArrayList; import?java.util.Arrays; import?java.util.List; import?java.util.Map; public?class?LocalVarExample?{ ????/** ?????*?java8特性:lambda表達式語法 ?????*/ ????public?static?void?lambdaInJava8()?{ ????????new?Thread(new?Runnable()?{ ????????????@Override ????????????public?void?run()?{ ????????????????System.out.println("before?java8"); ????????????} ????????}).start(); ????????new?Thread(()->?System.out.println("in?java8")).start(); ????????List<String>?list?=?Arrays.asList("java8","jdk8","1.8"); ????????list.forEach(w->{ ????????????System.out.println("lambda?in?java8->"+w); ????????}); ????} ????/** ?????*Java10?新特性:局部變量類型推斷 ?????*/ ????private?static?void?varInJava10(){ ????????int?var?=10; ????????var?i?=10; ????????var?str?=?"java10"; ????????var?list?=?new?ArrayList<String>(); ????????var?map?=?Map.of(1,"a",2,"b"); ????????for(var?entry?:?map.entrySet()){ ????????????System.out.println(entry); ????????} ????} ????/** ?????*Java11?新特性:允許var在聲明隱式類型的lambda表達式的形式參數時使用 ?????*/ ????private?static?void?lambdaWithVarInJava11?(){ ???????List<Integer>?nums?=?Arrays.asList(9,11,23,3,7,2,8); //???????nums.sort((s1,s2)->{ //???????????if(s1.equals(s2)){ //???????????????return?0; //???????????}else{ //???????????????return?s1?>?s2???1:-1; //???????????} //???????}); ???????nums.sort((@NotNull?var?s1,?@NotNull?var?s2)->{ ???????????if?(s1.equals(s2))?{ ???????????????return?0; ???????????}?else?{ ???????????????return?s1?>?s2???1?:?-1; ???????????} ???????}); ???????nums.sort((s1,s2)->?s1?>?s2???1:-1); ???????System.out.println(nums); ????} ????/** ?????*?Lambda參數的本地變量語法 ?????*/ ????public?static?void?main(String[]?args)?{ //????????lambdaInJava8(); //????????varInJava10(); ????????lambdaWithVarInJava11(); ????} }
查看全部 -
import?java.net.URI; import?java.net.http.HttpClient; import?java.net.http.HttpRequest; import?java.net.http.HttpResponse; import?java.util.concurrent.CompletableFuture; /** ?*?標準HTTP客戶端 ?*/ public?class?HttpClientExample?{ ????/** ?????*?同步Get方法 ?????*?@param?uri ?????*?@throws?Exception ?????*/ ????private?static?void?synGet(String?uri)?throws?Exception?{ ????????HttpClient?client?=?HttpClient.newHttpClient(); ????????HttpRequest?request?=?HttpRequest.newBuilder().uri( ????????????????URI.create(uri)).build(); ????????HttpResponse<String>?response?=?client.send(request,?HttpResponse.BodyHandlers.ofString()); ????????System.out.println(response.statusCode()); ????????System.out.println(response.body()); ????} ????/** ?????*?異步Get方法 ?????*?@param?uri ?????*?@throws?Exception ?????*/ ????private?static?void?asyncGet(String?uri)?throws?Exception?{ ????????HttpClient?client?=?HttpClient.newHttpClient(); ????????HttpRequest?request?=?HttpRequest.newBuilder().uri( ????????????????URI.create(uri)).build(); ????????CompletableFuture<HttpResponse<String>>?future?=?client.sendAsync(request,HttpResponse.BodyHandlers.ofString()); ????????future.whenComplete((resp,ex)->{ ????????????if?(ex!=null){ ????????????????ex.printStackTrace(); ????????????}else?{ ????????????????System.out.println(resp.statusCode()); ????????????????System.out.println(resp.body()); ????????????} ????????}).join(); ????} ????public?static?void?main(String[]?args)?throws?Exception?{ ????????String?uri?=?"http://t.weather.sojson.com/api/weather/city/101030100"; ????????//synGet(uri); ????????asyncGet(uri); ????} }
查看全部 -
import?java.util.concurrent.TimeUnit; /** ?*?改進Aarch64函數 ?*/ public?class?Aarch64Example?{ ????public?static?void?mathOnJdk11()?{ ????????long?startTime?=?System.nanoTime(); ????????for?(int?i?=?0;?i?<?100000000;?i++)?{ ????????????Math.sin(i); ????????????Math.cos(i); ????????????Math.log(i); ????????} ????????long?endTime?=?System.nanoTime(); ????????System.out.println(TimeUnit.NANOSECONDS.toMillis(endTime-startTime)+"ms"); ????} ????public?static?void?main(String[]?args)?{ ????????mathOnJdk11(); ????} }
查看全部 -
import?java.lang.invoke.MethodHandle; import?java.lang.invoke.MethodHandles; import?java.lang.invoke.MethodType; /** ?*?動態語言API測試 ?*/ public?class?DynamicTest?{ ????private?static?void?test(){ ????????System.out.println("動態語言API測試"); ????} ????public?static?void?main(String[]?args)?throws?Throwable?{ ????????//?public方法的Lookup //????????MethodHandles.Lookup?publicLookup?=?MethodHandles.publicLookup(); ????????//?所有方法的Lookup ????????MethodHandles.Lookup?lookup?=?MethodHandles.lookup(); ????????MethodHandle?mh?=?lookup.findStatic(DynamicTest.class,"test",?MethodType.methodType(void.class)); ????????mh.invokeExact(); ????} }
查看全部 -
動態語言API測試
查看全部 -
G1垃圾收集器會將堆內存分配為等大小的region默認情況下是2048個region
查看全部 -
對象內存分配過快,mixed gc來不及清理,導致old region被沾滿會觸發full gc,full gc是單線程執行
查看全部 -
老年代占用的內存大小超過堆內存的預值時會觸發mixed gc,預值可以在啟動的時候指定
查看全部 -
G1垃圾收集器
查看全部 -
并發表及掃描垃圾回收器
查看全部 -
并行垃圾收集器
查看全部 -
串行垃圾收集器
查看全部
舉報
0/150
提交
取消