Java8 性能提升: LongAdder vs AtomicLong

本文由 ImportNew.com - 吴功伟 翻译自 palominolabs

即将到来的Java8给在Java虚拟机上最广泛使用的语言带来了大量的新特性。或许最多提到的是Lambdas表达式,Scala和JRuby的爱好者们对此发出了终于来了的感叹。但是对于多线程应用更为重要的类是新增的LongAdder和DoubleAdder,在多线程下,原子实现比AtomicInteger和AtomicLong提供了更优越的性能。
一些简单的指标阐述了AtomicLong和LongAdder之间的性能不同点——测试下面这些指标,我们使用了可以访问Intel Xeon E5-2670所有8个核的m3.2xlarge EC2实例。

阅读全文

java lambda深度研究

Java 8发布有一段日子, 大家关注Java 8中的lambda可能更早, 对Java 8中这一最重要的语言变化也基本熟悉了。这篇文章将深入研究Java 8中的lambda特性以及Stream接口等, 讨论一些深层次的技术细节。
比如, 一个lambda表达式序列化反序列化后, 对捕获的上下文变量的引用的情况。 Lambda表达式递归。 类方法的引用和实例方法的引用的区别。 菱形继承的问题。 Stream接口的Lazy和eager模式。 Lambda的性能。

阅读全文

如何移除Maven pom.xml文件中没用的属性

在使用Maven管理项目时, 经常会增加一些属性在pom.xml文件中。 抽取这些属性的好处之一就是方便集中管理,可以容易升级依赖的版本。 有些依赖因为代码的重构而丢弃了,但是它使用的属性可能会遗漏在properties中。 如果在几十条的属性中找到不用的属性, 这是一个问题。
目前没有maven插件可以做这个How to find unused properties in a pom. 不过上面的链接提供了一个脚本如何查找到未用的属性, 然后手工删除。

阅读全文

调优历程: 我是怎样将一个系统的性能提高20倍的?

调优历程: 我是怎样将一个系统的性能提高20倍的?
最近从米国接收一个新的项目, 项目使用Spring + CXF 处理遵循行业规范的消息,并根据一定的规则将消息转发给其它的一个或者多个产品。
因为刚接手, 先对其进行功能的测试和测试其benchmark。 结果Beanchmark在AWS x3.xlarge机器上10个并发只能达到几十个TPS。
基于我前面的文章的对tomcat和其它框架的性能数据, 可以很自信的说, 这不科学。
经过一番紧张的基于性能考虑的调整,单台服务器终于达到了100个并发每秒能处理3000 多个的请求。

阅读全文

Java 8 lambdas读书笔记

Java 8 Lambdas是O'Reilly 2014年3月出版的一本介绍最新Java Lambda技术的书。网上评价也不错。正好我需要找一本全面介绍Java Lambda数据, 来整理一下我脑海中的关于Java Lambda非系统的知识点。

Lambda对于我来讲,并不是一个很新的技术。因为微软很早就在C#中加入了Lambda的特性。 而Java Lambda的语法和C#的语法非常的相像。 这篇文章算是对Java Lambda语法的一个整理。

这本书一共十个章节。 第一章是简单介绍,没有实质内容。 第二章主要介绍了Java Lambda的语法。第三章介绍了Stream接口。第四章介绍了Functional Interface。第五章 首先介绍了方法引用,然后主要介绍了集合类新的Stream处理方式。 第六章 介绍了数据的并行处理。 第七章介绍了测试,调试和重构技术。第八章介绍了使用lambda的设计和架构原则。
第九章介绍了并发编程中的Lambda的应用。 第十章 前瞻,无实质内容

阅读全文

Web开发利器:介绍一款快速开发套件 (Node, Grunt, Bower和Yeoman)

最近看到javacodegeeks上的一篇文章Node, Grunt, Bower and Yeoman – A Modern web dev’s Toolkit, 文章介绍了一个web开发的工具集。 正好我今年以来也在使用这套工具集开发Web应用程序,也一直想写一篇文章总结一下这套开发套件的用法,借此机会,参考这篇文章,总结一下我使用这套工具的经验。
在的文章中,作者使用angular 框架开发,而我,遵循公司的选择,使用Ember.js作为我的开发框架。同时使用Compass进行SCSS的编译。这些地方会有所不同。

像Node.js, 已经不算新鲜的玩意了。Node.js第一个版本于2009年发布,现在有很多的公司也采用Node作为后端开发工具。 至于Node.js是否代表先进的开发方向, 目前还有很大的争论。但是基于Node.js的生态圈已经形成,一大波的优秀的的Node.js 模块已经涌现。但是像Grunt, Bower等工具,也有不少的朋友并不了解。所以这篇文章特别介绍一下它们。

阅读全文

Javacodegeeks网站上关注度最高的几篇文章

Javacodegeeks 网站提供了一系列优秀的关于Java语言的论文。 本文整理罗列了关注度比较高的几篇文章。很多优秀的文章已经被翻译成了中文,读者可以对照着阅读。

  • 115 Java Interview Questions and Answers – The ULTIMATE List 由Sotirios-Efstathios Maneas发表于2014年4月。 文章列出了常见的Java面试题,但是我觉得关于Swing/AWT的问题可以删除了,还有多少现代的公司使用这种技术? 倒是可以将泛型,反射等技术的问题加上。 很遗憾的是这篇文章并没有设计并发编程的问题。

中文翻译请参考: 115个Java面试题和答案(上), 115个Java面试题和答案(下)
importnew还翻译了DZone网站的另外一篇Java面试题相关的文章: Java面试参考指南(一)Java面试参考指南(二)

中文翻译请参考: Java 8新特性终极指南

中文翻译请参考: 关于Spring的69个面试问答——终极列表

CSS的几个属性display,float,clear,overflow,visibility

整理了几个CSS常用的属性。

display属性:block/inline/none

display:block(作用是把行属性标签显示成块属性标签,可以设置宽高) ;
display:inline(作用是把块属性标签显示成行属性标签,这时块属性标签就不能设置宽高啦);
display:none(作用是使所控制的标签不显示)
visibility:hidden(是设置元素的框的不可见,但是在布局中的位置是不变的)
它和display:none的区别就在于后者不会占用那个位置,下一个元素会直接覆盖它,而前者是会占用那个布局,只是不显示内容,是 一片空白;并且下载的时候对于display:none就不会把不显示的元素给下载下来,而visibility:hidden则会把不显示的元素给下 载下来;

阅读全文

Sass基础

翻译自Sass官方文档: Sass Basics.

在使用Sass之前, 你需要在你的项目中设置一下。 如果你只是想浏览本页内容,没问题,继续。 但是还是强烈建议你首先安装Sass。 看这里的文档你可以了解怎么设置Sass。

预处理

Css自己本身很有趣,但是样式单变得越来越大,越来越复杂, 变得很难维护。 这真是预处理器要做的。 Sass让你使用CSS不存在的特性,比如变量,嵌套,混合(mixin), 继承等其它90个好的玩意来让CSS编写变得更有趣。

一旦你开始使用Sass, 它会预处理你的Saa文件, 把它存为一个正常的CSS文件, 用在你的网站上。

阅读全文