自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(173)
  • 收藏
  • 关注

原创 高并发下如何保证接口的幂等性?

前言接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。 我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败

2021-03-29 15:53:49 292 1

原创 Spring bean的加载过程 : doGetBean概述

一、前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。在Spring容器的初始化过程后期 通过调用AbstractApplicationContext#finishBeanFactoryInitialization 方法来实例化了所有的非延迟加载bean。在这里面就通过 beanFactory.preInstantiateSingletons(); 调用了一个非常关键的方法 AbstractBeanFactory#getBean(jav

2021-03-01 11:02:03 623

原创 Spring 最重要的bean源信息 : BeanDefinition接口相关解释

本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。很多内容来自别人博客简介现如今,我们一般获取对象的方式有两种,一种是手动直接 new;另一种是交给 Spring 管理,Spring 将管理的对象称之为 Bean,容器会先实例化 Bean,然后自动注入,实例化的过程就需要依赖 BeanDefinition。对于基于Spring框架开发的一个应用系统,其中每一个bean都来自于一个bean定义:开发人员的某个bean定义,框架自身的某.

2021-02-28 11:47:07 695

原创 spring BeanFactory扩展点:BeanFactoryPostProcessor 后置处理接口

一、概述BeanFactoryPostProcessor 为spring在容器初始化时对外对外暴露的扩展点,Spring IoC容器允许BeanFactoryPostProcessor在容器加载注册BeanDefinition完成之后读取BeanDefinition(配置元数据),并可以修改它。也就是spring ioc运行BeanFactoryPostProcessor在容器实例化任何其他的bean之前读取配置元数据,并有可能修改它;如果业务需要,可以配置多个BeanFactoryPostProc

2021-02-24 18:19:34 396

原创 spring bean扩展点:后处理器 BeanPostProcessor

经过前面的文章介绍,我们了解的sping bean生命周期,在其中伴随着大量的后置处理器的使用。为了弄清楚Spring框架,我们需要分别弄清楚相关核心接口的作用,本文来介绍下BeanPostProcessor接口。一、BeanPostProcessor所谓的BeanPostProcessor翻译过来就是Bean后处理器。作用是在Bean对象在实例化和依赖注入完毕后,在显示调用初始化方法的前后添加我们自己的逻辑。注意是Bean实例化完毕后及依赖注入完成后触发的。1.1. 什么是 BeanPos..

2021-02-23 17:26:45 1298 1

原创 spring bean生命周期五---Spring Bean 销毁阶段

这个阶段比较简单。分析Bean的销毁阶段-和Bean 的初始化对应!这里主要分为:Spring Bean 销毁前阶段、销毁阶段。一、Spring Bean 销毁前阶段这里主要是处理DestructionAwareBeanPostProcessor#postProcessBeforeDestruction的实现类回调如自己实现:public class MyDestructionAwareBeanPostProcessor implements DestructionAwareBe.

2021-02-19 22:42:37 936

原创 spring bean生命周期四---Spring Bean 初始化阶段(Initialization)

目录概述一、initializeBean2.1、invokeAwareMethods - 激活 Aware 方法2.2、Spring Bean 初始化前阶段第七次调用后置处理器2.3、invokeInitMethods - 激活自定义的init方法2.4、Spring Bean 初始化后阶段第八次调用后置处理器postProcessAfterInitialization三、Spring Bean 初始化完成阶段四、测试代码案例:概述本文是笔者阅读Sprin..

2021-02-19 22:29:45 2078 3

原创 spring bean生命周期三---Spring Bean populateBean 属性填充阶段

前言本文是笔者阅读Spring源码的记录文章,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正。我们在上一篇文章:spring bean生命周期二---Spring Bean实例化( Instantiation)阶段中完成了bean的实例化过程,但是属性内容还没有注入,本文就是将bean的属性进行注入的过程。一、populateBean - 概述我们这里先整体过一遍代码,后面进行每一步的详细解读。// AbstractAutowireCapableBeanFact..

