自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis实现分布式锁

基于Redis实现分布式锁,原理介绍,与zookeeper进行简单对比

2022-04-26 00:52:42 67303 15

原创 Redis集群(二)

Redis Cluster集群模式图文详解

2022-04-25 00:32:13 325

原创 Redis集群(一)

Redis 的主从、哨兵集群模式图文介绍。

2022-04-20 23:16:34 1085

原创 Redis 持久化

Redis的持久化详解

2022-04-19 22:30:46 608

原创 Redis底层数据结构(图文详解)

redis底层数据结构图文详解,图片配合文字更好的理解redis的底层数据结构

2022-04-18 22:56:37 10022 6

原创 MySql事务(Transaction)

mysql事务详解

2022-03-08 22:20:47 789

原创 Mysql锁

目录Mysql 锁前言ACIDmysql为什么需要锁?操作方式:读锁/写锁读锁(共享锁,Shard, S锁)写锁(排他锁,exclusive, X锁)意向锁锁的分类悲观锁乐观锁优缺点锁的粒度行锁页锁全局锁算法维度记录锁间隙锁Mysql 锁前言什么是锁?为什么需要锁?锁的作用/好处?当在单线程的情况下,是没有锁的概率的,也无需锁。而我们日常的系统开发中,也不可能出现单线程的程序。当多个线程或进程有了资.

2022-01-22 16:31:15 682

原创 常用的Spring Aware解析

常用的Spring Aware解析在初始化bean前,会调用如下AwareBeanNameAware: 方法 setBeanName(String name) 获取到bean在spring中定义的beanName,一般很少用BeanClassLoaderAware:方法 setBeanClassLoader(ClassLoader classLoader); 获取spring 容器的类加载器ClassLoader 对象BeanFactoryAware: 实现这个BeanFactoryAwa...

2021-05-07 23:27:56 249

原创 Spring Bean后置处理器解析

目录Spring Bean后置处理器解析一、postProcessBeforeInstantiation二、determineCandidateConstructors三、postProcessMergedBeanDefinition四、getEarlyBeanReference五、postProcessAfterInstantiation六、postProcessProperties、postProcessPropertyValues七、postProcessBefo.

2021-05-07 23:23:12 1073

原创 Spring AOP源码解析

目录Spring AOP源码解析一、Spring相关介绍二、源码解析 1、解析切面 2、创建代理 3、调用代理Spring AOP源码解析一、Spring相关介绍https://blog.csdn.net/Me_xuan/article/details/115601543二、源码解析从Spring相关介绍中,我们也就大致的了解的AOP的相关知识。那么接下来要深入源码去解析AOP的工作流程。AOP是如何集成至Spring的呢?我们知道,Sp...

2021-04-11 17:06:04 170

原创 Spring AOP

目录Spring AOP一、前言二、AOP 概念三、Spring AOP包含以下类型的通知四、Spring AOP的功能和目标五、允许@AspectJ的支持六、代码示例Spring AOP一、前言使用Spring面向切面编程:面向切面编程(Aspect-oriented Programming 简称AOPAOP) ,是相对面向对象编程(Object-oriented Programming 简称OOP)的框架,作为OOP的一种功能补充. OOP主要的模块单元是类(c

2021-04-11 16:38:41 135

原创 Spring IOC常见问题

Spring IOC常见问题一、Spring中常见(重要)的接口BeanFactory : Spring顶层核心接口,使用了简单工厂模式,负责生产BeanBeanDefinition : Bean定义 Spring顶层核心接口,封装了生产Bean的一切原料BeanDefinitionReader : 用来读取BeanDefinition,就比如通过一个配置类,知道我们要去扫描哪个路径下的文件,就是通过BeanDefinitionReader来逐一读取到BeanDefiniti...

2021-04-06 23:48:21 394

原创 Spring 源码环境搭建

目录Spring 源码环境搭建Spring 源码环境搭建由于gradle我没玩过,我自己搭建也是根据百度找到的方法搭建的。这个方法我亲测过,我的是已经搭建成功了的。链接地址:https://www.xiaoheidiannao.com/78623.html...

2021-04-06 23:10:22 120

原创 Spring MVC源码分析

目录Spring MVC源码分析一、Spring MVC主体流程二、Spring MVC 加载流程Spring MVC源码分析一、Spring MVC主体流程二、Spring MVC 加载流程注:下次贴源码上来。

2021-04-05 23:31:49 145

原创 Spring IOC源码解析

Spring IOC源码解析一、Spring IOC 加载总览二、Spring IOC扫描Bean定义三、Spring IOC Bean的创建流程四、Spring IOC 解决循环依赖问题注:目前这是大致的流程图,下次抽时间把源码贴上来...

2021-04-05 23:26:04 131

原创 ElasticSearch集群搭建

ElasticSearch集群搭建一、ElasticSearch集群搭建1.提前准备工作服务器3台,ip分别为:192.168.75.100 、192.168.75.101 、192.168.75.102三台服务器分别开发9100、9200,9300端口,或者直接关闭防火墙也可以。为什么服务器最好是3台及以上?简单说明:因为集群中必须得有个master节点,master仅仅负责维护集群的状态,若是老的master宕机的话,需要重新选举出新的master,如果是偶数节点可能导致票...

2021-03-14 15:53:33 1755

原创 Linux下安装ElasticSarch、Kibana、IK分词器

ElasticSarch安装官方网站:https://www.elastic.co/cn/官方下载地址:https://www.elastic.co/cn/start有一说一,这个外网访问起来着实着急啊。可以翻个墙下载一下安装包。我下载的版本是7.6.1的版本注:我的Linux环境是CentOS7的一、上传安装包及新建用户新建一个目录,然后将下载的安装包上传至对于目录下新建一个目录:mkdir -p /usr/local/es将我们的es包拷贝至新建的es目录下由于E

2021-03-10 00:19:28 1252

原创 类加载机制

虚拟机类加载机制一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用、卸载这七个阶段。其中验证、准备、解析三个部分统称为连接。加载、验证、准备、初始化和卸载这五个阶段对的顺序是确定的,类型的加载过程必须按照这种顺序来进行加载。类的生命周期:一、类加载过程:1、加载在硬盘中的文件(如class文件)通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等 1)通过一个类的全限定名来获取定.

