自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

庄小焱

博主在支付交易领域,信贷金融领域深耕,我在博客中分享业务、技术、产品相关知识,欢迎大家和我交流学习。

  • 博客(60)
  • 收藏
  • 关注

原创 MQ——Kafka日志存储原理

摘要主要是介绍的kafka的日志存储系统文件目录布局回顾之前所学的知识:Kafka 中的消息是以主题为基本单位进行归类的,各个主题在逻辑上相互独立。每个主题又可以分为一个或多个分区,分区的数量可以在主题创建的时候指定,也可以在之后修改。每条消息在发送的时候会根据分区规则被追加到指定的分区中,分区中的每条消息都会被分配一个唯一的序列号,也就是通常所说的偏移量(offset),具有4个分区的主题的逻辑结构见图1-2。如果分区规则设置得合理,那么所有的消息可以均匀地分布到不同的分区中,这样就可以实

2021-04-29 22:20:30 814

原创 JDK源码——Object源码

这里写到流中的对象则是原始对象的一个拷贝,因为原始对象还存在JVM中,所以我们可以利用对象的序列化产生克隆对象,然后通过反序列化获取这个对象。这种做法有种弊端,这里我们Person类只有一个Address引用类型,而Address类没有,所以我们只用重写Address类的clone方法,但是如果Address类也存在一个引用类型,那么我们也要重写其clone方法,这样下去,有多少个引用类型,我们就要重写多少次,如果存在很多引用类型,那么代码量显然会很大。如果更改其中的一个基本类型,那么另一个并不会改变。

2021-04-29 20:00:53 240

原创 Redis——Redis的可视化管理工具

摘要Redis的对象的系列化和反序列化问题的解决方案。Redis的key要设置序列化类,但不能直接使用StringRedisSerializer,否则会导致Integer等类型的key序列化失败,可以自定义序列化类,或者使用StringRedisSerializer后key都要.toString();...

2021-04-27 20:37:33 581

原创 Java——Double 和Float的除法问题

摘要Java中的浮点数类型float和double不能够进行运算,因为大多数情况下是正常的,但是偶尔会出现如上所示的问题。这个问题其实不是JAVA的bug,因为计算机本身是二进制的,而浮点数实际上只是个近似值,所以从二进制转化为十进制浮点数时,精度容易丢失,导致精度下降。出现的问题解决方案...

2021-04-27 11:40:22 2917

原创 MQ——Kafka主题与分区原理

摘要主题和分区是Kafka 的两个核心概念,前面章节中讲述的生产者和消费者的设计理念所针对的都是主题和分区层面的操作。主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息的二次归类。分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。从Kafka的底层实现来说,主题和分区都是逻辑上的概念,分区可以有一至多个副本,每个副本对应一个日志文件,每个日志文件对应一至多个日志分段(LogSegment),每个日志分段还可以细分为

2021-04-22 15:14:38 829

原创 MQ——Kafka消费者原理

摘要与生产者对应的是消费者,应用程序可以通过KafkaConsumer 来订阅主题,并从订阅的主题中拉取消息。不过在使用KafkaConsumer消费消息之前需要先了解消费者和消费组的概念,否则无法理解如何使用KafkaConsumer。本章首先讲解消费者与消费组之间的关系,进而再细致地讲解如何使用KafkaConsumer。消费者与消费组消费者(Consumer)负责订阅Kafka中的主题(Topic),并且从订阅的主题上拉取消息。与其他一些消息中间件不同的是:在Kafka的消费理念中还有一层

2021-04-22 13:53:09 2145

原创 MQ——Kafka生产者原理

摘要虽然Kafka是用Java/Scala语言编写的,但这并不妨碍它对于多语言的支持,在Kafka官网中,“CLIENTS”的入口‘提供了一份多语言的支持列表,其中包括常用的C/C++、Python、Go等语言,不过这些其他类语言的客户端并非由Kafka社区维护,如果使用则需要另行下载。本章主要针对现下流行的新生产者(Java语言编写的)客户端做详细介绍,而旧生产者客户端已被淘汰,故不再做相应的介绍了。客户端开发一个正常的生产逻辑需要具备以下几个步骤:(1)配置生产者客户端参数及创建相应的生

2021-04-22 13:17:51 332

原创 MQ——Kafka基本概念

摘要Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、Flink等都支持与Kafka集成。Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:消息系统:Kafka 和传统的消息

2021-04-22 12:35:08 258

原创 MQ——Kafka面试问题

