上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 68 下一页
  2013年8月16日
摘要: 在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API.下面我来介绍一个实用的Java类,使用GeneralCacheAdministrator来建立,刷新和管理缓存.GeneralCacheAdministrator类常用的方法有:public Object getFromCache(String key) throws NeedsRefreshException; //从缓存中获取一个key标识的对象.public Object getFromCache(String key, int refreshPeriod) throws NeedsRefreshExcepti 阅读全文
posted @ 2013-08-16 21:49 Ruthless 阅读(7572) 评论(1) 推荐(1) 编辑
  2013年8月13日
摘要: 用CashFilter实现页面级缓存。在OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成pdf格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的压力,而且对于减少web服务器的性能消耗有很显著的效果。这种功能的实现是通过在web.xml中进行配置来决定缓存哪一个或者一组页面,而且还可以设置缓存的相关属性,这种基于配置文件的实现方式对于J2EE来说应该是一种标准的实现方式了。[注]只有客户访问时返回http头信息中代码为200(也就是访问已经成功)的页面信息才能够被缓存。1. 缓存 阅读全文
posted @ 2013-08-13 22:31 Ruthless 阅读(2371) 评论(0) 推荐(0) 编辑
  2013年8月12日
摘要: 如果在jsp中使用如下标签 some jsp content 那么这中间的一段jsp代码将会以key="foobar"缓存在session中,任何其他页面中使用这个key的cache标签都能共享这段存在缓存中的执行结果。考虑一个需求,一个页面是有许多个不同的jsp文件拼出来的,可能在页首有随机的广告,登录用户的信息,系统的即时信息,固定的目录信息等等;这其中可以考虑将固定的目录信息放入缓存中,而其他动态信息则即时刷新;再进一步考虑有时候页面之间的信息是关联的,只有当其中一条信息的内容变化了才需要去刷新。对于这种需求就可以考虑在标签中配置group属性,将不同的具有关联关系的 阅读全文
posted @ 2013-08-12 21:33 Ruthless 阅读(1533) 评论(0) 推荐(0) 编辑
摘要: 一、OSCache提供的缓存标签 这是OSCache提供的标签库中最重要的一个标签,包括在标签中的内容将应用缓存机制进行处理,处理的方式将取决于编程者对cache标签属性的设置。第一次请求到达时,标签中的内容被处理并且缓存起来,当下一个请求到达时,缓存系统会检查这部分内容的缓存是否已经失效,主要是以下几项: 1. 缓存时间超过了cache标签设置的time或者duration属性规定的超时时间;2. cron属性规定的时间比缓存信息的开始时间更晚; 3. 标签中缓存的内容在缓存后又被重新刷新过; 4. 其他缓存超期设定。如果符合上面四项中的任何一项,被缓存的内容视为已经失效,这时被缓存的内容. 阅读全文
posted @ 2013-08-12 21:05 Ruthless 阅读(3283) 评论(0) 推荐(0) 编辑
  2013年7月28日
摘要: 1、cache.memory是否使用内存缓存;值为:true或false。默认为true;如设置为false,那cache只能缓存到数据库或硬盘中。2、cache.capacity缓存的最大数量。默认是不限制,cache不会移走任何缓存内容。负数被视不限制。3、cache.algorithm运算规则。为了使用规则,cache的size必须是指定的。如果cache的size不指定的话, 将不会限制缓存对象的大小。如果指定了cache的size,但不指定algorithm,那它会默认使用:com.opensymphony.oscache.base.algorithm.LRUCache有下面三种规则 阅读全文
posted @ 2013-07-28 17:46 Ruthless 阅读(3811) 评论(0) 推荐(0) 编辑
摘要: OSCache是一个基于web应用的组件,他的安装工作主要是对web应用进行配置,大概的步骤如下:1. 下载、解压缩OSCachehttps://java.net/downloads/oscache/下载合适的OSCache版本,解压缩下载的文件到指定目录。2、新建一个web应用3、将OSCache集成到web项目中: (1)从解压缩目录取得oscache.jar文件放到/WEB-INF/lib或相应类库目录中,jar文件名可能含有版本号和该版本的发布日期信息等。(2)将oscache.properties、oscache.tld放入WEB-INF\class目录(确切说是放在项目的src目录 阅读全文
posted @ 2013-07-28 17:00 Ruthless 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 一、简介Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统运行性能。OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。OSCache是当前运用最广的缓存方案,JBoss,Hibernate,Spring等都对其有支持。Oscache的使用非常方便,特别是jsp cache用的非常广泛。Oscache的文档中也对jsp 阅读全文
posted @ 2013-07-28 16:06 Ruthless 阅读(1277) 评论(0) 推荐(0) 编辑
  2013年7月26日