2021-02-18 23:13:53 882

原创 spring bean生命周期二---Spring Bean实例化( Instantiation)阶段

经过上一篇的BeanDefinition 生成过程后,已经得到实例化bean的相关的源信息,这一篇重点介绍spring bean的实例化的过程,也就是我们通常的创建对象,不过这样需要推断构造器,使用反射实例化对象。此阶段主要包括: Spring Bean 实例化前阶段、Spring Bean 实例化阶段、Spring Bean 实例化后阶段等阶段。一、这里涉及几个比较重要的后置处理器:1、InstantiationAwareBeanPostProcessor :Spring Bean .

2021-02-18 18:49:57 1229 2

原创 spring bean生命周期一---前置阶段:Spring BeanDefinition生成阶段

Spring Bean的生命周期是Spring面试热点问题。这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。在spring bean创建过程 依赖BeanDefinition 中的信息处理bean的生产。BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口。在处理配置文件生成BeanDefinition主要经过:...

2021-02-17 22:23:05 575

原创 面试被问delete后有必要加 limit么 ?

在业务场景要求高的数据库中,对于单条删除和更新操作,在 delete 和 update 后面加 limit 1 绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果 SQL 中有 limit 1;这时就 return 了,否则还会执行完全表扫描才 return。效率不言而喻。 那么,在日常执行 delete 时,我们是否需要养成加 limit 的习惯呢?是不是一个好习惯呢? 在日常的 SQL 编写中,你写 delete 语句时是否用到过以下 SQL? de...

2021-01-30 10:47:44 358

原创 springcloud (Finchley版本)简易入门 | 第七课: sleuth分布式链路跟踪

一、sleuth介绍Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,它大量借用了Google Dapper、 Twitter Zipkin和 Apache HTrace的设计先来了解一下 Sleuth的术语, Sleuth借用了 Dapper的术语。并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题

2021-01-15 16:00:02 167

原创 springcloud (Finchley版本)简易入门 | 第六课: HystrixDashbord和Turbine

