自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 InnoDB的三种行锁(提供具体sql执行案例分析)

本文详细介绍InnoDB存储引擎有3种行锁,记录锁、间隙锁、临键锁。

2023-06-26 11:25:36 1105

原创 mysql中的count(1)、count(*)、count(id)哪个更快?

mysql count()方法详解

2023-05-30 20:06:35 1828

原创 Kafka时间轮详解

kafka时间轮详细讲解,图文并茂,浅显易懂

2023-03-20 17:42:26 861 1

原创 布隆过滤器和布谷鸟过滤器详解

布隆过滤器和布谷鸟过滤器实现原理详解

2023-02-16 18:23:03 2481

原创 多线程环境下的伪共享

多线程下的伪共享及解决方案

2023-02-09 20:01:00 756

原创 Redis多路复用及内核中的请求数据结构分析

Redis多路复用及内核中的请求数据结构分析

2022-10-26 12:00:46 626

原创 RocketMQ学习笔记(三)——消息丢失的场景及解决方案

RocketMQ消息丢失的场景及解决方案

2022-09-15 18:17:23 5845 2

原创 RocketMQ学习笔记(二)——broker busy问题及其解决方案

RocketMQ经典问题,broker busy及其解决方案

2022-08-26 16:44:14 670

原创 RocketMQ学习笔记(一)——底层架构模型

rocketmq的九阳神功,看完修为直接元婴后期!

2022-08-25 18:20:43 638

原创 Mysql 死锁和死锁的解决方案

mysql 死锁和解决方案

2022-08-04 14:57:34 4492

原创 Netty心跳机制和客户端重连的实现

一文让你搞懂Netty心跳检测和重连

2022-07-27 12:01:16 2394 1

原创 MYSQL-InnoDB的线程模型

innodb的线程模型介绍

2022-07-25 07:34:41 488

原创 Undo log日志详解

介绍undo log日志生命周期、作用、工作原理、存储机制以及mysql中的配置参数等等

2022-07-19 15:57:29 8564

原创 InnoDB的磁盘结构

关于InnoDB各种表空间的介绍

2022-07-19 07:46:44 333

原创 为你解密InnoDB是如何解决写失效问题

为你解密Double write如何解决InnoDB写失效问题

2022-07-15 07:03:23 618

原创 Netty数据存储分析和经典问题之粘包拆包解决方案

Netty粘包拆包的解决方法和Netty内部的数据存储分析

2022-06-30 18:43:41 414

原创 Netty运行原理简述

netty运行原理简述,有流程图有文字分析

2022-06-17 17:53:12 320

原创 大白话讲解G1垃圾回收器

今天和大家分享一下G1垃圾回收器的工作原理及相较CMS垃圾回收器的优势1.G1垃圾回收器简介  和ParNew+CMS垃圾回收器的组合不同,G1垃圾回收器是可以同时回收新生代和老年代内的垃圾对象的,他不需要两个垃圾回收器协同运作,一个人就可以将所有的垃圾对象回收。他相较于ParNew+CMS,最大的特点就是会将java的堆内存拆分成多个大小相等的Region。虽然G1也有年轻代和老年代的区分,但也只是在概念上区分。可以理解为G1将一部分的Region划分为年轻代,然后将另一部分划分成了老年代,如下图:

2022-05-29 15:39:33 1915

原创 jvm中的垃圾回收器的各自特点

由于工作原因,好久没有更新博客了,但是学习的脚步一直没有停止,因为疫情原因,在家办公,因此上下班的通勤时间空闲出来,今天就和大家分享下jvm垃圾回收器的相关知识,这篇只做简单介绍,后面会一一详细和大家分析各个回收期的具体回收细节和工作原理。jvm中的垃圾回收器的各自特点1. Serial和Serial Old垃圾回收器这两个回收器分别是用来回收新生代和老年代的。其特点就是单线程运行。垃圾回收的时候,会停止其他工作线程的工作,这时系统会卡死,暂时不可用,等他们回收完毕,才能正常运行。这种回收器现在很

2022-05-07 09:48:46 398

原创 Dubbo底层网络服务框架调用结构分析

3分钟了解Dubbo里使用的网络服务框架简单的架构

2022-02-06 21:24:47 667

原创 Dubbo底层原理架构图

3分钟了解dubbo底层调用流程原理

2022-02-06 21:24:01 1641

原创 二进制位标识判断工具类

