摘要: ​ 问题描述: 最近在做项目过程中遇到这样一种场景:方法A依次调用方法B、C、D,其中方法B和D都是本地方法,方法C是远程方法(更具体的讲,方法C的功能是发送MQ消息),该场景要求方法A是满足事务的,即A调用B、C、D要么同时成功,要么同时失败。 问题分析: 该问题的难点在于,对于方法B和D,可以通 阅读全文
posted @ 2022-11-27 23:26 黑木爷 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 什么是集群 能够对外提供相同服务的多台服务器组成的集合。 为什么要建立集群 1.从可用性角度考虑,如果只有一台机器提供服务,一旦出现故障,那么整个服务不可用。 2.从容量角度考虑,当服务访问量上升,单台机器无法支撑访问量时,必然要扩容。 如何建立集群 当有新的节点要加入集群时,客户端可以任选集群中的 阅读全文
posted @ 2022-11-06 23:15 黑木爷 阅读(286) 评论(0) 推荐(0) 编辑
摘要: ​ Java对象结构 ​ 一个对象包括三部分: 对象头 实例数据 对其填充 对象头: Mark Word:用于存储对象自身运行时的数据,如哈希码(Hash Code),GC分代年龄,锁状态标志,偏向线程ID、偏向时间戳等信息,它会根据对象的状态复用自己的存储空间。它是实现轻量级锁和偏向锁的关键。 K 阅读全文
posted @ 2022-08-28 12:13 黑木爷 阅读(355) 评论(0) 推荐(1) 编辑
摘要: ​ 整体介绍 概念 ​ 首先阅读一下类的源码注释,可以知道,这几个接口是最关键的。 ​ 这几个方法是使用AQS类的关键,只有这几个方法是可以定制的,其他方法几乎都是final的,不可修改。 从代码实现上看,能看到的变量几乎都是volatile的,能看到的方法几乎都是CAS或者Unsafe类的原子方法 阅读全文
posted @ 2022-08-14 14:18 黑木爷 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 问题描述 最近在做一个需求的迭代过程中,遇到了一个tair(公司的一款缓存中间件,类似Redis)反序列化失败的问题,也就是把tair里缓存的值转换成对象的时候报错了。看了一下代码里tair的使用,put的时候value是对象本身,get的时候是把tair获取到的对象进行类型强制转换,类似这种: P 阅读全文
posted @ 2022-06-20 21:09 黑木爷 阅读(329) 评论(0) 推荐(0) 编辑