自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

拥抱大数据的专栏

努力学习计算机知识

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Dubbo线程模型设计解析

dubbo线程模型设计解析

2022-04-10 17:12:43 2988 1

原创 Dubbo服务集群容错原理(重要)

​前言集群容错技术是分布式服务治理技术中非常关键的一项技术。什么是集群容错技术呢?在分布式集群应用环境下,服务提供者可能集群部署并且有很多台,如果某些服务提供者因为一些原因出现服务不可用时,如何让服务调用者选择可用服务提供者进行调用呢?这个时候集群容错技术就闪亮登场了,它能够针对某些服务提供者不可用时提供自动故障转移的能力。学习Dubbo的集群容错技术可以对增强服务集群容错技术的理解,对我们理解分布式技术有很大的帮助,本文将分析Dubbo中使用到的集群容错技术原理。在Dubbo中,总..

2022-04-09 23:36:37 652

原创 Dubbo服务调用过程流程图

Dubbo服务调用流程图1、服务消费方发起调用请求,并处理结果2、服务提供方接收请求,并返回处理结果第一阶段 消费者客户端发起rpc请求这个阶段会将请求数据发送到服务提供者,并且在发起请求前完成负载均衡和过滤的功能,同时具备集群容错的能力。第二阶段提供者处理客户端请求这个阶段会接收客户端的请求数据,然后解码,对请求做一些过滤包装,最后将结果写回客户端​...

2022-03-07 23:29:07 3363

原创 你不得不了解的网络IO模型知识

网络IO是表示数据在客户端和服务器之间传输和交换数据的技术。如下图,在客户端和服务端之间交换数据的时候离不开网络IO,网络IO能够知道数据是否准备好了,数据怎么读,什么时候读好了或写好了。作为底层通信的基础技术,在绝大多数应用程序中都需要使用,不过大部分和网络IO打交道的都是一些中间件框架,比如web服务器tomcat,数据库mysql,消息队列rocketmq,rpc框架dubbo等,这些框架都离不开网络IO,它们帮我们屏蔽了底层通信的实现,作为一名后台开发人员,了解网络IO知识可以对网络...

2022-02-12 22:02:28 582

原创 Dubbo服务消费者启动与订阅原理

Dubbo服务消费方启动和订阅服务原理

2022-02-07 21:30:44 1356

原创 深入掌握Dubbo服务提供者发布与注册原理

服务发布和注册是Dubbo非常核心的能力之一,也是Rpc技术非常关键的一步。本文将从源码层面掌握Dubbo的服务发布和注册。先看下整体步骤我们接着看下源码是不是按这个流程来处理的。暴露服务的源码入口com.alibaba.dubbo.config.spring.ServiceBean#onApplicationEvent spring容器启动完成后触发ContextRefreshedEvent事件 。public class ServiceBean<T&gt...

2022-01-26 00:27:46 195

原创 Dubbo服务Spi机制和原理

Dubbo SPI机制原理

2022-01-24 09:18:09 350

原创 2021充满变化的一年

2021对我来说真的变化很多,不管是学习上,工作上,还是生活上。学习上我是2016年毕业后进入了互联网金融行业工作,工作中用到的技术一直都只是停留在使用的层次,去年底到今年我开始对技术底层原理充满好奇,于是一心专研常用技术底层原理,一年的非工作时间里陆续学习了Java基础源码,并发工具源码,Spring框架源码,Dubbo底层源码,Rocketmq源码,Netty底层源码,Redis底层源码,Mysql底层源码,并且养成了记录笔记的习惯,通过记录笔记,及时对学习的技术做总结,我发现做笔记是一个非常有

2022-01-22 22:44:44 360

原创 Java并发知识之ReentrantLock

深入理解ReentrantLock设计思想和原理

2022-01-22 18:11:25 401

原创 Dubbo框架整体认知

Dubbo框架整体认知。

2022-01-22 18:05:06 1689

原创 并发编程阶段性总结

