精华内容
下载资源
问答
  • 典型问题的定义
    千次阅读
    2019-12-09 17:06:46

    Spring 典型,非典型循环依赖问题及其解决方法


    1、设计原则

    在设计时,我们应该尽量避免出现循环依赖的情况,应该把循环依赖的公共部分进行分层,抽取公共部分,然后依赖公共部分

    2、典型循环依赖

    但是由于某些业务之间的相互调用太多,总会有一些漏网之鱼出现了循环依赖,但是当你使用 @Autowired进行依赖注入时,程序是可以正常运行的。 当使用构造函数进行依赖注入时,则是不可以正常运行的,因为无法创建bean

    3、到底什么是依赖

    依赖,说的简单点,就是A

    更多相关内容
  • 2.定义判断测验的解题技巧与典型例题分析.zip
  • 2.定义判断测验的解题技巧与典型例题分析.rar
  • 不过,最近我的确有一个新发现——我发现“归类分组”在我们解决问题中起着巨大的作用。而这里的“问题”不仅仅限于软件设计,从日常生活、产品设计到公司战略、生物分类。都有它的身影。 这是为什么呢?究其原因...

    我们经常说软件开发中,没有银弹。的确,单看软件领域,很少有什么方法论是普适的。然而再拔高一些,跳出软件的范畴,是有一些东西是普世的,比如老子说的“道”。

    好吧,“道”说的有点大。不过,最近我的确有一个新发现——我发现“归类分组”在我们解决问题中起着巨大的作用。而这里的“问题”不仅仅限于软件设计,从日常生活、产品设计到公司战略、生物分类。都有它的身影。

    这是为什么呢?究其原因可能有两个:

    一、归类分组是抽象的重要方法,解决复杂问题我们离不开抽象。

    二、归类分组是结构化的重要步骤,结构化的表达离不开归类分组。

    当然,归类分组要先有素材可以“归类”才行。因此,完整的方法论是这样的,我给他起了一个好听的名字——解决问题黄金三步:定义问题——分解问题——归类分组

    这三步的详细操作如下:

    1. 第一步,定义问题:也就是要清楚我们要解决的问题是什么?
    2. 第二步,分解问题:对问题进行分析拆解,形成平铺的多个子问题,此步可以尽量发散。
    3. 第三步,归类分组:对子问题进行归纳、剪枝,将趋同的子问题,合并成一类问题。

    image.png

    如上图所示,通过黄金三步以后,我们就可以得到一个形同“金字塔”的结构,也就是我们经常说的金字塔结构。根据问题的复杂程度,这个金字塔结构可能是三层,也可能是二层和多层。

    看似简单的三步操作会有那么大的作用吗?废话不多说,直接上案例。

    在日常生活中的运用

    你出门买报纸,你老婆说家里冰箱空了,顺便带点东西回来吧。她给你列了一个清单,里面有葡萄,橘子,咸鸭蛋,土豆,鸡蛋。你说就这么多了吗?她说苹果和胡萝卜也可以买一点。当你准备出门的时候,她说家里的牛奶和酸奶也没有了,最好也买一点回来。

    你觉得你能把老婆交代的东西都买齐吗?我看很难,因为我们的大脑短期记忆无法一次容纳7个以上的记忆项目,超过5个时,我们就会开始将不同的项目归类到不同的逻辑范畴,以便于记忆

    如果我们将葡萄,橘子,牛奶,咸鸭蛋,土豆,鸡蛋、胡萝、苹果,酸奶。按照逻辑关系,进行下归类分组,比如把葡萄、橘子、苹果归为水果类,把土豆、胡萝卜归为蔬菜类,便可以大大帮助我们提高记忆效率。

    注意,这里分类的作用不只是将一组9个概念,分成每组各有4个、3个和2个概念的3组概念,因为这样还是9个概念,你所要做的是提高一个抽象层次,将大脑需要处理的9个项目变成3个项目。

    如果你已经这么做了,恭喜你,你已经在实践黄金三步了:

    1. 定义问题:冰箱空了,需要购买补给。
    2. 分解问题:你要分析购买哪些东西呢?
    3. 归类分组:为了方便记忆,你将要买的9个东西按性质分成了三组,形成如下的金字塔结构。

    image.png

    这就是结构化思维,下次你再接到老婆这样的“需求”,记得把这个方法论用上,她一定会对你刮目相看。

    在工作汇报中的运用

    定义问题

    “小张,客户对销售报告和库存报告不满意,你去看一下什么原因。” 面对这种典型的工作问题,你打算怎么处理呢?

    分解问题

    首先,你肯定要去调研客户不满意的原因,经过调查你发现,客户不满意主要有以下原因造成的:

    1. 提交报告的周期不恰当;
    2. 库存数据不可靠;
    3. 获得库存数据的时间太迟;
    4. 库存数据与销售数据不吻合;
    5. 客户希望能改进报告的格式;
    6. 客户希望除去无意义的数据;
    7. 客户希望突出说明特殊情况;
    8. 客户希望减少手工计算。

    虽然你做了大量的工作,调查也很充分。但是,如果你要是把这8个原因直接给老板汇报,估计效果不会太好。 你可以自己做个试验,仔细阅读上面的列表3分钟,你能从中获得什么?同样的,你老板看到这样的罗列也会是一脸懵逼,不知道重点在哪。

    归类分组

    所以我们有必要加上第三步,对问题进行进一步的归类分组,我们可以将8个问题概括为3组:

    1. 报告中含有不可靠的数据;
    2. 报告的格式混乱;
    3. 产生报告的时间太晚,无法采取有效措施

    进行分组之后,我们就可以得到如下的金字塔结构:
    image.png

    这种结构化的表达,很明显让问题的表述更加清晰。领导也可以很快抓住问题的要点,并作出相应的决策。当然,这里是为了着重介绍归类分组,真正的汇报你还要提供对应的解决方案,然后让老板做“选择题”。

    在写代码时的运用

    你遇到一个相当复杂的业务场景,在这个业务操作中,涉及到大量的校验和执行操作。这种代码,如果没有一定的策略,很容易写成大泥球。

    定义问题

    例如,在我们的业务中有一个商品上架的操作,是一个非常复杂的业务操作。

    分解问题

    对这种业务问题的分解,通常是产品经理的职责,但是作为工程师也不能完全依赖PRD。因为产品视角和工程视角还是有差别的。

    针对“商品上架”,我们做了如下的功能分解:
    image.png

    归类分组

    同样,在分解之后,我们需要有一个归类分组的过程。否则,这些步骤的平铺会让代码显得凌乱,不方便记忆和维护。通过分析,我们可以把分解后的步骤分成三个阶段:

    1. 初始化阶段
    2. 校验阶段
    3. 执行阶段

    通过黄金三步,我们可以得到如下的金字塔结构:
    image.png

    最后,我们按照这个结构去组织我们的代码,整个代码结构会更加清晰,代码的可维护性也会好很多。
    image.png

    在应用架构中的运用

    应用架构主要解决的是模块、组件定义和模块、组件关系的问题。
    image.png

    从宏观层面来说,架构设计也是遵循这三个步骤的。比如,我们的架构要如何分层,分模块、分组件就是在做问题分解。然后,模块和组件要归属在哪个层次,要如何命名,就是在做抽象,在做分类归组。

    在综合考虑功能属性+质量属性,然后通过黄金三步,就能得到我们想要的架构设计。例如,我们的COLA 2.0架构也是在这个方法论的指导下完成的。

    image.png

    在产品架构中的运用

    定义问题

    “小张,为了做新零售,我们打算做一款智能互联网POS机,你先做一下产品设计。”

    分解问题

    通过调研你发现,作为POS机,其核心功能是收银和经营管理。所以至少需要包含收银的功能、服务核销的功能、商品管理的功能、库存管理的功能等等。

    但如果仅仅是满足这些功能,和传统的POS并没有多大的区别,为了满足“智能”和“互联网”的要求,你去深入百度了一下智能POS应该具备的功能,大致包含以下功能:

    1. 刷脸支付;
    2. 支持品牌商营销;
    3. 支持自主营销;
    4. 智能定价;
    5. 外卖对接;
    6. 彩票对接;
    7. 虚拟充值等等。

    在问题分解阶段,我们应该尽量多的收集信息,多发散,多头脑风暴。

    归类分组

    发散完,我们还是要收回来。在收敛之前,我们先看一下产品框架应该包含哪些东西,通常,一个产品架构至少要包含三个层次:

    1. 用户感知层(在何种场景下通过何种方式触达用户);
    2. 功能模块层(通过哪些功能模块实现产品的核心功能,和哪些外部平台功能有信息交互);
    3. 数据层(产品的数据从哪里来、产品的数据沉淀到何处去)。

    在这三个层次的基础上,我们再对每个层次内的模块进行分组。例如在功能模块层,我们要对功能进行分类,让分散的功能点内聚成更大的产品模块(体现在用户界面上,往往是一级菜单和子菜单的关系)。

    比如对于POS的收银产品模块,我们可以提供以下的产品功能:

    • 支付宝收银
    • 现金收银
    • 微信收银
    • 刷脸支付
    • 记账等

    通过层次划分,模块划分我们就可以得到一个相对清晰的产品架构,以智能POS为例,我们可以画出如下的产品架构:
    image.png

    分类是科学也是艺术

    通过上面的案例,我想你已经领会到黄金三步:定义问题——分解问题——归类分组的要义了。其中前两步相对比较直观,而第三步往往是不容易做好,也容易被忽略的关键步骤。

    实际上,对事物的归类分组是我们人类的天性。人类大脑会自动将发现的所有事物以某种持续组织起来。基本上,大脑会认为同时发生的任何事物之间都存在某种关联,并且会将这些事物按某种逻辑模式组织起来。

    比如,下面这张图片:
    image.png

    无论是谁,乍一看到上面的六个黑点,都会认为共有两组墨点,每组三个。造成这种印象的原因主要是有些黑点之间的距离比另一些黑点之间的距离大。

    空间是一个相对比较直观的逻辑关系,然而,并不是所有的逻辑关系都是如此的显性化。实际上,很多的概念会在多个维度进行交叉耦合,这就给我们的归类分组带来了很大的挑战。

    生物分类学

    生物分类学通常直接称分类学(Taxonomy),是一门研究生物类群间的异同以及异同程度,阐明生物间的亲缘关系、基因遗传、物种进化过程和发展规律的基础科学。

    最流行的分类是五界系统。通常包括七个主要级别:界(Kingdom)、门(Phylum)、纲(Class)、目(Order)、科(Family)、属(Genus)、种(Species)。种(物种)是基本单元,近缘的种归合为属,近缘的属归合为科,科隶于目,目隶于纲,纲隶于门,门隶于界。

    不过分类学到不是一门很严谨的“科学”。就像比尔.布莱森在《万物简史》里说的:

    分类学有时候被描述成一门科学,有时候被描述成一种艺术,但实际上那是一个战场。即使到了今天,那个体系比许多人认为的还要混乱。以描述生物基本结构的门的划分为例。许多生物学家坚持认为总数30个门,但有的认为20来个门,而爱德华在《生命的多样性》一书里提出的数字高达令人吃惊的89门。

    由此可见,分类并不像我们想的那么简单。我们观察事物的视角不同,对问题的认知程度不同,得出来的分类很可能也完全不同。

    特别是当概念之间有交叉情况,分类就会变得更加棘手。比如,在你的笔记本中,有“读书笔记”和“哲学笔记”两个平级的分类,此时你阅读了一本哲学书籍,那么你会把这本书的读书笔记放在哪个分类里呢?

    分类的原则

    分类的基本原则是MECE法则。透过结构看世界,说的就是MECE法则

    MECE法则即mutually exclusive collectively exhaustive的缩写,是麦肯锡咨询顾问芭芭拉·明托在《金字塔原理》中提出的一个思考工具,意思是“相互独立,完全穷尽”,也常被称为“不重叠,不遗漏”。

    image.png

    MECE原则的思想精髓,就是全维度的去分析一件事情,不要有遗漏和重复的部分。

    我们可以借助已有的结构化思维模型(分类的框架)来分析问题,确保每一层要素之间“不重复、不遗漏”。

    分类的思维模型

    实际上,在上文中我们已经提到了一些分类的思维模型。比如,在应用架构中,我们通常有展现层、控制层、应用层、领域层和基础实施层;在产品架构中,有用户感知层、功能模块层、数据层。这些框架可以有效的指导我们在各自领域中开展工作。

    类似于这样的分类思考模型还有很多,比如:
    1、制定市场营销策略的“4P”模型,即产品策略(Product Strategy)、价格策略(Price Strategy)、渠道策略(Place Strategy)、促销策略(Promotion Strategy)。

    2、分析问题的“5W2H"模型,即Why、What、Who、When、Where、How和How much。

    3、思考组织战略的“7S”模型,即经营策略(Srategy)、组织结构(Structure)、运营系统(System)、经营风格(Style)、职员(Staff)、组织技能(Skill)和共享价值观(Shared value)。

    4、分析竞争力的SWOT模型,SWOT分析代表分析企业优势(Strengths)、劣势(Weakness)、机会(Opportunity)和威胁(Threats)。

    5、制定目标的SMART模型,即制定目标要满足确定性(Specific) 、可度量性(Measurable)、可实现性(Attainable)、相关性(Relevant)和时效性(Time-based)。

    这些思维模型都是宝贵的经验总结,相当于已经帮我们做好了第三步“归类分组”的工作,我们只需要按照模型制定的框架往里面填充要素即可。

    因此擅用模型,活用框架。可以极大的提升我们解决问题的效率,同时帮助我们做更加全面的、更加结构化的思考。做了“无遗漏,不重复”

    展开全文
  • 凸优化问题:基础定义

    千次阅读 多人点赞 2018-12-02 22:09:01
    “一旦将一个实际问题表述为凸优化问题,大体上意味着相应问题已经得到彻底解决,这是非凸的优化问题所不具有的性质。”——《<凸优化>译者序》 1 什么是凸优化 什么是凸优化?抛开...

    “一旦将一个实际问题表述为凸优化问题,大体上意味着相应问题已经得到彻底解决,这是非凸的优化问题所不具有的性质。”——《<凸优化>译者序》

    “ 事实上,优化问题的分水岭不是线性与非线性,而是凸性与非凸性”
    ——Rockafellar

    1 什么是凸优化

    什么是凸优化?抛开凸优化中的种种理论和算法不谈,纯粹的看优化模型,凸优化就是:1、在最小化(最大化)的要求下,2、目标函数是一个凸函数(凹函数),3、同时约束条件所形成的可行域集合是一个凸集。1

    2 凸优化的相关概念

    1. 凸集
    在这里插入图片描述
    其几何意义表示为:如果集合C中任意2个元素连线上的点也在集合C中,则C为凸集。其示意图如下所示:
    在这里插入图片描述
    2. 凸函数
    一个函数 f 被称为凸函数,满足一下条件:
    (1)f 的定义域dom(f) 是凸集;
    (2)对于任何x,y∈dom(f),0≤θ≤1,f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)在这里插入图片描述
    4. 凸优化
    在这里插入图片描述
    附:仿射函数定义以及与凸性的关系
    在这里插入图片描述

    3 凸优化的优势

    1. 凸优化问题有很好的性质众所周知,凸问题的局部最优解就是全局最优解。不过,凸优化理论中最重要的工具是Lagrange对偶,这个为凸优化算法的最优性与有效性提供了保证。近些年来关于凸问题的研究非常透彻,以至于只要把某一问题抽象为凸问题,就可以近似认为这个问题已经解决了。
    2. 凸优化扩展性强前面提到,许多问题的关键是在于将问题抽象为凸问题。因此许多非凸问题通过一定的手段,要么等价地化归为凸问题,要么用凸问题去近似、逼近。典型的如几何规划、整数规划,它们本身是非凸的,但是可以借助凸优化手段去解,这就极大地扩张了凸优化的应用范围。
    3. 凸优化的应用十分广泛现实生活中确实有大量的非凸问题,但是并不妨碍凸优化在许多问题上都可以大展身手。往细了说,比如线性回归、范数逼近、插值拟合、参数估计,以及许多的几何问题;往大了说,在通信、机器学习、统计、金融等涉及优化、决策的研究领域,凸优化都是非常有效的手段。
    4. 针对其他非凸问题的研究还不充分凸优化之重要,从另一个角度说,就是我们没有找到很好的非凸优化的算法,这一部分还有许多学者都在努力。2

    1. https://www.zhihu.com/question/24641575 ↩︎

    2. https://www.zhihu.com/question/24641575/answer/87751184 ↩︎

    展开全文
  • 常见函数的定义

    千次阅读 2021-03-10 19:43:22
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.....

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    展开全文
  • 下面是 [RJ45接口针脚定义(各种接口针脚定义)]的电路图RJ45接口信号定义,以及网线连接头信号安排以太网 10/100Base-T 接口:Pin Name Description1 TX+ Tranceive Data+ (发信号+)2 TX- Tranceive Data- (发信号-)3 ...
  • 顾名思义,身份链是在区块链上具有用户身份信息的链。链上的用户信息可以是加密的私密个人信息,也可以是非加密的公开信息。纵观国外的身份链项目,我们可以总结出以下的特点。 1)大部分的用户信息,特别是用户的...
  • python需要定义变量吗

    千次阅读 2020-12-16 01:47:12
    python中定义一个变量不需要声明,直接复制便可初始化一个变量1、变量声明声明变量的时候,直接使用例如a = 1这样的方式即可。既不用像js语言那样使用一个通用的var或者let之类方式表示声明,也不需要像c++语言那样...
  • 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题典型表现: 对软件开发成本和进度的估计常常很不准确。 用户对“已完成的”软件系统不满意的现象经常发生。 软件产品的质量往往...
  • 详解数字签名的定义

    万次阅读 2019-05-16 18:19:32
    显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。   数字签名技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对...
  • DoD“完成”的定义 ...为了避免这个问题,在敏捷软件开发中,常用Definition of Done“完成的定义”来表示工作是否已完成,不同的活动有不同的完成定义典型的是迭代DoD,这也是最初DoD应用的地方。
  • 《重新定义Spring Cloud实战》

    万次阅读 2018-09-17 23:20:52
    今天是2018年9月24号中秋节,祝福大家中秋节快乐,本文主要介绍《重新定义Spring Cloud实战》。 1. 前言 随着互联网的快速普及,云计算近年来得到蓬勃发展,企业的IT环境和架构体系也逐渐发生变革,其中最...
  • 概率的四种定义及公理化定义产生

    千次阅读 2020-04-23 15:11:08
    本博文源于北京理工大学的《概率论与数理统计》。讨论四种定义分别是:古典定义、几何定义、频率定义、公理化定义
  • 尝试检查一下数据库中是否存在该表 转载于:https://www.cnblogs.com/my3643/p/6695064.html
  • 二、具体定义 典型相关分析有Hltelling提出,其基本思想和主成分分析非常相似。 首先在每组变量中找出变量的线性组合,使得两组线性组合之间具有最大的相关系数 然后选取和最初挑选的这对线性组合
  • 高数 | 利用定积分定义求极限

    千次阅读 2022-03-07 13:58:14
    (一)定积分的定义 其中,分割是任意的分割,想怎么分就怎么分,任意分!分割的目的在于第二步的代替。 代替什么呢?就是“化曲为直”,用直线来近似代替那段曲线,为什么这时候能够用直线来近似代替那段...
  • LCD典型问题及解决方案

    万次阅读 多人点赞 2016-09-08 13:40:13
    在我们的设备开发当中会, LCD的开发过程中会遇到一些问题,今天我们给大家带来一些LCD常见的典型汇总下来提高再次开发的效率。   2 LCD典型问题及解决方案   2.1 黑屏 or 白屏  背光上电后LCD是默认有黑屏和...
  • PV操作典型——哲学家进餐问题

    千次阅读 2020-05-27 22:18:46
    目标 哲学家进餐是操作系统课程的典型PV操作问题。通过此问题学习: 1.熟悉Linux平台的基本编程 2.在Linux平台上通过系统调用使用线程、互斥量机制以及信号量机制等编程
  • js常用变量的定义方式整理

    万次阅读 2022-06-28 21:22:15
    js常用变量的定义方式整理
  • TYPE-C引脚定义及原理图

    千次阅读 2022-03-11 11:22:11
    母头 公头 引脚定义
  • 典型序列及信源编码的一种理解

    万次阅读 多人点赞 2013-06-07 22:58:28
    关于这个问题,一直想写,先给出答案:N(HTH)=10,N(HTT)=8,即你从开始抛,平均在第十次时出现HTH,XXXX..HTH,X代表前面几次的结果中,都不会出现HTH样式。同理,平均在第八次出现HTT。)最终,我们是用平均1个比特...
  • ATX电源引脚定义

    千次阅读 2019-06-14 11:06:26
    无主板启动电源——ATX电源接口各线的定义(注意:电源端,主板端口需镜像) 左下角:1#,左上角:11#;右上角:20# AT电源只要能把电源打开就行了,可现在的ATX电源都是电位控制开关而非机械开关,这...
  • 作为一个一个构建用户界面的框架,Vue 在定义其内置方法时有其特有的书写方式,这与典型的JavaScript书写方法有相通之处,但有其特点 JavaScript函数 典型的JavaScript定义函数方法有两种形式,一种为声明式定义,...
  • 很多学员在学习TestBench的编写的时候,容易死记概念,最典型的就是,被测试模块的输入端口在测试文件中要定义成reg,输出端口要定义为wire。 例如,最典型的这种写法,大家都能看得懂。 reg clk; ...
  • 解决宏定义与函数名冲突的问题

    千次阅读 2017-01-19 07:11:31
    毕竟典型的一个问题是里面的max和min的宏定义与 std::numeric_limitsstd::streamsize>::max()和std::numeric_limitsstd::streamsize>::min() 两个函数定义相互冲突。 通常的情况是,如果包含了头文件windows.h,...
  • RS232 DB9 公头 母头 串口引脚定义

    千次阅读 2020-07-25 10:06:01
    DB9公头母头串口引脚定义 1.RS-232端(DB9母头/孔型)引脚定义 引脚序号2351、4、67、8 信号定义 TXDRXD GND 内部相连内部相连 注:该口可直接插入计算机的COM口 2.RS-232端(DB9公头/针型)引脚定义 引脚序号...
  • 自动控制系统的典型环节

    万次阅读 多人点赞 2019-04-26 15:45:43
    这些环节成为典型环节或基本环节。经典控制理论中,常见的典型环节有以下六种。 1、比例环节 比例环节是最常见、最简单的一种环节。 比例环节的输出变量y(t)与输入变量x(t)之间满足下列关系  (1) ...
  • 设计模式 | 适配器模式及典型应用

    万次阅读 多人点赞 2018-09-20 01:37:29
    适配器模式 ...在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。 根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适...
  • 典型相关分析(CanonicalCorrelationanalysis)研究两组变量(每组变量中都可能有多个指标)之间相关关系的一种多元统计方法。...典型相关分析的定义 典型相关分析的思路 典型相关分析关键...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 667,075
精华内容 266,830
关键字:

典型问题的定义