摘要: CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为该barrier 在释放等待线程后可以重用,所以称它为循环的... 阅读全文
posted @ 2013-07-26 16:54 Ruthless 阅读(2999) 评论(2) 推荐(2) 编辑
摘要: 所谓的原子量即操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题。在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但这样太麻烦。Java5之后,专门提供了用来进行单变量多线程并发安全访问的工具包java.util.concurrent.atomic,其中的类也很简单。package cn.thread;import java.util.concurrent.atomic.AtomicLong;public class AtomicRunnable implemen 阅读全文
posted @ 2013-07-26 16:40 Ruthless 阅读(3187) 评论(3) 推荐(0) 编辑
摘要: Condition的功能类似在传统线程技术中的Object.wait()和Object.natify()的功能,传统线程技术实现的互斥只能一个线程单独干,不能说这个线程干完了通知另一个线程来干,Condition就是解决这个问题的,实现线程间的通信。比如CPU让小弟做事,小弟说我先歇着并通知大哥,大... 阅读全文
posted @ 2013-07-26 16:11 Ruthless 阅读(5612) 评论(3) 推荐(0) 编辑
摘要: 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。对于此模型,应该明确一下几点:1、生产者仅仅在仓储未满时候生产,仓满则停止生产。2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。3、当消费者发现仓储没产品可消费时候会通知生产者生产。4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。package cn.thread;import java.util.concurrent.BlockingQu 阅读全文
posted @ 2013-07-26 14:33 Ruthless 阅读(69235) 评论(12) 推荐(3) 编辑
  2013年7月25日
摘要: 对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。 这里要特别说明一点的是,阻塞栈是Java6的新特征。、 Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。 下面看一个简单例子:package cn.thread;import java.util.concurrent.BlockingDeque;import java.util.concurrent.LinkedBlockingDeque;/** * 阻塞栈 * *. 阅读全文
posted @ 2013-07-25 17:08 Ruthless 阅读(9520) 评论(3) 推荐(1) 编辑
摘要: 阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。 有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。 java.util.concurrent.BlockingQueue继承了java.util.Queue接口,可以参看API文档。package cn.thread;import java.util.concur 阅读全文
posted @ 2013-07-25 17:03 Ruthless 阅读(3809) 评论(0) 推荐(0) 编辑
摘要: 简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。概念Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。在这个停车场系统中,车位是公共资源,每辆 阅读全文
posted @ 2013-07-25 16:53 Ruthless 阅读(15069) 评论(0) 推荐(3) 编辑
摘要: 在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。 Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock,详细的API可以查看JavaAPI文档。 下面这个例子是在文例子的基础上,将普通锁改为读写锁,并添加账户余额查询的功能,代码如下:package cn.thread;import java.ut 阅读全文
posted @ 2013-07-25 11:35 Ruthless 阅读(1992) 评论(1) 推荐(1) 编辑
摘要: 在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。Condition: Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。Lock: Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定 阅读全文
posted @ 2013-07-25 11:22 Ruthless 阅读(3394) 评论(0) 推荐(1) 编辑
摘要: 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执行Callable任务后,... 阅读全文
posted @ 2013-07-25 10:29 Ruthless 阅读(7029) 评论(0) 推荐(0) 编辑
摘要: Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.conc... 阅读全文
posted @ 2013-07-25 09:48 Ruthless 阅读(4662) 评论(0) 推荐(0) 编辑
  2013年7月24日
摘要: Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。public volatile boolean exit = false;在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值.volatile关键字用于声明简单类型变量,如int、float、boolean等数据类型。如果这些简单数据类型声明为volatile,对它们的操作就会变成原 阅读全文
posted @ 2013-07-24 21:28 Ruthless 阅读(2595) 评论(3) 推荐(1) 编辑
摘要: 对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。 追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高性能。 在上个例子的基础上,对oper方法做了改动,由同步方法改为同步代码块模式,程序的执行逻辑并没有问题。package cn.thread;/** * 线程同步方法 * * @author 林计钦 * @version 1.0 2013-7-24 上午10:12:47 */public class ThreadSynchronizedCode . 阅读全文
posted @ 2013-07-24 10:37 Ruthless 阅读(4565) 评论(0) 推荐(0) 编辑
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 68 下一页