首页
学习
活动
专区
圈层
工具
发布

如何理解用户的行为?

产品经理的核心工作就是研究用户,根据用户需求研发产品。而研究用户的核心是研究用户行为,研究用户行为背后的原理。 什么是用户? 用户不是自然人,而是需求的集合。怎么理解这句话呢?...异质性是指用户是唯一的,世界上没有完全一样的用户。 情境性是指用户的行为受情境的影响,没有情境就没有用户,同一个用户在不同情境下会有不同的反应和行为。...可塑性是指用户是可变的,其偏好和认知会随着外界不同的信息刺激发生变化而演化。 自利性是指用户追求个人利益最大化。 有限理性是指用户追求理性,但由于能力有限,只存在有限理性。 如何理解用户的行为?...最终形成的期望效用会影响人的行为,并根据实际使用体验形成经验,反馈给用户偏好,对其进行修正或强化,形成新的偏好。 理解了用户行为,有什么用? 产品的目的,最终是促进用户的某种行为(使用、交易等)。...理解了用户行为,我们就能更好地促进用户行为。有两种方向: 1. 在做产品设计的时候,就找到那些认同产品偏好和认知的人群。去看他们的场景,去设计适合他们的场景。 2.

86610

理解和运用Java中的Lambda

Java应用会无法升级新的JDK版本。...表达式 下面是来自某搜索引擎百科关于Lambda表达式的定义: Lambda表达式(Lambda Expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的Lambda...由于不同的声明具有不同的签名,当Lambda表达式作为方法参数时,重载解析就会影响到Lambda表达式的目标类型。编译器会根据它对该Lambda表达式的所提供的信息的理解做出决定。...限于篇幅问题,这里把Lambda表达式的底层原理做了简单的梳理(这个推导过程仅限于个人理解,依据尚未充分): :封闭类会基于类内的Lambda表达式类型生成private static synthetic...:调用点ConstantCallSite实例中的方法句柄MethodHandle会根据不同场景选取不同的实现,MethodHandle的子类很多,这里无法一一展开。

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入理解select的行为

    内核并不关心这一数组的大小,内核在分配空间时使用的是select的第一个参数(最大的fd)来计算的,具体代码如下: /* max_fds can increase, so grab it once to...bits只和传入的第一参数有关,取传入的参数和该进程支持的最大句柄的最小值。...2.句柄过大的问题 如果一个应用程序通过setrlimit把进程可打开的最大fd(RLIMIT_NOFILE)改成2048,而__FD_SETSIZE是默认的1024。...但超过__FD_SETSIZE 的部分内存是未初始化的,这样内核就会拷贝一个我们不期望的fd_set,未初始化的内存可能是0,可能是1,这就意味着我们监控了我们不希望监控的fd,而这些句柄恰好又都是存在的...这样,fd_set越大,其性能就越低,而且fd_set很大的时候,fd_set在用户态和内核态之间的拷贝也是很耗时的。

    2.1K10

    深入理解 Java 中的 Lambda

    作者:李三石 来源:my.oschina.net/leili 我花了相当多的阅读和编码时间才最终理解Java Lambdas如何在概念上正常工作的。...这篇文章的主要受众是那些已掌握函数式编程基础的人,以及那些想从概念上理解Lambdas如何嵌入Java语言的人。 方法类型 从Java 8起方法就是一等公民了。...LambdaMap { static void oneStringArgumentMethod(String arg) { System.out.println(arg); } } 关于...Lambda表达式的返回值类型是从Lambda实现推断出来的。 对于参数类型,我不完全确定,但我认为必须从Lambda表达式所处的上下文中推断出参数类型。...最后编译器必须检查返回值类型是否与Lambda的上下文匹配,以及参数类型是否与Lambda实现匹配。 这一切都可以在编译期间完成,根本没有运行时开销。

    1.3K20

    关于架构的理解

    指导行动:好的架构图一定是可以指导行为的,指导行动才是架构图的最大价值。能够预测未来,指导行动。对于某个领域架构图,根据架构图都不知道把某个模块放哪里,那就是失败的。...值得注意的是4+1更大的价值是提供了一套分析系统的框架,实际上怎么呈现不同的团队可能有不同的形式。对于一个系统从不同的视角看会得到不同的理解,横看成岭侧成峰。...技术人员要做的是摆脱技术语言体系,走进业务体系,不能被技术语言限制住。从本质上来说技术是为了业务服务的,所以理解业务第一,技术第二。对业务有了深刻的理解,再转过来去用技术来实现业务。...———— James Lewis and Martin Fowler我的理解是,微服务不在于微,微服务是一种理念,其表达的是用一个服务来表达一个实体相关的所有行为,某个实体与外部的所有联系均通过该服务来发生...https://pubs.opengroup.org/architecture/togaf8-doc/arch/toc.htmlSOLD原则关于原则,看了很多次,是否真的理解了这些原则?

    1.1K10

    关于缓存的理解

    关于缓存的理解 为系统引入缓存的理由 通常情况,在我们面临系统的基础设施,例如数据库无法处理量级的请求时候,总是会下意识的使用缓存,这次我们以设计的角度思考,在为你的系统引入缓存之前,它是否真的需要缓存呢...缓存中最主要的数据竞争来源于读取数据的同时,也会伴随着对数据状态的写入操作,而写入数据的同时,也会伴随着数据状态的读取操作。 针对前面所讲的伴随读写操作而来的状态维护,我们可以选择两种处理思路。...(关于Guava的操作我之前有博客写过) 另一种是以 Caffeine 为代表的异步日志提交机制。...这种机制参考了经典的数据库设计理论,它把对数据的读、写过程看作是日志(即对数据的操作指令)的提交过程。...这里你可以简单地理解为,缓存内部是使用多个 Map 来分段存储数据的,并发级别就用于计算出使用 Map 的数量。

    65820

    关于事务的理解

    事务的概念 事务处理几乎是每一个信息系统中都会涉及到的问题,它存在的意义就是保证系统中的数据是正确的,不同数据间不会产生矛盾,也就是保证数据状态的一致性(Consistency)。...关于一致性,我们重点关注的是数据库状态的一致性,分布式中,即将要讨论的分布式共识算法时所说的一致性,是不一样的。...人们在探索这些事务方案的过程中,产生了许多新的思路和概念,我们一起探索同一个事例在不同的事务方案中的不同处理,以此来贯穿、理顺这些概念。 场景事例我先来给你介绍下具体的事例。...,占用大量的内存缓冲,无论何种理由,都决不允许在事务提交之前就开始修改磁盘上的数据,这一点对提升数据库的性能是很不利的。...由于 Undo Log 的加入,Write-Ahead Logging 在崩溃恢复时,会以此经历以下三个阶段: 分析阶段(Analysis):该阶段从最后一次检查点(Checkpoint,可理解为在这个点之前所有应该持久化的变动都已安全落盘

    62220

    关于系统的理解

    系统论是一门独立的学科,经历了多年的发展已经形成了体系化的理论。 系统论里的一些原则、理论、方法同样适用于计算机系统,计算机系统里遇到的复杂性问题在系统论里肯定会有原则性的指导。...系统论强调整体与局部、局部与局部、系统本身与外部环境之间互为依存、相互影响和制约的关系。系统论要求:把事物或者现象当作系统来研究,并用数学模型去描述和确定系统的结构和行为。...系统的思考,区别于系统化的思考,系统的思考是要求我们把事情当做一各个个的系统来看。系统的整体不是系统的部分之和,系统的整体一定大于系统的部分之和。 一个系统能支撑的能力超越于系统组成之和。...1.2 系统三大基本特征:目的性:任何系统都是有一定的目的。这里可以理解为业务系统的边界。我们的系统是为了做什么事而设立的?能做什么事?不能做什么事?动态性:动态性说明系统会发展。...预测系统:当系统发生某个事件时,能够根据已有知识对系统的行为做出预测。决策系统:对系统足够了解,拥有充足的依据,可以干预系统,对系统进行认定、分析、权衡,最终做出决策。

    1.1K10

    lambda表达式导致arthas无法redefine的问题

    通过arthas的redefine命令,可以像PHP一样,不用重新发布,就可以改变程序行为(前提是不改变类结构,不改变方法签名)。...但是用多了,发现很多时候,我们就改了几行代码,甚至有的时候就添加了一行日志,就无法redefine了。提示 redefine error!...通过javap来查看定义的方法: 老的类: [javap-old.png] 新的类: [javap-new.png] 对比之后发现,新的类,即本地编译的类,其中的lambda对应的方法名都是lambda...而旧的类,即现在在运行的类,其中的同一个lambda的方法名是lambda$getAllCity$121。方法名字最后的数字变掉了。...那,问题来了,这个行为是从哪个版本变掉的呢? 对比之后发现这个变更是jdk8u74-b02引入的。

    1.2K50

    lambda 表达式导致 Arthas 无法 redefine 的问题

    这篇文章主要介绍了 lambda 表达式导致 Arthas 无法 redefine 的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。...通过 arthas 的 redefine 命令,可以做到不用重新发布,就可以改变程序行为。 但是用多了,发现很多时候,我们就改了几行代码,甚至有的时候就添加了一行日志,就无法 redefine 了。...对比之后发现,新的类,即本地编译的类,其中的 lambda 对应的方法名都是 lambda 0 这样的,最后的编号是从 0 开始的。...而旧的类,即现在在运行的类,其中的同一个 lambda 的方法名是 lambda 121,最后的编号是一个非常大的数字。...这就说明旧版本的编译器确实是 lambda 全局编号的。 那,问题来了,这个行为是从哪个版本变掉的呢? 对比之后发现这个变更是 jdk8u74-b02 引入的。

    3K20

    怎么理解Java中的lambda表达式

    Lambda概述Lambda表达式是JDK8开始后的一种新语法形式作用: 简化匿名内部类的代码写法格式: rust 代码解读复制代码(匿名内部类被重写方法的形参列表)->{ 被重写方法的方法体代码...原因在于前面对于Lambda表达式的定义并不清晰,Lambda表达式并不能简化所有匿名内部类,其只能简化函数式接口匿名内部类的写法形式,且接口中有且仅有一个抽象方法,通常,我们会再接口上加上一个@Functionalinterface...("跑步情况如何:") p.run();}//不使用Lambda的情况下:pk(p);//需要在定义匿名内部类之后,将p代入;//使用Lambda的情况:People p = () -> {...;});//由于等号右边即是People创建的对象p,因此可以可以直接将其代入 Lambda的好处: Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁...;});如果Lambda表达式的方法体代码只有一行代码。

    33200

    关于DLL注入的理解

    解析型可以在解释权解释之前做很多事情,解释之前的代码不是二进制代码,而是解释器可以看懂的代码,比较简单,也比较可行。 编译型则无法在编译前做任何事情,因为目标程序一般是第三方编译完成之后发布出来的。...除非程序调用的dll包含导出函数,我们可以实现函数地址的替换。...即使采用MFC框架提供的方式,也是对编译后的程序无能为力的,因为MFC框架也只是一段普通代码,并不是WIN API,无法获取OS执行过程中的任何消息或者改变OS执行过程中的任何操作。...Windows API中使用的是句柄,C/C++中使用的是指针。两者并没有什么关系。...MFC中的对象既有指针,又有句柄,是因为这个对象留出了一个成员变量来存放WIndows窗体句柄(注意:windows窗体对象本身的指针是无法获取的,因为windows api只能获取窗体句柄)。

    77320

    关于矩阵的理解基础

    在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。...有向线段的长度表示向量的大小,向量的大小,也就是向量的长度。长度为0的向量叫做零向量,记作长度等于1个单位的向量,叫做单位向量。箭头所指的方向表示向量的方向。...向量的模:向量的大小,也就是向量的长度(或称模)。向量a的模记作|a|。 负向量:如果向量AB与向量CD的模相等且方向相反,那么我们把向量AB叫做向量CD的负向量,也称为相反向量。...零向量:长度为0的向量叫做零向量,记作0。零向量的始点和终点重合,所以零向量没有确定的方向,或说零向量的方向是任意的。 相等向量:长度相等且方向相同的向量叫做相等向量.向量a与b相等,记作a=b。...初等代数中,y=ax表示的是x到y的一种映射关系,其中a是描述这中关系的参数。 线性代数中,Y=AX表示的是向量X和Y的一种映射关系,其中A是描述这种关系的参数。

    96510

    关于EventLoop的简单理解

    个人博客网站欢迎交流:萤火之森:https://blog.xkongkeji.com EventLoop出现的目的 js单线程 众所周知js是单线程的,那为什么是单线程嘞,作为浏览器脚本语言,JavaScript...的主要用途是与用户互动,以及操作DOM。...MutationObserver 接口,监听DOM节点发生改变的时候,就会产生 DOM 变化记录的微任务。...宏任务 渲染事件(如解析 DOM、计算布局、绘制) 用户交互事件(如鼠标点击、滚动页面、放大缩小等) JavaScript 脚本执行事件 网络请求完成、文件读写完成事件 执行顺序图解(图片来自网络) 个人理解...主线程代码执行完成后就会从微任务队列中去取微任务执行直到微任务队列清空, 微任务队列完成后就会从宏任务队列中取出宏任务执行,(个人理解:主线程代码就是第一个宏任务) 如主线程任务一般,遇到微任务放入微任务队列

    21210

    关于JavaScript对象的理解

    对象 理解对象 ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说对象是一组没有特定顺序的值。...数据属性有四个描述其行为的特性。 它有 4 个特定行为来约束属性行为。...按时 注意: 在调用 Object.defineProperty() 时,如果不指定 属性的默认行为的话,它的 3 个行为 都 为 false ....「实际开发中,修改属性默认行为场景很少,但学习属性的行为 有助于 理解对象。」...如何修改对象属性默认行为 通过 Object.defineProperty() 来修改属性默认行为 参数为: 目标对象 要修改的对象属性 一个描述符对象 (这个对象是用来管理属性默认行为的) 该方法会直接在一个对象上定义一个新属性

    61150

    关于电角度的理解

    大家好,又见面了,我是你们的朋友全栈君。 1.机械角度和电角度 从电磁分布的角度来看,永磁体(或励磁)产生的磁场空间分布呈现周期性变化,一个周期为电角度的360度。...2.校准电角度的意义 2.1. 电机转动的基本原理 同步电机的转子是永久磁体,定子是通电线圈,根据高中学到的安培定理,定子就是一个电磁铁。磁铁之间相互吸引或排斥就是电机能够转动的原因。...由此可知,电角度校准的目的是为了获得最大的力矩转换效率。 2.3 电角度校准的步骤 1)....定子磁场0度定位: 控制定子磁场到+/-90度方向, 由于磁场的相互作用,转子磁场也会被拖动到和定子磁场同样的方向。并此时记录编码器的读数cnt0。此位置就是控制电机转动时的定子磁场0度的位置。...2).控制电机转动:用当前编码器的实时读数cnt减去定子磁场0度编码器的读数cnt0作为定子磁场的角度。这样的定子磁场和转子磁场始终正交,就能获得最大的控制力矩。

    2.4K30
    领券