<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> <!-- 要调用的工作类 --> <bean id="synchronizeGameInfo" class="com.cyou.gamehistory.trigger.SynchronizeGameInfo"> </bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="updateGameInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="synchronizeGameInfo" /> <property name="targetMethod" value="synchronizeGame" /> <!-- 非并发 --> <property name="concurrent" value="false" /> </bean> <!-- 定义触发时间 --> <bean id="updateGameTrigger" lazy-init="false" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="updateGameInfo"></property> <property name="cronExpression"> <!-- 每周星期天凌晨1点实行一次 --> <value>0 0 1 ? * L</value> </property> </bean> <!-- 总管理类 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="updateGameTrigger"/> </list> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.threadCount">1</prop> </props> </property> </bean> </beans>
第一步,在Spring配置文件中增加本业务类
<bean id="synchronizeGameInfo" class="com.cyou.gamehistory.trigger.SynchronizeGameInfo">
第二步,定义任务。在Spring配置文件中配置代理类MethodInvokingJobDetailFactoryBean,定义任务的详细信息。
<bean id="updateGameInfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="synchronizeGameInfo" /> <property name="targetMethod" value="synchronizeGame" /> <!-- 非并发 --> <property name="concurrent" value="false" /> </bean>
这个配置告诉Spring,我们的任务是执行id为synchronizeGameInfo的bean中的synchronizeGame函数。其中参数concurrent告诉Spring,不要并发运行这个任务。
第三步,配置一个触发器。在Spring配置文件中配置触发器类updateGameTrigger。
<bean id="updateGameTrigger" lazy-init="false" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="updateGameInfo"></property> <property name="cronExpression"> <!-- 每周星期天凌晨1点实行一次 --> <value>0 0 1 ? * L</value> </property> </bean>
触发器将告诉Quartz两件事:在何时触发任务、触发哪个任务。其中属性参数cronExpression为调度时间,格式和unix上的crontab类似,其中问号表示忽略该位置(星期)上的值。属性参数jobDetail指向具体的任务bean:updateGameInfo 。如果你有多个任务,每个任务的触发时间都不一样,则你可以在此配置多个不同的触发器。
第四步,配置一个调度器。在Spring配置文件中配置调度器类SchedulerFactoryBean。
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="updateGameTrigger"/> </list> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.threadCount">1</prop> </props> </property> </bean>
该调度器用于管理触发器。只有在调度器中列表出现的触发器才被Quartz系统调度执行。至此,所有的配置已完成,任务已能正常跑了。
1:又到了过年的时候,帮同事买到回家的票是同事的一个需要迫切解决的事情.同事的环境跟我一样,是debian6.0.6, x64的,chrome是24beta,firefox是17.0.1版
下面说下分浏览器firefox 和 chrome实现
A:firefox 实现
firefox很简单,这里我们用了一个购票助手,
http://www.fishlee.net/Apps/Cn12306/GetNormalRegKey?v=1
先去这里注册,把邮箱和你登录12306的账户绑定了,生成一个串
然后在firefox里面,打开
https://addons.mozilla.org/zh-CN/firefox/addon/scriptish/
安装下载这个脚本运行环境,然后重启下firefox
接下来安装12306助手,地址在下面,用firefox打开会自动提示你安装脚本(我已经装过了所以是重装)
www.fishlee.net/Service/Download.ashx/44/47/12306_ticket_helper.user.js
接下来添加firefox的例外,firefox打开https://dynamic.12306.cn/otsweb/ 直接在firefox报错阻止的页面添加例外,
展开"我已充分了解可能的风险", 点击"添加例外" ->"确认安全例外" ,
然后就可以登录购票了
B:chrome实现
chrome的实现起来要简单些,直接去安装google商店里面的,安装完添加例外
https://chrome.google.com/webstore/detail/idjgmabfihmhmojipdkcackbihbdceno
添加cookie例外,在高级里面内容隐私添加cookie例外 添加dynamic.12306.cn
然后打开http://dynamic.12306.cn/otsweb/#fishOption ,注意不是https的,直接登录就行了
C:助手安装不清楚的请参考助手作者的帮助
http://www.fishlee.net/soft/44/how_to_install.html#C-210
数据如下:
1 www.dianping.com ^/shanghai$ 上海首页 1
2 www.dianping.com ^/shop/[0-9]*$ 商户页 1
导入hive
hive > load data local inpath '/data/test.txt' overwrite into table dpdim_page_name_id;
查询数据:
hive (bi)> select * from dpdim_page_name_id;
OK
NULL www.dianping.com ^/shanghai$ 上海首页 1
2 www.dianping.com ^/shop/[0-9]*$ 商户页 1
第一个字段内容为NULL,诡异,怀疑是UTF-8 BOM签名导致的
用UltraEdit打开文件,切换到十六进制编辑模式,文件头部有EF BB BF
果然!
使用UltraEdit,文件另存,格式选择为“UTF-8
无BOM”
重新导入,查询数据:
hive > select * from dpdim_page_name_id;
OK
1 www.dianping.com ^/shanghai$ 上海首页 1
2 www.dianping.com ^/shop/[0-9]*$ 商户页 1