??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲美女精品久久久久狼,亚洲乱码av中文一区二区,亚洲精品午夜国产VA久久成人 http://m.tkk7.com/absolutedo/category/36438.html荀?" 不知则问Q不能则学,虽能不让Q然后ؓ得闻之不见,虽博必谬Q见之而不知,虽识不妄Q知之而不行,虽敦必困? zh-cnFri, 21 Aug 2009 23:08:00 GMTFri, 21 Aug 2009 23:08:00 GMT60String和StringBuffer的区别[转] http://m.tkk7.com/absolutedo/archive/2009/08/17/291427.htmlabsolutejabsolutejMon, 17 Aug 2009 01:53:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/08/17/291427.htmlhttp://m.tkk7.com/absolutedo/comments/291427.htmlhttp://m.tkk7.com/absolutedo/archive/2009/08/17/291427.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/291427.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/291427.html 从对象实C来说Q都是通过char[]来实现的?br /> 如果new String(),那么数组的长度ؓ0Q如果new String("String")Q那么char[]数组的长度就是你创徏的字W串的长度?br /> q个char[]在字W串创徏以后是不会改变的?br /> 如果你只对这个串本nq行查找{对字符串无改变的操作的话,对于此数l本w是没有影响的。但是如果,你要执行的是一个对此字W串本n有改变的操作的话Q那么,是不可以的?br /> 但是Strin对象为我们提供了此类操作的方法,比如concat()ҎQ源代码如下Q?br />     public String concat(String s) {
        int i = s.length();
        if (i == 0) {
            return this;
        } else {
            char ac[] = new char[count + i];
            getChars(0, count, ac, 0);
            s.getChars(0, i, ac, count);
            return new String(0, count + i, ac);
        }
    }
由此Q我们可以知道,其实Q此Ҏl我们返回的已经不是当前的字W串了,而是又创Z一个新的字W串Q然后返回?br /> 其他的方法也cM?br />
StringBuffer的实玎ͼ也是通过char[]来实现的。但是,默认的情况下Q其自己创徏了一个缓存数l,长度?6Q这一点,我们可以通过StringBuffer的构造器来知道:
    public StringBuffer() {
    super(16);
    }
q个Ҏ初始化了Qchar[]数组的长度是16?br /> 其父cL造器如下Q?br />     AbstractStringBuilder(int capacity) {
        value = new char[capacity];
    }
也就是说Q默认的数组长度?6?br /> 很多的时候,定w16对于我们需要的串来_可能q远不够。怎么办呢Q?br /> 在进行串的append的时候,StringBuffer会检剩余容量,q会重新扩充臛_前容量的2倍?br />     public AbstractStringBuilder append(String str) {
    if (str == null) str = "null";
        int len = str.length();
    if (len == 0) return this;
    int newCount = count + len;
    if (newCount > value.length)
        expandCapacity(newCount);
    str.getChars(0, len, value, count);
    count = newCount;
    return this;
    }

而扩容的同时Q会创徏一个新的数l,q将原来的数l内容复制到新的数组里面?br /> 由此可见Q如果容量不的话,那么每一ơ扩容,都会耗掉大量的资源,管Q你可能扩充的容量也很小。如果,数组的长度很大,耗掉的资源就会更多?br /> 所以,我们在用stringbuffer的时候,要一ơ在创徏对象的时候给与够多的空_q样会提高性能?br /> 有利必有弊,q个性能是以I间Z仗但是相对于性能的失来_应该q是值得的?br />
如果不需要扩容的话,那么所有的操作都是Z同一个数l,那么像对于string的操作来_不需要每一ơ都创徏对象了,省去了创建对象的旉Q性能是要好很多的Q同ӞString的串操作Q会用去很多的空_对于虚拟机来_也增加了很大的压力?br />


转至:http://m.tkk7.com/zhyiwww/archive/2008/04/25/195993.html

absolutej 2009-08-17 09:53 发表评论
]]>
Servletqo器大全[转]http://m.tkk7.com/absolutedo/archive/2009/08/17/291425.htmlabsolutejabsolutejMon, 17 Aug 2009 01:50:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/08/17/291425.htmlhttp://m.tkk7.com/absolutedo/comments/291425.htmlhttp://m.tkk7.com/absolutedo/archive/2009/08/17/291425.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/291425.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/291425.html阅读全文

absolutej 2009-08-17 09:50 发表评论
]]>
log4j配置详解[转]http://m.tkk7.com/absolutedo/archive/2009/08/17/291419.htmlabsolutejabsolutejMon, 17 Aug 2009 01:45:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/08/17/291419.htmlhttp://m.tkk7.com/absolutedo/comments/291419.htmlhttp://m.tkk7.com/absolutedo/archive/2009/08/17/291419.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/291419.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/291419.htmllog4j详解
        Ҏ|络资料整理       