2021-02-23 01:19:01 253 1

原创 虚拟机性能监控和故障处理工具

目录虚拟机性能监控、故障处理一、虚拟机相关命令1、jps:虚拟机进程状况工具2、jstat:虚拟机统计信息监视工具3、jinfo:Java配置信息工具4、jmap:Java内存映像工具5、jhat:虚拟机堆转储快照分析工具6、jstack:Java堆栈跟踪工具二、可视化故障处理工具1、JConsole:Java监控与管理控制台2、VisualVM:故障处理集合工具虚拟机性能监控、故障处理一、虚拟机相关命令1、jps:虚拟机进程状况工具功能与L.

2021-02-13 00:48:55 404

原创 垃圾收集器与内存分配策略

目录垃圾收集器与内存分配策略一、如何判断对象是否存活1.引用计数算法2.可达性分析算法3.对象是否已死?二、垃圾收集器算法1、分代收集理论2、标记-清除算法3、标记-复制算法4、标记-整理算法5、安全点和安全区域三、垃圾收集器1、Serial收集器2、ParNew收集器3、Parallel Scavenge收集器4、CMS收集器5、Garbage First收集器6、ZGC收集器7、如何选择垃圾收集器8、GC日志查看四、内存

2021-02-11 01:35:31 377

原创 Java内存区域与内存溢出异常

目录jvm虚拟机内存划分一、java内存区域1.程序计数器2.Java虚拟机栈3.本地方法栈4.Java堆5.方法区6.运行时常量池7.直接内存二、对象探秘1.对象的创建(我简单的分为5小步)2.对象的内存布局3.对象的访问定位jvm虚拟机内存划分一、java内存区域1.程序计数器程序计数器是一小块较小的内存空间,可以看作是当前线程多执行的字节码的行号指示器。因为Java是多线程执行程序的,由处理器分配时间片来处理数据,当切换到另一个线程处

2021-02-10 01:44:49 274 7

原创 Linux下安装JDK1.8

目录Centos7安装jdk1.8上传解压配置环境变量验证jdkCentos7安装jdk1.8Jdk1.8下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html上传这里我新建目录/java,用来存放jdk ,将下载好的jdk的tar包上传至服务器/java 目录下解压[root@localhost java]# tar -zxvf jdk-8u271-linux

2020-12-17 00:12:02 207 1

原创 Linux下安装RocketMQ

目录Linux下安装RocketMQ准备工作安装第一步、上传文件,解压第二步、配置环境变量,启动rocketmq第三步、关闭服务测试第一步、打开相应端口第二步、修改broker.conf配置文件第三步、编写代码进行测试Linux下安装RocketMQ准备工作RocketMQ下载地址:http://rocketmq.apache.org/release_notes/ 选择对应的版本号进行下载,我下载的是4.7.1带bin的是二进...

2020-12-17 00:09:23 1249 3

原创 ThreadPoolExcutor源码解析(JDK1.8)

目录ThreadPoolExcutor源码解析一、为什么要用线程池?二、线程池执行任务的四大步骤三、线程池的创建与使用四、源码解析1.线程池参数与构造器参数2.Worker类,后面的源码中会用到3.execute() 任务执行4.shutdown 关闭线程池五、线程池工作大致流程图ThreadPoolExcutor源码解析一、为什么要用线程池?比较好理解的解释的大概:正常我们执行一个任务,会创建一个线程去执行它。创建线程会通知CPU建立起一个连接.

