精华内容
下载资源
问答
  • 系统概念设计的完整
    千次阅读
    2019-09-21 15:47:28

     

    目录

       why

        what

        how

        who

        when


     

        why

          在系统设计中,概念的完整性应该是最重要的考虑因素。也就是说,为了反映一系列连贯的设计思路,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕他们其实包含着许多很好的设计。

        what

          概念完整性不仅仅包含业务领域上的概念也包含技术选型中技术栈

        how

           要解决这个问题,首先需要定义解决这个问题的标准:应该是系统整体的易用性,而单独的功能和简洁都是不均衡的,都只能达到了真正的目标的一半。对于给定的级别的功能,能用最简洁和直接的方式来指明事情的系统是最好的。要表达一件待完成的事情,常常需要对基本元素(那些基本要素?功能特性、用户诉求、非功能要求)进行意料不到的复杂组合。而且,仅仅了解基本要素和组合规则还不够,还需要学习惯用的用法(那些用法?算法、分布式设计方法、分布式存储设计、微服务架构等),以及在实际工作中如何进行组合(怎么组合?满足功能需求和非功能要求)。易用性实际上需要设计的一致性和概念上的完整性。

          同工作广泛的水平分割相比,垂直划分从根本上大大减少了劳动量,使交流彻底的被简化,概念完整性也得到了大幅提高。

        who

          概念的完整性要求设计必须由一个人,或者非常少数互有默契的人员来实现。

           进度的压力却要求很多人员来开发系统。有两种方法可以解决这种矛盾。第一种:是仔细地对设计方法和具体实现进行分工。第二种:改善团队组织结构,将大团队拆分成若干10人左右的小型,精干团队。

           对于非常大型的项目,将设计方法、体系结构(完整和详细的用户接口说明)方面的工作与具体实现相分离是获得概念完整性的强有力方法。若要得到系统概念上的完整性,必须有人控制这些概念,在毫无限制的实现小组中,在进行结构上的决策时,会出现大量的想法和争议,耗费所有人的时间和经历,从而对具体实现的关注反而会比较少。

           对于结构师而言应该时刻记录下其他人提出良好想法和特色。如果出现了很多非常重要但是不兼容的构想,就应该抛弃原来的设计,对不同基本概念进行合并,在合并后的系统上重新开始。

        when

           结构师和实现人员什时间开始工作? 整个创造性活动包括三个独立的阶段:体系结构、设计实现和物理实现。在实际情况中,它们往往可以同时和并发地进行。 结构师在项目一开始就会加入到项目中。只要有了初步功能雏形,对技术有了相对清晰的构思以及拥有了适当的成本和目标时,实现人员的工作就开始了。首先,必须设定良好定义的时间和空间目标,了解产品运行的平台配置。接着,可以设计模块的边界、表结构、路径和阶段分解、算法以及所有的工具。

     

     

         

    更多相关内容
  • 程序知识的概念

    万次阅读 2015-09-16 16:19:16
    (一)程序知识的概念 程序知识是有关“怎么办”的知识,主要涉及概念和规则的应用。这类知识与我国流行的“技能”概念在内涵与外延上基本一致。基于此,皮连生(1996)将技能定义为,在练习基础上形成的按...

    一、程序性知识概述

    (一)程序性知识的概念

    程序性知识是有关“怎么办”的知识,主要涉及概念和规则的应用。这类知识与我国流行的“技能”概念在内涵与外延上基本一致。基于此,皮连生(1996)将技能定义为,在练习基础上形成的按某种规则或操作程序顺利完成某种智慧任务或躯体协调任务的能力。就个体的程序性知识而言,又有两种表现。一种是个体必须使自己的机体或器官在时空中发生位置移动才能完成任务的程序性知识,比如某人想到山顶去看日出,要达成此目的,他就必须通过登山才能执行和完成。这类程序性知识的完整展现需要两个要素,一是形成身体运动能力,二是躯体或器官发生位移。它与我国教育领域惯称的“动作技能”概念同质。另一种是不需要个体的时空中发生位置移动就能完成任务的程序性知识。比如要证明两个三角形是否全等,个体只需在大脑内部运用两个三角形全等的规则进行隐形操作就能完成。这类程序性知识与我们常用的“智慧技能”概念所表征的意义是相同的。认知心理学又根据加涅的认知学习结果三分法,即认知学习结果包括言语信息、智慧技能和认知策略,将程序性知识分为用于对外办事的智慧技能和用于对内调控的认知策略。

    (二)程序性知识的分类

    对任何事物的分类都是建立在一定的分类原则,即分类标准基础上的。对程序性知识亦可从不同的维度进行分类。

    E.加涅在其父亲对智慧技能所作区分——将智慧技能区分为对外办事和对内调控两种技能——的基础上提出了两个分类维度,即一般与特殊维度和自动与受控维度。从一般与特殊维度,可将程序性知识分为专门领域的程序性知识和非专门领域的程序性知识。专门领域的程序性知识是由只能用于特殊领域的产生式系统构成的知识,如数学中的“四则混和运算规则”、语言学中的各种“语法规则”。非专门领域的程序性知识是指可以跨越不同学习领域的一般方法、步骤的知识,如“知己知彼,百战不殆”“学习有法,学无定法”等。

    从自动与受控维度,可将程序性知识分为自动化的程序性知识和受意识控制的程序性知识。自动化的程序性知识是由经过充分练习而能自动激活的产生式系统构成的知识。如在外语学习中,一个达到熟练化程度的学习者面对呈现在自己面前的外语材料,可以直接地、迅速地将其所表达的意义用汉语表述出来,在此过程中他对外语与汉语的语法规则以及两种语言间的转换规则的运用都达到了熟练化的程度,这些规则对他来说都是自动化的程序性知识。受意识控制的程序性知识就是指未能达到熟练化的、不能自动激活的产生式系统构成的知识,如一个刚学毛笔字的学生所拥有的有关书写规则方面的知识。

    64智慧技能中的复杂性水平

    E.Gagne,1992

    加涅在对知识和技能进行区分并进行了系统研究之后,按智慧技能的复杂水平将其分为由低到高的五个层次(即五类):辨别、具体概念、定义性概念、规则和高级规则。这五类智慧技能之间形成如图64所示的关系:辨别是指区分事物之间的异同点,当我们在任一学科里要求学生将两个新的、有着各自特征的或对象区分开来时,那么这只是一种最简单的、要求作出辨别的智慧技能,它的获得可以用形成一系列刺激—反应的联结来解释;具体概念旨在识别具有共同特征的同类事物,当我们要求学生掌握某一具体概念时,那么这是一种比辨别稍为复杂的能力,因为它的获得须以辨别为基础,抽取出这类对象的共同特征;定义性概念就是运用概念的定义特征定义事物,当我们要求学生获得某一定义性概念或某一规则时,由于定义性概念或规则通常以若干个概念来界定,或表示若干个概念之间的关系,因此它们是一种比具体概念稍为复杂的能力,它们的获得须以学生已经获得定义中的各个部分概念为前提;规则是指运用单一规则办事的能力,当我们要求学生解决第一次遇到的新问题时,学生必须回忆并使用过去业已获得的有关规则,才能着手解决问题,而问题一旦解决,学生将获得某一高级规则;而高级规则特指同时运用几条规则来处理问题。简而言之,这五类智慧技能之间不仅是一个从低级到高级的序列,而且任一高级智慧技能的获得都是以低一级智慧技能的获得为条件的,是在低一级智慧技能获得的基础上才发展起来的。

    二、程序性知识的学习过程

    (一)辨别学习

    加涅在其智慧技能分类系统中将辨别置于最低层,认为辨别是“对刺激物在某一物理维度或某些物理维度上的相互差别能够作出不同反应的一种能力”(吴庆麟:《教育心理学》,48页,北京,人民教育出版社,1999。)。由此,辨别需要相应的参照物,没有相应的参照物,就无从产生辨别。根据参照物性质的不同,智慧技能中包含两个亚型,一是对客观现实世界中单一事物或物体的辨别,二是两个以上事物或物体的辨别。这种类型的辨别的根本目的在于“辨异”,即通过对作用于个体的感觉器官的两个事物或物体进行对比,找出二者的不同之处。这类辨别在日常生活中是极为普遍的,为此,加涅有时又把辨别这一智慧技能称之为多重辨别(multiple discrimination)。

    辨别能力的形成过程包含两个层次:一是模式获得的过程,即“刺激—反应”连锁学习的过程;其二是模式识别的过程。

    加涅认为,影响辨别学习的内部条件是:“在个体的内部必须的一个条件是,能够回忆和恢复为表现这种辨别而必须具有的不同的刺激—反应连锁……在学习对多重刺激作出反应时,学生必须能够表现也与这些刺激差异同样多的不同的刺激—反应连锁。”(吴庆麟:《教育心理学》,48页,北京,人民教育出版社,1999。)“辨别学习的一些外部条件表现为某些最基本的学习原理的应用。第一,接近的原则必须具备,即在刺激呈现后必须紧接对它作出反应。第二,强化的原则在辨别学习中起特别重要的作用,应当使强化随正确与错误的反应而有区别地出现。第三,重复也起着重要的作用。辨别的情境可能需要重复多次,以便选出正确的刺激差异,对于学习多重辨别来说,必然需要更多的重复。”(R.Gagne1985,The Conditions of Learning and Theory of Instruction.Harcourt Brace College Publishers,p.51.

    (二)概念学习

     概念的心理学意义是指符号所代表的一类事物或性质,是一类事物与彼类事物相区别的本质属性的集合体。大多数概念都由四个成分构成:概念名称、概念定义、概念例子和概念属性。概论名称就是一个集音、形于一体的符号,如“人”就是世界上“会制造和使用工具”的类物的名称。概念定义是用以陈述类物的本质特征的句子,如“心理是大脑对客观事物的主观能动的反映”。概念例子就是一个个特殊的个体。概念的属性是这类事物用以区别其他类事物的特征。

    概念学习就是能概括出同类事物的共同本质特征。加涅把概念分成两类:具体概念(concrete concept)和定义概念(defined concept)。具体概念是指可以通过具体对象来表示的,是直接观察得到的,如杯子、书、树木、电灯等。定义概念是凭少数融合可以识别的,它们都包含一些抽象的关系,因而必须通过学习,如心理、意识、哲学、人本主义等。

    具体概念学习要求学生具备辨别能力,因为概念学习通常涉及对基本概念的辨别。作为外部条件,需同时呈现属于该概念范畴的例子和不属于该概念范畴的例子,要求学生辨别该概念的特征。此外,还需提供必要的强化和练习。

    定义概念学习要求学生事先掌握定义的组成部分,如主语、宾语、谓语。同时还需掌握语法。教师需用口头的或书面的形式呈现概念的定义,以便定义的各组成部分按适当顺序进入学生的工作记忆。同样,定义概念学习也需给学生各种例子,包括不属于该概念范畴的例子,以供学生识别该概念的特征。

    (三)规则学习

    规则有两种功能:一是用作对事物分类的标准,在本质上这种规则就是一个定义性概念;二是指导人们如何办事。对此,加涅总结说:“规则是支配人的行为并使人能够证明某种关系的内在状态。规则并非只是表述某一规则的言语陈述,比如像‘正方形的周长是其边长的四倍’这样一种命题,规则必然涉及人在面对特殊刺激实际上有无数变化时,行为始终表现出规律性的原因。因此,规则是使人能够对一类刺激情境作出与一类操作相适应的举动而推论出来的能力,据此我们预计,这种操作同一类特定的关系刺激发生了联系。”(R.Gagne(1985),The Conditions of Learning and Theory of Instruction.Harcourt Brace College Publishers, p.118,p.120.)此处的规则在本质上是一种能力。

    规则学习的目的是获得规则、掌握规则。那么,确认一种规则是否为个体所掌握的标准是什么呢?比如,一个小学生在乘法运算学习中,已将乘法口诀表背得滚瓜烂熟,但在实际面对“23×45=?”的算式时却一筹莫展,这个小学生是否已经掌握了乘法运算规则呢?答案是否定的。该学生获得的只是言语信息。为此,加涅一再强调,“规则”这一术语与表征它的言语命题不能相提并论。“当人们能够阐述代表规则的命题时,人们通常不会认为这一规则实际上已经获得。要确认是获得仅是获得了规则的言语表述,人们必须去了解:(1)学生是否能鉴别其中包含的各个概念;(2)学生是否能揭示构成这些概念之间的关系。作出这种了解的方法有各种各样,但归根到底是看学生是否能证明这种关系的举动。” R.Gagne(1985),The Conditions of Learning and Theory of Instruction.Harcourt Brace College Publishers, p.118,p.120.

    吴庆麟对加涅关于规则学习条件的相关论述归纳总结,并认为规则学习的内部条件是:对构成规则的这些子概念的理解,这种理解意味着学生能够鉴别一类客体、一类事件或一类关系的各个成员。如果这些前提概念尚未把握,那么规则是不能被适当地掌握的,如果部分概念仅是作为一种言语信息而获得的话,也不可能充分把握本身的含义。规则学习的外部条件有五条:第一,影响规则学习的言语指导,一开始往往应当陈述在学习完成之后教师期望在学生身上能够表现出来的行为操作;第二,言语指导继而应让学生回忆起在要学的规则中将会出现的那些子概念;第三,随后呈现整个规则的语言提示;第四,要求学生证明规则中所含的那种关系的言语指导;第五,注意在规则学习中使用强化的原理,当学生对规则作出充分的证明之后,教师应表扬、称赞。(吴庆麟:《教育心理学》,66~67页,北京,人民教育出版社,1999。)

    规则学习一般表现为两种基本形式。其一是从例子到规则的学习,它属于奥苏伯尔同化论中涉及的上位学习的一种形式,也就是我们通常所说的发现学习。其二是从规则到例子的学习,即下位学习的一种形式,是在教学实践中常用的接受学习。

    三、程序性知识的教学策略

    现代认知心理学家将程序性知识的获得划分为三个阶段。(1)认知阶段。在这一阶段,学生将使用自己已有的为达到一定目的有效方法,对某一技能作出陈述性解释,并对这一技能的各项条件及行动形成最初陈述性特征的编码。(2)联系阶段。在这一阶段,原先指导行为的知识将发生两种转变:第一,最初对技能所作的表征将慢慢转变为特殊领域里的程序性知识;第二,构成这一程序的各个部分的产生式间的联结将得到增强。(3)自动化阶段。在这一阶段,整个程序本身将得到进一步的精致和协调。基于程序性知识获得的三阶段理论,在教育教学过程中可相应地从三个方面展开对程序性知识的教学:帮助学生实现子技能或前提技能的自动化;帮助学生将一些小的程序合并成一些大的程序;帮助学生将这些技能程序化,使学生可以对程序本身无须多作考虑,就能使用程序的目标与子目标结构。

    (一)掌握子技能或前提技能

    当人准备执行一项复杂的认知技能时,对其中的部分技能还未把握或达到自动化的程度时,要成功地并顺利地执行整个技能显然是不可能的。事实上,无论是在加涅的学习层级论还是在适应个别差异的掌握学习中都渗透了这一思想。安德森曾指出,加涅从许多需传授的技能中分解出它的子技能,从这些子技能中又再次分解出它们的子技能。例如,可以将代数看做微积分的子技能,而算术又是代数的子技能,而基本的计算技能又是算术的子技能。在加涅看来,成功的教学设计的关键是确定这类正确的子技能的层级,课程的教学便是旨在分别传授这种层级中的各子技能。同样,在适应个别差异的掌握学习中,让学生按各自的学习速度前进,并对学生在各个教学目标上的掌握情况提供测验。如果在教学之后尚未达到目标,便需要提供另外的教学时间,直到该目标被掌握为止,这种教学也是旨在保证让每个学生学会必要的前提知识,以及为掌握新的复杂的技能提供所需的子技能。如果教学人员能对掌握的目标和测验作出适当的设计,那么这类教学实际上就是以掌握作为实现子技能必须达到自动化的教学程序。

    (二)促进组合

    教师要给学生提供将一些小的程序组合成大程序的机会。在认知心理学家看来,在实现技能程序化的第二阶段,最初形成的仅是一些小的产生式,一旦形成了一些小的产生式,它们之间的组合将有可能出现。为了促进这种组合的产生,必须使两个小的产生式能够在工作记忆中连续处于激活状态,这样人的信息加工系统有可能注意到,前一产生式的行动为后一产生式的启动创设了条件,由此获得的一个新的产生式既含有前一产生式的条件,又含有前后两个产生式的行动,而对后一个产生式的条件则作为多余的信息予以删除。

    在帮助学生将基本技能合成的过程中,练习和反馈是两个极重要的因素,因为每一次练习均给两个有关联的产生式在工作记忆中同时激活的机会,因而也给了它们合成的机会。在练习中应提供多少反馈以及何时提供反馈似乎是一个有争议的问题。一方面有研究揭示,及时反馈相当重要,因为它可以使学生及时纠正错误,避免使错误成为基本技能中的一个自动化的成分。但另一方面也有研究指出,及时反馈或过多的反馈可能是有害的。在这种情况下,学生可能会变得过分依赖反馈,而反馈时常会干扰对任务的学习。布卢姆曾对个别导师制和正规课堂授课制作过比较,他发现,配备个别导师的一般学生要优于正规课堂里的优秀生,究其原因是,个别导师的指导似可完全根据学生的需要来提供适时的反馈。不过个别导师制毕竟代价高,因而不可能为每一个学生配备一名专职的指导教师,在这方面,计算机辅助教学似乎是一种希望,它可以根据学生的需要来提供反馈。当然要提供这类反馈需要有足够的理解力。使计算机具有这种足够的判断和理解能力曾一度是一个主要的障碍,但近年来已有这方面的成功报道。

    (三)促进程序化

    一旦学生在一些小的产生式上达到了自动化的程度,并开始将这些小的产生式组合成大的产生式时,教师为学生实现整个技能自动化所需做的工作是,保证让学生练习整个程序中所含的一系列产生式步骤,而不再是单独练习部分的产生式。随着一次次成功地执行这种动作序列,整个程序中各个步骤的联系将会以前后步骤的匹配来替代有意识的思考或搜索过程。

    实现程序化的障碍之一是,学生可能会对要做这么多的练习感到厌倦。施奈德(Schneider1985)曾建议使用达标式的反馈给完成一组练习提供外部强化,这不失为一条可供借鉴的意见,但在实现程序化时遇到的另一类更大的麻烦是,学生往往学习了各种不同的部分技能的合成,但对这些技能的关系以及何时适当地使用它们却并不了解。例如,在经过一定的练习后,当都是明确要求学生做加、减、乘、除的运算时,学生可以认知得又快又准确,但一旦遇到某种特定的应用情境时,却不知道该用何种运算,或不知道可以用加法来作检验。看来,在实现某一组合技能的程序化的同时,教师还需考虑的另一个问题是,怎样使学生学会识别与特定的行动相联系的条件图式,了解各子技能的关系及合成的技能与总目标的关系,这一问题的解决通常采用变式策略。如在教各种运算时要给学生提供含有混合运算的实际应用情境,以帮助学生认识到在使用这些方法时,应确认与这些方法相适宜的条件。因为混合练习的情境有助于学生了解应当把计算方法与某种特定的目标联系起来,如果在练习中不把计算方法同目标联系起来,学生可能只是学会了正确地执行某种程序,但并没有学会如何适当地使用它们,因为他们还不了解特定的程序只适用于特定的情境。

    近年来,尽管人们一直在强调学习目标和看重课程计划中的基本胜任力,但包括安德森在内的一些认知心理学家则认为,尽管这种方式已产生了一些有益的学习结果,但如果就此期望学生能将子技能整合为复合的程序似乎并不充分。为了使学生充分地理解在何时使用这些子技能(而不仅只知道怎样执行这些子技能),学生还必须在一定的情境中练习,才能对子技能的关系有更为明确的了解。唯有对含有组合的子程序作出广泛的练习,才能使学生将一些小的产生式组合成一些大的产生式集合,并了解和探查到产生式集合的内在关系。

    小结

    程序性知识是个人具有的有关“怎么办”的知识,主要涉及概念和规则的应用。加涅在对知识与技能进行区分并进行了系统研究之后,按智慧技能的复杂水平将其分为由低到高的五个层次(即五类):辨别、具体概念、定义性概念、规则和高级规则。不同层次程序性知识的学习规律各具特殊性。促成程序性知识的有效策略是掌握子技能或前提技能、促进组合和促进程序化。

    展开全文
  • 一、什么是幂等 可以参考数据库乐观锁机制,比如执行一条更新库存的 SQL 语句,在并发场景,为了性能和数据可靠,会在更新时加上查询时的版本,并且更新这个版本信息。可能你要对一个事情进行操作,这个操作...

    一、什么是幂等性

    可以参考数据库乐观锁机制,比如执行一条更新库存的 SQL 语句,在并发场景,为了性能和数据可靠性,会在更新时加上查询时的版本,并且更新这个版本信息。可能你要对一个事情进行操作,这个操作可能会执行成百上千次,但是操作结果都是相同的,这就是幂等性。

    二、消费端的幂等性保障

    在海量订单生成的业务高峰期,生产端有可能就会重复发生了消息,这时候消费端就要实现幂等性,这就意味着我们的消息永远不会被消费多次,即使我们收到了一样的消息。

    业界主流的幂等性有两种操作:

    1.唯一 ID + 指纹码 机制,利用数据库主键去重

    2.利用redis的原子性去实现
     

    三、唯一 ID + 指纹码 机制

    大家肯定懂唯一 ID 的,就不多说了,为什么需要指纹码呢?这是为了应对用户在一瞬间的频繁操作,这个指纹码可能是我们的一些规则或者时间戳加别的服务给到的唯一信息码,它并不一定是我们系统生成的,基本都是由我们的业务规则拼接而来,但是一定要保证唯一性,然后就利用查询语句进行判断这个id是否存在数据库中。

    好处就是实现简单,就一个拼接,然后查询判断是否重复。

    坏处就是在高并发时,如果是单个数据库就会有写入性能瓶颈

    解决方案 :根据 ID 进行分库分表,对 id 进行算法路由,落到一个具体的数据库,然后当这个 id 第二次来又会落到这个数据库,这时候就像我单库时的查重一样了。利用算法路由把单库的幂等变成多库的幂等,分摊数据流量压力,提高性能。

    四、利用 redis 的原子性去实现

    相信大家都知道 redis 的原子性操作,我这里就不需要过多介绍了。

    使用 redis 的原子性去实现需要考虑两个点

    一是 是否 要进行数据落库,如果落库的话,关键解决的问题是数据库和缓存如何做到原子性? 数据库与缓存进行同步肯定要进行写操作,到底先写 redis 还是先写数据库,这是个问题,涉及到缓存更新与淘汰的问题

    二是如果不落库,那么都存储到缓存中,如何设置定时同步的策略? 不入库的话,可以使用双重缓存等策略,保障一个消息副本,具体同步可以使用类似 databus 这种同步工具。

    五、怎么保证消息队列消费的幂等性?

    先大概说一说可能会有哪些重复消费的问题。

    首先就是比如rabbitmq、rocketmq、kafka,都有可能会出现消费重复消费的问题,正常。因为这问题通常不是mq自己保证的,是给你保证的。然后我们挑一个kafka来举个例子,说说怎么重复消费吧。

    kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表他的序号,然后consumer消费了数据之后,每隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的offset来继续消费吧。

    但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接kill进程了,再重启。这会导致consumer有些消息处理了,但是没来得及提交offset,尴尬了。重启之后,少数消息会再次消费一次。

    其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。

    给你举个例子吧。假设你有个系统,消费一条往数据库里插入一条,要是你一个消息重复两次,你不就插入了两条,这数据不就错了?但是你要是消费到第二次的时候,自己判断一下已经消费过了,直接扔了,不就保留了一条数据?

    一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性

    幂等性,我通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。

     

    六、其实还是得结合业务来思考,我这里给几个思路:

    (1)比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update一下好吧

    (2)比如你是写redis,那没问题了,反正每次都是set,天然幂等性

    (3)比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id之类的东西,然后你这里消费到了之后,先根据这个id去比如redis里查一下,之前消费过吗?如果没有消费过,你就处理,然后这个id写redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。

    还有比如基于数据库的唯一键来保证重复数据不会重复插入多条,我们之前线上系统就有这个问题,就是拿到数据的时候,每次重启可能会有重复,因为kafka消费者还没来得及提交offset,重复数据拿到了以后我们插入的时候,因为有唯一键约束了,所以重复数据只会插入报错,不会导致数据库中出现脏数据

    如何保证MQ的消费是幂等性的,需要结合具体的业务来看

     



     


     

    展开全文
  • 概念性知识与程序知识的关系

    千次阅读 2015-09-18 16:18:03
    概念性知识与程序知识的关系  概念性知识的习得通过2种形式来判断:  1、说出是什么?——这表明学习者掌握了有关该概念性知识的陈述知识阶段,从加涅的学习结果分类来看,是言语信息。  这里的是...

       概念性知识与程序性知识的关系

          概念性知识的习得通过2种形式来判断:

          1、说出是什么?——这表明学习者掌握了有关该概念性知识的陈述性知识阶段,从加涅的学习结果分类来看,是言语信息。

          这里的是什么应该包括记忆和理解

          2、能够做什么?——判断学习者是否运用概念性知识来解决问题,对外办事。也就是学习者具有了程序性知识。 

     

          如果我们要让学习者说车是什么,那就是陈述性知识。

          如果我们要让学习者说出做什么,怎么做,那就是程序性知识。(不是说出什么,而是让学习者去做什么)

          

          数学教学的不同层面。

          如圆的面积。第一课时:圆的认识   陈述性知识

                      第二课时:圆的面积的计算————理解并说出公式   陈述性知识

                                              ————运用公式         程序性知识

         

         目标归目标陈述,陈述的时候尽要将陈述性知识与程序性知识分开,任务分析的时候加以个别分析,并要说明属类(具体的小类)

         

         概念性知识的两种层面

         停留在记忆和理解层面,则为陈述性知识;达到运用层面则为程序性知识。换言之,在布鲁姆的两维表中,概念性知识停留在记忆和理解层面,达到运用层面看,就必然转变为程序性知识。

     

     

        布鲁姆所进行的知识分类并不是学习结果分类,而是狭义的知识。其概念和原理仅是人类共有的知识(概念性知识),是陈述性知识。当其进行运用时,就转变为程序性知识。即为加涅的学习结果分类中的智慧技能。

        

        我们要教学生会做什么,一般有两种情况:

        1、学生已经知道了概念和原理,我们只要帮助学生将这些概念和原理转化为办事的规则;

        2、先帮助学生习得概念和原理,然后帮助学生将这些概念和原理转化为办事的规则。

        这两种情况都充分说明,程序性知识的习得,需要建立在概念性知识习得的基础之上。

        而有些教学只要将概念性知识停留在记忆和理解的层面上。这样的教学就是典型的陈述性知识学习的课。

    展开全文
  • 数据库分析之概念结构设计

    万次阅读 多人点赞 2018-07-01 23:54:56
    概念结构设计:将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程。 一、概念模型 在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,然后才能更改、更准确地用某一数据库管理系统实现...
  • 来源 |阿丸笔记提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关。而事务的ACID(即原子Atomi...
  • 算法鲁棒的3个概念

    万次阅读 2019-02-20 09:28:51
    鲁棒 对应英文单词为robust,中文为健壮的、强壮的,所以说算法的鲁棒直白点说就是健壮的、强壮的算法,具体来说健壮主要体现在以下三点: 1、模型具有较高的精度或有效,这也是对于机器学习中所有学习模型的...
  • 数据库 - 概念结构设计

    万次阅读 2015-05-08 10:15:46
    概念结构设计什么是概念结构设计 将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计 概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定 概念结构设计是...
  • 数据库系统概念(原书第六版)3-2

    热门讨论 2014-02-18 08:46:53
    第6版保持了前5版的总体风格 同时对内容进行了扩充 对结构进行了调整 以更好地符合数据库教学的需求和反映数据库设计 管理与使用方式的发展和变化 具体更新内容如下: 调整了内容组织结构 将SQL内容提前 并集中进行...
  • k8s基本概念与术语

    万次阅读 2018-06-08 19:47:59
    k8s大部分概念比如Node,Pod、RC,service等都可以看做一种资源对象,几乎所有的资源对象都可以通过k8s提供的kubectl工具执行增,删,改,查等操作并将其保存在etcd中持久化存储。1.mastermaster指的是集群控制节点...
  • 第三章 概念模型设计(一)

    千次阅读 2020-04-16 23:01:55
    概念模型独立于计算机硬件和实现数据库的DBMS软件,即概念设计阶段不必考虑具体的计算机软,硬件设备。 概念模型的特点是: 简单,明确地表达用户业务环境数据需求,数据之间的联系,数据约束条件。 易于交流和理解...
  • 【软件工程】各种概念-习题2

    万次阅读 2021-06-02 09:29:18
    软件的四大特征——复杂 软件的四大特征——不可见 软件的四大特征——易变 软件的四大特征——一致 遗留系统 仍在使用的软件系统,可满足客户需求,但很难以“优雅的”方式对其进行演变以适应新需求或新...
  • 时间复杂度和空间复杂度的概念...时间和空间(即寄存器)都是计算机资源的重要体现,而算法的复杂就是体现在运行该算法时的计算机所需的资源多少。 各种算法的复杂度如下: 时间复杂度: 1:算法的时间复杂度反映...
  • 互联网是这个时代最伟大的创造。也是现今最强大的生产力。 诚如马克思哲学理论所述:生产... 使上述概念成为奠定新的生产关系的基石,能够具体社会关系,促进生产关系界定,提升社会效率,降低信用成本,促进社交进步。
  • 数据库建模-概念模型建模(E-R图)

    千次阅读 2019-11-16 22:06:02
    目录数据库建模-概念模型建立面向对象模型与数据库关系模型两种模型的关系中间件概念数据模型(CDM)实体及属性实体属性联系一对一双向关系一对一单向关系一对多(等效多对一)多对多域(Domain )PowerDesigner建立概念...
  • 华为鸿蒙概念股龙头一览华为鸿蒙概念股今天的平均涨幅和市场人气如何?今日华为鸿蒙概念股平均涨幅为0%,其中 涨幅最高...华为概念一共有9家上市公司,9家华为概念上市公司在深交所交易,具体情况如下:拓维信息(股票...
  • 在数据库技术中,用数据模型的概念描述数据库的结构和语义,是对现实世界的数据抽象。数据模型是研究数据库技术的核心和基础。 文章目录1.概念数据模型(CDM)2.逻辑数据模型(LDM)3.物理数据模型(PDM) 1.概念...
  • SQL Server基础知识概念要点详细讲解

    万次阅读 多人点赞 2018-03-30 14:41:57
    SQL Server基础知识概念要点详细讲解 目录 基础概念 1、网状模型数据库 2、层次模型数据库 3、关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数。%取余,/取商 ...
  • 图论入门及基础概念(图篇)

    万次阅读 多人点赞 2018-09-05 12:21:48
    - 图论相关的基本概念 - 图的表示 矩阵引入 线性代数学的好的可以直接跳过,    当然,看不懂的也可以直接跳过,这部分引入只是...
  • 数据库复习-3.常用的概念模型

    千次阅读 2017-03-31 21:34:01
    除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整就是针对某一具体关系数据库的唯一约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。 实体...
  • 防火墙的基本概念和分类

    千次阅读 2022-01-27 14:34:15
    引入到通信领域,防火墙这一具体设备通常用于两个网络之间有针对的、逻辑意义上的隔离。当然,这种隔离是高明的,隔离的是“火”的蔓延,而又保证“人”的穿墙而过。这里的“火”是指网络中的各种攻击,而“人”是...
  • 如何理解数据库事务中的一致概念? 数据库事务,4个属性,ACID,C就是Consistency,一致,但是教科书式的定义说明,让人有点不清楚。谁能摆事实,讲道理,解释一下何为事务一致… 显示全部 ...
  • 不知道各位用过flume的读者对这两个概念是否熟悉了解 一开始本人的确有点迷惑,觉得这是不是重复了啊? 没感觉到transactionCapacity的作用啊? batchSize又是干啥的啊? …… …… 带着这些问题,我们深入...
  • 1988年,P·科特勒首次提出了产品三层次结构理论。该理论认为,任何一种产品都可被分为三个层次:核心产品(Core Product)、有形产品(Actual Product)、附加产品...核心产品是产品的灵魂,是指产品的有用...
  • 维度、度量、指标概念

    千次阅读 2020-07-17 16:49:25
    事实数据表可能包含业务销售数据,如销售商品所产生的数据,与软件中实际表概念一样 维度:说明数据,维度是指可指定不同值的对象的描述属性或特征。例如,地理位置的维度可以包括“纬度”、“经度”或“城市名称...
  • 概念数据模型、逻辑数据模型、物理数据模型

    万次阅读 多人点赞 2018-04-30 10:11:33
    最近在系统的学习数据库存储方面的知识加上在公司经常听同事们说起CDM,结合前段时间对MySQL的使用的心得将概念数据模型(Concept Data Model,CDM)、逻辑数据模型(Logical Data Model,LDM)、物理数据模型...
  • 数据库设计——概念模型

    千次阅读 2019-10-21 15:56:28
    实体可以是具体的人、事、物,也可以是抽象的概念或联系,例如:一个职工、一个学生等是实体。 (2)属性(attribute) 实体所具有的某一个特性称为属性。一个实体可以由若干个属性来刻画。一个学生实体可以由学生号...
  • 幂等 (idempotence) 的概念

    万次阅读 2020-08-16 02:33:11
    幂等 (idempotence) 的概念 幂等的数学概念 幂等是源于一种数学概念。其主要有两个定义 如果在一元运算中,x 为某集合中的任意数,如果满足 f(x) = f(f(x)) ,那么该 f 运算具有幂等,比如...幂等在开发中的概念.
  • 数据库原理的基本概念

    千次阅读 多人点赞 2020-02-28 18:16:02
    数据库原理这门课已经学了一周多了,基础概念知识比较多,也比较杂,下面整理一下,也算是增加一点记忆。 ** 数据库的四个基本概念 ** 数据(Data):数据是描述事物的符号记录,数字,文字,图像,音频,视频,学生...
  • 复杂网络基础概念总结

    万次阅读 2021-10-05 18:50:32
    前言:最近刚定下的课题,现在主要学习网络基础概念的知识,凡是学习总是得做下总结笔记才能比较清楚。也分享给大家一起学习吧,如有错误可以提出私信我或者评论。 社会网络通常显示出较强的社区效应,网络中的节点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 888,815
精华内容 355,526
关键字:

具体性概念