- 浏览: 34875 次
- 性别:
- 来自: 上海
最新评论
文章列表
[置顶] 博客文章声明
- 博客分类:
- 声明
1.本博客的大部分文章,均是从网络收集整理,有的可能没有标注出处,如果有侵权请联系我,我马上删除或者设置成私有。
2.本博客的目的是为了学习,相当一个笔记本。有一些排版问题,影响大家心情也请见识。有时间我会好好整理。
ehcache (四)以上例子综合应用代码
- 博客分类:
- WEB
代码说明:
1.junit测试入口,UserServiceTest
其中userImpl的缓存是通过annotation方式实现的,
userImpl2是通过AOP方式实现。
2.TestController
是通过WEB方式的测试方式,返回页面会报404,但是不重要,因为我没配置返回页面。只要看控制台输出即可。
第一次输出:
stdo
0
1
2
3
4
15
可以看到参数传“15”的时候后面四次走的是缓存。如果刷新页面再次访问,那么输出只有:
stdo
说明所有请求都走的缓存。
3.EhCacheImpl
是直接通过注入cache对象,编程方式操作缓存。
路径和之前几篇文章略有不同,但是原 ...
ehcache缓存对象(三)-手动编程
- 博客分类:
- WEB
通过上面的文章可以知道如何缓存一个方法的返回值,但是如果想缓存任意一个对象,或者根据一定条件才决定 要不要读取缓存怎么办?那就只能通过手动编程的方式了,即调用cache对象的put,get等API。
实现方式就是把cache的bean注入到具体的方法中。比如http://lastsoul.iteye.com/admin/blogs/2246566文章中的simpleCache对象
package com.temobi.cache.service.Impl;
import java.util.List;
import javax.annotation.Resource;
impo ...
缓存一个方法的返回值,除了上篇文章的AOP方式,也可以通过手动的在某个方法上面加一个annotation的方法来实现,比AOP更加灵活,比如有些方法命名没有规律,不好AOP。缺点是侵入了方法内部,要在方法上面写annotation。
实现方法是在基于上篇文章[url] http://lastsoul.iteye.com/admin/blogs/2246566[/url]的基础上,在spring-ehcache.xml上加上:
<!-- 打开注解驱动 -->
<cache:annotation-driven/>
<!-- spring的缓存管理器,他会调用eh ...
对象缓存就是将查询的数据,添加到缓存中,下次再次查询的时候直接从缓存中获取,而不去数据库中查询。
对象缓存一般是针对方法、类而来的,结合Spring的Aop对象、方法缓存就很简单。这里需要用到切面编程,用到了Spring的MethodInterceptor
代码如下:
package com.last.cache.ehcache.filter;
import java.io.Serializable;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.aopalliance.inter ...
页面缓存主要用Filter过滤器对请求的url进行过滤,如果该url在缓存中出现。那么页面数据就从缓存对象中获取,并以gzip压缩后返回。其速度是没有压缩缓存时速度的3-5倍,效率相当之高!其中页面缓存的过滤器有CachingFilter,一般要扩展filter或是自定义Filter都继承该CachingFilter。
CachingFilter功能可以对HTTP响应的内容进行缓存。这种方式缓存数据的粒度比较粗,例如缓存整张页面。它的优点是使用简单、效率高,缺点是不够灵活,可重用程度不高。
EHCache使用SimplePageCachingFilter类实现Filter缓存。该类继承自C ...
页面缓存
转自:http://haohaoxuexi.iteye.com/blog/2121782
目录
1 SimplePageCachingFilter
1.1 calculateKey
1.2 可配置的初始化参数
1.2.1 cacheName
1.2.2 blockingTimeoutMillis
2 SimpleCachingHeadersPageCachingFilter
3 ...
两个线程如何顺序执行
- 博客分类:
- 多线程
先看下面的例子:
public class MyThread1 extends Thread {
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println(i);
}
System.out.println();
}
}
public class MyThread2 extends Thread {
public MyThread2(String name) {
super(name);
}
@Override
public voi ...
文件:MyBatisGenerator 下载附件或者从以下地址下载
地址:http://pan.baidu.com/disk/home#dir/path=%252F%25E6%2588%2591%25E7%259A%2584%25E6%2596%2587%25E6%25A1%25A3
1.打开‘MyBatis_Generator_1.3.1.zip’文件并解压解压为2个文件夹
2.拷贝‘features’和‘plugins’ 文件夹到 ‘eclipse’的安装目录下,如果已经存在这两个文件夹,则只需将这两个文件夹下的文件分别拷贝进去。
3.重新启动eclipse.
注意:
在myba ...
定时任务-quartz的使用,实现可页面化管理
- 博客分类:
- WEB
使用spring+quartz实现定时任务的页面化管理。主要特点:
1.时间表达式等信息配置在数据库中,从而实现页面化管理。
2.可以手动执行或者停止单个任务,也可以使一个任务加入或者移出自动运行列表。
下面开始介绍用法,在这之前先说明框架的版本。spring3.2.4+quartz1.6.0
一.配置文件
只需要在spring的配置文件中加入:
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
< ...
本文多参考自:http://www.360doc.com/content/05/0803/23/73_4468.shtml
log4j 环境包括三个主要组件:
logger(日志记录器):控制要启用或禁用哪些日志记录语句。可以对日志记录器指定如下级别: ALL 、DEBUG 、 INFO 、 WARN 、 ERROR , FATA或 OFF ...
log4j-日志分级输出
- 博客分类:
- LOG
Apache Log4j 架构
Apache Log4j是当前在J2EE和J2SE开发中用得最多的日志框架(几乎所有项目都用它),因为它具有出色的性能、灵活的配置以及丰富的功能,并且在业务有特殊的要求时,可以使用自定义组件来代替框架中已有的组件来满足要求。
log4j组件介绍
Log4j主要有三个组件:
•Logger:负责供客户端代码调用,执行debug(Object msg)、info(Object msg)、warn(Object msg)、error(Object msg)等方法。
•Appender:负责日志的输出,Log4j已经实现了多种不同目标的输出方式,可 ...
如果要使用PLSQL工具来连接数据库,首先要安装ORACLE客户端,然后去配置连接串。
如果本地没有装数据库,就要单独装客户端.
第一步:
安装plsqldevlop和客户端
如,客户端的安装路径是 D:\Program Files\instantclient ...
equals使用总结
- 博客分类:
- java基础
一、equals和==
1.equals和==的区别:前者比较内容,后者比较地址。
2.equals比较内容,但是需要覆盖这个方法,设定比较规则,JDK有一些类默认已经覆盖过了oject类的equals()方法,这些类有:java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)
3."a"和"a "用equals比较是false,也就是说有没有空格,内容是不同的(地址也不同)。
二、常量池
Java为了提高性能,为八种基本类型和String类提供了对象池机制,当然Java的八种基本 ...
引用http://eneasy.iteye.com/blog/174893
整理自 《java与模式》阎宏编著
1.意图:
定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模版方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。
2.类图:
3.原理:
抽象模板角色(AbstractClass):给出一个具体的方法,称为模版方法,它定义了整个算法的逻辑骨架,而算法的可变部分定义为抽象方法或者提供默认实现,将实现延迟到子类中。
具体模板角色(ConcreteClass):实现抽象模板所定义的可变 ...