摘要:
现象如下图所示: 死锁原因分析: 如上图所示,此处锁的类型为X也就是排它锁,mysql的默认引擎InnoDB会对update操作自动添加排它锁,排它锁属于行级锁类型,由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以即使是访问不同行的记录,如果使用了相同的索引键,也是会出现锁冲突的,此处 阅读全文
摘要:
首先说一下HashMap存储结构,数组、链表、树这三种数据结构形成了hashMap。存储结构下图所示,根据key的hash与table长度确定table位置,同一个位置的key以链表形式存储,超过一定限制链表转为树。数组的具体存取规则是tab[(n-1) & hash],其中tab为node数组,n 阅读全文
摘要:
1、Java api 2、代码示例 执行结果 3、源码 4、总结 此方法只能转换当前类型或其子类下的对象,只是简单进行强转。 阅读全文
摘要:
好文转载留存,转至http://javatar.iteye.com/blog/706098 1. API与SPI分离 框架或组件通常有两类客户,一个是使用者,一个是扩展者, API(Application Programming Interface)是给使用者用的, 而SPI(Service Pro 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 分布式锁 1、原理 建立表示锁的父节点(图中locker节点) 每个争抢锁的服务器在locker节点下创建有序的临时节点 判断自己是否抢到锁:获取locker下所有子节点,并进行从小到大排序,判断自己创建的临时节点是否是最小节点。 是最小节点,说明抢到锁,执行相 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 负载均衡 1、原理 服务端启动创建临时节点(下图中servers下节点),临时节点数据包含负载信息 客户端启动获取服务器列表,并根据负载去连接一个负载较轻的服务器 服务端每次接收到客户端的连接,添加自己的负载,客户端断开与自己的连接则减少自己的负载 2、架构图 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 数据的发布与订阅 1、应用 服务端监听数据改变,客户端创建/更新节点数据,客户端提供数据,服务端处理 2、原理 客户端监控节点数据改变事件(例如配置信息,下图的config节点),启动时在服务器节点下创建临时节点(图中servers下节点) 服务端监听工作服务器 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 Master 选举 1、原理 服务器争抢创建标志为Master的临时节点 服务器监听标志为Master的临时节点,当监测到节点删除事件后展开新的一轮争抢 某个服务器成功创建则为Master 2、架构图 Master:服务器争抢节点 Servers:服务器列表节点 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 Curator使用 1、jar包引入,演示版本为2.6.0,非maven项目,可以下载jar包导入到项目中 2、RetryPolicy:重试机制 ExponentialBackoffRetry:每次重试会增加重试时间baseSleepTimeMs Exponen 阅读全文
摘要:
本文为原创文章,转载请注明出处,谢谢 ZkClient使用 1、jar包引入,演示版本为0.8,非maven项目,可以下载jar包导入到项目中 2、创建Zookeeper连接 示例:ZkClient zc = new ZkClient("192.168.117.128:2181",10000,100 阅读全文