首页 > 其他分享 >逻辑熔断的巧用

逻辑熔断的巧用

时间:2023-10-07 11:14:32浏览次数:46  
标签:逻辑 s3 s2 s1 tmux 熔断 && 巧用

巧用逻辑熔断

之前我应该写过一篇逻辑熔断的文章(但是没找到,可能不是发布在博客园的吧)。简单来说就是当 s1=false 的时候 s1 && s2 && s3 比为 false,不需要判断 s2, s3。当 s1true 的时候 s1 || s2 || s3 必为 true,同样不需要判断 s2, s3。在大多数编程语言中也是如此实现的。也就是说,当 s1=true 时哪怕 s1 s2 中包含令程序崩溃的语句对 s1 || s2 || s3 来说也不是问题——因为根本不会被执行,s1=false 时对 s1 && s2 &&s3 来说同样如此。

所以这里就衍生出两种用途:

  1. 选择一个执行
  2. 全部都要执行

下面以 shell 为例(其他语言也是可以的,不过没有这个直观,并且不少时候不建议你这么做)

选一个执行

tmux 是一个终端复用工具,在 tmux 环境下 tmux detach 可以退出 tmux 环境而不关闭 tmux,exit 则是退出并且关闭 tmux。不在 tmux 环境下的时候前者会报错,后者会退出当前终端。这时候就在 .bashrc 中加入一行 alias e='tmux detach || exit'e 命令实现当我处于 tmux 环境的时候退出但不关闭 tmux,当我不处于 tmux 环境的时候退出当前终端。这里就实现了一个命令,在不同场景下的两种用法。再举一个例子。tmux attach 可以进入你最后退出的 tmux 环境,tmux(不加任何参数)则可以新建一个 tmux 环境。那么 tmux attach || tmux 就可以实现当有一个 tmux 环境的时候就进入它,没有的时候就创建一个。

这里说的 “tmux 环境” 更准确来说应该叫 tmux 的 session,环境只是一种便于表述的说法,悉知。

全部都要执行

这个就很常见了,比如 mkdir tmp && cd tmp && touch README.MD && vim README.MD 就是先创建一个 tmp 目录,然后进入 tmp 目录,接着创建一个 README.MD 文件,最后使用 vim 打开这个文件。这个命令可以在前面任何一步失败的时候终止,不继续后续的执行。这个应该很常见了,不再过多列举。

注意事项

如前面所说,这里使用 shell 举例原因是其本身对此的贴合,而其他语言想要实现相同的效果除了麻烦一些之外,场景也需要考虑,不可乱用。就如同 switch 当中不使用 break 当然会在一些特殊的场景下有很好的作用,但不要为了这个作用特意使用 switch。尤其这里的逻辑熔断虽然大多数都是从左往右开始执行,但如果某天语言本身更改了这种顺序,你将很头疼。

标签:逻辑,s3,s2,s1,tmux,熔断,&&,巧用
From: https://www.cnblogs.com/ecila/p/17745716.html

相关文章

  • python:巧用return
    在return里写条件语句return0ifans==n+1elseans 参考力扣:长度最小的子数组classSolution:defminSubArrayLen(self,s:int,nums:List[int])->int:ifnotnums:return0n=len(nums)ans=n+......
  • 位运算分为位逻辑运算与移位运算(对应二进制位)
    位运算分为位逻辑运算与移位运算(对应二进制位): 注:在逻辑运算中,数学表示符于编程逻辑的对应关系为:∧表示与∨表示或¬表示非含义C++语言表示规则与运算a&b都为1时为1,反之为0。或运算a|b两个数其中一个为1就为1,反之为0。异或运算a^b两个数不同时结果为1,......
  • SAP ABAP 系统传输请求(Transport Request)导入到其他系统背后执行的逻辑
    在SAP系统中,当我们需要将一些更改从一个系统(例如开发系统)传输到另一个系统(例如测试系统)时,我们会使用TransportRequest。这是一种将配置、报告、表等从一个系统复制到另一个系统的机制。在我们的例子中,我们正在谈论的是一个Dynpro程序。Dynpro(动态程序)是SAP系统中的标准用......
  • Sentinel系列之流量控制及熔断降级示例
    关于Sentinel的介绍网上很多,不再复制粘贴。本文主要演示Sentinel的两个重点功能:流量控制和熔断降级。示例基于Sentinel1.8.6, 同时使用JMeter进行并发请求(Postman无法并发)。当然也可以通过main方法,但这样就无法重复触发,并且无法学习Sentinel与Spring框架的集成另外需要注意的......
  • P8815 [CSP-J 2022] 逻辑表达式
    Problem考察算法:后缀表达式计算、建表达式树、\(DFS\)。题目简述给你一个中缀表达式,其中只有\(\&\)和\(\mid\)两种运算。求:\(\&\)和\(\mid\)运算中的“最短路”次数各出现了多少次。最短路的定义为:在\(a\)\(\&\)\(b\)运算中,如果\(a=0\),那么整个表达式的计算......
  • 熔断、限流、降级 —— SpringCloud Alibaba Sentinel
    Sentinel简介Sentinel是阿里中间件团队开源的,面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性Sentinel提供了两个服务组件:Sentinel用来实现微服务系统中服务熔断......
  • ST方案一个MCU带动两个无刷电机驱动的原生逻辑
    TIM1TIM8两个高级定时器,设置TIM2为启动计数触发源,触发时钟同步,并且设置上,两者错开相。核心思路是错开电流采样和处理的时刻1/*disablemainTIMcountertoensure2*asynchronousstartbyTIM2trigger*/3LL_TIM_DisableCounter(TIMx);45LL_T......
  • 数理逻辑 (1) 命题逻辑
    命题表达式命题语言的字符集由和变量和命题运算符构成,由于\(\land,\lor,\leftrightarrow\)都能用\(\lnot,\to\)代替,故定义符号表:\[\Sigma:=\{(,),\lnot,\to,A_n|n\in\mathbbN\}\]其中\(A_n\)代表了可数个命题变量命题逻辑的有限符号串定义为:\[\Sigma^......
  • Harbor的逻辑备份与学习
    Harbor的逻辑备份与学习背景一直想处理一下一个有网络冲突的Harbor镜像服务器但是因为网络层自己水平一直是不是非常自信加上Harbor容器使用的compose的玩法,自己不敢直接处理.所以想着至少能够备份一下Harbor仓库内的镜像.冷备方式不用说了,想着处理一下逻辑备份.......
  • R语言非线性回归和广义线性模型:泊松回归、伽马回归、逻辑回归、Beta回归分析机动车事
    全文链接:https://tecdat.cn/?p=33781原文出处:拓端数据部落公众号我们使用广义线性模型(GeneralizedLinearModels,简称GLM)来研究客户的非正态数据,并探索非线性关系。GLM是一种灵活的统计模型,适用于各种数据类型和分布,包括二项分布、泊松分布和负二项分布等非正态分布。通过GLM,我......