关于作者

用户名:shmilyfly
笔名:shmilyfly
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



访问统计:
文章个数:4
评论个数:5
留言条数:0




Powered by BlogDriver 2.1

java库

 

java库

文章

Linux上配置croninvoke
 
指令語法

crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }

指令說明

crontab 提供我們在固定的間隔時間執行自訂的程式、系統指令或 shell secrip。時間間隔的單位可以是分鐘、小時、日、週、月及以上的任意組合。允許使用者離線執行,並且可以將執行結果以 email 通知使用者。因此,非常設合對週期性的管理分析或資料備份等工作。

基本上,crontab 的指令格式分為六個部分,前五個為時間間隔,最後則是執行的指令。每一個部分用空格來區隔。

分 -- 0-59 時 -- 0-23
日 -- 1-31
月 -- 1-12 或使用英文名稱
星期 -- 0-7 或使用英文名稱
工作命令 -- 指令,shell script,程式....(建議使用絕對路徑)
以上是 crontab 的基本格式。

選項說明

-u user
以指定的使用者身份,執行 crontab 工作。此選項僅供 root 使用。


-l
顯示使用者現行的 crontab 檔。

-r
移除現行的 crontab 檔。

-e
進入 vi 編輯 crontab 檔(如有設定 VISUAL 或 EDITOR 環境變數,怎使用該環境變數所設定的編輯器來編輯)。在使用者退出編輯器後,會自動將所編輯 crontab 檔,置入 crontab 執行。
相關檔案

/etc/cron.allow
/etc/cron.deny

實例說明

# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3672 installed on Thu Jan 1 15:55:18 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0-23/6 * * * /usr/bin/webalizer
30 3 * * * /root/fbin/bak-web
#

先前曾提到,crontab 的格式分成六個部分,前五個是時間參數。在上例中你會發現除了數字與英文名稱,有使用到符號"*",這個符號代表每一單位的意思,譬如 30 3 * * * 既代表 30分 3點 每日 每月 星期的每天。

時間的指定,可以是單一的數字,或幾個數字用逗號來連接。看下例

30 3,12 * * * /root/fbin/bak-web

其中的第二項為 3,12,這代表 3 以及 12 小時的意思。再來看下例

30 */6 * * * /root/fbin/bak-web

我把第二項改成 */6 這代表每 6 小時,也相當於 6,12,18,24 的作用。此外還有一個區段的做法

30 8-18/2 * * * /root/fbin/bak-web

我把第二項改成 8-18/2 這代表在 8 小時到 18 小時之間每 2 小時,也相當於 8,10,12,14,16,18 的作用。

在認知的以上介紹各項時間用法後,你可以視實際的需要自行組合。使用上的彈性是相當自由的。這篇暫時到此。

布置在linux运行cron的例子:
设置cron
01  * * * *  /etc/cron.ho/sendmails  每小时的01分钟运行
                   /etc/cron.ho/sendmails
31 * * * *   /etc/cron.30/putmails
sendmails shell
cd /usr/local/edm/util
/usr/local/bin/php ./cronsendmails.php
  

- 作者: shmilyfly 2006年11月30日, 星期四 16:38  回复(1) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: shmilyfly 2006年11月29日, 星期三 15:06  回复(1) |  引用(0) 加入博采

