Redis分布式锁进化史

近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中。

在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术

常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。

但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中

如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。

- 阅读剩余部分 -

来自:hsm_computer | 责编:乐乐

链接:cnblogs.com/JavaArchitect/p/10474448.html

1.png

图片来自网络

  正文  

我在面试 Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过。我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有没有放过自定义对象?而这个时候,候选人说放过,于是两个问题的回答就自相矛盾了。

最近问下来,这个问题普遍回答不大好,于是在本文里,就干脆从hash表讲起,讲述HashMap的存数据规则,由此大家就自然清楚上述问题的答案了。

1 通过Hash算法来了解HashMap对象的高效性

我们先复习数据结构里的一个知识点:在一个长度为n(假设是10000)的线性表(假设是ArrayList)里,存放着无序的数字;如果我们要找一个指定的数字,就不得不通过从头到尾依次遍历来查找,这样的平均查找次数是n除以2(这里是5000)。

我们再来观察Hash表(这里的Hash表纯粹是数据结构上的概念,和Java无关)。它的平均查找次数接近于1,代价相当小,关键是在Hash表里,存放在其中的数据和它的存储位置是用Hash函数关联的。

- 阅读剩余部分 -

软件变成遗留系统是一个常见的问题,本文就来看看遗留系统形成的十大原因。

1.jpeg

作者 | Martin F. Johansen

译者 | 弯月,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

通常,开发人员不希望在遗留系统上工作,因为这些系统都很复杂,使用落伍的技术,而且还有很多维护任务。遗留系统还会阻碍公司的发展,因为在引入客户和市场所需的新功能时,遗留系统势必会拖后腿。

遗留系统在刚出现时当然并不是遗留下来的。最初可能也是采用最新最先进的技术构建的,开发人员热切而又快速地开发了这个系统。然而,时至今日这个系统就变成了没有希望、过时、晦涩难懂和无法维护的系统。

那么这中间究竟发生了什么?在本文中,让我们来看看软件成为遗留系统的十大原因。

- 阅读剩余部分 -

正则表达式系列:
正则表达式1-提取手机号

  • 业务背景

上篇文章通过简单的正则表达式获得了客户系统的手机号,现在可能因为某些原因,要将文档分享给某些单位,但需要对手机号处理,隐藏某些位数的号码。
源文档:
1.png
需要生成的新文档:
2.png
你是否有种无从下手的感觉呢?别着急,我们一步步来。







- 阅读剩余部分 -