软件是对质量的不懈追求

#

Linux下mail使用技巧

登录LINUX系统后,经常会看到"you have mail",却苦于不知道如何查看,相信菜鸟们都遇到过,偶在网上用“linux mail"找了很久,但大都是介绍mail服务器的,黄天总算没负有心人,在洪恩在找到一篇介绍基础的文章,不敢独享。
 
系统提供了用户 之间通信的邮件系统,当用户打开终端注册登录时发现系统给出如下信息:
    you have mail.

    这时用户可通过键入mail命令读取信件:

    $ mail

    mail程序将逐个显示用户的信件,并依照时间顺序,显示最新的信件。每显示一段信件,mail都询问用户是否要对该信件作些处理。若用户回答d,则表示 删除信件;若仅按回车键,表示对信件不作任何改动(信件仍旧保存,下次还可读这一信件);若回答p,则要求重复显示信件;s filename表示要把信件存入所命名的文件;若回答q,表示要从mail退出。

    我们在本章的第一个例子中演示了如何写一封信,作为练习,你可送信件给自己,然后键入mail读取自己发的信件,看看会有什么效果。(发信给自己是一种设 置备忘录的方法)。

    $mail frank 给自己写信

    subject: test

    This is a mail test

    CRL-d

    EOT

    $

    $mail 查看信件

    “/var/spool/mail/frank:”1 message 1 new

    >Nfrank@xteam.xteamlinux.comThu Mar 25 11:00 13/403 “test”

    &

    Message 1:

    From frank Thu Mar 25 11:00:25 1999/3/25

    Received: (fromfrank@localhost)

    by xteam.xteamlinux.com(8.8.4/8.8.4)

    id LAA05170 for frank;Thu 25 Mar 1999 11:00:25 GMT

    Date: Thu,25 Mar 1999 11:00:25 GMT

    From:RHS Linux User <frank@xteam.xteamlinux.com>

    Message-Id:<199903251142.LAA05170@xteam.xteamlinux.com>

    To:frank@xteam.xteamlinux.com

    Subject:test

    Status:R

    This is a mail test

    &

    mail命令还有很多其它用法,例如发送事先准备好的信件,或一次送信给若干人。还可以用其它方法送信件。

posted @ 2010-06-18 11:05 BlakeSu 阅读(183) | 评论 (0)编辑 收藏

Mysql中limit的用法详解

    Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?
  不用担心,mysql已经为我们提供了这样一个功能。

  SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
  如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1):
  为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。

mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目:

mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行

//换句话说,LIMIT n 等价于 LIMIT 0,n。

注意limit 10和limit 9,1的不同:

例如:

1.Select * From cyclopedia Where ID>=(
    Select Max(ID) From (
      Select ID From cyclopedia Order By ID limit 90001
    ) As tmp
  ) limit 100;

2.Select * From cyclopedia Where ID>=(
    Select Max(ID) From (
      Select ID From cyclopedia Order By ID limit 90000,1
    ) As tmp
  ) limit 100;

 

    第1句是先取了前90001条记录,取其中最大一个ID值作为起始标识,然后利用它可以快速定位下100条记录

第2句择是仅仅取90000条记录后1条,然后取ID值作起始标识定位下100条记录

第1句执行结果.100 rows in set (0.23) sec

第2句执行结果.100 rows in set (0.19) sec

其实第2句完全可以简化成:
    Select * From cyclopedia Where ID>=(
   Select ID From cyclopedia limit 90000,1
)limit 100;

直接利用第90000条记录的ID,不用经过Max运算,这样做理论上效率因该高一些,但在实际使用中几乎看不到效果,
   因为本身定位ID返回的就是1条记录,Max几乎不用运作就能得到结果,但这样写更清淅明朗,省去了画蛇那一足.


Select Top 100 * From cyclopedia Where ID>=(
Select Top 90001 Max(ID) From (
Select ID From cyclopedia Order By ID
) As tmp
)