>>>>1. 概述<<<<
  1.1. 背景
  
  在应用程序中d日志记录ȝ来说Z三个目的Q监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码q行时轨q,作ؓ日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打C码的调试信息?br />   
  最普通的做法是在代码中嵌入许多的打印语句,q些打印语句可以输出到控制台或文件中Q比较好的做法就是构造一个日志操作类来封装此cL作,而不是让一pd的打印语句充斥了代码的主体?br />   
  1.2. Log4j?br />   
  在强调可重用lg开发的今天Q除了自׃头到ּ发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j?br />   
   Log4j是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的目的地是控制台、文件、GUIlg、甚x套接口服?器、NT的事件记录器、UNIX Syslog守护q程{;我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的?是,q些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?br />   
  此外Q通过Log4j其他语言接口Q您可以在C、C+ +?Net、PL/SQLE序中用Log4jQ其语法和用法与在JavaE序中一P使得多语a分布式系l得C个统一一致的日志lg模块。而且Q?q用各U第三方扩展Q您可以很方便地Log4j集成到J2EE、JINI甚至是SNMP应用中?br />   
  本文介绍的Log4j版本?1.2.3。作者试N过一个简单的客户/服务器JavaE序例子Ҏ使用与不使用Log4j 1.2.3的差别,q详l讲解了在实践中最怋用Log4j的方法和步骤。在可重用组件开发的今天Q相信Log4j会l广大的设计开发h员带来方 ѝ加入到Log4j的队伍来吧!
  
>>>> 2. 一个简单的例子 <<<<

  我们先来看一个简单的例子Q它是一个用Java实现的客?服务器网l程序。刚开始我们不使用Log4jQ而是使用了一pd的打印语句,然后我们用Log4j来实现它的日志功能。这P大家可以清楚地比较出前后两个代码的差别?br />   
  2.1. 不用Log4j
  
  2.1.1. 客户E序
  package log4j ;
  
  import java.io.* ;
  import java.net.* ;
  
  /**
   *
   * <p> Client Without Log4j </p>
   * <p> Description: a sample with log4j</p>
   * @version 1.0
   */
  public class ClientWithoutLog4j {
  
    /**
     *
     * @param args
     */
    public static void main ( String args [] ) {
  
      String welcome = null;
      String response = null;
      BufferedReader reader = null;
      PrintWriter writer = null;
      InputStream in = null;
      OutputStream out = null;
      Socket client = null;
  
      try {
        client = new Socket ( "localhost", 8001 ) ;
        System.out.println ( "info: Client socket: " + client ) ;
        in = client.getInputStream () ;
        out = client.getOutputStream () ;
      } catch ( IOException e ) {
        System.out.println ( "error: IOException : " + e ) ;
        System.exit ( 0 ) ;
      }
  
      try{
        reader = new BufferedReader( new InputStreamReader ( in ) ) ;
        writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;
  
        welcome = reader.readLine () ;
        System.out.println ( "debug: Server says: '" + welcome + "'" ) ;
  
        System.out.println ( "debug: HELLO" ) ;
        writer.println ( "HELLO" ) ;
        response = reader.readLine () ;
        System.out.println ( "debug: Server responds: '" + response + "'") ;
  
        System.out.println ( "debug: HELP" ) ;
        writer.println ( "HELP" ) ;
        response = reader.readLine () ;
        System.out.println ( "debug: Server responds: '" + response + "'" ) ;
  
        System.out.println ( "debug: QUIT" ) ;
        writer.println ( "QUIT" ) ;
      } catch ( IOException e ) {
        System.out.println ( "warn: IOException in client.in.readln()" ) ;
        System.out.println ( e ) ;
      }
      try{
        Thread.sleep ( 2000 ) ;
      } catch ( Exception ignored ) {}
    }
  }
  
  2.1.2. 服务器程?br />   package log4j ;
  
  import java.util.* ;
  import java.io.* ;
  import java.net.* ;
  
  /**
   *
   * <p> Server Without Log4j </p>
   * <p> Description: a sample with log4j</p>
   * @version 1.0
   */
  public class ServerWithoutLog4j {
  
    final static int SERVER_PORT = 8001 ; // this server's port
  
    /**
     *
     * @param args
     */
    public static void main ( String args [] ) {
      String clientRequest = null;
      BufferedReader reader = null;
      PrintWriter writer = null;
      ServerSocket server = null;
      Socket socket = null;
      InputStream in = null;
      OutputStream out = null;
  
      try {
        server = new ServerSocket ( SERVER_PORT ) ;
        System.out.println ( "info: ServerSocket before accept: " + server ) ;
        System.out.println ( "info: Java server without log4j, on-line!" ) ;
  
        // wait for client's connection
        socket = server.accept () ;
        System.out.println ( "info: ServerSocket after accept: " + server ) ;
  
        in = socket.getInputStream () ;
        out = socket.getOutputStream () ;
  
      } catch ( IOException e ) {
        System.out.println( "error: Server constructor IOException: " + e ) ;
        System.exit ( 0 ) ;
      }
      reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
      writer = new PrintWriter ( new OutputStreamWriter ( out ) , true ) ;
  
      // send welcome string to client
      writer.println ( "Java server without log4j, " + new Date () ) ;
  
      while ( true ) {
        try {
          // read from client
          clientRequest = reader.readLine () ;
          System.out.println ( "debug: Client says: " + clientRequest ) ;
          if ( clientRequest.startsWith ( "HELP" ) ) {
            System.out.println ( "debug: OK!" ) ;
            writer.println ( "Vocabulary: HELP QUIT" ) ;
          }
          else {
            if ( clientRequest.startsWith ( "QUIT" ) ) {
              System.out.println ( "debug: OK!" ) ;
              System.exit ( 0 ) ;
            }
            else{
              System.out.println ( "warn: Command '" +
   clientRequest + "' not understood." ) ;
              writer.println ( "Command '" + clientRequest
   + "' not understood." ) ;
            }
          }
        } catch ( IOException e ) {
          System.out.println ( "error: IOException in Server " + e ) ;
          System.exit ( 0 ) ;
        }
      }
    }
  }
  
  2.2. q移到Log4j
  
  2.2.1. 客户E序
  
  package log4j ;
  
  import java.io.* ;
  import java.net.* ;
  
  // add for log4j: import some package
  import org.apache.log4j.PropertyConfigurator ;
  import org.apache.log4j.Logger ;
  import org.apache.log4j.Level ;
  
  /**
   *
   * <p> Client With Log4j </p>
   * <p> Description: a sample with log4j</p>
   * @version 1.0
   */
  public class ClientWithLog4j {
  
    /*
    add for log4j: class Logger is the central class in the log4j package.
    we can do most logging operations by Logger except configuration.
    getLogger(...): retrieve a logger by name, if not then create for it.
    */
    static Logger logger = Logger.getLogger
   ( ClientWithLog4j.class.getName () ) ;
  
    /**
     *
     * @param args : configuration file name
     */
    public static void main ( String args [] ) {
  
      String welcome = null ;
      String response = null ;
      BufferedReader reader = null ;
      PrintWriter writer = null ;
      InputStream in = null ;
      OutputStream out = null ;
      Socket client = null ;
  
      /*
      add for log4j: class BasicConfigurator can quickly configure the package.
      print the information to console.
      */
      PropertyConfigurator.configure ( "ClientWithLog4j.properties" ) ;
  
      // add for log4j: set the level
  //    logger.setLevel ( ( Level ) Level.DEBUG ) ;
  
      try{
        client = new Socket( "localhost" , 8001 ) ;
  
        // add for log4j: log a message with the info level
        logger.info ( "Client socket: " + client ) ;
  
        in = client.getInputStream () ;
        out = client.getOutputStream () ;
      } catch ( IOException e ) {
  
        // add for log4j: log a message with the error level
        logger.error ( "IOException : " + e ) ;
  
        System.exit ( 0 ) ;
      }
  
      try{
        reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
        writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;
  
        welcome = reader.readLine () ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "Server says: '" + welcome + "'" ) ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "HELLO" ) ;
  
        writer.println ( "HELLO" ) ;
        response = reader.readLine () ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "Server responds: '" + response + "'" ) ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "HELP" ) ;
  
        writer.println ( "HELP" ) ;
        response = reader.readLine () ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "Server responds: '" + response + "'") ;
  
        // add for log4j: log a message with the debug level
        logger.debug ( "QUIT" ) ;
  
        writer.println ( "QUIT" ) ;
      } catch ( IOException e ) {
  
        // add for log4j: log a message with the warn level
        logger.warn ( "IOException in client.in.readln()" ) ;
  
        System.out.println ( e ) ;
      }
      try {
        Thread.sleep ( 2000 ) ;
      } catch ( Exception ignored ) {}
    }
  }
  
  2.2.2. 服务器程?br />   
  package log4j;
  
  import java.util.* ;
  import java.io.* ;
  import java.net.* ;
  
  // add for log4j: import some package
  import org.apache.log4j.PropertyConfigurator ;
  import org.apache.log4j.Logger ;
  import org.apache.log4j.Level ;
  
  /**
   *
   * <p> Server With Log4j </p>
   * <p> Description: a sample with log4j</p>
   * @version 1.0
   */
  public class ServerWithLog4j {
  
    final static int SERVER_PORT = 8001 ; // this server's port
  
    /*
    add for log4j: class Logger is the central class in the log4j package.
    we can do most logging operations by Logger except configuration.
    getLogger(...): retrieve a logger by name, if not then create for it.
    */
    static Logger logger = Logger.getLogger
   ( ServerWithLog4j.class.getName () ) ;
  
    /**
     *
     * @param args
     */
    public static void main ( String args[]) {
      String clientRequest = null ;
      BufferedReader reader = null ;
      PrintWriter writer = null ;
      ServerSocket server = null ;
      Socket socket = null ;
  
      InputStream in = null ;
      OutputStream out = null ;
  
      /*
      add for log4j: class BasicConfigurator can quickly configure the package.
      print the information to console.
      */
      PropertyConfigurator.configure ( "ServerWithLog4j.properties" ) ;
  
      // add for log4j: set the level
  //    logger.setLevel ( ( Level ) Level.DEBUG ) ;
  
      try{
        server = new ServerSocket ( SERVER_PORT ) ;
  
        // add for log4j: log a message with the info level
        logger.info ( "ServerSocket before accept: " + server ) ;
  
        // add for log4j: log a message with the info level
        logger.info ( "Java server with log4j, on-line!" ) ;
  
        // wait for client's connection
        socket = server.accept() ;
  
        // add for log4j: log a message with the info level
        logger.info ( "ServerSocket after accept: " + server ) ;
  
        in = socket.getInputStream() ;
        out = socket.getOutputStream() ;
  
      } catch ( IOException e ) {
  
        // add for log4j: log a message with the error level
        logger.error ( "Server constructor IOException: " + e ) ;
        System.exit ( 0 ) ;
      }
      reader = new BufferedReader ( new InputStreamReader ( in ) ) ;
      writer = new PrintWriter ( new OutputStreamWriter ( out ), true ) ;
  
      // send welcome string to client
      writer.println ( "Java server with log4j, " + new Date () ) ;
  
      while ( true ) {
        try {
          // read from client
          clientRequest = reader.readLine () ;
  
          // add for log4j: log a message with the debug level
          logger.debug ( "Client says: " + clientRequest ) ;
  
          if ( clientRequest.startsWith ( "HELP" ) ) {
  
            // add for log4j: log a message with the debug level
            logger.debug ( "OK!" ) ;
  
            writer.println ( "Vocabulary: HELP QUIT" ) ;
          }
          else {
            if ( clientRequest.startsWith ( "QUIT" ) ) {
  
              // add for log4j: log a message with the debug level
              logger.debug ( "OK!" ) ;
  
              System.exit ( 0 ) ;
            }
            else {
  
              // add for log4j: log a message with the warn level
              logger.warn ( "Command '"
   + clientRequest + "' not understood." ) ;
  
              writer.println ( "Command '"
   + clientRequest + "' not understood." ) ;
            }
          }
        } catch ( IOException e ) {
  
          // add for log4j: log a message with the error level
          logger.error( "IOException in Server " + e ) ;
  
          System.exit ( 0 ) ;
        }
      }
    }
  }
  
  2.2.3. 配置文g
  
  2.2.3.1. 客户E序配置文g
  
  log4j.rootLogger=INFO, A1
  
  log4j.appender.A1=org.apache.log4j.ConsoleAppender
  
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  
  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
  
  2.2.3.2. 服务器程序配|文?br />   
  log4j.rootLogger=INFO, A1
  
  log4j.appender.A1=org.apache.log4j.ConsoleAppender
  
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  
  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
  
  2.3. 比较
  
   比较q两个应用可以看出,采用Log4jq行日志操作的整个过E相当简单明了,与直接用System.out.println语句q行日志信息输出?方式相比Q基本上没有增加代码量,同时能够清楚地理解每一条日志信息的重要E度。通过控制配置文gQ我们还可以灉|CҎ志信息的格式Q输出目的地{等 斚wQ而单U依靠System.out.println语句Q显焉要做更多的工作?/p>

>>>> 3 . Log4j日志理pȝ单用说?<<<<

    通常Q我们都提供一个名?log4j.properties的文Ӟ在第一ơ调用到Log4JӞLog4J会在c\径(../web-inf/class/当然也可以放到其它Q何目录,只要该目录被包含到类路径中即可)中定位这个文Ӟq读入这个文件完成的配置。这个配|文件告 诉Log4J以什么样的格式、把什么样的信息、输出到什么地斏V?br />   Log4j有三个主要的lgQLoggers(记录?QAppenders(输出?和Layouts(布局)Q这里可单理解ؓ日志cdQ日志要输出的地方和日志以何UŞ式输出。综合用这三个lg可以L的记录信息的cd和别,q可以在q行时控制日志输出的样式和位|。下面对三个lg分别q行说明Q?br />   
  1?Loggers
   Loggerslg在此pȝ中被分ؓ五个U别QDEBUG、INFO、WARN、ERROR和FATAL。这五个U别是有序的,DEBUG < INFO < WARN < ERROR < FATALQ分别用来指定这条日志信息的重要E度,明白q一点很重要Q这里Log4j有一个规则:假设LoggersU别为PQ如果在Loggers中发生了一个别Q比P高,则可以启动,否则屏蔽掉?br /> 假设你定义的U别是infoQ那么error和warn的日志可以显C比他低的debug信息׃昄了?br />   
  JavaE序举例来说Q?br />   
  //建立Logger的一个实例,命名?#8220;com.foo”
   Logger logger = Logger.getLogger("com.foo"); //"com.foo"是实例进行命名,也可以Q?br />   //讄logger的别。通常不在E序中设|logger的别。一般在配置文g中设|?br />   logger.setLevel(Level.INFO);
  Logger barlogger = Logger.getLogger("com.foo.Bar");
  //下面q个h可用Q因为WARN >= INFO
  logger.warn("Low fuel level.");
  //下面q个h不可用,因ؓDEBUG < INFO
  logger.debug("Starting search for nearest gas station.");
  //命名?#8220;com.foo.bar”的实例barlogger会承实?#8220;com.foo”的别。因此,下面q个h可用Q因为INFO >= INFO
  barlogger.info("Located nearest gas station.");
  //下面q个h不可用,因ؓDEBUG < INFO
  barlogger.debug("Exiting gas station search");
  q里“是否可用”的意思是能否输出Logger信息?br />     在对Logger实例q行命名Ӟ没有限制Q可以取L自己感兴的名字。一般情况下以类的所在位|来命名Logger实例Q这是目前来讲比较有效的Logger命名方式。这样可以得每个类建立自己的日志信息,便于理。比如:
  
  static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());
  
  2、Appenders
  用与用日志请求只是Log4j其中的一个小的地方QLog4j日志pȝ允许把日志输出到不同的地方,如控制台QConsoleQ、文ӞFilesQ、根据天数或者文件大生新的文件、以的形式发送到其它地方{等?br />   
  其语法表CZؓQ?br />   
  org.apache.log4j.ConsoleAppenderQ控制台Q?br />   org.apache.log4j.FileAppenderQ文Ӟ
  org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文Ӟ
    org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ
  org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)
  
  配置时用方式ؓQ?br />   log4j.appender.appenderName = fully.qualified.name.of.appender.class
  log4j.appender.appenderName.option1 = value1
  …
    log4j.appender.appenderName.option = valueN
  q样׃ؓ日志的输出提供了相当大的便利?br />   
  3、Layouts
   有时用户希望Ҏ自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供?四种日志输出样式Q如ҎHTML样式、自由指定样式、包含日志别与信息的样式和包含日志旉、线E、类别等信息的样式等{?br />   
  其语法表CZؓQ?br />   
  org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,
  org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,
  org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,
  org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)
  
  配置时用方式ؓQ?br />   
  log4j.appender.appenderName.layout =fully.qualified.name.of.layout.class
  log4j.appender.appenderName.layout.option1 = value1
  …
  log4j.appender.appenderName.layout.option = valueN

>>>>  4 . Log4j的配|?<<<<  
  
  以上是从原理斚w说明Log4j的用方法,在具体Java~程使用Log4j可以参照以下CZQ?br />   
  1?建立Logger实例Q?br />   语法表示Qpublic static Logger getLogger( String name)
  实际使用Qstatic Logger logger = Logger.getLogger(ServerWithLog4j.class.getName ()) ;
  
  2?d配置文gQ?br />   获得了Logger的实例之后,接下来将配置Log4j使用环境Q?br />   语法表示Q?br />   BasicConfigurator.configure()Q自动快速地使用~省Log4j环境?br />   PropertyConfigurator.configure(String configFilename)Q读取用Java的特性文件编写的配置文g?br />   DOMConfigurator.configure(String filename)Q读取XML形式的配|文件?br />   实际使用Q?br />     PropertyConfigurator.configure("ServerWithLog4j.properties");
  
  3?插入日志信息
  完成了以上连个步骤以后,下面可以按日志的不同别插入到你要记录日志的Q何地方了?br />   语法表示Q?br />   Logger.debug(Object message);//调试信息
  Logger.info(Object message);//一般信?br />   Logger.warn(Object message);//警告信息
  Logger.error(Object message);//错误信息
  Logger.fatal(Object message);//致命错误信息

  实际使用Qlogger.info("ServerSocket before accept: " + server);
  
 >>>> 5. 配置q程 <<<<

 在实际编E时Q要使Log4j真正在系l中q行事先q要寚w|文件进行定义。定义步骤就是对Logger、Appender及Layout的分别用?br />     Log4j支持两种配置文g格式Q一U是XML格式的文Ӟ一U是java propertiesQkey=valueQ【JavaҎ文Ӟ?|】。下面我们介l用JavaҎ文件做为配|文件的Ҏ
   具体如下Q?br />   
  1、配|根LoggerQ其语法为:
  log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
         level : 是日志记录的优先U,分ؓOFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的别。Log4j只用四个别,优先U从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的U别Q您可以控制到应用程序中相应U别的日志信息的开兟뀂比如在q里?义了INFOU别Q则应用E序中所有DEBUGU别的日志信息将不被打印出来?br />        appenderName:是指定日志信息输出到哪个地斏V您可以同时指定多个输出目的地?br />    例如Qlog4j.rootLoggerQinfo,A1,B2,C3
  
  2、配|日志信息输出目的地Q其语法为:
  log4j.appender.appenderName = fully.qualified.name.of.appender.class  //
    "fully.qualified.name.of.appender.class" 可以指定下面五个目的C的一个:
          1.org.apache.log4j.ConsoleAppenderQ控制台Q?br />           2.org.apache.log4j.FileAppenderQ文Ӟ
          3.org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文Ӟ
          4.org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ
          5.org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)
             1.ConsoleAppender选项
                    Threshold=WARN:指定日志消息的输出最低层ơ?br />                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br />                     Target=System.errQ默认情况下是:System.out,指定输出控制?br />               2.FileAppender 选项
                    Threshold=WARN:指定日志消息的输出最低层ơ?br />                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br />                     File=mylog.txt:指定消息输出到mylog.txt文g?br />                     Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br />             3.DailyRollingFileAppender 选项
                    Threshold=WARN:指定日志消息的输出最低层ơ?br />                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br />                     File=mylog.txt:指定消息输出到mylog.txt文g?br />                     Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br />                     DatePattern='.'yyyy-ww:每周滚动一ơ文Ӟx周生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
                    1)'.'yyyy-MM: 每月
                    2)'.'yyyy-ww: 每周
                    3)'.'yyyy-MM-dd: 每天
                    4)'.'yyyy-MM-dd-a: 每天两次
                    5)'.'yyyy-MM-dd-HH: 每小?br />                     6)'.'yyyy-MM-dd-HH-mm: 每分?br />             4.RollingFileAppender 选项
                    Threshold=WARN:指定日志消息的输出最低层ơ?br />                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br />                     File=mylog.txt:指定消息输出到mylog.txt文g?br />                     Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br />                     MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小Ӟ会自动滚动Q即原来的内容Udmylog.log.1文g?br />                     MaxBackupIndex=2:指定可以产生的滚动文件的最大数?/p>

