当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪ant的任务实例      deploy.path=/data/jsp/xxxxxxxx.com <?xml version="1.0"?> <project name="xxxx" basedir="." default="usage"> <property file="build.properties"/> <property name="src.dir" .........
    ▪winter framework 源码 SSH最精简的实现      前些天一直在写这个框架,现在放出源码! 主要功能: 1、自动将表单封装成对象(类似Struts2) 2、自动根据对象产生增删改查sql语句(类似hibernate) 3、支持Spring动态注入,可以把自.........
    ▪系统性能调优(1)----步骤与思路      概念(来自度娘)系统优化原来是系统科学(系统论)的术语,现在常用作计算机方面的术语。它尽可能减少计算机执行的进程,更改工作模式,删除不必要的中断让机器运行更有效,优化文.........

[1]ant的任务实例
    来源: 互联网  发布时间: 2013-11-19
deploy.path=/data/jsp/xxxxxxxx.com
<?xml version="1.0"?>
<project name="xxxx" basedir="." default="usage">
	<property file="build.properties"/>
	<property name="src.dir" value="src"/>
	<property name="web.dir" value="WebRoot"/>
	<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
	<property name="name" value="webapps"/>
	<path id="master-classpath">
		<fileset dir="${web.dir}/WEB-INF/lib">
			<include name="*.jar"/>

		</fileset>
		<pathelement path="${build.dir}"/>

	</path>
	<target name="usage">
		<echo message=""/>
		<echo message="${name} build file"/>
		<echo message="-----------------------------------"/>
		<echo message=""/>
		<echo message="Available targets are:"/>
		<echo message=""/>
		<echo message="build --> Build the application"/>
		<echo message="deploy --> Deploy application as directory"/>
		<echo message="deploywar --> Deploy application as a WAR file"/>
		<echo message=""/>
	</target>
	<target name="build" description="Compile main source tree java files">
		<mkdir dir="${build.dir}"/>
		<javac destdir="${build.dir}" source="1.5" target="1.5" debug="true" deprecation="false" optimize="false"
			   failonerror="true" includeantruntime="false" encoding="GBK">
			<src path="${src.dir}"/>
			<classpath refid="master-classpath"/>
		</javac>
		<copy todir="${build.dir}" preservelastmodified="true">
		<fileset dir="${src.dir}">

				<!--<include  name="**/*.*"/>-->
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
	</target>
	<target name="deploy" depends="build" description="Deploy application">

		<mkdir dir="${deploy.path}/${name}"/>

		<copy todir="${deploy.path}/${name}" preservelastmodified="true">

			<fileset dir="${web.dir}">

				<include name="**/*.*"/>

			</fileset>
		</copy>
	</target>
	<target name="deploywar" depends="build" description="Deploy application as a WAR file">
		<war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
			<fileset dir="${web.dir}">
			<include name="**/*.*"/>
			</fileset>
		</war>
		<copy todir="${deploy.path}" preservelastmodified="true">
			<fileset dir=".">
				<include name="*.war"/>
			</fileset>
		</copy>
	</target>
	<target name="clean" description="Clean output directories">
		<delete>
			<fileset dir="${build.dir}">
				<include name="**/*.*"/>
			</fileset>
		</delete>
	</target>
	<target name="undeploy" description="Un-Deploy application">
		<delete>
			<fileset dir="${deploy.path}/${name}">
				<include name="**/*.*"/>
			</fileset>
		</delete>
	</target>
</project> 


作者:qyf_5445 发表于2013-5-27 20:52:29 原文链接
阅读:50 评论:0 查看评论

    
[2]winter framework 源码 SSH最精简的实现
    来源: 互联网  发布时间: 2013-11-19
前些天一直在写这个框架,现在放出源码!

主要功能:

1、自动将表单封装成对象(类似Struts2)

2、自动根据对象产生增删改查sql语句(类似hibernate)

3、支持Spring动态注入,可以把自定义的Action 交给Spring去进行管理

4、自定义的tab标签库 

5、支持伪静态功能

伪静态实现,可以用正则表达式!~

这个框架,差不多就是一个SSH最精简的实现。

配置非常灵活简单,比起三大框架来说,容易多了,而且包就一个而已,非常的小!

包和类:

org.pan.code 这是核心类的包

主要的类:

过滤器-转发控制器-Action管理器-字段类型转换器-Spring支持类-JDBC支持类-SQL创建类

主要的配置文件是:request.xml


百度网盘下载地址:http://pan.baidu.com/share/link?shareid=467157&uk=470382596

Q:599194993

有兴趣的联系我,一起完善!~

附上部分源代码:

最核心的代码,Action管理器:


package org.pan.code;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.pan.convetor.FieldConvertor;
import org.pan.exception.InitializeActionException;
import org.pan.support.ServletActionContent;
import org.pan.util.MethodsUitl;
import org.pan.util.StringUitl;

/**
 * 请求request请求数据 调用对应的类去进行处理
 * @author Pan
 *
 */
public class ActionManage {

