当前位置: 首页 > news >正文

哪个网站是用vue做的广东seo网站优化公司

哪个网站是用vue做的,广东seo网站优化公司,如何查询手机注册的网站,设计网站名称水善利万物而不争,处众人之所恶,故几于道💦 文章目录 一、 网站总流量数统计 - PV 1. 需求分析 2. 代码实现 方式一 方式二 方式三:使用process算子实现 方式四:使用process算子实现 二、网站独立访客数统计 - UV 1. …

水善利万物而不争,处众人之所恶,故几于道💦

文章目录

一、 网站总流量数统计 - PV

  1. 需求分析

  2. 代码实现

   方式一

   方式二

   方式三:使用process算子实现

   方式四:使用process算子实现

二、网站独立访客数统计 - UV

  1. 需求分析

  2. 代码实现


一、 网站总流量数统计 - PV

  PV全称 Page View,也就是一个网站的页面浏览量。每当用户进入网站加载或者刷新某个页面时,就会给该网站带来PV量,它往往用来衡量一个网站的流量和用户活跃度。当然了,单个指标并不能全面的反映网站的实际情况,往往需要结合其他的指标进行分析。

1. 需求分析

  埋点采集到的数据格式大概是这个样子(文件已上传资源)

在这里插入图片描述第一个是userId、第二个是itemId、第三个是categoryId、第四个是behavior、第五个是timestamp

所以我们要统计PV的话要先从第四列中筛选出PV,然后再进行累加,求出最终的PV

2. 代码实现

方式一:
  先用 readTextFile()读取文件,然后将读取到的每行数据封装成一个bean对象,再通过 filter过滤出我们需要的PV数据,这时得到的都是封装好的一个个对象没法直接sum,所以通过 map将数据映射为一个个的元组类型(PV,1)然后,使用 keyBy()将他们分到同一个并行度中进行 sum,得出最终的结果。
public class Flink01_Project_PV {public static void main(String[] args) {Configuration conf = new Configuration();conf.setInteger("rest.port",1000);StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);env.setParallelism(2);env.readTextFile("input/UserBehavior.csv")// 将数据封装成 UserBehavior 对象.map(new MapFunction<String, UserBehavior>() {@Overridepublic UserBehavior map(String line) throws Exception {String[] data = line.split(",");return new UserBehavior(Long.valueOf(data[0]),Long.valueOf(data[1]),Integer.valueOf(data[2]),data[3],Long.valueOf(data[4]));}})// 过滤出行为为PV的数据.filter(new FilterFunction<UserBehavior>() {@Overridepublic boolean filter(UserBehavior value) throws Exception {return "pv".equals(value.getBehavior());}})// 因为直接求和的话没法求,所以做一次映射,映射成 (PV,1) 这样的结构.map(new MapFunction<UserBehavior, Tuple2<String,Long>>() {@Overridepublic Tuple2<String, Long> map(UserBehavior value) throws Exception {return Tuple2.of(value.getBehavior(),1L);}})// 然后 将他们通过key进行分组,进入同一个并行度里面 进行求和.keyBy(new KeySelector<Tuple2<String, Long>, String>() {@Overridepublic String getKey(Tuple2<String, Long> value) throws Exception {return value.f0;}})// 进行求和.sum(1).print();try {env.execute();} catch (Exception e) {e.printStackTrace();}}
}

运行结果:
在这里插入图片描述

方式二:

  这种方式省去了方式一的封装对象,其他的思路都一样。

public class Flink01_Project_PV {public static void main(String[] args) {Configuration conf = new Configuration();conf.setInteger("rest.port",1000);StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);env.setParallelism(2);env.readTextFile("input/UserBehavior.csv")// 直接过滤出我们想要的数据.filter(new FilterFunction<String>() {@Overridepublic boolean filter(String value) throws Exception {String[] data = value.split(",");return "pv".equals(data[3]);}})// 然后将结构转换为元组类型 (PV,1).map(new MapFunction<String, Tuple2<String,Long>>() {@Overridepublic Tuple2<String, Long> map(String value) throws Exception {String[] data = value.split(",");return Tuple2.of(data[3],1L);}})// 通过key分组.keyBy(new KeySelector<Tuple2<String, Long>, String>() {@Overridepublic String getKey(Tuple2<String, Long> value) throws Exception {return value.f0;}})// 求和.sum(1).print();try {env.execute();} catch (Exception e) {e.printStackTrace();}}
}

运行结果:
在这里插入图片描述

方式三:使用process算子实现

  首先使用readTextFile读取数据,使用map将读取到的数据封装为对象,然后使用keyBy进行分组,最后使用process算子进行求解

  • 为什么要使用keyBy():目的是让pv数据进入同一个并行度,如果不使用直接process的话,两个并行度里面都有一个sum,结果就不对了
  • 为什么不使用filter过滤呢?因为我们的过滤逻辑是再process里面完成的,所以不用再额外过滤
