Integer、Long等自动拆箱类型为啥会抛NullPointerException

通常的NullPointerException异常其实是很好判断,一定是有某个对象是null导致的。但是java中数字都有自动装箱和拆箱功能,它简化了我们的代码,隐藏了其背后的执行步骤,导致程序抛出异常时我们会有意识的忽略了数字类型也可能会抛NullPointerException。

其实自动装箱和拆箱在字面上很容易使人对其理解的不准确或者不完整,大家都知道装箱就是从基础类型自动转换成对应的对象[……]

全文阅读

怎样让你的代码更好的被JVM JIT Inlining

JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining)。方法内联可以省掉方法栈帧的创建,同时增加了CPU指令cache的命中率,方法内联还使让JIT编译器更多更深入的优化变成可能。本人在fastxml(速度比XPP3(基于xmlpull)还快的xml解析器)开源项目中针对方法内联进行了很多学习和实践,这里总结一下,介绍一下怎么让你的代码更好的被JVM JIT In[……]

全文阅读

Java JIT性能调优

JVM自动监控这所有方法的执行,如果某个方法是热点方法,JVM就计划把该方法的字节码代码编译成本地机器代码,同时还会在后续的执行过程中进行可能的更深层次的优化,编译成机器代码的过程是在独立线程中执行的,不会影响程序的执行;除次以外,JVM还对热点方法和很小的方法内联到调用方的方法中,减少方法栈的创建。这些就是JIT(just in time)。

JIT编译器有近100种优化方式

[captio[……]

全文阅读

mac输入法切换快捷键用不了

新买的mac各种不好用不会用,拼音输入法居然不能和英文通过快捷键自由切换。网上各种搜也没有找到我想要的问题。因为大家都说按command+space就可以切换,但是我的却不行。

后来在System Preference > Keyboard中发现,拼音输入法的切换按钮上ctrl+space,但是实际上ctrl+space是打开的spotlight,mac系统初始化做得真够烂的,应该是快[……]

全文阅读

macbook-pro安装adobe-flash-player后仍然不能看视频

想用刚买的mac pro看看优酷,结果提示需要安装flash player插件,然后我按照提示安装了adobe flash player,重启了safari,结果还是看不了视频,仍然提示未安装flash player。重启了机器后仍然是不行。

各种百度google搜索都没有找到办法。后来自己摸索,整好久才发现,原来默认插件安装是PPAPI Plug-in,它不是针对safari浏览器的,而是[……]

全文阅读

sun.misc.Unsafe

Java是个安全的编程语言,它可以防止程序员犯一些低级错误,往往这些错误都是基于内存管理的。但是在Java中仍然有办法故意的犯这些错误——使用Unsafe类。 这篇文章将快速的阐述sun.misc.Unsafe类的public API和少许有意思的用法。

Unsafe类的初始化

在使用前,我们都需要创建一个Unsafe类的实例对象,但不能通过Unsafe unsafe = new Unsafe[……]

全文阅读

精品工具收集(二)

Clover:类似chrome标签的文件夹管理

Hbuilder:国内团队开发的,非常好用的html5、html5+、js、css的IDE,还能和android、ios的webview打通,开发非常便捷高效,强烈推荐

everything:极其快速的搜索软件,可以在几十秒内对整个磁盘的所有文件建索引

MobaXterm命令行终端:比xshell、破解的SecureCRT、putt[……]

全文阅读

eclipse全面提速

你是否经常在等待eclipse的一些操作完成?

eclipse loading

eclipse loading

如果你看到这里,说明答案是yes。如果你苦于eclipse中响应很慢的功能,并且想给eclipse提速让开发更舒服些,就请看看下面的内容。

注意:可能一般人[……]

全文阅读

java中坑爹的getter、setter方法的潜规则

众所周知的java中都会给类的属性写getter和setter方法,以getter方法为例,通常是get+属性的大写首字母+属性剩下的字符组成。比如:有个属性名为name,那么其getter方法名就是getName,如果name是boolean类型,那么getter方法就是isName,当然现在的getter和setter方法都不会自己手写了,一般是通过eclipse或者Intellij idea[……]

全文阅读