现在的Java版本号刷的和Chrome一样快,在最新的14版本中加入了switch表达式,和以前使用的switch语句不同,switch表达式带来的不仅仅是编码上的流畅,同时精简了switch语句的使用方式,并且是兼容以前的switch语句。 以前的switch语句在分支结束的时候往往需要我们手动的
Java10添加了一个非常重要的新特性:局部变量类型推断。在声明局部变量的时候使用下面的方式:varintValue=1;vardoubleValue=1.1;varstringValue="string";varlist=newArrayList<>();varma
最近修改线上bug的时候排查了一个十分隐藏的bug,直接上代码:Integera=null;booleanflag=true;Integerb=flag?a:0;乍一看是没什么毛病的,但是已运行就会发现报空指针,在idea里面也会警告可能有空指针,这是什么原因呢?直接看字节码:0:aconst_nu
问题Tomcat从7升级到8的时候出现了java.lang.IllegalArgumentException:Aninvaliddomain[.xxx.com]wasspecifiedforthiscookie异常。配置中有这么段配置:<ContextuseHttpOnly="tru
Java9中正式加入了对HTTP2的支持,同时对httpclient包进行了模块化封装,不过并没有正式加入javaapi,暂时放入一个临时的模块中:requiresjdk.incubator.httpclient;所以在调用的时候会有警告:WARNING:Usingincubatormodules:
上一篇介绍了Java9模块系统的一些基本信息,这一篇介绍模块化服务的实现、加载和使用。普通javainterface的使用基本是获取实现类或者在实例化接口的时候自己实现。获取实现类这种方式对服务的实现者有一定的入侵,如果在模块化中实现者就必须导出模块,这样项目之间的耦合其实是变强了。而实例化接口时候
Java9正式版发布已然有小半年,带来最令人激动的消息就是模块化编程。本来打算系统的了解一下这个新特性,百度到的也就一些简单介绍和demo,或者是国外的一些文章翻译,于是谷歌到了一些官方文档学习。ModuleSystem的出现将整个JDK的包结构都改变了:旧版本的Java都是以jar包的形式出现,而