- 浏览: 57361 次
- 性别:
- 来自: 北京
最新评论
文章列表
《目录》
一、安装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编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方 ...