2019年3月25日

PriorityQueue源码阅读

摘要: 最小堆:优先级权重越小 离顶点越近 实现一个top max n 添加时向上调整:元素最开始插入的时候是从队尾进入的,所以一直向上比较大小 移除时向下调整:删除时最开始是先将队尾置空,将队尾元素覆盖目标删除位置,然后向下和左右孩子比较 以集合/队列等方式初始化:调整树结构时从队尾开始向下调整 阅读全文

posted @ 2019-03-25 16:34 hangzhi 阅读(113) 评论(0) 推荐(0) 编辑

JAVA_OPT理解及调优理论

摘要: 以RocketMQ的namesrv和broker启动为例,理解CMS和G1垃圾收集器下的jdk参数 CMS垃圾收集器 以RocketMQ中runserver.cmd为例,这是启动NameSrv的命令行文件 -server -sever:在多个CPU时可优化性能 -Xms和-Xmx设置为 FullGC 阅读全文

posted @ 2019-03-25 16:30 hangzhi 阅读(596) 评论(0) 推荐(0) 编辑

2019年3月24日

RocketMQ存储系统概要设计和源码解读

摘要: 普遍消息存储技术的选型 分布式KV存储 NewSQL存储:TiDB 文件系统:RocketMQ,kafka,RabbitMQ RocketMQ:所有的message存储在一个log里,不区分topic-queue kafka:一个log文件存储单个topic-queue RocketMQ:所有的me 阅读全文

posted @ 2019-03-24 18:26 hangzhi 阅读(362) 评论(0) 推荐(0) 编辑

RocketMQ消息发送流程和高可用设计

摘要: (源码阅读先看主线 再看支线 先点到为止 后面再详细分解) 高可用的设计就是:当producer发送消息到broker上,broker却宕机,那下一次发送如何避免发送到这个broker上,就是采用LatencyFaultLorent,记录失败/高延迟的broker信息 MQClientInstanc 阅读全文

posted @ 2019-03-24 18:01 hangzhi 阅读(421) 评论(0) 推荐(0) 编辑

2018年10月18日

spring-ApplicationContext的事件传播(转)

摘要: ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的,通过ApplicationContext的publishEvent()方法发布到ApplicationListener; 在这里包含三个角色:被发布的事件,事 阅读全文

posted @ 2018-10-18 16:11 hangzhi 阅读(194) 评论(0) 推荐(0) 编辑

2018年8月6日

记一次elastic-job使用

摘要: 当当的elastic-job定时任务 业务场景是定时从微信取accesstoken和jsticket,因为都只有7200秒的有效时间,所以设置了定时任务,定时将得到的数据存到redis缓存中 问题1:但是刚开始的时候将业务写在实现了simplejob类的类中,需要注入RedisCacheManage 阅读全文

posted @ 2018-08-06 10:08 hangzhi 阅读(702) 评论(0) 推荐(0) 编辑

2018年6月27日

自定义实现Java动态代理

摘要: 转自:https://www.cnblogs.com/rjzheng/p/8750265.html 一 借助JDK的API实现: 1.先创建一个接口,并实现它 2.实现InvocationHandler:每一个动态代理类都要实现这个接口 3.测试 返回结果: 二 自定义动态代理 1.自定义Invoc 阅读全文

posted @ 2018-06-27 16:22 hangzhi 阅读(317) 评论(0) 推荐(0) 编辑

(转)分布式之延时任务方案解析

摘要: 转自:https://www.cnblogs.com/rjzheng/p/8972725.html 延时任务(eg:订单超时未支付):延时任务在某事件触发后一段时间内执行,没有执行周期 1.时间论算法 时间轮算法可以类比于时钟,如上图箭头(指针)按某一个方向按固定频率轮动,每一次跳动称为一个 tic 阅读全文

posted @ 2018-06-27 09:16 hangzhi 阅读(205) 评论(0) 推荐(0) 编辑

2018年6月26日

redis在分布式中的使用

摘要: 作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 为什么要用redis:为了并发和性能,使用redis做为缓冲 使用redis有什么缺点 主要是四个问题 (一)缓存和数据库双写一致性问题 分析:一致性问题是分布式常见问题,还可以再分为最终一致性和强一致性。数据库和缓存双写, 阅读全文

posted @ 2018-06-26 14:06 hangzhi 阅读(371) 评论(0) 推荐(0) 编辑

2018年6月12日

Java8 Optional && Guava Optional

摘要: Java8 -- Optional boolean isPresent():与obj != null()一样;调用get()前要调用isPresent()检查,不然会报错 Optional的三种构造方式: Optional.of(obj):obj不能为null,不然报npe Optional.ofN 阅读全文

posted @ 2018-06-12 16:06 hangzhi 阅读(929) 评论(0) 推荐(0) 编辑

导航