自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

井底之蛙

学而知不足,思而得远虑

原创 Chat 文章

Chat 地址:https://gitbook.cn/gitchat/author/5bc58d055c3f706584a48033 最近抽空写了几篇 Chat,与各位交流学习一下: 《分布式任务调度框架 Elastic-Job 实例解析》 《分布式任务调度框架 XXL-JOB ...

2019-03-02 17:06:05 313 0

原创 Mybatis逻辑分页原理解析RowBounds

物理分页Mybatis插件原理分析(三)分页插件 Mybatis提供了一个简单的逻辑分页使用类RowBounds(物理分页当然就是我们在sql语句中指定limit和offset值),在DefaultSqlSession提供的某些查询接口中我们可以看到RowBounds是作为参数用来进行分页的,如...

2019-02-26 10:22:46 44551 2

原创 RocketMQ原理学习--索引

  1、RocketMQ原理学习--RocketMQ源码运行   2、RocketMQ原理学习--RocketMQ整体架构窥探   3、RocketMQ原理学习--消息类型   4、RocketMQ原理学习-- Name Server   5、RocketMQ原理学习---生产者...

2019-01-04 13:59:23 913 2

原创 Cron4j调度框架学习与改造

1、cron4j表达式 cron4j支持的表达式是类似unix定时任务的字符串表达式,目前支持由5部分组成 分:从0到59 时:从0到23 天:从1到31,字母L可以表示月的最后一天 月:从1到12,可以别名:"jan", "feb", "...

2018-07-09 15:15:44 3421 10

原创 Spring源码学习--Bean对象循环依赖问题解决(四)

循环依赖就是N个类相互嵌套引用,如果通过new对象的方式产生循环依赖的话会导致程序内存溢出报错,接下来我们了解一下spring是如何解决循环依赖问题。第一种:prototype原型bean循环依赖对于原型bean的初始化过程中不论是通过构造器参数循环依赖还是通过setXxx方法产生循环依赖,Spr...

2017-07-05 18:28:17 4031 0

转载 RocketMQ原理学习--多副本实现 DLedger

一、DLedger引入目的 在 RocketMQ 4.5 版本之前,RocketMQ 只有 Master/Slave 一种部署方式,一组 broker 中有一个 Master ,有零到多个 Slave,Slave 通过同步复制或异步复制的方式去同步 Master 数据。Master/S...

2020-02-27 23:19:17 207 0

转载 MySQL事务的实现原理

1. 开篇 相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题: 事务想要做到什么效果? 按我理解,无...

2020-02-27 22:42:45 170 0

原创 redis数据类型介绍

数据类型 实现方式 描述 String int 用来保存整数值 raw 用来保存长字符串(长度大于44字节) embstr 保存短字符串(长度小于44字节) List ziplist(压缩列表) 列表保存元素个数小于512个 ...

2019-11-03 21:39:53 373 0

原创 限流 -- Sentinel 相关实现原理学习总结

简介 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 官方地址:https://github.com/alibaba/Sentinel/ Sentinel ...

2019-08-25 18:05:58 809 0

原创 配置中心 -- Apollo 相关知识总结学习

1、总体架构 上图简要描述了Apollo的总体设计,我们可以从下往上看: Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端 Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面) Config Serv...

2019-08-10 17:44:17 288 0

原创 配置中心 -- Nacos 客户端配置获取及监听实现原理

这篇博客我们通过示例来了解学习一下 Nacos 的客户端获取配置以及服务端发送配置的相关流程。 服务端创建配置 在 Nacos 的管理页面我们可以创建如下配置信息 1、在默认命名空间下新建配置 2、编辑配置并发布 客户端获取配置 1、客户端主动获取配置 (1)客户端创建 Co...

2019-07-15 19:53:32 7250 2

转载 配置中心 -- Nacos 实现原理

动态配置管理是 Nacos 的三大功能之一,通过动态配置服务,我们可以在所有环境中以集中和动态的方式管理所有应用程序或服务的配置信息。 动态配置中心可以实现配置更新时无需重新部署应用程序和服务即可使相应的配置信息生效,这极大了增加了系统的运维能力。 动态配置 下面我将来和大家一起来了解下 N...

2019-07-14 20:17:15 1524 1

原创 Orika 拷贝框架

Orika是一个简单、快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器。 pom.xml 引入: <dependency> <groupId>ma.glasnost.orika</g...

2019-07-09 10:45:28 649 0

原创 Spring Web 学习 -- DeferredResult 长连接异步返回

