Java
文章平均质量分 98
风树种子
这个作者很懒,什么都没留下…
展开
-
双重检查锁定与延迟初始化
在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization {private static Instance instance;转载 2015-09-11 16:17:26 · 473 阅读 · 0 评论 -
IntelliJ IDEA远程调试
远程服务DEBUG模式启动 远程服务以debug模式启动需要执行java命令时带上以下JVM参数java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=naddress指定调试端口,可以按需更改。无论你的服务是普通的java进程,还是jetty、t原创 2016-12-12 15:46:05 · 27741 阅读 · 4 评论 -
Java泛型中<? extends E>和<? super E>的区别
在阅读JDK源码时经常看到这样的泛型声明和。他们有什么作用又有什么区别呢? 是 Upper Bound(上限) 的通配符,用来限制元素的类型的上限,比如List fruits;表示集合中的元素类型上限为Fruits类型,即只能是Fruit或者Fruit的子类,因此对于下面的赋值是合理的fruits = new ArrayList();fruits = new原创 2015-11-13 17:07:45 · 8615 阅读 · 2 评论 -
Arrays.asList()的坑
异常代码ListInteger> list = Arrays.asList(1,2,3);list.add(4);list.remove(1);list.clear();运行这段代码,执行的三个方法都会抛异常:java.lang.UnsupportedOperationException原因分析跟踪源码,Arrays中asList实现: /**原创 2018-01-22 16:07:17 · 1043 阅读 · 0 评论 -
阿里巴巴Java开发规约p3c插件扩展-自定义开发规范
前言工作中难免会遇到维护别人代码的情况,那么首先就得看懂别人写的代码。如果对方写的代码混乱臃肿,维护成本必然很高,如果对方写的代码优雅清晰,那维护的人看起来必然心情愉悦。正所谓“前人栽树,后人乘凉;前人埋坑,后人骂娘”。代码首先是给人看的,其次才是给机器看到,如何编写出任何人都看到懂的代码?答案是制定规范!每个公司都会有自己的编码规范,但是往往的情况是赶项目进度或者懒惰或者个人水平...原创 2018-01-29 09:26:13 · 6996 阅读 · 10 评论