摘要:
一、复制状态机(replicated state machine) Raft协议可以使得一个集群的服务器组成复制状态机,在详细了解Raft算法之前,我们先来了解一下什么是复制状态机。一个分布式的复制状态机系统由多个复制单元组成,每个复制单元均是一个状态机,它的状态保存在一组状态变量中,状态机的变量只 阅读全文
摘要:
一、Paxos算法产生的背景 Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,其解决的问题就是在分布式系统中如何就某个值(决议)达成一致。 面试的时候:不要把这个Paxos算法达到的目的和分布式事务联系起来,而是针对Zookeeper这样 阅读全文
摘要:
java数组拷贝主要有四种方法,分别是循环赋值,System.arraycopy(),Arrays.copyOf()(或者Arrays.copyOfRange)和clone()方法。下面分别介绍一下这几种拷贝。 一、循环拷贝(速度相对比较慢) 循环拷贝其实没什么好说的啦,就是用一个for循环进行元素 阅读全文
摘要:
一、先从 ArrayList 的构造函数说起 ArrayList有三种方式来初始化,构造方法源码如下: 1 /** 2 * 默认初始容量大小 3 */ 4 private static final int DEFAULT_CAPACITY = 10; 5 6 7 private static fin 阅读全文
摘要:
CopyOnWriteArrayList是开发过程中常用的一种并发容器,多用于读多写少的并发场景。但是CopyOnWriteArrayList真的能做到完全的线程安全吗? 答案是并不能。 一、CopyOnWriteArrayList原理 我们可以看出当我们向容器添加或删除元素的时候,不直接往当前容器 阅读全文
摘要:
一、分布式锁简介 锁是一种用来解决多个执行线程 访问共享资源 错误或数据不一致问题的工具。 如果把一台服务器比作一个房子,那么线程就好比里面的住户,当他们想要共同访问一个共享资源,例如厕所的时候,如果厕所门上没有锁...更甚者厕所没装门...这是会出原则性的问题的.. 装上了锁,大家用起来就安心多了 阅读全文
摘要:
一、JAVA类加载器包括几种? 启动类加载器 bootstrap class loader 启动类加载器主要加载的是JVM自身需要的类,这个类加载是用C++语言实现的,是虚拟机自身的一部分,它负责将 /lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意 阅读全文
摘要:
暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们分析个究竟: 1 // Use Quicksort on small arrays 2 if (right - left < QUIC 阅读全文
摘要:
一、什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI 阅读全文
摘要:
一、什么是RBAC模型 RBAC模型是一个解决用户权限问题的设计思维。 在最简单的RBAC模型中,将用户表设计为如下几个表 1、用户 2、角色 3、权限 以及这三张表衍生出来的两张中间表 4、用户_角色表 5、权限_角色表 上面描述的5张表就构成了最基本也是最成熟的RBAC模型,可以看得出RBAC模 阅读全文