AppStore中极客必备的十个应用

最近,Lukas Eder写了篇提高开发效率的十个工具,他在评论里怂恿我也写一下我心目中的比较酷的工具。我决定来试一下,不过我发现要挑出最喜欢的10个工具可不是件容易的事。事实上,现在我的白板上写满了我自己作为一名程序员,经常会使用的那些很酷的工具的名字。最后我发现每一类我都能列举出个前10名来。因此,为了丰富下Lukas Eder的那个列表,我决定从极客们最想要安装到他们的苹果设备上的十个工具说起。

Published: 30 Apr 2014

一位码农的几点思考

我们在使用一些很复杂的系统。我母亲曾说也许电视机后面就藏着个小矮人,每秒钟在屏幕上画出50幅不同的画,不过她并不关心这个(至少她都知道欧洲的电视机每秒是50帧的)。很多人压根儿就不在意身边的电子产品及软件。不过科技的渗透将是大势所趋。电子设备会更加便宜,编程会更加简单,很快厕纸都会嵌入一次性的电脑在里面了(再配上一个好的应用)。脸部识别不再是NSA,CIA,KG或者Mosad的专利,科技的传播也不再仅限于像Facebook,Google这样的大公司了。商店安装了摄像头以及人脸识别软件后可以识别出回头客,有助于提升商店的销量。人们开始习惯这些,我们搞IT的当然也一样,对吧?

Published: 29 Apr 2014

Java 8并行操作的性能分析

一心多用是我的拿手好戏。当我在写这篇博客的时候,我还在为昨天聚会上说过的话感到尴尬,当时大家看我跟看怪物一样。好吧,不过所幸的是我并不孤单——Java 8它也很擅长这口。来看下它是怎么回事。

Published: 28 Apr 2014

Java程序挂掉的几种可能

今天花了一整天在跟踪一个问题,每次感觉已经快找到原因的时候发现现象又变了,我觉得从中吸取的教训可以给大家分享一下。

Published: 27 Apr 2014

关于类加载器内存泄露的分析

从上个世纪90年代Java诞生之日起,Java的类和资源的加载就一直是个问题。由于它增加了启动和初始化时间,因此这个问题在Java应用服务器上则尤为明显。为了缓解这个问题,大家试过了不同的访问,比如说以exploaded方式部署,但这只对简单的应用有效;还有2001年发明的Java热插拔的机制。启用热插拔的话,你在一个现有的方法内的改动马上就会生效。由于方法的边界限制,这个方法并不是特别有用,通常它只是在调试的阶段使用。对于现在的应用来说,编译,部署以及重启,等待个5到15分钟已经不是什么稀奇事儿了。越大型的应用服务器,这种情况可能就越明显。

Published: 26 Apr 2014

TIOBE是在误导大家,Java其实并没有衰落

译注:其实语言都没有高下之分,适合当前工作的就是好语言。不过这位作者在这方面的一些态度的确值得我们学习,人家并不是盲目的乱喷,而是摆出数据,有理有据。本来想说老外在这方面怎么怎么样的,后来想了想,地图炮还是少开,毕竟这么说有失偏颇。

Published: 25 Apr 2014

Java 8:HashMap的性能提升

HashMap是一个高效通用的数据结构,它在每一个Java程序中都随处可见。先来介绍些基础知识。你可能也知道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里。桶的数量通常要比map中的记录的数量要稍大,这样每个桶包括的值会比较少(最好是一个)。当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用hashCode()对桶的数量进行取模)以及要找的对象。

Published: 24 Apr 2014

Twitter:使用Netty 4来减少GC开销

在twitter,需要网络功能的核心模块使用的都是Netty。 比方说:

Published: 23 Apr 2014

Java可变参数的性能分析

可变长参数列表是Java 5中的一个新特性。如果方法需要传入多个同类型参数的话,这个功能就非常有用。比如说,Java 5之前如果要写一个方法来将所有入参打印到控制台上的话,它的代码会是这样的:

Published: 22 Apr 2014

Java 8?还记得那年大明湖畔的Java 7吗?

译注:但见新人笑,哪闻旧人哭。在大家都在兴致勃勃的讨论Java 8的时候,那个早被遗忘的Java 7,或许你从来都没有记得它的好。

Published: 21 Apr 2014