Date与String类型互转
//Date类型转换为String Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd " ); String nowTime = sdf.format(now); String s = " 2008-01-15 " ; String[] a = s.split( " [-] " ); Date d = new Date(Integer.parseInt(a[ 0 ]),Integer.parseInt(a[ 1 ]),Integer.parseInt(a[ 2 ])); Date date=DateUtils.parseDate("2012-06-25", new String[]{"yyyy-MM-dd"});
java 日志输出
通过以下配置可以配置将某级别范围的日志信息写入到指定文件中。
可以配置输出日志的级别优先级。
分为三部分:
1 日志输出文件log4j.xml的配置。
2 加载日志配置文件的servlet类。
2 web.xml配置
当然,还要加载必要的jar包。
1
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="infoChannel"
- class="org.apache.log4j.RollingFileAppender">
- <!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->
- <param name="File" value="${catalina.home}/logs/test.log" /><!-- 设置File参数:日志输出文件名 -->
- <param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
- <param name="MaxBackupIndex" value="10" />
- <param name="MaxFileSize" value="10KB"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n" /><!-- 设置输出文件项目和格式 -->
- </layout>
- <filter class="org.apache.log4j.varia.LevelRangeFilter">
- <param name="LevelMin" value="INFO" /><!--设置将INFO级别的日志通过该通道输出-->
- <param name="LevelMax" value="INFO" />
- </filter>
- </appender>
- <appender name="debugChannel"
- class="org.apache.log4j.RollingFileAppender">
- <!-- 设置通道file和输出方式:org.apache.log4j.RollingFileAppender -->
- <param name="File" value="${catalina.home}/logs/testdebug.log" /><!-- 设置File参数:日志输出文件名 -->
- <param name="Append" value="true" /><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
- <param name="MaxBackupIndex" value="10" />
- <param name="MaxFileSize" value="10KB"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n" /><!-- 设置输出文件项目和格式 -->
- </layout>
- <filter class="org.apache.log4j.varia.LevelRangeFilter">
- <param name="LevelMin" value="DEBUG" />
- <param name="LevelMax" value="DEBUG" />
- </filter>
- </appender>
- <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
- <!-- 设置监视器输出方式 -->
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%-4r [%t] %-5p %c %x - %m%n" />
- </layout>
- <!--滤镜设置输出的级别-->
- <filter class="org.apache.log4j.varia.LevelRangeFilter">
- <param name="levelMin" value="info" />
- <param name="levelMax" value="info" />
- <param name="AcceptOnMatch" value="true" />
- </filter>
- </appender>
-
- <root>
- <!--设置输出的级别大于等于DEGUG priority value="DEBUG" / -->
- <!--设置输出的级别-->
- <priority value="INFO" />
- <!-- 设置接收所有输出的通道 -->
- <appender-ref ref="debugChannel" />
- <appender-ref ref="infoChannel" /><!-- 与前面的通道id相对应 -->
- <appender-ref ref="STDOUT" />
- </root>
-
- </log4j:configuration>
2 - package com.test.log;
-
- import javax.servlet.ServletException;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.log4j.xml.DOMConfigurator;
- import javax.servlet.http.HttpServlet;;
-
- /**
- *
- * 加载log4j日志配置文件
- *
- */
- public class ExtendedActionServlet extends HttpServlet {
- private Log log = LogFactory.getLog(this.getClass().getName());
-
- public ExtendedActionServlet() {}
-
- public void init() throws ServletException {
- log.info(
- "Initializing, My MyActionServlet init this System's Const Variable");
- String prefix = this.getServletConfig().getServletContext().getRealPath(
- "/");//读取项目的路径
- String file = this.getServletConfig().getInitParameter("log4j");
- //读取log4j相对路径
- String filePath = prefix + file;
- DOMConfigurator.configure(filePath);//加载.xml文件
- log.info("Initializing, end My Init");
- super.init();//此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作
- }
- }
3 web.xml文件中增加servlet配置 - <servlet>
- <servlet-name>log4j-init</servlet-name>
- <servlet-class>
- com.test.log.ExtendedActionServlet
- </servlet-class>
- <init-param>
- <param-name>log4j</param-name>
- <!-- 这里标出了位置 -->
- <param-value>/WEB-INF/log4j.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
什么是分布式部署和均衡负载?
分布式部署 就是将应用分布部署在多台服务器上,通过统一的调度机制实现对多台服务器的分布式调用,但对于客户端来说,其只与一台服务器进行交互。一般用于大负载的应用。 负载均衡 是把web放在多个服务器上,这主要是为了防止多用户访问时IIS响应问题,同时也可以防址洪水攻击
分布式部署应该是把网站的一些模块分开来部署,比如说你可以用一个数据源服务器,以webService或RSS等方式向别的网站提供数据.还有就是像Memedcache做一个服务器缓存,就是说当你缓存东西过多时,你可以通过TCP/IP把数据传输到另一个服务器做缓存,但一般情况下两台服务器应该在一个网内,如果你的缓存服务器老远,这样服务器缓存就没有意义了。
JAVA中的序列化和反序列化
对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。
String Stringbuffer和StringBuilder的区别?
String是长度不可变的 StringBuilder不是线程安全的,是单线程执行程序 本文转自shyy8712872 51CTO博客,原文链接:http://blog.51cto.com/shuyangyang/893307,如需转载请自行联系原作者