自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解Mysql -- 索引底层数据结构和算法(一)

哈希表是一种组合的数据结构, 它通常的实现方式存在下面两种, 它是一种牺牲空间去换时间的数据结构, 其核心是**哈希函数**, 哈希表最关键的冲突问题也取决于哈希函数的设计。数组 + 链表数组 + 红黑树哈希表特点一致性, 如果 a == b, 则 hash(a) = hash(b)高效性, 哈希函数计算高效简便均衡性, 哈希值均匀分布已存在的使用情况举例HashMap、TreeMap等JDK常用数据结构Redis的Hash数据结构。

2023-05-17 19:46:45 191

原创 zookeeper Leader选举源码分析

文章目录zookeeper Leader选举源码分析一、包含的知识点二、zookeeper选举的入口2.1 zookeeper服务启动入口main2.2 触发选举时机三、initializeAndRun 初始化并启动服务四、runFromConfig 按照配置文件启动服务五、QuorumPeer启动线程六、startLeaderElection 进行Leader选举参数配置6.1 QuorumPeerMain服务启动主要流程6.2 startLeaderElection代码具体分析6.3 创建Leader选

2020-07-27 16:04:56 565 1

原创 基于Curator对zookeeper分布式锁、Leader选举的实践和原理分析

文章目录zookeeper在分布式锁和master选举实践一、包含的知识点二、基于Curator的分布式锁实现2.1 引如pom文件2.2 实现逻辑代码示例三、基于Curator的master选举实现3.1 引入pom文件3.2 实现逻辑代码示例四、Curator分布式锁实现原理4.1 分布式锁入口InterProcessMutex4.2 curator获取锁acquire4.3 curator释放锁release五、Curator选举Leader实现原理5.1 选举入口start()5.2 进行入队操作r

2020-07-20 20:14:10 395

原创 zookeeper诞生背景和基于Curator的基本操作

文章目录zookeeper诞生背景和基于Curator的基本操作一、包含的知识点二、zookeeper出现的背景2.1 分布式一致性问题2.2 粗力度分布式锁三、Zookeeper核心知识点四、zookeeper特性五、zookeeper基于Curator的实践操作5.1 pom文件5.2 增删改查操作5.3 zookeeper watch 监听机制zookeeper诞生背景和基于Curator的基本操作一、包含的知识点zookeeper出现的背景zookeeper核心知识点zookeeper包

2020-07-16 16:25:46 272

原创 Netty之Pipeline的原理和事件传播机制

Netty之Pipeline的原理和事件传播机制文章目录Netty之Pipeline的原理和事件传播机制一、包含知识点二、 Channel和Pipeline之间关系三、ChannelPipeline初始化流程3.1 Channel初始化流程3.2 Pipeline实例化3.3 Pipeline实例化后图示四、ChannelInitializer添加4.1 init添加自定义handler、childHandler4.2 handler转ChannelHandlerContext4.3 init之后pipe

2020-06-28 19:54:32 1832

原创 Netty 核心原理之运行机制

文章目录Netty 核心原理之运行机制一、包含的知识点二、Reactor线程模型2.1 Reactor单线程模型2.2 Reactor多线程模型2.3 Reactor主从多线程模型三、EventLoopGroup实例化流程3.1 EventLoopGroup类继承关系3.2 EventLoopGroup创建流程3.3 总结四、EventLoop任务执行者4.1 EventLoop类继承关系4.2 SingleThreadEventExecutor4.3 NioEventLoop作用4.4 线程启动流程五、E

2020-06-23 15:04:13 517

原创 Netty 基本原理(一)

文章目录Netty 基本原理(一)一、包含的知识点二、 为什么要用Netty2.1 传统编程模型存在问题2.2 通信序列化性能低2.3 影响性能因素三、 Netty高性能特性3.1 异步非阻塞通信(NIO)3.2 线程池模型Reactor3.2.1 Reactor模型通信流程3.2.2 Reactor单线程模型3.2.3 Reactor多线程模型3.2.4 Reactor主从多线程模型3.3 零拷贝3.4 内存池3.5 高效的并发编程和序列化框架Netty 基本原理(一)​ 在讲解Netty之前需要对

2020-06-19 14:41:07 388

原创 NIO核心Buffer、Selector、Channel分析