public abstract class BaseTagBitMask { /** * 添加某个tag 通过或操作实现 * * @param add 待添加的tag * @param current 当前的tag * @return SettleItemOperateBitMask */ public static int append(int add, Integer current) { current = Optional.ofNullable(curren

2022-01-24 15:44:30 150

原创 策略模式优化写法

该模式比较简单,但相对一般策略模式更优雅,供大家参考。因为写法简单,就不过多赘述,大家还是直接看代码吧1.抽象类public abstract class AbstractStrategyComponent { /** * 苹果 */ static final String APPLE = "APPLE"; /** * 香蕉 */ static final String BANANA = "BANANA"; /** * 梨 */ stat

2022-01-15 15:43:58 321

原创 通过责任链模式+单例模式+工厂模式实现多流程处理

最近有个需求,是关于权限认证的,由于需要对传过来的用户信息进行多级处理,才得知该用户所拥有的权限。因此我决定采用责任链的模式来实现上述需求。1.什么是责任链模式?责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链的模式中,我们只需要将请求发送到责任链的头处理对象中,然后就不需要关心具体的处理细

2022-01-15 15:32:30 1274

原创 undolog多版本链+ReadView机制实现mvcc多版本并发控制

今天和大家分享一下MVCC的知识,了解MVCC之后,你对mysql的事务隔离理解会更深入。1.MVCC是什么?MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。它主要是用来处理mysql在多线程操作缓存数据时出现的一系列并发问题。2.前置知识点(1)什么是脏写、脏读、不可重复读、幻读?网上相关资料很多,这里不做赘述(2)四种隔离级

2021-12-31 20:23:24 2759 2

原创 关于Mysql的Buffer Pool详解(二)

今天这篇就和大家讲解一下Buffer Pool里的free链表、flush链表、LRU链表以及mysql是如何基于冷热数据分离的方案,来优化LRU算法淘汰机制的1.free链表是什么?有什么作用?在了解free链表之前我们先思考一个问题:我们都知道buffer pool会将自己的内存空间划分成多个16kb大小的数据页用来缓存数据,当读取磁盘文件的时候,会将磁盘文件里的数据写入buffer pool。那么问题来了,磁盘文件写入缓存数据到buffer pool中的数据页时,是怎么区分哪些缓存页是空闲的,哪

2021-12-29 23:31:30 869 1

原创 关于Mysql的Buffer Pool详解(一)

今天和大家分享一下Mysql中关于Buffer Pool的相关知识1.首先大家需要知道Buffer Pool是什么?有什么作用?我们都知道Mysql里的数据,最终都会落到磁盘文件上的,但是我们对数据库进行增删改操作的时候,不可能直接操作磁盘数据,因为如果对磁盘文件进行随机读写操作的话,那速度是相当慢的,不可能支撑高并发的场景。因此mysql的增删改查操作都是对内存数据进行操作的,然后再将内存数据更新到磁盘。而这个内存组件就是buffer pool。下面我们就简单介绍一下update操作,在InnoDB

2021-12-28 23:35:21 739

原创 sql执行流程详解

今天复习了一下sql的执行流程,在这里简单做个笔记,方便后期回忆下图为手动绘制的sql执行图,分解了sql执行的步骤具体解释:1.用户发送请求,tomcat进行处理,最终会调用msql驱动的数据库连接池,获取数据库连接,然后发送需要执行的sql。2.Mysql接收到执行sql请求,调用数据库连接池里的一个线程去监听和读取请求数据,并从网络连接中读取和解析需要执行的sql数据。3.处理线程解析出需要执行的sql数据之后,会调用sql接口,去执行sql语句。4.sql接口会调用sql解析器,基于

2021-12-26 16:38:57 1855

原创 浏览器访问网址过程详解

浏览器访问百度,后台的详细流程是如何流转的

2021-12-23 16:03:31 6179 1

原创 springboot run方法执行流程详解(四)——refreshContext

10这个方法很重要,本篇会详细介绍这个方法,请耐心阅读。。。this.refreshContext(context); //刷新应用上下文我们点进去看下具体执行了哪些操作:

2021-10-21 19:29:19 355

原创 springboot run方法执行流程详解(三)——prepareContext

9this.prepareContext(context, environment, listeners, applicationArguments, printedBanner);老样子,点进去看看:context.setEnvironment(environment);这一步不用多少,就是将环境变量set到context中,设置上下文的环境。this.postProcessApplicationContext(context);这步操作主要是对ApplicationContext进行后置处

2021-08-30 15:53:25 408

原创 springboot run方法执行流程详解(二)

我们接着上篇博客,继续看springboot.run方法。5this.configureIgnoreBeanInfo(environment);>我们看到这一步了,点进去看下执行了什么操作:内容很简单,就是配置spring.beaninfo.ignore。也就是设置需要忽略掉的bean6Banner printedBanner = this.printBanner(environment);这步主要是打印banner,我们点进去看下具体操作:这里声明一下,banner的输

2021-08-26 21:31:12 399 1

原创 springboot run方法执行流程详解(一)——springApplication初始化及部分run方法

上篇博客介绍了springboot的自动配置原理,这一篇我们就研究一下springboot的run方法,到底是如何运行的。springboot版本:2.1.1.RELEASE今天我们就以debug的形式,跟着run方法走一遍。启动mian方法,进入到ConfigurableApplicationContext.run方法:这部分主要有两个操作,第一就是初始化springApplication,第二就是执行run方法,我们先看初始化springApplication都做了那些操作。我们

2021-08-25 10:01:22 1258

原创 springboot自动配置执行原理

springboot自动配置详解最近在研究springboot,小有心得,在此记录一下,同大家分享,同时博文如有不妥之处,请各位大佬指出,小弟不胜感激!springboot的启动类都需要使用@SpringBootApplication注解,这个注解用到了下面这些注解实现自动配置的三个关键注解:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。其中@EnableAutoConfiguration最为关键,下面就让我们

2021-08-12 15:34:20 409

原创 java 并发容器

什么是并发容器开发中我们常用的数据结构有四大类别:List、Set、Queue、Map,这四大类中常用的是ArrayList、LinkedList、HashMap等,这些容器都是非线程安全的。在并发情况下,会有各种问题,如果想要保证线程安全,那么需要进行加锁操作,使用起来非常不方便,这种情况下,也就开发出了专门在并发情况下使用的容器。并发容器概览ConcurrentHashMap:线程安全的HashMapCopyOnwriteArrayList:线程安全的ListBlockingQueue

2021-06-09 13:53:03 175 3

原创 AQS详解

什么是AQS?AQS:AbstractQueuedSynchronizer。 是一个用来构建锁和同步器的框架,许多同步类实现都继承了AQS,如常用的ReentrantLock/Semaphore/CountDownLatch…由以上两图可以看出,基本上所有的并发工具类都实现了AQS,可见AQS的重要性为什么需要AQS?锁和协作类都有一个共同点:闸门ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock都有类似“协作”或

2021-05-19 21:48:27 227

原创 java 常用并发的工具类

线程协作、控制并发流程的工具类什么是控制并发流程?控制并发流程的工具类,作用就是帮助我们程序员更容易得让线程之间合作让线程之间相互配合,来满足业务逻辑比如让线程A等待线程B执行完毕后再执行等合作策略1.CountDownLatch倒计时门闩倒数门:例子:购物拼团;大巴,人满才会发车流程:倒数结束之前,一直处于等待状态,直到倒计时结束,此线程才继续工作。开始 -> 进入等待 -> 倒数结束 -> 继续工作类的主要方法介绍:CountDownLatc

2021-05-18 22:46:43 215 3

原创 java 原子类详解

什么是原子类?就是可以保证线程安全的原子操作的数据类型。有什么作用?原子类的作用和锁类似,为了保证并发情况下的线程安全。原子类和锁相比,要比锁的粒度更细,效率更高。下面我们就逐个介绍以上6个原子类型:Atomic*基本类型原子类:这里我们就以AtomicInteger为例做介绍其常用方法:public final int get() //获取当前的值public final int getAndSet(int newValue) //获取当前的值public final int ge

2021-05-17 09:41:31 689 1

原创 java 线程池

workQueue有三种类型:1.直接交接SynchronousQueue(无容量,直接将任务交给线程)2.无界队列LinkedBlockingQueue (无边界队列,永远填不满)3.有界队列ArrayBlockingQueue (有数队列,固定大小)添加线程规则如果线程数小于corePoolSize,即时其他工作线程处于空闲状态,也会创建一个新线程来运行新任务。如果线程数等于(或大于)corePoolSize但少于maximumPoolSize,则将任务放入队列。如果队列已满,并..

2021-05-13 22:11:34 229 3

原创 java ThreadLocal详解

什么是ThreadLocal?ThreadLocal 是一个将在多线程中为每一个线程创建单独的变量副本的类;如果创建一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本, 在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。ThreadLocal的两个作用让某个需要用到的对象在线程间隔离(每个线程都有自己的独立的对象)在任何方法中都可以轻松获取到该对象使用场景每个线程需要一个独享的对象(通常是工具类、典型需要使用的类有Simpl

2021-05-12 22:18:03 245 4

SpringBoot_demo.zip

有springboot整个各种框架demo,如SpringBoot 整合 MyBatisPlus、SpringBoot 集成 Spring Security、 SpringBoot 集成 Shiro 安全框架、 SpringBoot 集成 SElasticsearch、springboot整合websocket

2021-03-08

Springboot 整合activiti及使用案例

简单介绍了,Springboot 整合activiti6.0,以及整合的demo。demo是一个简单的请假审批流程,如果下载后,bpm文件是乱码,请修改编码方式为utf-8

2020-10-26

空空如也

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

TA关注的人

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