博文

目前显示的是标签为“Java”的博文

Java 8的For与Stream的性能差距到底有多大?

Java 8开始引入了Stream流式操作,终于稍微可以像写Python一样写代码了,不用满大街写For语句了,但是因为 这篇文章 的缘故,导致我对它的性能一直抱有怀疑态度。 但是仔细分析示例中的代码,其实会发现虽然它的示例代码中使用了Stream但是其实那个很慢的结果真正大部分的时间都花在了Integer的自动装、拆箱操作上,真正的Java 8应该是怎么写这个代码呢,还是自己动手试验一下好了。 package org.acgeek; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.stream.IntStream; public class ForVsStream { public static void main(String[] args) { List<long> forTest = new ArrayList<>(); List<long> streamTest = new ArrayList<>(); IntStream.range(0, 100).forEach(n -> { int[] a = new Random().ints(5000000, 1, 99999999).toArray(); int e = a.length; int m = Integer.MIN_VALUE; long thisTime = System.nanoTime(); for (int i = 0; i < e; i++) if (a[i] > m) m = a[i]; System.out.println("MAX is " + m); Long testRes = System.nanoTime() - thisTime; forTest.add(te...

在CentOS上配置Solr全文检索引擎

好记性不如烂Blog……为了以防万一我还是记下来 Solr是一个基于Java、lucene的全文检索引擎,很多大的互联网站点都在使用它,本文主要介绍如何在CentOS6上安装Solr 4.5、配置中文分词引擎mmseg4j以及从MySQL数据库中导入数据。 一、安装Java环境 首先需要卸载系统原本的Java环境 yum list installed | grep jdk 我的结果: java-1.6.0-openjdk.x86_64            1:1.6.0.0-1.62.1.11.11.90.el6_4    @updates java-1.6.0-openjdk-devel.x86_64      1:1.6.0.0-1.62.1.11.11.90.el6_4    @updates jdk.x86_64                           2000:1.7.0_09-fcs                  installed 卸载它们 yum -y remove jdk.x86_64 yum -y remove java-1.6.0-openjdk.x86_64 去Oracle的官网下载最新的JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 解压 tar xvzf jdk-7u40-linux-x64.tar.gz 移动下载的文件到/usr/local/ mv xvzf jdk-7u40-linux-x64 /usr/local/jdk1.7.0_40/ 修改系统的环境变量 vim ~/.bash_profile 在末尾加上 export JAVA_HOME=/usr/local/jdk1.7.0_40 e...

今天终于顺利把eclipse的项目导入到IntelliJ IDEA中了

这东西我一直都是没搞定的...今天阴差阳错的尝试居然终于搞定了... 之前一直没搞定主要的原因就在于确实缺少这方面的教材,加上我的IntelliJ IDEA的版本又很高(11.1),导致网上根本没有类似的教材.不过终于让我摸索出来了. 首先自然还是新建项目,然后选择从eclipse中导入已有项目 然后Ctrl+Alt+Shift+S,设置Project Structure: 选择Project,设置好Project的JDK(这一步一般都会在导入项目的时候强制让你去做) 然后设置好你的输出目录,我这里保持默认就可以了 然后切换到Modules,首先把自己已有的框架添加进去,比如我现有的项目用了Spring和Hibernate,那么就直接点击+号,然后把它俩添加进来,设置不用更改,保持默认就可以了。之后再添加Web,更改Web Resource Directories,把第一个项目改为原项目的WebContent目录。 然后这个时候下方应该出现了两个让你Fix一下的错误了,点击它,让它自动生成Artifacts,它会自动的生成一个[项目名称]:war exploded的设置,保持它的设置不用改变就可以了。 理论上它现在应该添加了一个output root下有WEB-INF和Web facet resources的文件夹结构。 然后点击Run,选择Edit Configurations,添加一个Tomcat的路径,Deployment下使用我们刚才添加的那个Artifacts,然后保持默认就可以了…… 然后,如果你的项目是GBK的项目,记得在File-Setting-File Encoding里面把默认的文件编码改为GBK。 这样就应该可以正常的启动由eclipse创建的项目了。

解决Document base not exist or is not a readable directory问题

Java最让我头疼的就是莫名其妙的就没办法使用Eclipse了…… 我已经莫名其妙的出现过无数次这种问题了,偶尔是正在使用中之前可以用,突然就500了,或者是突然就丢掉环境了,完全让人摸不清楚头脑的各种错误让人头皮发麻。 今天早晨就是如此了,早晨还是好好的,突然启动就报告: Document base .metadata\.plugins\org.eclipse.wst.server.coredoes\tmpxxxx not exist or is not a readable directory 找了半天终于发现了一个解释详细的解决方案: http://tdcq.iteye.com/blog/367516 原因是因为:没有正确的配置Server服务。当然,我就不抱怨什么诡异的服务为什么总是自己消失的问题了,这种问题在Tomcat上简直是层出不穷…… 解决方法也大致形同,似乎唯一不同的就是他用的是Tomcat 6.0,而我用的是7.0这点不同了。 不过还是照抄下来一下吧: 1.在Server选项卡中右击Server - Properties - Switch Location,让它变成/Server/Tomcat 7.0 at localhost 2.双击左边的这个Server,勾选上Publish Module Contexts to Separate XML files。 3.在项目上右击 - Properties - Server - 选中Tomcat 7.0 at localhost 重启eclipse,问题解决。 2011/8/31最后修改: 后来发现这个东西就是Tomcat的缓存的问题,只要出现这类的问题,解决方案很简单,在Server上右击,选择Clean,然后就没事了.