- 博客(5)
- 收藏
- 关注
原创 Java并发编程
首先获取头节点的元素,然后判断头节点元素是否为空,如果为空,表示另外一个线程已经进行了一次出队操作将该节点的元素取走,如果不为空,则使用 CAS 的方式将头节点的引用设置成 null ,如果 CAS 成功,则直接返回头节点的元素,如果不成功,表示另外一个线程已经进行了一次出队操作更新了 head 节点,导致元素发生了变化,需要重新获取头节点。ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。
2024-03-05 16:00:09 673 1
原创 美团点评RPC框架pigeon实现原理及源码解析
1.介绍及使用方式Pigeon是一个分布式服务通信框架(RPC),在美团点评内部广泛使用,是美团点评最基础的底层框架之一。和阿里的Dubbo类似,在微服务的场景下,提供高性能和透明得如同本地化调用的RPC调用服务。有以下特点: 除了支持spring schema等配置方式,也支持代码annotation方式发布服务、引用远程服务,并提供原生api接口的用法。 支持netty通信...
2019-05-02 16:17:58 7349 1
原创 Redis设计与实现原理
1.数据结构与对象1.1 简单动态字符串1-1 SDS 实例SDS与C字符串的区别 C字符串 SDS 获取字符串长度的时间复杂度为o(n) 获取字符串长度的时间复杂度为o(1) API是不安全的,可能会造成缓冲区溢出 API是安全的,不会造成缓冲区溢出 修改字符串长度N次必然需要执行N次内存重分配 修改字符串长度N次最多执行N次内存重分配 只...
2019-03-25 12:12:55 426
原创 Zookeeper原理
1.基本介绍Zookeeper是一个由多个server组成的集群,分布、开源的应用程序协调服务,符合分布式服务ACP原理中的CP。它是集群的管理者,监视着集群中各个节点的状态,根据节点的反馈进行下一步合理操作。主要解决分布式应用经常遇到的数据管理问题,一些RPC框架(如点评pigeon、阿里dubbo的早期版本)使用ZK用来做服务发现和注册,点评的配置管理组件Lion用来做配置数据的获取更新,...
2019-03-12 16:37:53 433
原创 synchronized实现原理及锁升级过程
1.用法 synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。 synchronized有三种应用方式:作用于实例方法,当前实例加锁,进入同步代码前要获得当前实例的锁; 作用于静态方法,当前类加锁,进去同步代码前要获得当前类对象的锁; 作用于代码块,对括号里配置的对象加锁。2.实现原...
2019-03-11 20:04:47 7770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人