2007-11-26
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。
“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段。
“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
“/”字符用于指定增量。如:“0/15”在秒域意思是没分钟的0,15,30和45秒。“5/15”在分钟域表示没小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。
L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五。
字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。
“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。
字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。
字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
表达式举例:
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
0 6 * * * 每天早上6点
0 */2 * * * 每两个小时
0 23-7/2,8 * * * 晚上11点到早上8点之间每两个小时,早上八点
0 11 4 * 1-3 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 * 1月1日早上4点
2007-11-06
如果你使用eclipse作为IDE那么事情就很简单了(相信没有几个人不在用):
安装Eclipse插件
1. 要求eclipse3.1,jdk1.4以上
2. 在eclipse上安装abator插件
eclipse菜单栏 --> help --> Software Updates --> Find And Install...
在弹出的对话框中选择 “Search for new features to install” 然后点击 “next”
在对话框中点击按钮 New Remort Site... 在弹出的对话框中的URL输入框中填写 http://ibatis.apache.org/tools/abator ,Name输入框就随便写些什么了。
点击Finish,安装插件,然后重新启动eclipse
下面测试一下功能
1. 新建一个java工程
2. 在eclipse菜单栏中兴建一个 abator 配置文件
File --> Abator for iBatis Configration File
好的,我们完成了创建配置文件,下面打abator配置文件,看看里面怎么去配置
打开后内容基本上是这样
<?xml version="1.0" encoding="UTF-8"?>你需要做的是替换一些???:
<!DOCTYPE abatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN"
"http://ibatis.apache.org/dtd/abator-config_1_0.dtd">
<abatorConfiguration>
<abatorContext> <!-- TODO: Add Database Connection Information -->
<jdbcConnection driverClass="???"
connectionURL="???"
userId="???"
password="???">
<classPathEntry location="???" />
</jdbcConnection>
<javaModelGenerator targetPackage="???" targetProject="???" />
<sqlMapGenerator targetPackage="???" targetProject="???" />
<daoGenerator type="IBATIS" targetPackage="???" targetProject="???" />
<table schema="???" tableName="???">
<columnOverride column="???" property="???" />
</table>
</abatorContext>
</abatorConfiguration>
1. 填写driverClass(jdbc驱动,例如oracle的就是oracle.jdbc.driver.OracleDriver)
2. 填写connectionURL(连接字符串,例如oracle的就是jdbc:oracle:thin:@192.168.0.246:1521:test)
3. 填写classPathEntry的location(jdbc驱动jar包的位置,例如E:/project/ibatistest/WebContent/WEB-INF/lib/ojdbc14.jar)
4. 填写javaModelGenerator,生成的DTO(java model 类)
targetPackage:目标包的位置,如 com.test.dto
targetProject:目标工程名称,填写配置文件所在的eclipse工程名
5. 填写sqlMapGenerator ,生成的xml sqlmap的相关配置
targetPackage:目标位置,如 com.test.sqlmap
targetProject:目标工程名称,填写配置文件所在的eclipse工程名
6. 填写daoGenerator ,生成的DAO的相关配置
type:生成的dao实现的类型,如果你使用spring的话写SPRING,否则写IBATIS
targetPackage:目标位置,如 com.test.dao
targetProject:目标工程名称,填写配置文件所在的eclipse工程名
7. 配置相关数据库的表
schema:数据库schema,oracle就是填写数据库的用户名
tableName:表名
<columnOverride column="???" property="???" /> 可以先不用配置,删除就可以了
下面开始生成:
在配置文件上点解右键,选择 “Generate iBatis Artifacts”
OK,看看生成了什么吧!
2007-11-05
代码如下:
import java.io.InputStream;其中c.setDaemon(true)设置线程为守护线程,关于守护线程可以参考http://www.google.cn/search?complete=1&hl=zh-CN&q=java+%E5%AE%88%E6%8A%A4%E7%BA%BF%E7%A8%8B&meta=&aq=t&oq=java+%E5%AE%88%E6%8A%A4
import java.util.Properties;
/**
* 系统配置文件类
* @author sunbin
*
*/
public class Configation extends Thread {
//静态属性类
private static Properties p;
/**
* 默认构造方法
*/
public Configation(){
//
}
/**
* 继承Thread必须要实现的方法
*/
public void run(){
while(true){
//获取classpath中配置文件
InputStream in = Configation.class.getClassLoader().getResourceAsStream("config.properties");
if (p == null){
p = new Properties();
}
try{
p.load(in);
Thread.sleep(10000);//休眠10秒后重新读取配置文件
}catch(Exception e){
e.printStackTrace();
}
}
}
/**
* 获取配置文件的实例
* @return
*/
public Properties getProperties(){
return p;
}
/**
* 测试主程序
* @param args
*/
public static void main(String[] args){
Configation c = new Configation();
c.setDaemon(true);//设置线程为守护线程
c.start();//启动线程
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//重复打印配置文件的值,当修改配置文件后1秒立即生效
while(true){
Properties p = c.getProperties();
System.out.println(p.getProperty("com.test.a"));
}
}
}
2007-10-26
2007-09-17
由于我用我的信用卡消费了一笔美元,最近在我的邮箱中发现这样两封邮件
第一封:
第二封:We recently have determined that different computers have logged onto your Online Banking account, and multiple password failures were present before the logons. We now need you to re-confirm your account information to us.
![]()
from ![]()
Bank Of America <update@gmail.com>
hide details Sep 15 (2 days ago)
date
Sep 15, 2007 5:51 AM
subject
Bank of America Account Review Department !
If this is not completed by September 18, 2007, we will be forced to suspend your account indefinitely, as it may have been used for fraudulent purposes. We thank you for your cooperation in this manner.
To confirm your Online Banking records click on the following link:
http://home.graffiti.net/lanashpa/index.html
Thank you for your patience in this matter.
Bank of America Customer Service
Please do not reply to this e-mail as this is only a notification. Mail sent to this address cannot be answered.
© 2007 Bank of America Corporation. All rights reserved.
当你在浏览器打开后会看到这样的提示Dear Bank of America client,
![]()
Bank Of America <pp-verify@yahoo.com>
show details5:36 am (5 hours ago)
You have received this email because you or someone had used your account from different locations.For security purpose, we are required to open an investigation into this matter.
In order to safeguard your account, we require that you confirm your banking details.
The help speeed up to this process, please access the following link so we ca complete the verification of your Bank of America Online Banking Account registration information.
http://031327447202/online/sslencrypt218bit/online _banking/
If we do no receive the appropriate account verification within 48 hours, then we will assume this Bank of America account is fraudulent and will be suspended.
The purpose of this verification is to ensure that your bank account has not been fraudulently used and to combat the fraud from our community. We appreciate your support and understanding and thank you for your prompt attention to this matter.
firefox
ie7
大家以后要小心了,尤其是国外的不明邮件
P:其实我早知道这个是欺诈的,看发件人,和地址就知道,只是想验证一下。
2007-09-13
风险对冲
先做个练习。假如你在10元价位买了一支股票,这个股票未来有可能涨到15元,也有可能跌到7元。你对于收益的期望倒不是太高,更主要的是希望如果股票下跌也不要亏掉30%那么多。你要怎么做才可以降低股票下跌时的风险?
一种可能的方案是:你在买入股票的同时买入这支股票的认沽期权——期权是一种在未来可以实施的权利(而非义务),例如这里的认沽期权 可能是“在一个月后以9元价格出售该股票”的权利;如果到一个月以后股价低于9元,你仍然可以用9元的价格出售,期权的发行者必须照单全收;当然如果股价 高于9元,你就不会行使这个权利(到市场上卖个更高的价格岂不更好)。由于给了你这种可选择的权利,期权的发行者会向你收取一定的费用,这就是期权费。
原本你的股票可能给你带来50%的收益或者30%的损失。当你同时买入执行价为9元的认沽期权以后,损益情况就发生了变化:可能的收益变成了
(15元-期权费)/10元
而可能的损失则变成了
(10元-9元+期权费)/10元
潜在的收益和损失都变小了。通过买入认沽期权,你付出了一部分潜在收益,换来了对风险的规避。这就叫风险对冲。
(不难看出,如果加以精心安排,你可以用股票和期权构造这样一个投资组合:不论股价朝向哪个方向变化,投资组合在期末的价值必定相等。黑话这个就叫套期保值。由于套期保值组合的存在,期权的定价只由股票的期初价格、期末价格、期权时限、执行价和无风险利率——例如国债利率——这几个因素决定,与股票涨跌的概率无关。Black-Scholes模型等期权定价公式也表明了这一事实……扯远了,打住。)
另一种常见的风险对冲则是外汇的套期保值。比如说以人民币为会计本币的企业和外国公司做生意,不得不接受一笔为期三个月的美元应收帐款,老板就心里 发毛:人民币升值多猛啊,三个月以后没准美元又大跌了,害我平白无故少收5%我找谁哭去?这时候他就可以同时买入美元的看跌期权(也就是认沽期权),把原 本5%的外汇风险变成只有1%,甚至多付一些期权费从而完全规避掉外汇风险。这时候的期权,其作用就像是一张保单,给自己买了一份外汇风险保险。
(风险对冲的原则:对冲你不精通的、不想打理的、不是你主营业务的风险。风险总是和收益成正比,要是把主营业务的风险给对冲掉,稳妥倒是稳妥了,公 司离倒闭也就不远了。对于个人也是一样,你弄清楚自己想要从什么地方赚钱,就去承担这个方面的风险;别的方面的风险,就想办法对冲掉吧。)
如今说起来就满脸威风的对冲基金,其实一开始就是干这类“保险”业务的保险精算师。一帮大富翁挖铁矿、挖石油赚了钱,却不知道该怎么理财。老话说创 业容易守业难啊。于是就有了这些专门从事风险对冲业务的基金,帮大富翁们投资适当的金融产品,花不多的一些钱,把“一夜回到解放前”的风险给对冲掉。这些 个土财主,也不求变成世界首富,只要能保住自己的钱留给儿孙,还能适当的跟着无风险利率小增点值,他们就心满意足了。所以对冲基金在最开始的时候,是不折 不扣的风险规避者——从“风险对冲”这个词,就能看出来。
是不是越看反而越不明白了?以稳妥为目的、以规避风险为主业的对冲基金,怎么到现在变成在全球金融业兴风作浪的角色了?这个,要留待下一部分:套利。
2007-09-12
jsp include 的文件有时候会出现乱码,经过测试发现如下方法可以修改。
第一种情况可以修改被include的文件:
1.当jsp include动态文件时(jsp文件)可以在被include的jsp文件头部加上代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
可以解决。
2.当jsp include静态文件时(html文件)可以在被include的html文件的<head></head>标签内加上代码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
同样可以解决。
第二种情况不能够修改被include的文件:
此时可以修改tomcat的web.xml达到目的
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<jsp-property-group>
<description>
Special property group for JSP Configuration JSP
example.
</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
<description>
Special property group for JSP Configuration JSP
example.
</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>
</web-app>
其中jsp-config一段是用来说明你要将包含的页面默认按照什么编码格式包含。web-app 标签的version必须是2.4的。
具体可以参见http://www.javaworld.com.tw/jute/post/view?bid=9&id=44041&sty=1&tpg=1&age=-1