但不管是实现方式是存贮过程还是直接代码中,瓶颈始终在于MS-SQL的TOP总是要返回前N个记录,这种情况在数据量不大时感受不深,
   但如果成百上千万,效率肯定会低下的.相比之下MySQL的limit就有优势的多,执行:


Select ID From cyclopedia limit 90000
Select ID From cyclopedia limit 90000,1

的结果分别是:


90000 rows in set (0.36) sec
1 row in set (0.06) sec

而MS-SQL只能用Select Top 90000 ID From cyclopedia 执行时间是390ms,执行同样的操作时间也不及MySQL的360ms.

limit的offset(偏移量)用于记录较多的时候,记录较少时,偏移offset较小,直接使用limit较优。offset越大,后者越优。
 

1、offset比较小的时候。

select * from yanxue8_visit limit 10,10

多次运行,时间保持在0.0004-0.0005之间


Select * From yanxue8_visit Where vid >=(
  Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10

多次运行,时间保持在0.0005-0.0006之间,主要是0.0006

结论:偏移offset较小的时候,直接使用limit较优。这个显示是子查询的原因。

2、offset大的时候。

select * from yanxue8_visit limit 10000,10

多次运行,时间保持在0.0187左右

Select * From yanxue8_visit Where vid >=(
  Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10

多次运行,时间保持在0.0061左右,只有前者的1/3。可以预先offset越大,后者越优。

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目.

posted @ 2010-06-02 14:43 BlakeSu 阅读(443) | 评论 (0)编辑 收藏

枚举类型enum示例




public enum OrderStatus {
    A(
1), B(2), C(3), D(4), F(5), INCOMPLETE(6);
    
    
private final int value;
    
/**
     * Constructor.
     
*/
    
private OrderStatus(int value) {
        
this.value = value;
    }
    
    
/**
     * Get the value.
     * 
@return the value
     
*/
    
public int getValue() {
        
return value;
    }

}


posted @ 2010-06-02 13:33 BlakeSu 阅读(139) | 评论 (0)编辑 收藏

JS try.....catch的使用

<script language="javascript">
try
{
throw new Error(10,"asdasdasd")
}
catch (e)
{
alert(e.message);
alert(e.description)
alert(e.number)
alert(e.name)
throw new Error(10,"asdasdasd")
}

</script>  

在JavaScript可以使用try...catch来进行异常处理。例如:  

 

try {
foo.bar();
} catch (e) {
alert(e.name + ": " + e.message);
}

目前我们可能得到的系统异常主要包含以下6种:

  • EvalError: raised when an error occurs executing code in eval()  
  • RangeError: raised when a numeric variable or parameter is outside of its valid range  
  • ReferenceError: raised when de-referencing an invalid reference  
  • SyntaxError: raised when a syntax error occurs while parsing code in eval()  
  • TypeError: raised when a variable or parameter is not a valid type  
  • URIError: raised when encodeURI() or decodeURI() are passed invalid parameters  

上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:

 

new Error();
new Error("异常信息");

手工抛出异常的方法如下:

 

try {
throw new Error("Whoops!");
} catch (e) {
alert(e.name + ": " + e.message);
}

如要判断异常信息的类型,可在catch中进行判断:

 

try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
   alert(e.name + ":" + e.message);
}
else if (e instanceof RangeError) {
   alert(e.name + ": " + e.message);
}
// etc
}

Error具有下面一些主要属性:

  • description: 错误描述 (仅IE可用).  
  • fileName: 出错的文件名 (仅Mozilla可用).  
  • lineNumber: 出错的行数 (仅Mozilla可用).  
  • message: 错误信息 (在IE下同description)  
  • name: 错误类型.  
  • number: 错误代码 (仅IE可用).  
  • stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).  

因此为了更好的了解错误信息我们可以将catch部分改为如下形式:  

 

