复习oracle中的dbms_job包
oracle中的DBMS_JOB包提供了定时周期性执行job队列中的job的功能,虽然它在oracle11g中已经被DBMS_SCHEDULER所取代,但是因为很多legacy application中还是大量地用到了它,所以在这里复习一下。
DBMS_JOB.SUBMIT用来提交一个job到job队列中,用法如下所示:
1 2 3 4 5 6 7 8 9 10 11 | DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X, what => 'SYSTEM.INSERTDATE;', next_date => SYSDATE, INTERVAL => 'SYSDATE+0.1/(24*60)' ); COMMIT; END; |
其中job是一个out类型的参数,它返回的是一个具体job的id,以后可以通过这个id来引用job对它进行进一步的操作。
what指定要执行的任务,注意它是VARCHAR2类型的,要写在单引号中,另外注意单引号中的分号。
next_date指明了当你把job submit到job队列中后这个job什么时候开始第一次执行,如果是SYSDATE,那么说明当job一被提交到job队列中就立刻开始第一次执行。
INTERVAL的类型是VARCHAR2,它在每次job将要执行之前被重新计算,计算得到的结果会被赋给next_date,指明了job下一次被执行的时间。下面是几个interval的例子:
TRUNC(SYSDATE+1) 每天的零点 TRUNC(SYSDATE+7) 每过七天后的第一个零点 NEXT_DAY(TRUNC(SYSDATE), 'SUNDAY') 每个星期天的零点 TRUNC(SYSDATE+1)+6/24 每天的早上六点 SYSDATE+30/1440 每三十分钟 SYSDATE+1/(24*60) 每一分钟
如果要改变一个job的属性,可以用DBMS_JOB.CHANGE这个方法,如下所示:
1 2 3 4 5 6 7 8 9 | BEGIN DBMS_JOB.CHANGE ( job => 70, what => 'SYSTEM.INSERTDATE;', next_date => SYSDATE, INTERVAL => 'SYSDATE+0.5/(24*60)' ); COMMIT; END; |
其中what, next_date, interval可以是null, 表示延用以前设定的值。
如果想让一个你设定好定时执行的时job临时停止执行,可以使用DBMS_JOB.BROKEN这个方法,它可以设定job的broken标记。如下例所示,把id为72的job的状态为broken,这个它就永远不会再执行了。
1 2 3 4 5 6 7 8 | BEGIN DBMS_JOB.BROKEN ( job => 72, broken => TRUE, next_date => SYSDATE ); COMMIT; END; |
想要把一个job从job队列中移除(相当于删除它),可以用DBMS_JOB.REMOVE方法,如下所示:
1 2 3 4 | BEGIN DBMS_JOB.REMOVE(72); COMMIT; END; |
如果一个job的预定执行时间还没有到,而你想让它立刻执行,那么你可以用DBMS_JOB.RUN方法,它甚至可以让状态为broken的job立刻执行,如下所示:
1 2 3 | BEGIN DBMS_JOB.RUN(71); END; |
查询job队列中有哪些job可以用下面的语句,注意要想对dba_jobs做查询,用户要有在SYS.DBA_JOBS上SELECT的权限。
1 | SELECT * FROM dba_jobs; |
同样oracle也提供了一个view可以查看有哪些job是正在运行中的,如下:
1 | SELECT * FROM dba_jobs_running; |
重置元素的CSS样式来解决浏览器的不兼容性
我们知道,不同的浏览器显示同一个网页总会或多或少有些差异,事实上所有的浏览器都是不一样的,其实大家如果可以想到,不同的浏览器是由不同的公司,不同的人,不同的开发工具,不同的语言来写出来的,那大家都可以理解这些差异了。一个段落标记p在不同的浏览器中它的默认margin、padding和font-size分别是多少?如果你研究一下你会很吃惊的,因为不同的浏览器相差很大。要处理这些浏览器间的差异,你可以使用CSS reset style来重置HTML元素到一个统一的初始样式,然后在此基础上进行定制。
早期人们为了对付浏览器间margin、padding和border的差异,我们经常能看到下面这个CSS规则:
1 2 3 4 5 | * { margin: 0; padding: 0; border: 0; } |
这条规则对每一个元素都要设定其样式,所以它对浏览器的性能影响比较大。随着人们进一步地研究讨论,Eric Meyer和其它一些CSS牛人创建了一套更完整,效果更好的CSS reset style:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; } /* remember to define focus styles! */ :focus { outline: 0; } body { line-height: 1; color: black; background: white; } ol, ul { list-style: none; } /* tables still need 'cellspacing="0"' in the markup */ table { border-collapse: separate; border-spacing: 0; } caption, th, td { text-align: left; font-weight: normal; } blockquote:before, blockquote:after, q:before, q:after { content: ""; } blockquote, q { quotes: "" ""; } |
如果你想要进一步了解Eric Meyer的CSS reset style,可以点击这里。
利用Google的jsapi确定客户端所在的位置
Google的jsapi提供了许多有用的功能,其中有一个就是对客户端的检测,用很简单的几句Javascript就可以确定浏览者的地理位置,从而可以进一步做有针对性的处理。下面是一个示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>Google API Test</title> </head> <body> <script src="http://www.google.com/jsapi" language="javascript"></script> <script language="javascript"> if (google.loader.ClientLocation != null) { document.write("您的位置是: " + google.loader.ClientLocation.address.city + "," + google.loader.ClientLocation.address.region); } else { document.write("Google无法确定你的位置"); } </script> </body> </html> |
打开上面的网页,我得到的结果是:
您的位置是: Xi'an,Shaanxi
使用jQuery提升链接在IE中的显示效果
在平时浏览网页时,我们免不了要天天点击链接,在点击链接时我想大家都能看到在链接周围那条点点组成的边框吧,如果你点了这个链接而这个链接把你带到了另外一个页面还好,如果它只是想触发一个事件而不把你带到另外一个页面,那么这个点点连成的四四方方的边框就一直显示在那里,看上去真是好丑。当然如果你很幸运地一直在使用一个对CSS支持的比较好的浏览器(比如我天天在用的Firefox),那么你可以用很简单的一条CSS规则就可以去掉这个难看的框框:
1 2 3 | a:focus, a:active { outline:none; } |
如果你因为各种原因很不幸地还在使用IE 6或者更早的浏览器(有这样的人么?),那么你可以利用jQuery轻松地帮你解决这个问题:
1 2 3 | $("a").click(function() { $(this).blur(); }); |
上面的代码会在你点击链接之后移除那个框框,当然在你点击链接的时候这个框框还是会出现的,如果你想要在点击的时候这个框框也不出现,那么你可以稍微修改一下上面的代码,把click事件变成focus事件,如下:
1 2 3 | $("a").focus(function() { $(this).blur(); }); |
希望这个对您有用:-)