- 博客(13)
- 收藏
- 关注
原创 如何使用Hystrix实现服务降级?
降级就是说在调用某个方法发生超时、异常等错误时,改为调用备用方法,并使用备用方法的结果来替代原方法的操作。例如原方法是请求Redis中的数据,但因为Redis宕机,导致请求发生异常,则此时可以调用备用方法通过查询数据库给出结果。
2025-01-11 00:10:05
570
原创 两阶段提交算法为什么满足线性一致性?
本文内容就参考了该书,书中对各种一致性算法都进行了介绍,包括两阶段提交算法、三阶段提交算法等,并进行了详细分析。另外这本书对分布式系统相关的理论、实践、工程知识均进行了详细的介绍,层层递进,有助于大家建立完整的分布式系统知识体系。在下图中,节点A作为协调者发起了一次两阶段提交操作A2,并触发了参与者节点B和节点C的B2和C1操作。,这个时钟并不能够用来记录时间的长短,但足以标定出两阶段提交在全局历史中的位置,借此实现了线性一致性。中,就像是在全局历史中开展的事件一样,那这样的操作自然可以保证线性一致性。
2024-04-04 21:26:51
927
1
原创 事务的“一致性”和分布式“一致性”完全不是同一个概念
分布式系统中所说的一致性(CAP一致性)和数据库事务中所说的一致性(ACID一致性)完全不是同一个概念。CAP一致性是说:用户在分布式系统的某个节点上进行了变更操作,则在一定时间后,用户能从系统的任意节点上读取到这个变更结果。ACID一致性是说:事务的执行不会破坏数据库的完整性约束,所谓的完整性约束包括数据关系的完整性和业务逻辑的完整性。...
2022-08-06 12:28:04
305
原创 分布式中的“一致性”,到底指的是什么?
说到一致性,大家都不陌生。随着分布式系统、微服务系统、区块链等技术的发展,“一致性”一词出现的频率也越来越高。然而,“一致性”这一词语所代表的概念却并不唯一。例如我们常听到“事务的一致性”、“最终一致性”、“一致性哈希”等,它们表述的**并不是同一个概念**。理解这点十分重要。如果错误地认为以上几个“一致性”都指同一个概念,那就搞混了。在明确以上概念各不相同的基础上,我们介绍下**分布式系统中的“一致性”**(例如“最终一致性”中的“一致性”)到底指的是什么。...
2022-07-16 15:45:37
918
原创 事务的“一致性”究竟指的是什么?
说到一致性,大家都不陌生。随着分布式系统、微服务系统、区块链等技术的发展,“一致性”一词出现的频率也越来越高。然而,“一致性”这一词语所代表的概念却并不唯一。例如我们常听到“事务的一致性”、“最终一致性”、“一致性哈希”等,它们表述的并不是同一个概念。理解这点十分重要。...
2022-06-16 22:38:45
3615
2
原创 详解RPC原理,并完成最小实现
详细介绍远程过程调用(Remote Procedure Call,简称RPC)的原理,并实现一个名字最简RPC框架!
2022-06-03 21:40:20
261
原创 Java中枚举类型(Enum)使用进阶
本文是Java枚举类型的第三篇文章,对于枚举类型的实现原理和包含的方法特性不了解的小伙伴可以先去参考历史文章中的《Java中的枚举类型(Enum)详解》和《详解Java枚举类型(Enum)中的方法》两篇文章。接下来,我们将深入了解枚举类的使用。扩展枚举值与自定义构造函数之前,我们讨论枚举类时,主要是针对最简单的枚举类型。每个枚举值只有一个字符串,如:public enum Season { SPRING, SUMMER, AUTUMN, WINTER}但是实际使用中,我们可能想给每个枚
2021-03-08 21:56:32
259
原创 详解Java枚举类型(Enum)中的方法
在上篇文章中,我们对Java中的枚举类进行了详细的介绍。对于Enum还不了解的小伙伴,可以先预习《Java中的枚举类型(Enum)详解》一文。通过反编译,我们知道Java枚举类会在编译之后转化为一个继承了java.lang.Enum的类,而我们定义的每个枚举值都会在类的初始化阶段被实例化为我们所定义的枚举类的一个对象。在枚举类被编译之后,有一些方法是编译器在编译阶段写入的,那这些方法有什么特点?枚举类中还有一些继承来的方法,它们又有哪些?枚举类中的枚举值是在编译阶段被创建为对象,那构造函数又在哪?
2021-03-06 14:48:39
738
原创 Java中的枚举类型(Enum)详解
枚举类型初探枚举类型,其语法总让人觉着怪怪的,如下:public enum Season { SPRING, SUMMER, AUTUMN, WINTER}简单的一行,就定义了包含四个值的枚举类型,缺总让人觉着语法有点怪异。而在使用时:public void test() { System.out.println("spring name:" + Season.SPRING.name()); System.out.println("spring ordinal:" + S
2020-12-06 20:06:10
1148
原创 详解HashMap、HashTable、ConcurrentHashMap、HashSet的异同
之前的文章《HashMap源码详解》中我们已经结合Java1.8中HashMap的源码对数据结构、数据存取、数据写入、扩容等操作进行了详细的梳理。而HashMap又是HashSet、HashTable、ConcurrentHashMap这三种数据结构的基础。今天的文章我们就在《HashMap源码详解》的基础上,介绍HashSet、HashTable、ConcurrentHashMap的源码,并比较他们与HashMap的异同。1 HashTableHashTable和HashMap的关系最近,可以认为是
2020-12-01 23:42:30
211
原创 Java中HashMap实现源码详解
HashMap是Java开发中常用的一种数据接口,常用于完成key:value结构的存储。而同时,HashMap又是HashSet、HashTable、ConcurrentHashMap这三种数据结构的基础。本篇文章我们详细分析HashMap的源码,后面我们会在此基础上介绍HashSet、HashTable、ConcurrentHashMap的源码,并比较他们与HashMap的异同。1 基本结构HashMap使我们非常常用的一种数据结构,常用来存储各种键值数据。同时,它也是最为简单的。这里我们的讲解以
2020-11-22 17:25:01
445
原创 如何阅读源码,阅读源码的难点和方法分析
几次想阅读源码,但是每回都坚持不下去,毕竟读源码真的是一件很难得事情。随便一份源码,动辄几百个类,每个类几百行,没点毅力真的坚持不下来。当然,也有阅读方法的缘故。直到我看到了一本书《通用源码阅读指导书》,感觉才找到了源码阅读的方法,也正是在这本书的指导下,我读完了第一份开源源码MyBatis。1 意义与难点这本书最开始讲了源码阅读的优点,作者总结了四点:透彻地理解项目的实现原理接触到成熟和先进的架构方案学习到可靠与巧妙的实施技巧发现自身知识盲点,提升自身知识储备然后讲解了为什么阅读源码十分困
2020-07-12 21:45:35
1497
2
原创 简单易用的开源用户操作日志记录系统
我们开发的业务系统通常会提供给很多人使用,那在使用的过程中,日志系统变得非常重要。日志系统记录的用户行为有以下的作用:从系统用户角度看:它展示了用户自身的操作历史和具体对象的变动历史,便于用户进行梳理从系统管理员角度看:它可以记录了所有用户操作,便于我们定位异常行为例如,在git的project操作中,我们就可以看到这样的操作日志展示:对于这样的日志记录,我们可以在相关记录点添加对...
2019-05-24 09:58:30
7200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人