前言前面几篇文章详细介绍了Java并发领域常见的知识原理,对并发知识有了系统的理解,今天再对并发知识做一次阶段性总结。下面是前几天关于并发知识的文章,感兴趣的伙伴自取。Java并发编程之Thread知识整理Java并发编程之ThreadPool知识整理Java并发编程之ThreadLocal知识整理Java并发编程之volatile知识整理Java并发编程之synchronized知识整理JAVA并发之AQS基础总结Java并发知识之ReentrantLockJa...

2022-01-22 00:14:13 249

原创 Java并发编程之Semaphore知识整理

限流神器

2022-01-21 00:17:25 224

原创 Java并发编程之CyclicBarrier知识整理

深入学习CyclicBarrier

2022-01-20 00:13:52 271

原创 Java并发编程之CountDownLatch知识整理

CountDownLatch是一种同步辅助工具,允许一个或多个线程等待在其他线程中执行的一组操作完成,可以利用它来实现并发执行某些操作。CountDownLatch 维护了一个计数器,所有线程调用countDown()方法后计数器减1,主线程等到直到计数器为0,可以用作发令抢 一个线程等待 所有线程将计数器减少为0,模拟并发的场景。可以一个或者多个线程,等待计数器到0。CountDownLatch的实现很简单,基于AQS实现的共享锁。AQS实现:private static fina...

2022-01-16 22:50:50 159

原创 Java并发编程之ArrayBlockingQueue知识整理

Java并发编程之ArrayBlockingQueue知识

2022-01-16 22:28:32 167

原创 Java并发编程之CopyOnWriteArrayList知识整理

Java并发编程之CopyOnWriteArrayList知识

2022-01-16 22:05:11 285

原创 Java并发编程之synchronized知识整理

Java并发编程之synchronized知识

2022-01-16 00:07:42 244

原创 Java并发编程之Volatile知识整理

Java并发编程之Volatile知识

2022-01-15 21:04:22 200

原创 Java并发编程之ThreadLocal知识整理

Java并发编程之ThreadLocal知识

2022-01-15 13:04:55 113

原创 Java并发编程之ThreadPool知识整理