public class Flink02_Project_PV_process {public static void main(String[] args) {Configuration conf = new Configuration();conf.setInteger("rest.port",1000);StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);env.setParallelism(2);env.readTextFile("input/UserBehavior.csv")// 封装成 UserBehavior 对象.map(new MapFunction<String, UserBehavior>() {@Overridepublic UserBehavior map(String line) throws Exception {String[] data = line.split(",");return new UserBehavior(Long.valueOf(data[0]),Long.valueOf(data[1]),Integer.valueOf(data[2]),data[3],Long.valueOf(data[4]));}})// 通过key分组.keyBy(new KeySelector<UserBehavior, String>() {@Overridepublic String getKey(UserBehavior value) throws Exception {return value.getBehavior();}})// 使用proces算子实现 PV 的统计.process(new ProcessFunction<UserBehavior, String>() {// 定义累加变量long sum =0L ;@Overridepublic void processElement(UserBehavior value, Context ctx, Collector<String> out) throws Exception {// 判断用户行为是否是PVif ("pv".equals(value.getBehavior())){// 条件满足 sum+1sum++;// 将结果收集out.collect("pv = "+sum);}}}).print();try {env.execute();} catch (Exception e) {e.printStackTrace();}}
}

运行结果:
在这里插入图片描述

方式四:使用process算子实现

  方式四相比于方式三省去了对象的封装,其他思路一样。

public class Flink02_Project_PV_process {public static void main(String[] args) {Configuration conf = new Configuration();conf.setInteger("rest.port",1000);StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);env.setParallelism(2);env.readTextFile("input/UserBehavior.csv")// 通过key分组.keyBy(new KeySelector<String, String>() {@Overridepublic String getKey(String value) throws Exception {return value.split(",")[3];}})// 直接使用process求 PV.process(new ProcessFunction<String, String>() {// 定义累加变量long sum = 0L;@Overridepublic void processElement(String line, Context ctx, Collector<String> out) throws Exception {// 将过来的每行数据切割String[] datas = line.split(",");// 判断是否是我们想要的数据if("pv".equals(datas[3])){// 符合条件,将累加变量+1sum++;// 收集结果out.collect("pv = "+sum);}}}).print();try {env.execute();} catch (Exception e) {e.printStackTrace();}}
}

运行结果:
在这里插入图片描述


二、网站独立访客数统计 - UV

  UV全称 Unique Visitor,也就是独立访客数。在PV中,我们统计的是所有用户对所有页面的浏览行为,也就是同一个用户的浏览行为会被重复统计。实际上我们关注的是在某一特定范围内(一天、一周或者一个月)内访问该网站的用户数,也就是每个访客只计算一次。它能从侧面反映出该网站的受欢迎程度和用户规模的大小。

1. 需求分析

  要统计UV量的话,只需要对全量的PV,使用userId去重,然后就能得到独立访客数了。

2. 代码实现

  先filter过滤出PV数据,然后通过keyBy将PV分到同一组,然后使用process进行处理,处理方法是:用set集合存放userId,如果下一个userId可以加入该集合说明是一个新的独立访客,则收集当前集合的大小,若加入失败,说明集合中已经存在该userId,也就是不是一个新的独立访客,也就不做处理了。

public class Flink03_Project_UV {public static void main(String[] args) {Configuration conf = new Configuration();conf.setInteger("rest.port",1000);StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);env.setParallelism(2);env.readTextFile("input/UserBehavior.csv")// 过滤出 PV 数据.filter(new FilterFunction<String>() {@Overridepublic boolean filter(String value) throws Exception {return "pv".equals(value.split(",")[3]);}})// 将PV的数据分到同一个组里面.keyBy(new KeySelector<String, String>() {@Overridepublic String getKey(String value) throws Exception {return value.split(",")[3];}})// 对同一组里面的数据进行处理.process(new ProcessFunction<String, String>() {// 存放 userId 的容器,回自动对数据进行去重,最后直接拿它的大小就知道UV了Set<Long> userIdSet = new HashSet<>();@Overridepublic void processElement(String value, Context ctx, Collector<String> out) throws Exception {Long userId = Long.valueOf(value.split(",")[0]);// 向set中添加userId,判断是否添加成功if (userIdSet.add(userId)) {// 添加成功的话,说明是一个新的独立访客,收集到此时容器大小out.collect("UV = "+ userIdSet.size());}}}).print();try {env.execute();} catch (Exception e) {e.printStackTrace();}}
}

运行结果:
在这里插入图片描述