文章目录NIO核心Buffer、Selector、Channel分析一、包含知识点二、缓冲区Buffer2.1 基本原理2.2 缓冲区基本操作2.3 缓冲区分片2.4 只读缓冲区2.5 直接缓冲区2.6 内存映射三、选择器Selector3.1 传统会话模式TPR(Thread Per Request)3.2 Reactor模式四、Channel4.1 channel基本知识4.2 IO多路复用五、NIO源码分析NIO核心Buffer、Selector、Channel分析​ 上一篇文章中我们简单的说明

2020-06-18 10:12:32 274

原创 IO 发展历程(BIO、NIO、AIO)

文章目录IO 发展历程(BIO、NIO、AIO)一、包含的知识点二、IO相关的基本概念2.1 阻塞(Block)和非阻塞(Non-Block)2.2 同步(Synchronization)和异步(Asynchronous)三、BIO和NIO对比3.1 面向流(Stream)和面向缓冲区(Buffer)3.2 通道(Channel)3.3 选择器(Selector)3.4 NIO和BIO区别3.5 BIO、NIO对比四. AIO基本原理4.1 基本原理4.2 BIO、NIO、AIO对比IO 发展历程(BIO

2020-06-18 10:08:20 799 1

原创 线程池的使用原理分析

文章目录线程池的使用原理分析一、包含的知识点二、为什么需要线程池三、线程池API3.1 创建线程的方式3.2 创建线程池的方式3.3 线程统一封装类型ThreadPoolExecutor四、线程池原理分析4.1 线程执行入口execute4.2 创建工作线程addWorker4.3 线程核心处理逻辑runWorker4.4 拒绝策略4.5 线程池注意事项五、Callable/Future原理分析5.1 Callable/Future原理分析5.2 FutureTask状态分类5.3 run方法执行5.4 g

2020-05-26 21:38:02 255

原创 阻塞队列、原子类原理分析 -- ArrayBlockingQueue、AtomicInteger

文章目录阻塞队列、原子类原理分析一、常用阻塞队列1.2 常用的阻塞队列1.3 阻塞队列的常用方法二、ArrayBlockingQueue原理分析2.1 添加操作2.2 删除操作三、原子操作类3.1 原子类的分类3.2 原理分析阻塞队列、原子类原理分析一、常用阻塞队列 ### 1.1 使用场景​ 阻塞队列比较普遍的使用场景是生产者、消费者, 以便于服务解耦,提高应用性能; 而分布式架构应用比较频繁的是消息队列比如:Kafka、Rocketmq, 阻塞队列类似于broker, 生产者和消费者类似于服

2020-05-25 17:03:56 221

原创 常用并发工具原理分析(Condition、CountDownLatch、CyclicBarrier、Semaphore)

目录常用并发工具原理分析一、包含的知识点二、Condition原理2.1 Condition简单使用2.2 Condition await源码分析2.3 Condition signal源码分析2.4 被阻塞的线程唤醒后的操作2.5 总结三、CountDownLatch3.1 CountDownLatch作用3.2 CountDownLatch await源码分析3.3 CountDownLatch countdown源码分析四、CyclicBarrier4.1 CyclicBarrier知识4.2 Cyc

2020-05-22 18:15:25 565

原创 ReentrantLock原理分析

目录ReentrantLock原理分析一、包含的知识点二、Lock2.1 常见的锁的实现2.2 Lock类关系图三、**ReentrantLock 重入锁**3.1 **为什么需要重入锁?**3.2 **ReentrantReadWriteLock**3.3 AQS(AbstractQuenedSynchronized)四、ReentrantLock 加锁源码分析4.1 加锁的入口4.2 NonfairSync.lock()4.3 AQS.acquire4.4 AQS.addWaiter4.5 AQS.ac

2020-05-20 17:46:02 198

原创 多线程原理分析(二) -- 超详细

目录多线程原理分析(二)一、包含的知识点二、如何保证共享变量的可见性2.1 可见性问题2.2 volatile 关键字是如何保证可见性的三、可见性本质3.1 缓存一致性3.2 缓存一致性协议3.3 MESI存在的问题3.4 CPU内存屏障四. Java内存模型4.1 JMM解决的问题4.2 JMM内存屏障分类五、happen before多线程原理分析(二)​ 上篇文章, 我们从锁的存储格式(Header、Mark Word)、锁升级(偏向锁、轻量级锁、重量级锁)的角度分析了多线程的原理, 这片文章我

2020-05-19 16:00:42 216

原创 多线程原理分析 -- synchronized (超详细)

目录多线程处理之synchronized一、包含的知识点二、多线程带来的问题2.1 多线程带来的好处、坏处2.2 线程安全问题的本质2.3 解决线程安全问题方式三、Synchronized基本认识3.1 synchronized 加锁方式3.2 锁是如何存储的3.2.1 锁包含的数据内容3.2.2 JVM创建对象实现3.2.3 为什么任何对象都可以实现锁3.3 synchronized锁升级3.3.1 偏向锁原理3.3.2 偏向锁获取/释放逻辑3.3.3 轻量级锁获取/释放逻辑3.3.4 重量级锁获取/释放

2020-05-18 20:19:50 304

原创 RocketMQ原理解析之服务安装启动

RocketMQ原理解析之服务安装启动一、RocketMQ简介二、消息队列提供的功能2.1 应用解耦2.2 流量削峰2.3 消息并发三、RocketMQ服务安装3.1 单机版RockMQ安装3.1.1 下载文件3.1.2 解压文件3.1.3 启动消息队列服务3.1.4 命令行发送接收消息3.1.5 关闭消息队列3.2 集群版RocketMQ安装(待补充)一、RocketMQ简介    阿里的消...

2018-10-16 10:22:04 713

转载 CodeReview常见代码问题

CodeReview常见代码问题路线图 常见的问题常见的潜在代码问题是当前直接会导致BUG、故障或者产品功能不能正常工作的类别。空值:     空值恐怕是最容易出现的地方之一。 常见错误有: a. 值为NULL导致空指针异常; b. 参数字符串含有前导或后缀空格没有Trim导致查询为空。 导致以上结果的原因主要有: 无此记录、有此记录但由于SQL访问异常而没查到、网络调用失败、...

2018-09-11 14:32:24 991

原创 Java并发编程艺术之Java中的锁

Java并发编程艺术之Java中的锁    本文章主要介绍Java并发包中与锁相关的API和组件,会从1)使用 、2)实现 两个方面进行介绍 ,下面是主要包含的内容:Lock接口队列同步器(AQS)重入锁读写锁LockSupport工具Condition接口一、Lock接口    锁的简单介绍: 锁可以控制多个线程访问共享资源的方式,可以防止多个线程同时访问共享资源...

