Paxos算法1.1 基本定义算法中的参与者主要分为三个角色,同时每个参与者又可兼领多个角色:⑴proposer 提出提案,提案信息包括提案编号和提议的value;⑵acceptor 收到提案后可以接受(accept)提案;⑶learner 只能"学习"被批准的提案;算法保重一致性的基本语义:⑴决议(value)只有在被proposers提出后才能被批准(未经批准的决议称为"提案(proposal
  • arick
  • 2020-04-20 09:43:26
从零开发一个RPC框架纸上得来终觉浅,绝知此事要躬行。看过HSF和Dubbo的分析文章,总觉得少点什么,于是决定自己动手撸一个简易版的分布式RPC框架。实际上在学校的时候就曾经尝试做过一个最简单的RPC,但是过于简单,没有使用到服务注册中心,通信使用的是原生socket,更不支持注解形式,也没融入Spring生态,所以这次在此基础上完善了很多内容。代码很少,逻辑清晰,如下:一、架构设计RPC框架的
  • arick
  • 2020-06-09 02:51:26
关于Java线程池的参数设置。线程池是Java多线程里开发里的重要内容,使用难度不大,但如何用好就要明白参数的含义和如何去设置。干货里的内容大多是参考别人的,加入了一些知识点的扩充和看法。希望能对多线程开发学习的童鞋有些启发和帮助。一、Threa关于Java线程池的参数关于Java线程池的参数设置。线程池是Java多线程里开发里的重要内容,使用难度不大,但如何用好就要明白参数的含义和如何去设置。干
  • arick
  • 2019-09-24 22:14:56
1.1 引言很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但TCP/IP协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它成为被称作
  • arick
  • 2021-06-10 04:30:12
corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建corePoolSize个线程
  • arick
  • 2020-03-26 17:41:58
分布式事务——消息最终一致性方案前言分布式事务一直是服务化拆分后一个绕不开的话题,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此时已经提交,无法回滚,那么最终就会导致两边数据不一
  • arick
  • 2019-09-24 22:10:32
一、Hive 基本面试1、什么是 metastore2、metastore 安装方式有什么区别3、什么是 Managed Table 跟 External Table?4、什么时候使用 Managed Table 跟 External Table?5、hive 有哪些复合数据类型?6、hive 分区有什么好处?7、hive 分区跟分桶的区别8、hive 如何动态分区9、map join 优化手段1
  • admin
  • 2019-06-25 21:53:56
每个 ChannelSocket 的 Unsafe 都有一个绑定的 ChannelOutboundBuffer , Netty 向站外输出数据的过程统一通过 ChannelOutboundBuffer 类进行封装,目的是为了提高网络的吞吐量,在外面调用 write 的时候,数据并没有写到 Socket,而是写到了 ChannelOutboundBuffer 这里,当调用 flush 的时候,才真正
  • arick
  • 2020-08-12 00:01:12
ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个
  • arick
  • 2020-04-14 06:57:28
节选jdk源码中比较重要的方法进行分析,如下:public class ThreadLocal<T> { private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCode = new AtomicInteger(); priva
  • arick
  • 2020-06-09 02:35:00
京ICP备19006603号-1 Rick ©2018