精华内容
下载资源
问答
  • Excel中的相对引用和绝对引用是怎么操作的?对列标(ABCD等)和(123等)绝对引用时要加上“$”,引用时不用加任何符号。...举例:D5单元格公式:=A1 B1相对引用,将公式复制到E5单元格时变为=B1 C1,将公式复制到D...

    Excel中的相对引用和绝对引用是怎么操作的?

    对列标(ABCD等)和(123等)绝对引用时要加上“$”,引用时不用加任何符号。

    相对引用和绝对引用是指将公式向右或复制时列标和行号是否跟着变化。

    即相对引用时将公式向右或向下复制时列标和行号跟着变化;绝对引用时将公式向右或向下复制时列标和行号固定不变。

    举例:

    D5单元格公式为:

    =A1 B1

    为相对引用,将公式复制到E5单元格时变为=B1 C1,将公式复制到D6单元格时变为=A2 B2

    D5单元格公式为:

    =$A$1 $B$1

    为绝对引用,将公式复制到E5单元格时仍为=$A$1 $B$1,将公式复制到D6单元格时仍为=$A$1 $B$1

    D5单元格公式为:

    =$A1 B$1

    为混合引用,将公式复制到E5单元格时变为=$A1 C$1,将公式复制到D6单元格时变为=$A2 B$1

    绝对引用可用快捷键F4完成,即用光标选中单元格A1,按下F4键,A1就变成$A$1了。

    excel中绝对引用符号怎么打

    在使用Excel公式的时候要打出“绝对引用符号”的方法步骤如下。

    首先打开需要进行此项操作的Excel,对选中范围进行公式套用,如图。

    然后将鼠标左键,拖动选中需要修改引用的范围,如图。

    随后按下“F4”键,选中部分就可以变为绝对引用格式了。

    excel中的绝对引用有什么用?请解释得通俗一点

    EXECL一般都是相用,比如你B1单元格输入公式=A1,当你把公式复制拉时,A1也会随你复制公式的位置发生行的变动,当你把B1公式复制到C1时,C1的公式会变成=B1,发生相对列的变化,你把B1公式复制到B2,B2公式会变成=A2,发生相对行变化,你把B1公式复制到C2时C2的公式会变成=B2,同时发生相对行和列的变化,

    绝对引用就不发生这种相对变化,如上例,当你相复制B1的公式到C2,又还想引用A1的值时,就用绝对引用,这时候,你在B1的公式就要就=$A$1,复制到C2后还是=$A$1,

    绝对引用符号$可以用在字母前面,如$A1,表示列绝对引用,复制公式时,列不会变化,行会变化,如B1=$A1,复制到C2,会变成=$A2

    绝对引用符号$可以用在数字前面,如A$1,表示行绝对引用,复制公式时,行不会变化,列会变化,如B1=A$1,复制到C2,会变成=B$1

    绝对引用符号$也可以在数字和字母前同时使用,如$A$1,表示行列都是绝对引用,复制公式时,行列都不会变化,如B1=$A$1,复制到C2,还是=$A$1

    大白话说的,希望能说清楚

    excel中的绝对引用怎么用

    A1是相用

    $A1绝对列是混合引用

    A$1绝对引用行是混合引用

    $A$1绝对引用行和列是绝对引用

    $在谁的前面就绝对引用谁

    F4是在四种引用间相互转换的快捷键(在编辑栏输入公式时按下F4功能键可进行切换)

    A1(相对引用)在下拉拖动引用时,会变成引用A2,A3,A4...,右拉拖动时引用变成B1,C1,D1....

    A$1(混合引用)当你下拉复制时想保证引用的只是A1单元格时,A1就要加$符号,成A$1,这样在下拉时能保证对A列第一行的相对引用(即保持行号在引用时不产生变动)

    $A1(混合引用)当你右拉复制时想保证引用的只是A1单元格时,A1就要加$符号,成$A1,这样在右拉时能保证对A列第一行的相对引用(即保持列标在引用时不产生变动)

    $A$1(绝对引用)当你在下拉和右拉复制时想保证引用的只是A1单元格时,A1就要加$符号,成$A$1,这样在下拉和右拉时能保证对A列第一行的绝对引用(即保持行号列标在引用时不产生变动)

    相对引用、绝对引用和混合引用是指在公式中使用单元格或单元格区域的地址时,当将公式向旁边复制时,地址是如何变化的。

    具体情况举例说明:

    1、相对引用,复制公式时地址跟着发生变化,如C1单元格有公式:=A1 B1

    当将公式复制到C2单元格时变为:=A2 B2

    当将公式复制到D1单元格时变为:=B1 C1

    2、绝对引用,复制公式时地址不会跟着发生变化,如C1单元格有公式:=$A$1 $B$1

    当将公式复制到C2单元格时仍为:=$A$1 $B$1

    当将公式复制到D1单元格时仍为:=$A$1 $B$1

    3、混合引用,复制公式时地址的部分内容跟着发生变化,如C1单元格有公式:=$A1 B$1

    当将公式复制到C2单元格时变为:=$A2 B$1

    当将公式复制到D1单元格时变为:=$A1 C$1

    规律:加上了绝对地址符“$”的列标和行号为绝对地址,在公式向旁边复制时不会发生变化,没有加上绝对地址符号的列标和行号为相对地址,在公式向旁边复制时会跟着发生变化。混合引用时部分地址发生变化。

    注意:工作薄和工作表都是绝对引用,没有相对引用。

    技巧:在输入单元格地址后可以按F4键切换“绝对引用”、“混合引用”和“相对引用”状态。

    Excel中绝对引用是怎么用的?

    在你复制公式时,如果你需要被引用的单元格或单元格区域不会因公式拉动变化而变化,就要用到绝对引用或混合引用,在输入时按F4键可快速切换。

    展开全文
  • 1.HTML绝对路径怎么写比如你要在网页上显示一张图片,这张图片在你计算机D盘下的images这个文件夹下,那就这样写2.HTML相对路径怎么写你用法没有错误,你错就错在斜杠上你应该用正斜杠(/)而不是用反斜杠(\)....

    1.HTML绝对路径怎么写

    比如你要在网页上显示一张图片,这张图片在你计算机D盘下的images这个文件夹下,那就这样写

    2.HTML相对路径怎么写

    你用法没有错误,你错就错在斜杠上你应该用正斜杠(/)而不是用反斜杠(\). 在html里面引用外部image,或者html都是./这样写的。

    例如A,B是2个页面并且在同一个目录下。你要在B中点击时候跳转到A页面你就要这样写 如果A在B的上级目录下你要在B中点击跳转到A你就要这样写了,此时2个点就定位到了B的上级目录,也就是和A同一个目录了,这就是相对定位。

    具体代码看下图 扩展资料: 比如html中想使用标签来引入一个图片,那图片的引用src属性就涉及到一个路径问题。 相对路径指的是什么呢?指的就是相对于当前资源(当前资源现在指的就是html文件的位置)所在目录的位置。

    1.比如一个文件夹叫hello 里面的文件一个叫demo.html 另一个叫2.jpg 则在demo.html中引用2.jpg文件时就可以直接写,因为2.jpg现在相对于demo.html(当前资源)所在的目录hello,是直接在文件夹中的,所以正确。 2、当不在一个目录下时,怎么办?比如此时有了另一个文件夹world与hello文件夹并列,2.jpg此时位于world文件夹中,此时该如何引用呢? 答案: ../可以返回上一级目录,需要返回几级目录就写几个../ 此时可以写作即可。

    3.html5 绝对路径怎么写 "写

    你这里说的绝对路径是指绝对网站吧。

    不管是HTML5还是HTML4,绝对路径和相对路径概念都是一样的。绝对路径就是这样:?entry=qb_ihome_tag;相对路径就是这样子写:/question/2057964562297602747.html?entry=qb_ihome_tag,区别就在于绝对路径是带上域名的完整网址,相对路径是不带域名的。通常相对路径在站内使用,才能保证访问不出错。

    4.html绝对路径跟相对路径怎么用

    HTML相对路径和绝对路径HTML初学者会经常遇到这样一个问题,如何正确引用一个文件。

    比如,怎样在一个HTML网页中引用另外一个HTML网页作为超链接(hyperlink)?怎样在一个网页中插入一张图片?如果你在引用文件时(如加入超链接,或者插入图片等),使用了错误的文件路径,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等)。为了避免这些错误,正确地引用文件,我们需要学习一下HTML路径。

    HTML有2种路径的写法:相对路径和绝对路径。HTML相对路径(Relative Path)同一个目录的文件引用如果源文件和引用文件在同一个目录里,直接写引用文件名即可。

    我们现在建一个源文件info.html,在info.html里要引用index.html文件作为超链接。假设info.html路径是:c:\Inetpub\,并申请了虚拟主机,你的虚拟主机提供商会给你一个目录,比如www,这个www就是你网站的根目录。假设你在www根目录下放了一个文件index.html,这个文件的绝对路径就是: _tutorials,然后在该目录下放了一个文件index.html,这个文件的绝对路径就是_tutorials/index.html。

    5.web中html中的相对路径和绝对路径怎么找

    路径是指文件在服务器中的存储位置。我们在使用计算机时要找到所需的文件时就必须知道文件的绝对路径,例如,只要看到这个路径d:/web/logo.gif,我们就知道logo.gif文件是在d盘的web目录下。类似于这样完整的描述文件位置的路径就是绝对路径。

    绝对路径还有一种表示方法就是以服务器命名开始(如在本机中,看一下tijiao.html的源码:

    action写的是path,那么,提交后,就会把链接中的tijiao.html替换为path变为里的相对路径与绝对路径怎么分的

    绝对路径:是从盘符开始的路径,形如

    C:\windows\system32\cmd.exe

    相对路径:是从当前路径开始的路径,假如当前路径为C:\windows

    要描述上述路径,只需输入

    system32\cmd.exe

    实际上,严格的相对路径写法应为

    .\system32\cmd.exe

    其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。

    假如当前路径为c:\program files

    要调用上述命令,则需要输入

    ..\windows\system32\cmd.exe

    7.如何正确学习HTML的相对路径和绝对路径

    路径的作用在于指明一个文件或目录在文件系统中的位置,有两种表示方式:相对路径和绝对路径。一般情况下,哪种方式能够更快速的定位,我们就选择哪种路径。

    相对路径:文件或目录相对于当前工作目录的位置。例如:路径“soft01/workspace”表示当前目录下的soft01目录下的workspace;有两个较特殊的相对路径:“.”表示当前目录,“..”表示上一级目录。

    绝对路径:文件或目录相对于根目录的位置,绝对路径都从“/”开始。例如:”/home/soft01”,表示根目录下的home目录下的soft01。

    再举一个生活中的例子,如何去家乐福?以当前位置为基点,出教室门,下电梯到1楼,出大门右转直行约300米,右侧即到,此为相对路径。固定以龙泽为基点,龙泽坐地铁,大钟寺站下,出门直行约1000米,左侧即到,此为绝对路径。

    8.HTML中怎么把图片的绝对路径改成相对路径

    修改目录include下的文件extend.func.php,在最后面添加一个函数方法

    function replaceurl($newurl) { $newurl=str_replace('src="/uploads/allimg/','src="http://你的域名/uploads/allimg/',$newurl); return $newurl; } 另外调用文章正文内容的标签{dede:field.body/} 需要改成: {dede:field.body function='replaceurl(@me)'/} 此方法对解决二级域名图片不显示一样有效

    700b50e4be30276a

    转载请注明出处育才学习网 » html绝对路径修改为相对路径

    展开全文
  • 首先先把身份说了,显得专业,本人是中国移动通信集团四川有限公司成都分公司全业务综合调度...Q:为什么运营商的光纤满了就不能安装了? A:简单说就是为了保证用户的使用体验即用户感知,遂做出限制,以下是具体原因

    首先先把身份说了,显得专业,本人是中国移动通信集团四川有限公司成都分公司全业务综合调度支撑中心职员,目前负责家庭宽带的资源管理与固网数据制作与维护,对GPON有充分的了解,曾任职于中国移动某分公司自建他营厅(就是那个仅次于10086口中主厅的营业厅),曾任职于10086(市级客服),某分公司固网宽带安装与维护人员等其他工作,对中国移动也有充分认知(不知道为什么有股怨念)。

    首先先把问题提出来

    Q:为什么运营商的光纤满了就不能安装了?

    A: 简单说就是为了保证用户的使用体验即用户感知,遂做出限制,以下是具体原因

    首先先要说的是olt的单个业务板(如图一所示)

    业务板的单个出口根据四川移动的资源管理中心(下称资管),四川移动网络数据管理平台(下称网管数据)的业务规范要求,单个GPON网络业务板的单个槽位(下称pon口)的最大用户数量为64户,即单个pon口从资源管理平台的角度来看就只能下挂64个光猫

    注意!这边有第一个重要的知识点!

    移机或者固网销户有一定的可能性不会在资管平台留下记录,即资管不会认为你在该范围已经不用了,具体导致的原因,因不在我的业务范围里面,这边不做解释。

    Q:为什么我看到分光器里面还有口子,为什么运营商要说不能安装?

    A:这个就要提到资管了,首先说一下,我是中国移动四川分公司全业务综合调度支撑中心员工,曾担任资管这个职位,遂具备一定的专业认知(喷我先考虑一下,你的知识储备有没有我丰富再喷喔),资管系统会跟营业厅的业务办理系统 [1](下称CRM系统)产生联动,即判断该覆盖 [2]区域是否可以安装 [3]。所以会导致营业厅告诉用户这个覆盖 [2]暂时无法安装,但装维又在现场核实二级分光器 [4]有空闲端口但无法安装,原因就是资管系统认为现在空闲的口子所属的该用户仍在使用(虽然已经无法在该范围内使用了)。解决办法是做 资源清查(这个是重点必须要单独解释一下)

    资源清查是指对单个或多个二级分光器(下称二分或分光器)的实际使用的用户进行核查,对未使用!重点在未使用上面,即如果长期未使用宽带可能会被运营商临时性清退即运营商可能回认为你已经不再使用了,就算你后期要用这个也需要资管调整数据信息。这里牵扯到一个问题就是如果分光器满了对于原本归属于该分光器的沉默用户该怎么处理?,一般都是协调其他操作使用户恢复使用,并不影响用户的使用。综上所述资源清查一般不做,因为极有可能后期会引发用户感知问题,导致沉默用户(即长期未使用的客户可能后期要使用,但做了资源清查又会使他后期无法直接使用[5]),但他的确是处理系统无端口现场有端口的解决办法之一。综上所述解决这个问题的办法也是做资源清查或者扩容

    Q:为什么我在营业厅成功预约的宽带,但是师傅过来说端口满了不能安装了呢

    A:这个也跟 资管有关系, 资管系统判断该覆盖是否可以安装的主要因素是该分光器的剩余端口数是否为“0”,0是一个数字,这意味着该条覆盖 [2]暂时无法再安装了,问题来了如果 装维乱操作势必就会导致资管错乱!这个就是某些“ 专业人士”的 改同pon口数据,的确你可以安装,但是结果就是你有可能会被 资源清查(因为你的安装地址并不是这个覆盖 [2] 自然你并不属于这个地方的使用),所以由于“ 专业人士和装维的共同努力下”终于 数据乱了,你以为你是正常安装,确实都是 违规操作,到时候 资源清查 看你怎么办,这种时候不妨问一下“ 专业人士”他应该会告诉你工信部投诉什么的。 综上所述解决这个问题的办法也是做资源清查或者扩容

    Q:为什么箱子就在眼前安装师傅却说不能安装

    A:这个要看现在情况,因为皮线(就是白色的光纤线,如下图所示)
    皮线,一般包含1-2根纤芯和2根金属/凯夫拉加强筋组成
    这种线是室内使用的,如果在室外使用,由于风化的原因很容易断裂,又因纤包含金属材料,掉落很容易引起伤害发生,所以是绝对禁止架空布线的,再说了跨单元也要牵扯到资源清查的问题,所以,真的不能跨单元啊。不能跨单元,那能跨楼层吗?是这样的一般只能跨5层楼,多了如果出现断纤将很难被修复(针对有弱电井小区),老小区一般是没有暗线的,所以很容易判断故障点,但是新小区有弱电井而且都是封闭的,很难判断故障点,而且跨楼层得穿线才行,线一般开发商都是穿好了的,师傅可以现场找到,跨楼层,线就要重新布,但是弱电井的管道是封闭的呀。

    Q:什么是扩容?为什么扩容那么慢?很复杂吗?

    A:扩容即根据资管上面的一级分光器进行判断是否可以为二分加装光纤所使用的分光器,判断是否可以加装会涉及到 二分归属的光交箱的备用纤是否在一分的光交箱里面有纤以及一分是否还有空闲端口可以使用。假如都满足要求,将进行“ 新增”扩容具体流程由各分公司组织工程队进行完成,由资管中心负责开启使用。

    为什么扩容那么慢,这个问题其实并不在我的业务范围里面。一根二分的光纤需要使用,需要先让工程队施工,使其具备光信号(无数据,仅验收光衰是否合格,回波损耗是否合格,光功率是否合格),再由资管中心负责资源规划,网管中心数据制作与网开,再由资管中心负责业务开通,流程走完,营业厅就可以派单出来,师傅上门安装了。这套流程会涉及到很多部门的协调,假如其中一个部门卡壳,后面的操作将无法执行,自然需要很长的时间才能正常流转。

    这个流程对于用户来说是无感的,虽然并不复杂但是由于这些操作营业厅,装维很难介入其中自然无法向用户解释施工时间,用户等久了,自然就不高兴咯

    资源清查跟扩容有的时候必须要选一个满足用户,但是这2个流程其实时间都挺长的,集团更多时候是需要去权衡利弊的,如果为了满足某一个用户而去施工的话,必然会带来成本的上升,运营商并不能像国家电网一样为了某一户去单独花高昂的施工费用去布线,羊毛出在羊身上,羊的成本上涨了,羊毛的售价也会上涨,但是没有人希望羊毛上涨,但是为什么总有人希望羊能够做的更好呢,羊没有办法满足每一个人的要求,但是总有人会拿什么什么部,什么什么局,什么什么投诉,拿来说话,但是羊不能满足用户的那些要求跟那些部门有关系吗?

    从中立的角度上面来说,交易是双方本着公平自愿的原则进行交易的,并不能因为什么什么局,什么什么投诉就强制要求提供服务,因为这样对方是否也可以强制给你提供某些“服务”呢(指你不知情的业务开通),更多的时候应该保持一种客观的角度去处理问题,知乎上面我看到很多人通过工信部投诉,成功的安装上了宽带,但是运营商真的是心甘情愿的安装的吗?不安装要投诉,安装了又因为质量不合格(违规安装了真的不能保证质量啊)又要投诉,很难权衡这个问题呀,你必须想办法给我安装!而且必须让我满意!不然我就投诉!,这句话我在很多渠道都有听到过,正常的流程自然能保证质量,但是保证质量带来的应该是制度和规则的约束,而不是通过为了解决投诉所产生的临时方案而带来新的麻烦,这样只是掩耳盗铃罢了。

    至此我的文章应该快结束了,未来我会添加或新开文章来解释一些其他的知识。

    版无所权,随意转载 made by qwe

    参考

    1. ^基于四川移动业务支撑系统
    2. ^abcd覆盖是指以移动家庭宽带规划系统划分的单个业务区域,包含但不限于 室内:基于单元,楼层,栋数。室外:基于门牌号,现场查勘认定的区域内
    3. ^安装包含新装,移机,FTTB改FTTH,物理割接
    4. ^二级分光器是指FTTH的终端光交箱也是FTTH里面的倒数第二环
    5. ^这个要运营商修改资管数据才能用,其实只是会耽误时间而已,但还是有一定的风险
    展开全文
  • Producer发送消息阶段发送消息阶段涉及到Producer到broker的网络通信,因此丢失消息的几率一定会有,那RocketMQ在此阶段用了哪些手段保证消息丢失了(或者说降低丢失的可能性)。手段一:提供SYNC的发送消息方式,...

    1、消息整体处理过程

    3a8c8a35a2fb4ad477592e0cdbbf1f0b.png

    这里我们将消息的整体处理阶段分为3个阶段进行分析:

    Producer发送消息阶段。

    Broker处理消息阶段。

    Consumer消费消息阶段。

    Producer发送消息阶段

    发送消息阶段涉及到Producer到broker的网络通信,因此丢失消息的几率一定会有,那RocketMQ在此阶段用了哪些手段保证消息不丢失了(或者说降低丢失的可能性)。

    手段一:提供SYNC的发送消息方式,等待broker处理结果。

    RocketMQ提供了3种发送消息方式,分别是:

    同步发送:Producer 向 broker 发送消息,阻塞当前线程等待 broker 响应 发送结果。

    异步发送:Producer 首先构建一个向 broker 发送消息的任务,把该任务提交给线程池,等执行完该任务时,回调用户自定义的回调函数,执行处理结果。

    Oneway发送:Oneway 方式只负责发送请求,不等待应答,Producer只负责把请求发出去,而不处理响应结果。

    我们在调用producer.send方法时,不指定回调方法,则默认采用同步发送消息的方式,这也是丢失几率最小的一种发送方式。

    手段二:发送消息如果失败或者超时,则重新发送。

    发送重试源码如下,本质其实就是一个for循环,当发送消息发生异常的时候重新循环发送。默认重试3次,重试次数可以通过producer指定。

    手段三:broker提供多master模式,即使某台broker宕机了,保证消息可以投递到另外一台正常的broker上。

    如果broker只有一个节点,则broker宕机了,即使producer有重试机制,也没用,因此利用多主模式,当某台broker宕机了,换一台broker进行投递。

    总结

    producer消息发送方式虽然有3种,但为了减小丢失消息的可能性尽量采用同步的发送方式,同步等待发送结果,利用同步发送+重试机制+多个master节点,尽可能减小消息丢失的可能性。

    Broker处理消息阶段

    手段四:提供同步刷盘的策略

    public enum FlushDiskType {

    SYNC_FLUSH, //同步刷盘

    ASYNC_FLUSH//异步刷盘(默认)

    }

    我们知道,当消息投递到broker之后,会先存到page cache,然后根据broker设置的刷盘策略是否立即刷盘,也就是如果刷盘策略为异步,broker并不会等待消息落盘就会返回producer成功,也就是说当broker所在的服务器突然宕机,则会丢失部分页的消息。

    手段五:提供主从模式,同时主从支持同步双写

    即使broker设置了同步刷盘,如果主broker磁盘损坏,也是会导致消息丢失。

    因此可以给broker指定slave,同时设置master为SYNC_MASTER,然后将slave设置为同步刷盘策略。

    此模式下,producer每发送一条消息,都会等消息投递到master和slave都落盘成功了,broker才会当作消息投递成功,保证休息不丢失。

    总结

    在broker端,消息丢失的可能性主要在于刷盘策略和同步机制。

    RocketMQ默认broker的刷盘策略为异步刷盘,如果有主从,同步策略也默认的是异步同步,这样子可以提高broker处理消息的效率,但是会有丢失的可能性。因此可以通过同步刷盘策略+同步slave策略+主从的方式解决丢失消息的可能。

    Consumer消费消息阶段

    手段六:consumer默认提供的是At least Once机制

    从producer投递消息到broker,即使前面这些过程保证了消息正常持久化,但如果consumer消费消息没有消费到也不能理解为消息绝对的可靠。因此RockerMQ默认提供了At least Once机制保证消息可靠消费。

    何为At least Once?

    Consumer先pull 消息到本地,消费完成后,才向服务器返回ack。

    通常消费消息的ack机制一般分为两种思路:

    1、先提交后消费;

    2、先消费,消费成功后再提交;

    思路一可以解决重复消费的问题但是会丢失消息,因此Rocketmq默认实现的是思路二,由各自consumer业务方保证幂等来解决重复消费问题。

    手段七:消费消息重试机制

    当消费消息失败了,如果不提供重试消息的能力,则也不能算完全的可靠消费,因此RocketMQ本身提供了重新消费消息的能力。

    总结

    consumer端要保证消费消息的可靠性,主要通过At least Once+消费重试机制保证。

    2、如何保证消息不被重复消费

    回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。

    首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。

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

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

    有这么个场景。数据 1/2/3 依次进入 kafka,kafka 会给这三条数据每条分配一个 offset,代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 kafka 去消费的时候,也是按照这个顺序去消费。假如当消费者消费了 offset=153 的这条数据,刚准备去提交 offset 到 zookeeper,此时消费者进程被重启了。那么此时消费过的数据 1/2 的 offset 并没有提交,kafka 也就不知道你已经消费了 offset=153 这条数据。那么重启之后,消费者会找 kafka 说,嘿,哥儿们,你给我接着把上次我消费到的那个地方后面的数据继续给我传递过来。由于之前的 offset 没有提交成功,那么数据 1/2 会再次传过来,如果此时消费者没有去重的话,那么就会导致重复消费。

    919af1fc706dfd8c441afca8ed169083.png

    如果消费者干的事儿是拿一条数据就往数据库里写一条,会导致说,你可能就把数据 1/2 在数据库里插入了 2 次,那么数据就错啦。

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

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

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

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

    所以第二个问题来了,怎么保证消息队列消费的幂等性?

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

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

    比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。

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

    比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。

    490c31bc72007fa04b07528fd54d7228.png

    展开全文
  • 发布时间:2016-02-02在游戏中,保证食物充足是生存的第一要务.新手玩家常常死在寻找食物的路上,有了本篇中的MOD,吃翔将重获新生! 平衡版:http://pan.baidu.com/share/link?shareid=4 ...标签:发布时间:2016-03-03...
  • 在开发的过程中,http协议是主流的交互协议,抓包是必可少的调试方式,如果你想抓取pc端或者app的http协议包, 提示网络异常或者 死活走代理,...接下来,我们来探讨下,同样都是http请求,app的包,为什么到。
  • 加锁就一定能保证线程安全吗?

    多人点赞 热门讨论 2021-05-17 17:40:03
    也就只有面试才会问出这种问题,这个问题不能简单回答是否,所有的面试问题都不能简单的回答是否,而应该讲清楚其中的原委,才能达到面试的目的。 回答这个问题首先要搞清楚什么才是线程安全的呢 在JMM内存模型...
  • 绝对PS技术干货,不保证适用所有情况。通常一些非超清的监控画面夜间拍摄到嫌疑人的车辆经过,但由于像素的问题再加上夜间的环境下看清车牌号对办案人员或者受害者来说很是头疼。今天弄个教程教一下不会Photoshop...
  • 那么这篇文章就会讲解 key 的作用以及为什么最好不要使用 index 作为 key 的属性值。 key 的作用 Vue 中使用虚拟 dom 且根据 diff 算法进行新旧 DOM 对比,从而更新真实 dom ,key 是虚拟 DOM 对象的唯一标识, 在 ...
  • Buffer Pool整体机制在MySQL进行更新操作的时候会先更新Buffer Pool中的缓存页之后,必须写一条redo log,这样才能记录下对数据库的修改,这样的话也可以保证我们事务提交之后,如果Buffer Pool中脏页还没有刷到磁盘...
  • 今天我们就来探讨一下这两者的区别,以及我们又该在什么时候进行相对或者绝对引用。相对OR绝对,认识引用在Excel函数中少不了需要对行列的引用,相对引用是指在引用时,引用的行列会随着位置不同而发生变化。比如...
  • 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,比如,你的Perl 程序是存放在 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin就是cgi-bin目录的绝对路径二、路径使用不管你是新手还是老鸟...
  • (1)、Producer 发送消息阶段涉及到Broker的网络通信,因此丢失消息的几率一定会有,那RocketMq在此阶段用了哪些手段保证消息丢失呢? 手段一:提供SYNC的发送消息方式,等待broker处理结果 RocketMq提供了3种...
  • RabbitMq 如何保证消息丢失

    千次阅读 2021-03-05 23:47:23
    讲真的,只要你简历上写的有rabbitmq,面试一定会问,如何保证消息丢失。当然在工作中,也很需要。下面是我使用中以及面试中,总结的。 措施 从3个层面去分析 我们使用消息队列,一定会涉及三个模型。 那么就要从...
  • 您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&...本站不保证该用户上传的文档完整性,预览、比对内容而直接下载产生的反悔问题本站予受理。2.该文档所...
  • java环境变量为什么要配置path和classpath详细解答当时初学java时只是关心如何做,现在回过头来研究为什么这个问题,先从最开始环境变量配置开始吧!为何配置path:在cmd命令中输入一个指令时先在当前文件目录下查找...
  • serverId对应的服务器挂掉后,强制定向到其他健康的服务器 maxconn 2000 ## 前端的最大并发连接数(默认2000) ### 其不能用于backend区段,对于大型站点来说,可以尽可能提高此值以便让haproxy管理连接队列, ### ...
  • 关于MQ,有一个问题是无法避免的,就是怎么保证消息丢失,这个问题是所有MQ都需要面对的一个共性问题。大致的解决思路都是一致的,首先要找到哪些环节会有丢消息的可能,来看一个MQ的通用架构    ...
  • 这样时间复杂度则为0(N),这样就保证了我们数组的连续性,同理删除的话如图: 数组后面数据的下标,都要还原成之前插入前的下标,后面的节点都要改变,这样我们可以看出,这就是数组,删除,插入 为什么这么慢!...
  • 之前在看一些模拟面试的视频时,面试官问到:“List如何保证线程...这个问题其实可以从《深入理解Java虚拟机》这本书中找到答案绝对线程安全绝对的线程安全能够完全满足Brian Goetz给出的线程安全的定义,这个定义其...
  • 在分布式场景下,消息的有序性是很难保证的,为什么这么说呢? 我们来拆解一下其中的点 分布式的时钟问题 有序性可以分为业务上的有序和时间上的有序,先看一下时钟上的有序. 在分布式环境下,消息的生产者、...
  • 提醒各位商家小主在发布商品时一定要注意商品的标题、详情中千万不能出现这些独特的字眼,具体如下: 1、最系列 拼多多商品描述中,许多店家更好的凸显商品的特点,很多时候都会采用“最”这个词,例如:最高档、最...
  • 但是这里面很多的解答没有回答到点子上,不能真正回答这个问题。我决定写篇文章正式回答一下这个问题,消除读者的各种疑虑。 这个问题,我认为需要从2个层面回答 第一个层次是为什么要拷贝,可不可以不拷贝? ...
  • RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 最初是由阿里开源的分布式消息引擎,由于后面维护问题,提交给Apache下的顶级维护项目之一。现在最新...
  • Kafka如何保证消息的可靠性?

    千次阅读 2020-12-18 15:29:02
    也就是说一个topic中的消息是放在多个partition上的,可是当一台机器宕机后就会导致部分消息可消费吗?所以Kafka还做了多副本冗余,每个Partition都可以搞一个副本放在别的机器上,这样某台机器宕机,只不过是...
  • :))最近我一直在考虑很多,但是不能提出一个好的理由 。 枚举常量是隐式静态的和最终的。 枚举的意思是-"我可以接受存在于我体内的常量之一的值"。 为什么要让Enum具有空值? 为什么不将Enum的值隐式默认为Enum....
  • 疑难杂症:系统雪崩到底是为什么

    千次阅读 多人点赞 2021-03-27 14:23:13
    这周二笔者参加了由CSDN举办的“2021年创作扶持计划”宣讲会,笔者完全被副总裁于邦旭的激情...还是举“2021年创作扶持计划”的当中的例子,在直播时有网友提问说CSDN的网站为什么总爱崩溃呢?于总当时就提到提到使用S
  • 当我们把自己从泥沼般的 2020拔出来的时候,音视频行业在 2021 也悄然发生了变化。在所有振奋人心的转变中,我们选取了最反映当下并影响未来的技术趋势,并据此策划了LiveVide...
  • 作者:座头鲸右边的蕊妮 ...来源:知乎 ...你要有不断反思进取的能力 - 所有人都从你这看到进化的希望。 有了上述三点,你离成为管理者就太远了。而这三点,分别对应我下面讲的:闭环、Think B..
  • 软件测试的前辈,你能不能给我一点建议?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 300,908
精华内容 120,363
关键字:

为什么不能提供绝对保证