Ehcache源代码下载

Ehcache源代码下载分为以下几种方式:

一,直接下载或者Maven版本库方式。根据笔者的经验,第1)种方式可能下载不了,建议用后面的方式。

1)      直接下载,直接下载的网址为http://ehcache.org/downloads/catalog

2)      Maven 版本库,网址为:http://oss.sonatype.org/content/repositories/sourceforge-releases/net/sf/ehcache/ 

3)      Maven 快照库,网址为:http://oss.sonatype.org/content/repositories/sourceforge-snapshots/net/sf/ehcache/

 

二,SubVersion版本库下载方式

SubVersion是一个版本控制库,用来管理源代码,建议下载源代码之前先下载SubVersion控制库。下载完以后,通过SubVersion客户端来下载管理源代码。具体来说,分为以下几种情况:

1)  Web方式访问,网址为:http://svn.terracotta.org/svn/ehcache/trunk/

2)  匿名方式检出源代码,url为“$ svn checkout http://svn.terracotta.org/svn/ehcache/trunk ehcache”,这种方式代码修改是没办法提交的。

3)  开发人员检出源代码,url为“$ svn checkout https://svn.terracotta.org/repo/ehcache/trunk ehcache”

4)  如果需要提交代码,用如下命令提交,url为“$ svn commit –username your-username -m “A message””

5)  访问客户端是在企业防火墙后面的,而企业防火墙阻止了http链接,可以采用(3)方法,用开发人员检出方式,因为开发人员检出方式是https协议。

6)  SubVersion客户端可以通过代理访问版本库,只是需要做一些配置。首先,编辑”servers”这个配置文件以明确使用哪个代理。这个文件不同的操作系统的位置不同,LINUX和UNIX操作系统的位置是”~/.subversion”,WINDOW操作系统的位置是 “%APPDATA%\Subversion”(注意这是一个隐藏文件)。

这个文件有描述信息告诉你如何配置,如果没有这个文件,用subversion客户端随便执行一个命令,就会自动生成这个文件。

例子:可以如下方式配置文件:

[global]
http-proxy-host = your.proxy.name
http-proxy-port = 3128

 

为什么我们用Ehcache?

Ehcache是java非常常用的缓存工具,它配置简单,使用方便,而且提供了多种策略供用户选择。相信很多java项目都会使用它,我们的项目就是其中一个。在逐渐使用这个工具的过程中,我发现Ehcache本身作为一个项目,从架构框架到代码也是非常优秀的。换句话说,如果国内某个公司来做这样一个缓存工具,不一定甚至肯定达不到Ehcache的水平。

那么从这两个方面来单独介绍下,首先说代码框架,说它是好的框架,主要包括以下几个方面:

一,丰富的API接口,Ehcache可以作为hibernate的二级缓存,也可以单独使用,单独使用时,可以根据静态模板配置,也可以动态配置。对于每个Cache,我们可以监听它的增加和删除事件,对于每个Element,我们同样可以。

二,不断改良的功能,如果查看Ehcache的官方网站,我们发现最新版本的Ehcache是2,5,x,它支持哪些功能呢?你会发现它支持更丰富的分布式部署,支持BigMemory,甚至支持Ruby了。这在前面比较老的版本,是不存在的,后面的版本逐步完善的。用时髦的话说,叫“持续改进”。

附Ehcache版本列表

Ehcache 2.5.x

Ehcache 2.4.x

Ehcache 2.0-2.3

Ehcache 1.7.1

Ehcache 1.6

Ehcache 1.5

Ehcache 1.4

Ehcache 1.3.0

Ehcache 1.2.4

Ehcache 1.2.3

Ehcache 1.1

三,良好的扩展性,不用举例,第二条不断改良的功能,便可知,一个糟糕的架构,后面几乎不可能再优化,不断的优化,只能带来不断的Bug。

再从代码细节来说,Ehcache给了我个人很大的思考,我们自己写代码,总是有好多细节,理所当然的遗漏,比如线程数过多,内存溢出,等等等等。而Ehcache,则理所当然的考虑方方面面,下面列几个代码细节,算是给自己提醒,可以时刻看齐。

一,同步保护,我在调用Ehcache的put和get方法时,担心这两个操作冲突,造成数据异常,所以我封装的方法中,做了同步保护。后来看看Ehcache的代码,发现每次put和get,它都做了同步保护。

二,工厂模式的使用,Ehcache工厂模式的应用,实际可以作为学习这种设计模式的教材。

三,线程控制,Ehcache虽然提供了高速缓存,而且提供了文件存储,但是它本身并非无限制的开线程处理。每个Cache有一个永久线程,当Ehcahe启动的时候,这个线程就建立了。每次put操作,都如同一个“生产者-消费者”模式,生产者put元素,消费者根据配置策略决定有的缓存,有的持久化。