	private HttpServletRequest request;		//请求对象
	private HttpServletResponse response;	//响应对象
	private Map<String, Object> map=new HashMap<String, Object>();		//map对象
	private String result;		//返回类型
	private String classPath;	//类的路径
	private String methodName;		//需要操作的方法
	private Object bean;			//对象的实例 可以是从Spring中获取到的
	
	public void setMethodName(String methodName) {
		this.methodName = methodName;
	}
	public String getMethodName() {
		return methodName;
	}
	public String getResult() {
		return result;
	}
	private Map<String, Object> getMap() {
		return map;
	}

	public ActionManage(Object bean,HttpServletRequest request,HttpServletResponse response,String classPath,String methodName){
		
		this.request=request;
		this.response=response;
		this.classPath=classPath;
		this.methodName=methodName;
		this.bean=bean;
		invokeMap();	//将请求的值放入map
		
		try {
			init();	//初始化
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
	/**
	 * 将请求的值放入map
	 */
	private void invokeMap(){
		Iterator it=request.getParameterMap().entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry=(Map.Entry)it.next();
			String key=entry.getKey().toString();
			String value=StringUitl.getStringArray((String[])entry.getValue());
			map.put(key, value);
		}
	}
	
	/**
	 * 将相关对象设置到用户的Action中
	 * @throws InitializeActionException 
	 * @throws NoSuchMethodException 
	 * @throws SecurityException 
	 * @throws InvocationTargetException 
	 * @throws IllegalAccessException 
	 * @throws IllegalArgumentException 
	 */
	private void init() throws Exception{
		
		
		//获取类对象
		Class class1=null;
		Object object=null;
		try{
//			
			if(this.bean!=null){
				object=bean;
				class1=bean.getClass();
			}else{
				class1=Class.forName(classPath);
				//初始化对象
				object=class1.newInstance();
				System.out.println("初始化对象");
			}
			
		}catch (Exception e) {
			System.err.println(e);
			throw new InitializeActionException();
		}
		
		//给对象设置字段参数
		initField(class1,object);
		
		//调用方法
		this.result=invokeMethod(class1, object);
		
		
	}

	/**
	 * 初始化字段
	 */
	private void initField(Class class1,Object object) throws Exception{
		
		//获取字段集合
		Field[] fields=class1.getDeclaredFields();
		
		//获取方法集合
		Method [] methods=class1.getDeclaredMethods();
		
		for (Field field : fields) {
			String name=(String)map.get(field.getName());
				//给指定赋值
				String MethodName="set"+StringUitl.capitalize(field.getName());
				if(MethodsUitl.exist(methods,MethodName)){

					field.setAccessible(true);
					//field.set(object, map.get(field.getName()));
					Object value=map.get(field.getName());
					if(value!=null){
						FieldConvertor.convertor(object, field, value.toString());
					}
	
				}
			}
		}
		
	/**
	 * 调用方法
	 */
	private String invokeMethod(Class class1,Object object) throws Exception{
		
		//创建ServletActionContent实例对象
				ServletActionContent servlet=new ServletActionContent();
				servlet.setRequest(request);
				servlet.setResponse(response);
				servlet.setSession(request.getSession());
				
				//创建参数类型
				Class parameter[]=new Class[]{ServletActionContent.class};
				Method method=class1.getMethod("setServletActionContent", parameter);
				
				//参数值
				Object obj[]=new Object[]{servlet};
				method.invoke(object, obj);	//操作方法
				//调用execute 方法
				//Method execute=class1.getMethod("execute", new Class[0]);
				Method execute=class1.getMethod(this.methodName, new Class[0]);
				Object type=execute.invoke(object, new Class[0]);
				
				return type.toString();	//设置返回类型
		
	}
		
	
}


请求管理器:

package org.pan.controller;

import java.util.List;

import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.pan.bean.Request;
import org.pan.bean.Result;
import org.pan.bean.SpringBean;
import org.pan.code.ActionManage;
import org.pan.code.Configuration;
import org.pan.spring.SpringBeanFactory;
import org.pan.support.ActionSupport;
import org.pan.util.ResultUitl;

/**
 * 请求控制器
 * @author Pan
 *
 */
public class RequestController {

	private HttpServletRequest request;
	private HttpServletResponse response;
	private FilterChain chain;
	
	public RequestController(ServletRequest request,ServletResponse response,FilterChain chain){
		
		this.request=(HttpServletRequest)request;
		this.response=(HttpServletResponse)response;
		this.chain=chain;
	}
	
