范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

真的要开始用JDK17了

  最近在调研 JDK 17,并且试着将之前的一个小项目升级了一下,在测试环境跑了一段时间。 最终,决定了,新项目要采用 JDK 17 了。
  JDK 1.8:"不是说好了,他发任他发,你用 Java 8 吗?"
  不光是我呀,连 Spring Boot 都开始要拥护 JDK 17了,下面这一段是 Spring Boot 3.0 的更新日志。  "
  Spring Boot 3.0 requires Java 17 as a minimum version. If you are currently using Java 8 or Java 11, you"ll need to upgrade your JDK before you can develop Spring Boot 3.0 applications.
  "
  Spring Boot 3.0 需要 JDK 的最低版本就是 JDK 17,如果你想用 Spring Boot 开发应用,你需要将正在使用的 Java 8 或 Java 11升级到 Java 17。
  选用 Java 17,概括起来主要有下面几个主要原因:
  1、JDK 17 是 LTS (长期支持版),可以免费商用到 2029 年。而且将前面几个过渡版(JDK 9-JDK 16)去其糟粕,取其精华的版本;
  2、JDK 17 性能提升不少,比如重写了底层 NIO,至少提升 10% 起步;
  3、大多数第三方框架和库都已经支持,不会有什么大坑;
  4、准备好了,来吧。
  拿几个比较好玩儿的特性来说一下 JDK 17 对比 JDK 8 的改进。  密封类
  密封类应用在接口或类上,对接口或类进行继承或实现的约束,约束哪些类型可以继承、实现。例如我们的项目中有个基础服务包,里面有一个父类,但是介于安全性考虑,值允许项目中的某些微服务模块继承使用,就可以用密封类了。
  没有密封类之前呢,可以用  final 关键字约束,但是这样一来,被修饰的类就变成完全封闭的状态了,所有类都没办法继承。
  密封类用关键字  sealed 修饰,并且在声明末尾用 permits 表示要开放给哪些类型。
  下面声明了一个叫做  SealedPlayer 的密封类,然后用关键字 permits 将集成权限开放给了 MarryPlayer 类。 public sealed class SealedPlayer permits MarryPlayer {     public void play() {         System.out.println("玩儿吧");     } }
  之后  MarryPlayer  就可以继承 SealedPlayer 了。 public non-sealed class MarryPlayer extends SealedPlayer{     @Override     public void play() {         System.out.println("不想玩儿了");     } }
  继承类也要加上密封限制。比如这个例子中是用的  non-sealed ,表示不限制,任何类都可以继承,还可以是 sealed ,或者 final 。
  如果不是 permits 允许的类型,则没办法继承,比如下面这个,编译不过去,会给出提示 "java: 类不得扩展密封类:org.jdk17.SealedPlayer(因为它未列在其 "permits" 子句中)"  public non-sealed class TomPlayer extends SealedPlayer {      @Override     public void play() {      } } 空指针异常String s = null; String s1 = s.toLowerCase();
  JDK1.8 的版本下运行:  Exception in thread "main" java.lang.NullPointerException  at org.jdk8.App.main(App.java:10)
  JDK17的版本(确切的说是14及以上版本)  Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toLowerCase()" because "s" is null  at org.jdk17.App.main(App.java:14)
  出现异常的具体方法和原因都一目了然。如果你的一行代码中有多个方法、多个变量,可以快速定位问题所在,如果是 JDK1.8,有些情况下真的不太容易看出来。  yield关键字public static int calc(int a,String operation){     var result = switch (operation) {         case "+" -> {             yield a + a;         }         case "*" -> {             yield a * a;         }         default -> a;     };     return result; } 换行文本块
  如果你用过 Python,一定知道Python 可以用  "hello world" 、"hello world" 、""" hello world """ 、""" hello world """  四种方式表示一个字符串,其中后两种是可以直接支持换行的。
  在 JDK 1.8 中,如果想声明一个字符串,如果字符串是带有格式的,比如回车、单引号、双引号,就只能用转义符号,例如下面这样的 JSON 字符串。  String json = "{ " +         "  "name": "古时的风筝", " +         "  "age": 18 " +         "}";
  从 JDK 13开始,也像 Python 那样,支持三引号字符串了,所以再有上面的 JSON 字符串的时候,就可以直接这样声明了。  String json = """         {           "name": "古时的风筝",           "age": 18         }         """; record记录类
  类似于 Lombok 。
  传统的Java应用程序通过创建一个类,通过该类的构造方法实例化类,并通过getter和setter方法访问成员变量或者设置成员变量的值。有了record关键字,你的代码会变得更加简洁。
  之前声明一个实体类。  public class User {     private String name;      public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     } }
  使用  Record 类之后,就像下面这样。 public record User(String name) {  }
  调用的时候像下面这样  RecordUser recordUser = new RecordUser("古时的风筝"); System.out.println(recordUser.name()); System.out.println(recordUser.toString());
  输出结果
  Record 类更像是一个实体类,直接将构造方法加在类上,并且自动给字段加上了 getter 和 setter。如果一直在用 Lombok 或者觉得还是显式的写上 getter 和 setter 更清晰的话,完全可以不用它。  G1 垃圾收集器
  JDK8可以启用G1作为垃圾收集器,JDK9到 JDK 17,G1 垃圾收集器是默认的垃圾收集器,G1是兼顾老年代和年轻代的收集器,并且其内存模型和其他垃圾收集器是不一样的。
  G1垃圾收集器在大多数场景下,其性能都好于之前的垃圾收集器,比如CMS。  ZGC
  从 JDk 15 开始正式启用 ZGC,并且在 JDK 16后对 ZGC 进行了增强,控制 stop the world 时间不超过10毫秒。但是默认的垃圾收集器仍然是 G1。
  配置下面的参数来启用 ZGC 。  -XX:+UseZGC
  可以用下面的方法查看当前所用的垃圾收集器
  JDK 1.8 的方法  jmap -heap 8877
  JDK 1.8以上的版本  jhsdb jmap --heap --pid 8877
  例如下面的程序采用 ZGC 垃圾收集器。
  其他一些小功能
  1、支持 List.of()、Set.of()、Map.of()和Map.ofEntries()等工厂方法实例化对象;
  2、Stream API 有一些改进,比如  .collect(Collectors.toList()) 可以直接写成 .toList() 了,还增加了 Collectors.teeing() ,这个挺好玩,有兴趣可以看一下;
  3、 HttpClient 重写了,支持 HTTP2.0,不用再因为嫌弃 HttpClient 而使用第三方网络框架了,比如OKHTTP; 升级 JDK 和 IDEA
  安装 JDK 17,这个其实不用说,只是推荐一个网站,这个网站可以下载各种系统、各种版本的 JDK 。地址是 https://adoptium.net/。
  还有,如果你想在 IDEA 上使用 JDK 17,可能要升级一下了,只有在  2021.02 版本之后才支持 JDK 17。
  各位爱学习的同学,赶紧试一下吧。
  来源:https://mp.weixin.qq.com/s/5kPUG7IRlomlr3Ov2HIIKA
  作者:风筝

