• 博客项目之设计访客统计


    分类统计

    需求:

    统计用户点击这三个分类的次数,用来分析用户喜欢哪些话题。

    实现原理:

    通过给a标签设置一个背景图片属性,当点击的时候发送一条请求给服务器。

    服务器端:
    app.get('/stat',routes.stat);
    
    数据库:

    设置相应的几个字段

    接着处理相应的请求,如下

    请求的参数就是对应的key,因此只需要先将对应的数据先查询出来,然后在其基础上 + 1 即可。

    对应的数据表

    完。

    统计首页用户请求来源

    如果懂点HTTP该有多好,那是很久以后才明白的。

    HTTP中的请求头部有一个referer属性,这个属性记录着用户从哪个页面过来的,因此只需要在服务器脚本中写上这么一句就可以了。

    nodejs中的

    req.headers.referer
    

    可以用来获取来源。

    在数据中查到的数据

    完。

    统计用户访问量

    思路:

    通过获取用户的IP地址来统计访问量

    实现方法:

    nodejs通过如下可以获取到用户的ip

    req.connection.remoteAddress
    
    数据库设计思路
    [
    	{
    		visitorip:["127.0.0.1","162.124.0.24","182.150.1.56"],
    		date:currentDate
    	}
    ]
    

    currentDate为当天的日期,将同一天访问的ip,都添加到同一个数组中,否则新建一个对象。

    实现过程

    查询当天有没有相关的数据

    false
    新建一个对象,将对应的数据插入进去

    true
    在原数据的基础上再添加一条,接着将这个新数组更新到数据库中

    一些乱想

    在添加到数据库之前,并没有过滤重复IP,这样的原因是:这些重复的数据也许有其他用处。

    能保留完整的数据尽量保留完整,而过滤应该是单独考虑的事。

    用户访问量统计

    获取前几天的访问量将数组倒序一些即可,因为mongodb后添加的数据越往后。

    这里的访问量并不包括重复的IP,因此通过map方法将所有数据通过Set对象过滤,再取它的长度即可。

    获取到的数据

    结果

    一些问题

    这个设计中,关于统计都是通过客服端或服务器来计算的,并没有将这些计算的结果单独设计一个字段,如果数据量较大的情况下,会不会出现什么问题,这是值得思考的问题。

    完。

  • 相关阅读:
    SP338 ROADS
    [Usaco2008 Mar]牛跑步
    [Cerc2005]Knights of the Round Table
    [Poi2005]Piggy Banks小猪存钱罐
    Pku1236 Network of Schools
    PKU2186 Popular Cows 受欢迎的牛
    黑暗城堡
    入门OJ:最短路径树入门
    Sqli-labs
    Sqli-labs
  • 原文地址:https://www.cnblogs.com/pssp/p/6096929.html
Copyright © 2020-2023  润新知