摘要主要的是的针对于的kafka的面试的问题进行分析和总结Kafka的用途有哪些?使用场景如何?总结下来就几个字:异步处理、日常系统解耦、削峰、提速、广播。如果再说具体一点例如:消息,网站活动追踪,监测指标,日志聚合,流处理,事件采集,提交日志等Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?ISR:In-Sync Replicas 副本同步队列AR:Assigned Replicas 所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(

2021-04-21 14:20:33 1710

原创 MQ——Kafka知识脑图

主要讲解Kafka 的基本的原理和相关的集群的原理以及MQ的主要使用场景。Apache Kafka 是一个分布式发布-订阅消息系统。是大数据领域消息队列中唯一的王者。最初由 linkedin 公司使用 scala 语言开发,在2010年贡献给了Apache基金会并成为顶级开源项目。至今已有十余年,仍然是大数据领域不可或缺的并且是越来越重要的一个组件。Kafka 适合离线和在线消息,消息保留在磁盘上,并在集群内复制以防止数据丢失。它与 Flink 和 Spark 有非常好的集成,应用于实时流式数据分析。

2021-04-20 21:52:03 327

原创 Mybatis——MyBatis知识脑图

本博文主要是分享有关MyBatis的知识脑图,供大家参考和学习。帮助大家快速的了解MyBatis知识点。

2021-04-20 12:12:19 274

原创 Zookeeper——知识脑图

摘要本博文主要是介绍有关于学习Zookeeper的相关的脑图。帮助大家能够全局思维的学习和掌握的Zookeeper。并能够应用在自己的项目上,同时的也给面试的Zookeeper相关问题提供一个的好记的导图。博文参考...

2021-04-20 12:09:25 239

原创 JVM——JVM知识脑图

摘要本博文主要分享JVM知识脑图,同时介绍博主关于JVM专栏链接。分享一些有关于JVM学习资料,帮助大家更好的学习和理解JVM的底层原理。同时给出一线大厂面试问题与答案供大家参考学习。一、JVM知识脑图1.1 JVM学习脑图1.2 JDK1.8下JVM内存结构原理1.3 JDK1.7下JVM内存结构原理1.4 JDK1.6下JVM内存结构原理二、JVM专栏知识介绍2.1 JVM 面试问题与解答2.2 JVM内存模型。

2021-04-20 10:56:57 417

原创 Spring——Spring框架知识脑图

摘要本专栏主要介绍Spring底层原理和Spring实战项目等相关知识。一、Spring学习脑图二、Spring的源码解析博文2.1 Spring IOC源码分析Spring——深入学习与源码分析(1):spring基础_庄小焱的博客-CSDN博客2.2 Spring AOP源码分析2.3 Spring MVC源码分析2.4 Spring Bean源码分析2.5 Spring 循环依赖源码分析2.6 Spring的注解源码分析2.7 Spr

2021-04-20 10:53:29 800

原创 Redis——Redis扩展应用与实战

摘要主要是介绍了的redis的哨兵机制以及底层原理。哨兵模式(raft)与Zookeeper模式(zab)选主的总结 Redis中的Sentinel选主相对来说更简单,因为不涉及事务状态的一致性 Sentinel选主是基于raft协议,Zookeeper则基于Zab协议 二者都是收到半数的选票就选举成功,同样的都是分布式部署 Sentinel投票发消息主要内容是Sentinel id和配置纪元,Zookeeper则是 zxid和 sid Sentin...

2021-04-20 09:17:30 619 1

原创 MySQL——数据库知识脑图

主要给大家几张的个人总结的有关于Mysql知识脑图,帮助大家更好的学习和记忆相关内容。

2021-04-19 10:52:10 536

原创 Redis——Redis知识脑图

摘要Redis的相关的资源和知识脑图。一、gitee的相关资源:https://gitee.com/xjl2462612540/RedisPrinciple二、Redis的知识脑图三、Redis基础原理文章博文参考

2021-04-16 15:32:28 597

原创 Spring——Spring MVC原理

Spring Web MVC 框架也是一个基于请求驱动的Web 框架,并且也使用了前端控制器模式来进行设计,再根据请求映射 规则分发给相应的页面控制器(动作/处理器)进行处理。博文介绍Spring mvc的原理与工作流程,帮助大家更好的理解spring mvc的思想与原理。

2021-04-15 14:39:40 2088

原创 SpringBoot——SpringBoot配置原理

本博文主要介绍SpringBoot配置原理。帮助大家更好的理解SpringBoot自动配置。通过分析相关源码,实现对SpringBoot自动装配原理有一个更深的理解。更好的应对面试问题。

2021-04-14 22:22:21 467

原创 Netty——面试问题集合和总结分析

BIO、NIO和AIO的区别?NIO的组成?Netty的特点?Netty的线程模型?TCP 粘包/拆包的原因及解决方法?了解哪几种序列化协议?如何选择序列化协议?Netty的零拷贝实现?Netty的高性能表现在哪些方面?NIOEventLoopGroup源码?...

2021-04-14 15:46:19 257

原创 操作系统——操作系统虚拟化

摘要虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。现代所有用于一般应用的操作系统都对普通的应用程序使用虚拟内存技术,老一些的操作系统,如DOS和1980年代的Windows,或者那些1960年代的大型机,一般都没有虚拟内存的功能。读完上面的信息,我们可以得知,虚拟内存这个概念是后来才提出的,一开始并没有虚拟内存。那个时候的计算机,程序指令所

2021-04-14 15:34:51 719

原创 SpringBoot——SpringBoot包扫描原理

Springboot默认会扫描启动类所在的包及其子包;如果想要在启动类所在包以外定义控制器的话需要在启动类重写@ComponentScan。SpringBoot在写启动类的时候如果不使用@ComponentScan指明对象扫描范围,默认指扫描当前启动类所在的包里的对象。不在自动扫描路径下,需要修改自定义扫描包路径。

2021-04-14 09:55:23 2844

原创 SpringBoot——SpringBoot SPI原理

本博文主要介绍SpringBoot SPI原理,帮助大家都更好的理解SPI机制在Springboot中应用。

2021-04-14 09:54:55 5769

原创 SpringBoot——SpringBoot面试问题

本博文主要分享有关于SpringBoot面试问题与解答。帮助大家更好理解springboot的考点。更好的回答面试问题。

2021-04-14 09:54:07 540

原创 算法问题——滑动窗口(双指针问题)

双指针的问题 一种的体现就是的滑动窗口。424. 替换后的最长重复字符1004. 最大连续1的个数 III1208. 尽可能使字符串相等1493. 删掉一个元素以后全为 1 的最长子数组

2021-04-13 18:48:00 189

原创 算法训练营——双指针问题

349. 两个数组的交集这个是保留所有的重复的数组还有一种的只是保留一种的结果的package 计算机程序算法分类.双指针问题;import java.util.*;/** * @Classname 两个数组的交集 * @Description TODO * @Date 2021/4/12 21:18 * @Created by xjl */public class 两个数组的交集 { /** * @description TODO 采用的是的双指针来实

2021-04-13 15:23:55 118

原创 ZooKeeper——Watcher机制

摘要ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建更多复杂的分布式协调功能。原理多个分布式进程通过ZooKeeper提供的API来操作共享的ZooKeeper内存数据对象ZNode来达成某种一致的行为或结果,这种模式本质上是基于状态共享的并发模型,与Java的多线程并发模型一致,他们的线程或进程都是”共享式内存通信“。Java没有直接提供某种响应式通知接口来监控某个对象状态的变化,只能要么浪费CPU时间毫无响应式的轮询重试,或基于Jav

2021-04-10 18:58:49 407

原创 Dubbo——服务治理(dubbo-Admin)平台

摘要本章将详细探讨Dubbo配置的设计模型、服务暴露的原理、服务消费的原理和优雅停机的原理。首先,学习优雅的分层配置设计,能够帮助我们更好地理解框架的启动配置逻辑,不管是注解还是XML 配置都需要配置对象来承载。然后探讨服务暴露和服务消费的细节。最后研究优雅停机特性,能够保证线上服务和消费方平滑地退出。Dubbo配置解析;基于schema设计解析Spring框架对Java产生了深远的影响,Dubbo 框架也直接集成了Spring 的能力,利用Spring配置文件扩展出自定义的解析方式。Dub

2021-04-10 17:03:18 806

原创 Dubbo——扩展(SPI)加载原理

摘要Dubbo良好的扩展性与两个方面是密不可分的,一是整个框架中针对不同的场景,恰到好处地使用了各种设计模式,二就是本章要介绍的加载机制。基于Dubbo SPI加载机制,让整个框架的接口和具体实现完全解耦,从而奠定了整个框架良好可扩展性的基础。Dubbo定义了良好框架结构,它默认提供了很多可以直接使用的扩展点。Dubbo几乎所的功能组件都是基于扩展机制〈SPI)实现的这些扩展点将在第8章核心扩展点中进行介绍。Dubbo SPI没有直接使用Java SPI,而是在它的思想上又做了一定的改进,形成了一套自己

2021-04-10 16:36:23 699

原创 Dubbo——本地缓存和重试机制原理

摘要主要是的分析的Dubbo的注册中心。首先介绍整个注册中心的总体工作流程;其次讲解不同类型注册中心的数据结构和实现原理;接着讲解注册中心支持的通用特性,如缓存机制、重试机制;最后会对整个注册中心的设计模式做深入解析读者可以深入理解Dubbo各种注册中心的实现原理,方便后续快速理解并扩展注册中心。注册中心的工作流程在 Dubbo微服务体系中,注册中心是其核心组件之一。Dubbo通过注册中心实现了分布式环境中各服务之间的注册与发现,是各个分布式节点之间的纽带。其主要作用如下:动态加入。一个服务

2021-04-09 20:53:59 1980

原创 Dubbo——集群(Cluster)容错原理

摘要Dubbo 框架中的分层代表了不同的逻辑实现,它们是一个个组件,这些组件构成了整个Dubbo体系,在使用方角度更多接触到的可能是配置,更多底层构件被抽象和隐藏了,同时提供了非常高的扩展性。Dubbo框架之所以能够做到高扩展性,受益于各个组件职责分明的设计,每个组件提供灵活的扩展点,如表1-2所示。因此我们先介绍一下服务的暴露过程。首先,服务器端(服务提供者〉在框架启动时,会初始化服务实例,通过Proxy组件调用具体协议( Protocol ),把服务端要暴露的接口封装成Invoker(真

2021-04-09 20:49:39 952

原创 Zookeeper——实践操作集合命令

摘要主要是的分析的Zookeeper的一些常用的命令。一、节点增删改查1.1 启动服务和连接服务# 启动服务bin/zkServer.sh start#连接服务 不指定服务地址则默认连接到localhost:2181zkCli.sh -server hadoop001:21811.2 help命令使用help可以查看所有命令及格式。1.3 查看节点列表查看节点列表有ls path和 ls2 path两个命令,后者是前者的增强,不仅可以查看指定路径下的所有节点,还可

2021-04-09 15:21:42 219

原创 计算机网络——计算机网络面试问题

本博文分享计算机网络的面试问题。以下面试问题与解答均来源互联网上,本人对其中问题的解答进行了详细的分析与阐述,帮助大家更好的通过面试。

2021-04-09 14:24:56 1865

原创 Dubbo——路由(Router)规则原理

摘要我们这次宕机的是业务逻辑层,那按照目前使用 Dubbo 轮询的负载均衡方式,不是还会有交易分发到宕机那台应用上,这些交易请求显然会异常。这是因为 Dubbo 内部会自动帮我们的摘除宕机的应用节点。Dubbo 服务注册发现流程我们目前使用 ZooKeeper 当做服务注册中心,ZooKeeper 可以简单理解成是一个 KV系统,内部是一个树形的数据结构。Dubbo 默认将会在 ZooKeeper 中创建一个四层的数据结构,从上到下分别为:Root Service Catego.

2021-04-09 12:55:12 2421

原创 MySQL——缓冲池 (buffer pool)原理

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

2021-04-09 10:11:11 2611 1

原创 并发编程——Volatile原理

摘要主要是分析Volatile的这个关键字和涉及到一些原理。测试案例JMM(JavaMemoryModel)JMM:Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别(注意这个跟JVM完全不是一个东西,只有还有小伙伴搞错的)。其实早期计算机中cpu和内存的速度是差不多的,但在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读

2021-04-08 19:50:47 397

原创 并发编程——Lock原理

在java并发编程中涉及到最多的就是锁机制。锁是解决并发问题的重要手段。本博文将详细介绍java中锁的相关原理与相关知识,帮助大家更好的在并发编程中使用相关锁来解决。

2021-04-08 18:53:10 318

原创 MYSQL——数据库面试问题

本博文主要分享数据库在面试的常见的面试问题与解答,帮助大家快速的学习了解数据库的相关知识。帮助你更好的应对面试中的问题。

2021-04-08 18:43:18 1211

原创 RocketMq——Producer源码分析

本博文将详细介绍MQ中间件技术选型。帮助你更好的使用合适的MQ中间件在自己的项目中,博文将介绍市面上常见的RabbitMQ,Kafka等。

2021-04-07 21:45:57 510

转载 Dubbo——生产者(Producer)原理

摘要主要是讲述Dubbo的服务调用过程。(https://juejin.cn/post/6875847496082391053)Dubbo大致流程

2021-04-07 20:47:37 565

空空如也

空空如也

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

TA关注的人

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