精华内容
下载资源
问答
  • 什么是CAP理论? CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三...

    什么是CAP理论?
    CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾
    CAP分别是什么?
    一致性(Consistency) (所有节点在同一时间具有相同的数据)
    可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

    AP:
    在这里插入图片描述

    CP:
    在这里插入图片描述

    展开全文
  • 3W原则什么

    千次阅读 2019-09-17 22:19:39
    3W规则 为了减少线间窜扰,应保证线间距足够大,当线中心距不少于3倍线宽时,则可保持70%的电场不互相干扰,称为3W规则。如要达到100%的电场不互相干扰,可使用10W规则。 20H规则 由于电源层与地层之间的电场是变化...

    3W规则

    为了减少线间窜扰,应保证线间距足够大,当线中心距不少于3倍线宽时,则可保持70%的电场不互相干扰,称为3W规则。如要达到100%的电场不互相干扰,可使用10W规则。

    [外链图片转存失败(img-t3n4rPyh-1568729971819)(9575F9AB326E462CBF69EA23D441890F)]

    20H规则

    由于电源层与地层之间的电场是变化的,在PCB板的边缘会向外辐射电磁干扰。称为边缘效应。可以将电源层内缩,使得电场只在接地层的范围内传导。以一个H(电源和地之间的介质厚度)为单位,若内缩20H则可以将70%的电场限制在接地边沿内;内缩100H则可以将98%的电场限制在内。

    [外链图片转存失败(img-8zXwc2P2-1568729971824)(9CB9673BD2D74CF0ABB6CA8B49F017D6)]

    五五规则

    PCB层数选择规则,即时钟频率到5MHz或脉冲上升时间小于5ns,则PCB板须采用多层板,这是一般的规则,有的时候出于成本等因素的考虑,采用双层板结构时,这种情况下,最好将PCB的一面做为一个完整的地平面层。

    Reference

    http://pcbdesign.lofter.com/view

    展开全文
  • 什么会出现这种现象呢?因为有职责扩散。所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。所以记住,在职责扩散到我们无法控制的程度之前,立刻对代码进行重构。 遵循单一职
    • 单一职责原则
    定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 
    虽然单一职责原则如此简单,并且被认为是常识,但是即便是经验丰富的程序员写出的程序,也会有违背这一原则的代码存在。为什么会出现这种现象呢?因为有职责扩散。所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。所以记住,在职责扩散到我们
    无法控制的程度之前,立刻对代码进行重构。
    遵循单一职责原的优点有:
    可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
    提高类的可读性,提高系统的可维护性;
    变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

    需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则


    • 里氏替换原则
    定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
    定义2:所有引用基类的地方必须能透明地使用其子类的对象

    问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。
    解决方案:当使用继承时,遵循里氏替换原则。类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。

    里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
    子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
    子类中可以增加自己特有的方法。
    当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
    当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
    看上去很不可思议,因为我们会发现在自己编程中常常会违反里氏替换原则,程序照样跑的好好的。所以大家都会产生这样的疑问,假如我非要不遵循里氏替换原则会有什么后果?

    后果就是:你写的代码出问题的几率将会大大增加。


    • 依赖倒置原则
    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
    问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。
    解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。

    依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。


    • 接口隔离原则
    定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 
    问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类C来说不是最小接口,则类B和类D必须去实现他们不需要的方法。
    解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。
    接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。本文例子中,将一个庞大的接口变更为3个专用的接口所采用的就是接口隔离原则。在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
    说到这里,很多人会觉的接口隔离原则跟之前的单一职责原则很相似,其实不然。其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接,主要针对抽象,针对程序整体框架的构建。
    采用接口隔离原则对接口进行约束时,要注意以下几点:
    接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
    为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
    提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

    运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。


    • 迪米特原则
    定义:一个对象应该对其他对象保持最少的了解。
    问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。
    解决方案:尽量降低类与类之间的耦合。
    迪米特法则的初衷是降低类之间的耦合,由于每个类都减少了不必要的依赖,因此的确可以降低耦合关系。但是凡事都有度,虽然可以避免与非直接的类通信,但是要通信,必然会通过一个“中介”来发生联系,例如本例中,总公司就是通过分公司这个“中介”来与分公司的员工发生联系的。过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。


    • 开闭原则
    定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
    问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
    解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
    开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。以前,如果有人告诉我“你进行设计的时候一定要遵守开闭原则”,我会觉的他什么都没说,但貌似又什么都说了。因为开闭原则真的太虚了。
    在仔细思考以及仔细阅读很多设计模式的文章后,终于对开闭原则有了一点认识。其实,我们遵循设计模式前面5大原则,以及使用23种设计模式的目的就是遵循开闭原则。也就是说,只要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的,这个开闭原则更像是前面五项原则遵守程度的“平均得分”,前面5项原则遵守的好,平均分自然就高,说明软件设计开闭原则遵守的好;如果前面5项原则遵守的不好,则说明开闭原则遵守的不好。
    其实笔者认为,开闭原则无非就是想表达这样一层意思:用抽象构建框架,用实现扩展细节。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对需求的变更有前瞻性和预见性才行。

    说到这里,再回想一下前面说的5项原则,恰恰是告诉我们用抽象构建框架,用实现扩展细节的注意事项而已:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。


    最后说明一下如何去遵守这六个原则。对这六个原则的遵守并不是是和否的问题,而是多和少的问题,也就是说,我们一般不会说有没有遵守,而是说遵守程度的多少。任何事都是过犹不及,设计模式的六个设计原则也是一样,制定这六个原则的目的并不是要我们刻板的遵守他们,而需要根据实际情况灵活运用。对他们的遵守程度只要在一个合理的范围内,就算是良好的设计。我们用一幅图来说明一下。

    图中的每一条维度各代表一项原则,我们依据对这项原则的遵守程度在维度上画一个点,则如果对这项原则遵守的合理的话,这个点应该落在红色的同心圆内部;如果遵守的差,点将会在小圆内部;如果过度遵守,点将会落在大圆外部。一个良好的设计体现在图中,应该是六个顶点都在同心圆中的六边形。




    在上图中,设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;设计5则严重不足,对各项原则都没有很好的遵守;而设计6则遵守过渡了,设计5和设计6都是迫切需要重构的设计。
    到这里,设计模式的六大原则就写完了。主要参考书籍有《设计模式》《设计模式之禅》《大话设计模式》以及网上一些零散的文章,但主要内容主要还是原文作者对这六个原则的感悟。写出来的目的一方面是对这六项原则系统地整理一下,一方面也与广大的网友分享,因为设计模式对编程人员来说,的确非常重要。正如有句话叫做一千个读者眼中有一千个哈姆雷特,如果大家对这六项原则的理解跟我有所不同,欢迎留言,大家共同探讨。


    引用文章地址: http://www.uml.org.cn/sjms/201211023.asp#6
    展开全文
  • 问九:什么是最左匹配原则

    千次阅读 2019-04-23 08:28:58
    最左匹配原则遇上范围查询就会停止,剩下的字段都无法使用索引 。例如a = 1 and b = 2 a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1 and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是...

    导入:

    顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配

    例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的;但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and a = 1)就可以,因为优化器会自动调整a,b的顺序(in 和 =)。再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,因为c字段是一个范围查询,它之后的字段会停止匹配。


    详解:

    因为索引的底层是一棵B+树,联合索引的键值数量不是一个,而是多个

    但是构建一棵二叉树只能根据一个值来构建,因此数据库依据联合索引最左的字段来建立B+树。


    举个栗子:

    假如创建一个(a,b)的联合索引,那么它的索引树是这样的

    可以看到a的值是有顺序的,1,1,2,2,3,3,而b的值是没有顺序的1,2,1,4,1,2。所以b = 2这种查询条件没有办法利用索引,因为联合索引首先是按a排序的,b是无序的

    同时我们还可以发现在a值相等的情况下,b值又是按顺序排列的,但是这种顺序是相对的。所以最左匹配原则遇上范围查询就会停止,剩下的字段都无法使用索引。例如a = 1 and b = 2 a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1 and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是一个范围,在这个范围中b是无序的。

    再详细一点:联合索引(a,b,c),可以认为这三列都是排好序的,在a下b是有序的,在b下c是有序的,也就是说a=1返回的结果中b有序,此时可以利用索引查找b,b=1的结果中c有序,可以c索引来查找,但是一旦这顺序打破那么就只能是从左边起索引依此生效,也就是说如果要查a=1,c=2的记录那么就只有a生效,因为b没有生效,所以c不会生效。

    mysql创建复合索引的规则是首先对复合索引最左边的字段的数据进行排序,在此基础上,再对后面的字段进行排序,这样第一个字段是绝对有序的,后面的字段就是无序的了,一般情况下第二个字段进行条件判断是用不到索引的,可能出现type是index类型的,这就是mysql最左前缀的原因。

    展开全文
  • 在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例: 对列col1、列col2和列col3建一个联合索引 KEY test_col1_col2_col3 on test(col1,col2,col3); 联合...
  • 1.什么是复合索引?...2.什么是最左原则 最左原则说是,在SQL语句中,复合索引的第一个字段必须出现查询语句中,这样索引才能够被使用。 (1)比如下面的查询语句,就会使用到复合索引: select * from b
  • 什么是SMART原则

    万次阅读 2016-12-08 09:19:04
    什么是SMART原则SMART(S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-bound)原则即目标管理,目标管理是使经理的工作变被动为主动的一个很好的手段,实施目标管理不但是有利于员工更加明确高效地...
  • 7、合成复用原则(Composite Reuse Principle) 合成复用原则就是在一个新的对象里通过关联关系(组合关系、聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用...
  • zookeeper为什么是CP原则

    千次阅读 2020-08-10 03:13:34
    CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。 中文名...
  • 基于格莱斯的合作原则及其相关理论,对近年来风靡许久的英剧《唐顿庄园》台词进行分析,提炼台词的"会话含义"(conversational implicature),并以此窥探其中隐含的修辞手法,能够发现语言风格与特定社会环境之间的依存...
  • 数据中台的设计原则什么

    千次阅读 2020-12-10 18:00:00
    2、唯一性原则 有三层含义:一是数据抽取脚本的唯一性,比如订单业务表,需要从原有销售系统中抽取数据,这是数据分析不可避免的,但是所有涉及到订单的抽取脚本只能有唯一一份,这样当原有销售系统升级或者其他...
  • SMART原则什么

    2019-09-25 22:52:37
    SMART原则的具体含义如下: 序号 字母 全拼 中文含义 说明 1 S S pecific 明确性 用具体的语言清楚地说明要达成的行为标准 2 M M easurable 衡量性 目标应该是...
  • 六大原则之开闭原则

    千次阅读 2021-02-02 10:23:59
    1. 开闭原则的介绍 开闭原则(Open Closed Principle)是编程中最基础、最重要设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。 当...
  • 但很多人常常搞不清楚,究竟什么是抽象,以及如何进行抽象。今天我们就来谈谈抽象。什么是抽象?首先,抽象这个词在中文里可以作为动词也可以作为名词。作为动词的抽象就是指一种行为,这种行为的结果,就是作为名词...
  • 接口隔离原则含义

    2016-11-17 12:16:15
    接口隔离原则含义是: 建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。 接口...
  • 内聚(本题的聚合):内聚是指一个模块内部各个部分...封装原则:隐藏对象的属性和实现细节,仅对外公开借口,并且控制访问级别 在面向对象方法中,用类来实现上面的要求。用类实现封装,用封装来实现高内聚,低耦合。
  • 里氏替换原则含义

    2016-11-17 11:27:11
    里氏替换原则包含以下4层含义: 子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。子类中可以增加自己特有的方法。当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入...
  • 开闭原则含义

    千次阅读 2016-11-17 13:28:43
    开闭原则的核心思想就是:对扩展开放,对修改关闭。而扩展和修改的关键方式就是接口和抽象类的利用 抽象约束 第一,通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的...
  • 在使用联合索引的时候,我们要遵守一个最左原则,即index(name,age)支持 name 、name 和 age 组合查 询,而不支持单独 age 查询,因为没有用到创建的联合索引。 -- 下⾯的查询使⽤到了联合索引 select * from stu...
  • 什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。 6、合成复用原则(Composite Reuse Principle) 原则是尽量使用合成/聚合的方式,而不是使用继承。
  • CAP原则和BASE原则

    千次阅读 2019-12-17 15:51:20
    CAP和BASE是分布式系统中最常见的两个原则,我们常见的类似的Zookeeper,Eureka中间件,MySQL,Oracle数据库,或者是我们的分布式业务系统,其实都在这两个原则当中。 CAP原则 一致性(C:Conistency):分布式节点...
  • MySQL 最左原则的理解

    千次阅读 2020-09-16 01:12:39
    1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,...
  • AKF拆分原则

    千次阅读 2019-09-16 14:07:43
    我们讲一下如何去设计我们的微服务,以及微服务的设计原则是什么,我们一般在设计我们的微服务的时候, 都会遵循四个原则,哪四个...朴素的理念,理念是什么呢,我们通过加机器就可以解决容量和可用性的问题,当你的系统...
  • 英语“就近原则”和“就远原则

    万次阅读 2019-09-03 06:37:18
    什么是“就近原则”?什么是“就远原则”?是根据单词位置的“近”或“远”来判断的吗?在回答之前先做一道例子。 例1.What he does or what he says __ nothing to do with me. 他的行为或言谈都与我无关。 在这个...
  • 258原则

    千次阅读 2020-10-20 11:43:26
    258原则 所谓的“2-5-8原则”,简单说,就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度...
  • 编程规范的目的是让代码更容易阅读更容易维护 代码是写给人看的这个观点应 该是写代码的基本原则 1命名规则最好变量命名长度为 6-15 个字母之间明确地表达出每个变量的意思 不要使用歧义单词或者生僻单词方法命名...
  • 微服务设计原则之AKF原则

    千次阅读 2020-12-17 15:42:43
    在设计微服务的时候,我们一般会遵循以下4个原则: 1)AKF拆分原则 2)前后端分离原则 3)无状态服务 4)restful的通信风格 AKF把系统扩展分为以下三个维度: X轴:直接水平复制应用进程来扩展系统,将系统...
  • 软件设计的问题1.1 软件有什么问题?1.3 怎样设计软件?2. 统一建模语言-UML2.1 来历2.2 UML采用的方法论-4+1视图2.3 类图3. 说面向对象前先讨论需求变更3.1 一个例子3.2 为何好的程序员拥抱需求变化4. 面向对象设计...
  • mysql最左侧原则的深入理解

    千次阅读 多人点赞 2019-05-10 13:55:00
    一直以来,博主对最左侧原则的理解都是,比如给a,b,c加上索引,那么a,b可以用到索引,a,c也可以用到索引,但b,c是用不到的。包括这个a必须要在用到的第一个索引处。但是如果一个表中只有a,b,c三个字段,给他们加上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 285,529
精华内容 114,211
关键字:

原则的意思是什么呢