实际应用Q?br />   log4j.appender.A1=org.apache.log4j.ConsoleAppender //q里指定了日志输出的W一个位|A1是控制台ConsoleAppender
  
  3、配|日志信息的格式Q其语法为:
  A. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
              "fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:
               1.org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,
         2.org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,
         3.org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,
         4.org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)
                   1.HTMLLayout 选项
                      LocationInfo=true:默认值是false,输出java文g名称和行?br />                       Title=my app file: 默认值是 Log4J Log Messages.
                   2.PatternLayout 选项
                      ConversionPattern=%m%n :指定怎样格式化指定的消息?br />                    3.XMLLayout  选项
                      LocationInfo=true:默认值是false,输出java文g和行?br />    实际应用Q?br />      log4j.appender.A1.layout=org.apache.log4j.PatternLayout

       B. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
           q里需要说明的是日志信息格式中几个符h代表的含义:
           QX? X信息输出时左寚wQ?br />                    %p: 输出日志信息优先U,即DEBUGQINFOQWARNQERRORQFATAL,
                   %d: 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21
                   %r: 输出自应用启动到输出该log信息耗费的毫U数
                   %c: 输出日志信息所属的cȝQ通常是所在类的全?br />                    %t: 输出产生该日志事件的U程?br />                    %l: 输出日志事g的发生位|,相当?C.%M(%F:%L)的组?包括cȝ名、发生的U程Q以及在代码中的行数。D例:Testlog4.main(TestLog4.java:10)
                   %x: 输出和当前线E相兌的NDC(嵌套诊断环境),其用到像java servletsq样的多客户多线E的应用中?br />                    %%: 输出一?%"字符
                   %F: 输出日志消息产生时所在的文g名称
                   %L: 输出代码中的行号
                   %m: 输出代码中指定的消息,产生的日志具体信?br />                    %n: 输出一个回车换行符QWindowsq_?\r\n"QUnixq_?\n"输出日志信息换行
            可以?与模式字W之间加上修饰符来控制其最宽度、最大宽度、和文本的对齐方式。如Q?br />                      1)%20cQ指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q默认的情况下右寚w?br />                      2)%-20c:指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q?-"h定左寚w?br />                      3)%.30c:指定输出category的名Uͼ最大的宽度?0Q如果category的名U大?0的话Q就会将左边多出的字W截掉,但小?0的话也不会有I格?br />                      4)%20.30c:如果category的名U小?0pI格Qƈ且右寚wQ如果其名称长于30字符Q就从左边交q销出的字符截掉?/p>

  q里上面三个步骤是对前面Log4jlg说明的一个简化;下面l出一个具体配|例子,在程序中可以参照执行Q?br />   log4j.rootLogger=INFO,A1QB2
  log4j.appender.A1=org.apache.log4j.ConsoleAppender
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
   Ҏ上面的日志格式,某一个程序的输出l果如下Q?br />   0  INFO 2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
         16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
  16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD
  16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'
  16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP
  16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'
  16  DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT
 
      4. # 当输Z息于回滚文g?/p>

          log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender   //指定以文件的方式输出日志
           log4j.appender.ROLLING_FILE.Threshold=ERROR
           log4j.appender.ROLLING_FILE.File=rolling.log  //文g位置,也可以用变量${java.home}、rolling.log
           log4j.appender.ROLLING_FILE.Append=true
           log4j.appender.ROLLING_FILE.MaxFileSize=10KB  //文g最大尺?br />            log4j.appender.ROLLING_FILE.MaxBackupIndex=1  //备䆾?br />            log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
           log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

