用户分析

LEX和YACC的使用三

我是研究僧i 提交于 2020-01-21 03:27:52
2.4.3 yacc解决二义性和冲突的方法 在2.3.8中已涉及到二义性和冲突的问题,这里再集中介绍一下,这在写Yacc源程序时会经常碰到。二义性会带来冲突。在2.3.8中我们介绍了yacc可以用为算符确定优先级和结合规则解决由二义性造成的冲突,但是有一些由二义性造成的冲突不易通过优先级方法解决, 如有名的例子: stat:IF bexp THEN stat |IF bexp THEN stat ELSE stat ; 对于这样的二义性造成的冲突和一些不是由二义性造成的冲突,Yacc提供了下面两条消除二义性的规则: A1.出现移进/归约冲突时,进行移进; A2. 出现归约/归约冲突时,按照产生式在yacc源程序中出现的次序,用先出现的产生式归约。 我们可以看出用这两条规则解决上面的IF语句二义性问题是合乎我们需要的。所以用户不必将上述文法改造成无二义性的。当Yacc用上述两条规则消除了二义性,它将给出相应信息。 下面再稍微严格地介绍一下Yacc如何利用优先级和结合性来解决冲突的。 Yacc源程序中的产生式也有一个优先级和结合性.这个优先级和结合性就是该产生式右部最后一个终结符或文字字符的优先级和结合性,当使用了%Prec子句时,该产生式的优先级和结合性由%Prec子句决定。当然如果产生式右部最后一个终结符或文字字符没有优先级或结合性,则该产生式也没有优先级或结合性。 根据终结符

秒杀系统架构分析与实战

