1、项目需求:一个IP一天内访问算是一次访问,统计该网站的用户访问量。
2、实现思想:服务器启动的时候把数据库中的访问量进行缓存,用户访问的时候进行访问量的刷新,把访问信息存到集合中进行缓存,达到一定数量的时候要存入数据库中,服务器关闭的时候把未存入数据库中的访问量存入数据库中
3、代码实现:
//用来统计不同的URL对应的访问情况
private static List<Map<String, Integer>> accessNumMapList = new ArrayList<Map<String, Integer>>();
//访问总量
public static int accessSum = 0;
//用来缓存当天的访问ip,vector是同步的,线程安全的
public static Vector<String> ipVector = new Vector<String>();
//用来缓存访问量的信息
private static List<AccessStatistics> asList = new ArrayList<AccessStatistics>();
//定时任务,每天凌晨的时候把当天的访问量归0
public void accessTodayJob() {
ipVector = new Vector<String>();
}
//服务器启动的时候调用该方法,用到了注解开发的方式,进行缓存url分类对应的条数,总条数,当天的条数
@PostConstruct
public void getAccessNum() {
accessNumMapList = dao.getAccessUrlNum();
accessSum = dao.getAccessSum();
ipVector = dao.getIpListToday();
}