××××××××××××××××××××××××××××××××××××××××××××××××
 
>>>> 6. Log4j比较全面的配|?<<<<

 LOG4J的配|之单它遍及于来多的应用中了:Log4J配置文g实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签{全套功能。择其一二用就够用了,

 log4j.rootLogger=DEBUG,CONSOLE,A1,im
 log4j.addivity.org.apache=true

 # 应用于控制台

 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.Threshold=DEBUG
 log4j.appender.CONSOLE.Target=System.out
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

 #应用于文?

 log4j.appender.FILE=org.apache.log4j.FileAppender
 log4j.appender.FILE.File=file.log
 log4j.appender.FILE.Append=false
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 # Use this layout for LogFactor 5 analysis

 # 应用于文件回?

 log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
 log4j.appender.ROLLING_FILE.Threshold=ERROR
 log4j.appender.ROLLING_FILE.File=rolling.log  //文g位置,也可以用变量${java.home}、rolling.log
 log4j.appender.ROLLING_FILE.Append=true       //true:d  false:覆盖
 log4j.appender.ROLLING_FILE.MaxFileSize=10KB   //文g最大尺?br />  log4j.appender.ROLLING_FILE.MaxBackupIndex=1  //备䆾?br />  log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


 #应用于socket
 log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
 log4j.appender.SOCKET.RemoteHost=localhost
 log4j.appender.SOCKET.Port=5001
 log4j.appender.SOCKET.LocationInfo=true
 # Set up for Log Facter 5
 log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
 log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


 # Log Factor 5 Appender
 log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
 log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

 # 发送日志给邮g

 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
 log4j.appender.MAIL.Threshold=FATAL
 log4j.appender.MAIL.BufferSize=10
 log4j.appender.MAIL.From=web@www.wuset.com
 log4j.appender.MAIL.SMTPHost=www.wusetu.com
 log4j.appender.MAIL.Subject=Log4J Message
 log4j.appender.MAIL.To=web@www.wusetu.com
 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
 log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 # 用于数据?
 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
 log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
 log4j.appender.DATABASE.user=root
 log4j.appender.DATABASE.password=
 log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
 log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.A1.File=SampleMessages.log4j
 log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
 log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

 #自定义Appender

 log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

 log4j.appender.im.host = mail.cybercorlin.net
 log4j.appender.im.username = username
 log4j.appender.im.password = password
 log4j.appender.im.recipient = corlin@cybercorlin.net

 log4j.appender.im.layout=org.apache.log4j.PatternLayout
 log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

 

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=488099

 

本文来自CSDN博客Q{载出处:http://blog.csdn.net/hbuzhang/archive/2006/01/13/578231.aspx



absolutej 2009-08-17 09:45 发表评论
]]>
jsp温习 自定义标{V1.1http://m.tkk7.com/absolutedo/archive/2009/08/05/289953.htmlabsolutejabsolutejWed, 05 Aug 2009 07:07:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/08/05/289953.htmlhttp://m.tkk7.com/absolutedo/comments/289953.htmlhttp://m.tkk7.com/absolutedo/archive/2009/08/05/289953.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/289953.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/289953.html阅读全文

absolutej 2009-08-05 15:07 发表评论
]]>
jsp温习 自定义标{V1.0http://m.tkk7.com/absolutedo/archive/2009/07/28/288667.htmlabsolutejabsolutejTue, 28 Jul 2009 01:01:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/07/28/288667.htmlhttp://m.tkk7.com/absolutedo/comments/288667.htmlhttp://m.tkk7.com/absolutedo/archive/2009/07/28/288667.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/288667.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/288667.html阅读全文

absolutej 2009-07-28 09:01 发表评论
]]>
java学习:C/Sl构的登陆页?/title><link>http://m.tkk7.com/absolutedo/archive/2009/06/04/280095.html</link><dc:creator>absolutej</dc:creator><author>absolutej</author><pubDate>Thu, 04 Jun 2009 15:03:00 GMT</pubDate><guid>http://m.tkk7.com/absolutedo/archive/2009/06/04/280095.html</guid><wfw:comment>http://m.tkk7.com/absolutedo/comments/280095.html</wfw:comment><comments>http://m.tkk7.com/absolutedo/archive/2009/06/04/280095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/absolutedo/comments/commentRss/280095.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/absolutedo/services/trackbacks/280095.html</trackback:ping><description><![CDATA[准备l公司的一个项目写一个C/Sl构的登陆页?惛_CWEB目交互,其实也就是登陆的功能?目前主要~写了一个登陆界?C/Sl构的界面真的不太好布局,如果不用专业的工L?,具体的事件的监听和响应还没有?最q一D|间会完成!<br /> 具体界面如下?<br /> <br /> <img height="250" alt="" src="http://m.tkk7.com/images/blogjava_net/absolutedo/login2.jpg" width="300" border="0" /><br /> <br />  具体代码如下:<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.jbase.ui;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.Container;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.event.ActionEvent;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.event.ActionListener;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JButton;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JFrame;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JLabel;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JPanel;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JPasswordField;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JTextField;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> LoginUI </span><span style="color: #0000ff">extends</span><span style="color: #000000"> JFrame<br /> <img id="Codehighlighter1_336_2202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_336_2202_Open_Text.style.display='none'; Codehighlighter1_336_2202_Closed_Image.style.display='inline'; Codehighlighter1_336_2202_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_336_2202_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_336_2202_Closed_Text.style.display='none'; Codehighlighter1_336_2202_Open_Image.style.display='inline'; Codehighlighter1_336_2202_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_336_2202_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_336_2202_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> JLabel name,code;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> JTextField username;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000">  JPasswordField password;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> JButton submit,reset;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> JPanel orgPanel;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> width,height;<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> LoginUI()<br /> <img id="Codehighlighter1_540_1909_Open_Image" onclick="this.style.display='none'; Codehighlighter1_540_1909_Open_Text.style.display='none'; Codehighlighter1_540_1909_Closed_Image.style.display='inline'; Codehighlighter1_540_1909_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_540_1909_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_540_1909_Closed_Text.style.display='none'; Codehighlighter1_540_1909_Open_Image.style.display='inline'; Codehighlighter1_540_1909_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_540_1909_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_540_1909_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">super</span><span style="color: #000000">(</span><span style="color: #000000">"</span><span style="color: #000000">pȝ登陆界面</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        name</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JLabel(</span><span style="color: #000000">"</span><span style="color: #000000">用户?</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        code</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JLabel(</span><span style="color: #000000">"</span><span style="color: #000000">?nbsp; ?</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        name.setBounds(</span><span style="color: #000000">20</span><span style="color: #000000">, </span><span style="color: #000000">20</span><span style="color: #000000">, </span><span style="color: #000000">55</span><span style="color: #000000">, </span><span style="color: #000000">50</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        code.setBounds(</span><span style="color: #000000">20</span><span style="color: #000000">, </span><span style="color: #000000">90</span><span style="color: #000000">, </span><span style="color: #000000">55</span><span style="color: #000000">, </span><span style="color: #000000">50</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        username</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JTextField(</span><span style="color: #000000">10</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        password</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JPasswordField();<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        username.setBounds(</span><span style="color: #000000">90</span><span style="color: #000000">, </span><span style="color: #000000">30</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">, </span><span style="color: #000000">25</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        password.setBounds(</span><span style="color: #000000">90</span><span style="color: #000000">, </span><span style="color: #000000">100</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">, </span><span style="color: #000000">25</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        submit</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JButton(</span><span style="color: #000000">"</span><span style="color: #000000">登陆</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        reset</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JButton(</span><span style="color: #000000">"</span><span style="color: #000000">重置</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        submit.setBounds(</span><span style="color: #000000">80</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">, </span><span style="color: #000000">60</span><span style="color: #000000">, </span><span style="color: #000000">30</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        reset.setBounds(</span><span style="color: #000000">170</span><span style="color: #000000">, </span><span style="color: #000000">150</span><span style="color: #000000">,</span><span style="color: #000000">60</span><span style="color: #000000">, </span><span style="color: #000000">30</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        orgPanel</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> JPanel();<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        orgPanel.setLayout(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        orgPanel.add(name);orgPanel.add(username);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        orgPanel.add(code);orgPanel.add(password);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        orgPanel.add(submit);orgPanel.add(reset);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        submit.addActionListener(</span><span style="color: #0000ff">new</span><span style="color: #000000"> SubmitActionListener());</span><span style="color: #008000">//</span><span style="color: #008000">内部cd现方?/span><span style="color: #008000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">        <br /> <img id="Codehighlighter1_1259_1382_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1259_1382_Open_Text.style.display='none'; Codehighlighter1_1259_1382_Closed_Image.style.display='inline'; Codehighlighter1_1259_1382_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1259_1382_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1259_1382_Closed_Text.style.display='none'; Codehighlighter1_1259_1382_Open_Image.style.display='inline'; Codehighlighter1_1259_1382_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        reset.addActionListener(</span><span style="color: #0000ff">new</span><span style="color: #000000"> ActionListener()</span><span id="Codehighlighter1_1259_1382_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_1259_1382_Open_Text"><span style="color: #000000">{</span><span style="color: #008000">//</span><span style="color: #008000">匿名内部cd现方?/span><span style="color: #008000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">            </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> actionPerformed(ActionEvent e)<br /> <img id="Codehighlighter1_1321_1378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1321_1378_Open_Text.style.display='none'; Codehighlighter1_1321_1378_Closed_Image.style.display='inline'; Codehighlighter1_1321_1378_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1321_1378_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1321_1378_Closed_Text.style.display='none'; Codehighlighter1_1321_1378_Open_Image.style.display='inline'; Codehighlighter1_1321_1378_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_1321_1378_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_1321_1378_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                username.setText(</span><span style="color: #000000">""</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                password.setText(</span><span style="color: #000000">""</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        Container contentPanel</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">.getContentPane();<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        contentPanel.add(orgPanel);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.setSize(</span><span style="color: #000000">300</span><span style="color: #000000">,</span><span style="color: #000000">250</span><span style="color: #000000">);            <br /> <img id="Codehighlighter1_1497_1746_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1497_1746_Open_Text.style.display='none'; Codehighlighter1_1497_1746_Closed_Image.style.display='inline'; Codehighlighter1_1497_1746_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1497_1746_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1497_1746_Closed_Text.style.display='none'; Codehighlighter1_1497_1746_Open_Image.style.display='inline'; Codehighlighter1_1497_1746_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_1497_1746_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_1497_1746_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />         * 讄H口居中昄<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />         * width=Toolkit.getDefaultToolkit().getScreenSize().getWidth();<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />         * height=Toolkit.getDefaultToolkit().getScreenSize().getHeight();    <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />         * this.setLocation((int)(width-this.getWidth())/2, (int)(height-this.getHeight())/2);            <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        </span><span style="color: #008000">*/</span></span><span style="color: #000000">            <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.setLocationRelativeTo(</span><span style="color: #0000ff">null</span><span style="color: #000000">); <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.setVisible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.setResizable(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_1912_1936_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1912_1936_Open_Text.style.display='none'; Codehighlighter1_1912_1936_Closed_Image.style.display='inline'; Codehighlighter1_1912_1936_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1912_1936_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1912_1936_Closed_Text.style.display='none'; Codehighlighter1_1912_1936_Open_Image.style.display='inline'; Codehighlighter1_1912_1936_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1912_1936_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_1912_1936_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />     * 内部cd现submit监听<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">class</span><span style="color: #000000"> SubmitActionListener </span><span style="color: #0000ff">implements</span><span style="color: #000000"> ActionListener<br /> <img id="Codehighlighter1_1993_2137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1993_2137_Open_Text.style.display='none'; Codehighlighter1_1993_2137_Closed_Image.style.display='inline'; Codehighlighter1_1993_2137_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1993_2137_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1993_2137_Closed_Text.style.display='none'; Codehighlighter1_1993_2137_Open_Image.style.display='inline'; Codehighlighter1_1993_2137_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1993_2137_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_1993_2137_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> actionPerformed(ActionEvent e)<br /> <img id="Codehighlighter1_2042_2134_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2042_2134_Open_Text.style.display='none'; Codehighlighter1_2042_2134_Closed_Image.style.display='inline'; Codehighlighter1_2042_2134_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2042_2134_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2042_2134_Closed_Text.style.display='none'; Codehighlighter1_2042_2134_Open_Image.style.display='inline'; Codehighlighter1_2042_2134_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_2042_2134_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_2042_2134_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(username.getText()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">\t</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">String.valueOf(password.getPassword()));<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] ss)<br /> <img id="Codehighlighter1_2180_2200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2180_2200_Open_Text.style.display='none'; Codehighlighter1_2180_2200_Closed_Image.style.display='inline'; Codehighlighter1_2180_2200_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2180_2200_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2180_2200_Closed_Text.style.display='none'; Codehighlighter1_2180_2200_Open_Image.style.display='inline'; Codehighlighter1_2180_2200_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_2180_2200_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_2180_2200_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">new</span><span style="color: #000000"> LoginUI();<br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <img src ="http://m.tkk7.com/absolutedo/aggbug/280095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/absolutedo/" target="_blank">absolutej</a> 2009-06-04 23:03 <a href="http://m.tkk7.com/absolutedo/archive/2009/06/04/280095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java学习:对半查找法 递归写法http://m.tkk7.com/absolutedo/archive/2009/05/05/268909.htmlabsolutejabsolutejTue, 05 May 2009 01:09:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/05/05/268909.htmlhttp://m.tkk7.com/absolutedo/comments/268909.htmlhttp://m.tkk7.com/absolutedo/archive/2009/05/05/268909.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/268909.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/268909.html 对半查找 Q?span lang="EN-US" style="font-family: Times New Roman; mso-bidi-font-size: 10.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">Binary SearchQ的基本思想是,首先K与表中间Q记录)的关键词 K n/2比较Q其l果有三U情况:Q?/span>KQ?/span>Kn/2Q?/span>K= K n/2 Q?/span>KQ?/span>Kn/2Q;然后Ҏ比较l果p定下一ơ应该到表的哪一半中L找(或查找成功)Qƈ对确定了的这一半重复上q过E,如此下去直到表的长度递减?/span>1  .

