自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (13)
  • 收藏
  • 关注

原创 杂谈〔20200716〕

写不完的业务代码;技术要每日精进,今天你读源码了么?

2020-07-16 09:30:10 125

转载 Redis 实现分布式锁之Redlock 算法浅析

保证分布式锁有效的三个属性Safety Properties:安全性,此处也就是互斥性,任意时刻只能有一个客户端可以持有锁Liveness Property A:无死锁,即使持有锁的客户端崩溃或被分区,也可以获得锁Liveness Property B:容错性,只要大多数 Redis 节点正常,客户端就能获取和释放锁为什么基于故障转移(failover-based)的实现还不够我们先来看看现有大多数 Redis 分布式锁的实现。最简单的方案是在一个实例中创建一个 key,并给这个 key 设

2020-06-22 18:58:42 187

原创 基于Redis的分布式锁RedissonLock原理剖析

RedissonLock#subscribe订阅锁释放事件,并阻塞等待锁释放,有效的解决了无效的锁申请浪费资源的问题:基于信号量,当锁被其它资源占用时,当前线程通过 Redis 的 channel 订阅锁的释放事件,一旦锁释放会发消息通知待等待的线程进行竞争.1、当 this.await 返回 false,说明等待时间已经超出获取锁最大等待时间,取消订阅并返回获取锁失败.2、当 this.await 返回 true,进入循环尝试获取锁.protected final LockPubSub pubS

2020-06-21 13:17:33 628

原创 PollingWatchService原理剖析