try {
foo.bar();
} catch (e) {
if (browserType != BROWSER_IE) {                            
   alert("name: " + e.name +
    "message: " + e.message +
    "lineNumber: " + e.lineNumber +
    "fileName: " + e.fileName +
    "stack: " + e.stack);        
}
else {                    
   alert("name: " + e.name +     
    "errorNumber: " + (e.number & 0xFFFF ) +
    "message: " + e.message");        
}
}

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例 如:

 

try {
throw new Date(); // 抛出当前时间对象
} catch (e) {
alert(e.toLocaleString()); // 使用本地格式显示当前时间
}

posted @ 2010-06-02 10:38 BlakeSu 阅读(326) | 评论 (0)编辑 收藏

深拷贝

import java.io.*;

public class ObjectCloner
{
   
// so that nobody can accidentally create an ObjectCloner object
   private ObjectCloner(){}
   
// returns a deep copy of an object
   static public Object deepCopy(Object oldObj) throws Exception
   {
      ObjectOutputStream oos 
= null;
      ObjectInputStream ois 
= null;
      
try
      {
         ByteArrayOutputStream bos 
= new ByteArrayOutputStream(); 
         oos 
= new ObjectOutputStream(bos); 
         
// serialize and pass the object
         oos.writeObject(oldObj);   
         oos.flush();               
         ByteArrayInputStream bin 
= new ByteArrayInputStream(bos.toByteArray()); 
         ois 
= new ObjectInputStream(bin);
         
// return the new object
         return ois.readObject();
      }
      
catch(Exception e)
      {
         System.out.println(
"Exception in ObjectCloner = " + e);
         
throw(e);
      }
      
finally
      {
         oos.close();
         ois.close();
      }
   }
   
}

posted @ 2010-05-25 09:30 BlakeSu 阅读(167) | 评论 (0)编辑 收藏

mysql convert int to char/varchar

select cast(1 as char)

char 不能换成varchar,否则会报错。

posted @ 2010-05-12 17:12 BlakeSu 阅读(2886) | 评论 (0)编辑 收藏

How to check Linux distribution and version?

If u are on an unknown server and keen to know it’s linux distribution info, you can check the linux distribution info by just a single command (eg. version, codename, etc). Just tested this command in UBuntu and CentOS, both return as what i expected. :)

To check linux distribution and version, follow the steps below:-

  • Start your terminal and enter the command below to show your the linux distribution info:-
    $ cat /etc/*-release
  • Here’s my result in one of my my Ubuntu box:-
    $ cat /etc/*-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=9.10
    DISTRIB_CODENAME=karmic
    DISTRIB_DESCRIPTION="Ubuntu 9.10"

    Cool right!

posted @ 2010-05-08 13:29 BlakeSu 阅读(680) | 评论 (0)编辑 收藏

Eclipse集成windows资源管理器简单方法

Run-->External Tools-->External tools configurations
new 一个 program
location 里面填 :C:\WINDOWS\explorer.exe
Arguments 里面填: ${container_loc}
点击 Run

posted @ 2010-05-08 08:40 BlakeSu 阅读(257) | 评论 (0)编辑 收藏

commons lang 比较有用的类

ArrayUtils                 //简化数组的操作
LocaleUtils
SerializationUtils
StringEscapeUtils
StringUtils
SystemUtils
Validate                   //输入参数验证
NestableException
NestableRuntimeException
StopWatch          //秒表类

posted @ 2010-04-26 10:16 BlakeSu 阅读(203) | 评论 (0)编辑 收藏

xmind 当真不错

xmind是绘制思维导图的工具。
使用之后,发现绘制组织结构图和wbs都很方便。
软件基于eclipse框架开发,反应速度和操作性也都很不错。
更重要的,图形的效果也是专业级的 :)

posted @ 2010-04-23 09:51 BlakeSu 阅读(239) | 评论 (0)编辑 收藏

仅列出标题
共12页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last