public class IntegerQuery {
    
public static void query(int[] arrays,int queryVal,int begin,int end)
    
{
        
int centerIndex=(begin+end)/2;
        
int centerVal=arrays[centerIndex];
        
if(begin>end)//init error
        {
            System.out.println(queryVal
+" not in this array!");
            
return;
        }

        
if(queryVal==centerVal)
        
{
            System.out.println(queryVal
+" in this array,it's index is: "+centerIndex);
            
return;
        }

        
        
if(queryVal>centerVal)
            begin
=centerIndex+1;
        
else    
            end
=centerIndex-1;        
        query(arrays,queryVal,begin,end);
    }


    
public static void main(String[] args){
        
int[] arrays={1,2,4,5,7,9,12,15,24,32};
        
int queryVal=24;
        query(arrays,queryVal,
0,arrays.length-1);
    }

}



absolutej 2009-05-05 09:09 发表评论
]]>
Java学习 NineByNine 乘法口诀http://m.tkk7.com/absolutedo/archive/2009/04/21/266863.htmlabsolutejabsolutejTue, 21 Apr 2009 14:50:00 GMThttp://m.tkk7.com/absolutedo/archive/2009/04/21/266863.htmlhttp://m.tkk7.com/absolutedo/comments/266863.htmlhttp://m.tkk7.com/absolutedo/archive/2009/04/21/266863.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/266863.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/266863.htmlpackage com.jbase.test;

