yang's profile如山岿然,如风啸然,如林静然~~PhotosBlogLists Tools Help

Blog


    November 13

    October 23

    安装sleepycat步骤备忘

    安装sleepycat步骤备忘:
     
     
    从下面的URL下载zlib 1.2.3的源代码:http://www.sleepycat.com
    tar zvxf db-4.3.29.tar.gz
    cd db-4.3.29
    cd build_unix/
    ../dist/configure \
    CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
    make
    make install
    env
    export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.3/lib

     

    September 05

    what's up--一首好歌的中文译本-奋进!

    25年的生命已经过去
      我仍在竭力登攀那座希望的山脊
      为了人生有一个目的。
      
      我早就看透
      这个世界是一张网
      它由权贵的裙带所编织
      随你爱怎么解释都可以。
      
      我有时躺在床上哭泣
      想把所有乱七八糟的念头从头脑里驱逐
      于是有一天出现了奇迹。
      
      早晨醒来,我走出户外
      深深地吸了一口气
      我兴奋异常,我大声喊叫
      用尽全身的力气
      
      这是什么回事?
      我说:嘿,这是为什么?
      我说:嘿,这是什么回事!!
      我说:嘿,这到底是什么回事!!!
      
      我努力,我挣扎,哦,我的老天,我从不偷懒
      我每时每刻都努力
      在这弱肉强食的体制的牢笼里。
      
      我祷告,我祈求,哦,我的上帝,我真的祷告
      我每日每夜都祈求上帝
      快来一次翻天覆地的革命!
      
      25年的人生已经过去,
      我仍然竭力登攀那座希望的山脊
      为了人生有一个目的
      为了生命有一点意义。 
    June 27

    老黄有点二!

    尤其是这一句:“意大利万岁!”----用得着么???
    几近疯狂的语无伦次,傻了吧唧的滥用激情,老黄真的有点不知所措了!
    即便喜欢意大利,也不用在全国人民面前表达自己那点所谓的热情和热爱,喜欢马尔蒂尼也不用说人家神灵附体,喜欢历史上各个年代的意大利左后卫也不用把他们说的如此完美,甚至外貌都评价的宛如天仙般……况且个人认为意大利踢得确实不怎么的,这是事实,在我看来,意大利队应该被击败,无论是从战术还是技术角度,都不是一个成熟的球队。
    naive的老黄!

    mysql守护进程挂了,解决方法。

    错误信息:
     
    [root@localhost bin]# mysql start
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
     
    解决方法:
    #chown -R mysql:mysql /var/lib/mysql

    [root@localhost beinan]# /etc/init.d/mysqld start
    启动 MySQL: [ 确定 ]
    [root@localhost lib]# mysqladmin -uroot password '123456'
    [root@localhost lib]# mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 3 to server version: 4.1.11

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer
    June 26

    老了,我真的老了!

    发现我曾经也年轻过……呵呵,今天某个小姑娘告诉我她属虎的,我一听,小我5岁,真年轻啊!算了算,这个年纪也在读大一,大二,我记得我在这个年龄的时候,记得有人问我多少岁了,我说我属鸡的,人家会说:真年轻啊!!当时不以为然,总觉得自己很老了,怎么还有人说我年轻呢?现在觉得了,时间流逝真的让我留恋以往,当年的自己多么年轻呢,而现在只能被30岁以上的人说我年轻了,光阴的故事不知不觉中改变了一个人的容颜和心灵,永久的只是那不曾被遗忘的青春的故事,那回忆中曾经在年轻的时候流淌的时光……
    May 12

    给我一点爱

    你告诉我,别问你从哪来
    你告诉我,一切听天安排
    也许是我从前错过太多
    所以我不敢对你有所依赖
    你告诉我,男人应该象海
    你告诉我,只需学
    会忍耐
    把所有悲伤都统统丢掉让他过去
    你要塑造一个新的我,虽然现在我还有点无奈
    给我一点爱,让我站起来
    给我一点亮,让我看明白
    你到底是谁,在为谁而奔忙你到底是谁,是不是为我而来

    当太阳收起了温暖的光滑
    疲惫的我想要休息一下
    含着泪水闭上沉重的眼帘
    一个人默默走向梦的天崖
    梦中的世界象一幅画
    梦中的自己是那么高大
    梦里梦到了你梦到个笑话
    梦到了所有的美好和我的家
    于是我就可以让你留下
    于是我就可以等你回答
    于是我就可以不再流浪
    于是我就可以陪你回家
    你说梦中的我有一点傻
    你说梦中的你不会害怕
    千万别把我唤醒让我去吧
    梦里不再有忧伤没有牵挂
    梦中的世界象一幅画
    梦中的自己是那麽高大
    梦里梦到了你梦到个笑话
    梦到了所有的美好和我的家

    April 10

    Proxool连接池连oracle数据库配置。

    ricky jdbc:oracle:thin:QXTERM/QXTERM@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=61.135.154.156)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=QXTERM))) oracle.jdbc.driver.OracleDriver 500 select CURRENT_DATE
    March 17

    技术日志:发现一个问题,mysql复制数据库easy

    文件到库就到,这种方式的数据库看来确实方便快捷,以后多用用看看。

    技术日志:用于备份mysql数据库脚本文件

    以下的脚本文件专门用于备份mysql数据库,放在/etc/cron.daily下每天自动执行一次。

    #!/bin/bash
    DBName=forums
    DBUser=root
    DBPasswd=
    BackupPath=/home/yangruijun/
    LogFile=/home/yangruijun/mobileforumdb.log
    DBPath=/usr/local/mysql/data/
    #BackupMethod=mysqldump
    #BackupMethod=mysqlhotcopy
    #BackupMethod=tar

    NewFile="$BackupPath"db$(date +%y%m%d).tgz
    DumpFile="$BackupPath"db$(date +%y%m%d)
    OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz

    echo "-------------------------------------------" >> $LogFile
    echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
    echo "--------------------------" >> $LogFile
    #Delete Old File
    if [ -f $OldFile ]
    then
    rm -f $OldFile >> $LogFile 2>&1
    echo "[$OldFile]Delete Old File Success!" >> $LogFile
    else
    echo "[$OldFile]No Old Backup File!" >> $LogFile
    fi

    if [ -f $NewFile ]
    then
    echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
    else
    case $BackupMethod in
    mysqldump)
    if [ -z $DBPasswd ]
    then
    mysqldump -u $DBUser --opt $DBName > $DumpFile
    else
    mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
    fi
    tar czvf $NewFile $DumpFile >> $LogFile 2>&1
    echo "[$NewFile]Backup Success!" >> $LogFile
    rm -rf $DumpFile
    ;;
    mysqlhotcopy)
    rm -rf $DumpFile
    mkdir $DumpFile
    if [ -z $DBPasswd ]
    then
    mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
    else
    mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
    fi
    tar czvf $NewFile $DumpFile >> $LogFile 2>&1
    echo "[$NewFile]Backup Success!" >> $LogFile
    rm -rf $DumpFile
    ;;
    *)
    /etc/init.d/mysqld stop >/dev/null 2>&1
    tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
    /etc/init.d/mysqld start >/dev/null 2>&1
    echo "[$NewFile]Backup Success!" >> $LogFile
    ;;
    esac
    fi

    echo "-------------------------------------------" >> $LogFile

    March 16

    照镜子和照相哪个又接近于人最真实的相貌呢?

    发现了一个问题:
    对于一个人,照镜子和照相会呈现不同的相貌,这个现象不仅发生在我身上,而且广大的同志们也有此感,因为在天涯上看到这么一个帖子,大家探讨的就是这个问题,很深入,很激烈啊!
     
     
     
    很多人都会觉得自己照镜子更好看些,因为不上相,所以照相的感觉很差,出来的样子自己都把自己否认掉了:这哪是自己啊?这么丑!看看这位网友问得:我一直想问个问题,在其他人眼里的自己应该是镜子里那样还是相机那样呢?是啊,由此我想到了超女,比如李宇春,我就觉得她不好看,但她出名了啊!很多女孩甚至女青年都像看到劳勃迪尼诺,莱昂纳多,布拉德皮特,城武这样的帅哥般一样迷上了这位看似男女都不太分明的小女孩,但我不能肯定的是,这些迷上她的人看到李宇春的相貌是不是和我看到的不一样呢?他们看到的是否是男人味十足,吸引女人青睐的一个帅女人?反正我的眼睛看来李宇春没有达到这样的程度,看来每个人的眼睛看同一个人的相貌确实有别啊!

    技术日志:mysql数据库表的字符编码设置方法。

    这个问题困扰过我,现在已经知道怎么设置了:
     
    Alter Table tablename convert to character set 'utf8';
     
    真正领略到了mysql的变态之处,写成'utf-8'中间多一杠不行,必须原样照搬,严谨。

    技术日志:-jar参数运行应用时classpath的设置方法(引用)

    当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。

    **解决方案**

    一 BootStrap class扩展方案

    Java 命令行提供了如何扩展bootStrap 级别class的简单方法.
    -Xbootclasspath:     完全取代基本核心的Java class 搜索路径.
                                       不常用,否则要重新写所有Java 核心class
    -Xbootclasspath/a: 后缀在核心class搜索路径后面.常用!!
    -Xbootclasspath/p: 前缀在核心class搜索路径前面.不常用,避免
                                       引起不必要的冲突.

    语法如下:
     (分隔符与classpath参数类似,unix使用:号,windows使用;号,这里以unix为例)
     java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar

    二 extend class 扩展方案

    Java exten class 存放在{Java_home}\jre\lib\ext目录下.当调用Java时,对扩展class路径的搜索是自动的.总会搜索的.这样,解决的方案就很简单了,将所有要使用的第三方的jar包都复制到ext 目录下.

    三 User class扩展方案

    当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设置为codebase目录,所有的class搜索都在这个目录下开始.所以如果使用了其他第三方的jar包,一个比较可以接受的可配置方案,就是利用jar包的Manifest扩展机制.
    步骤如下:

     1.将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下. 比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包复制到/usrhome目录下或/usrhome/lib 等类似的子目录下.

     2.修改Manifest 文件

     在Manifest.mf文件里加入如下行

     Class-Path:classes12.jar lib/thirdlib.jar

     Class-Path 是可执行jar包运行依赖的关键词.详细内容可以参考 http://java.sun.com/docs/books/tutorial/ext/index.html


    以上三种方法推荐第一种,扩展性好,操作起来也最方便.
    另外编写自己的ClassLoader,来动态载入class,是更加复杂和高级技术.限于篇幅,不赘述.有兴趣了解可以去google一下custom classloader

    Java的安全机制随不同的JDK版本有不同的变化,会影响很多核心CLASS,比如Thread,所以很多大型商业软件,要求JDK的版本很严格.部分原因也在此.这也要求在发布自己编写的应用时候,不管大小,都要说明开发和测试的JDK版本.


    本文所述方法测试基于j2sdk 1.4.2_04-b05

    ----------------------------------------------------------------------------------------------

    附:背景知识

    自JDK 1.2以后,JVM采用了委托(delegate)模式来载入class.采用这种设计的原因可以参考http://java.sun.com/docs/books/tutorial/ext/basics/load.html

    归纳来讲:是基于JVM sandbox(沙盒)安装模型上提供应用层的可定制的安全机制.


    Java虚拟机(JVM)寻找Class的顺序

    1. Bootstrap classes

    属于Java 平台核心的class,比如java.lang.String等.及rt.jar等重要的核心级别的class.这是由JVM Bootstrap class loader来载入的.一般是放置在{java_home}\jre\lib目录下

    2. Extension classes

    基于Java扩展机制,用来扩展Java核心功能模块.比如Java串口通讯模块comm.jar.一般放置在{Java_home}\jre\lib\ext目录下

    3. User classes

    开发人员或其他第三方开发的Java程序包.通过命令行的-classpath或-cp,或者通过设置CLASSPATH环境变量来引用.JVM通过放置在{java_home}\lib\tools.jar来寻找和调用用户级的class.常用的javac也是通过调用tools.jar来寻找用户指定的路径来编译Java源程序.这样就引出了User class路径搜索的顺序或优先级别的问题.

     3.1 缺省值:调用Java或javawa的当前路径(.),是开发的class所存在的当前目录
     3.2 CLASSPATH环境变量设置的路径.如果设置了CLASSPATH,则CLASSPATH的值会覆盖缺省值
     3.3 执行Java的命令行-classpath或-cp的值,如果制定了这两个命令行参数之一,它的值会覆盖环境变量CLASSPATH的值
     3.4 -jar 选项:如果通过java -jar 来运行一个可执行的jar包,这当前jar包会覆盖上面所有的值.换句话说,-jar 后面所跟的jar包的优先级别最高,如果指定了-jar选项,所有环境变量和命令行制定的搜索路径都将被忽略.JVM APPClassloader将只会以jar包为搜索范围.
    有关可执行jar有许多相关的安全方面的描述,可以参考http://java.sun.com/docs/books/tutorial/jar/ 来全面了解.

    这也是为什么应用程序打包成可执行的jar包后,不管你怎么设置classpath都不能引用到第三方jar包的东西了.

    技术日志:积累察看日志的两个命令

    1,实时察看日志,日志文件1.log
     
    tail -f 1.log|grep 过滤内容
     
    实时的,最新的日志在最后
     
    2,查询日志,搜索错误404记录,打印,排序,唯一性排选,取字段,去冒号集于一身:
    grep "/freetry/java_wappush/gamecity.jsp" access_log.0927 | grep " 404 " | awk '{print $13}' | sort | uniq | awk -F\" '{print $2}'
     
    多看看,记得牢:)

    技术日志:执行脚本,还是关于发邮件工具的脚本

    放在服务器上/home/yangruijun/目录下md.sh的脚本如下,chmod +x md.sh 获取该文件的执行权限,那么即可执行,例如:
     
        参数格式:h welcome 20051119.html /home/yangruijun/file/ yangruijun@kongzhong.com
        说明:
         * @String    h                            邮件格式(分为“t“ or ”h“);
         * @String    welcome                      标题;
         * @String    20051119.html                邮件内容(文件形式 or 字符串);
         * @String    /home/yangruijun/file/       如果是文件,那么就写成路径;
         * @String    yangruijun@kongzhong.com     目的地址(多个,用”,“隔开);
     
    md.sh的内容:
     
    #!/bin/bash
    PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/sbin:/usr/local/sbin:/home/yangruijun
    export PATH
    export LANG=en_US
    export NLS_LANG=simplified chinese
    java -Xbootclasspath/a:activation.jar:mail.jar: -jar ddd.jar $*
     
    如此,需要把activation.jar,mail.jar两个jar包放置于:/home/yangruijun/路径下

    技术日志:javax mail发邮件程序的设计

    apahce封装了一个可用的包org.apache.commons.mail.*;
    这个包可以很容易的收发邮件,但是我尝试了一下,觉得乱码问题依旧是个困扰人的麻烦问题;于是直接用javax.mail包写这个工具:
    /*
     * Created on 2006-3-15
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package util;
    /**
     * @author Ricky Yang
     * 发邮件工具(发送txt,html,字符串内容类型)
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;

    public class sendMail {
      //MIME邮件对象 
      private MimeMessage mimeMsg;
      //邮件会话对象
      private Session session;
      //系统属性
      private Properties props;
      //smtp是否需要认证
      private boolean needAuth = false;
      //smtp认证用户名和密码,假如需要的话,得设置
      private String username = "";
      private String password = "";
      //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
      private Multipart mp;
      //单例模式构造单一对象
      private static sendMail sendmail = null;
      //本例取mail.kongzhong.com作为邮件服务器
      private static String smtps = "mail.kongzhong.com";
     
      /**
       * 生成该类对象
       */
      public static sendMail getInstance(){
     if(sendmail == null)
        sendmail = new sendMail(smtps);
        return sendmail;
      }
     
      /**
       * 初始化邮件服务器,需要邮件服务器地址
       */
      public sendMail(String smtp){
         this.setSmtpHost(smtp);
         this.createMimeMessage();
      }
      /**
       * 主函数入口
       */
      public static void main(String[] args)
      {
      if(args!= null && args.length == 5)
       {
        String format = analFormat(args[0]);
        String title = analTitle(args[1]);
        String path = analPath(args[3]);
        String content = analContent(args[2],path);
      String address[] = analAddress(args[4]);
      if(format.equals("t"))
      {
       sendMail email = sendMail.getInstance();
       String copyto = "";
       try
       {
         for(int i = 0;i<address.length;i++)
         {
          if(!address[i].equals(""))
          {
           if(i > 0)
               copyto = copyto + "," + address[i];
           if(i == 0)
             copyto = copyto + address[i];
          }
         }
         email.setTo(copyto);
         email.setFrom("root@kongzhong.com");
         email.setSubject(title);
         email.setBodys(content);
         email.sendout();
       }
       catch(Exception e){
         System.err.print("在构造文本邮件时错误发生: "+e);
       }
      }
      if(format.equals("h"))
      {
       sendMail email = sendMail.getInstance();
       String copyto = "";
       try
       {
         for(int i = 0;i<address.length;i++)
         {
          if(!address[i].equals(""))
          {
           if(i > 0)
               copyto = copyto + "," + address[i];
           if(i == 0)
                copyto = copyto + address[i];
          }
         }
         email.setTo(copyto);
           email.setFrom("root@kongzhong.com");
           email.setSubject(title);
           email.setBody(content);
         email.sendout();
       }
       catch(Exception e)
       {
          System.err.print("在构造html文件是错误发生:"+e);
       }
      }
       }
      else
        System.out.println("对不起,没有参数无法发送!");
     }
     
     
      /**
       * 设置stmphost
       */
      public void setSmtpHost(String hostName) {
         if(props == null)
          props = System.getProperties();
         props.put("mail.smtp.host",hostName);
      }
      /**
       * 创建MimeMessage,MimeMultipart
       */
      public void createMimeMessage()
      {
         try
      {
           session = Session.getDefaultInstance(props,null);
         }
         catch(Exception e)
      {
           System.err.println("获取邮件会话对象时发生错误!"+e);
         }
         try
      {
           mimeMsg = new MimeMessage(session);
           mp = new MimeMultipart();
         }
         catch(Exception e)
      {
           System.err.println("创建MIME邮件对象失败!"+e);
         }
      }
      /**
       * 设置权限属性
       */
      public void setNeedAuth(boolean need)
      {
       if(props == null)
        props = System.getProperties();
        if(need)
        {
          props.put("mail.smtp.auth","true");
        }
        else
        {
          props.put("mail.smtp.auth","false");
        }
       }
      /**
       * 设置邮件服务器用户名密码
       */
       public void setNamePass(String name,String pass)
       {
           username = name;
           password = pass;
       }
       /**
        * 设置主题
        */
       public void setSubject(String mailSubject)
       {
        try
     {
            mimeMsg.setSubject(mailSubject);
        }
        catch(Exception e)
     {
            System.err.println("设置邮件主题发生错误!");
        }
       }
       /**
        * 设置邮件内容(html)
        */
       public void setBody(String mailBody)
       {
          try
       {
             BodyPart bp = new MimeBodyPart();
             bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312");
             mp.addBodyPart(bp);
          }
          catch(Exception e)
       {
             System.err.println("设置邮件正文时发生错误!"+e);
           }
        }
       /**
        * 设置邮件内容(txt)
        */
       public void setBodys(String mailBody)
       {
          try
       {
             BodyPart bp = new MimeBodyPart();
             bp.setContent(mailBody,"text/plain;charset=GB2312");
             mp.addBodyPart(bp);
          }
          catch(Exception e)
       {
             System.err.println("设置邮件正文时发生错误!"+e);
           }
        }
       /**
        * 设置邮件附件
        */
        public void addFileAffix(String filename)
        {
          try
       {
            BodyPart bp = new MimeBodyPart();
            FileDataSource fileds = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(fileds));
            bp.setFileName(fileds.getName());
            mp.addBodyPart(bp);
           }
           catch(Exception e)
        {
            System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
           }
         }
        /**
         * 设置发信人
         */
         public void setFrom(String from)
         {
           try
        {
             mimeMsg.setFrom(new InternetAddress(from));
           }
           catch(Exception e)
           {
             System.err.println("设置发信地址错误:"+e);
           }
          }
         /**
          * 设置收信人
          */
         public void setTo(String to)
         {
            if(to == null)
             return;
            try
      {
               mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
            }
            catch(Exception e)
            {
               System.err.println("收信地址错误!"+e);
            }
          }
         /**
          * 设置抄送地址
          */
          public void setCopyTo(String copyto)
          {
              if(copyto == null)
                 return;
              try{
                   mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
                  }
              catch(Exception e)
                  {
                  System.err.println("抄送地址错误!"+e);
                 }
           }

          /**
           * 发送邮件的函数
           */
           public void sendout()
           {
             try
       {
                  mimeMsg.setContent(mp);
                  mimeMsg.saveChanges();
                  Session mailSession = Session.getInstance(props,null);
                  Transport transport = mailSession.getTransport("smtp");
                  if(transport == null)
                     System.exit(-1);
                  transport.connect((String)props.get("mail.smtp.host"),username,password);
                  transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
                  transport.close();
             }
             catch(Exception e)
             {
                  System.err.println("邮件发送失败!"+e);
             }
            }
     
           /**
            * 分析邮件格式
            */
     private static String analFormat(String input)
     {
        if(null != input) 
          {
             input = input.trim();
              if("t".equals(input)||"h".equals(input))
                  return input;
                 else
                  return "t";
          }
        else
         return "t";
       }
     /**
      * 分析邮件标题
      */
     private static String analTitle(String title)
     {
       if(null != title)
       {
          title = title.trim();
          return title;
       }
       else
        return "";
     }
     /**
      * 分析邮件内容
      */
     private static String analContent(String content,String path)
     {
       if(null != content)
       {
        content = content.trim();
          if(content.endsWith(".html") || content.endsWith(".txt"))
          {
           File fe = new File(path + content);
             if(fe.isFile() && fe != null)
             {
                 String lastline = "";
              try
        {
                 FileInputStream fis = new FileInputStream(fe);
                 if(fis != null)
                 {
                   InputStreamReader isr = new InputStreamReader(fis,"gb2312");
                   if(isr != null)
                   {
                     BufferedReader br = new BufferedReader(isr);
                     String newlines = "";
                     while((newlines = br.readLine())!= null)
                     {
                        lastline = lastline + newlines +"\n";
                        if(content.endsWith(".html"))
                          lastline = lastline.replaceAll("&quot;","\"");
                     }
                     br.close();
                   }
                 }
              }
              catch(Exception e)
        {
               System.err.println("when read file,error occured : "+e);
        }
              return lastline;
             }
             else
              return "";
          }
          else
          {
           try
       {
             content = new String(content.getBytes("ISO-8859-1"),"gb2312");
           }
           catch(Exception e)
       {
             System.out.println("Sorry, a translate is wrong "+e); 
       }
             return content;
          }
       }
       else
        return "";
     }
     /**
      * 分析发送文件的路径
      */
     private static String analPath(String path)
     {
        if(null != path)
        {
           path = path.trim();
           return path;
        }
        else
           return "";
     }
     /**
      * 分析邮件发送的目的地址
      */
     private static String[] analAddress(String address)
     {
        if(null != address)
        {
           address = address.trim();
           if(address.indexOf(",") >0)
           {
             String[] newadd = address.split(",");
             for(int i =0;i < newadd.length;i++)
             {
                  if(newadd[i].indexOf("@")< 0)
                      newadd[i] = "";          
             }
             return newadd;
           }
           else
           {
             if(address.indexOf("@")< 0)
              address = "";
             String[] lastadd = {address};
             return lastadd;
           } 
        }
        else
        {
          String[] lastadd = {};
          return lastadd;
        }
     }
    }
    这个到目前为止已经能运行了,放在了服务器上

    收录一下三首好听的英文歌的歌词,经常听

    Better Man(Robbie Williams)
     
    send someone to love me
    i need to rest in arms
    keep me safe from harm in pouring rain
    give me endless summer
    lord i fear the cold
    feel i'm getting old before my time
    as my soul heals the shame
    i will grow through this pain
    lord i'm doing all i can to be a better man
    go easy on my conscience
    'cause it's not my fault
    i know i've been taught to take the blame
    rest assured my angels
    will catch my tears
    walk me out of here i'm in pain
    as my soul heals the shame
    i will grow through this pain
    lord i'm doing all i can to be a better man
    once you've found that lover you're homeward bound
    love is all around love is all around
    i know some have fallen on stony ground
    but love is all around
    send someone to love me
    i need to rest in arms
    keep me safe from harm in pouring rain
    give me endless summer
    lord i fear the cold
    feel i'm getting old before my time
    as my soul heals the shame
    i will grow through this pain
    lord i'm doing all i can to be a better man
     
     
    Yellow(ColdPlay)
     
    Look at the stars; look how they shine for you
    And everything you do
    Yeah, they were all yellow
    I came along; I wrote a song for you
    And all the things you do
    And it was called yellow
    So then I took my turn
    Oh what a thing to have done
    And it was all yellow
    Your skin, oh yeah your skin and bones
    Turn into something beautiful
    D'you know?
    You know I love you so
    You know I love you so
    I swam across; I jumped across for you
    Oh what a thing to do
    'Cos you were all yellow
    I drew a line; I drew a line for you
    Oh what a thing to do
    And it was all yellow
    And your skin, oh yeah your skin and bones
    Turn into something beautiful
    D'you know?
    For you I bleed myself dry
    For you I bleed myself dry
    It's true
    Look how they shine for you
    Look how they shine for you
    Look how they shine for?
    Look how they shine for you
    Look how they shine for you
    Look how they shine
    Look at the starsLook how they shine for you
    And all the things that you do

     
    Beautiful Day(U2)
     
    the heart is a bloom
    shoots up through the stony ground
    there's no room
    no space to rent in this town
    you're out of luck
    and the reason that you had to care
    the traffic is stuck
    and you're not moving anywhere
    you thought you'd found a friend
    to take you out of this place
    someone you could lend a hand
    in return for grace
    it's a beautiful day
    sky falls, you feel like
    it's a beautiful day
    don't let it get away
    you're on the road
    but you've got no destination
    you're in the mud
    in the maze of her imagination
    you love this town
    even if that doesn't ring true
    you've been all over
    and it's been all over you
    it's a beautiful day
    don't let it get away
    it's a beautiful day
    touch me
    take me to that other place
    teach me
    i know i'm not a hopeless case
    see the world in green and blue
    see china right in front of you
    see the canyons broken by cloud
    see the tuna fleets clearing the sea out
    see the bedouin fires at night
    see the oil fields at first light
    and see the bird with a leaf in her mouth
    after the flood all the colors came out
    it was a beautiful day
    don't let it get away
    beautiful day
    touch me
    take me to that other place
    reach me
    i know i'm not a hopeless case
    what you don't have you don't need it now
    what you don't know you can feel it somehow
    what you don't have you don't need it now
    don't need it now
    was a beautiful day
     

     
    March 15

    开始写点,好有点不白活一回的感觉:)

    我也觉得应该写点什么了……这似乎是个潮流--msn上自己自己有个空间还不错,放一些自己的情感文字,琐碎记忆以及片刻感想。有时候丰收了,有时候苦闷了,有时候激动了,有时候nnd心痛了……大家经历过的都是人生的冷暖,岁月的洗礼,冷暖自知,洗礼自觉,生命是什么?大家都或许有过这么一问,或思索良久未曾有一个恰到好处的答案,或脱口而出给了一个可载入史册的语录,或如涓涓流水般的每天制造一个不同的答案……毛主席这位领袖说得贴切:只争朝夕!早上到晚上,每天就这么周而复始,该争的就得争,争啊!不同的是有的人就像是争着做点坏事,争着去死!有的人争了半天也还是默默无闻的过着普通的生活,而有的人也争成了人上人,争得很舒坦,也有与世无争的--和尚and尼姑,想想他们也很爽啊!怎么过不是一辈子呢?从活这到死亡,不可能死亡了再活,反正要是那样可够累,我可不干,以免再活过来被人另眼相看--哪儿出来的二次人?——想开了就好啊!许巍《两天》里不时唱过么?--我只有两天:一天用来出生,一天用来死亡。咱也先别说死亡这个凄惨的事情了,当下也有两天:一天用来挣钱买张好床,一天用来灭蟑螂。