并发编程技术是互联网应用开发中必须掌握的知识,本篇文章笔者开始分析线程池,进一步了解Java领域并发编程知识。 上文Java并发编程之Thread知识整理已经介绍了线程的目的和好处,线程池就是为了更好的使用线程,发挥线程最大的价值。线程池创建的方式有3种: 第一种通过ThreadPoolExecutor的构造函数方法创建。通过ThreadPoolExecutor的最全构造参数来看总共有7个参数。publicThreadPoolExecutor(intcor...

2022-01-15 13:01:51 148

原创 Java并发编程之Thread知识整理

Java并发编程之线程知识

2022-01-15 13:00:13 105

原创 Rocketmq常见问题与阶段性总结

Rocketmq阶段性总结与面试常问问题

2022-01-15 12:58:01 1983

原创 Rocketmq消费者负载均衡与消费队列重平衡原理

Rocketmq消费队列负载均衡以及重平衡机制原理分析

2022-01-15 12:56:25 1172

原创 Rocketmq消费消息原理

在消息系统中,消费者消费消息有拉和推消息两种实现方式,拉消息是消费者主动向消息服务器发送拉消息请求,消息服务器将消息返回给消费者,而推消息是消息服务器主动向消费者推送消息的形式,这两种消息消费实现各有各的优势和劣势。 Rocketmq中采用长轮训的机制来实现消息消费功能。长轮训模式兼顾了拉和推消息的优势。从整体看下org.apache.rocketmq.client.consumer.DefaultMQPushConsumer消费者实现类在消费客户端的启动流程。...

2021-09-10 23:22:10 1446

原创 面试常问Rocketmq延迟消息原理

延迟消息在业务场景中使用的非常多,订单失效,过期通知等功能都可以借助延迟消息机制来实现。本文将从源码层面来分析Rocketmq的延迟消息实现原理机制。一、延迟消息的使用​​​ 先看下延迟消息的使用,发送消息逻辑和普通消息一样,只要在生产者端将Message对象中设置延迟消息的等级,Rocketmq的开源版本支持18个等级,每个等级代表一个延迟时间。Rocketmq有18个延迟等级分别对应如下延迟时间,最小1s,最大2h,客户端从等级从1...

2021-08-21 22:53:41 6442

原创 Rocketmq发送消息原理(含事务消息)

在消息队列中,生产者负责发送消息到broker,本文讲解Rocketmq发送消息的实现原理以及一些注意的事项。一、生产者端的发送流程大致步骤1、根据topic从nameserver或本地获取路由信息,队列信息,broker信息等2、根据重试次数,循环发送消息3、消息内容组装成RemotingCommand对象,包括请求头和请求体4、分oneway,sync,async的方式进行发送5、如果是async,oneway会获取令牌再发送6、组装请求头,调用netty组件发送消息

2021-07-25 18:45:38 1104

原创 Rocketmq的整体认识

上文已经介绍了分布式消息队列的常见概念,从本文开始,将分多篇文章逐步对Rocketmq这款分布式消息队列的架构,功能,以及不同功能的源码实现原理进行分析。本文主要是介绍Rocketmq的功能,架构,加深对rocketmq的认识。Rocketmq是什么?​​Rocketmq是由阿里巴巴2012年开源的分布式消息中间件,现在已经是apache顶级项目。他是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。它借鉴了kafka的实现,在kafka基础上丰富了更...

2021-07-18 21:08:29 191 1

原创 分布式消息队列基础知识

本文主要整理消息队列的一些基本概念,为后面的Rocketmq消息队列组件深入学习打下基础。一、什么是消息队列?维基百科介绍:消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。根据这个定义可知,消息队列主要有两类:一类是内存中的消息队列,比如在Java语言中就包括ArrayBlockingQueue,LinkedBlockingQueue等等。他们主要是为应用中的线程通信方式。另外一类是分布式消息队列,比如常见的有kafka,ribbimq,rock.

2021-07-11 22:26:08 2491

原创 Redis知识阶段性总结

前面几篇文章分析了Redis数据结构,Redis主从复制,哨兵模式,Cluster分片方案,本文将以问题的形式对这些内容进行一个总结。一、Redis支持哪些数据结构,以及底层的实现数据结构类型 底层数据结构 使用场景 string sds(简单动态字符串) 1、分布式锁 2、缓存数据 3、计数器 4、全局id 5、bitmap统计数据 hasher hashtable zipli

2021-07-04 23:28:01 78

原创 Redis分片Cluster总结

上文分析了哨兵模式的原理,他是redis官方提供的高可用方案,弥补了集群模式下不能自动故障转移的缺陷,但是在高并发系统中,redis服务器还是会存在单机瓶颈,会给redis带来非常大的压力,redis官方提供了另外一种高可用​,高性能方案cluster。redisCluster可以提供redis数据分片和横向扩展的能力,降低单个master的压力。想一想,如果需要做redis分片的存储,​可以在哪些地方入手?1、首先想到客户端,客户端根据操作的key进行分片计算,将请求路由到目的redis服务器.

2021-06-27 21:44:26 255 1

原创 Redis集群哨兵模式总结

上文介绍了Redis主从复制的原理,它解决了Redis数据备份的问题,master节点发生故障后不能自动选举出新的主节点,需要人工将slave节点设置成主节点,效率低下,不能实现自动故障转移,Redis官方提供了一个高可用解决方案Sentinel。Redis sentinel是什么?Redis Sentinel是Redis的官方高可用性解决方案。Redis Sentinel为Redis提供高可用性。实际上,这意味着使用Sentinel可以创建一个Redis集群,在没有人为干预的情况下抵抗某些..

2021-06-19 23:57:54 185

原创 Redis集群主从复制总结

一、首先思考一个问题,为什么redis性能这么高还需要分布式方案?1、实现更高性能:高并发应用,单机性能会有影响,需要更多redis服务器分担压力,实现负载均衡2、实现高可用:如果单机,防止宕机/硬件故障3、实现可扩展:单机内存和硬件有限制,实现横向扩展冗余或者分片存储实现如上特性。二、主从复制-replication配置和Kafka,Mysql,Rocketmq一样,redis支持集群部署,集群节点有master和slave之分,主节点是mast...

2021-06-17 23:08:58 233

原创 Redis数据类型-String总结

Redis是工作中使用比较多的中间件,它支持丰富的数据结构,拥有极强的读写性能,tps可以达到10w+。今天这篇文章来分析和总结String类型也是使用最多的一种数据结构之一。本文是基于redis5.0进行分析。一、基本使用setkeyvalue[EXseconds][PXmilliseconds][NX|XX]1、set是语法,key是指定名称, value是需要存储的值2、EX 指定过期的秒时间,PX指定过期的毫秒时间3、NX:只有key不存在...

2021-06-14 11:01:07 170

原创 Redis数据类型-Zset总结

zset是一种可以用来排序功能的有序集合,每个元素有一个浮点型的score属性,根据score来从小到大排序,score相同时,按照key的ascii码排序`。和其他数据结构比较一、基本使用ZADD key [NX|XX] [CH] [INCR] score member [score member ...]1、zadd插入元素到有序集合语法2、key有序集合名3、NX-元素不存在时才设置成功,XX-元素存在时才设置成功4、CH 修改返回值=添加的新元素和...

2021-06-13 21:40:35 353

原创 Redis数据类型-hashes总结

Redis的hashes类型是用来存储行记录的数据类型,一个key可以存储多条记录。一、基本使用HSETkeyfieldvalue1、HSET是新增数据语法2、key 是存储的数据key3、field 是hash表中的某条记录名称4、value是hash表某条数据的值HGETkeyfield1、hget是获取行数据的语法2、根据key和field获取某行记录值二、使用特点1、field和value都是字符串,一个key对...

2021-06-13 20:19:38 746

原创 基于RestTemplate扩展,支持Get请求传递javaBean参数

项目中使用了RestTemplate来对第三方接口进行请求。使用get方式请求查询接口时,需要将参数拼接到url中,不支持使用JavaBean传参,编写代码不友好。一般需要这么写:如果不使用占位符的写法,服务端将收不到参数。服务端接口定义如下,请求结果是参数解析失败,返回400错误码这个时候就想,能不能直接传map,或者一个JavaBean来实现传参数呢?于是查看源码,发现RestTemplate有扩展点可以进行扩展,下面就开始扩展之路了。RestTemplate有一

2021-05-22 17:47:36 960

原创 学会了这个设计模式,再也不是只会写if/else了

本篇文章讲解责任链设计模式```text责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。```##### 需求在公司流程处理业务中,有不同的处理流程节点,在不同的节点需要发送不同的短信,用来

2021-04-29 19:40:48 126

原创 第一次参加真实项目开发

本周我第一次接触项目开发,前两周一直在确认需求,这次终于可以写代码了,好好激动的,但是到今天我们本应该提测的,然而并没有实现,第三方接口还有没打通的,数据全是mock出来的,没有可测的,这不好说是谁的错,每个人都有自己的理由,在这次开发中,我认识到了一点很重要,那就是需求,开发以来,每天喝前台和产品打交道,每天确定需求,并不是只有我做后台的做好了后台就可以认为做好了,其实我们还要和前台交涉,我们后

2016-04-01 23:14:17 1503

阿里巴巴Java开发手册(终极版).pdf

java开发手册,java规范,技术规范,说明规范,学习技术规范,规范开发流程,开发小技巧,开发避坑

2020-06-29

mysql开发规范,mysql优化指南

全文提供mysq相关性能,设计优化的说明,比较详细的介绍了各种优化规范

2018-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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