2020-11-30 00:00:39 249

原创 ConcurrentHashMap源码解析(JDK1.8)

目录ConcurrentHashMap源码解析一、什么是ConcurrentHashMap二、源码解析1.构造函数及部分参数2.初始化3.put操作4.get操作5.remove操作6.clear操作ConcurrentHashMap源码解析一、什么是ConcurrentHashMapConcurrentHashMap与HashMap数据结构一致,他是线程安全的。ConcurrentHashMap中是不允许key和value为null的,而HashMap是

2020-11-15 16:00:06 356

原创 Linux下Redis安装及集群搭建

Linux下Redis安装及集群搭建Redis版本Linux所有版本:http://download.redis.io/releases/Windows所有版本:https://github.com/MicrosoftArchive/redis/releasesLinux下安装注:由于redis是由C实现的,所以需要gcc来进行编译,执行下面的命令:yum install -y gcc g++ gcc-c++ make/*这是在linux联网的情况下,没有联网的情况下..

2020-11-10 21:43:16 368

原创 HashMap源码解析(JDK1.8)

目录HashMap源码解析一、什么是HashMap二、JDK1.8的HashMap的数据结构图三、针对HashMap提出的疑问1.数据是如何存入数组的呢?2.为什么构造参数(数组大小)无论设置为什么都会被改成2的指数倍呢?3.为什么要用红黑树呢?4.为什么不直接用数组+红黑树呢?四、上源码,源码解析1.Node的数据结构2.构造函数及部分参数3.put操作4.扩容操作5.转化为红黑树(不详细介绍了)6.get操作7.remove操作8.cl

2020-11-10 00:06:23 268 2

原创 AQS之Atomic详解

目录什么是原子性Atomic基本属性什么是CASAtomicInteger源码解析Unsafe的线程调度什么是原子性原子性(Atomicity): 指事务的不可分割性,一个事务的所有操作要么不间断地全部被执行,要么一个也没有执行。Atomic基本属性在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新字段。Atomic包里的类基本都是使用Unsafe实现的包装类。基本类:AtomicInteger..

2020-09-26 22:21:11 330

原创 AQS之BlockingQueue源码解析

目录BlockingQueue介绍队列类型常见的5种阻塞队列BlockingQueue中APIBlockingQueue源码解析ArrayBlockingQueue简单图解BlockingQueue介绍BlockingQueue 是一个先进先出(FIFO)的阻塞队列。BlockingQueue,java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且Blockin

2020-09-23 00:46:52 225

原创 AQS之ReentrantLock源码解析

ReentrantLock源码解析AQS的基本概念Java并发编程核心在于java.concurrent.util包,juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定义了一套多线程访问共享资源的同步器框架,是一个依赖状态(state)的同步器。AQS保证线程安全的大致原理(伪代码) //加锁 lock; //为什么要..

2020-09-13 01:47:45 209

原创 全面理解Synchronized

Synchronized目录Synchronizedsynchronized基本概念synchronized底层原理Monitor监视器锁Synchronized可重入锁什么是monitor对象的内存布局对象头锁的膨胀升级过程锁的粗化锁的消除逃逸分析对于synchronized,我首先提出了下面3个问题,1.什么东西需要同步?2.为什么我们需要同步?3.我们如何去同步?在多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个

2020-08-30 00:53:27 282

原创 全面理解MESI缓存一致性协议

MESI缓存一致性协议多核CPU多级缓存一致性协议MESI多核CPU的情况下有多个一级缓存,如何保证缓存内部数据的一致,不让系统数据混乱。这里就引出了一个一致性的协议MESI。MESI协议缓存状态MESI 是指4中状态的首字母。每个Cache line(缓存行(Cache line):缓存存储数据的单元)。有4个状态,可用2个bit表示,它们分别是:Modidied(修改),Exclusive(独享),Shared(共享),Invalid(无效)。注意:对于M和E状态..

2020-08-27 23:40:43 1059 6

原创 全面理解Volatile关键字

什么是volatile?volatile是Java虚拟机提供的轻量级的同步机制。volatile关键字作用是什么?两个作用:1.保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知。2.禁止指令重排序优化。volatile的可见性关于volatile的可见性作用,我们必须意识到被volatile修饰的变量对所有线程总数立即可见的,对volatile变量的所有写操作总是能立刻反应.

2020-08-26 00:30:45 214

原创 全面理解Java内存模型(JMM)

Java内存模型(JMM):java memory modelJMM是一个抽象的概念,算是一种定义的规则。与jvm不同Java内存模型:因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从java 5开始的JSR-133发布后,已经成熟和完善起来。JVM在设计时候考虑到,如果JAVA线程每次读

2020-08-25 23:57:39 186

空空如也

空空如也

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

TA关注的人

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