SQL server 与oracle 函数对比
---------数学函数

  1.绝对值
  S:select abs(-1) value
  O:select abs(-1) value from dual

  2.取整(大)
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual

  3.取整(小)
  S:select floor(-1.001) value
  O:select floor(-1.001) value from dual

  4.取整(截取)
  S:select cast(-1.002 as int) value
  O:select trunc(-1.002) value from dual

  5.四舍五入
  S:select round(1.23456,4) value 1.23460
  O:select round(1.23456,4) value from dual 1.2346

  6.e为底的幂
  S:select Exp(1) value 2.7182818284590451
  O:select Exp(1) value from dual 2.71828182

  7.取e为底的对数
  S:select log(2.7182818284590451) value 1
  O:select ln(2.7182818284590451) value from dual; 1

  8.取10为底对数
  S:select log10(10) value 1
  O:select log(10,10) value from dual; 1

  9.取平方
  S:select SQUARE(4) value 16
  O:select power(4,2) value from dual 16

  10.取平方根
  S:select SQRT(4) value 2
  O:select SQRT(4) value from dual 2

  11.求任意数为底的幂
  S:select power(3,4) value 81
  O:select power(3,4) value from dual 81

  12.取随机数
  S:select rand() value
  O:select sys.dbms_random.value(0,1) value from dual;

  13.取符号
  S:select sign(-8) value -1
  O:select sign(-8) value from dual -1
  ----------数学函数

  14.圆周率
  S:SELECT PI() value 3.1415926535897931
  O:不知道

  15.sin,cos,tan 参数都以弧度为单位
  例如:select sin(PI()/2) value 得到1(SQLServer)

  16.Asin,Acos,Atan,Atan2 返回弧度

  17.度角度互换(SQLServer,Oracle不知道)
  DEGREES:弧度-〉角度
  RADIANS:角度-〉弧度

  ---------数值间比较

  18. 求集合最大值
  S:select max(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

  O:select greatest(1,-2,4,3) value from dual

  19. 求集合最小值
  S:select min(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

  O:select least(1,-2,4,3) value from dual

  20.如何处理null值(F2中的null以10代替)
  S:select F1,IsNull(F2,10) value from Tbl
  O:select F1,nvl(F2,10) value from Tbl

  --------数值间比较

  21.求字符序号
  S:select ascii('a') value
  O:select ascii('a') value from dual

  22.从序号求字符
  S:select char(97) value
  O:select chr(97) value from dual

  23.连接
  S:select '11'+'22'+'33' value
  O:select CONCAT('11','22')||33 value from dual

  23.子串位置 --返回3
  S:select CHARINDEX('s','sdsq',2) value
  O:select INSTR('sdsq','s',2) value from dual

  23.模糊子串的位置 --返回2,参数去掉中间%则返回7
  S:select patindex('%d%q%','sdsfasdqe') value
  O:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR>  select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

  24.求子串
  S:select substring('abcd',2,2) value
  O:select substr('abcd',2,2) value from dual

  25.子串代替 返回aijklmnef
  S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
  O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

  26.子串全部替换
  S:没发现
  O:select Translate('fasdbfasegas','fa','我' ) value from dual

  27.长度
  S:len,datalength
  O:length

  28.大小写转换 lower,upper

  29.单词首字母大写
  S:没发现
  O:select INITCAP('abcd dsaf df') value from dual

  30.左补空格(LPAD的第一个参数为空格则同space函数)
  S:select space(10)+'abcd' value
  O:select LPAD('abcd',14) value from dual

  31.右补空格(RPAD的第一个参数为空格则同space函数)
  S:select 'abcd'+space(10) value
  O:select RPAD('abcd',14) value from dual

  32.删除空格
  S:ltrim,rtrim
  O:ltrim,rtrim,trim

  33. 重复字符串
  S:select REPLICATE('abcd',2) value
  O:没发现

  34.发音相似性比较(这两个单词返回值一样,发音相同)
  S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
  O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual
  SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差
  返回0-4,4为同音,1最高

  --------------日期函数

  35.系统时间
  S:select getdate() value
  O:select sysdate value from dual

  36.前后几日
  直接与整数相加减

  37.求日期
  S:select convert(char(10),getdate(),20) value
  O:select trunc(sysdate) value from dual
  select to_char(sysdate,'yyyy-mm-dd') value from dual

  38.求时间
  S:select convert(char(8),getdate(),108) value
  O:select to_char(sysdate,'hh24:mm:ss') value from dual

  39.取日期时间的其他部分
  S:DATEPART 和 DATENAME 函数 (第一个参数决定)
  O:to_char函数 第二个参数决定

  参数---------------------------------下表需要补充
  year yy, yyyy
  quarter qq, q (季度)
  month mm, m (m O无效)
  dayofyear dy, y (O表星期)
  day dd, d (d O无效)
  week wk, ww (wk O无效)
  weekday dw (O不清楚)
  Hour hh,hh12,hh24 (hh12,hh24 S无效)
  minute mi, n (n O无效)
  second ss, s (s O无效)
  millisecond ms (O无效)
  ----------------------------------------------

  40.当月最后一天
  S:不知道
  O:select LAST_DAY(sysdate) value from dual

  41.本星期的某一天(比如星期日)
  S:不知道
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

  42.字符串转时间
  S:可以直接转或者select cast('2004-09-08'as datetime) value
  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

  43.求两日期某一部分的差(比如秒)
  S:select datediff(ss,getdate(),getdate()+12.3) value
  O:直接用两个日期相减(比如d1-d2=12.3)
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

  44.根据差值求新的日期(比如分钟)
  S:select dateadd(mi,8,getdate()) value
  O:SELECT sysdate+8/60/24 vaule FROM DUAL;

  45.求不同时区时间
  S:不知道
  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

  -----时区参数,北京在东8区应该是Ydt-------
  AST ADT 大西洋标准时间
  BST BDT 白令海标准时间
  CST CDT 中部标准时间
  EST EDT 东部标准时间
  GMT 格林尼治标准时间
  HST HDT 阿拉斯加—夏威夷标准时间
  MST MDT 山区标准时间
  NST 纽芬兰标准时间
  PST PDT 太平洋标准时间
  YST YDT YUKON标准时间

- 作者: shmilyfly 2005年07月19日, 星期二 17:39  回复(1) |  引用(0) 加入博采

定制Java ResourceBundle类实现代码灵活
从使用局部化资源的源代码中把前者分离出来是一种常用的程序设计。java.util包内的ResourceBundle类就提供了这种方式的直接处理。不过,资源包和局部化对象之间存在紧密耦合,而你多半并不愿意在应用程序中直接编码。为了避免出现这样的情况,同时也是为了方便存储格式和资源定位的修改。你可以创建定制的ResourceBundle类来实现以上的目标。

为什么要定制ResourceBundle类

定制标准的ResourceBundle类可以让你根据其存储格式和位置抽象局部化的资源,同时还可以便利新类型ResourceBundle对象的创建。通常以下列方式使用 ResourceBundle:

String localizedMsg = ResourceBundle.getBundle("resources.test1").getString(msg)

这种做法存在两个缺点。第一,你必须显式地指定(在你的应用程序中直接编写代码)资源包的名字(resources.test1)。在使用资源包的类的数量增长时会令程序变得很复杂。其次,标准的ResourceBundle类只提供了两种数据存储方式:文件(PropertyResourceBundle)或类(ListResourceBundle)。如果你想要从其它地方获取资源(例如数据库或FTP服务器)则必须创建自己的ResourceBundle 类。实际上,你完全可以通过从头使用定制ResourceBundle 类的方式避免这些问题。下面就让我们看看创建定制ResourceBundle类的过程。



创建自己的ResourceBundle

首先你必须创建一个类保存你要用到的所有资源包。清单A显示的就是这样的类。



该程序清单最重要的地方就是getBundle()方法,该方法返回CommonResourceBundle。返回的这个对象知道从哪里以及如何获取特定的资源。然后你可以如下所示获得局部化数据:

String localizedMsg = CommonResouceBundle.getBundle().getString(msg)



注意,你并没有指定资源包的名字。实际上,这里的技巧是在使用资源以前先把资源包加到CommonResourceBundle中来。你则可以借助addResourceBundle()方法或者采用配置文件的形式完成这项工作。



在CommonResourceBundle扩展了标准ResourceBundle的同时,你仍然可以用常规的技术获得一个局部化对象:CommonResourceBundle.getBundle("resources.test1").getString(msg)



为了实现你自己的定制ResourceBundle,你必须重载标准的ResourceBundle。实际上是重载getKeys ()和handleGetObject (String s )这两个方法。后者在检索所有可用资源包之后返回对应给定键值的对象,否则返回NULL。可用资源包是正是那些添加到CommonResourceBundle的资源包。

创建了保存所有将要使用的资源包的CommonResourceBundle之后,你现在可以创建定制的ResourceBundle类根据特定的地址和指定的格式访问局部化的资源。举个例子,我们创建一个DBResourceBundle类,这个类的作用是从数据库获得局部化对象。清单B所示为程序代码。



buildProperties () 方法从数据库获取资源并缓冲到java.util包的Properties。这个方法只能在DBResourceBundle对象实例化期间被调用。handleGetObject () 方法返回在Properties中找到的一个资源对象;如果找不到对象则返回NULL。





配置你的资源包

在你能使用CommonResourceBundle以前先得对其进行配置。我们先前曾经提到过,你可以通过调用addResourceBundle (...) 方法或设置配置文件文件的方式实现以上目前。下面的示例就为CommonResourceBundle添加了两个资源包:标准的资源包和定制的ResourceBundles:



CommonResourceBundle.addResourceBundle(ResourceBundle.getBundle("resources.test1")); CommonResourceBundle.addResourceBundle(new DbResourceBundle("jdbc:oracle:thin:scott/tiger@mypc:1521:ORCL:table:ScottProp"));



你还可以通过设置配置参数的方式达到同样的目的,也就是说,把它们加到系统性质(调用System.setProperty (...))或采用XML配置文件。以下就是FileResourceBundle和DBResourceBundle配置参数的示例:



file.resource.bundle.name=resources.test1,resources.test2



db.resource.bundle.name=jdbc:oracle:thin:scott/tiger@ppc35:1521:ORCL:table:ScottProp



第1个参数包含了一个用逗号分隔的资源文件或者类名列表。然后按照每个名字创建相应的ResourceBundle并被加入CommonResourceBundle。第2个参数包含数据库URL和数据表名(ScottProp)的列表。数据表有两列(键和值)并包含了局部化资源。针对每个URL还会创建相应的Properties并从数据库中装载数据。



以上就是创建自己的定制ResourceBundle的全过程。你可以通过阅读标准的ResourceBundle规范获取更多有关信息,同时还可以从Sun网站了解其用途的简单细节。本文示例的完整程序代码请见清单C。



清单C:http://builder.com.com/utils/sidebar.jhtml?id=u00220020430gcn02.htm&index=3

清单B:http://builder.com.com/utils/sidebar.jhtml?id=u00220020430gcn02.htm&index=2

清单A:http://builder.com.com/utils/sidebar.jhtml?id=u00220020430gcn02

- 作者: shmilyfly 2005年07月19日, 星期二 12:14  回复(2) |  引用(0) 加入博采