Blog

削峰填谷

Content #

为什么要使用消息引擎系统?为什么系统 A 不能直接发送消息给系统 B,中间还要隔一个消息引擎呢?

答案就是“削峰填谷”。

所谓的“削峰填谷”就是指缓冲上下游瞬时突发流量,使其更平滑。特别是对于那种发送能力很强的上游系统,如果没有消息引擎的保护,“脆弱”的下游系统可能会直接被压垮导致全链路服务“雪崩”。但是,一旦有了消息引擎,它能够有效地对抗上游的流量冲击,真正做到将上游的“峰”填满到“谷”中,避免了流量的震荡。消息引擎系统的另一大好处在于发送方和接收方的松耦合,这也在一定程度上简化了应用的开发,减少了系统间不必要的交互。

Viewpoints #

From #

01 | 消息引擎系统ABC-Kafka 核心技术与实战-极客时间

Select语句的执行顺序

Content #

1、from子句组装来自不同数据源的数据; 2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组; 4、使用聚集函数进行计算; 5、使用having子句筛选分组; 6、计算所有的表达式; 7、使用order by对结果集进行排序。 8、执行select。

From #

使用NULL的注意点(SQL)

Content #

  1. NULL与别的值进行+-*/等计算操作(包括在大多数函数中使用NULL)后,结果是NULL(标量表达式)。NULL与别的值进行=、 >、<等比较操作后,结果是Unknown(断言)。
  2. 在where/on/having和if/case when中,只有True才使条件成立(即Unknown当作False来处理)。
  3. 包含外键约束和Check约束的字段允许NULL(即约束只当条件为False时出错,Unknown是不管的)。
  4. 包含唯一约束(unique index)的字段只允许一个NULL的行,再插入或更新该字段为NULL的行会报字段重复的错误。
  5. GROUP BY时,所有NULL被视为一组。
  6. ORDER BY时,所有NULL排在一起,但NULL排在非空值的前面(如SQL Server)还是后面(如Oracle),SQL标准未规定。
  7. 聚集函数(SUM/AVG/MAX/MIN/COUNT)忽略NULL的行。
  8. declare的变量,在未赋值之前为NULL。
  9. 与NULL处理相关的运算符和函数
    • IS NULL/IS NOT NULL:用这两个运算符来判断一个值是否为NULL,而不是=或< >。
    • ISNULL/COALESCE:取第一个非空值(注意两个函数的数据类型转换规则不同)。
    • NULLIF(a,b):等价于CASE WHEN a = b THEN NULL ELSE a END。

From #

Isolation Level

Content #

Isolation Level Lost Update Uncommitted Data Inconsistent Data Phantom Insert
SERIALIZABLE N N N N
REPEATABLE READ N N N Y
READ COMMITTED N N Y Y
READ UNCOMMITTED N Y Y Y

From #

cook:Latex

Tips #

设置中文段首不缩进 #

在preamble中添加如下代码:

\setlength{\parindent}{0pt}

临时禁用ctexart的段前缩进 #

中文文档类ctexart中每段都是缩进的,临时禁用缩进,可在段前使用

\noindent

西文章节启用首段缩进 #

使用宏包indentfirst.

和恐怖分子萨巴亚的谈判

Content #

为了打破现在的僵局,我们需要通过某种方式,用萨巴亚自己的话来重新定位他,以便消除障碍。我们需要他说出“你说得对”。

那时候,我还不敢肯定这会给我们带来什么样的突破,我只知道我们要相信流程。我写了一份两页纸的文件,指导班吉改变策略。我们将使用主动倾听领域的所有技巧:

  1. 有效的停顿

沉默的力量是强大的。我告诉班吉在强调的时候使用停顿,鼓励萨巴亚保持对话直到最后,就像走出沼泽一样,把他的情感从对话中抽出来。

  1. 最低限度的鼓励

除了沉默之外,我们指导他使用简单的词语,比如“是”“好的”“了解了”等有效地传递信息,表明班吉正在全身心地关注萨巴亚和他说的话。

  1. 重复

不要与萨巴亚争吵关于把席林和“战争损失”区分的事,班吉需要倾听,然后把萨巴亚的话重复回去。

  1. 标注

班吉应该让萨巴亚感觉到他的感受被辨认出来。“这一切都是悲剧性的不公平,我现在可以看出为什么你这么恼怒。”

  1. 释义

班吉要用自己的语言重复萨巴亚说的话。我们告诉他,这样做足以显示你真的理解他的关切,而不是不走心的鹦鹉学舌。

  1. 总结

一个好的总结包括重新组织对方话语里的含义,加上对言语意义之下情绪的认知(释义+标注=总结)。我们告诉班吉,他需要倾听和重复“阿布·萨巴亚的世界”。他需要完完整整地总结萨巴亚提出的关于战争损失、捕鱼权利和500年压迫的荒谬说法。一旦他完全做到这些,萨巴亚唯一的反应,也是所有人对一个优秀总结的反应,都会是“你说得对”。

From #

《掌控谈话》 克里斯·沃斯 塔尔·拉兹

和班吉的谈判

Content #

在谈判中最动听的一句话其实是“你说得对”(That’s right)。

