JAVA中什么是埋点,应用于什么场景?

2020-04-01 10:26发布

4条回答
爱梦 -拿来吧你
1楼 · 2020-08-18 09:54.采纳回答

我在最前面回答的时候也说了,埋点的作用就是用来做动作行为分析的。那么对于这种动作,你需要知道你做埋点的目的是什么?是说你考虑对某一个功能做判断还是说你想知道最近频繁跳出率出现在哪里?对于这种情况拿什么去判断?是问访客?是做市场调研?还是问各设计、研发、测试人员?

比如平时我们支付的时候就是打开支付宝,打开扫一扫,扫描对方的二维码,输入金额(2元,小金额免输入支付密码),点击确认,支付成功。

你为了资金的安全,做了两个设定。打开支付宝,打开扫一扫,扫描对方的二维码,弹出提示“您正在付款,请输入密码”,然后要你先输入支付密码(不能免输入),然后在输入金额(2元),点击确认时,弹出提示“为了保障你的安全,请先进行实名认证”,接着跳转到认证的页面。

先不管这两个设定是否合情合理,你这里就可以以埋点的形式将两次弹出做行为收集,并对相应的动作进行连串行为分析,并以此为根据形成用户画像等最终数据。




白首有我共你
2楼 · 2022-09-08 15:00
一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。 一,埋点是什么?埋点是软件开发中的一个术语,用于采集数据或者验证代码执行过程,不只是Java才有,各种开发语言中都有成熟的SDK开发包和框架使用。埋点的场景有多种,可以在程序执行时,还有在单元测试时。可以在服务器,也可以在客户端。可以收集程序运行数据,也可以收集用户数据。二,单元测试时的埋点重点补充单元测试时用到的埋点技术。单元测试的目的是测试被测函数。但是被测函数往往不是那么“简单”,首先有入参,其次要依赖使用其它的变量、函数、数据、还有第三方接口,等等。被测试函数的代码执行路径也会有多个,比如if-else,异常处理。如何模拟不同的场景,控制被测函数的运行依赖环境,验证运行过程和返回结果是否符合预期?以Java开发为例,使用JUnit + Mockit,一个典型的单元测试组成如下:1. mock模拟依赖的数据、变量、函数、第三方接口,等等2. stub打桩埋点,设置期望的执行过程、入参、出参等信息。3. verify验证代码执行过程,比如埋点的函数被调用了1次,入参是abc。4. doThrow设置异常抛出,验证异常发生时的处理逻辑是否符合预期。三,单元测试的埋点示例举个例子,被测试函数parseMsg(),读取ActiveMQ消息内容,转换成JSONObject1,模拟入参TestMessage2,在getText()函数处打桩埋点,设置返回值3,调用被测试函数,验证getText()函数被调用了一次4,验证异常发生时,处理逻辑是否正确
屋顶上的小猫咪
3楼 · 2022-09-08 15:00
埋点大概分成2种业务埋点这里埋点的含义就是:预先在用户可能操作的"点",埋下上报的代码,一旦用户发生了操作,我就上报该用户操作的详细信息一般是要产品或者运营提出需求,在哪里埋点,比如进入某个界面,客户端上报"xx用户进入了xx页面"离开时再上报"xx用户离开了xx页面"本质上是跟踪用户的行为,用户什么时候打开了应用,点击了哪些标题/功能入口/广告,逗留了多长时间这就是所谓的大数据了,可以分析出用户对什么样的内容感兴趣,从而更精准的向用户推荐内容最好就是用户每一个操作都能上报给后台,用户不操作,也会触发上报,比如,"进入了xx页面n秒钟没有操作"要说明的是,这种埋点和具体你用哪种开发语言无关监控埋点这种埋点不是给产品和运营分析用户的,是让开发/运维对自己的程序有个更精准的认识比如定时采集服务器的cpu负载,内存占用情况,io负载,java 的 gc 信息程序执行某个功能的耗时,进行远程调用时的耗时程序在一段时间内捕捉到了哪些异常在一段时间内,远程接口的平均响应时间,请求次数,成功返回次数,失败次数,超时次数等等这种埋点有助于开发、运维分析程序的性能问题,监控程序的健康程度,提早进行异常的告警这样的埋点称为metric,grafana就是一款很优秀的开源的metric监控,你只需要定时把埋点数据提交给它,可以查看各项metric的统计曲线,并设定告警规则,当某个metric达到告警阈值,可以通过邮件、短信、即时通信程序(IM)向你推送告警信息由于这样的埋点对业务代码有很严重的侵入,所以很多公司会开发通用的埋点框架,采用反射等方式进行运行监控
蓝眼睛不忧郁
4楼 · 2022-09-08 15:00
埋点一般是指前端交互操作的监控,讨论的对象是不是搞错了

相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    public class Point {    private int x;    private int y;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问