public class NinebyNine {
    
private static int m=1;
    
private static int n=1;
    
public static void main(String args[])
    
{
        
/*
        for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=i;j++)
            {
                if(i==j)
                    System.out.println(i+"x"+j+"="+i*j+"\t");
                else
                    System.out.print(i+"x"+j+"="+i*j+"\t");                
            }
        }
        
*/

        
while(m<=9)
        
{
            
while(n<=m)
            
{
                
if(n==m)
                    System.out.println(m
+"x"+n+"="+m*n+"\t");
                
else
                    System.out.print(m
+"x"+n+"="+m*n+"\t");
                n
++;
            }

            m
++;
            n
=1;
        }

        
    }

}


呵呵,在用sql写小学生的九九乘法口诀,无奈sql中没有类似for循环的语?好象只好while来控?写来写去,效果是Z?自己先用java写了?用两个for循环,很快写好了,只是调整了一下输出格?但是我用while循环控制语句的时?一开始还是出错了,x惛_跛_内层循环的时?j的D?开?我竟然在内层循环q样?
if(n==m)
{
  n
=1;
  n
++;
}
直接Dmyeclipse down掉了,见笑?呵呵!

sql 写的乘法口诀如下:
 1declare @i int,@j int,@str varchar(1024)
 2set @i=1 
 3set @j=1
 4set @str=''
 5while(@i<=9)
 6begin
 7   while(@j<=@i)
 8   begin
 9      if @j=@i