星期天晚上,我们坐在美国大使的夏季别墅图书馆里,继续研究谈判策略。我向班吉解释,即便是对像萨巴亚这样的危险敌对分子,建立一种和谐的工作关系也是有价值的。我看到他脸上露出了愤怒的表情,我意识到我也需要和班吉谈判。

“你痛恨萨巴亚,不是吗?”我说,然后开始用“标注”的方法。

班吉开始向我倾诉。“我告诉你,我恨透他了!”他说,“他犯下了杀人和奸淫的罪行。我们向他的藏匿地点发射迫击炮的时候,他在我们的无线电频道里说‘这些迫击炮现在听来就像是音乐’。还有一次,他的声音又出现在我们的无线电里,他当时站在我下属的尸体上庆祝。”

班吉脱口而出的这些话与“你说得对”有同等意义,因为他承认了自己的愤怒,我看他慢慢控制住了怒火并平静下来。虽然他之前表现亮眼,但从这时候开始,班吉已经变成了一个超级明星,他已经成长为一名真正有天赋的谈判专家。

我和班吉之间的这场“谈判”与我和其他同事之间的战略分歧谈判没有区别。在你说服他们看一看你要完成的目标之前,你必须说一些让他们能回答“你说得对”的事情。“你说得对”这个突破一般不会发生在谈判的开始阶段。它发生的时候,对方是看不见的,然后他们就会拥护你所说的话。对他们而言,这是一种微妙的顿悟。

From #

《掌控谈话》 克里斯·沃斯 塔尔·拉兹

引导说不

Content #

有时候,如果你在和一个走神的人说话,唯一能让他回过神的办法就是唱反调,让他们说“不”。这样做的最好方式是故意错误地标注对方的情感或者欲望。你说一些自己明知是错误的东西,比如在对方想要留下来时,故意说“似乎你真的决心放弃这份工作”。这样就逼得他们仔细听,并在说“不”纠正你的时候获得舒适感。

另一种在谈判中迫使对方说“不”的方法是,询问对方什么是他们不想要的。你可以说:“让我们一起讨论一下你在什么情况下会说‘不’。”人们这时会很自然地说“不”,因为这让他们感觉到了自我保护。一旦你成功地让他们说出了“不”,人们就会更开诚布公地提出新的选项和想法。

“不”同样也是一种探测器,就像以前煤矿里用来测试氧气含量的金丝雀。如果你竭尽所能,对方还是不说“不”,那么你面对的这个人可能是不愿做决定的,或者非常糊涂,或者另有所图。在这种情况下,你必须结束谈判转身离去。你可以这样想:没有“不”就不会前进。

我们很懂礼貌,我们不可否认的是,在日常生活和工作中要最大限度地避免摩擦,但当我们把友善当作润滑剂的时候,变成是在榨取它的意义。一个微笑和点头可能表示“让我离开这里”的意思,也同样可以表示“很高兴见到你”的意思。

这对优秀的谈判者而言是致命的,他们的力量来自对对手处境的理解,以及提取对手的期待和需求信息,提取这些信息意味着让对方感到安全和有控制力。听起来可能有些矛盾,但做到这一点的方法确实是要让对方不同意,从而限制他们的辩解,通过说清楚他们不同意的东西,反过来界定他们的期待。

引导说“不”能剥去“是”的虚伪外衣,能让你了解真正的价值所在。在整个过程中,请记住以下有用的要点:

改变努力让别人说“是”的习惯。推动对方说“是”让人产生抵触。在别人推动我们说“是”的过程中,由于我们对听到“是”感觉喜爱,让我们无法看到自己的防御性感受。

“不”并不等同于失败。我们以前以为“不”是“是”的对立面,要不惜代价避免这个字的出现。但实际上,它经常意味着“稍等”或“我对此不满意”。要学会冷静地倾听对方说“不”,这并不是谈判的终结,而是起点。

让对方说“是”是谈判的最终目标,但不要在一开始就把它作为目标。在对话中过早地让他人说“是”(“史密斯先生,你爱喝水吗?”),会让对方产生警觉,并把你看作一个不值得信任的销售员。

说“不”让说话者感到安全和控制力,因此要激发对方说“不”。通过表达什么是不想要的,你的对手框定了他们的空间并对你有了信任,也愿意听你说话。这就是为什么“现在你不方便说话吧”总是比“你有几分钟时间和我聊一聊吗”的效果要好。

有时候,让对方听你说话或和你接触的唯一方法,就是强迫他们说“不”。这意味着故意地错误标注他们的情感和需求,或问一些明显荒谬的问题,比如“似乎你想让这个项目失败”,这样说对方只能进行否定的回答。

在他们自己的世界里谈判。能否说服对方并不与你有多聪明、多圆滑或多强硬有关,而要让对方相信你想要的解决方法是他们自己的想法。因此,不要用逻辑或者强硬的方法打击对方,而是问一些引向你设计目标方向的问题。其实这和你无关。

如果你的潜在商业伙伴忽视了你,请用一个简洁明了的“不”引导问题和他们联系,这个问题暗示他们,你将要退出了。“你们已经放弃这个项目了?”这一类的问题能产生奇迹般的效果。

From #

《掌控谈话》 克里斯·沃斯 塔尔·拉兹