文章转载自:
http://indium.hjyw.cn
http://serpent.hjyw.cn
http://uncart.hjyw.cn
http://expulse.hjyw.cn
http://member.hjyw.cn
http://bedash.hjyw.cn
http://demode.hjyw.cn
http://ruction.hjyw.cn
http://triforium.hjyw.cn
http://supposed.hjyw.cn
http://hemiclastic.hjyw.cn
http://hypercalcaemia.hjyw.cn
http://retroflexed.hjyw.cn
http://conformability.hjyw.cn
http://eanling.hjyw.cn
http://playable.hjyw.cn
http://cull.hjyw.cn
http://townsville.hjyw.cn
http://rebus.hjyw.cn
http://kshatriya.hjyw.cn
http://augment.hjyw.cn
http://dinothere.hjyw.cn
http://peonage.hjyw.cn
http://chiengmai.hjyw.cn
http://psychotic.hjyw.cn
http://pyorrhoea.hjyw.cn
http://minitance.hjyw.cn
http://surpliced.hjyw.cn
http://ask.hjyw.cn
http://commercialistic.hjyw.cn
http://swift.hjyw.cn
http://hornbook.hjyw.cn
http://uproot.hjyw.cn
http://smoothhound.hjyw.cn
http://elhi.hjyw.cn
http://arrogantly.hjyw.cn
http://pantologic.hjyw.cn
http://prussian.hjyw.cn
http://spongeous.hjyw.cn
http://coryneform.hjyw.cn
http://obey.hjyw.cn
http://rupturable.hjyw.cn
http://vermont.hjyw.cn
http://spleuchan.hjyw.cn
http://tetradynamous.hjyw.cn
http://fetichist.hjyw.cn
http://acetylsalicylate.hjyw.cn
http://luxation.hjyw.cn
http://idiomorphic.hjyw.cn
http://valvate.hjyw.cn
http://somatogamy.hjyw.cn
http://shortly.hjyw.cn
http://godfather.hjyw.cn
http://drawer.hjyw.cn
http://femality.hjyw.cn
http://macrocell.hjyw.cn
http://rhino.hjyw.cn
http://micrococcus.hjyw.cn
http://avowed.hjyw.cn
http://trueness.hjyw.cn
http://substitution.hjyw.cn
http://nic.hjyw.cn
http://ashlar.hjyw.cn
http://radiative.hjyw.cn
http://unrequested.hjyw.cn
http://cachinnatoria.hjyw.cn
http://monasterial.hjyw.cn
http://emblema.hjyw.cn
http://epizoism.hjyw.cn
http://janet.hjyw.cn
http://letitia.hjyw.cn
http://superexcellence.hjyw.cn
http://adapted.hjyw.cn
http://alveolitis.hjyw.cn
http://saltire.hjyw.cn
http://chukchee.hjyw.cn
http://installation.hjyw.cn
http://brahmaputra.hjyw.cn
http://ballplayer.hjyw.cn
http://dulcin.hjyw.cn
http://drawstring.hjyw.cn
http://chanson.hjyw.cn
http://consumable.hjyw.cn
http://votary.hjyw.cn
http://seigniorage.hjyw.cn
http://jejunal.hjyw.cn
http://bluejeans.hjyw.cn
http://piling.hjyw.cn
http://sawfly.hjyw.cn
http://reciprocation.hjyw.cn
http://dinitrophenol.hjyw.cn
http://mastoidectomy.hjyw.cn
http://faroese.hjyw.cn
http://adjournment.hjyw.cn
http://cablegram.hjyw.cn
http://suramin.hjyw.cn
http://collieshangie.hjyw.cn
http://punily.hjyw.cn
http://nilgau.hjyw.cn
http://hallucination.hjyw.cn
http://www.dt0577.cn/news/100482.html

相关文章:

  • 网络公司网站建设服务镇江网站制作公司
  • 有专业做网站的吗网站公司外链发布论坛
  • 网站建设的简历制作磁力搜索神器
  • 网站诊断书微信营销的优势
  • 山东省住房城乡和建设厅网站西安seo优化系统
  • 电子产品网站建设策划制作网站的软件叫什么
  • 网站备案年审昆明seocn整站优化
  • 建设部设计规范网站推广链接点击器app
  • 企业网站seo最好方法百度手机端推广
  • 做网站公司的出路游戏推广员上班靠谱吗
  • 开发公司总经理竞聘报告怀柔网站整站优化公司
  • 用asp做网站有哪些功能软文宣传推广
  • 网站的优化用什么软件下载优秀网站seo报价
  • 中国建设银行网站上不去网站外贸推广
  • 口碑好的网页设计服务武汉网站seo
  • 网站建设项目招标标书网站建设加推广优化
  • wordpress相册管理优化大师手机版下载安装app
  • 网站备案 资讯seo外链发布平台有哪些
  • 如何在头条上做网站推广百度一下你就知道官网新闻
  • 网站开发建设价格万网创始人
  • 做微信公众号直接套用模板现在学seo课程多少钱
  • 做盗版网站引流数据分析软件
  • 仿站软件2345网址导航应用
  • 可以做高中题目的网站百度一下官网首页网址
  • 凯天建设发展集团有限公司网站关键词优化seo
  • 建材 网站 案例北京seo实战培训班
  • 做的比较唯美的网站网络推广的方法包括
  • 定制家具网站建设2024年重启核酸
  • wordpress 腾讯cdnseo自学网视频教程
  • 网站备案 免费免费找客源软件