	/**
	 * 处理请求
	 */
	public void doFilter() throws Exception{
		
		String filepath=request.getServletPath().substring(1);	//当前这个文件的名称
			//通过配置文件得到跳转对象和一些操作的方法
			Configuration configuration=new Configuration(request);
			System.out.println("filepath:"+filepath);
			//伪静态
			Request rt=configuration.findByLike(filepath);
			if(rt==null){
				System.out.println(rt);
				System.out.println("error:"+configuration.find(filepath));
				rt=configuration.find(filepath);			
			}
			
			//如果rt还是null 就直接跳过不处理
			if(rt==null){
				chain.doFilter(request, response);
				return ;
			}
			//如果没有配置类路径,就当作转发器使用直接转发到结果页
			if(rt.getClassPath()==null||rt.getClassPath()==""){
				Result rs=ResultUitl.findResult(rt.getResults(), ActionSupport.SUCCESS);
				if(rs==null){
					chain.doFilter(request, response);
				}else{
					request.getRequestDispatcher(rs.getPath()).forward(request, response);
				}
				return;
			}
			
			
			//Spring support
			
			SpringBeanFactory factory=new SpringBeanFactory(request);
			Object object=null;
			if(rt.getId()!=null||rt.getId()!=""){
				//xml配置中需要开启支持
				if(SpringBean.getSupport()){
					object=factory.getBean(rt.getId());
				}
			}
			//用户Action管理器
			ActionManage actionManage=new ActionManage(object,request,response,rt.getClassPath(),rt.getMethod());
			String result=actionManage.getResult();
			
			
			//寻找放返回值对应的页面
			List<Result> results= rt.getResults();
			String path="";
			for (Result result2 : results) {
				if(result2.getName().equals(result)){
					//得到对应的路径
					path=result2.getPath();
				}
			}
			
			//转发到对应的页面
			if(!path.equals("")){
				
				request.getRequestDispatcher(path).forward(request, response);
				
			}
			//上面没有进行处理那就是配置不争取或者面页不存在
			else{
				chain.doFilter(request, response);
			}
			
			
		}
	}
		



配置管理器和xml读取:

package org.pan.code;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.pan.bean.Request;
import org.pan.bean.Result;
import org.pan.exception.ReadRequestXmlException;

/**
 * 配置管理器
 * @author Pan
 *
 */
public class Configuration {

	private List<Request> requests;
	public Configuration(HttpServletRequest request){
		
		XmlRead xmlRead=new XmlRead(request);
		try {
			
			requests=xmlRead.read();
			
		} catch (ReadRequestXmlException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 寻找配置文件中的request节点对象
	 * @param name
	 * @return
	 */
	public Request find(String name){
		for (Request request : requests) {
			System.out.println("name:"+name+" - "+request.getPag      
    
[3]系统性能调优(1)----步骤与思路
    来源: 互联网  发布时间: 2013-11-19

概念(来自度娘)

系统优化原来是系统科学(系统论)的术语,现在常用作计算机方面的术语。它尽可能减少计算机执行的进程,更改工作模式,删除不必要的中断让机器运行更有效,优化文件位置使数据读写更快,空出更多的系统资源供用户支配,以及减少不必要的系统加载项及自动启动项。当然优化到一定程度可能略微影响系统稳定性,但基本对硬件无害。

系统优化的一般步骤分为五步,不同的公司可能会省略其中的部分文档,但是大体的思路是一致的。

1、发现问题

一般性能的问题无非是系统工作效率低下,最常见的就是对数据库的CRUD操作缓慢、导出数据无响应等。有了问题我们应该精准的定位问题,尽可能的将问题的描述量化。在这里可以借助相应的工具进行一些性能测试,得到了详细的测试报告就可以为下一步的分析优化做好铺垫。

工欲善其事必先利其器,下面介绍几个比较有用的工具,篇幅有限具体的用法读者可以自己去度娘。

Httpwatch:IE插件,用来查看在浏览器中操作的详细情况。下图为Httpwatch某个查询的耗时记录:

JavaVisualVM:Java自带资源分析工具。下图为Java VisualVm记录某段循环的截图

LoadRunner:强大的压力测试工具,通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。

根据得到性能测试结果要写一份性能测试报告为下一步工作提供依据,写性能测试报告一般有以下几点需要注意:

a) 测试使用数据是否为现场数据

b) 测试使用的客户端是什么配置

c) 服务器数据库端的配置

d) 选择的测试条件

e) 每个功能测试次数,平均耗时为多少

f) 每次查询返回的数据量

g) 数据库里对应表里的数据总量

h) 将测试记录写成文档,对于不达标的记录高亮显示

2、分析问题

根据上面得到的测试报告找到系统性能瓶颈的位置,然后从外向里添加日志,打印出各方法的执行时间,这样便很快就能找到问题的具体位置。将分析结果写入文档,为下一步提供依据。

切记:优化一定要对系统进行深入分析,找到性能问题根源切入点,而不被表象迷糊,对症下药。例如我们发现内存高了,首先想到不应该是扩大内存,而是为什么如此消耗内存,用工具(Java VisualVM)看看内存消耗在什么地方,想办法解决。

3、提出方案

根据分析结果提出合理的解决方案,然后写成文档提交审批。这里特别要注意的是解决方案的合理性,换句话说就是一定要考虑优化的成本。

从成本上面考虑大致的顺序如下。

数据库 ----> 应用层 ----> Web层 ----> 硬件

当然具体问题还需要具体分析(在后面的文章中将详细介绍更层次的优化方法)。一般来说在数据库上建立索引、分区等操作要比在应用层重构算法来的省时省力;应用层和Web层基本上是一致的,但和硬件比起来在软件层次的优化还是第一位的。就像上面说的,内存不够用了不应该去考虑换机器、加内存,而是找到内存开销大的地方,解决之。

4

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
c/c++开源软件 iis7站长之家
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3