一个东北院长落马样本哈医大一院周晋案一审细节披露3月17日,哈尔滨医科大学附属第一医院(下称哈医大一院)原院长周晋受贿案一审公开开庭审理,案件更多细节再披露。据大庆市人民检察院指控2004年3月2019年9月,周晋利用其哈医大一人狂天收法不容这几天的新闻,连续看到有几位女子打人事件,引起关注。在广州拥挤的地铁上,一个据说五十岁的女子,穿了一身俄式军装,对着地铁座位上的一个年轻的男子大打出手,一边打还一边念念有词从明天开冯骥才俗世奇人新篇之秦六枝老房子里怎么会有深山气味俗世奇人新篇之秦六枝文冯骥才咸丰庚申年后,洋人开始在天津开埠,设租界。一下子,天津卫这块地便大红大紫,挤满商机,好赛天上掉馅饼。要想赚钱发财,到处有机可乘。于是,江南各地有钱的人都网曝郑州富士康正在裁人,员工转去武汉印度,不去的就地辞退再平凡,也可以有自己的观点!关注何金银,每天一起吐槽,各类热点新闻3月19日,疑似郑州富士康员工的网友,在视频中表示郑州富士康正在逐渐撤出员工。视频加载中视频中可以看到,广场上站满一首代表作都没有,却被称为乐坛顶流,真是笑掉大牙!说到歌手,那代表作就是行走江湖的利器。八九十年代华语乐坛的巅峰,可谓神仙打架,张学友王菲邓丽君横空出世的天才周杰伦。他们的代表作很多,至今还广为流传!像歌坛天后王菲,红豆传奇等这样满大街都是挤奶裙?这几套春夏穿搭才是真的撩到爆!头条创作挑战赛之前有段时间,满大街都是挤奶裙,所谓的挤奶裙就是这种领口开的很大的连衣裙。这种裙子明星穿着拍照,确实有种肤白貌美的感觉。但是对于我们普通人来说,穿着这种稍显暴露的裙子南北战争的胜利联邦政府是如何胜利的?采取了哪些策略?文字悠悠编辑悠悠前言南北战争是美国历史上最重要的战争之一,持续了四年,造成了巨大的破坏和伤亡。南北战争的胜利对于联邦政府和整个美国的未来发展具有重要的影响。因此,研究联邦政府如何取痴心妄想!美国不断加码芯片领域制裁,让中国科研彻底瘫痪?中国在芯片领域的缺失曾经一度成为我国国人心中的痛点,而为了结束这一现状,我们的科研工程师们也是历经了数年的努力,等到一个让世界对我们刮目相看的机会RISCV架构。MIT曾高度评价R提前跑路?硅谷银行高管被爆套现8400万美元文陈济深编辑张广凯对于硅谷银行的储户而言,在经历了胆战心惊的周末后,他们终于如愿以偿拿到了自己的存款。然而投资者对于硅谷银行的投资不仅可能血本无归,更让他们愤怒的是,硅谷银行的高管加速中的工业上楼人城产深度融合吴家明摄官兵制图证券时报记者吴家明随着城市可用土地空间逐渐减少,土地成本持续攀升,原有工业用地土地收益率不断下降等问题逐步浮现,工业上楼这一概念频繁被提起。工业上楼也被称为摩天工厂跟一把手不对付,机构改革调到新组建单位,一把手紧跟着就来了头条创作挑战赛朋友大刘,原来在市直A单位当科长,由于种种原因,跟单位一把手关系比较紧张。领导看他不顺眼,他也不服气领导。单位跟他资历差不多的科长,有的已经提拔为副处级实职,没有实职
病毒让我很难受,可你怎么这么好呀!她不在时我是妈妈,她一来我就突然变回了孩子。感觉一直被身边人好好爱着。家人的爱给了我满满的安全感。近日有网友分享了对抗新冠病毒过程中被爱包围的瞬间来自家人的叮嘱照顾和关心或许也是打梅西身披的金边黑袍到底啥来头?价值高达3000万?文化虽然不像文明那样具有地区的广泛性,但是,它相应地和各个国家的每一个人的喜怒哀乐具有更深刻的联系。文化开启了对美的巅峰认知,而文化的表现形式很多,穿搭就是一种。如果说唐诗宋词,唐每一次选择都是对自己的一种考验人生在世,每天都在面临各式各样的选择,大到对未来的规划,小到一日三餐要吃什么?都无不影响到自己未来人生的走向!这仅是我个人经历的个人观点,可能会有人不太赞同,但你们可以细细回想,今童年,那次刻骨铭心的旅行!童年,那次刻骨铭心的旅行文万语千言01hr黑夜降临,深色大幕逐渐拉开,裹挟着初秋的凉意,笼罩了四野。偶尔随风传来火车的鸣笛,轻柔而绵远。两条亮闪闪的铁轨无限延伸,隐没在远方的树林,谁先起个头都知道,却又不记得,都是情绪和情欲在起头,却不看不到结果是为什么来的,如果你记得,请抱抱,好冷。圆周率没有尽头,人们也只记得开头。春风桃李花开日,秋雨梧桐叶落时。天是明朗的,风是猛我两次与死神擦肩而过我两次与死神擦肩而过文吕晓蓉我的人生却有些传奇,有些巧妙的契合,有些不幸之中的万幸。这就好像,在冥冥尘埃中,有一双温暖的手一直在帮我,在保护我有一双慈祥的目光一直在关注着我。我想这他用一瘸一拐的瘦弱身躯,为我撑起一片天,可我却如此之绝情这个走路一瘸一拐的人,这个普普通通的中国农民,用自己瘦弱的脊梁托起一家的幸福和安康。用他的爱为我们撑起一片晴朗的天。失去了父母,可能就再也没有一个人能像他们那样毫无条件地为我们付出手抄分享第二天字丑勿怪许多年过去了,人们说陈年旧事可以被埋葬,然而我终于明白这是错的,因为往事会自行爬上来。夜深人静的时候,你是否也会感到孤独?是否也会想起自己曾经做过却不敢承认的错事?是否想要向那个人失败,就再来一次人生第三次投稿,以失败告终。意料之外,却又在意料之中,只是很难过。好不容易鼓起勇气去做一件事,却一而再再而三以失败告终。失败,让我迷茫,更让我没了动力。偏偏这个时候我想起了余秀华女没错,他就是孙主任好多年没有遇到这样的寒冬了。阳光是那么的灿烂,天空是那么的湛蓝,白云是那么的悠闲,一切看上去是那么的温暖美好,可当你跨出家门的那一刻,才能感受到北风是那么的凌厉,吹透了棉衣,身体一每一颗真心,都是在包容中风雨同行有一种成功,叫永不言弃有一种成功,叫继续努力。我们自己选择的路,即使爬着跪着也要走完因为一旦开始,便不能终止。这才叫做真正的坚持。人生中,每一份感情,都是在理解中丝丝连心每一颗真心