首次公开,GitHub点击破百万的分布式高可用算法小册被我扒下来了
创始人
2024-02-28 03:19:56
0

想成为分布式高手?那就先把协议和算法烂熟于心吧!这就不得不提到著名的——《分布式高可用算法》! 目前网上还没有开源版本,今天我就当一次“互联网雷锋” ,免费获取方式我放在文末了

作者介绍

江峰,教授级高工,中国电信集团云计算专业首席专家,中国计算机学会信息存储专委会委员。长期在分布式存储领域从事理论研究和工程实践工作。

以第一作者在国际期刊会议上发表论文多篇,以第一发明人申请专利十多件,以第一完成人获得省部级、中国电信集团科技进步奖多次。

分布式高可用算法

长期以来,在996的工作压力下,工程师们更重视实践中的技巧,力求快速解决眼前的问题,而鲜有时间关注问题背后的底层原理。但实际上,这样容易形成“头疼医头,脚疼医脚”的思维和工作方式,难以根治工程中的问题,无法透彻地剖析系统工程,从而埋下了众多隐患。

《分布式高可用算法》结合作者在本领域十余年的丰富实践,不仅剖析了经典算法背后的逻辑,而且深入浅出地分析了每个经典算法在实践中的应用思路,让人知其然并知其所以然,举一反三

《分布式高可用算法》在表达上通俗易懂,即便是刚入门的新手,读完本书也能有“哦,原来是这样!”的体会;对于已在本领域工作多年的工程师,相信在读完本书之后,也会有豁然开朗的感觉,领悟到算法的精妙之处,从而更好地指导工作。

来看看目录吧

部分内容展示

  • 首先介绍了分布式系统是如何被建模的,以及分布式算法是如何被描述的

  • 然后从基础的链路抽象开始逐步增加复杂度,最终将复杂的共识抽象以简单的方式呈现在读者面前

通过阅读本书,读者不仅可以掌握常用的分布式算法,还可以学到分布式算法的证明方法及适用条件,为自行设计分布式系统和算法打下坚实的基础。

如果恰好你需要的话可以 关注 公众号:Java收藏夹

死锁

死锁(Deadlock)是指两个或两个以上的线程永远被阻塞,一直等待对方的资源。下面是一个用Java编写的死锁的例子。 Alphonse和Gaston是朋友,都很有礼貌。礼貌的一个严格的规则是,当你给一个朋友鞠躬时,你必须保持鞠躬,直到你的朋友回给你鞠 躬。不幸的是,这条规则有个缺陷,那就是如果两个朋友同一时间向对 方鞠躬,那就永远不会完了。这个示例应用程序中,死锁模型如下。
package com.waylau.java.demo.concurrency;
public class Deadlock {
public static void main(String[] args) {
final Friend alphonse = new Friend("Alphonse");
final Friend gaston = new Friend("Gaston");
new Thread(new Runnable() {
public void run() {
alphonse.bow(gaston);
}
}).start();
new Thread(new Runnable() {
public void run() {
gaston.bow(alphonse);
}
}).start();
}
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s" + " has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s" + " has bowed back to me!%n",
this.name, bower.getName());
}
}
}

当它们尝试调用bowBack时两个线程将被阻塞。无论是哪个线程, 都永远不会结束,因为每个线程都在等待对方鞠躬。这就是死锁了。

本节示例,可以在java-concurrency项目下找到。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...