Nginx-1.11.3 windows版本下载
由于官网的下载总是会出现网络错误问题,所以上传到这里提供大家一起下载。
zk+sptingmvc+ibatis 项目案例
这个是一个简单的zk项目案例,对于初学者来看可以加深对zk的学习。 里面有数据库的脚本需要导入到 oracle 10g(文件名 sql.dmp)
zk+sptingmvc+ibatis 系统
zk+sptingmvc+ibatis 系统
jquery邮件发送控件
jquery邮件发送控件
junit使用指南及作业规范
1. JUNITJUNIT 总览 ................................ ................................ ................................ ................................ ... 3
1.11.11.1 简介 ................................ ................................ ................................ ................................ ....... 3
1.21.21.2 特性 ................................ ................................ ................................ ................................ ....... 3
1.31.31.3 适用对象 ................................ ................................ ................................ ............................... 3
2 JUNITJUNIT 使用 ................................ ................................ ................................ ................................ ... 3
2.12.12.1 JUNITJUNIT JUNIT 3.X3.X3.X使用 ................................ ................................ ................................ ......................... 3
2.1.12.1.12.1.12.1.12.1.1 下载与安装 下载与安装 ................................ ................................ ................................ ...................... 3
2.1.22.1.22.1.22.1.22.1.2 使用方法 ................................ ................................ ................................ .......................... 4
2.1.2.12.1.2.12.1.2.12.1.2.12.1.2.12.1.2.12.1.2.1 基本流程 (我们一般都是这么写) ................................ ................................ ................... 4
2.1.2.22.1.2.22.1.2.22.1.2.22.1.2.22.1.2.22.1.2.2 重要概念和类 (你必须了解的东西) ................................ ................................ ............... 5
2.1.2.32.1.2.32.1.2.32.1.2.32.1.2.32.1.2.32.1.2.3 JUNIT JUNIT 固件的安装与拆除 (测试方法启动和结束之前要做的) (测试方法启动和结束之前要做的) ................................ .... 6
2.1.2.42.1.2.42.1.2.42.1.2.42.1.2.42.1.2.42.1.2.4 Eclipse Eclipse 中使用 junit junitjunit (有了开发工具对 (有了开发工具对 junit junitjunit 的支持后) ................................ ................. 8
2.22.22.2 JUNITJUNIT JUNIT 4.X4.X4.X使用 ................................ ................................ ................................ ....................... 12
2.2.12.2.12.2.12.2.12.2.1 下载与安装 下载与安装 ................................ ................................ ................................ .................... 12
2.2.22.2.22.2.22.2.22.2.2 使用方法 ................................ ................................ ................................ ........................ 13
2.2.2.12.2.2.12.2.2.12.2.2.12.2.2.12.2.2.12.2.2.1 与 3.x3.x3.x版本的异同 (看谁更简单) (看谁更简单) ................................ ................................ .................. 13
2.2.2.22.2.2.22.2.2.22.2.2.22.2.2.22.2.2.22.2.2.2 常用注解 (体验 annotationannotationannotationannotationannotationannotationannotation annotationannotation的简单便捷) 的简单便捷) ................................ ................................ ...... 13
2.2.2.32.2.2.32.2.2.32.2.2.32.2.2.32.2.2.32.2.2.3 4.x4.x4.x新特性实战 (实践出真知) ................................ ................................ ....................... 14
3 作业规范 ................................ ................................ ................................ ................................ ...... 21
4 附录 ................................ ................................ ................................ ................................ .............. 22
4.14.14.1 下版计划 ................................ ................................ ................................ ............................. 22
4.24.24.2 修订记录 ................................ ................................ ................................ ............................. 23
4.34.34.3 参考文献 ................................ ................................ ................................ ............................. 23
java缓存实现与spring托管
0. 文档介绍 2
0.1 文档目的 2
0.2 文档范围 2
0.3 读者对象 2
0.4 参考文献 2
0.5 术语与缩写解释 2
1. 概述 3
1.1背景 3
1.2 主要特征 3
1.3环境 5
1.4下载资源 5
2. EHCACHE页面缓存的配置 5
2.1 EHCACHE的类层次模型 5
2.2环境搭建 6
2.3 EHCACHE配置文件中元素说明 8
2.4 在工程中单独使用 10
3. 在SPRING中运用EHCACHE 17
4. 分布式缓存集群环境配置 19
4.1 集群配置方式 19
5. 测试用例 28
hibernate二级缓存
Hibernate二级缓存
在一个数据库系统中,如果缓存设置的合适,那么可以极大的提高系统的效率,Hibernate作为一个ORM工具
提供了缓存的机制,包括一级(Session级)缓存和二级(SessionFactory级)缓存。这里主要总结一下二级缓存。
1.首先需要在hibernate.cfg.xml中配置,当然需要导入缓存的jar包
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
hibernate.cache.use_query_cache必须配置,如果想缓存使用findall()、list()、Iterator()、createCriteria()、
createQuery()等方法获得的数据结果集。
Java基础面宝典
解析:虽然不知道什么是跨平台也可以使用Java语言进行编程,但是对于一个Java编程员来说,理解跨平台特性能够更深入掌握Java语言,所以企业中往往要求应聘者至少理解这个特性。
参考答案:Java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上都能运行。
JAVA缓存技术_深入了解
Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问
凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache
FormFile上传图片
早前我做JSP项目的时候,用过jspSmartUpload这个组件来上传和下载图片,但是现在做的是SSH整合的项目,而struts又提供了一个FormFile类来做文件的上传和下载,如果还用jspSmartUpload来做的话,有点说不过去,于是试着使用FormFile,在把我的代码贴出来之前,先做几个说明。
1、 图片的保存
图片可以以二进制形式的字段blob保存在数据库(我用的是MYSQL),但是我使用的方法是把图片保存在文件夹,而图片的路径以string形式保存在数据库,下次展现图片的时候,直接在数据库找到路径就行
2、 struts+hibernate保存图片
struts+hibernate整合项目保存图片时候,除了struts的FormFile起主要作用外,hibernate做了什么?其实hibernate所做的事和保存图片没太大的关系,只是把路径保存了
3、 struts保存图片除了配置文件外,我只了建3个文件(Action、Form、Jsp)。
下面给出我3个文件完整的代码,代码可以正确运行保存图片,如果把我的代码拷贝到你机器上运行,请看代码的注释
文件一Index.Jsp代码如下
JConsole_远程监控Tomcat_ricky
JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。
其实在 JDK 5 中已经新加入了这个功能了. 现在的 JDK 已经内置了对 VM 的监控功能. JDK 6 中这个工具变的更加好用了. 关于 JDK 5 中如何使用这个工具可以参考这里: http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html
dojo快速入门
2006 年初,dojo 还是0.22 的时候就很关注它的发展,可一直没有
在实际项目中使用。一来是由于文档的缺少,而来是dojo 的相关介
绍总是让人望而生畏。到现在都如此,第一个hello world 就搞了一
大堆东西,比如widget 组件,自定义的script 标签等,加上要引入
什么css 文件,djConfig、dojo.require 等等,让人很迷惑,这么
复杂,到底dojo 该怎么使用呢?我只是想把dojo 当作一个普通的
js 类库,就像prototype 那样?OK,闲话少说,来看看如何使用
dojo。
-----------------------------------------------------------------------------------------------------
Dojo+API(免费下载)
Dojo 体系架构总体上来看是一个分层的体系架构。最下面的一层是包系统,Dojo API 的结构与 Java 很类似,它把所有的 API 分成不
同的包(package),当您要使用某个 API 时,只需导入这个 API 所在的包。包系统上面一层是语言库,这个语言库里包含一些语言工具 API,类似于 Java
的 util 包。再上一层是环境相关包,这个包的功能是处理跨浏览器的问题。Dojo 体系架构图
Dojo 大部分代码都位于应用程序支持库,由于太小限制,图中没有列出所有的包。开发人员大部分时候都在调用这个层中的 API,比如,用 IO 包可以进行Ajax 调用。
最上面的一层是 Dojo 的 Widget 系统,Widget 指的是用户界面中的一个元素,比如按钮、进度条和树等。 Dojo 的 Widget 基于 MVC 结构。它的视图作为一个 Template(模板)来进行存放,在 Template 中放置着 HTML 和 CSS 片段,而控制器来对该 Template 中的元素进行操作。 Widget 不仅支持自定义的样式表,并且能够对内部元素的事件进行处理。用户在页面中只需要加入简单的标签就可以使用。在这一层中,存在数百个功能强大的 Widget 方便用户使用,包括表格、树、菜单等。
常用包介绍
Jtest8.1破解文件(免费)
Jtest8.1破解文件(免费)
spring源码
rar包内含有spring2.5.6源码,解压即可使用
源代码分析,是一件既痛苦又快乐的事情,看别人写的代码是通过的,但当你能够看明白的时候,相信快乐也会随之而来,为了减少痛苦,更快的带来快乐,在这里希望通过这篇文章对觉得困难的朋友有一个帮助。
本文以spring框架的XmlBeanFactory为入手点进行分析,希望能够以尽量简洁明了的方式给予有需要的朋友一定的帮助。
首先来打开该类的代码,我们将看到如下代码:
Java代码
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}
}
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}
}
这个类的代码很简单,一个成员对象加两个构造函数,从这里我们可以看出,最重要的地方在于最后一个构造函数:
Java代码
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
第一句就是将父亲工厂交给父类的构造函数,实际上最后也就是把父工厂保存到类的parentBeanFactory成员对象中,这个对象是在AbstractBeanFactory抽象类中定义的,而这个父工厂也会一直传递到该抽象类进行保存。第二句就是整个类中最重要的地方了,顾名思义,它的目的是通过XmlBeanDefinitionReader这个XML的Reader从资源resource中(也就是你的配置文件)读取bean的定义。接下来我们打开XmlBeanDefinitionReader的loadBeanDefinitions方法,我们可看到在这个方法里代码就一行,调用了一个同名不同参的方法,而参数是EncodedResource的一个实例,这个类实际上是Resource的一个包装类,用来保存资源的Encode的,那接下来我们再看被调用的loadBeanDefinitions方法,这个方法里最主要的部分就是:
Java代码
InputSource inputSource = new InputSource(inputStream);
if (encodedResource.getEncoding() != null) {
inputSource.setEncoding(encodedResource.getEncoding());
}
return doLoadBeanDefinitions(inputSource, encodedResource.getResource());
InputSource inputSource = new InputSource(inputStream);
if (encodedResource.getEncoding() != null) {
inputSource.setEncoding(encodedResource.getEncoding());
}
return doLoadBeanDefinitions(inputSource, encodedResource.getResource());
这里的目的是将资源包装成一个InputSource,连同Resource作为参数传递到doLoadBeanDefinitions方法
Java代码
DocumentBuilderFactory factory = createDocumentBuilderFactory();
if (logger.isDebugEnabled()) {
logger.debug("Using JAXP implementation [" + factory + "]");
}
DocumentBuilder builder = createDocumentBuilder(factory);
Document doc = builder.parse(inputSource);
return registerBeanDefinitions(doc, resource);
DocumentBuilderFactory factory = createDocumentBuilderFactory();
if (logger.isDebugEnabled()) {
logger.debug("Using JAXP implementation [" + factory + "]");
}
DocumentBuilder builder = createDocumentBuilder(factory);
Document doc = builder.parse(inputSource);
return registerBeanDefinitions(doc, resource);
这个方法的目的一目了然,就是为了将资源解释成为Document对象,然后调用registerBeanDefinitions方法,这里不做详细解释,不了解的话请去看看关于JAXP的介绍。接下来我们打开registerBeanDefinitions方法:
Java代码
public int registerBeanDefinitions(Document doc, Resource resource) throws BeansException {
XmlBeanDefinitionParser parser =
(XmlBeanDefinitionParser) BeanUtils.instantiateClass(this.parserClass);
return parser.registerBeanDefinitions(this, doc, resource);
}
public int registerBeanDefinitions(Document doc, Resource resource) throws BeansException {
XmlBeanDefinitionParser parser =
(XmlBeanDefinitionParser) BeanUtils.instantiateClass(this.parserClass);
return parser.registerBeanDefinitions(this, doc, resource);
}
这里创建了一个XmlBeanDefinitionParser接口的实现,这个接口的具体类是DefaultXmlBeanDefinitionParser,这个接口很简单,只有registerBeanDefinitions一个方法,这个方法的作用也很明了,就是用来注册Bean的定义的,所以说类和方法的名字一定要起得有意义,这样可以让人一看就大概了解其作用,减少了很多阅读代码的痛苦。废话不多说,我们打开DefaultXmlBeanDefinitionParser的registerBeanDefinitions方法,这个类就是解释XML配置文件的核心类了,打开registerBeanDefinitions方法后我们看到如下代码:
Java代码
public int registerBeanDefinitions(BeanDefinitionReader reader, Document doc, Resource resource)
throws BeanDefinitionStoreException {
this.beanDefinitionReader = reader;
this.resource = resource;
logger.debug("Loading bean definitions");
Element root = doc.getDocumentElement();
//初始化根元素
initDefaults(root);
if (logger.isDebugEnabled()) {
logger.debug("Default lazy init '" + getDefaultLazyInit() + "'");
logger.debug("Default autowire '" + getDefaultAutowire() + "'");
logger.debug("Default dependency check '" + getDefaultDependencyCheck() + "'");
}
preProcessXml(root);//一个空方法用于扩展
int beanDefinitionCount = parseBeanDefinitions(root);//解释配置的主要方法
if (logger.isDebugEnabled()) {
logger.debug("Found " + beanDefinitionCount + " <bean> elements in " + resource);
}
postProcessXml(root); //一个空方法用于扩展
return beanDefinitionCount;
}
public int registerBeanDefinitions(BeanDefinitionReader reader, Document doc, Resource resource)
throws BeanDefinitionStoreException {
this.beanDefinitionReader = reader;
this.resource = resource;
logger.debug("Loading bean definitions");
Element root = doc.getDocumentElement();
//初始化根元素
initDefaults(root);
if (logger.isDebugEnabled()) {
logger.debug("Default lazy init '" + getDefaultLazyInit() + "'");
logger.debug("Default autowire '" + getDefaultAutowire() + "'");
logger.debug("Default dependency check '" + getDefaultDependencyCheck() + "'");
}
preProcessXml(root);//一个空方法用于扩展
int beanDefinitionCount = parseBeanDefinitions(root);//解释配置的主要方法
if (logger.isDebugEnabled()) {
logger.debug("Found " + beanDefinitionCount + " <bean> elements in " + resource);
}
postProcessXml(root); //一个空方法用于扩展
return beanDefinitionCount;
}
在这个方法当中,主要用于解释定义的有两个方法,一个是initDefaults,一个是parseBeanDefinitions,第一个方法是用来解释根元素的属性的,例如lazy-init, autowire等,而parseBeanDefinitions就是用来解释具体的bean定义了,方法代码如下:
Java代码
protected int parseBeanDefinitions(Element root) throws BeanDefinitionStoreException {
NodeList nl = root.getChildNodes();
int beanDefinitionCount = 0;
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element ele = (Element) node;
if (IMPORT_ELEMENT.equals(node.getNodeName())) {
importBeanDefinitionResource(ele);
}
else if (ALIAS_ELEMENT.equals(node.getNodeName())) {
String name = ele.getAttribute(NAME_ATTRIBUTE);
String alias = ele.getAttribute(ALIAS_ATTRIBUTE);
this.beanDefinitionReader.getBeanFactory().registerAlias(name, alias);
}
else if (BEAN_ELEMENT.equals(node.getNodeName())) {
beanDefinitionCount++;
BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false);
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory());
}
}
}
return beanDefinitionCount;
}
protected int parseBeanDefinitions(Element root) throws BeanDefinitionStoreException {
NodeList nl = root.getChildNodes();
int beanDefinitionCount = 0;
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element ele = (Element) node;
if (IMPORT_ELEMENT.equals(node.getNodeName())) {
importBeanDefinitionResource(ele);
}
else if (ALIAS_ELEMENT.equals(node.getNodeName())) {
String name = ele.getAttribute(NAME_ATTRIBUTE);
String alias = ele.getAttribute(ALIAS_ATTRIBUTE);
this.beanDefinitionReader.getBeanFactory().registerAlias(name, alias);
}
else if (BEAN_ELEMENT.equals(node.getNodeName())) {
beanDefinitionCount++;
BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false);
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory());
}
}
}
return beanDefinitionCount;
}
其他标签具体如何被解释这里就不多说,相信大家也能看得懂,这里主要讲一下解释bean的的处理,我们注意以下代码:
Java代码
else if (BEAN_ELEMENT.equals(node.getNodeName())) {
beanDefinitionCount++;
BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false);
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory());
}
else if (BEAN_ELEMENT.equals(node.getNodeName())) {
beanDefinitionCount++;
BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false);
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory());
}
这里是当碰到一个bean标签的时候所进行的处理,也既是对bean的定义进行解释,可以看到parseBeanDefinitionElement方法的第一个参数就是bean则个元素,第二个参数表示该bean是否为内置的bean,从这里进行解释的bean都不可能是内置的,所以这里直接以false为参数,打开parseBeanDefinitionElement方法,就可以看到这个方法里就是对bean的内部的解释,也很简单,也不多讲了,呵呵(下班时间已经到了,所以就写这么多了,基本的流程也就这样,没什么特别难的地方。),对了,最后还有一点就是解释完后,bean的定义将会被保存到beanFactory中,这个beanFactory的实现就是XmlBeanFactory了,该beanFactory是在new的时候被传递到reader中的,就是该类中以下这行代码:
Java代码
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
好了,就这么多了,本文只作为参考,只讲解了如何加载bean定义这块,只作为一个参考,希望对其他朋友能有所帮助吧,因为时间匆忙,有错漏的地方请指正。
junit4测试源码 免费
junit4测试源码 免费
junit-4.8.1.jar (免费)
junit-4.8.1.jar (免费)
android项目_-天气预报详解实例(免费)
android项目_-天气预报详解实例(免费)
Android开发之旅 Intents和Intent Filters(实例部分)(免费)
Android开发之旅 Intents和Intent Filters(实例部分)(免费)
Android安卓系统自带软件详解(免费)
我们使用文件管理器的时候,会发现系统中有很多apk,而这些并非我们自己安装的软件,这些到底是什么软件,有什么用?这就是安卓系统自带的软件,很多软件都是我们很少用到的,但我们又无法删掉,其实,只要是有获取ROOT权限的手机,我们都可以自己将这些没用到的软件卸载掉。
Java节假日算法(免费)
Java节假日算法(免费)
J2EE开发资料
J2EE开发资料java语言连接mysql, sqlserver, oracle