10          set @str=@str+char(9)+cast(@i as varchar(10))+'*'+convert(varchar(10),@j)+'='+cast(@i*@j as varchar(10))+char(13)
11      else
12        set @str=@str+char(9)+cast(@i as varchar(10))+'*'+convert(varchar(10),@j)+'='+cast(@i*@j as varchar(10))            
13      set @j=@j+1
14   end
15   set @i=@i+1
16   set @j=1
17end
18print @str

打印效果:



absolutej 2009-04-21 22:50 发表评论
]]>
Java学习 JDBCq接SQLServer2K试http://m.tkk7.com/absolutedo/archive/2008/12/04/244270.htmlabsolutejabsolutejThu, 04 Dec 2008 01:33:00 GMThttp://m.tkk7.com/absolutedo/archive/2008/12/04/244270.htmlhttp://m.tkk7.com/absolutedo/comments/244270.htmlhttp://m.tkk7.com/absolutedo/archive/2008/12/04/244270.html#Feedback0http://m.tkk7.com/absolutedo/comments/commentRss/244270.htmlhttp://m.tkk7.com/absolutedo/services/trackbacks/244270.html刚装完数据库,JDK什么的,呵呵,可能是由于自己没有整理的习惯,每次都要写个q接试c?看JDBCq接是否成功.今天把以前写的一个简单的JDBC试cL到博客里,以后要用,直接考过d可以?

