`
文章列表
《目录》 一、安装Jenkins 二、配置Jenkins 三、自动编译 四、自动测试 五、自动部署 一、安装Jenkins 地址http://mirrors.jenkins-ci.org/ 下载适合的Jenkins 版本。 Windows 最新稳定版的Jenkins 地址为:http://mirrors.jenkins-ci.org/windows-stable/jenkins-1.409.1.zip 把Jenkins 1.409.1 版解压,把得到的war 包直接扔到tomcat 下,启动tomca ...
Maven 相关打包插件   Packaging的含义 任何一个Maven项目都需要定义POM元素packaging(如果不写则默认值为jar)。顾名思义,该元素 决定了项目的打包方式。实际的情形中,如果你不声明该元素,Maven会帮你生成一个JAR包;如果 ...
Mavne插件--关于版本控制   一个项目到一个阶段后,就需要发布一个正式的版本(release版本)。一次正式的发布需要这样一些工作: 在trunk中,更新pom版本从1.0-SNAPSHOT到1.0 对1.0打一个svn tag 针对tag进行mvn deploy,发布正式版本 更新trunk从1.0到1.1-SNAPSHOT 你可以手工一步步的做这些事情,无非就是一些svn操作,一些pom编辑,还有一些mvn操作。但是你应该明白,手工做这些事情,一来繁琐,而来容易出错。因此这里我介绍使用maven插件来自动化这一系列动作。   在POM中 ...
分发构件至远程仓库 上一篇文章中已将Maven私服搭建起来. 这篇文章主要涉及到将本地项目构件分发至远程仓库中. mvn install  会将项目生成的构件安装到本地Maven仓库, mvn deploy  用来将项目生成的构件分发到远程Maven仓库。本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。   你需要在你的项目pom.xml中加入 <distributionManagement> <repository> <id>nexus-releas ...
Maven安装   下载地址:http://maven.apache.org/download.html 下载(此版本为3.0.4):wget http://mirror.bjtu.edu.cn/apache/maven/binaries/apache-maven-3.0.4-bin.tar.gz 解压安装:tar -xvzf apache-maven-3.0.4-bin.tar.gz maven的环境配置: vim /etc/profile 中 添加  export ...
 本文对目前数种分布式文件系统进行简单的介绍。当前比较流行的分布式文件系统包括:Lustre、Hadoop、MogileFS、FreeNAS、FastDFS、NFS、OpenAFS、MooseFS、pNFS、以及GoogleFS。   Lustre( www.lustre.org )   lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护。该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数量存储系统。    lustre是开放源代码的集群文件系统,采取GPL许可协议,目前在集群计算机里,计算机与 ...
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)       Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。       轻量级锁也是一种多线程优化,它与偏向锁的区别在于,轻量级锁是通过CAS来避免进入开销较大的互斥操作,而偏向锁是在无竞争场景下完全消除同步,连CAS也不执行(CAS本身仍旧是一种操作系统同步原语,始终要在JVM ...
这个问题的讨论来自内部的一个关于“多线程环境下使用Hashmap的安全问题”的讨论,HashMap多线程的问题之前已经提过一次,见之前的blog .本篇文章主要讨论多线程下race condition的问题。以下内容部分引用自内部邮件: 错误代码: 定义成员变量 private static Map cachedMap = new HashMap(7000); private static Boolean firstInvoke = true; 程序是设想在第一次开始对该map变量进行初始化 线程1: Public Object getMyValue( ...
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的.我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全我比你更有把握. static DataSource ds = null; public static DataSource getDataSource(){ if (ds == null){ synchronized (this .getClass()){ if (ds == null) ds = xxx; } } return ...
前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特 性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并详细介绍各工具的使用方法。        需要监测的数据:(内存使用情况 谁使用了内存 GC的状况) 内存使用情况--heap&PermGen @ 表示通过jmap –heap pid 可以获取的值 # 表示通过jstat –gcutil pid 可以获取的值 ...
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与 monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在 较短 ...
java application项目(非web项目) 改进前: -Xms128m -Xmx128m -XX:NewSize=64m -XX:PermSize=64m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=78 -XX:ThreadStackSize=128 -Xloggc:logs/gc.log -Dsun.rmi .dgc .server .gcInterval =3600000 -Dsun.rmi .dgc .client .gcInterval =36000 ...
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略 , 调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为 复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各 个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见GC种类及如何选择 )。本文将注重介绍JVM、GC的一些重要参数的设置来提高系统的性能。        JVM ...
JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类        现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几 ...
java内存组成介绍:堆(Heap)和非堆(Non-heap)内存        按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方 ...
Global site tag (gtag.js) - Google Analytics