RocketMQ的前提回顾 RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 为什么使用RocketMQ 强调集群无单点,可扩展,任意一点高可用.水平可扩展 海量消息堆积能力,消息堆积后写入低延迟 支持上万个队列 消息失败重试机制 消息可查询 开源社区活跃 成熟度已经经过淘宝双十一的考验 RocketMQ的发展变化 RocketMQ开源是使用文件作为持久化工具,阿里内…
目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总结 0.前言 通过前面Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中主要的类关系简图如下: 可以看出主要的LocalDate, LocalTime, LocalDateTime, Instant都是实现相同的接口,这里以LocalDate为例分析jav…
Guava包中限流实现分析 RateLimiter 之前的文章中已经介绍了常用的限流算法,而google在Java领域中使用Guava包中的限流工具进行服务限流. 回顾使用案例 Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法实现流量限制,使用十分方便. @Test public void testSample() { RateLimiter rateLimiter = RateLimiter.create(500) } 以上示例,创建一个RateLim…
原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框.关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索.那么本文要介绍的是如何随心所欲地控制AlertDialog.     现在我们来看看第一个需求:如果某个应用需要弹出一个对话框.当单击“确定“按钮时完成某些工作,如果这些工作失败,对话框不能关闭.而当成功完成工…
MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置.操作和相关概念解释不作为重点. MyCat源码分析系列之——配置信息与启动流程 MyCat源码分析系列之——前后端验证 MyCat源码分析系列之——BufferPool与缓存机制 MyCat源码分析系列之——SQL下发 MyCat源码分析系列之——结果合并 备注: 本源码分析基于目前稳定版本MyCa…
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaron/jQuery 正在编写的书 - jQuery架构设计与实现 本人在慕课网的教程(完结) jQuery源码解析(架构与依赖模块) 64课时 jQuery源码解析(DOM与核心模块)64课时 jQuery源码分析目录(完结) jQuery源码分析系列(01) : 整体架构…
jQuery 1.9.1源码分析已经完毕.目录如下 jQuery-1.9.1源码分析系列(一)整体架构 jQuery-1.9.1源码分析系列(一)整体架构续 jQuery-1.9.1源码分析系列(二)jQuery选择器 jQuery-1.9.1源码分析系列(二)jQuery选择器续1 jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选 jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——词法解析 jQuery-1.9.1源码分析系列(三) Sizzle选择…
学习jquery的源码对于提高前端的能力很有帮助,下面的系列是我在网上看到的对jquery2的源码的分析.等有时间了好好研究下.我们知道jquery2开始就不支持IE6-8了,从jquery2的源码中可以学到很多w3c新的标准( 如html5,css3,ECMAScript).原文地址是:http://www.cnblogs.com/aaronjs/p/3279314.html  关于1.x.x版的jquery源码分析系列,本博客也转载了一个地址http://www.cnblogs.com/ja…
文章转自:jQuery源码分析系列-Aaron 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaron/jQuery 正在编写的书 - jQuery架构设计与实现 本人在慕课网的教程(完结) jQuery源码解析(架构与依赖模块) 64课时 jQuery源码解析(DOM与核心模块)64课时 jQuery源码分析目录(完结) jQuery源码分析系列(01) : 整体架构 jQuery源码分析系列(…
spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor spring源码分析系列 (2) spring拓展接口BeanPostProcessor spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor spring源码分析系列 (4) spring拓展接口SmartInstantiationAwareBean…
声明:非本文原创文章,转载来源原文链接Aaron. 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaron/jQuery 正在编写的书 - jQuery框架设计 作者在慕课网的教程 jQuery源码解析(架构与依赖模块) 64课时 jQuery源码解析(DOM与核心模块)更新中… jQuery源码分析目录(版本2.0.3) jQuery源码分析系列(01) : 整体架构 jQuery源码分析系列(…
jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaron/jQuery 在慕课网的教程(完结) jQuery源码解析(架构与依赖模块) 64课时 jQuery源码解析(DOM与核心模块)64课时 jQuery源码分析目录(完结) jQuery源码分析系列(…
Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了Ioc的基础概念以及Spring Ioc体系的部分基础知识.那么这一篇就会真正通过一个例子,启动Ioc容器,获取容器里的bean. 首先说明,本文的例子是基于xml配置文件去完成的. 为什么是xml?因为xml是Spring的灵魂,可能我们初学Spring都会有畏难情绪,看到繁杂的xml就会打退堂鼓.…
Spring Ioc源码分析系列--@Autowired注解的实现原理 前言 前面系列文章分析了一把Spring Ioc的源码,是不是云里雾里,感觉并没有跟实际开发搭上半毛钱关系?看了一遍下来,对我的提升在哪?意义何在?如果没点收获,那浪费时间来看这个作甚,玩玩游戏不香? 这段玩笑话可不是真的玩笑,提升需要自己去把握,意义也需要自己去挖掘.纸上得来终觉浅,绝知此事要躬行.最好是跟着代码调试一遍才会留下自己的印象,这过程收获的会比你想象中的要多.看山是山,看水是水.看山不是山,看水不是水.看山还是…
RPC服务 什么叫RPC? RPC[Remote Procedure Call]是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范.它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节.即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同.a RPC基本原理,RPC两个核心模块:通讯,序列化. 一次完整的RPC调用流程(同步调用,异步另说)如下: 1)服务消费方(client)调用以本地调用方式调用服…
大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWxy/twa-tf.js , 首发于博客园 散场丶丶:https://www.cnblogs.com/sanchang/p/11818604.html ) 什么是TWA 简单来讲,TWA(Trusted Web Activity 可信任的网络应用)即: 基于Chrome Custom Tabs,利用谷歌浏览…
在 STL 源码中,到处可见 Traits 的身影,其实 Traits 不是一种语法,更确切地说是一种技术. STL库中,有一个函数叫做 advance, 用来将某个迭代器(具有指针行为的一种 class)移动 某个给定的距离.声明如下: template <typename IterT, typename DistT>  // 将迭代器向前移动 d 单位 void advance(IterT& iter,  DistT d);                  // 如果 d <…
http://blog.csdn.net/anzhsoft/article/details/39859463 当触发一个RDD的action后,以count为例,调用关系如下: org.apache.spark.rdd.RDD#count org.apache.spark.SparkContext#runJob org.apache.spark.scheduler.DAGScheduler#runJob org.apache.spark.scheduler.DAGScheduler#submit…
目录 1.DLedger 存储相关类图 1.1 DLedgerStore 1.2 DLedgerMemoryStore 1.3 DLedgerMmapFileStore 2.DLedger 存储 对标 RocketMQ 存储 3.DLedger 数据存储格式 4.DLedger 索引存储格式 5.思考 @(本节目录) RocketMQ DLedger 的存储实现思路与 RocketMQ 的存储实现思路相似,本文就不再从源码角度详细剖析其实现,只是点出其实现关键点.我们不妨简单回顾一下 Commi…
要实现限流.熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息.例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑动窗口来实现实时数据的统计. 温馨提示:如果对源码不太感兴趣,可以先跳到文末,看一下滑动窗口的设计原理图,再决定是否需要阅读源码. @ 目录 1.滑动窗口核心类图 2.滑动窗口实现原理 2.1 ArrayMetric 2.2 LongAdder 2.2.1 类图与核心属性 2.2.2 current…
目录 1.DLedgerEntryPusher 1.1 核心类图 1.2 构造方法 1.3 startup 2.EntryDispatcher 详解 2.1 核心类图 2.2 Push 请求类型 2.3 doWork 方法详解 3.EntryHandler 详解 3.1 核心类图 3.2 handlePush 3.3 doWork 方法详解 4.QuorumAckChecker 4.1 类图 4.2 doWork 详解 温馨提示:源码分析RocketMQ DLedger 多副本系列连载中: 1.…
在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTransaction: public TransactionSendResult sendMessageInTransaction(final Message msg, final Object arg) throws MQClientException { if (null == this.trans…
使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-router-dom.redux.styled-components)开发的一套博客后台管理系统,用于前端小站的管理,主要功能包括游客浏览.文章管理.类别管理.评论通知.推荐设置和用户管理 [访问地址] 域名:https://admin.xiaohuoch…
目录 1.发送消息轨迹流程 1.1 DefaultMQProducer构造函数 1.2 SendMessageTraceHookImpl钩子函数 1.3 TraceDispatcher实现原理 2. 消息轨迹数据如何存储 2.1 使用系统默认的主题名称 2.2 用户自定义消息轨迹主题 本文沿着<RocketMQ消息轨迹-设计篇>的思路,从如下3个方面对其源码进行解读: 发送消息轨迹 消息轨迹格式 存储消息轨迹数据 @(本节目录) 1.发送消息轨迹流程 首先我们来看一下在消息发送端如何启用消息轨…
目录 1.DLedger关于选主的核心类图 1.1 DLedgerConfig 1.2 MemberState 1.3 raft协议相关 1.4 DLedgerRpcService 1.5 DLedgerLeaderElector 1.6 DLedgerServer 2.源码分析Leader选举 2.1 DLedgerLeaderElector 类图 2.2 启动选举状态管理器 2.3 选举状态机状态流转 2.4 投票与投票请求 2.5 心跳包与心跳包响应 温馨提示:<RocketMQ技术内幕>…
目录 1.BrokerController#initialAcl 2.PlainAccessValidator 2.1 类图 2.2 构造方法 2.3 parse方法 2.4 validate 方法 3.PlainPermissionLoader 3.1 类图 3.2 PlainPermissionLoader构造方法 3.3 load 3.4 watch 3.5 validate 4.AclClientRPCHook 4.1 doBeforeRequest 有关RocketMQ ACL的使用请…
前文回顾 CommitLog篇 --[RocketMQ源码分析]深入消息存储(1) ConsumeQueue篇 --[RocketMQ源码分析]深入消息存储(2) 前面两篇已经说过了消息如何存储到CommitLog,以及ConsumeQueue的构建流程,到了第三篇,我们有一个不得不跨过的坎儿,MappedFile -- 内存文件映射. MappedFile的存在是RocketMQ选择将消息直接存储到磁盘的关键因素,在第一篇CommitLog存储流程开篇中,我就写过一个思路. 即用到内存又用到本…
犹豫我经验尚不够丰富,有大牛跟我说,以我这样定下的结构来分析源码,学习效果不太好. 应该先从程序的进程入口函数开始,慢慢的跟流程来分析.先通过系统的启动.退出来分析所用到的技术,像进程模型,线程模型等.然后根据系统提供的功能,从CRUD等基础功能开始,根据执行流程来跟程序.跟进的过程中,来对系统的存储,更新等有个初步了解.再逐步进入高级功能,如同步,事务,启动恢复等.最后再来分析各个模块的功能和技术. 因此,趁现在还没有正式开始源码的分析,我需要调整一下SequoiaDB源码分析系列的步骤. 本…
java多线程系列(九)---ArrayBlockingQueue源码分析 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 java多线程系列(三)之等待通知机制 java多线程系列(四)之ReentrantLock的使用 java多线程系列(五)之synchronized ReentrantLock volatile Atomic 原理分析 java多线程系列(六)之线程池原理及其使用 java多线程系列(七)---Ca…
1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章中,有4篇文章字数超过了1万,最长的一篇文章约有2.7万字(含代码).考虑到超长文章对读者不太友好,以及拆分文章工作量也不小等问题.遂决定将博文整理成电子书,方便大家阅读. 经过两周紧张的排版,<一本小小的MyBatis源码分析书>诞生了.本书共7章,约300页.本书以电子书的形式发布,大家可自由…