PollingWatchServiceAbstractWatchService watchService = new PollingWatchService();PollingWatchService() { // TBD: Make the number of threads configurable scheduledExecutor = Executors.newSingleThreadScheduledExecutor();}初始化时会初始化一个单线程池。接下来,向该w

2020-06-19 16:23:54 450 1

原创 【代码片段】Spring工具类获取方法参数名

Spring工具类获取方法参数名private static final ParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();String[] paramNames = discoverer.getParameterNames(s);

2020-06-18 13:13:57 156

原创 【代码片段】AspectJ切面通过ProceedingJoinPoint想要获取当前执行的方法

AspectJ切面通过ProceedingJoinPoint想要获取当前执行的方法:错误方式:Signature s = pjp.getSignature();MethodSignature ms = (MethodSignature)s;Method m = ms.getMethod();这种方式获取到的方法是接口的方法而不是具体的实现类的方法,因此是错误的。正确方式:Signa...

2019-06-27 15:35:01 246

原创 Synchronized偏向锁和轻量级锁的升级

Synchronized偏向锁和轻量级锁的升级一、Synchronized实现原理1、Synchronized锁的3中形式利用 synchronized 实现同步的基础:Java 中的每一个对象都可以作为锁。具体表现为以下3种形式。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的 Class 对象。对于同步方法块,锁是 Synchonized 括号里配置的对象。...

2019-02-27 12:13:08 185

原创 Youtube视频 Raft lecture (Raft user study)

地址:https://www.youtube.com/watch?v=YbZ3zDzDnrwJoint Consensus多边(联合)共识The solution is to use two phases to change the configuration. Raft switches first to an intermediate phase called joint con...

2019-02-01 17:35:49 301

原创 Raft算法之成员变更

成员变更是跟leader选举、日志同步、安全、日志压缩一样,都是Raft算法的核心概念。但成员变更是最难理解的。所以单列一篇总结。将成员变更纳入到算法中是Raft易于应用到实践中的关键,相对于Paxos,它给出了明确的变更过程(实践的基础,任何现实的系统中都会遇到因为硬件故障等原因引起的节点变更的操作)。显然,我们可以通过shutdown集群,然后变更配置后重启集群的方式达到成员变更的目的。但...

2019-02-01 17:34:16 273

原创 Raft 实现日志复制同步

本篇文章以 John Ousterhout(斯坦福大学教授) 和 Diego Ongaro(斯坦福大学获得博士学位,Raft算法发明人) 在 Youtube 上的讲解视频及 PPT 为蓝本,深入分析 Raft 的内部机制,并以日志复制同步(Replicated Logs)为背景,详细介绍使用 Raft 协议实现日志复制的共识性问题。目标:日志复制同步Raft 的目标是将日志完整地复制到集群内...

2019-02-01 17:33:02 453

转载 RPC框架几行代码就够了

作者:梁飞链接:http://javatar.iteye.com/blog/1123915來源:iteyeiteye著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。转于自己在公司的Blog: http://pt.alibaba-inc.com/wp/experience_1330/simple-rpc-framework.html因为要给百技上实训课,让新同学们...

2018-10-22 11:21:06 121

原创 详解 Paxos 分布式一致性协议,从零实现分布式日志同步复制(Replicated Logs)

写在前面在团队担任消息队列服务相关开发中,考虑到RocketMQ broker没有实现自动选主和消息同步机制,于是本着兴趣想着尝试实现一下(这简直是给自己挖了一个大坑呀!~),这必然要用到分布式一致性协议。谈到分布式一致性协议,自然会想到Paxos、Raft、Zab等。我大概前后研究了大半个月的paxos。撸了两篇lamport大大的论文(整理了两篇译文,想要看的可以关注公众号《架构随笔》...

2018-10-16 17:37:47 453

《Paxos Made Simple》分布式一致性协议Paxos论文翻译

Lamport Paxos 的这两篇论文真的很难懂,小编也是竭尽全力的推敲每一句话的意思,尽量的将Lamport的意思完整的呈现出来。希望大家支持一下。两篇论文大概码了3万多字,每一个公式都是手敲的… 为什么会研究Paxos?最近使用RockerMQ,发现其Broker的主从没有实现自动选主及同步,所以小编想从底层学习下RocketMQ,然后自己尝试去实现这一块。 当然这很难,也是一个挑战。 先从Paxos论文入手,后续再研究zab。 只有学会自己造轮子,才能学的更多!~

2018-09-25

《The Part-Time Parliament》分布式一致性协议Paxos论文翻译

Lamport Paxos 的这两篇论文真的很难懂,小编也是竭尽全力的推敲每一句话的意思,尽量的将Lamport的意思完整的呈现出来。希望大家支持一下。两篇论文大概码了3万多字,每一个公式都是手敲的… 为什么会研究Paxos?最近使用RockerMQ,发现其Broker的主从没有实现自动选主及同步,所以小编想从底层学习下RocketMQ,然后自己尝试去实现这一块。 当然这很难,也是一个挑战。 先从Paxos论文入手,后续再研究zab。 只有学会自己造轮子,才能学的更多!~

2018-09-25

The-Part-Time-Parliament(Paxos算法中文翻译)

lamport论文翻译,详细讲解了paxos。 作者在第 4 节中确实简短讨论了 Paxos 议会和分布式计算的关系。计算机科学家可能会想要首先阅读 这一节。甚至在这之前,他们或许想要阅读 Lampson[1996]对这个算法向计算机科学家作的解释。这 个算法也在[1997]被 De Prisco 更正式的描述过。我在第 4 节的末尾加上了古代协议和近期研究之间关 系的更进一步说明

2018-06-27

Java并发编程实践(中文)

Java并发编程实践(中文) 高清pdf 带书签。 详细讲解了java并发知识,推荐

2017-12-19

Java并发编程的艺术.pdf

Java并发编程的艺术文档

2013-09-03

数据库课程设计DBMS建表修改表C++代码

数据库课程设计 DBMS 建表修改表。同时支持文件存储读取功能

2013-06-24

MongoDB实战

MongoDB实战

2013-06-23

数据库课程设计DBMS建表修改表完结版

数据库课程设计DBMS建表修改表完结版。同时支持能够文件存储

2013-06-23

数据库课程设计DBMS实现建表修改表完结版

此版完结版,实现建表,修改表(插入,删除,修改),以及文件存储功能。

2013-06-23

C++实现数据库DBMS建表插入删除属性功能

C++实现数据库DBMS建表插入删除属性功能

2013-06-14

C++实现小型数据库DBMS,具备建表以及属性插入功能

C++实现小型数据库DBMS,具备建表以及属性插入功能。

2013-06-13

C语言教材例题

C语言教材例题

2012-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除