跑跑卡丁车注册安装
| ||||
| ||||
| ||||
| ||||
| ||||
|
跑跑卡丁车开始游戏
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
跑跑卡丁车游戏操作
|
向上一小步 也有新高度
一则小故事,一条小知识,一个新发现……
跑跑卡丁车注册安装
| ||||
| ||||
| ||||
| ||||
| ||||
|
跑跑卡丁车开始游戏
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
跑跑卡丁车游戏操作
|
《诛仙》的出版的确是武侠小说出版的一件大事情。据记者了解,从2003年以来,凡是喜欢在网上读小说的,没有人不知道《诛仙》;凡是奇幻小说的书迷,没有不知道《诛仙》的;凡是武侠小说的书迷,更是无人不在说《诛仙》。用百度搜索,《诛仙》的网页多达265000项,网络总点击量高达3000万人次,并且还在以每天200万的人次向前推进。这部与《飘渺之旅》、《小兵传奇》并称为"网络三大奇书"中唯一的一本武侠小说,在网上,早已经被视为和金庸、古龙、还珠楼主的作品同样等级的经典小说。在天津书市上,一位女中学生指着书对同伴说,"一生只为《诛仙》活",可见该书的魅力。下载诛仙CHM版全文电子书| 下载诛仙TXT版全文电子书
天地不仁,以万物为刍狗!
自太古以来,人类眼见周遭世界,诸般奇异之事,电闪雷鸣,狂风暴雨,又有天灾人祸,伤亡无数,哀鸿遍野,决非人力所能为,所能抵挡。遂以为九天之上,有诸般神灵,九幽之下,亦是阴魂归处,阎罗殿堂。
于是神仙之说,流传于世。无数人类子民,诚心叩拜,向着自己臆想创造出的各种神明顶礼膜拜,祈福诉苦,香火鼎盛……
方今之世,正道大昌,邪魔退避。中原大地山灵水秀,人气鼎盛,物产丰富,为正派诸家牢牢占据。其中尤以"青云门"、"天音寺"、和"焚香谷"为三大支柱,是为领袖。
这个故事,便是从"青云门"开始的。
赤道和北极
赤道和北极mp3:http://www.chnmms.com/bd/mp3/cdhbj.html
赤道和北极歌词
歌曲:夏日里的春天赤道和北极
歌手:张瑶
love you @ love me
从不曾忘记和你在一起的甜蜜
love you and love me
从不曾怀疑你是我永远的唯一
可是忽然仿佛丢了你
my love 我冷得无法呼吸
可是忽然仿佛回不去
象是只迷途在北极的鱼
I miss you now where are you going
想念曾经温暖的海底
I need you now where are you going
想让赤道温暖最寒冷的北极
love you @ love me
如果你还有感应
请指引我游向你
love you @ love me
但大海无边无际 我还能不能重回到你的怀里
赤道和北极mtv|
单平简历
单平,男,汉族,1946年5月生,辽宁鞍山人,1987年9月加入中国共产党,1968年12月参加工作,天津大学机械系焊接专业毕业,研究生学历,博士学位,教授,博士生导师。
单平简历:
1963.09-1968.12 天津大学机械系焊接专业学习;
1968.12-1970.03 天津市塘沽盐场六分场劳动锻炼;
1970.03-1978.09 天津铁厂修建部工长、技术员、助理工程师;
1978.09-1981.03 天津大学机械系焊接专业攻读工学硕士研究生;
1981.03-1988.04 天津大学机械系教师(其间:1982.05-
1985.05在天津大学机械系焊接专业攻读博士研究生,获工学博士学位);
1988.04-1992.09 天津大学机械系副主任、副教授、教授
(其间:1989.09-1990.09在英国克兰菲尔德工学院从事博士后研究);
1992.09-1993.02 天津大学副教务长;
1993.02-1994.09 天津大学教务长;
1994.09-1997.01 天津大学副校长,国家教委高等工程教
育管理干部培训中心主任(其间:1995.06-1996.06在美国宾州州立大学进修高教管理);
1997.01-1997.06 天津大学副校长、党委常委,国家教委高等工程教育管理干部培训中心主任;
1997.06-2000.02 天津大学校长、党委常委;
2000.02-2006.7.14天津大学校长(副部长级)、党委常委。九届全国人大代表。
1991年国务院学位办、国家教委授予"有突出贡献的中国博士学位获得者"称号;
1993年国务院批准为享受政府特殊津贴专家。
天津建材市场 | 1 >>> |
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
| |||||
神泣官方网站:http://shaiya.gtgame.com.cn/
神泣下载:http://shaiya.17173.com/xiazai/xiazai1.shtml
神泣游戏背景
神泣第一章、创世
[神泣创世纪(Age of Genesis)]
为躲避神界的战火,创造女神伊泰安来到名为shaiya的时空。
最初的shaiya世界空无一物,伊泰安运用自己丰富的知识和经验,开始创造世间万物。首先诞生在shaiya世界的,是一片辽阔无际的海洋,女神利用它来隔断shaiya与其他空间的联系,避免神界战争蔓延到此。之后,她取自身皮肉投入大海,神的肉体逐渐幻化为宽广的大陆,并随着岁月变迁进一步演化为层峦叠嶂的山丘和平原,肉体上原本流动着的血液,则成为大地上奔腾不息的河流,就这样,一个完整的大陆雏形逐渐形成。女神将这片土地取名为缇奥斯?艾培洛斯,意为"神之大地"。
[神泣远古时期(Age of Teras)]
完成了大陆的创造,女神思量再三,决定创造更多生命体,由他们来管理并推动这个世界有序地发展。为巩固自己在shaiya世界至高无上的绝对权威,伊泰安创造了只属于shaiya世界的神明--塔里奥希斯,这些被赋予了强大的法力和智慧的众神,作为女神忠实下属有条不紊地管理着世间万物。
在塔里奥希斯之后,女神创造了生命体多米纳斯,与之前的塔里奥希斯众神不同的是,多米纳斯没有自己的思维和意识,完全臣服于塔里奥希斯的统治,并忠实地执行每一条命令,而整个世界也依照这样的秩序,和谐地运转了很久。
[神泣中古时期(Age of Spiritus) ]
中古时期是塔里奥希斯和多米纳斯共同生活的时代。在塔里奥希斯的教授下,多米纳斯们逐渐了解到:伊泰安是shaiya具有至高权力的绝对之神,而终身塔里奥希斯则作为其下属负责管理这个世界。尽管多米纳斯中的绝大多数并没有亲眼见过女神依泰安,但对他们所景仰的众神塔里奥希斯所言深信不疑。
从塔里奥希斯那里学会农耕等技术之后,多米纳斯们逐渐繁衍开来。在众神的有效管理下,多米纳斯人口越来越多,势力渐渐遍及整个缇奥斯大陆。
神泣第二章、轮回
[神泣混乱和灭亡时期(Age of Patema) ]
"愤怒、憎恨、情爱、悲伤、贪婪、堕落、嫉妒",长期的和平景象被伊泰安从神界带回的这七种情感所打破,它们侵蚀了多米纳斯原本纯净的心灵世界,使多米纳斯们开始具有自我意识和思维能力。
学会了权衡得失的多米纳斯们渐渐开始怀疑塔里奥希斯的话,公然拒绝众神统治并最终发动了战争。由于数量上的优势,持续了7年的战火以多米纳斯获胜告终。女神伊泰安因为自己创造物之间的纷争而身心憔悴,容貌尽失。当看到心目中的女神竟然如同丑陋的怪兽一般,疯狂的多米纳斯向女神挥下了利刃。伴随一声哀鸣,天地裂变,女神肉身被多米纳斯所杀害,灵魂则一分为二消失无踪,同时,无尽的洪水和怪兽汹涌而出,瞬间吞噬了世间的一切。
[神泣新的迹象(Wheel of Fortune) ]
几乎所有的生命都在这场浩劫中消亡,幸存下来的只有多米纳斯兄妹普罗顿和薇丝娜。
面对满目荒夷,普罗顿立志重建家园并辛勤劳作,而薇丝娜却趁着哥哥熟睡时,悄悄怀上了他的孩子。醒来后的普罗顿忍不住怒火,将已有身孕的妹妹驱逐到大陆另一端。南方贫瘠的土地上,内心充满哀伤和怨怒的薇丝娜生下了孩子,即现在的暗精灵。而留在大陆北方的普罗顿则与树木幻化出的女性结合,成为白精灵的祖先。
神泣第三章、双子
[神泣认知时期(Age of Gnosis) ]
此后500年时间里,白精灵和暗精灵均未认识到对方的存在,分别在大陆北方和南方繁衍并扩大各自势力。虽然系出同族,但双方目的却不尽相同。白精灵继承了先祖普罗顿重建家园的理想,致力于恢复被洪水和怪兽污染的土地。而暗精灵从小生长于南部贫瘠的土地,在暗精灵看来,残酷的环境并不是他们所要保护,而是必须要战胜的对象,因此,在暗精灵的扩张过程中,掠夺和征服成成为主要动力。
终于某天,双方在大陆中部的弗鲁威斯河宿命般的遭遇了,发自内心的憎恨,让的素未谋面的双方立即展开了殊死拼杀,缇奥斯大陆再一次卷入了漫天战火,后世将这场战事称为"第一次弗鲁威斯战争"。
一个注定是英雄辈出的激情年代。
由于年轻英雄埃斯盖罗纳的完美指挥,战争完全倒向暗精灵一方。就在他们几乎获得全面胜利时,突如其来的日食将大地笼罩在黑暗中,无尽的黑夜吞噬了一切,让双方的部队寸步难行,无奈之下,暗精灵最终同意签署停战协议。
神泣第四章、激荡
[神泣激动的时期(Age of Vertex) ]
日食所引发的巨大地震和海啸,扭曲了空间结构,人类--这一全新种族,被从其他时空被传送到了shaiya。到达shaiya的人类,在白精灵的帮助下,迅速完成了对新环境的适应过程,逐渐成长为大陆新的强者。在不断壮大势力的同时,人类渐渐接受了白精灵基于恢复自然原貌的理念和信仰,并与之结成盟友,即"光之同盟"。
同盟在建立之后暗暗积蓄着自己的军事实力,并针对占据大陆中部的暗精灵发动了"第二次弗鲁威斯战争",暗精灵根本无法与拥有强大作战力的同盟相抗衡,不断向着南方败退,就在这时,一个戏剧性事件的出现改变了战局的发展。
大陆南端,自然条件的日趋恶劣,使得无法继续在地下世界生存的野蛮人族出现在地面上,并无差别攻击包括两大精灵在内的所有生物。就在同盟军将暗精灵不断向南逼退时,野蛮人出兵突袭了同盟军后方,整个大陆随之陷入了混战。
为避免腹背受敌,人类指挥官贾斯廷?温德沃克策划了一次针对野蛮人首领帝威努斯的作战计划,并成功地将之包围,可惜在最后关头他们低估了这位野蛮人最强战士的力量,一番拼杀之后,帝威努斯突出重围。就在同盟军即将追上身负重伤的帝威努斯时,暗精灵英雄埃斯盖罗纳赶到,成功地解救了野蛮人首领。感激之余,帝威努斯率全体野蛮人战士与暗精灵结成盟友,取名"愤怒联合",以对抗强大的"光之同盟"。
由于野蛮人的加入,两大阵营的实力趋于平衡,在僵持了一段时间后,双方再一次签署停战协议。
神泣第五章、启示
[神泣圣战(Age of Parusia)]
这一次,和平持续了500年,直到四大种族在同一时间接到同样的启示。
启示中提到,承载着伊泰安灵魂的女性生命体将诞生在大陆上空的普罗斯克城,得到她,就能得到足以改写历史的巨大力量。而想要到达普罗斯克城,首先必须拿到弗鲁威斯流域7件遗物中的4件。就这样,战争第三次爆发,愤怒联合再次攻击光之同盟,双方为了得到女神灵魂的力量而持续战斗至今……
神泣新闻公告
| · 神泣第三方数据 神泣成中国第一人气网游 |
| · 神泣网游《神泣》公测尝试登陆用户超百万 |
| ·神泣《神泣》火暴 紧急追加第四大区服务器 |
| ·神泣《神泣》开服30分钟 人数超过30万! |
| · 神泣5分钟20万!《神泣》紧急追加服务器 |
| · 神泣成人网游《神泣》公测现已全面启动 |
| ·神泣《神泣》11月25日14:00准点开放公测 |
神泣经验交流
| ·《神泣》光明战士新手任务图解 |
| ·《神泣》黑暗1-光明2怪物等级分布 |
| ·《神泣》各职业的特点及属性增加 |
| ·《神泣》光暗间各职业初始值比较 |
| ·《神泣》已开放的国家任务列表 |
| ·《神泣》光明地图重要NPC位置 |
| ·《神泣》1-50级等级怪物分布图 |
神泣心情文章
| ·《神泣》[追梦联盟]工会宣传片 |
| ·《神泣》我在国服的第三天 |
| ·《神泣》我在国服的第二天 |
| ·《神泣》我在国服的第一天 |
| ·《神泣》离奇杀人案件 |
| ·《神泣》神泣内测玩家留念 |
| ·《神泣》谁是杀死娜娜的凶手 |
月亮之上mtv
月亮之上mtv在线观看
月亮之上MP3下载:http://www.12346789.com/upload/forum/2006102609253343.mp3 ,点击下载月亮之上MP3
人的大脑是一个超级计算机,它控制这你的所有感觉和思想。对这个超级计算机的优化对你的工作和生活起着决定性作用。ririan project提出22个提升大脑能力的方法:
"22种大脑超频的方法"-来自ririanproject.com
嘟嘟语录
嘟嘟成长心得:如果想要买贵的玩具,告诉爷爷比告诉爸爸要好。
嘟嘟的理想:如果我长大以后是个女的,就去当医生;如果长大了是个男的,我就当工程师。
嘟嘟三岁时对恋爱的看法:我们家都是亲戚才谈恋爱的,像我爷爷和奶奶,舅舅和舅妈都是亲戚。
嘟嘟五岁时的两年计划:等我读完幼儿园,就得开始考虑为自己找个老婆。
嘟嘟对妈妈很不屑:妈妈:"留神别吃到苹果里的虫子哟!"嘟嘟:"为什么要我留神?该它留神我才是!"
喜欢小狗
妈妈问:"嘟嘟,你看隔壁的小妹妹好不好玩?妈妈也给你生一个小妹妹好不好?"嘟嘟因为旋旋(隔壁的女孩)不肯嫁他至今耿耿于怀,回答说:"我不喜欢小妹妹。要不,妈妈你给我生一个小狗吧,要白色的!"
受欢迎的小孩
过六一节了,小朋友们联欢,大家都表演节目。吴旋旋最厉害了,上台表演弹钢琴,演奏完后下面看节目的爸爸妈妈们都一直在喊,要她再弹一个。老师就问旋旋要不要再弹一首,结果旋旋急得快要哭出来:"我又没有弹错,为什么还要我再弹一次?"
贪玩的蚂蚁
妈妈让嘟嘟帮着晾衣服,嘟嘟却只顾在院子里看一群蚂蚁搬虫子。妈妈便教育他说:"你看蚂蚁多勤劳,从不浪费时间去玩耍。"嘟嘟很不服气地说:"但是我每次到郊外去旅行,总会遇到它们的!"
音乐细胞
为了培养嘟嘟的艺术修养,爸爸带他到音乐厅欣赏小提琴演奏会。一小时,两小时过去了,台上的演奏者依然在不停地演奏……最后,嘟嘟实在是忍无可忍啦,他大声问: "爸爸!他要到什么时候才能把那个木盒子锯开?"
这件事我一定要做了。真的要做了。也许可以再等一会儿。先休息一下,看会儿电视,上会儿网,聊会儿天。这件事我明天再做吧。
我们每个人都会有这样的经验,一些事情需要我们完成,而惰性却总是占了上风。如何能克服惰性成为如何完成任务和GTD的一个重要话题。Paul's Tips最近在一篇文章中提到如何通过六个步骤来克服惰性,完成任务:
大多数人产生惰性延误工作的主要原因是因为要付出代价,让我们多少感觉有些辛苦,哪怕只有一点。就象我们都喜欢干净的厨房,但洗碗又是一件讨厌的活。渴望成果却不愿意忍受痛苦的过程。一个好的开端是承认需要付出的代价,但强调工作完成后的结果,肯定这个结果值得付出的代价。比起最终的成就感,这点痛算什么?
每个人对辛苦都有一定的承受能力,并且都可以一点一点的将其提高。一个好办法就是从小事和相对简单的事情做起,循序渐进,慢慢提高对"辛苦"的接受程度。
勿以善小而不为。当你知道有什么小事需要你马上去做时,立刻就去做,一分钟也不要耽误。如果你心里有什么声音告诉你一堆理由妨碍你去完成这件事,不要理它们,立刻去做。不要犯嘀咕,做完就完了,只是件小事,不值得你左思右想。
当你已经可以克服小的阻碍完成工作后,只要学会把分量更重的工作划分成很多小的部分,一部分一部分完成,大的困难也就不在话下了。不过,要确认这些小的部分的确有意义,而不是找借口拖延时间。
不要花太多时间整理和规划,只找眼于整体会让你看到做这件事多难多辛苦,你应该找出可以付诸行动的小的突破点,马上开始行动。没有什么大事是一蹴而就的,将一个一个小困难一一攻破,就能获得最后的胜利。你的任务就是找到下一步能马上开始做的事情。
另一个让很多人束手不前的原因是害怕浪费时间。好像没有把什么事情都安排好就没法开始。其实,只要开始做就不可能是完全的浪费,哪怕失败也是有价值的,从失败中我们可以获得很多经验。最重要的是,在尝试中,我们除了获得失败,还能获得成功。
原文作者:Dan Zambonini
翻译:拙尘 @ yeeyan.com
原文链接:Is Web 2.0 killing the Semantic Web?
(译者:Web 2.0同语义网络在形式和内容上到底有多大的差别?这种差别是否会像一些人质疑的那样"正在扼杀语义网络"?怎样才能完成从Web 2.0到语义网络的进化? Dan Zambonini在这篇文章里尝试着给出一些答案或思考。同类文章推荐:
我是如此的期待语义网络的早日到来,不幸的是,我有一个很糟糕的感觉--它离我们还很遥远。更糟的是,Web 2.0 的红火有可能把它推得更远。这里,我不想介入"如何准确定义 Web 2.0" 的无止境纷争,就让我们采用一种普遍接受的共识吧--一切的一切都是为了大众。(在 Web 2.0 里)我们不需要关心技术或是标准:不管你用 AJAX,SVG,FOAF,PHP,Ruby,XHTML,P2P 还是 XSL,都无所谓;你只需要记住:要让大众来主导一切。让大众去创造、去协作、去共享、去交互吧。谁会在乎你后台用的是什么,怎么用的呢?你只要让大众又快又好地享有权力就万事大吉了。
而语义网络则是在地球的另一极:你需要用RDF(Resource Description Framework,一种用于描述Web资源的标记语言)来规范你的数据,用XML来编写你的代码(除了XML,还有一个N3,不过它最终很可能变成XML的一部分),并定制你的OWL(Web Ontology Language,一种用于描述语义网上本体论关系的语言)。当你有了这些标准化的数据后,就把一切都交给机器吧!因为这些数据正是给计算机去阅读和理解的。语义网络对它的用户来说,多多少少应该是透明的。
(两者对比来说,)Web 2.0 是与位于高端的用户的体验戚戚相关的,它的效果立竿见影;而语义网络则是与低端的数据有关,是一种长远的解决方案。用户们所能看到的都是那些很酷的、千变万化的 Web 2.0 的东东,这使得语义网络看起来是那么复杂、苛刻和毫无必要。对于外部的世界来说,两种技术是很相似的--都是为了共享和整合数据;但是,Web 2.0 有很漂亮的界面,并且它就实实在在地在眼前。这就是为什么那些有限的资金都投给了wiki和blog们,而不是RDF数据库转换器。
但是请不要就此忽略了语义网络。(让我们问自己这样一个问题:)对于未来的网络,我们到底有哪些期待呢?我是指真正的期待。不错,Web 2.0 已经使得我们可以更有效地使用地图,可以共享图片,还可以汇集大家的意见来对某个网站品头论足。但是,那又怎么样呢?难道这些就是我们梦寐以求的成就吗?难道这些就是我们可以留给后世的遗产吗?(要知道,)语义网络是有可能挽救人们的生命的。它可以从大规模的分布式数据中找出其它方法所不能确定的模式;它可以帮助人们寻找治疗方法和解决生命科学中的其它问题;它可以探查和防止有组织的犯罪和恐怖活动;它可以帮助分析地质和气象学信息,从而减少自然灾害的破环;它可以检测和限制病毒的爆发;它还可以用来分配和再使用重要的教育资源。这些都是很大胆的宣言,也正是我们所要努力的目标。这就是为什么我们需要语义网络能够大行其道。我们不可以让一张花里胡哨的地图阻挡了前进的道路。
那么,前面的路该如何走呢?首先,我们要充分利用 Web 2.0 所奠定的基础。正如 Daniel Weitzner 最近对我说的,关键的关键就是要在语义网络的中规中举的语义学和 Web 2.0 的灵活多变的形式之间找到一个最佳的折衷。GRDDL 就是一个致力于此的项目。它通过将现存的网络内容重新定义为语义网络的数据,来帮助我们寻找两者之间若隐若现的中间地带。
我们还可以充分保留 Web 2.0 的灵活性。由于其技术无关性(technology agnostic),我们可以在 Web 2.0 中应用语义网络的技术来实现两者的最佳融合(FOAF RDF 的语汇已经被成功地集成到了许多社交网络的应用中)。
让我们来努力推动事物的发展吧!毫无疑问,Web 2.0 是有趣、有效并令人惊叹的,它是向前迈进的巨大一步。但是,我们不能因此而忘记了语义网络可能带来的巨大利益。这个世界上只有10%的人能够上网,而其中经常接触 Web 2.0 应用的人则更少。语义网络则大大延伸了受惠者的范围:它不仅让我们的开发人员有了新的玩具,更将对世界上60亿无法接触网络的人产生深远而重大的影响。
使用Quartz实现定时功能
Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http://www.opensymphony.com/quartz/官方网站查看。
Quartz的几个核心的接口和类为:
Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。
Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。
Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。
JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。
JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。
JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.
JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。
JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。
简单的定时程序:
public class TestJob implements Job
{
public TestJob(){}
public void execute(JobExecutionContext arg0) throws JobExecutionException
{
String name = context.getJobDetail().getJobDataMap().getString("name");
System.out.println("job executing..."+name); }
}
public class QuartzTest
{
public static void main(String[] args)
{
QuartzTest test = new QuartzTest();
try
{
test.startSchedule();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void startSchedule() throws Exception
{
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail jobDetail =
new JobDetail("testJob", Scheduler.DEFAULT_GROUP, TestJob.class);
//结束时间
long end = System.currentTimeMillis() + 9000L;
//执行10次,每3秒执行一次,到9秒后结束
SimpleTrigger trigger = new SimpleTrigger("test",null,new Date(),new Date(end),10,3000L);
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
执行上面这个类基本实现了一个简单的定时程序。但问题是现在这个类只能应用在application中,在web环境里执行还需要添加一些配置,例如添加servlet,添加配置文件quartz.properties或者quartz-job.xml(在XML文件里以配置方式定义 triiger,定时描述等)。
web应用中使用
在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用,提供了一个 QuartzInitializerServlet和一个QuartzInitializerListener,用于在加载web应用时,对quartz 进行初始化。我在使用servlet时加载成功,在使用listener时不成功,不知道怎么回事?
servlet配置:
listener配置可以看源码,主要的上面的参数配置为
上面提到了quartz.properties,这是自行指定的,Quartz提供了一个默认的配置文件,可以满足基本的j2se应用,如果在 web应用中,我们想把job,trigger配置都写到文件中,就需要自己来写,并指定在初始化时加载我们自己的quratz.properties,位置放在classes下。
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = /scheduler/quartz_jobs.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
quartz要使用插件来加载自己的xml配置文件,上边我们指定了在初始化时加载classes\scheduler\quartz_jobs.xml,默认的是加载classes\quartz_jobs.xml文件。
quartz_jobs.xml文件:
上面配置了一个作业,并声明一个参数Name;配置了一个CronTrigger,每三秒执行一次。如果要配置SimpleTrigger ,可以使用
上面与Job对应的类为TestJob,源码为:
public class TestJob implements Job
{
public TestJob(){}
public void execute(JobExecutionContext context) throws JobExecutionException
{
String name = context.getJobDetail().getJobDataMap().getString("name");
System.out.println("job executing..."+name);
}
}
在quartz_job.xml文件中还可以指定TriggerListener,JobListener等,可以使用
由于quartz目前文档不是很多,大部分都是看源码。总体看Quartz提供的CronTrigger使用表达式方式描述定时规律这个功能还是很强大的,在其源码中有很多例子。
spring已经把quartz集成在一起,并进行了封装,使用起来还是很方便的。