一、Hystrix Dashboard简介在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。Hystrix仪表盘:它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题,从而及时地采取应对措施。Hystrix(注意 是单纯的Hy

2021-01-14 18:08:21 124

原创 springcloud (Finchley版本)简易入门 | 第五课: Zuul路由网关

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简答的微服务系统如下图:在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方.

2021-01-14 17:08:36 127

原创 springcloud (Finchley版本)简易入门 | 第四课: hystrix断路器

一、hystrix是什么? Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比 如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分 布式系统的弹性。 “断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就...

2021-01-12 13:41:49 344

原创 springcloud (Finchley版本)简易入门 | 第三课: Feign实战

一、Feign简介1.1、feign是什么@EnableFeignClients Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。简而言之:Feign 采用的是基于接口的注解 Feign 整合了ribbon,具有负载...

2021-01-08 18:01:35 129

原创 springcloud (Finchley版本)简易入门 | 第二课: Ribbon实战

在上一篇文章,讲了服务的注册和发现。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。一、ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要...

2021-01-08 17:01:46 98

原创 springcloud (Finchley版本)简易入门 | 第一课: 服务的注册与发现(Eureka)

一、spring cloud简介目前支持的版本为Spring Boot版本2.0.2.RELEASE,Spring Cloud版本为Finchley.SR2Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.htmlspring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决

2021-01-07 16:31:49 533

原创 Redis学习—高可用之Redis-Cluster集群

Redis Cluster是Redis官方提供的Redis集群功能一、简介1.1、为什么要实现Redis Cluster1.主从复制不能实现高可用2.随着公司发展,用户数量增多,并发越来越多,业务需要更高的QPS,而主从复制中单机的QPS可能无法满足业务需求3.数据量的考虑,现有服务器内存不能满足业务数据的需要时,单纯向服务器添加内存不能达到要求,此时需要考虑分布式需求,把数据分布到不同服务器上4.网络流量需求:业务的流量已经超过服务器的网卡的上限值,可以考虑使用分布式来进行分流5.离线计算

2020-12-20 22:18:30 803 1

原创 Redis学习—高可用之哨兵模式

一、简介在上篇文章中,我们学习了主从库集群模式。在这个模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。如果主库挂了,我们就需要运行一个新主库,比如说把一个从库切换为主库,把它当成主库。这就涉及到三个问题:主库真的挂了吗?该选择哪个从库作为主库?怎么把新主库的相关信息通知给从库和客户端呢?这就要提到哨兵机制了。在 Redis 主从集群中,哨兵机制是实现主从库自动

2020-12-19 14:45:29 956 1

原创 Redis学习—高可用之主从同步原理

提前说明本文主要来 自极客时间-蒋德钧老师-Redis核心技术与实战中的内容那我们总说的 Redis 具有高可靠性,又是什么意思呢?其实,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是增加副本冗余量,将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一段时间才能恢复,其他实例也可以对外提供服务,不会影响业务使用。 Redis 的主从数据是异步同步的,所以分布式的 Redis 系统并不满足「一...

2020-12-19 10:16:16 1167

原创 Redis学习—持久化RDB和AOF

下面内容几乎都是来自极客时间蒋德钧老师的 Redis核心技术与实战 。这里自己做的笔记防止遗忘一、持久化简介Redis的数据全部存储在内存中,如果突然宕机,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制,它会将内存中的数据库状态保存到磁盘中。一旦服务器宕机,内存中的数据将全部丢失。我们很容易想到的一个解决方案是,从后端数据库恢复这些数据,但这种方式存在两个问题:一是,需要频繁访问数据库,会给数据库带来...

2020-12-10 17:32:12 807

原创 Redis学习—5种数据结构基本原理

一、Redis 简介Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的 Web 应用程序。Redis也被作者戏称为数据结构服务器,这意味着使用者可以通过一些命令,基于带有 TCP 套接字的简单服务器-客户端协议来访问一组可变数据结构。(在 Redis 中都采用键值对的方式,只不过对应的数据结构不一样罢了)Redis 的优点以下是 Redis 的一些优点: 异常快- Redis 非常快,每秒可执行大约 110000 次的设置(SET)操作,每...

2020-12-04 16:22:42 393 2

原创 mysql 学习--Change Buffer和flush

一、Change Buffer对于读请求,缓冲池(buffer pool)能够减少磁盘IO,提升性能。问题来了,那写请求呢?Change Buffer的处理过程对非唯一的普通索引的新增或更新操作,如果索引B+树的需要新增或更新的数据页不在内存中,则直接更新change buffer,等到后面需要使用这个数据页(真正读到内存中来)的时候,再根据change buffer在内存中做merge合并操作。当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影

2020-11-25 16:49:52 517

转载 mysql 学习--缓冲池(buffer pool)

应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。今天,和大家聊一聊InnoDB的缓冲池。InnoDB的缓冲池缓存什么?有什么用?缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的...

2020-11-25 14:50:47 146

原创 mysql 学习--MVCC 多版本控制和事务隔离级别

MVCC: Multiversion concurrency control (多版本并发控制)解释: 并发访问(读或写)数据库时,对正在事务内处理的数据做多版本的管理。以达到用来避免写操作的堵塞,从而引发读操作的并发问题。一、 简介在可重复读隔离级别下,事务在启动的时候就“拍了个快照”。注意,这个快照是基于整库的。这时,你会说这看上去不太现实啊。如果一个库有 100G,那么我启动一个事务,MySQL 就要拷贝 100G 的数据出来,这个过程得多慢啊。可是,我平时的事务执行起来很快啊。.

2020-11-24 14:35:16 316

原创 mysql 学习---InnoDB 锁机制解析 Next-Key Locks

InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。这里就着重介绍下它的锁机制。 锁是用于管理不同事务对共享资源的并发访问。一、InnoDB锁类型1.1、 InnoDB锁基本类型:1、共享锁(行锁):Shared Locks 又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改;2、排它锁(行锁):Exclusive Locks 又称为写锁,简称X锁,排他锁不...

2020-11-24 11:31:53 748

原创 dubbo 相关面试题整理

1、知道什么是 RPC 么?答:RPC 就是 Remote Procedure Call,远程过程调用,它相对应的是本地过程调用。2、那为什么要有 RPC,HTTP 不好么?因为 RPC 和 HTTP 就不是一个层级的东西,所以严格意义上这两个没有可比性,也不应该来作比较,而题目问的就是把这两个作为比较了。HTTP 只是传输协议,协议只是规范了一定的交流格式,而且 RPC 是早于 HTTP 的,所以真要问也是问有 RPC 为什么还要 HTTP。RPC 对比的是本地过程调用,是用来作为分布

2020-11-11 17:48:06 170 1

原创 dubbo源码分析学习 服务调用过程

一、通讯基础协议首先远程调用需要定义协议,也就是互相约定我们要讲什么样的语言,要保证双方都能听得懂。常见的三种协议形式应用层一般有三种类型的协议形式,分别是:固定长度形式、特殊字符隔断形式、header+body 形式。固定长度形式:指的是协议的长度是固定的,比如100个字节为一个协议单元,那么读取100个字节之后就开始解析。优点就是效率较高,无脑读一定长度就解析。缺点就是死板,每次长度只能固定,不能超过限制的长度,并且短了还得填充,在 RPC 场景中不太合适,谁晓得参数啥的要多长,

2020-11-09 17:35:40 266

原创 dubbo源码分析学习 集群容错和负债均衡策略

一、基本概念服务目录到底是什么? 服务目录也就是 Directory,其实之前也介绍过的,但不是单独拎出来讲的,可能大伙儿还不太清晰,今儿咱再来盘一下。 服务目录到底是个什么东西呢,看名字好像就是服务的目录,通过这个目录来查找远程服务? 对了一半!可以通过服务目录来查找远程服务,但是它不是"目录",实际上它是一堆 invoker 的集合, 前面说到服务的提供者都会集群部署,所有同样的服务会有多个提供者,因此就搞个服务目录来聚集它们,到时候要选择的时候就去服务目录里挑。...

2020-11-09 15:51:29 491 1

原创 dubbo源码分析学习--消费端的服务引用过程

源码基于2.7.2一、服务引用大致流程我们已经得知Provider将自己的服务暴露出来,注册到注册中心,而Consumer无非就是通过一波操作从注册中心得知 Provider 的信息,然后自己封装一个调用类和 Provider 进行深入地交流。而之前的文章我都已经提到在Dubbo中一个可执行体就是Invoker,所有调用都要向 Invoker 靠拢,因此可以推断出应该要先生成一个 Invoker,然后又因为框架需要往不侵入业务代码的方向发展,那我们的 Consumer 需要无感知的调用远...

2020-11-06 16:46:16 505

原创 dubbo源码分析学习---dubbo 重要内容Invoker 和服务注册过程

这篇文章主要续接上一篇文章的基础上做的分析学习。前面没有分析 Invoker,我们来简单看看 Invoker 到底是一个啥东西。一、Invoker 是什么从前面的分析来看,服务的发布分三个阶段:第一个阶段会创造一个 invoker 第二个阶段会把经历过一系列处理的 invoker(各种包装),在 DubboProtocol 中保存到 exporterMap 中 第三个阶段把 dubbo 协议的 url 地址注册到注册中心上 Invoker 是 Dubbo 领域模型中非常重要的...

2020-11-05 10:40:43 584

原创 dubbo源码分析学习---dubbo 服务端服务暴露过程

今天来就带大家看看 Dubbo 服务暴露过程,这个过程在 Dubbo 中其实是很核心的过程之一,关乎到你的 Provider 如何能被 Consumer 得知并调用。 今天还是会进行源码解析,毕竟我们需要深入的去了解 Dubbo 是如何做的,只有深入它才能了解它。 如果要实现服务发布和注册,需要做哪些事情?1. 配置文件解析或者注解解析 2. 服务注册 3. 启动 netty 服务实现远程监听一、前奏 URL不过在进行服务暴露流程分析之前有必要先谈一谈 URL,有人说这 U...

2020-11-03 18:01:03 557

原创 dubbo源码分析学习---dubbo spi机制

一、简介 SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足...

2020-11-01 22:11:07 244

原创 kafka--面试相关记录

从面试角度一文学完 Kafka:https://mp.weixin.qq.com/s/YBtxP-3y2Pb_CESwlnuB2AKafka 为什么那么快的 6 个原因!::https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247503750&idx=3&sn=b1713eab18a64c542a15f7c6c1cbc070&chksm=eb504ab0dc27c3a624c515abdb9182bf738408

2020-10-26 16:06:17 70

原创 kafka学习---消息的存储机制(日志)

消息发送端发送消息到broker上以后,消息是如何持久化的呢?那么接下来去分析下消息的存储 首先我们需要了解的是,kafka是使用日志文件的方式来保存生产者和发送者的消息,每条消息都有一 个offset值来表示它在分区中的偏移量。Kafka中存储的一般都是海量的消息数据,为了避免日志文件过大,Log并不是直接对应在一个磁盘上的日志文件,而是对应磁盘上的一个目录,这个目录的命名规则 是 <topic_name> _<partion_id>消息的文件存储机制 一个...

2020-10-26 15:56:13 763

原创 Kafka学习---分区与副本原理解析

一、kafka集群kafka集群是由broker组成的。Broker 是 Kafka 的服务节点,即 Kafka 的服务器。其架构图下图: Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然后将其发送到 Kafka。 Consumer:消费者,也就是接受消息的一方。消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。 Consumer Group:一个消费者组可以包含一个或多个消费者。使用多分区 + 多消费者方式可以极大提高数据下游的处理

2020-10-26 14:39:37 1678

原创 Kafka学习--- 消费者分区分配策略与再均衡Rebalance

一、消费者和消费者组 当生产者向 Topic 写入消息的速度超过了消费者(consumer)的处理速度,导致大量的消息在 Kafka 中淤积,此时需要对消费者进行横向伸缩,用多个消费者从同一个主题读取消息,对消息进行分流。Kafka 的消费者都属于消费者组(consumer group)。一个组中的 consumer 订阅同样的 topic,每个 consumer 接收 topic 一些分区(partition)中的消息。同一个分区不能被一个组中的多个 consumer 消费。假设现在有一...

2020-10-24 22:51:15 2234

原创 Kafka学习--- Kafka Producer生产者

这里主要是记录学习使用,介绍Kafka Producer基本使用和基本原理。从编程的角度而言, 生产者就是负责向 Kafka发送消息的应用程序。一、基本概念1.1、Kafka Producer 的执行过程Kafka producer 的正常生产逻辑包含以下几个步骤: 配置生产者客户端参数常见生产者实例。 构建待发送的消息。 发送消息。 关闭生产者实例。 代码实现:public class Producer { public stat.

2020-10-22 17:54:10 568

原创 mysql 学习---索引优化学习

正确的创建合适的索引 是提升数据库查询性能的基础。一、前言写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢?以下这个面试场景,不知道大家熟悉不熟悉:面试官:数据库有几千万的数据,查询又很慢我们怎么办?面试者:加索引。面试官:那索引有哪些数据类型?索引是怎么样的一种结构?哪些字段又适合索引呢?B+的优点?聚合索引和非聚合索引的区别?为什么说索引会降低插入、删除、修改等维护任务的...

2020-10-22 16:15:22 105

空空如也

空空如也

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

TA关注的人

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