2018-09-01 15:48:59 406

原创 Rocketmq之消息队列分配策略算法实现的源码分析

Rocketmq消费者(Consumer)消费消息队列(Message Queue)消息的算法实现本文中包含下面的内容平均分配策略(默认)(AllocateMessageQueueAveragely)环形分配策略(AllocateMessageQueueAveragelyByCircle)手动配置分配策略(AllocateMessageQueueByConfig)机房分配策略(Al...

2018-08-24 00:18:50 4392

原创 Java并发编程艺术之Java并发编程基础

Java并发编程艺术之Java并发编程基础一、线程简介1. 什么是线程     线程是现代操作系统调度的最小单位,也称为轻量级进程,这些线程拥有各自的计数器、堆栈、局部变量等信息,并且能够访问主内存中的共享变量。     从宏观的角度来看,使用者可能觉得多个线程在同时进行,但是是处理器在这些线程上高速切换。比如下面的 代码示例public class TestThread {...

2018-08-21 17:52:02 331

原创 Java并发编程艺术之Java内存模型

Java并发编程艺术之Java内存模型本文章包含的内容Java内存模型基础Java内存模型中的顺序一致性,主要介绍重排序和顺序一致性同步原语,涉及synchronized, volatile , final内存模型的设计原理,涉及与内存模型和顺序一致性内存模型关系一 、Java内存模型基础 1) 并发编码模型的两个关键问题 – 线程是并发执行的活动实体线程之间如何通...

2018-08-14 17:35:04 623

原创 RocketMQ源码分析之rocketmq-broker启动 (二)

本文章会从以下几个方面介绍rocketmq-broker启动流程 1. Broker简单介绍 1.1 initialize 1.2 start 2. broker启动代码分析 2.1 roketmq-broker启动入口 2.2 通过createBrokerController创建BrokerControl...

2018-08-06 23:11:59 2735

原创 RocketMQ源码分析之基础知识介绍(一)

RocketMQ之NameSrv启动流程源码分析本文章会从如下几个方面讲解NameSrv启动流程NameSrv的优势NameSrv启动UML图解NameSrv启动源码讲解一、NameSrv的优势RocketMq经历了三个主要版本的迭代,Metaq 1.x , MetaQ 2.x , RocketMQ 3.x , 在 Metaq 1.x 和 2.x版本中,用zookeep...

2018-07-31 01:09:19 2075

空空如也

空空如也

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

TA关注的人

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