import java.sql.SQLException;
import java.lang.ClassNotFoundException;
import java.sql.Connection ;
import java.sql.DriverManager;

public class T
{

    public static void main(String[] args)
    {
             try
             {
                      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                      Connection  conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433","sa","sa");
                      System.out.println("Weather Connect Success?"+conn!=null?"Success":"Failure");
              }
             catch(ClassNotFoundException cnfe)
             {
                      cnfe.printStackTrace();
             }
              catch(SQLException e)
              {
                      e.printStackTrace();
              }     
    }   
}



absolutej 2008-12-04 09:33 发表评论
]]>
վ֩ģ壺 鶹ȫַ| ҹƷӰ߹ۿ| ҹӰ| 2019Ļmvѿ| ɫۼۺ| aëƬ| ɫͼƬС˵| պӰ| ŮƵ| Ļѵַվ| ɫ¶ۺ| ȫԼƵ| kk4kkƵëƬ| lƷ߹ۿ| AVһ| ޾Ʒվ߲| AëƬڵ| ɫ͵͵ۺAV| ŮɫëƬѿ| վɫƵѹۿ45| ޾Ʒ벻߲HE| պ尡Ƶ߹ۿ| ۺһ| ҹ99Ƶ| ѹۿӰ| 99þþƷ| ԲƵ| ˳߹ۿ| avպav| ˽Ƶ75| xxxxxܴƬ߹ۿ| ޹ƷȾþ| ѹۿaëƬ| baoyu116.Ƶ| պƷav| Ƭ91Ʒѹۿͬ| һ| ձһ߲Ͷ| avר߲| ѲСƵ| þùһƬѹۿ|