实验目的
复习pv、uv的概念和原理
了解pv、uv的实际意义和获取方法
实验原理
前面我们已经基于mapreduce进行数据的etl处理,实验有很多不足之处,这次实验我们是基于url数据进行pv和uv的统计。pv的意思是page view ,uv的意思是user view,分别代表页面点击量和用户数。pv、uv统计的基本思路很简单,首先得到数据、过滤数据,然后得到数据中所有的用户,累加求和就是pv,去重求和就是uv。
统计pv的sql语句就是使用count方法;统计uv的方法是按照用户分组后再使用count方法。
1.PV统计(页面访问量)
(1) 基本概念
PV通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PV。监测网站PV的变化趋势和分析其变化原因是很多站长定期要做的工作。 Page Views(PV)中的Page一般是指普通的html网页,也包含php、jsp等动态产生的html内容。来自浏览器的一次html内容请求会被看作一个PV,逐渐累计成为PV总数。
(2) 计算方法
用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。
2.UV统计(独立访客)
(1) 基本概念
独立IP:是指独立用户/独立访客。指访问某个站点或点击某条新闻的不同IP地址的人数。UV是unique visitor的简写,是指通过互联网访问、浏览这个网页的自然人。在同一天内,uv只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数。独立IP访问者提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。
(2) 统计思路
在用户第一次发送一次请求时,则把这次请求信息插入数据库,并且在客户浏览器存放一个生命周期为24小时的cookie值UID,当同一用户再次访问,通过判断请求是否携带UID的cookie来知道该用户是否已经访问过该站点,如果有UID那么就不插入,没有则说明是第一次访问,则插入请求记录。当然这个cookie的生命周期是变化的,你得计算存放cookie的时候距离当晚24点还有多久,这段时间也就是cookie的生命周期。
3.针对某一类网址的pv、uv
实际上我们要统计的,一般都是不同网址的pv和uv,或者针对某一个关键字的pv和uv,这时候我们需要对数据进行预处理,这个预处理过程可能就是前面的etl,也可能需要具体业务自己实现。例如,某电商网站需要查看某一天每个商品的访问量,搜索量,收藏量等,我们需要专门的程序得到符合要求的数据,这一步是pv、uv统计中比较复杂的。
4.得到pv、uv的后续处理
我们单纯得到pv和uv没有太大的意义,往往需要得到某个用户的pv,或者pv排名前100的用户,uv前一百的商品等,这些统计可以让网站管理者针对不同用户,不同商品采取不同的推荐措施等。这里就需要使用二次排序等知识点。
实验环境
1.操作系统
服务器:Linux_Centos
操作机:Windows_7
服务器默认用户名:root,密码:123456
操作机默认用户名:hongya,密码:123456
2.实验工具
IntelliJ IDEA
IDEA全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
优点:
1)最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。其他编辑功能抛开不看,这点远胜Eclipse。
2)首先查看Map类型的对象,如果实现类采用的是哈希映射,则会自动过滤空的Entry实例。不像Eclipse,只能在默认的toString()方法中寻找你所要的key。
3)其次,需要动态Evaluate一个表达式的值,比如我得到了一个类的实例,但是并不知晓它的API,可以通过Code Completion点出它所支持的方法,这点Eclipse无法比拟。
4)最后,在多线程调试的情况下,Log on console的功能可以帮你检查多线程执行的情况。
缺点:
1)插件开发匮乏,比起Eclipse,IDEA只能算是个插件的矮子,目前官方公布的插件不足400个,并且许多插件实质性的东西并没有,可能是IDEA本身就太强大了。
2)在同一页面中只支持单工程,这为开发带来一定的不便,特别是喜欢开发时建一个测试工程来测试部分方法的程序员带来心理上的不认同。
3)匮乏的技术文章,目前网络中能找到的技术支持基本没有,技术文章也少之又少。
4)资源消耗比较大,建个大中型的J2EE项目,启动后基本要200M以上的内存支持,包括安装软件在内,差不多要500M的硬盘空间支持。(由于很多智能功能是实时的,因此包括系统类在内的所有类都被IDEA存放到IDEA的工作路径中)。
特色功能:
智能选择
丰富的导航模式
历史记录功能
JUnit的完美支持
对重构的优越支持
编码辅助
灵活的排版功能
XML的完美支持
动态语法检测
代码检查等等。