统计网址的pv,uv(附带Spring定时器)
大体思路:每天将用户的访问信息放到明细表里,然后在第二天的凌晨将这些数据归总
PVUV表
4个字段:主键pk 用户IP(customer_ip) 访问时间(time) 商铺ID(store_id)
统计TOTAL表
5个字段:主键pk 访问时间(loadtime) pv值(PV) uv值(UV) 商铺ID(store_id)
有了customer_ip,就可以很轻松的将pv值和uv值区分开来,具体如何统计的sql代码这里就不粘了
这里稍微粘一下spring定时器的代码,之前一直没接触过,也是网上搜的,不过蛮简单,也蛮实用
Xml代码
<!-- 定时器:每天早上 0点,执行一次StorePvUvDao的total和deletePvUv方法-->
<bean id="methodInvokingJobDetail1" class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="StorePvUvDao" />
</property>
<property name="targetMethod">
<value>total</value>
</property>
</bean>
<bean id="methodInvokingJobDetail2" class="org.springframework.sche易做图ng.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="StorePvUvDao" />
</property>
<property name="targetMethod">
<value>deletePvUv</value>
</property>
</bean>
<bean id="cronTrigger1" class="org.springframework.sche易做图ng.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail1" />
</property>
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<bean id="cronTrigger2" class="org.springframework.sche易做图ng.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail2" />
</property>
<property name="cronExpression">
<value>0 0 0 * * ?</value>
</property>
</bean>
<bean class="org.springframework.sche易做图ng.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger1" />
<ref local="cronTrigger2" />
</list>
</property>
</bean>
<!-- 定时器结束 -->
其中时间的参数,给大家说明一下吧,也是从网上找的例子,写得不错,和大家一起分享
单纯针对时间的设置规则
org.springframework.sche易做图ng.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpression属性。
一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素。从左至右,这些元素的定义如下:
1.秒(0–59)
2.分钟(0–59)
3.小时(0–23)
4.月份中的日期(1–31)
5.月份(1–12或JAN–DEC)
6.星期中的日期(1–7或SUN–SAT)
7.年份(1970–2099)
0 0 10,14,16 * * ?
每天上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * ?
每月前10天每隔15分钟
30 0 0 1 1 ? 2012
在2012年1月1日午夜过30秒时
0 0 8-5 ? * MON-FRI
每个工作日的工作时间
各个时间可用值如下:
秒0-59 , - * /
分0-59 , - * /
小时0-23 , - * /
日1-31 , - * ? / L W C
月1-12 or JAN-DEC , - * /
周几1-7 or SUN-SAT , - * ? / L C #
年(可选字段) empty, 1970-2099 , - * /
可用值详细分析如下:
“*”——字符可以用于所有字段,在“分”字段中设为"*"表示"每一分钟"的含义。
“?”——字符可以用在“日”和“周几”字段.它用来指定'不明确的值'.这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。
“-”——字符被用来指定一个值的范围,比如在“小时”字段中设为"10-12"表示"10点到12点"。
“,”——字符指定数个值。比如在“周几”字段中设为"MON,WED,FRI"表示"the days Monday, Wednesday, and Friday"。
“/”——字符用来指定一个值的的增加幅度.比如在“秒”字段中设置为"0/15"表示"第0, 15, 30,和45秒"。而"5/15"则表示"第5, 20, 35,和50".在'/'前加"*"字符相当于指定从0秒开始.每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23,对于“日”字段来说为0到31,而对于“月”字段来说为1到12。"/"字段仅仅只是帮助你在允许的数值范围内从开始"第n"的值。
“L”——字符可用在“日”和“周几”这两个字段。它是"last"的缩写,但是在这两个字段中有不同的含义。例如,“日”字段中的"L"表示"一个月中的最后一天" ——对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中,它简单的表示"7" or "SAT",但是如果在“周几”字段中使用时跟在某个数字之后,它表示"该月最后一个星期×" ——比如"6L"表示"该月最后一个周五"。当使用'L'选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。
“W”——可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五)。比如你将“日”字段设为&q
补充:软件开发 , Java ,