99封情书 提交于 2020-01-18 00:02:02
0 系列目录 秒杀系统架构 秒杀系统架构分析与实战 1 秒杀业务分析 正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性 (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高; 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 对现有网站业务造成冲击 秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。 解决方案:将秒杀系统独立部署,甚至 使用独立域名,使其与网站完全隔离 。 高并发下的应用、 数据库 负载 用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用 架构 ,访问应用服务器、连接数据库,会对应用服务器和数据库服务器造成负载压力。 解决方案:重新设计秒杀商品页面,不使用网站原来的商品详细页面, 页面内容静态化,用户请求不需要经过应用服务 。 突然增加的网络及服务器带宽 假设商品页面大小200K(主要是商品图片大小),那么需要的网络和服务器带宽是2G(200K×10000),这些网络带宽是因为秒杀活动新增的

金融零售业务大数据分析解决方案

孤人 提交于 2020-01-16 11:45:44
随着国内利率市场化加快推进、经济增速放缓、国民收入和财富逐步上升,零售业务对银行收入及利润的贡献日益见长,科学有效地引领零售业务持续增长已成为国内领先银行的首要任务。然而,零售客户的需求日趋复杂和个性化,市场竞争愈加激烈。在此背景下,应该有效利用大数据技术将决策方从“业务经验驱动”向“数据量化驱动”转型,决策模式的变化将成为各家银行互争雄长的制胜关键。 最近几年银行零售业务受到了多方面环境变化和监管调整带来的挑战,同时也带来了大量的发展机遇。 在利率市场化过程中,我国的商业银行零售业务面临着盈利能力的挑战。利率市场化使得银行利差收窄,盈利能力下降。各家银行业绩均面临着盈利增速放缓的局面。金融市场化改革的推进要求零售银行改变依靠存款利差的传统经营模式,进一步提升产品创新和风险定价能力。另一方面,利率市场化也为零售银行提升内部经营管理能力、促进差异化竞争、提升服务和创新水平带来了前所未有的机遇。 当下,我国商业银行对零售业务投入了较高的热情,有着多重原因:一是我国经济环境进入到高质量发展阶段,消费成为经济增长第一驱动力,推动银行零售业务发展;二是随着金融严监管的持续推进,银行公司业务和同业业务的监管要求不断提升,部分业务萎缩,零售业务成为新的增长点;三是利差收窄、金融脱媒使得银行经营压力加大,银行零售业务发展成为必然趋势。此外,互联网金融业务的爆发重构了银行零售市场

如何理解用户行为分析里的Session

*爱你&永不变心* 提交于 2020-01-15 08:42:09
定义 进入正题前,我们先以一个典型场景来引出本文的主角。 如果把网站或 APP 比喻成一个商场,那互联网用户的行为就如同逛街的顾客,他们从商场任意一扇门进入,然后东逛逛西瞅瞅,有的意兴阑珊很快就离开了商场,有的兴致不错买了一些商品后才离开。 对于商场而言,顾客一系列的行为是一次来访,同理,对于网站或 APP 来说,用户一系列的行为,也是一次访问。 市面上,类似的定义,我们就称之为 Session 或 Visit。 意义 用户行为往往是单点发生的,即在什么时间什么地点干了一件什么样的事,也就是我们熟知的4W1H模型: Who:谁 When:时间 Where:地点 How:如何 What:具体事件 基于这样用户角度的行为记录,无论是一个商场,还是一个网站或 APP ,就可以知道他们的用户都具体干了些什么事情,比如什么时间进入,什么时间买了什么东西等等。 但是,还有一类需求,单点记录的方式并不能很好的满足,比如: 用户平均会来几次? 每次平均逛了几个页面? 每次来平均待多久? 某个具体页面用户平均停留多长时间? 可以发现,类似需求,都需要把用户单点发生的行为串联起来形成一个整体,并在此基础上进行计算后才能得到。 这样的连续行为整体,就是我们已定义好的 Session 概念,而解决类似的分析需求正是 Session 之于用户行为分析最大的意义。 组成 铺垫完 Session 的定义和意义后

02《软件需求分析教程》

大憨熊 提交于 2020-01-15 04:18:18
  作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等。 它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上所具有的选择限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能,多角度描述产品对用户和开发人员都极为重要。   需求并未包括设计细节、实现细节、项目计划信息或测试信息。需求与这些没有关系,它关注的是充分说明你究竟想开发什么。项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求。尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的。   开发软件系统最为困难的部分就是准确说明开发什么。最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口。同时这也是一旦做错,将会最终给系统带来极大损害的部分,而且以后再对它进行修改也极为困难。   不重视需求过程的项目队伍将自食其果。需求工程中的缺陷将给项目成功带来极大风险,这里的“成功”是指推出的产品能以合理的价格、及时地完成并在功能、质量上完全满足用户的期望。下面将讨论一些需求风险。第 5章将介绍怎样应用软件风险管理从而防止与需求有关的风险的出现和不适当的需求过程所引起的一些风险。   (1

什么是软件需求

穿精又带淫゛_ 提交于 2020-01-15 04:16:43
对大多数人来说,若要建一幢数百万元的房子,他一定会与建房者详细讨论各种细节,他们都明白完工以后的修改会造成损失,以及变更细节的危害性。然而,涉及到软件开发,人们却变得“大大咧咧”起来。软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根” (Leffingwell 1997) 。可许多组织仍在那些基本的项目功能上采用一些不合规范的方法,这样导致的后果便是一条鸿沟 ( 期望差异 ) —开发者开发的与用户所想得到的软件存在着巨大期望差异。 在软件工程中,所有的风险承担者 (stakeholder)( 这个词很有意思,原义是赌金保管者。我看过很多的翻译,有翻译成涉众的,也有的翻译成参与者的,但是我想他的主要意思就是和这个项目有密切相关利益的人 ) 都感兴趣的就是需求分析阶段。这些风险承担者包括客户、用户、业务或需求分析员 ( 负责收集客户需求并编写文档,以及负责客户与开发机构之间联系沟通的人 ) 、开发人员、测试人员、用户文档编写者、项目管理者和客户管理者。这部分工作若处理好了,能开发出很出色的产品,同时会使客户感到满意,开发者也倍感满足、充实。若处理不好,则会导致误解、挫折、障碍以及潜在质量和业务价值上的威胁。因为需求分析奠定了软件工程和项目管理的基础,所以所有风险承担者最好是采用有效的需求分析过程。软件需求的定义 IEEE 软件工程标准词汇表 (1997 年 )

软件需求分析过程阅读笔记之一

老子叫甜甜 提交于 2020-01-15 04:03:07
读软件需求分析首先明确了软件需求包含的三个不同层次,业务需求即组织机构或客户的需求目标,用户需求即用户使用产品必须要完成的任务,功能需求即开发人员需要实现的软件功能。从需求的定义上我们可以知道需求关注的是究竟想开发什么与设计细节实现细节项目规划信息或者测试信息无关 不重视需求过程会给项目带来极大风险,所以在需求过程中我们要注意避免以下几种情况,无足够用户参与,用户需求不断扩展,用户需求不明确或者说模棱两可,不必要的特性即为软件画蛇添足,过于精简的规格说明,忽略了用户分类,不准确的计划,而高质量的需求过程要求产品开发过程中的通力合作同时充分了解其市场,因此要想完成一份优秀的需求就必须具备完整性(功能完整),正确性(准确陈述其功能),可行性,必要性(每项需求都硬把客户真正需要的和最终系统),划分优先级,无二义性(只能有一个明确统一的解释),可验证性等特性。同时需求规格说明也需具备完整性,一致性,可修改性,可跟踪性(即每项软件需求与它的根源和设计元素,源代码,测试用例之间建立起链接链) 再进行软件需求分析时要清楚谁是客户,谁是用户,分清楚业务需求和用户需求。客户有义务说明软件的业务需求,任何其他的说明都应该遵从业务需求的规定,而用户需求则必须从试用产品的用户处收集,业务需求来自风险承担者,用户需求则来自产品的真正使用操作者。对于客户而言客户有权利要求分析人员使用符合客户语言习惯的表达

《软件需求与分析》阅读笔记

99封情书 提交于 2020-01-13 04:00:28
一、我们应当如何做需求分析? 通过阅读《我们应当怎么做需求分析》我了解了需求分析需要进行的阶段,以及需要掌握的内容。 需要掌握的内容如下: ( 1 )需求调研:其中包括如何与客户交流、建立良好的合作关系、通过研讨会与客户交流获得项目的原始需求并对需求进行研讨,并采用迭代的方式进行需求的不断完善。 ( 2 )需求分析:分析用例、分析业务流程、构建用例说明、其他例如查询功能的分析、子用例及扩展用例的分析、行动图和状态图、业务领域分析、原文分析、非功能需求分析。 ( 3 )需求确认:列出需求列表得到用户确认、利用快速原型法得到用户的确认、构建需求规格说明书。 一、需求调研 1 、与客户初识: 要树立良好的职业威信。不要在客户面前唯命是从,要适当地提出自己的见解,这样不但会让客户对自己有信心,而且自己也可以规范化客户的需求,不至于客户提出什么我们就按照客户说的做什么。 进行详细的角色分析,对号入座。客户方有很多的角色,每一个角色都有自己独特关注的地方,要合理地进行角色分析,让他们了解他们所希望了解的问题,对于需求的调研分析非常地重要。 从宏观上制定目标。在将角色进行分析后,要对每一个角色进行特定地分析,与各个角色进行详细地业务分析,详细了解业务的流程,对于需求的分析非常重要。 2 、拜访客户 需求分析需要与客户进行交流,与人交流就要处理好与他人的关系

为啥要整理需求?

强颜欢笑 提交于 2020-01-12 17:32:38
这几天一直在处理各方面收集到的需求,目前整理的进度应该在80%左右,通过整理和分析得到如下一些数据: 需求数目:353 预估的开发量:2536人天 也就是说,如果我一个人来实现这些需求,一年做250天的话,需要做10.14年,如果365天斗来做的话,需要6.95年,目前预估的开发量还没完成,因此需要的时间只会更多。 有了这些真实的数字,很多想法就理性多了,要仔细甄别需求,确定每个需求的商业价值和估算开发量,计算每个需求的性价比。 舍弃低价的需求,选择高性价比的需求,进行详细分析和整合,逐步将这些用户需求转化为真实的产品需求,并根据人员和时间情况,最终确定下阶段要做什么? 做产品最难的不是怎么做?而是选择做什么?而选择的核心就是需求的价值,如何衡量需求的价值? 1、实现需求能给用户带来什么价值? 2、实现需求能给产品带来什么价值? 3、技术上能否实现? 4、时间上有什么要求? 整理需求的过程就是一个思考的过程,在纷杂的用户需求中明确产品需求就是一个扬弃的过程。 形成这个需求列表后,剩下的就需要团队的智慧了,需要大家来讨论了,希望的曙光就在前方。 来源: https://www.cnblogs.com/Duiker/archive/2009/08/11/1543722.html

Linux性能分析工具汇总合集

爷,独闯天下 提交于 2020-01-11 23:56:44
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试的工具展开说明。 背景知识:具备背景知识是分析性能问题时需要了解的。比如硬件 cache;再比如操作系统内核。应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程序无法充分利用 cache,从而导致性能下降。比如不必要地调用过多的系统调用,造成频繁的内核 / 用户切换等。这里只是为本文的后续内容做一些铺垫,关于调优还有很多东西,我所不知道的比知道的要多的多,希望大家能共同学习进步。 【性能分析工具】 首先来看一张图: 上图是Brendan Gregg 的一次性能分析的分享,这里面的所有工具都可以通过man来获得它的帮助文档,下问简单介绍介绍一下常规的用法: ▲ vmstat--虚拟内存统计 vmstat