最近在学习有个配置中心(nacos 和 apollo),配置中心在配置变更时通过 http 长连接的方式进行通知。 (1)配置客户端定时向配置中心发送请求获取最新配置(apollo客户端会像服务端发送长轮训http请求,超时时间60秒,当超时后返回客户端一个304 httpstatus,表明配置...

2019-07-07 14:46:04 912 0

原创 业务学习 -- 高并发系统保护之限流和降级熔断

限流是我们在业务开发中经常遇到的问题 1、请求入口限流(Nginx 限流,Tomcat 线程池及等待队列设置,限流算法(漏桶算法,令牌桶算法,计数器算法)) 2、接口调用限流(Spring Cloud Hystrix(线程池/信号量) 和 Sentinel(信号量)) 3、基于削峰填谷流量整...

2019-06-16 21:52:54 1255 0

转载 Dubbo源码学习--ExceptionFilter 异常处理机制

背景 我们的项目使用了dubbo进行不同系统之间的调用。 每个项目都有一个全局的异常处理,对于业务异常,我们会抛出自定义的业务异常(继承RuntimeException)。 全局的异常处理会根据不同的异常类型进行不同的处理。 最近我们发现,某个系统调用dubbo请求,provider端(服务提供...

2019-05-28 10:26:31 217 0

原创 微信和支付宝相关支付业务场景介绍

支付宝 当面付 条码支付 应用场景:商家使用扫码设备,扫描用户支付宝钱包上的条码/二维码,完成收款。 支付流程: API列表: 接口名称 描述 API地址 alipay.trade.pay...

2019-05-18 22:50:54 2913 1

原创 支付业务简单理解

目前微信和支付宝支付已经非常深入我们的日常生活, 尤其在大城市中几乎涉及所有和钱相关的场景(银行除外)下都少不了支付宝和微信支付的二维码身影,真是大大方便了人们的日常生活,之前工作中也有涉及到和支付(微信和支付宝)相关功能及接口开发,这篇博客来稍微总结一下吧。 接口文档 1、支付宝 蚂蚁开放...

2019-05-18 22:39:45 1213 0

原创 限流 -- Sentinel 搭建及入门学习

简介 服务安装 客户端 界面

2019-05-11 21:39:02 1558 0

原创 Skywalking原理学习 -- skywalking 搭建及入门示例

环境搭建 安装下载部署 页面介绍 Agent 使用示例 实现原理

2019-04-27 17:38:53 22264 4

原创 Zipkin原理学习 -- Druid 追踪多种数据库 SQL 执行

在上一篇博客 《Zipkin原理学习–日志追踪 MySQL 执行语句》 中我们已经了解学习到 Zipkin 官方提供的针对 MySQL 数据库 sql 语句执行的追踪拦截器,现在我们基于数据库连接池 Druid 的 Filter 机制 写一个能支持多种数据库(mysql,pg、oracle 等)日...

2019-03-18 21:29:52 867 0

转载 Fescar源码学习--锁设计和隔离级别的理解

Fescar全局锁的理解 前几天夜里,我老大发我一篇文章说阿里的GTS开源了. 因为一直对分布式事务比较感兴趣。立马pull了代码,进行阅读。 基本的原理,实现方案我就不一一细化了,详细见官方文档(写的很棒,点赞)。 在fescar的社区,大家比较关注的是通过fescar回滚到before...

2019-03-16 17:56:03 279 1

原创 Zipkin原理学习--日志追踪 MySQL 执行语句

目前Zipkin官方提供了插件用于支持对MySQL语句执行过程的日志追踪,提供了对MySQL5、MySQL6和MySQL8的支持,官方地址:https://github.com/openzipkin/brave/tree/master/instrumentation 一、介绍及示例 配置示例:...

2019-03-14 20:07:23 1624 0

转载 一文了解JVM全部垃圾回收器,从Serial到ZGC

《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同的收集器。常用的7种收集器,其适用的范围如图所示     Serial、ParNew、Parallel Sca...

2019-02-23 21:43:49 499 0

原创 Fescar源码学习--服务协调器TC

之前我们已经用两篇博客分别介绍了Fescar中的TM和RM两个角色的相关操作,这篇博客我们来介绍一下TC 《Fescar源码学习--事物管理者TM(服务调用方)》 《Fescar源码学习--资源管理者RM(服务提供方)》 一、简介 TC(Fescar Server)作为全局事务协调器主要做...

2019-01-29 13:52:27 2651 2

原创 Fescar源码学习--资源管理者RM(服务提供方)

 之前我们已经在博客《分布式事务--Fescar》中了解学习到Fescar相关的架构,接下来我们分别用几篇博客分别来介绍一下Fescar的 TM、RM 和 TC之间的交互流程。 TM、RM和TC之间的交互流程图: 简单角色理解: TC: Fesacr-server应用 TM:dubbo...

2019-01-28 17:04:25 1191 6

原创 Fescar源码学习--事物管理者TM(服务调用方)

        之前我们已经在博客《分布式事务--Fescar》中了解学习到Fescar相关的架构,接下来我们分别用几篇博客分别来介绍一下Fescar的 TM、RM 和 TC之间的交互流程。 TM、RM和TC之间的交互流程图: 简单角色理解: TC: Fesacr-server应用 T...

2019-01-24 20:16:16 1336 2

转载 分布式事物--GTS的原理、架构与特点

        上一篇博客《分布式事务--Fescar》中我们已经了解到Fescar相关的知识,Fescar也是基于阿里巴巴的GTS开源的。这篇转载博客理解学习一下GTS相关的知识内容。          全局事务服务(Global Transaction Service,简称 GTS)是阿里新...

2019-01-22 21:29:07 1669 0

转载 分布式事物-- MySQL XA 协议

       上一篇博客《分布式事务--Fescar》分享了阿里巴巴开源的分布式事物框架Fescar,接触到Fescar的实现原理借鉴了XA协议,这篇博客我们来介绍总结一下XA协议。MySQL 从5.0.3开始支持XA分布式事务,且只有InnoDB存储引擎支持。MySQL Connector/J ...

2019-01-21 20:31:21 692 0

原创 Spring Cloud学习--spring cloud config server 获取配置过程

在上一篇博客《Spring Cloud学习--spring cloud config配置中心》 中我们已经了解学习到Spring Cloud Config简单的示例工程,这篇博客我们介绍一下Spring Cloud Config Server从git地址中获取有关配置的过程。 1、获取配置 访...

2019-01-20 13:21:44 482 0

转载 分布式事务--Fescar

地址:https://github.com/alibaba/fescar 《分布式事物--GTS的原理、架构与特点》 《Fescar源码学习--事物管理者TM(服务调用方)》 《Fescar源码学习--资源管理者RM(服务提供方)》 《Fescar源码学习--服务协调器(TC)》 Fes...

2019-01-19 20:37:31 2101 1

原创 Elasticsearch原理学习--分片原理及分片路由转发

一、分片与副本设置 1、分片(shard) Elasticsearch集群允许系统存储的数据量超过单机容量,实现这一目标引入分片策略shard。在一个索引index中,数据(document)被分片处理(sharding)到多个分片上。Elasticsearch屏蔽了管理分片的复杂性,使得多个...

2019-01-13 21:24:02 1347 0

原创 Elasticsearch原理学习--Rest请求处理流程

         之前我们已经通过博客《Elasticsearch学习--ES源码下载、导入及运行》了解学习到如何在本地将Elasticsearch服务运行起来,整个2018年下半年过去了,由于在学习其他知识,对于ES学习这块就暂时先放下的,接下来我们就对ES有一个系统的学习。 这篇博客我们通过...

2019-01-13 15:08:37 781 0

原创 RocketMQ原理学习--消费者消费消息

        在之前的一篇博客《RocketMQ原理学习--消息类型》中我们有介绍过RocketMQ的消息类型,这篇博客我们简单介绍一下RocketMQ消费者是如何消费消息的。 一、Pull or Push         简单来说RocketMQ给我们提供了两种消息消费方式,Pull模式和...

2018-12-31 15:08:46 1187 0

原创 RocketMQ原理学习--死信消息实现原理

        上一篇博客《RocketMQ原理学习--失败消息实现原理》中我们了解到RocketMQ对于失败消息的处理原理,当消息一直失败的情况下RocketMQ是如何处理的,这篇博客我们通过分析源码简单了解一下。         RocketMQ对于失败次数超过16次的消息设置为死信消息,消...

2018-12-16 20:42:06 1941 0

原创 RocketMQ原理学习--失败消息实现原理

        上一篇博客《 RocketMQ原理学习--延时消息实现原理》我们介绍了延时消息的实现原理,这篇博客我们看看RocketMQ在消费者消息消费失败的情况下是如何处理的。         正常情况下消费者在消息消费失败时会马上重新消费消息,正常情况下再次消费应该会将消息消费完成的,但是...

2018-12-15 13:36:33 679 0

原创 RocketMQ原理学习--延时消息实现原理

         RocketMQ提供了延时消息类型,简单来说就是生产者在发送消息的时候指定一个延时时间,当到达延时时间之后消息才能够被投送到消费者。       首先我们可以考虑一下RocketMQ的延时消息是如何实现: (1)生产者将延时消息发送到Broker,Broker是如何区分普通消...

2018-12-15 12:54:41 3756 0

原创 RocketMQ原理学习---Broker消息接收处理

         上一篇博客《RocketMQ原理学习---Producer消息发送》中我们简单了解了RocketMQ生产者消息发送的过程,接下来我们看看Broker是如何处理接收到的消息。        RocketMQ的Broker接收消息涉及到很多操作,首先我们需要对RocketMQ所保存...

2018-12-08 14:10:46 1569 2

原创 RocketMQ原理学习---生产者事物消息发送

        上一篇博客《RocketMQ原理学习---生产者普通消息发送》我们已经对生产者发送普通消息有了简单的了解,这篇博客我们来学习一下RocketMQ在发送事物消息时做了什么处理操作。 一、生产者发送消息        RocketMQ通过实现2PC协议来实现分布式事物,Rocket...

2018-12-04 21:45:36 511 0

原创 RocketMQ原理学习---生产者普通消息发送

        上一篇博客RocketMQ原理学习-- Name Server中我们介绍了Name Server提供的相关功能,这篇博客我们来介绍一下生产者消息发送相关的内容。 消息发送示例: public class Producer { public static void m...

2018-12-02 15:08:03 839 0

提示
确定要删除当前文章?
取消 删除