- 浏览: 450764 次
- 性别:
- 来自: 北京
博客专栏
-
Java函数式编程
浏览量:41549
最新评论
-
niqingyang:
看到lambda表达式后,感觉Java不再优雅了,还是喜欢面向 ...
Java函数式编程(一) -
tomqyp:
太过危言耸听了,抛开那少比较底层的语言,高级语言中反到是不少都 ...
动态语言已死? -
windshome:
设计这样JVM的人和在真正产品实现里写这样代码的人都是疯子。前 ...
JVM的自愈能力 -
yixiandave:
有多少人把JAVA8用在生产环境了?
JVM的自愈能力 -
ljbupc:
这个好像是1.8版jvm的新特性;1.7以下的不行(JVM-H ...
JVM的自愈能力
文章列表
最近我们介绍了几款日志分析的工具,比如Scribe和LogStash这类的开源项目,以及Splunk这样的企业级工具,还有像SumoLogic和PaperTrail这样的托管服务。你可以使用这些工具从海量的日志数据提取到一些有价值的信息。
不过还有一件 ...
这篇文章正好接上前一年我们做的一次现实环境下不同GC算法性能比较的试验。这次我们仍然进行同样的试验,不过增加了对G1回收器的测试,并且在多个平台进行测试。今年我们测试的垃>圾回收器有如下几个:
- -XX:+UseParallelOldGC
- -XX:+UseConcMarkSweepGC
- -XX:+UseG1GC
###运行环境
我们使用现成的JIRA任务来运行这个测试。选择它的原因非常简单——除去Minecraft(一款著名网游),愤怒的
小鸟,以及Eclipse不说, JIRA应该是最著名的Java应用程序了。并且和别的候选者相比,它更能代表我们日常的业务处理流程——毕 ...
最近,Lukas Eder写了篇_提高开发效率的十个工具_,他在评论里怂恿我也写一下我心目中的比较酷的工具。我决定来试一下,不过我发现要挑出最喜欢的10个工具可不是件容易的事。事实上,现在我的白板上写满了我自己作为一名 ...
我们在使用一些很复杂的系统。我母亲曾说也许电视机后面就藏着个小矮人,每秒钟在屏幕上画出50幅不同的画,不过她并不关心这个(至少她都知道欧洲的电视机每秒是50帧的)。很多人压根儿就不在意身边的电子产品以及软件 ...
一心多用是我的拿手好戏。当我在写这篇博客的时候,我还在为昨天聚会上说过的话感到尴尬,当时大家看我跟看怪物一样。好吧,不过所幸的是我并不孤单——Java 8它也很擅长这口。来看下它是怎么回事。
Java 8中一个关键的 ...
今天花了一整天在跟踪一个问题,每次感觉已经快找到原因的时候发现现象又变了,我觉得从中吸取的教训可以给大家分享一下。
为了重现这个现象,我写了一个简单的例子。在本例中,先初始化了一个map,然后用一个无限循环将一些键值对插入到map里面:
class Wrapper {
public static void main(String args[]) throws Exception {
Map map = System.getProperties();
Random r = new Random();
...
从上个世纪90年代Java诞生之日起,Java的类和资源的加载就一直是个问题。由于它增加了启动和初始化时间,因此这个问题在Java应用服务器上则尤为明显。为了缓解这个问题,大家试过了不同的访问,比如说以exploaded方式部署,但这只对简单的应用有效;还有2001年发明的Java热插拔的机制。启用热插拔的话,你在一个现有的方法内的改动马上就会生效。由于方法的边界限制,这个方法并不是特别有用,通常它只是在调试的阶段使用。对于现在的应用来说,编译,部署以及重启,等待个5到15分钟已经不是什么稀奇事儿了。越大型的应用服务器,这种情况可能就越明显。
存在的问题
一旦某个Java类被类加载器加载了, ...
译注:其实语言都没有高下之分,适合当前工作的就是好语言。不过这位作者在这方面的一些态度的确值得我们学习,人家并不是盲目的乱喷,而是摆出数据,有理有据。本来想说老外在这方面怎么怎么样的,后来想了想,地图 ...
HashMap<K, V>是一个高效通用的数据结构,它在每一个Java程序中都随处可见。先来介绍些基础知识。你可能也知道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里。桶的数量通常要比map中的记录的数量要稍大,这样每个桶包括的值会比较少(最好是一个)。当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用hashCode()对桶的数量进行取模)以及要找的对象。
这些东西你应该都已经知道了。你可能还知道哈希碰撞会对hashMap的性能带来灾难性的影响。如果多个hashCode()的值落到同一个桶内的时候,这些值是存储到一个链 ...
在twitter,需要网络功能的核心模块使用的都是Netty。
比方说:
- Finagle是我们的协议无关的RPC系统,它的传输层是在Netty之上构建的,许多内部的服务都是通过它来实现的,比如说搜索服务。
- TFE(Twitter Front End,Twitter前端)是我们专门的填鸭式反向代理,它使用Netty支撑了大部分面向公众的HTTP及SPDY的流量。
- Cloudhopper每个月都通过Netty向世界各地的数百个移动运营商发送数十亿的短消息。
可能有的人还没听说过Netty,它是一款开源的Java NIO框架,能让你更容易编写出高性能的网络服务器。前一个版本的Net ...
可变长参数列表是Java 5中的一个新特性。如果方法需要传入多个同类型参数的话,这个功能就非常有用。比如说,Java 5之前如果要写一个方法来将所有入参打印到控制台上的话,它的代码会是这样的:
public static void printAll( final Object[] args )
{
for ( int i = 0; i < args.length; ++i )
System.out.println( args[ i ] );
}
方法调用的话会是这样:
printAll( new Object[] { new Intege ...
译注:但见新人笑,哪闻旧人哭。在大家都在兴致勃勃的讨论Java 8的时候,那个早被遗忘的Java 7,或许你从来都没有记得它的好。
Java 8的发布也有一个月了,我相信现在大家都在探索JDK 8中的新特性。但是,在你彻底开始钻研Jav ...
我喜欢新鲜玩意儿,而Java 8里面就有不少。这回我准备介绍一下我的一个最爱——并发计数器。这是一组新的类,用于维护多个线程并发读写的计数器。新的API带来了显著的性能提升,同时还保证了接口的简单易用。
多核时代 ...
本系列文章译自Venkat Subramaniam的Functional Programming in Java
未完待续,后续文章请继续关注[url={{ site.url }}]Java译站[/url]。
列出目录中的文件
用File类的list()方法可以很容易的列出目录中的所有文件的文件名。如果想要获取文件而不止是文件名的话,可以使用它的listFiles()方法。这很简单,难的是怎么去处理这个返回的列表。我们不再使用传统的冗长的外部迭代器,而是使用优雅的函数式来实遍历这个列表。这里我们还得用到JDK的新的CloseableStream接口以及一些相关的高阶函数。
下面这段代码可 ...
复杂的东西我们可不喜欢。一直以来,内存泄露,线程锁,GC调优这些东西处理起来都很痛苦。这三个邪恶的小伙伴带来的性能问题是最难复现的,这也使得修复这些问题有如噩梦一般。如果你不信的话,看一下LinkedIn最近关于性能调优的一篇文章就知道了。
尽管这篇文章很好的剖析了性能调优的过程,但它也很好的证明了这个领域的复杂性。LinkedIn的工程师进行GC调优改善吞吐量和延迟用的是下面这组参数:
-server -Xms40g -Xmx40g -XX:MaxDirectMemorySize=4096m -XX:PermSize=256m -XX:MaxPermSize=256m-XX:NewSi ...