比JDK高效的array equals
2015-12-15 22:07
323 查看
privatestaticbooleanarrEquals(byte[]a1,byte[]a2){ if(a1==a2) returntrue; if(a1==null||a2==null) returnfalse; intlength=a1.length; if(a2.length!=length) returnfalse; intj=0,k=1; while(j<length){ if(a1[j]!=a2[j]) returnfalse; j+=2; } while(k<length){ if(a1[k]!=a2[k]) returnfalse; k+=2; } returntrue; }
/**
*忽略大小写比较
*
*@paramsrc
*@paramcmd
*@return
*/
privatebooleanignoreEquals(byte[]src,Stringcmd){
intlen2=cmd.length();
intlen1=src.length;
if(len2!=len1)
returnfalse;
intres=0;
intlen=len1>len2?len2:len1;
while((res=src[--len]-cmd.charAt(len))==0||res==32
||res==-32){
returntrue;
}
returnfalse;
}
packagecom.czp.utils;
importjava.io.File;
importjava.util.EnumSet;
importjava.util.EventListener;
importjava.util.Properties;
importjavax.servlet.DispatcherType;
importjavax.servlet.Filter;
importjavax.servlet.MultipartConfigElement;
importjavax.servlet.http.HttpServlet;
importorg.eclipse.jetty.server.Server;
importorg.eclipse.jetty.servlet.ServletHolder;
importorg.eclipse.jetty.webapp.WebAppContext;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
/**
*
*Function:web容器类,负责启动web服务<br>
*文件上传流程:<br>
*1.保存到图片数据到FastDFS<br>
*2.将FastDFS返回的ID存储到ES<br>
*
*Date:2015年12月11日<br>
*Author:coder_czp@126.com<br>
*Copyright(c)2015,coder_czp@126.comAllRightsReserved.
*/
publicclassWebContainer{
privateintport;
privateServerserver;
privateStringwarPath;
privateintmaxUploadSize;
privateStringconfigPath;
privateWebAppContextcontext;
publicstaticfinalintfileSizeThreshold=262144;
publicstaticfinalStringCFG_FILE="config_file";
privatestaticLoggerlogger=LoggerFactory.getLogger(WebContainer.class);
privatestaticStringkey="org.eclipse.jetty.servlet.Default.useFileMappedBuffer";
publicWebContainer(StringconfigPath){
parseConfig(configPath);
this.configPath=configPath;
this.server=newServer(port);
this.context=newWebAppContext();
addWebGlobObject(context);
context.setInitParameter(key,"false");
context.setParentLoaderPriority(true);
context.setResourceBase(warPath);
server=newServer(port);
server.setHandler(context);
}
/**
*添加监听器
*
*@paramlistener
*/
publicvoidaddEventListener(EventListenerlistener){
context.addEventListener(listener);
}
/**
*添加filter
*
*@paramfilter
*/
publicvoidaddFilter(Class<?extendsFilter>cls,Stringmapping){
EnumSet<DispatcherType>type=EnumSet.of(DispatcherType.REQUEST);
context.addFilter(cls,mapping,type);
}
/**
*添加servlet
*
*@paramcls
*@parammapping
*/
publicvoidaddServlet(Class<?extendsHttpServlet>cls,Stringmapping){
context.addServlet(cls,mapping);
}
/**
*添加servlet
*
*@paramcls
*@parammapping
*/
publicvoidaddUploadServlet(Class<?extendsHttpServlet>cls,
Stringmapping){
FileuploadTmpPath=newFile("./webTemp");
if(!uploadTmpPath.exists())
uploadTmpPath.mkdir();
Stringpath=uploadTmpPath.getAbsolutePath();
MultipartConfigElementcfg=newMultipartConfigElement(path,
maxUploadSize,maxUploadSize,fileSizeThreshold);
ServletHolderupload=newServletHolder(cls);
upload.getRegistration().setMultipartConfig(cfg);
context.addServlet(upload,mapping);
}
publicvoidstart()throwsException{
logger.info("serverrunningat:{}",port);
server.start();
}
/**
*停止web服务
*
*@throwsException
*/
publicvoidstop()throwsException{
server.stop();
}
/**
*添加web应用的全局参数,这些参数在整个web运行期只存在一个实例
*
*@paramcontext
*/
privatevoidaddWebGlobObject(WebAppContextcontext){
context.setAttribute(CFG_FILE,configPath);
}
privatevoidparseConfig(StringconfigPath){
try{
Propertiescfg=PubTools.loadCfgFromFile(configPath);
warPath=cfg.getProperty("web_dir");
port=Integer.valueOf(cfg.getProperty("web_port"));
maxUploadSize=Integer.valueOf(cfg.getProperty("max_upload_size"));
}catch(Exceptione){
thrownewRuntimeException(e);
}
}
}
相关文章推荐
- 使用Spring框架实现文件上传
- 03 javadoc
- Java学习--static、final、abstract
- Spring学习笔记(一)--Spring入门和使用
- 【JVM系列】Java对象的生命周期与类型的卸载
- Java NIO使用及原理分析 (四)
- 基础知识《八》---Java反射机制
- java笔试的一道流程题
- java正则表达式校验移动电话、固话、邮编的校验
- 从Java中堆内存和栈内存分配中详谈String使用equals和==比较的区别
- Java NIO使用及原理分析(三)
- Java&Xml教程(六)使用JDOM解析XML文件
- Java&Xml教程(六)使用JDOM解析XML文件
- Java&Xml教程(六)使用JDOM解析XML文件
- Spring IOC 和 AOP
- java开发俄罗斯方块学习笔记 Day-4 显示
- java.lang.RuntimeException
- Java NIO使用及原理分析(二)
- Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- Java NIO使用及原理分析 (一)